{"projects": [{"components": [{"description": "", "name": "API"}, {"description": "", "name": "Certificate Authority"}, {"description": "", "name": "CLI"}, {"description": "", "name": "DOCS"}, {"description": "", "name": "Dujour"}, {"description": "", "name": "File Sync"}, {"description": "", "name": "GUI"}, {"description": "", "name": "Performance"}, {"description": "", "name": "Puppet Server"}, {"description": "", "name": "security"}, {"description": "", "lead": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "name": "UX"}], "description": "", "externalName": "Puppet Server (Archived)", "issues": [{"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["CLI", "Puppet Server"], "created": "2023-03-13T07:49:00.000000", "creator": "557058:877a41eb-34ba-43a3-8839-4d239938c3d5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34d0192d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0m48h:"}], "description": "When using \u201callow-header-cert-info: true\u201d in auth.conf, without any other change, commands such as \u201cpuppetserver ca list\u201d stops working with a 403 Forbidden error:\n\nroot@puppet:/# puppetserver ca list\nError:\n    code: 403\n    body: Forbidden request: /puppet-ca/v1/certificate_statuses/any_key (method :get). Please see the server logs for details.\nError while getting certificate requests\n\n\n\nLogs extract:\n\n2023-03-13 08:58:29,760 ERROR [p.t.a.rules] Forbidden request: 172.20.0.2 access to /puppet-ca/v1/certificate_statuses/any_key (method :get) (authenticated: false) denied by rule 'puppetlabs cert status'.\n172.20.0.2 - - - 13/Mar/2023:08:58:29 +0000 \"GET /puppet-ca/v1/certificate_statuses/any_key?state=requested HTTP/1.1\" 403 116 172.20.0.2 172.20.0.2 8140 2", "environment": "Puppet through Docker (using the official image: puppet/puppetserver:7.9.2), no other particular config than just \u201callow-header-cert-info: true\u201d in auth.conf", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "63679", "fixedVersions": [], "id": "63679", "issueType": "Bug", "key": "SERVER-3269", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "High (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:877a41eb-34ba-43a3-8839-4d239938c3d5", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "13/Mar/23 7:49 AM", "summary": "Puppetserver CLI fails with 403 when allow-header-cert-info is set to true", "timeSpent": "PT0S", "updated": "2023-03-13T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-03-09T15:33:00.000000", "creator": "5a1beb0b007eb21a79e5d6de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@16145357"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-5104"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0m3vd:"}], "description": "Remove *SUSE Linux Enterprise Server 11 (x86-64)* from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove SUSE Linux Enterprise Server 11 (x86-64) FOSS support", "estimate": "PT0S", "externalId": "17545", "fixedVersions": [], "id": "17545", "issueType": "Task", "key": "SERVER-3268", "labels": ["os"], "originalEstimate": "PT0S", "parent": "58111", "parentSummary": "Remove SUSE Linux Enterprise Server 11 (x86-64) FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a1beb0b007eb21a79e5d6de", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove SUSE Linux Enterprise Server 11 (x86-64) from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2023-03-09T15:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-03-09T15:31:00.000000", "creator": "5a1beb0b007eb21a79e5d6de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74c5d36e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-5092"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0m3oh:"}], "description": "Remove *SUSE Linux Enterprise Server 11 (i386)* from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove SUSE Linux Enterprise Server 11 (i386) FOSS support", "estimate": "PT0S", "externalId": "17266", "fixedVersions": [], "id": "17266", "issueType": "Task", "key": "SERVER-3267", "labels": ["os"], "originalEstimate": "PT0S", "parent": "57742", "parentSummary": "Remove SUSE Linux Enterprise Server 11 (i386) FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a1beb0b007eb21a79e5d6de", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove SUSE Linux Enterprise Server 11 (i386) from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2023-03-09T15:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-03-09T15:25:00.000000", "creator": "5a1beb0b007eb21a79e5d6de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58a8ffe5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-5080"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0m3hl:"}], "description": "Remove *Red Hat Enterprise Linux 7 (ppc64le)* from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove Red Hat Enterprise Linux 7 (ppc64le) FOSS support", "estimate": "PT0S", "externalId": "16959", "fixedVersions": [], "id": "16959", "issueType": "Task", "key": "SERVER-3266", "labels": ["os"], "originalEstimate": "PT0S", "parent": "57330", "parentSummary": "Remove Red Hat Enterprise Linux 7 (ppc64le) FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a1beb0b007eb21a79e5d6de", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Red Hat Enterprise Linux 7 (ppc64le) from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2023-03-09T15:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-03-09T15:20:00.000000", "creator": "5a1beb0b007eb21a79e5d6de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c858cac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-5068"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0m3ap:"}], "description": "Remove *Windows Server 2008R2* from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove Windows Server 2008R2 FOSS support", "estimate": "PT0S", "externalId": "16667", "fixedVersions": [], "id": "16667", "issueType": "Task", "key": "SERVER-3265", "labels": ["os"], "originalEstimate": "PT0S", "parent": "56790", "parentSummary": "Remove Windows Server 2008R2 FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a1beb0b007eb21a79e5d6de", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Windows Server 2008R2 from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2023-03-09T15:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-02-28T13:29:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@583ff480"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lzzd:"}], "description": "The recent bump to JRuby 9.4 in puppetserver 7.x dropped some gems that used to be present for extensions running in a server context:\n\nIn released puppetserver 7.9.5:\n\n{noformat}\n[root@regional-beacon ~]# rpm -qa | grep puppet\npuppet7-release-7.0.0-11.el7.noarch\npuppet-agent-7.23.0-1.el7.x86_64\npuppetserver-7.9.5-1.el7.noarch\n[root@regional-beacon ~]# puppetserver ruby -e \"puts require 'net/http'\"\ntrue\n[root@regional-beacon ~]# puppetserver ruby -e \"puts require 'net/ftp'\"\ntrue\n{noformat}\n\nIn nightly puppet7 puppetserver:\n\n{noformat}\n[root@neutral-waiting ~]# rpm -qa | grep puppet\npuppetserver-7.9.6-0.1SNAPSHOT.2023.02.20T1912.el7.noarch\npuppet7-release-7.0.0-11.el7.noarch\npuppet-agent-7.23.0-1.el7.x86_64\n[root@neutral-waiting ~]# puppetserver ruby -e \"puts require 'net/ftp'\"\nLoadError: no such file to load -- net/ftp\n  require at org/jruby/RubyKernel.java:1057\n  require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:85\n   <main> at -e:1\n... 4 levels...\n{noformat}\n\nWe ran into this because the puppet_agent module uses the puppetlabs-apt module, which attempts to `require 'net/ftp'` in the custom type that is loaded in JRuby. The module should be fixed (https://github.com/puppetlabs/puppetlabs-apt/pull/1050#issuecomment-1448629369) but it raises the issue that some gems are missing.\n\nManually adding the gem seems to work:\n\n{noformat}\n[root@neutral-waiting ~]# /opt/puppetlabs/server/bin/puppetserver gem install net-ftp\nFetching net-ftp-0.2.0.gem\nSuccessfully installed net-ftp-0.2.0\nParsing documentation for net-ftp-0.2.0\nInstalling ri documentation for net-ftp-0.2.0\nDone installing documentation for net-ftp after 1 seconds\n1 gem installed\n[root@neutral-waiting ~]# puppetserver ruby -e \"puts require 'net/ftp'\"\ntrue\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15197", "fixedVersions": [], "id": "15197", "issueType": "Task", "key": "SERVER-3264", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby 9.4 bump dropped some gems", "timeSpent": "PT0S", "updated": "2023-02-28T13:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "Hrm. This indicates that the settings overrides aren't being set properly and when it invokes {{Puppet.initialize_settings}}, it thinks that it's running as a non-root user with defaults.\n\nhttps://github.com/puppetlabs/dropsonde/blob/2f9abfcccd7982c17e8baf3e248c944f71f0d562/lib/dropsonde.rb#L18-L43", "created": "2023-03-03T16:54:00.000000"}], "components": ["Puppet Server"], "created": "2023-02-28T13:06:00.000000", "creator": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1df3823f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lzz5:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/23"}], "description": "*Puppet Version:* 7.23.0\n*Puppet Server Version:* 7.9.5\n*OS Name/Version:* Debian Bullseye 11.6\n\n*Desired Behavior:*\nStarting puppetserver from a fresh install does not cause a stacktrace related to Dropsonde being unable to write to a directory.\n\n*Actual Behavior:*\nOn a fresh Debian Bullseye install with Puppetserver 7.9.5 from the apt.puppet.com repos, starting Puppetserver with {{systemctl start puppetserver}} shows the following stack trace:\n{noformat}2023-02-28T18:49:36.334Z INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'status-service', version 1.1.1\n2023-02-28T18:49:36.334Z INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status service HTTP API at /status\n2023-02-28T18:49:36.347Z INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@3309119c{/status,null,AVAILABLE}\n2023-02-28T18:49:36.361Z INFO  [async-dispatch-2] [p.s.a.analytics-service] Puppet Server Update Service has successfully started and will run in the background\n2023-02-28T18:49:36.378Z INFO  [async-dispatch-2] [p.s.m.master-service] Puppet Server has successfully started and is now ready to handle requests\n2023-02-28T18:49:37.383Z WARN  [1b147094-178f-4454-bd9d-d5edb74e0d41_Worker-4] [c.p.p.ShellUtils] Executed an external process which logged to STDERR: /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:250:in `mkdir': Permission denied @ dir_s_mkdir - /opt/puppetlabs/server/data/puppetserver/dropsonde/.puppetlabs (Errno::EACCES)\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:250:in `fu_mkdir'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:228:in `block (2 levels) in mkdir_p'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:226:in `reverse_each'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:226:in `block in mkdir_p'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:211:in `each'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:211:in `mkdir_p'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet/settings.rb:409:in `create_ancestors'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet/settings.rb:394:in `block in initialize_app_defaults'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet/settings.rb:393:in `each'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet/settings.rb:393:in `initialize_app_defaults'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet.rb:176:in `do_initialize_settings_for_run_mode'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet.rb:149:in `initialize_settings'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/dropsonde-0.0.8/lib/dropsonde.rb:43:in `<class:Dropsonde>'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/dropsonde-0.0.8/lib/dropsonde.rb:12:in `<top (required)>'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/dropsonde-0.0.8/bin/dropsonde:3:in `<top (required)>'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/bin/dropsonde:25:in `load'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/bin/dropsonde:25:in `<main>'\n\n2023-02-28T18:49:37.401Z WARN  [1b147094-178f-4454-bd9d-d5edb74e0d41_Worker-4] [p.s.a.dropsonde] Failed to submit module metrics via Dropsonde. Error: /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:250:in `mkdir': Permission denied @ dir_s_mkdir - /opt/puppetlabs/server/data/puppetserver/dropsonde/.puppetlabs (E\nrrno::EACCES)\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:250:in `fu_mkdir'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:228:in `block (2 levels) in mkdir_p'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:226:in `reverse_each'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:226:in `block in mkdir_p'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:211:in `each'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/fileutils.rb:211:in `mkdir_p'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet/settings.rb:409:in `create_ancestors'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet/settings.rb:394:in `block in initialize_app_defaults'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet/settings.rb:393:in `each'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet/settings.rb:393:in `initialize_app_defaults'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet.rb:176:in `do_initialize_settings_for_run_mode'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/puppet-7.22.0/lib/puppet.rb:149:in `initialize_settings'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/dropsonde-0.0.8/lib/dropsonde.rb:43:in `<class:Dropsonde>'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/dropsonde-0.0.8/lib/dropsonde.rb:12:in `<top (required)>'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'\n        from /opt/puppetlabs/puppet/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/gems/dropsonde-0.0.8/bin/dropsonde:3:in `<top (required)>'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/bin/dropsonde:25:in `load'\n        from /opt/puppetlabs/server/data/puppetserver/dropsonde/bin/dropsonde:25:in `<main>'\n{noformat}\n{*}Recreation{*}:\n\nHere's a recreation using a simple Dockerfile based on {{debian::11}} (this assumes you have Docker running locally and are using bash/zsh):\n{code}mkdir dropsonde_error_recreation\ncd dropsonde_error_recreation\ncat << EOF > Dockerfile\nFROM debian:11\nADD http://apt.puppet.com/puppet7-release-bullseye.deb /root/\nRUN dpkg -i /root/*.deb \\\n    && apt-get update \\\n    && apt-get -y install --no-install-recommends puppetserver=7.9.5-*\n\nUSER puppet:puppet\nCMD [\"/opt/puppetlabs/server/bin/puppetserver\", \"foreground\"]\nEOF\n\ndocker run -it $(docker build -q .)\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14873", "fixedVersions": [], "id": "14873", "issueType": "Bug", "key": "SERVER-3263", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dropsonde causes stack trace when starting Puppetserver (7.9.5)", "timeSpent": "PT0S", "updated": "2023-03-03T16:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-02-27T09:36:00.000000", "creator": "640c28310a4a47fb8d2628c6", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a6ff90f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lz8p:"}], "description": "*Puppet Version:*\u00a05.5.22\n\n*Puppet Server Version:*\u00a0puppetserver version: 5.3.9\n\n*OS Name/Version:*\u00a0\n\nPRETTY_NAME=\"Debian GNU/Linux 11 (bullseye)\"\n\nNAME=\"Debian GNU/Linux\"\n\nVERSION_ID=\"11\"\n\nVERSION=\"11 (bullseye)\"\n\nVERSION_CODENAME=bullseye\n\nID=debian\n\nDescribe your issue in as much detail as possible\u2026\ni was renewing a ssl cert for foreman and the procedure has a step of stop puppetserver , rm ssl directory and starting puppetserver\nhowver i did rm ssl directory first and than stop and start puppetserver\nit didnt regenrated and updated the ssl directory\nso i regenerated SSL directory using puppetserver ca setup command\nand moved to /etc/puppetlabs/puppet\nand chown to puppet\n\nDescribe steps to reproduce\u2026\n\n*Desired Behavior:* the puppetserver should be active\n\n*Actual Behavior:*\n\n\u00a0puppetserver.service - puppetserver Service\n\n\u00a0\u00a0 \u00a0 Loaded: loaded (/lib/systemd/system/puppetserver.service; enabled; vendor preset: enabled)\n\n\u00a0\u00a0 \u00a0 Active: activating (start) since Mon 2023-02-27 16:16:27 UTC; 17s ago\n\nCntrl PID: 3559503 (bash)\n\n\u00a0 \u00a0 \u00a0 Tasks: 60 (limit: 4915)\n\n\u00a0\u00a0 \u00a0 Memory: 1.1G\n\n\u00a0 \u00a0 \u00a0 \u00a0 CPU: 1min 40.397s\n\n\u00a0\u00a0 \u00a0 CGroup: /system.slice/puppetserver.service\n\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u251c\u25003559503 bash /opt/puppetlabs/server/apps/puppetserver/cli/apps/start\n\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u251c\u25003559510 /usr/bin/java -Djava.net.preferIPv4Stack=true -Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger -Djava.security.egd=file:/dev/urandom -XX:OnOutOfMemoryError=kil>\n\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2514\u25003559617 sleep 1\n\n\u00a0\n\nFeb 27 16:16:27 foreman systemd[1]: Starting puppetserver Service...\n\n\u00a0\n\nthe error is puppet server.log says as below\n\n\u00a0\n2023-02-24 13:54:50,661 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\nclojure.lang.ExceptionInfo: throw+: \\{:kind :puppetlabs.kitchensink.core/io-error, :msg \"Parent directory '/etc/puppetlabs/puppet/ssl/ca' is not writable\"}\n\n\nhowever I have made the ca writable\n\nsudo ls -la\n\ntotal 36\n\ndrwxrwx--x 8 puppet puppet 4096 Feb 21 09:28 .\n\ndrwxr-xr-x 3 puppet puppet 4096 Feb 17 14:53 ..\n\ndrwxrwx--- 4 puppet puppet 4096 Feb 27 13:36 ca\n\ndrwxr-xr-x 2 puppet puppet 4096 Feb 21 09:28 certificate_requests\n\ndrwxr-xr-x 2 puppet puppet 4096 Feb 17 14:46 certs\n\n-rw-r--r-- 1 puppet puppet 1942 Feb 17 14:46 crl.pem\n\ndrwxr-x--- 2 puppet puppet 4096 Feb 21 09:28 private\n\ndrwxr-x--- 2 puppet puppet 4096 Feb 17 14:46 private_keys\n\ndrwxr-xr-x 2 puppet puppet 4096 Feb 17 14:46 public_keys\n\n\u00a0\n\n\u00a0\n\nsudo /opt/puppetlabs/puppet/bin/puppet agent -t\n\n*Warning: Unable to fetch my node definition, but the agent run will continue:*\n\n*Warning: Failed to open TCP connection to puppet:8140 (Connection refused - connect(2) for \"puppet\" port 8140)*\n\nInfo: Retrieving pluginfacts\n\n*Error: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': Failed to open TCP connection to puppet:8140 (Connection refused - connect(2) for \"puppet\" port 8140)*\n\n*Error: /File[/opt/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: Failed to open TCP connection to puppet:8140 (Connection refused - connect(2) for \"puppet\" port 8140)*\n\nInfo: Retrieving plugin\n\n*Error: /File[/opt/puppetlabs/puppet/cache/lib]: Failed to generate additional resources using 'eval_generate': Failed to open TCP connection to puppet:8140 (Connection refused - connect(2) for \"puppet\" port 8140)*\n\n*Error: /File[/opt/puppetlabs/puppet/cache/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: Failed to open TCP connection to puppet:8140 (Connection refused - connect(2) for \"puppet\" port 8140)*\n\nInfo: Loading facts\n\n*Error: Could not retrieve catalog from remote server: Failed to open TCP connection to puppet:8140 (Connection refused - connect(2) for \"puppet\" port 8140)*\n\n*Warning: Not using cache on failed catalog*\n\n*Error: Could not retrieve catalog; skipping run*\n\n*Error: Could not send report: Failed to open TCP connection to puppet:8140 (Connection refused - connect(2) for \"puppet\" port 8140)*\n\n\u00a0\n\nso please suggest how can I proceed further\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16118", "fixedVersions": [], "id": "16118", "issueType": "Improvement", "key": "SERVER-3262", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "High (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "640c28310a4a47fb8d2628c6", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server is not coming up  ", "timeSpent": "PT0S", "updated": "2023-02-28T07:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-02-24T05:55:00.000000", "creator": "640c2a04c6e77744a1e17cee", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@21ff811c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lyxd:"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17544", "fixedVersions": [], "id": "17544", "issueType": "Bug", "key": "SERVER-3261", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "640c2a04c6e77744a1e17cee", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "When I try to start the puppet server for the first time it gives me the following error: warning: abs already refers to: #'clojure.core/abs in namespace>", "timeSpent": "PT0S", "updated": "2023-02-24T05:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-02-21T16:50:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@652197e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lydt:"}], "description": "The maintainers of Puppet Server are the primary maintainers of Puppet's full_catalog benchmark as running it is a useful sanity check on JRuby upgrades.\n\nHowever, the code within it is years old and only functions using years old modules that are barely compatible with newer versions of Puppet, Facter, and Ruby. After Puppet 8 is released  We should update the dependency modules and perf_control module for Puppet 8 & Ruby 3.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15885", "fixedVersions": [], "id": "15885", "issueType": "Task", "key": "SERVER-3260", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update Puppet's full_catalog benchmark", "timeSpent": "PT0S", "updated": "2023-02-21T16:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2023-02-13T16:47:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5edd7485"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lwnt:"}], "description": "When upgrading to JRuby 9.4.1 the new Psych gem (5.1) would not work. It could not find a necessary file that should be installed when the gem is installed. Because Psych is installed as part of the jruby-stdlib process it seems that loading the jar itself is the problem.\n\nTo reproduce run {{{}puppetserver{}}}/{{{}lein gem install psych -v 5.1{}}}. After installation run {{puppetserver}}/{{lein irb}} and attempt to use the Psych gem.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15514", "fixedVersions": [], "id": "15514", "issueType": "Bug", "key": "SERVER-3259", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Cannot load jars installed by gems", "timeSpent": "PT0S", "updated": "2023-02-13T16:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-02-09T03:26:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@909f8cb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lw21:"}], "description": "Hi!\nsome background information. I'm a PE consultant and upgraded a PE 2019 environment for a customer with roughly 45 environments and 150 to 180 modules per environment. The recent PE change to exclude spec files from code-manager improved deployments a bit, but it heavily improved pe-backup (from 11 hours down to just a few).\n\nFrom https://www.puppet.com/blog/code-manager>\n> Delete spec dir when deploying modules. When deploying from a Git repository, we previously deployed it exactly as and now we skip deploying the spec directory. This matches the behavior of Forge modules because those do not include the spec directory when they are posted to the Forge in the first place. Since spec directories can be quite large, this reduces the time to deploy modules.\n\n\nNow another point of view. I'm also a Vox Pupuli member and we maintain a central .pmtignore file. That file is similar to a .gitignore file and exludes files from being put into a puppet module. We had a recent conversation about making this more strict:\nhttps://github.com/voxpupuli/modulesync_config/pull/791\n\nAnd the important thing: To reverse the logic and only allow files that the puppet module format allows:\nhttps://github.com/voxpupuli/modulesync_config/pull/791#issuecomment-1219793640\n> What about going a step further and ignoring everything by default and then negating only a few select filetypes/paths? E.g.\n* !/manifests/**/*.pp\n* !/lib/**/*.rb, !/files/**\n* !/templates/**/*.erb\n* !/templates/**/*.epp\n* !/metadata.json\n\n\nI think we should do that. this will trim down the amount of not required files even more and in turn will speed up code deploys and impact filesync/code-manager performance.\n\nWhy do I raise the ticket? I had a discussion with [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] at configuration management yesterday. I think r10k/codemanager should have the same pattern to exclude not required files. The Vox Pupuli approach is good to reduce the module size and reduce the requirest disk space for forge.puppet.com, but that only applies to Vox Pupuli and people that use our tooling. I think r10k/code-manager should adopt this as well to modules from other namespaces or older releases benefit from it as well.\n\nAnd side question: Is the puppet module spec somewhere available? I would like to know what's actually allowed/required within a module. And while the REFERENCE.md isn't required, I think the forge will use that if available? (and not rerender it on the file)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15271", "fixedVersions": [], "id": "15271", "issueType": "Task", "key": "SERVER-3258", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Code deploy/r10k: only deploy code that matches an allow list", "timeSpent": "PT0S", "updated": "2023-02-09T03:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2023-02-07T15:07:00.000000", "creator": "623c130a562ab90069f8b377", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46231833"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lvp5:"}], "description": "{*}Puppet Version: {color:#000000}7.21.0{color}\n{*}{{*}}Puppet Server Version: 7.9.3\\{*}\n*OS Name/Version: Alma 8.7*\n{code:java}WARNING: An illegal reflective access operation has occurred\nWARNING: Illegal reflective access by dynapath.default <..>\n<..>\nOutput of initialize-config does not match schema:  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{:gem-home missing-required-key}{code}\nchmod 0640 {color:#000000}{{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}} was the problem{color}\n\n*Desired Behavior:*\n\nUseful error message\n\n*Actual Behavior:*\n\nCryptic error message that led me down several rabbit trails before the file perm issue.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17543", "fixedVersions": [], "id": "17543", "issueType": "Bug", "key": "SERVER-3257", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c130a562ab90069f8b377", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Opaque message in server log", "timeSpent": "PT0S", "updated": "2023-02-07T15:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4744a95758006959fe55", "body": "It was determined that {{fips_mode}} being enabled was the root cause of the breakage:\n\n\u00a0{code:java}\n[root@jhoblitt-test4 ~]# cat /proc/sys/crypto/fips_enabled\u00a0\n0\n[root@jhoblitt-test4 ~]# /opt/puppetlabs/bin/puppetserver gem sources\n*** CURRENT SOURCES ***\n\nhttps://rubygems.org/\n[root@jhoblitt-test4 ~]# /opt/puppetlabs/bin/puppetserver gem install --no-document toml-rb\nSuccessfully installed toml-rb-2.2.0\n1 gem installed\n[root@jhoblitt-test4\n{code}\n", "created": "2023-02-03T15:36:00.000000"}], "components": ["Puppet Server"], "created": "2023-02-03T15:09:00.000000", "creator": "623a4744a95758006959fe55", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4fa91bff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lsvl:"}], "description": "*Puppet Version:*\n*Puppet Server Version: 7.9.3*\n*OS Name/Version: AlmaLinux release 8.7 (Stone Smilodon)*\n\n<newly provisioned Almalinux 8.7 VM for puppetserver testing>\n{code:java}\n[root@jhoblitt-test4 ~]# /opt/puppetlabs/bin/puppetserver gem install bundler --no-document\nERROR: \u00a0Could not find a valid gem 'bundler' (>= 0), here is why:\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Unable to download data from https://rubygems.org/ - SSL SSLContext not available (https://rubygems.org/specs.4.8.gz)\n {code}\n*Desired Behavior:* gem installation works{*}{*}\n\n*Actual Behavior:* gem installation fails\n\nA horrible, horrible, work around:\n\n\u00a0\n{code:java}\n[root@jhoblitt-test4 ~]# /opt/puppetlabs/bin/puppetserver gem sources -a http://rubygems.org/\nhttps://rubygems.org is recommended for security over http://rubygems.org/Do you want to add this insecure source? [yn] \u00a0y\nhttp://rubygems.org/ added to sources\n[root@jhoblitt-test4 ~]# /opt/puppetlabs/bin/puppetserver gem sources -r https://rubygems.org/\nhttps://rubygems.org/ removed from sources {code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14872", "fixedVersions": [], "id": "14872", "issueType": "Bug", "key": "SERVER-3256", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4744a95758006959fe55", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "unable to install puppetserver gems due to TLS error", "timeSpent": "PT0S", "updated": "2023-02-03T15:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-02-01T09:07:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a6537d3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lsld:"}], "description": "Hi,\nI checked through https://github.com/puppetlabs/puppetserver/blob/main/resources/ext/build-scripts/jruby-gem-list.txt and noticed that the deep_merge version is very very old. 1.0.1 is from 2014. Is there a reason for this or could it be updated? The recent releases contain a few bug fixes and enhancements.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16958", "fixedVersions": [], "id": "16958", "issueType": "Task", "key": "SERVER-3255", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update vendored gems", "timeSpent": "PT0S", "updated": "2023-02-01T09:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "6220dc0ab7e7c70071572d08", "attachments": [], "comments": [{"author": "6220dc0ab7e7c70071572d08", "body": "All tickets under epic are now Closed/Resolved, closed epic and this ticket.", "created": "2023-02-28T11:42:00.000000"}], "components": [], "created": "2023-01-31T14:03:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3cec47f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11740"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lsix:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Feb/23"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_705234768_*|*_3_*:*_1_*:*_593399012_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1112025005"}], "description": "(Initial planned release date: 2023-02-07)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.5\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2023-02-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.23.0 Release - 2023-02-07", "estimate": "PT0S", "externalId": "15270", "fixedVersions": [], "id": "15270", "issueType": "Task", "key": "SERVER-3254", "labels": ["release"], "originalEstimate": "PT0S", "parent": "26768", "parentSummary": "Puppet Platform 7.23.0 Release - 2023-02-07", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2023-02-28T11:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.23.0)", "timeSpent": "PT0S", "updated": "2023-02-28T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "6220dc0ab7e7c70071572d08", "attachments": [], "comments": [{"author": "6220dc0ab7e7c70071572d08", "body": "Not destined for PE release, closing.", "created": "2023-02-06T11:21:00.000000"}], "components": [], "created": "2023-01-31T14:03:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62d032da"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11740"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lsip:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Feb/23"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_508703886_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2023-02-07)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.23.0 Release - 2023-02-07", "estimate": "PT0S", "externalId": "14871", "fixedVersions": [], "id": "14871", "issueType": "Task", "key": "SERVER-3253", "labels": ["release"], "originalEstimate": "PT0S", "parent": "26768", "parentSummary": "Puppet Platform 7.23.0 Release - 2023-02-07", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Won't Do", "resolutionDate": "2023-02-06T11:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.23.0)", "timeSpent": "PT0S", "updated": "2023-02-06T11:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2023-01-31T14:03:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65a1ab9c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11740"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lsih:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1976039973_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2023-02-07)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.9.5\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.5\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2023-02-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.23.0 Release - 2023-02-07", "estimate": "PT0S", "externalId": "17542", "fixedVersions": [], "id": "17542", "issueType": "Task", "key": "SERVER-3252", "labels": ["release"], "originalEstimate": "PT0S", "parent": "26768", "parentSummary": "Puppet Platform 7.23.0 Release - 2023-02-07", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2023-02-23T10:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.23.0)", "timeSpent": "PT0S", "updated": "2023-02-23T10:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "6220dc0ab7e7c70071572d08", "attachments": [], "comments": [{"author": "6220dc0ab7e7c70071572d08", "body": "Steps were followed, pipelines run, [https://jenkins-platform.delivery.puppetlabs.net/view/puppetserver/view/7.x/] looks good.", "created": "2023-02-07T16:09:00.000000"}], "components": [], "created": "2023-01-31T14:03:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b0158be"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11740"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lsi9:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Feb/23"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_255866420_*|*_3_*:*_1_*:*_268714629_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_87784076"}], "description": "(Initial planned release date: 2023-02-07)\n\nPrepare release artifacts:\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified, e.g.\n  {{ruby ../ticketmatch/ticketmatch.rb -f <previous puppetserver version> -t <head of relevant puppetserver branch> -p SERVER -v \"SERVER 7.9.5\"}}\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch. If there is another planned puppetserver release before the next PE release, skip this step.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/90e97292651ca6fd3ce0af8e87a9c104b7c649f5\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main. You should not need to adjust any of the default parameters.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.9.5 is built and ready for testing.\n** Close this ticket once puppetserver 7.9.5 has promoted into pe-puppet-server-extensions and that version of pe-puppet-server-extensions has promoted into PE.\n", "duedate": "2023-02-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.23.0 Release - 2023-02-07", "estimate": "PT0S", "externalId": "17264", "fixedVersions": [], "id": "17264", "issueType": "Task", "key": "SERVER-3251", "labels": ["release"], "originalEstimate": "PT0S", "parent": "26768", "parentSummary": "Puppet Platform 7.23.0 Release - 2023-02-07", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2023-02-07T16:09:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.23.0)", "timeSpent": "PT0S", "updated": "2023-02-07T16:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2023-01-30T12:02:00.000000", "creator": "5ade3a9f91bc312e6a4a30f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60924a0b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3fk:i0090bv1w0009"}], "description": "For orchestrator we use kondo and eastwood for clojure code and rubocop for ruby code. Introduce these linters into the puppetserver repo (see orchestrator github actions for reference).\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15269", "fixedVersions": [], "id": "15269", "issueType": "Task", "key": "SERVER-3246", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5ade3a9f91bc312e6a4a30f3", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Introduce linters to puppetserver CI", "timeSpent": "PT0S", "updated": "2023-03-10T15:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-01-16T16:43:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4097b6c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lk49:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_243907_*|*_6_*:*_1_*:*_0"}], "description": "In Puppet 8 we will ship Ruby 3.2. In that version some deprecated functions have been removed (like {{{}File.exists?{}}}) and the OpenSSL interface has changed slightly with the move from OpenSSL 1.x to OpenSSL 3.x.\n\nWe should update puppetserver-ca-cli#main to be compatible with both Puppet 7 & Puppet 8, because we want to ship some features later around CA management that will need to go into both streams.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15266", "fixedVersions": [], "id": "15266", "issueType": "Task", "key": "SERVER-3245", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Duplicate", "resolutionDate": "2023-01-16T16:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver-ca cli for 3.2", "timeSpent": "PT0S", "updated": "2023-01-16T16:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2023-01-12T21:31:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@589986d0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3165"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0ljhl:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_270469_*|*_10007_*:*_1_*:*_88718190_*|*_3_*:*_1_*:*_270133074_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_61901541"}], "description": "In Puppet 8 we will ship Ruby 3.2. In that version some deprecated functions have been removed (like {{{}File.exists?{}}}) and the OpenSSL interface has changed slightly with the move from OpenSSL 1.x to OpenSSL 3.x.\n\neg, File.exists? doesn't exist so we get this when trying to start puppetserver in beaker tests:\n{noformat}  * Start puppetserver\n    \n    lewd-expectancy.delivery.puppetlabs.net (lewd-expectancy.delivery.puppetlabs.net) 04:00:39$ puppetserver ca setup\n      /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-2.3.6/lib/puppetserver/ca/host.rb:66:in `create_private_key': undefined method `exists?' for File:Class (NoMethodError)\n      \n              if File.exists?(private_path) && File.exists?(public_path)\n                     ^^^^^^^^\n      Did you mean?  exist?\n      \tfrom /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-2.3.6/lib/puppetserver/ca/local_certificate_authority.rb:210:in `create_root_cert'\n      \tfrom /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-2.3.6/lib/puppetserver/ca/action/setup.rb:78:in `generate_pki'\n      \tfrom /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-2.3.6/lib/puppetserver/ca/action/setup.rb:68:in `run'\n      \tfrom /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-2.3.6/lib/puppetserver/ca/cli.rb:100:in `run'\n      \tfrom /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'\n{noformat}\nWe should update puppetserver-ca-cli#main to be compatible with both Puppet 7 & Puppet 8, because we want to ship some features later around CA management that will need to go into both streams.\n\n\u00a0", "epicLinkSummary": "Puppet Server 8", "estimate": "PT0S", "externalId": "15513", "fixedVersions": ["SERVER 7.9.4"], "id": "15513", "issueType": "Bug", "key": "SERVER-3244", "labels": [], "originalEstimate": "PT0S", "parent": "16890", "parentSummary": "Puppet Server 8", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2023-01-17T18:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver-ca-cli for Ruby 3.2", "timeSpent": "PT0S", "updated": "2023-01-19T10:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "ping. Some of our PE customers are also interested in this (especially since EL8 got dropped in the PE 2023 release). Are the any estimate for puppetserver packages for EL9?", "created": "2023-01-25T03:45:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "I would like to ask to maybe extent the ticket. would it be possible to not only target RHEL9 but also CentOS 9 Streams?\n\nI mentioning this because they are not the exact same anymore. And I saw Puppet dropping support for CentOS 8 but not adding support for 8 Streams (yet ?).", "created": "2023-01-25T04:12:00.000000"}], "components": [], "created": "2023-01-05T12:16:00.000000", "creator": "70121:13e9ba64-d0e3-4303-948b-08ee1e68f2de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f67ff7f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0ldk9:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jan/23"}], "description": "Is there an ETA for packaged versions of puppetserver for RHEL9?\u00a0 The RHEL 9 platform has been out for a while...", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16957", "fixedVersions": [], "id": "16957", "issueType": "Improvement", "key": "SERVER-3239", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:13e9ba64-d0e3-4303-948b-08ee1e68f2de", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "RHEL9 packages for puppetserver", "timeSpent": "PT0S", "updated": "2023-02-14T11:15:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2022-12-22T05:14:00.000000", "creator": "623c1716ee1b5a007029387a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49634188"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0lan5:"}], "description": "*Puppet Version: 7.9.3*\n*Puppet Server Version:*\u00a0{*}7.9.3{*}{*}{{*}}\n*OS Name/Version: CentOS 7.9.2009*\n\nI've added another level of Hiera with multiple eyaml encrypted assets which I used well \u00a0in Puppet Server 5.x to setup my environment.\n\nThe data I've added is 11MB:\n\n\u00a0\n{code:java}[root@puppetserver11 ~]# ls -la /etc/puppetlabs/code/environments/assets_master/hieradata/data.eyaml\n\u00a0-rw-r--r-- 1 root root 11455420 Dec 22 10:21 /etc/puppetlabs/code/environments/assets_master/hieradata/data.eyaml\n{code}\n\u00a0\n\nAdded into hiera.yaml of production environment:\n\n\u00a0\n{code:java}\u00a0 - name: assets\n\u00a0 \u00a0 lookup_key: eyaml_lookup_key\n\u00a0 \u00a0 options:\n\u00a0 \u00a0 \u00a0 pkcs7_private_key: '/etc/puppetlabs/puppet/keys/private_key.pkcs7.pem'\n\u00a0 \u00a0 \u00a0 pkcs7_public_key: '/etc/puppetlabs/puppet/keys/public_key.pkcs7.pem'\n\u00a0 \u00a0 path: \"/etc/puppetlabs/code/environments/assets_master/hieradata/data.eyaml\"\n{code}\nWhen I've added it Puppetserver failed to compile catalogue.\n\n\u00a0\n\n*Desired Behavior:*\u00a0\n\nRun puppet agent on puppet server without errors.\n\n\u00a0\n\nJust to notice. \u00a0This error is caused by changes into project SnakeYAML, introduced here\n\n[https://bitbucket.org/snakeyaml/snakeyaml/commits/72dfa9f1074abe2b8a6c8776bee4476b0aed02e3#Lsrc/main/java/org/yaml/snakeyaml/LoaderOptions.javaT26]\n\nAnd finalised here\n\n[https://bitbucket.org/snakeyaml/snakeyaml/commits/440d98e2ebd586aafd9034fc74a2a47c656eb0ce#Lsrc/main/java/org/yaml/snakeyaml/LoaderOptions.javaT26]\n\nThese changes have been introduced in SnakeYAML v1.32 which in use by latest Puppet server version (I guess so - but not sure for 100%)\n\n\u00a0\n\n*So my expectation here is to introduce some puppet server configuration option where I can set desired Maximum YAML file size and propagate \u00a0this setting into YAML driver*\n\nIf it is possible to downgrade SnakeYAML to v1.31 in runtime (eg to place JAR file into some specific location) - it would be also great. If you have such ability - please share it with me\n\n\u00a0\n\n*Actual Behavior:*\n\nPlease take a moment and attach any relevant log output and/or manifests. This will help us immensely when troubleshooting the issue.\n\nExamples:\n{code:java}[root@puppetserver11 ~]# /opt/puppetlabs/bin/puppet agent --test\nInfo: Using environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Unable to parse The incoming YAML document exceeds the limit: 3145728 code points. on node puppetserver11.company.tld\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run{code}\nRelevant sections of {{/var/log/puppetlabs/puppetserver/puppetserver.log}} or any applicable logs from the same directory.\n\n\u00a0\n{code:java}2022-12-22T00:20:10.951-05:00 ERROR [qtp716057564-57] [puppetserver] Puppet Unable to parse The incoming YAML document exceeds the limit: 3145728 code points.\n2022-12-22T00:20:10.951-05:00 ERROR [qtp716057564-57] [puppetserver] Puppet Unable to parse The incoming YAML document exceeds the limit: 3145728 code points. on node puppetmaster11.carrierzone.com\n2022-12-22T00:20:10.952-05:00 DEBUG [qtp716057564-57] [puppetserver] Puppet Found in cache :build_live (ttl = 0 sec)\n2022-12-22T00:20:10.952-05:00 ERROR [qtp716057564-57] [puppetserver] Puppet Server Error: Unable to parse The incoming YAML document exceeds the limit: 3145728 code points. on node puppetmaster11.carrierzone.com\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/eyaml_lookup_key.rb:60:in `block in load_data_hash'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/context.rb:52:in `cached_file_data'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/context.rb:110:in `cached_file_data'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/eyaml_lookup_key.rb:47:in `load_data_hash'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/eyaml_lookup_key.rb:38:in `eyaml_lookup_key'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:60:in `invoke'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:47:in `block in dispatch'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:46:in `dispatch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:46:in `block in call'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:45:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_key_function_provider.rb:53:in `block in lookup_key'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_key_function_provider.rb:50:in `lookup_key'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_key_function_provider.rb:31:in `block in invoke_with_location'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/invocation.rb:140:in `with'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_key_function_provider.rb:30:in `invoke_with_location'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_key_function_provider.rb:20:in `block in unchecked_key_lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/merge_strategy.rb:126:in `lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_key_function_provider.rb:19:in `block in unchecked_key_lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/invocation.rb:140:in `with'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_key_function_provider.rb:18:in `unchecked_key_lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/configured_data_provider.rb:56:in `block in unchecked_key_lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/merge_strategy.rb:132:in `block in lookup'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/merge_strategy.rb:131:in `block in lookup'\norg/jruby/RubyArray.java:1865:in `each'\norg/jruby/RubyEnumerable.java:1024:in `inject'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/merge_strategy.rb:129:in `block in lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/invocation.rb:140:in `with'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/merge_strategy.rb:128:in `lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/configured_data_provider.rb:55:in `block in unchecked_key_lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/invocation.rb:140:in `with'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/configured_data_provider.rb:48:in `unchecked_key_lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/data_provider.rb:26:in `block in key_lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/invocation.rb:97:in `check'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/data_provider.rb:26:in `key_lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_adapter.rb:157:in `lookup_in_environment'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_adapter.rb:384:in `block in env_lookup_options'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_adapter.rb:384:in `env_lookup_options'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_adapter.rb:348:in `block in retrieve_lookup_options'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/invocation.rb:140:in `with'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_adapter.rb:344:in `block in retrieve_lookup_options'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/invocation.rb:82:in `lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_adapter.rb:343:in `retrieve_lookup_options'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_adapter.rb:237:in `lookup_lookup_options'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_adapter.rb:64:in `block in lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/invocation.rb:82:in `lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup/lookup_adapter.rb:59:in `lookup'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/lookup.rb:76:in `search_and_merge'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:266:in `block in inject_external_parameters'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:265:in `block in inject_external_parameters'\norg/jruby/RubyHash.java:1519:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:261:in `inject_external_parameters'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:228:in `set_resource_parameters'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:69:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:79:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:71:in `evaluate'\norg/jruby/RubyArray.java:1865:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:259:in `evaluate_classes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/include.rb:48:in `include'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:60:in `invoke'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:47:in `block in dispatch'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:46:in `dispatch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:46:in `block in call'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:45:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/puppet_stack.rb:42:in `stack'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:305:in `block in call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:303:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:995:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:964:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `block in eval_BlockExpression'\norg/jruby/RubyArray.java:1865:in `each'\norg/jruby/RubyEnumerable.java:1024:in `inject'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:60:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:27:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:63:in `block in evaluate'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:62:in `block in evaluate'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:61:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:30:in `safeevaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:80:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:79:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:71:in `evaluate'\norg/jruby/RubyArray.java:1865:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:259:in `evaluate_classes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/include.rb:48:in `include'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:60:in `invoke'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:47:in `block in dispatch'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:46:in `dispatch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:46:in `block in call'\norg/jruby/RubyKernel.java:1237:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:45:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/puppet_stack.rb:42:in `stack'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:305:in `block in call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:303:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:995:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:964:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:1058:in `block in eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/scope.rb:985:in `with_guarded_scope'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:1056:in `eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `block in eval_BlockExpression'\norg/jruby/RubyArray.java:1865:in `each'\norg/jruby/RubyEnumerable.java:1024:in `inject'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/puppet_stack.rb:42:in `stack'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:756:in `eval_Program'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:60:in `evaluate' {code}\nRelevant sections of configurations files (puppet.conf, hiera.conf, Server's conf.d, defaults/sysconfig)\n{code:java}\u00a0 - name: assets\n\u00a0 \u00a0 lookup_key: eyaml_lookup_key\n\u00a0 \u00a0 options:\n\u00a0 \u00a0 \u00a0 pkcs7_private_key: '/etc/puppetlabs/puppet/keys/private_key.pkcs7.pem'\n\u00a0 \u00a0 \u00a0 pkcs7_public_key: '/etc/puppetlabs/puppet/keys/public_key.pkcs7.pem'\n\u00a0 \u00a0 path: \"/etc/puppetlabs/code/environments/assets_master/hieradata/data.eyaml\" {code}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14870", "fixedVersions": [], "id": "14870", "issueType": "Bug", "key": "SERVER-3238", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c1716ee1b5a007029387a", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Error when Hiera YAML file is greater  then 3MB", "timeSpent": "PT0S", "updated": "2022-12-22T05:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "63d2e04a8c3018ca8a1c57c2", "created": "2022-11-21T07:39:00.000000", "name": "Dockerfile", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11252"}], "comments": [], "components": ["Puppet Server"], "created": "2022-11-21T07:39:00.000000", "creator": "63d2e04a8c3018ca8a1c57c2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@245a07e0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0kyeh:"}], "description": "I would like to use the puppetserver within docker on an arm64. Therefore I adapted the Dockerfile from puppetserver to be able to build an arm64 image.\n\nSince the build for the edge image is a little bit trickier without an dev environment, I skipped this part and build only the release version.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17541", "fixedVersions": [], "id": "17541", "issueType": "New Feature", "key": "SERVER-3237", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "63d2e04a8c3018ca8a1c57c2", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docker image for arm64", "timeSpent": "PT0S", "updated": "2022-11-21T07:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "created": "2022-11-21T07:10:00.000000", "name": "ls.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11174"}], "comments": [], "components": [], "created": "2022-11-21T07:11:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@dda1af9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0kye9:"}], "description": "*Puppet Version:* 7.20.0 / 6.28.0\n*Puppet Server Version:* Puppserver 2021.7.1.10 / 2019.8.12.30\n*OS Name/Version:* RHEL 7\n\nWhile looking for large directories, I noticed that /opt/puppetlabs/server/apps/puppetserver/tmp/ on one primary contains ~7.5GB of data. pe-puppetserver is running since 4 days, most files are way older. I'm not sure what's the purpose of the files, but the directory path contains tmp, so I guess it's a temp dir and could/should be cleaned up, at least during process restarts?\n\n*Desired Behavior:*\n\ncleaned up tmp directory after pe-puppetserver shutdown/restart\n\n*Actual Behavior:*\n\ngrowing tmp directory\n\nI do not know how to reproduce/trigger this. I see the behaviour on our production PE 2019 setup, but also in the PE 2021 test environment. It happens on primary and compiler servers. Every JVM is started with -Djava.io.tmpdir=/opt/puppetlabs/server/apps/puppetserver/tmp. I attached the ls output from one primary that's running since 4 days.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17260", "fixedVersions": [], "id": "17260", "issueType": "Bug", "key": "SERVER-3236", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "/opt/puppetlabs/server/apps/puppetserver/tmp isn't cleaned up", "timeSpent": "PT0S", "updated": "2022-11-29T09:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5ade3a9f91bc312e6a4a30f3", "attachments": [], "comments": [], "components": [], "created": "2022-11-18T11:10:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d5c97ca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11669"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0kvll:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}], "description": "(Initial planned release date: 2022-12-06)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.3\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-12-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.21.0 Release - 2022-12-06", "estimate": "PT0S", "externalId": "16304", "fixedVersions": [], "id": "16304", "issueType": "Task", "key": "SERVER-3235", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20396", "parentSummary": "Puppet Platform 7.21.0 Release - 2022-12-06", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.21.0)", "timeSpent": "PT0S", "updated": "2022-11-18T11:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5ade3a9f91bc312e6a4a30f3", "attachments": [], "comments": [], "components": [], "created": "2022-11-18T11:10:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@79cde486"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11669"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0kvld:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}], "description": "(Initial planned release date: 2022-12-06)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.21.0 Release - 2022-12-06", "estimate": "PT0S", "externalId": "16117", "fixedVersions": [], "id": "16117", "issueType": "Task", "key": "SERVER-3234", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20396", "parentSummary": "Puppet Platform 7.21.0 Release - 2022-12-06", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.21.0)", "timeSpent": "PT0S", "updated": "2022-11-18T11:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-11-18T11:10:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@143b7f8c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11669"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0kvl5:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2063052286_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-12-06)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.9.3\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.3\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-12-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.21.0 Release - 2022-12-06", "estimate": "PT0S", "externalId": "15884", "fixedVersions": [], "id": "15884", "issueType": "Task", "key": "SERVER-3233", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20396", "parentSummary": "Puppet Platform 7.21.0 Release - 2022-12-06", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-12-12T08:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.21.0)", "timeSpent": "PT0S", "updated": "2022-12-12T08:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5ade3a9f91bc312e6a4a30f3", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "There was a bit of a fire drill today. I ran the CI pipeline yesterday after the Agent promoted but forgot to run the submodule update job so we didn't test against the latest agent. When I ran the pipeline today we had a failure from my task listing change. After [this discussion|https://perforce.slack.com/archives/G0480SF5GBB/p1670437916620109] with Nick and Sean we decided that it was fine and the test should be updated to no longer use invalid fixtures ([PR here|https://github.com/puppetlabs/puppetserver/pull/2674]).\n\nBecause a likely outcome of the discussion was simply a test change I reloaded past the failing test so we could see how the rest of the pipeline fared. Everything besides that test passed and so once the pipeline had finished, and the test change was merged, and the test change had gotten past the stage in the build where it would have failed, I ran the Tag & Release job.\n\nThe final packages are here: http://builds.delivery.puppetlabs.net/puppetserver/7.9.3/\nI handed the build off to the agent lead, and since I was the so slow in getting packages to her, offered to help test. She has yet to take me up on the offer.\n\nThe tagged build has yet to go into PE-PSE, will close once it has. I don't know if this is the release that's supposed to go out in the next PE release so I have not done any of the other work around pipeline disabling. However, if it is, I _think_ we still have a month until stop ship so there's plenty of time to twiddle PS versions in PE-PSE.", "created": "2022-12-07T17:57:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Passed PE CI as well.", "created": "2022-12-08T09:44:00.000000"}], "components": [], "created": "2022-11-18T11:10:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49ebb220"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11669"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0kvkx:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Dec/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1666003408_*|*_10009_*:*_1_*:*_56835704_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-12-06)\n\nPrepare release artifacts:\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified, e.g.\n  {{ruby ../ticketmatch/ticketmatch.rb -f <previous puppetserver version> -t <head of relevant puppetserver branch> -p SERVER -v \"SERVER 7.9.3\"}}\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch. If there is another planned puppetserver release before the next PE release, skip this step.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/90e97292651ca6fd3ce0af8e87a9c104b7c649f5\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main. You should not need to adjust any of the default parameters.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.9.3 is built and ready for testing.\n** Close this ticket once puppetserver 7.9.3 has promoted into pe-puppet-server-extensions and that version of pe-puppet-server-extensions has promoted into PE.\n", "duedate": "2022-12-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.21.0 Release - 2022-12-06", "estimate": "PT0S", "externalId": "15512", "fixedVersions": [], "id": "15512", "issueType": "Task", "key": "SERVER-3232", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20396", "parentSummary": "Puppet Platform 7.21.0 Release - 2022-12-06", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-12-08T09:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.21.0)", "timeSpent": "PT0S", "updated": "2022-12-08T09:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5fc6d0862730d80076ef2425", "body": "I also reported this here: [https://github.com/puppetlabs/puppetlabs-release/issues/271]\n\n\u00a0\n\nthis is impacting us. Please indicate a workaround if there is a preferred approach.", "created": "2022-11-19T15:36:00.000000"}], "components": [], "created": "2022-11-18T09:44:00.000000", "creator": "557058:73e6cb21-721e-45ed-a765-ba01c38bc519", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20609e10"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0kvft:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/22"}], "description": "```\n\n$ openssl s_client -connect apt.repos.puppet.com:443 <<< '' \u00a02>&1 |fgrep notAfter\nnotAfter=Sep 14 23:59:59 2022 GMT\nnotAfter=Sep 14 23:59:59 2022 GMT\n\n```", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17540", "fixedVersions": [], "id": "17540", "issueType": "Bug", "key": "SERVER-3231", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "High (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:73e6cb21-721e-45ed-a765-ba01c38bc519", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "apt.repos.puppet.com:443 is serving an expired certificate", "timeSpent": "PT0S", "updated": "2022-11-19T15:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "620f6fd6878c2f00729ab8aa", "attachments": [], "comments": [{"author": "5ade3a9f91bc312e6a4a30f3", "body": "What fix version do we need on SERVER tickets?\u00a0", "created": "2022-12-13T09:05:00.000000"}], "components": [], "created": "2022-10-24T14:48:00.000000", "creator": "5b64ddd7d1e8dc2d916c6289", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "- Update\u00a0[jruby-deps|https://github.com/puppetlabs/jruby-deps/blob/c4b1b4f6396e7a8c1ae61fe1e5ab5686bd2e7bb1/project.clj#L1-L3]\u00a0with the new version\n - Release that and bump it in\u00a0[jruby-utils|https://github.com/puppetlabs/jruby-utils/blob/419e87acec31f6965a724f6025daa01d08befb5e/project.clj#L25]\n - Release that and update in\u00a0[clj-parent|https://github.com/puppetlabs/clj-parent/blob/436d5430bdf2fbb5e6c87b15ac682783c44b17cc/project.clj#L129]\n - Release that and update it in:\n -- puppetserver\n -- pe-pse (don't forget to also update\u00a0[this|https://github.com/puppetlabs/clj-parent/blob/436d5430bdf2fbb5e6c87b15ac682783c44b17cc/project.clj#L129])\n -- orchestrator"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@369fa74e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3l8:0920hiia"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now uses JRuby 9.3.9.0."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "8.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Dec/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3011023506_*|*_3_*:*_1_*:*_578878116_*|*_10009_*:*_1_*:*_801454630_*|*_5_*:*_1_*:*_0"}], "description": "- Update [jruby-deps|https://github.com/puppetlabs/jruby-deps/blob/c4b1b4f6396e7a8c1ae61fe1e5ab5686bd2e7bb1/project.clj#L1-L3] with the new version\n- Release that and bump it in [jruby-utils|https://github.com/puppetlabs/jruby-utils/blob/419e87acec31f6965a724f6025daa01d08befb5e/project.clj#L25]\n- Release that and update in [clj-parent|https://github.com/puppetlabs/clj-parent/blob/436d5430bdf2fbb5e6c87b15ac682783c44b17cc/project.clj#L129]\n- Release that and update it in:\n-- puppetserver\n-- pe-pse (don't forget to also update [this|https://github.com/puppetlabs/clj-parent/blob/436d5430bdf2fbb5e6c87b15ac682783c44b17cc/project.clj#L129])\n-- orchestrator", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16116", "fixedVersions": ["SERVER 7.9.3"], "id": "16116", "issueType": "Story", "key": "SERVER-3230", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b64ddd7d1e8dc2d916c6289", "resolution": "Fixed", "resolutionDate": "2022-12-14T09:37:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update JRuby to 9.3.9.0", "timeSpent": "PT0S", "updated": "2022-12-14T09:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:3fe45d2b-0347-4870-944c-6f32a658bdab", "created": "2022-10-12T04:04:00.000000", "name": "puppet-server.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11173"}], "comments": [{"author": "557058:3fe45d2b-0347-4870-944c-6f32a658bdab", "body": "a rollback to Puppet Server 7.9.1 works, we moved back", "created": "2022-10-12T04:05:00.000000"}, {"author": "557058:94252a0b-7ed3-4e3e-ab98-1739f9e085d6", "body": "Taking a quick look at the trace, [Psych|https://github.com/ruby/psych#readme] is involved and responsible for calling {{org.yaml.snakeyaml}} classes. As result, this bug is at the very least blocked on [ruby/psych#579: JRuby: Provide some sort of ability to configure SnakeYAML LoaderOptions|https://github.com/ruby/psych/issues/579].\n\nFor anyone suffering from this, downgrade to last month's Puppetserver package (7.9.1) is the only solution available for the near future.", "created": "2022-10-24T09:22:00.000000"}], "components": ["Puppet Server"], "created": "2022-10-12T04:03:00.000000", "creator": "557058:3fe45d2b-0347-4870-944c-6f32a658bdab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6429a76c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0k7r5:"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "50290"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Oct/22"}], "description": "*Puppet Version: 7.20.0*\n*Puppet Server Version:7.9.2*\n*OS Name/Version:Ubuntu 20.02*\n\nThe commit inside PuppetServer updated the snakeyaml version:\n\nhttps://github.com/puppetlabs/puppetserver/commit/9444a825a9d6db8caaf1cf59f0cf100276e1a81e\n\nThe new snakeyaml version contains a CVE fix that limits the size of a YAML document:\n\n[https://bitbucket.org/snakeyaml/snakeyaml/commits/72dfa9f1074abe2b8a6c8776bee4476b0aed02e3]\n\nOne of YAML document for our hiera is 3000 lines of network information. this breaks puppetserver\n\n*Desired Behavior:*\n\nlet the user configure the limit for snakeyaml\n\n\n*Actual Behavior:*\n\ncatalog compilation aborts with:\n\n```\n\n[puppetserver] Puppet Evaluation Error: Error while evaluating a Function Call, The incoming YAML document exceeds the limit: 3145728 code points.\n\n```\n\nThe complete trace is > 1000 lines, see extra upload", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16956", "fixedVersions": [], "id": "16956", "issueType": "Bug", "key": "SERVER-3228", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3fe45d2b-0347-4870-944c-6f32a658bdab", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "snakeyaml Update  breaks bigger Hieradata (yaml) files", "timeSpent": "PT0S", "updated": "2023-03-09T11:49:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2022-10-12T03:43:00.000000", "creator": "63d2e164a197e05f9dae4810", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@769b3d29"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0k7qp:"}], "description": "Puppet Server is not packaged for el9-based distros. The Puppet agent is available via both EPEL and puppetlabs.\n\nI am also unable to find any plan or roadmap for when we can expect Puppet Server to be available for el9-based distros.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16303", "fixedVersions": [], "id": "16303", "issueType": "Improvement", "key": "SERVER-3227", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "63d2e164a197e05f9dae4810", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "EL9 Packages for Puppet Server", "timeSpent": "PT0S", "updated": "2022-10-12T03:43:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:8db25e7a-4bdb-4fe2-af6b-f0a9bc714e12", "body": "Evaluate if this can be handled by promoting to both streams?\n\nSeems like yes?", "created": "2022-10-04T12:13:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "It can. We can do that for now, especially since it seems like auto-mergeups are a contentious topic. \n\nOne of the consequences of promoting to both streams is that if something is broken in the clj-parent release, it will affect all streams at once. When we make other changes to projects, we typically expect them to go completely through CI on the older branch before merging up to newer branches. Promoting to both streams goes against that pattern.\n\nI still think automated mergeups will save us a lot of time in the long run and adding configurable bits like this could allow these mergeup drivers to more-easily adapted for use by other projects. But I recognize that that is a longer-term goal that will require an upfront cost.", "created": "2022-10-06T13:20:00.000000"}], "components": [], "created": "2022-10-03T11:23:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66cd1e20"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3dx:9"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Oct/22"}], "description": "Currently, we have hard-coded the puppetserver mergeup script to not merge up clj-parent bumps: [https://github.com/puppetlabs/puppetserver/blob/a8019c168b2cd327056c68cd2833a6b167deba14/jenkins/mergeup.sh#L65]\n\nNow that we have three branches, we *don't* want to merge up clj-parent bumps from 6.x to 7.x, but we *do* want to merge them up from 7.x to main.\n * Add a {{MERGEUP_CLJ_PARENT}} parameter to the puppetserver [mergeup.sh|https://github.com/puppetlabs/puppetserver/blob/7.x/jenkins/mergeup.sh] script, similar to the {{MERGEUP_DEP_VERSIONS}} param (default to false).\n * Update the script to take the value of this param into account when determining what to do when a clj-parent bump conflict is encountered.\n ** The behavior can be tested locally by following the configuration instructions at the top of the script, setting the appropriate environment variables, and then performing a mergeup.\n * Add {{MERGEUP_CLJ_PARENT}} as a param to the [mergeup job-template in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/68e4cbcf3a45f508d302b8427cbb7d2400bfb631/resources/job-templates/mergeup.yaml#L126] with a default value of '\\{p_mergeup_clj_parent}' which should default to 'FALSE', similar to how {{MERGEUP_DEP_VERSIONS}} is configured.\n * Add {{p_mergeup_clj_parent}} to the [puppetserver project definition|https://github.com/puppetlabs/ci-job-configs/blob/68e4cbcf3a45f508d302b8427cbb7d2400bfb631/jenkii/platform/projects/puppetserver.yaml#L217] and set it to 'TRUE' for 7.x only.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14868", "fixedVersions": [], "id": "14868", "issueType": "Task", "key": "SERVER-3226", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make mergeups of clj-parent bumps in puppetserver configurable", "timeSpent": "PT0S", "updated": "2022-11-02T13:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8db25e7a-4bdb-4fe2-af6b-f0a9bc714e12", "attachments": [], "comments": [], "components": [], "created": "2022-10-03T09:36:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f76d752"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11636"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0k8rx:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1391128953_*|*_3_*:*_1_*:*_14473122_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-10-11)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.2\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-10-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.20.0 Release - 2022-10-11", "estimate": "PT0S", "externalId": "14866", "fixedVersions": [], "id": "14866", "issueType": "Task", "key": "SERVER-3225", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25702", "parentSummary": "Puppet Platform 7.20.0 Release - 2022-10-11", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-10-19T16:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.20.0)", "timeSpent": "PT0S", "updated": "2022-10-19T16:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8db25e7a-4bdb-4fe2-af6b-f0a9bc714e12", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "pe-pse was bumped as part of PE-34715 and we didn't disable promotions, since the PE release branch was cut prior to FOSS feature complete, so this is done.", "created": "2022-10-07T12:16:00.000000"}], "components": [], "created": "2022-10-03T09:36:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b273aaa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11636"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3l8:0920f24"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_355261125_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-10-11)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.20.0 Release - 2022-10-11", "estimate": "PT0S", "externalId": "17539", "fixedVersions": [], "id": "17539", "issueType": "Task", "key": "SERVER-3224", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25702", "parentSummary": "Puppet Platform 7.20.0 Release - 2022-10-11", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-10-07T12:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.20.0)", "timeSpent": "PT0S", "updated": "2022-10-07T12:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-10-03T09:36:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ca08257"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11636"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0k2wi:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_623120040_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-10-11)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.9.2\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.2\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-10-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.20.0 Release - 2022-10-11", "estimate": "PT0S", "externalId": "17258", "fixedVersions": [], "id": "17258", "issueType": "Task", "key": "SERVER-3223", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25702", "parentSummary": "Puppet Platform 7.20.0 Release - 2022-10-11", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-10-10T14:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.20.0)", "timeSpent": "PT0S", "updated": "2022-10-10T14:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8db25e7a-4bdb-4fe2-af6b-f0a9bc714e12", "attachments": [], "comments": [], "components": [], "created": "2022-10-03T09:36:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70bab075"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11636"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0k2tt:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24148478_*|*_3_*:*_1_*:*_317041210_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-10-11)\n\nPrepare release artifacts:\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified, e.g.\n  {{ruby ../ticketmatch/ticketmatch.rb -f <previous puppetserver version> -t <head of relevant puppetserver branch> -p SERVER -v \"SERVER 7.9.2\"}}\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch. If there is another planned puppetserver release before the next PE release, skip this step.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/90e97292651ca6fd3ce0af8e87a9c104b7c649f5\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main. You should not need to adjust any of the default parameters.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.9.2 is built and ready for testing.\n** Close this ticket once puppetserver 7.9.2 has promoted into pe-puppet-server-extensions and that version of pe-puppet-server-extensions has promoted into PE.\n", "duedate": "2022-10-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.20.0 Release - 2022-10-11", "estimate": "PT0S", "externalId": "16955", "fixedVersions": [], "id": "16955", "issueType": "Task", "key": "SERVER-3222", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25702", "parentSummary": "Puppet Platform 7.20.0 Release - 2022-10-11", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-10-07T08:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.20.0)", "timeSpent": "PT0S", "updated": "2022-10-07T08:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2022-09-30T04:53:00.000000", "creator": "6243b28cf813eb0069290a23", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2507fedf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0k26x:"}], "description": "CI looks broken -> no new images\n\n[https://puppet.com/docs/puppet/7/server/release_notes.html]\n\nLast Image 7.8.1: [https://hub.docker.com/r/puppet/puppetserver/tags]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17538", "fixedVersions": [], "id": "17538", "issueType": "CI Blocker", "key": "SERVER-3221", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243b28cf813eb0069290a23", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PuppetServer 7.9.1 Docker image missing", "timeSpent": "PT0S", "updated": "2022-09-30T04:53:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2022-09-09T12:48:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36e9f765"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0jj8x:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The included Dropsonde gem has been upgraded to 0.0.8 which adds the ability to list unused modules to the telemetry client report generator. See https://dev.to/puppet/cleaning-up-unused-modules-with-dropsonde-44a5 for more."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9703_*|*_3_*:*_1_*:*_7959_*|*_5_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17483", "fixedVersions": ["SERVER 6.y", "SERVER 7.9.1"], "id": "17483", "issueType": "Task", "key": "SERVER-3220", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2022-09-09T12:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dropsonde to 0.0.8", "timeSpent": "PT0S", "updated": "2022-09-20T13:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "created": "2022-08-30T08:28:00.000000", "name": "Screenshot 2022-08-29 at 10-55-57 gceasy.io.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10718"}, {"attacher": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "created": "2022-08-30T08:34:00.000000", "name": "Screenshot 2022-08-30 at 09-04-56 puppetserver_performance - Grafana.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11251"}, {"attacher": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "created": "2022-08-30T08:34:00.000000", "name": "Screenshot 2022-08-30 at 09-05-41 puppetserver_performance - Grafana.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11172"}, {"attacher": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "created": "2022-08-30T08:32:00.000000", "name": "Screenshot 2022-08-30 at 09-06-13 puppetserver_performance - Grafana.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11318"}, {"attacher": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "created": "2022-08-30T08:30:00.000000", "name": "Screenshot 2022-08-30 at 09-21-56 gceasy.io.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10637"}, {"attacher": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "created": "2022-08-31T08:09:00.000000", "name": "exceptions.PNG", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11015"}], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "My main concern with this switch is that historically the throughput % (percent of time spent on application work vs. garbage collection) has been worse with G1 and JRuby compared to ParallelGC. So, even though Parallel takes longer pauses during major collections it allows the Puppet API to get more work done overall per puppet run interval.\n\nHowever, the GCeasy reports attached here show a throughput of 99.0% with ParallelGC and 99.1% with G1GC, which is promising.\n\nOne other concern is the behavior of the Full GC. G1 is much more expensive if it gets pushed into running a full collection and the results here don't show that occurring.", "created": "2022-09-13T11:20:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "{quote}throughput % (percent of time spent on application work vs. garbage collection) has been worse with G1 and JRuby compared to ParallelGC{quote}\n\nDo you have any numbers on this/do you know if this was exclusive for JRuby? My impression for Ruby is that the main focus since a long time it G1GC. It's supposed to be the standard GC and ParallelGC development stalled and using it isn't recommended anymore. Maybe my impression is wrong or it only applies to Ruby, not JRuby. At least for the environment I'm currently debugging on, this is no performance difference.\n\nI had some discussions with our inhouse java developers. Their statement is that a proper configured JVM never does a full GC. If it does a full GC, something is broken. I haven't seen a single full GC with G1 and a full GC with ParallelGC every ~50 minutes. I say it doesn't matter how expensive a full GC would be. We should provide sane defaults that prohibit a GC at all. And I failed to configure ParallelGC/the JVM with ParallelGC in a way that it doesn't do full GCs.\n\nI currently don't have other big environments where I can debug. I'm wondering if other people:\n* don't have full GCs with ParallelGC at all\n* do have full GC but they are shorter. If so - why?\n* do have full GC but less often and don't notice any issues\n* do have full GCs at the same frequency, but don't execute latency sensitive operations like PE tasks/plans during that and don't notice the problem\n\nThe huge amount of exceptions might be related? I've no clue if so many exceptions are related and common (also I don't know how I can actually log those, I'm open for ideas). If you've any questions/want some numbers, let me know. I'm happy to do some testings in the current environment.", "created": "2022-09-13T11:39:00.000000"}], "components": [], "created": "2022-08-30T08:40:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51eec1b1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0jcxd:"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "49156"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Sep/22"}], "description": "Hi,\nThis ticket is a result of the support ticket 49156 and slack conversations:\n* https://puppetcommunity.slack.com/archives/C19V5U41Z/p1661786531899119\n* https://puppetcommunity.slack.com/archives/C19V5U41Z/p1661526850911179\n* https://puppetcommunity.slack.com/archives/C19V5U41Z/p1661433482752529\n\na brief summary:\n\nWe saw some timeouts in the pxp-agent logs, it sends out a keepalive packet to the broker and the broker didn't respond within 5 seconds (hardcoded value).  pxp-agent logged that it received a response, but after the 5 seconds. After a lot of debugging we noticed that ParallelGC caused a full garbage collection every ~45 minutes. They took on average 8 seconds, with the longest full GC taking 1 minute. During those timeframes, the pcp-broker cannot respond to keepalives. We switched to G1GC and didn't notice any issues so far. catalog compilation time didn't change and pcp-broker responds to all keepalives within time.\n\nWe're running PE 2019.8.11 on RHEL 7. We've one primary and 4 compilers behind an F5 loadbalancer. In total we have ~900 agents and ~1.400.000 resources in PuppetDB. I don't know why we run into this issue. for this small amount of agents/resources the PE infra is quite beefy. Each compiler has 64GB of ram, 16vCPUs. Only \"special\" thing we have are the 43 environments.\n\nWe did a lot of puppetserver adjustments, at the end the compilers were running with:\n* 24G xmx/xms\n* 10 jruby instances\n* 10.000 max requests per jruby instance on 2 compilers\n* 100.000 max requests per jruby instance on the other 2 compilers\n* max-queued-requests 85\n\nwhich still caused the full garbage collections. Increasing heap from 24G to 32G didn't change. We had around 10G of young gen and 20G of old gen. This is quite a bad ratio and I don't really know what caused this. A coworker is a java dev, he did a java flight record and mentioned over 100k exceptions *per second* in 2 minutes from the puppetserver. This is quite high, but the puppetserver.log had no indications (or is this just a locale thing and it's actually 100 exceptions/s?).\n\n !exceptions.PNG|! \n\nWe're now running with G1GC since two days and everything is working fine so far. I don't know if anything is special in our environment which lead to the many/long fullGCs or if more people have this problem but don't notice it because they run less tasks/jobs/plans via the orchestrator (or on less agents). I am aware of https://github.com/jruby/jruby/issues/5789 which I think was the reason why https://puppet.atlassian.net/browse/PE-28206 switched from G1GC to ParallelGC, but I think it's worth discussing switching back to G1GC. If there are any details in PE-28206 it would be awesome if you could share them (the ticket is private :( ).\n\nThere are also some tuning background information at https://puppet.atlassian.net/browse/SERVER-2771 and it sounds like there were huge improvements in G1GC or jruby: https://twitter.com/headius/status/1467915995553665031\n\nWe ended up with these java_args:\n{code:yaml}\n---\npuppet_enterprise::profile::master::java_args:\n  Xms: \"32700m\"\n  Xmx: \"32700m\"\n  'XX:+PrintCodeCache': ''\n  'XX:+HeapDumpOnOutOfMemoryError': ''\n  'XX:HeapDumpPath=/opt/puppetlabs/server/data/puppetserver/heapdumps/': ''\n  Xlog: \":gc*:file=/var/log/puppetlabs/puppetserver/puppetserver_gc.log:time,uptime:filecount=32,filesize=5M\"\n  'XX:+UseG1GC': ''\n  Djruby.management.enabled: '=true'\n{code}\n\nI've some stats from the platform, let me know if you need any details. Screenshot from the gceasy analyse with ParallelGC:\n\n !Screenshot 2022-08-29 at 10-55-57 gceasy.io.png|thumbnail! \n\nand after some time the same box with G1GC:\n\n !Screenshot 2022-08-30 at 09-21-56 gceasy.io.png|thumbnail! \n\nWe didn't see any performance impacts for catalog compilation:\n !Screenshot 2022-08-30 at 09-06-13 puppetserver_performance - Grafana.png|thumbnail! \n !Screenshot 2022-08-30 at 09-05-41 puppetserver_performance - Grafana.png|thumbnail! \n !Screenshot 2022-08-30 at 09-04-56 puppetserver_performance - Grafana.png|thumbnail! \n\n\nand last comment: PuppetDB and the orchestration-services also use ParallelGC. Switching them to G1GC should be evaluated as well I think?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17481", "fixedVersions": [], "id": "17481", "issueType": "Improvement", "key": "SERVER-3217", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Switch garbage collector in puppetserver from ParallelGC to G1GC", "timeSpent": "PT0S", "updated": "2023-11-28T15:58:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "# Team is Froyo\n# Can probably remove the second team based ticketmatch query\n# Do we still need the Dependencies and Versions page updates (aren't they always updated by PM prior to creating the tickets??)?\n", "created": "2022-09-08T15:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Team is apparently set outside of the templates.", "created": "2022-09-13T17:08:00.000000"}], "components": [], "created": "2022-08-23T11:53:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23821753"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11606"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0j0qh:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Sep/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1833420796_*|*_10007_*:*_1_*:*_2733267_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-09-13)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.1\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-09-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.19.0 Release - 2022-09-13", "estimate": "PT0S", "externalId": "15882", "fixedVersions": [], "id": "15882", "issueType": "Task", "key": "SERVER-3216", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28761", "parentSummary": "Puppet Platform 7.19.0 Release - 2022-09-13", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-09-13T17:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.19.0)", "timeSpent": "PT0S", "updated": "2022-09-20T13:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2022-08-23T11:53:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29edb830"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11606"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0j0q9:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1394953406_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-09-13)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.19.0 Release - 2022-09-13", "estimate": "PT0S", "externalId": "15451", "fixedVersions": [], "id": "15451", "issueType": "Task", "key": "SERVER-3215", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28761", "parentSummary": "Puppet Platform 7.19.0 Release - 2022-09-13", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-09-08T15:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.19.0)", "timeSpent": "PT0S", "updated": "2022-09-08T15:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "For this release there's been two bullets of note:\n* The included Dropsonde gem has been upgraded to 0.0.8 which adds the ability to list unused modules to the telemetry client report generator. See https://dev.to/puppet/cleaning-up-unused-modules-with-dropsonde-44a5 for more. (SERVER-3220)\n* org.yaml/snakeyaml has been upgrade to 1.31 (maint)", "created": "2022-09-09T12:54:00.000000"}], "components": [], "created": "2022-08-23T11:53:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d26b5b6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11606"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0j0q1:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Sep/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1745423123_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-09-13)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.9.1\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.1\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-09-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.19.0 Release - 2022-09-13", "estimate": "PT0S", "externalId": "15263", "fixedVersions": [], "id": "15263", "issueType": "Task", "key": "SERVER-3214", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28761", "parentSummary": "Puppet Platform 7.19.0 Release - 2022-09-13", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-09-12T16:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.19.0)", "timeSpent": "PT0S", "updated": "2022-09-12T16:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2022-08-23T11:53:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59e9bc7a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11606"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0j0pt:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1402819891_*|*_3_*:*_1_*:*_323961874_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-09-13)\n\nPrepare release artifacts:\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified, e.g.\n  {{ruby ../ticketmatch/ticketmatch.rb -f <previous puppetserver version> -t <head of relevant puppetserver branch> -p SERVER -v \"SERVER 7.9.1\"}}\n** Run ticketmatch in the puppet repo WITH the team 'Froyo', e.g.\n  {{ruby ../ticketmatch/ticketmatch.rb -f <previous puppet version> -t <head of relevant puppet branch> -p PUP -v \"PUP 7.19.0\" -m Froyo}}\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch. If there is another planned puppetserver release before the next PE release, skip this step.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/90e97292651ca6fd3ce0af8e87a9c104b7c649f5\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main. You should not need to adjust any of the default parameters.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.9.1 is built and ready for testing.\n** Close this ticket once puppetserver 7.9.1 has promoted into pe-puppet-server-extensions and that version of pe-puppet-server-extensions has promoted into PE.\n", "duedate": "2022-09-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.19.0 Release - 2022-09-13", "estimate": "PT0S", "externalId": "14864", "fixedVersions": [], "id": "14864", "issueType": "Task", "key": "SERVER-3213", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28761", "parentSummary": "Puppet Platform 7.19.0 Release - 2022-09-13", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-09-12T11:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.19.0)", "timeSpent": "PT0S", "updated": "2022-09-20T13:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2022-08-23T06:22:00.000000", "creator": "5a290d825389eb38679d468a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65f22e4c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0j0g9:"}], "description": "I'm trying to install Puppet Server on Debian 11 Bullseye by following descriptions\n * [https://puppet.com/docs/puppet/7/install_puppet.html#enable_the_puppet_platform_repository]\n * [https://puppet.com/docs/puppet/7/server/install_from_packages.html#install-puppet-server]\n\nBut final installation step fails with\n# apt-get install puppetserver\nReading package lists... Done\nBuilding dependency tree... Done\nReading state information... Done\nSome packages could not be installed. This may mean that you have\nrequested an impossible situation or if you are using the unstable\ndistribution that some required packages have not yet been created\nor been moved out of Incoming.\nThe following information may help to resolve the situation:\n\nThe following packages have unmet dependencies:\n puppetserver : Depends: puppet-agent (>= 6.16.0) but it is not installable\nE: Unable to correct problems, you have held broken packages.{{}}\nTo me it seems that {{puppetserver}} package declares an unresolvable dependency on package {{{}puppet-agent{}}}:\n# aptitude search puppet-agent\n[EMPTY RESULT]\n\nPackage repository seems to be correct:\n# cat /etc/apt/sources.list.d/puppet7.list \n# Puppet 7 bullseye Repository\ndeb http://apt.puppetlabs.com bullseye puppet7{{}}\nOperating on Debian 11 Bullseye:\n{{}}\n{code:java}\n$ cat /etc/os-release | grep VERSION\nVERSION_ID=\"11\"\nVERSION=\"11 (bullseye)\"\nVERSION_CODENAME=bullseye{code}\n{{{}{}}}Also see [StackOverflow issue|https://stackoverflow.com/questions/73443852/puppetserver-install-fails-on-debian-11-bullseye-depends-puppet-agent-6-16].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14855", "fixedVersions": [], "id": "14855", "issueType": "Bug", "key": "SERVER-3212", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a290d825389eb38679d468a", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver install fails on Debian 11 Bullseye \"Depends: puppet-agent (>= 6.16.0) but it is not installable\"", "timeSpent": "PT0S", "updated": "2022-08-23T06:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2022-07-28T13:39:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1fdd214e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3l8:0920hi0a"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}], "description": "We removed the legacy-routes-service starting in puppetserver 7, but we never removed it from {{web-routes.conf}}: https://github.com/puppetlabs/puppetserver/blob/42d96b68f4219b9dc90630addbd0f97f0f7f3bc2/ezbake/config/conf.d/web-routes.conf#L6\n\nWe should remove it, since it's confusing to ship a config file that mentions an unsupported service.\n\nEnsure corresponding docs are updated: https://puppet.com/docs/puppet/7/server/config_file_web-routes.html", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16650", "fixedVersions": [], "id": "16650", "issueType": "Task", "key": "SERVER-3211", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove legacy-routes-service from web-routes.conf", "timeSpent": "PT0S", "updated": "2022-10-10T11:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "This was done in ci-job-configs#e194d5497", "created": "2022-09-30T14:12:00.000000"}], "components": [], "created": "2022-07-28T08:59:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e820c9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-4570"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0hv89:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1289765455_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4258617767"}], "description": "Remove *Debian 9* from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove Debian 9 FOSS support", "estimate": "PT0S", "externalId": "15881", "fixedVersions": [], "id": "15881", "issueType": "Task", "key": "SERVER-3210", "labels": ["os"], "originalEstimate": "PT0S", "parent": "59986", "parentSummary": "Remove Debian 9 FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Done", "resolutionDate": "2022-09-30T14:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Debian 9 from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2022-09-30T14:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-06-22T16:42:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73c49d91"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11572"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0h7q8:xi"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_153837770_*|*_3_*:*_1_*:*_58298116_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4516055418"}], "description": "(Initial planned release date: 2022-07-12)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.20.0\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-07-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.28.0 Release - 2022-07-12", "estimate": "PT0S", "externalId": "17479", "fixedVersions": ["None"], "id": "17479", "issueType": "Task", "key": "SERVER-3208", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25506", "parentSummary": "Puppet Platform 6.28.0 Release - 2022-07-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-08-16T10:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 6.28.0)", "timeSpent": "PT0S", "updated": "2022-08-16T10:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-06-22T16:42:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17f972bc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11572"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0h7q8:x"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_88987058_*|*_1_*:*_1_*:*_153831408_*|*_10007_*:*_1_*:*_2561106_*|*_3_*:*_1_*:*_615814_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4506912052"}], "description": "(Initial planned release date: 2022-07-12)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 6.28.0 Release - 2022-07-12", "estimate": "PT0S", "externalId": "17254", "fixedVersions": ["None"], "id": "17254", "issueType": "Task", "key": "SERVER-3207", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25506", "parentSummary": "Puppet Platform 6.28.0 Release - 2022-07-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-08-16T16:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 6.28.0)", "timeSpent": "PT0S", "updated": "2022-08-16T16:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-06-22T16:42:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ee803bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11572"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0hgx4:w"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3611323397_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-07-12)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 6.20.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.20.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-07-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.28.0 Release - 2022-07-12", "estimate": "PT0S", "externalId": "16953", "fixedVersions": [], "id": "16953", "issueType": "Task", "key": "SERVER-3206", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25506", "parentSummary": "Puppet Platform 6.28.0 Release - 2022-07-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-08-03T11:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 6.28.0)", "timeSpent": "PT0S", "updated": "2022-08-03T11:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-06-22T16:42:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e367dc5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11572"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0hgyc:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_22768897_*|*_1_*:*_1_*:*_153867995_*|*_3_*:*_1_*:*_268235413_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1807188723"}], "description": "(Initial planned release date: 2022-07-12)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 6.20.0 is built and ready for testing.\n", "duedate": "2022-07-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.28.0 Release - 2022-07-12", "estimate": "PT0S", "externalId": "16649", "fixedVersions": ["None"], "id": "16649", "issueType": "Task", "key": "SERVER-3205", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25506", "parentSummary": "Puppet Platform 6.28.0 Release - 2022-07-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-07-18T18:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 6.28.0)", "timeSpent": "PT0S", "updated": "2022-07-18T18:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-06-22T16:38:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@125294e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0h7q8:xy"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_154142733_*|*_10007_*:*_1_*:*_7894512_*|*_3_*:*_1_*:*_6553868_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4834270049"}], "description": "(Initial planned release date: 2022-07-12)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.0\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-07-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.18.0 Release - 2022-07-12", "estimate": "PT0S", "externalId": "17253", "fixedVersions": ["None"], "id": "17253", "issueType": "Task", "key": "SERVER-3204", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24624", "parentSummary": "Puppet Platform 7.18.0 Release - 2022-07-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-08-19T14:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.18.0)", "timeSpent": "PT0S", "updated": "2022-08-19T14:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-06-22T16:37:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f08403a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0h7q8:xw"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_61555355_*|*_1_*:*_1_*:*_154184102_*|*_10007_*:*_1_*:*_13476368_*|*_3_*:*_1_*:*_550369_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4672787233"}], "description": "(Initial planned release date: 2022-07-12)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.18.0 Release - 2022-07-12", "estimate": "PT0S", "externalId": "16952", "fixedVersions": ["None"], "id": "16952", "issueType": "Task", "key": "SERVER-3203", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24624", "parentSummary": "Puppet Platform 7.18.0 Release - 2022-07-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-08-18T10:27:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.18.0)", "timeSpent": "PT0S", "updated": "2022-08-18T10:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-06-22T16:37:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71135d8d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0hgx4:zz"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3611043631_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-07-12)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.9.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.9.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-07-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.18.0 Release - 2022-07-12", "estimate": "PT0S", "externalId": "16648", "fixedVersions": [], "id": "16648", "issueType": "Task", "key": "SERVER-3202", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24624", "parentSummary": "Puppet Platform 7.18.0 Release - 2022-07-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-08-03T11:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.18.0)", "timeSpent": "PT0S", "updated": "2022-08-03T11:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-06-22T16:37:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ce6ce3f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0h7pi:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_108596692_*|*_1_*:*_1_*:*_154171024_*|*_10007_*:*_1_*:*_2596349_*|*_3_*:*_1_*:*_172159964_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2162654383"}], "description": "(Initial planned release date: 2022-07-12)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.9.0 is built and ready for testing.\n", "duedate": "2022-07-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.18.0 Release - 2022-07-12", "estimate": "PT0S", "externalId": "16302", "fixedVersions": ["None"], "id": "16302", "issueType": "Task", "key": "SERVER-3201", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24624", "parentSummary": "Puppet Platform 7.18.0 Release - 2022-07-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-07-22T18:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.18.0)", "timeSpent": "PT0S", "updated": "2022-07-22T18:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2022-05-06T10:34:00.000000", "creator": "62bc76949e6ba34c9936b45e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59532a4d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0g83y:"}], "description": "*Puppet Version:* 7.7.0-1focal\n*Puppet Server Version:* 7.7.0-1focal\n*OS Name/Version:* Ubuntu 20.04.4 LTS Linux 5.13.0-1022-aws #24~20.04.1-Ubuntu SMP Thu Apr 7 22:14:11 UTC 2022 aarch64\n\nPuppetserver fails to start with the following messages:\n{noformat}\nMay 06 16:25:23 puppetserver[308538]: Puppet::Error: Cannot determine basic system flavour\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <main> at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/feature/base.rb:19\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0require at org/jruby/RubyKernel.java:974\nMay 06 16:25:23 puppetserver[308538]: \u00a0 require_relative at org/jruby/RubyKernel.java:1002\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0<module:Puppet> at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:98\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <main> at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:42\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0require at org/jruby/RubyKernel.java:974\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:83\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <main> at uri:classloader:/puppetserver-lib/puppet/server.rb:1\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0require at org/jruby/RubyKernel.java:974\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:83\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <main> at uri:classloader:/puppetserver-lib/puppet/server/master.rb:1\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0require at org/jruby/RubyKernel.java:974\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:83\nMay 06 16:25:23 puppetserver[308538]: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <main> at <script>:1\nMay 06 16:25:23 puppetserver[308538]: ERROR shutdown-on-error triggered because of exception!{noformat}\nWhole error message a bit longer, please let me know if you need it full.\n\nThis is official package taken from puppetlabs repo, I've also tried to create a different tmp directory, so both options from known issues didn't help.\n\nSame time puppet agent works fine.\n\n*Desired Behavior:*\n\nPuppetserver starts and serves clients\n\n*Actual Behavior:*\n\nPuppetserver fails to start", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15880", "fixedVersions": [], "id": "15880", "issueType": "Bug", "key": "SERVER-3199", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "62bc76949e6ba34c9936b45e", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver fails to start on AWS Graviton instance (aarch64)", "timeSpent": "PT0S", "updated": "2022-05-06T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2022-05-04T08:41:00.000000", "creator": "70121:13e9ba64-d0e3-4303-948b-08ee1e68f2de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33c1c508"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0g6hy:"}], "description": "It would be helpful if puppetserver had the r10k gem installed so it was ready to use immediately.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16301", "fixedVersions": [], "id": "16301", "issueType": "New Feature", "key": "SERVER-3198", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:13e9ba64-d0e3-4303-948b-08ee1e68f2de", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ship puppetserver with r10k installed", "timeSpent": "PT0S", "updated": "2022-05-04T08:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2022-05-02T17:59:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28186ea2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11528"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0g3q6:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2736898768_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-05-24)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.8.0\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-05-26T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.17.0 Release - 2022-05-24", "estimate": "PT0S", "externalId": "15260", "fixedVersions": [], "id": "15260", "issueType": "Task", "key": "SERVER-3197", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27757", "parentSummary": "Puppet Platform 7.17.0 Release - 2022-05-24", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-06-03T10:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.17.0)", "timeSpent": "PT0S", "updated": "2022-06-03T10:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This release isn't going into a PE release, so no need to halt promotions.", "created": "2022-06-03T10:14:00.000000"}], "components": [], "created": "2022-05-02T17:59:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e0cc56a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11528"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0g3py:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2736900829_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-05-24)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.17.0 Release - 2022-05-24", "estimate": "PT0S", "externalId": "14851", "fixedVersions": [], "id": "14851", "issueType": "Task", "key": "SERVER-3196", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27757", "parentSummary": "Puppet Platform 7.17.0 Release - 2022-05-24", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Won't Do", "resolutionDate": "2022-06-03T10:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.17.0)", "timeSpent": "PT0S", "updated": "2022-06-03T10:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-05-02T17:59:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e4d87a4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11528"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0g3pq:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2736878325_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-05-24)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.8.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.8.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-05-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.17.0 Release - 2022-05-24", "estimate": "PT0S", "externalId": "17477", "fixedVersions": [], "id": "17477", "issueType": "Task", "key": "SERVER-3195", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27757", "parentSummary": "Puppet Platform 7.17.0 Release - 2022-05-24", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-06-03T10:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.17.0)", "timeSpent": "PT0S", "updated": "2022-06-03T10:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2022-05-02T17:59:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7399e2e0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11528"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0g3pi:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2736874224_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2022-05-24)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.8.0 is built and ready for testing.\n", "duedate": "2022-05-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.17.0 Release - 2022-05-24", "estimate": "PT0S", "externalId": "17222", "fixedVersions": [], "id": "17222", "issueType": "Task", "key": "SERVER-3194", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27757", "parentSummary": "Puppet Platform 7.17.0 Release - 2022-05-24", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-06-03T10:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.17.0)", "timeSpent": "PT0S", "updated": "2022-06-03T10:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:64ef47a3-5a01-405a-8905-bb5924baaed6", "body": "Hello, please advice when approx. open source package \"puppetserver\" for Ubuntu 22.04 will be released? Thank you :)\n\nIt's much awaited ", "created": "2022-05-15T04:17:00.000000"}, {"author": "62ccea5fe546e8eab8ee5c4f", "body": "So, we've got the agent support now, but no (visible) progress on the server? We're heading for four months since Ubuntu 22.04 came out. Early adopters are already going to be looking at it for new installs on new networks. And the next non-LTS release won't be far away!", "created": "2022-08-06T02:40:00.000000"}, {"author": "5c5183cf3ed79267251046c8", "body": "Is this on a roadmap, any ETA ?\n\n\u00a0", "created": "2022-09-01T22:26:00.000000"}, {"author": "623c1205bef8a60068c79a3f", "body": "We are also eagerly awaiting this, would be good to have an indication if this is on Puppetlabs' radar?", "created": "2022-09-15T20:00:00.000000"}, {"author": "623c102a1c7f6a007049e785", "body": "Would love to see this too, given that Jammy has been out for 6 months now and the puppet-agent packages for Jammy already exist in the repo. Thanks!", "created": "2022-10-26T19:22:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "Are there any plans to deliver puppetserver builds for Ubuntu 22?", "created": "2023-01-03T02:31:00.000000"}, {"author": "623c168594742a00683e4426", "body": "With version puppetserver 6 about to go EOL, it would be a nice to refresh both the OS and the server at once :)", "created": "2023-01-27T08:37:00.000000"}, {"author": "6399929461aba8a6a32cd10d", "body": "Any update on this? Or are we forced to migrate to other products?", "created": "2023-03-02T01:26:00.000000"}], "components": ["Puppet Server"], "created": "2022-04-28T23:44:00.000000", "creator": "6243b1e6f6a26900695c26e4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@181fff4f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0g2se:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/22"}], "description": "Ohai,\n\nUbuntu 22.04 LTS was released ([https://ubuntu.com/blog/ubuntu-22-04-lts-released]) and it would be cool if Puppet Server packages would be available for it.\n\nAgent bits are tracked in PA-4233\n\n\u00a0\n\nThanks!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15879", "fixedVersions": [], "id": "15879", "issueType": "Improvement", "key": "SERVER-3193", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243b1e6f6a26900695c26e4", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ubuntu 22.04 Jammy packages for Puppet Server", "timeSpent": "PT0S", "updated": "2023-05-17T00:32:00.000000", "votes": "14", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2022-04-25T11:39:00.000000", "creator": "557058:1134d60c-31df-407a-b573-e0cfaef8865e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70505eb3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3ms:002e"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "48135"}], "description": "*Puppet Version:* 7.12.1\n*Puppet Server Version:* 7.4.2\n\nA customer has stated that the puppet-ca/v1/clean endpoint only \u201cworks for them when talking directly to the primary, it doesn\u2019t work when connecting via a PE Compiler, using the built-in proxy the compilers provide. Every other type of CA request proxies just fine, it\u2019s just the newer clean endpoint.\u201d\n\n*Desired Behavior:* can hit puppet-ca/v1/clean via a compiler\n\n\n*Actual Behavior:* Only works directly via primary\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15257", "fixedVersions": [], "id": "15257", "issueType": "Bug", "key": "SERVER-3192", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:1134d60c-31df-407a-b573-e0cfaef8865e", "status": "Ready for Merge", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet-ca/v1/clean endpoint, only works when hitting the primary directly an not thorugh compilers", "timeSpent": "PT0S", "updated": "2022-05-31T09:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-03-30T11:00:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20e6af5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11491"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fi0m:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5028828_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2946809475"}], "description": "(Initial planned release date: 2022-04-12)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.7.0\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-04-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.16.0 Release - 2022-04-12", "estimate": "PT0S", "externalId": "16114", "fixedVersions": [], "id": "16114", "issueType": "Task", "key": "SERVER-3189", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20334", "parentSummary": "Puppet Platform 7.16.0 Release - 2022-04-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-05-03T14:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.16.0)", "timeSpent": "PT0S", "updated": "2022-05-03T14:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-03-30T11:00:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5008d4df"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11491"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fi0e:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5001378_*|*_10007_*:*_1_*:*_2534120_*|*_3_*:*_1_*:*_168002586_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2674458476"}], "description": "(Initial planned release date: 2022-04-12)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.16.0 Release - 2022-04-12", "estimate": "PT0S", "externalId": "15877", "fixedVersions": ["None"], "id": "15877", "issueType": "Task", "key": "SERVER-3188", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20334", "parentSummary": "Puppet Platform 7.16.0 Release - 2022-04-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-05-02T10:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.16.0)", "timeSpent": "PT0S", "updated": "2022-05-02T10:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-03-30T11:00:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d88af6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11491"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fi06:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_87322016_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1035098840"}], "description": "(Initial planned release date: 2022-04-12)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.7.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.7.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-04-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.16.0 Release - 2022-04-12", "estimate": "PT0S", "externalId": "15450", "fixedVersions": [], "id": "15450", "issueType": "Task", "key": "SERVER-3187", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20334", "parentSummary": "Puppet Platform 7.16.0 Release - 2022-04-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-04-12T10:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.16.0)", "timeSpent": "PT0S", "updated": "2022-04-12T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-03-30T11:00:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@717001da"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11491"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fhzy:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_59147109_*|*_1_*:*_1_*:*_5027691_*|*_10007_*:*_1_*:*_1425512_*|*_3_*:*_1_*:*_9671658_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_440818703"}], "description": "(Initial planned release date: 2022-04-12)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.7.0 is built and ready for testing.\n", "duedate": "2022-04-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.16.0 Release - 2022-04-12", "estimate": "PT0S", "externalId": "15254", "fixedVersions": ["None"], "id": "15254", "issueType": "Task", "key": "SERVER-3186", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20334", "parentSummary": "Puppet Platform 7.16.0 Release - 2022-04-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-04-05T10:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.16.0)", "timeSpent": "PT0S", "updated": "2022-04-05T10:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-03-30T10:55:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67488d07"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11481"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fi0m:9"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5167329_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2947017993"}], "description": "(Initial planned release date: 2022-04-12)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.19.0\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-04-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.27.0 Release - 2022-04-12", "estimate": "PT0S", "externalId": "14850", "fixedVersions": [], "id": "14850", "issueType": "Task", "key": "SERVER-3185", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24642", "parentSummary": "Puppet Platform 6.27.0 Release - 2022-04-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-05-03T14:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 6.27.0)", "timeSpent": "PT0S", "updated": "2022-05-03T14:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-03-30T10:54:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3945f976"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11481"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fht2:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5185260_*|*_10007_*:*_1_*:*_2571243_*|*_3_*:*_1_*:*_252799719_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2589799739"}], "description": "(Initial planned release date: 2022-04-12)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 6.27.0 Release - 2022-04-12", "estimate": "PT0S", "externalId": "17475", "fixedVersions": ["None"], "id": "17475", "issueType": "Task", "key": "SERVER-3184", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24642", "parentSummary": "Puppet Platform 6.27.0 Release - 2022-04-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-05-02T10:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 6.27.0)", "timeSpent": "PT0S", "updated": "2022-05-02T10:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-03-30T10:54:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d8e4b92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11481"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fhsu:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_87654717_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1035074378"}], "description": "(Initial planned release date: 2022-04-12)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 6.19.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.19.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-04-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.27.0 Release - 2022-04-12", "estimate": "PT0S", "externalId": "17220", "fixedVersions": [], "id": "17220", "issueType": "Task", "key": "SERVER-3183", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24642", "parentSummary": "Puppet Platform 6.27.0 Release - 2022-04-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-04-12T10:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 6.27.0)", "timeSpent": "PT0S", "updated": "2022-04-12T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2022-03-30T10:54:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c01eb28"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11481"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fhsm:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_249304587_*|*_1_*:*_1_*:*_5213938_*|*_10007_*:*_1_*:*_7900590_*|*_3_*:*_1_*:*_827055_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_169858686"}], "description": "(Initial planned release date: 2022-04-12)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 6.19.0 is built and ready for testing.\n", "duedate": "2022-04-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.27.0 Release - 2022-04-12", "estimate": "PT0S", "externalId": "16895", "fixedVersions": ["None"], "id": "16895", "issueType": "Task", "key": "SERVER-3182", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24642", "parentSummary": "Puppet Platform 6.27.0 Release - 2022-04-12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2022-04-04T11:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 6.27.0)", "timeSpent": "PT0S", "updated": "2022-04-04T11:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2022-03-29T05:23:00.000000", "creator": "557058:7e524d50-cfa9-44c1-9d72-f30ab841ddf9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f826f1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3ms:0026"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "47606"}], "description": "There is the possibility to create empty commits to ss-data repo by following this process.\n\nGenerate a certificate request from a node but leave it as an unsigned certificate. Then run `puppet node purge <NODE>` and the following gets produced as a response to the command:\n\n\u00a0\n{code:java}\n[root@pe-server-9678d5-0 ~]# puppet node purge cent0s7-2-d05ff5-0.us-west1-c.c.customer-support-scratchpad.internal\nNotice: Cleaned files related to cent0s7-2-d05ff5-0.us-west1-c.c.customer-support-scratchpad.internal\nNode \"cent0s7-2-d05ff5-0.us-west1-c.c.customer-support-scratchpad.internal\" was purged.\nTo ensure a node can not check into any compilers, run 'puppet agent -t' on all compilers.\nTo re-add a node to your Puppet Enterprise infrastructure:\nOn the node:\n1. Run 'puppet ssl clean' to purge that node's local certificates.\n2. Run 'puppet agent -t' to generate a new certificate request.\n{code}\n\u00a0\n\nas per `puppetserver` log the following gets registered:\n\n\n\u00a0\n{code:java}\n2022-03-29T11:15:49.331Z INFO [clojure-agent-send-off-pool-20] [p.e.s.f.file-sync-storage-core] Automatically committing due to changes in staging-dir '/etc/puppetlabs/puppet/ssl' \n2022-03-29T11:15:49.332Z INFO [clojure-agent-send-off-pool-0] [p.e.s.f.file-sync-storage-core] Automatically committing due to changes in staging-dir '/etc/puppetlabs/puppet/ssl/ca' \n2022-03-29T11:15:49.332Z INFO [clojure-agent-send-off-pool-92] [p.e.s.f.file-sync-storage-core] Committing staging directory /etc/puppetlabs/puppet/ssl to file sync storage service \n2022-03-29T11:15:49.339Z INFO [clojure-agent-send-off-pool-92] [p.e.s.f.file-sync-storage-core] Committing repo /etc/puppetlabs/puppet/ssl \n2022-03-29T11:15:49.339Z INFO [clojure-agent-send-off-pool-92] [p.e.s.f.file-sync-storage-core] Committing the following changes: Added Files: Removed Files: Changed Files: Added Submodules: Updated Submodules: \n2022-03-29T11:15:49.343Z INFO [clojure-agent-send-off-pool-92] [p.e.s.f.file-sync-storage-core] Completed commit of repo :ssl-data 2022-03-29T11:15:49.367Z INFO [clojure-agent-send-off-pool-96] [p.e.s.f.file-sync-storage-core] Committing staging directory /etc/puppetlabs/puppet/ssl/ca to file sync storage service \n2022-03-29T11:15:49.370Z INFO [clojure-agent-send-off-pool-96] [p.e.s.f.file-sync-storage-core] Committing repo /etc/puppetlabs/puppet/ssl/ca \n2022-03-29T11:15:49.370Z INFO [clojure-agent-send-off-pool-96] [p.e.s.f.file-sync-storage-core] Committing the following changes: Added Files: Removed Files: Changed Files: Added Submodules: Updated Submodules: \n2022-03-29T11:15:49.373Z INFO [clojure-agent-send-off-pool-96] [p.e.s.f.file-sync-storage-core] Completed commit of repo :ca-data{code}\n\u00a0\n\u00a0\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16300", "fixedVersions": [], "id": "16300", "issueType": "Bug", "key": "SERVER-3181", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6220db9494f7e20069fe964a", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "committing empty commits to ssl-data", "timeSpent": "PT0S", "updated": "2022-05-31T09:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "61af86343618cd006f430854", "body": "updated summary to be more descriptive of the problem & possible trigger", "created": "2022-03-25T08:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It would be really valuable to have the puppet.conf from this deployment, Puppet Server's conf.d/, along with more of the server logs. I noticed that the user isn't using Box but seems to have uploaded slices of their support tarball. Should I be piecing those together?\n\nIf something was causing a reparse of the config files and there was some loop that the JRuby instances could get into attempting to parse and/or update the puppet.conf I don't know how that would cause a stackoverflow within _clojure_. \n\nDo you know if their processes that \"touch\" the puppet.conf could be updating any values in it? Or values in the server's conf.d?\n\nThe stackoverflow looks as if we are trying to recursively concat a list onto itself, I'm not sure how that's even possible in our own code. Do you have an idea with what version that behavior was first introduced? (I'm guessing 2019.8.9?) Do you know if they're setting any custom metric id filtering/exporting, custom alt-names on certificates, or are using Bolt projects from PE? (these are places in our code where we concat user submitted values)", "created": "2022-03-25T12:32:00.000000"}], "components": [], "created": "2022-03-25T07:04:00.000000", "creator": "557058:7e524d50-cfa9-44c1-9d72-f30ab841ddf9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@391aadd5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fe4e:"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "47106,47593"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Mar/22"}], "description": "This customer has reported unplanned `pe-puppetserver` service restarts in different ocassions but in the past there seems to be a correlation between the `pe-puppetserver` service restart and a \"pressumed\" puppet.conf re-parsing (ZD ticket 47106) => customer has processes that could simulate a touch on the file which seems to be enough to trigger a re-parse of the file\n{code:java}2022-01-23T02:23:53+0000 gbl20124319 puppet-agent[1521]: Config file /etc/puppetlabs/puppet/puppet.conf changed; triggering re-parse of all config files.{code}\n{{}}\u00a0\n{code:java}2022-01-23T02:23:53.800Z ERROR [clojure-agent-send-off-pool-1] [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.StackOverflowError: null\nat clojure.core$concat$fn__5493.invoke(core.clj:725)\nat clojure.lang.LazySeq.sval(LazySeq.java:42)\nat clojure.lang.LazySeq.seq(LazySeq.java:51)}}{code}\n{{However, in this latest instance, the `puppet.conf` file gets re-parsed at a later moment (e.g. 10 secs after approx) as per below.}}\n\n{{}}\n{code:java}2022-03-06T02:34:33+0000 gbl20124319 puppet-agent[3634]: Config file /etc/puppetlabs/puppet/puppet.conf changed; triggering re-parse of all config files.{code}\n\u00a0\n{code:java}2022-03-06T02:34:23.725Z ERROR [clojure-agent-send-off-pool-0] [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.StackOverflowError: null\nat clojure.core$concat$fn__5493.invoke(core.clj:725)\nat clojure.lang.LazySeq.sval(LazySeq.java:42)\nat clojure.lang.LazySeq.seq(LazySeq.java:51)\nat clojure.lang.RT.seq(RT.java:535)\nat clojure.core$seq__5402.invokeStatic(core.clj:137)\nat clojure.core$concat$fn__5493.invoke(core.clj:725)\nat clojure.lang.LazySeq.sval(LazySeq.java:42)\nat clojure.lang.LazySeq.seq(LazySeq.java:51)\nat clojure.lang.RT.seq(RT.java:535)\nat clojure.core$seq__5402.invokeStatic(core.clj:137)\nat clojure.core$concat$fn__5493.invoke(core.clj:725)\nat clojure.lang.LazySeq.sval(LazySeq.java:42)\nat clojure.lang.LazySeq.seq(LazySeq.java:51)\nat clojure.lang.RT.seq(RT.java:535)\nat clojure.core$seq__5402.invokeStatic(core.clj:137)\nat clojure.core$concat$fn__5493.invoke(core.clj:725)\nat clojure.lang.LazySeq.sval(LazySeq.java:42)\nat clojure.lang.LazySeq.seq(LazySeq.java:51)\nat clojure.lang.RT.seq(RT.java:535){code}\nThe above cycle of messages below get repeated and repeated as above\n{code:java}at clojure.core$seq__5402.invokeStatic(core.clj:137)\nat clojure.core$concat$fn__5493.invoke(core.clj:725)\nat clojure.lang.LazySeq.sval(LazySeq.java:42)\nat clojure.lang.LazySeq.seq(LazySeq.java:51)\nat clojure.lang.RT.seq(RT.java:535){code}\nuntil interrupted by the below without any additional data\n\n\u00a0\n{code:java}\n2022-03-06T02:34:23.740Z INFO [main] [p.t.internal] Beginning shutdown sequence\n2022-03-06T02:34:23.757Z INFO [async-dispatch-6] [p.c.services] Shutting down code-manager...\n2022-03-06T02:34:23.758Z INFO [async-dispatch-6] [p.c.shell-workers] Attempting to shut down deploy-pool workers...\n2022-03-06T02:34:23.759Z INFO [async-dispatch-6] [p.c.shell-workers] deploy-pool workers sucessfully shut down.\n2022-03-06T02:34:23.759Z INFO [async-dispatch-6] [p.c.services] code-manager shut down.\n{code}\n\u00a0\nThe previous `clojure-agent-send-off-pool-0` ref to the error is as per below:\n\n\u00a0\n{code:java}\n2022-03-06T02:34:19.993Z INFO [clojure-agent-send-off-pool-0] [p.e.s.f.file-sync-storage-core] Automatically committing due to changes in staging-dir '/etc/puppetlabs/puppet/ssl/ca'\n{code}\n\u00a0\nIs there any additional info that can be extracted from the above `StackOverflowError`/ situation? or could we still consider the last `re-parsing` / service restart as part of the same situation even though, in the last ocassion, the re-parsing gets logged 10 secs after?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15449", "fixedVersions": [], "id": "15449", "issueType": "Bug", "key": "SERVER-3180", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6220db9494f7e20069fe964a", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "`pe-pupperserver` has StackOverflowError; possibly related to forcing reparse of puppet.conf via touch command", "timeSpent": "PT0S", "updated": "2022-03-28T12:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2022-03-09T08:11:00.000000", "creator": "61af86343618cd006f430854", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64d69bbc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-10"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Configurable Timeouts"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "blue"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0f1vq:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19971536005_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16647", "fixedVersions": [], "id": "16647", "issueType": "Epic", "key": "SERVER-3178", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61af86343618cd006f430854", "resolution": "Won't Do", "resolutionDate": "2022-10-26T12:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server configurable timeouts", "timeSpent": "PT0S", "updated": "2022-10-26T12:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Hey [~accountid:618d77713ae523006917eb86], thanks for opening this! Did this issue just start, or has it been happening for a while? We'd love to know which versions worked, if any.", "created": "2022-03-03T11:22:00.000000"}, {"author": "618d77713ae523006917eb86", "body": "Hi Molly.\n\nThe issue just started for us but we only just started running r10k from cron so I don't know if it affects older puppetserver versions or not.\u00a0\u00a0\n\nSorry to not be much help.", "created": "2022-03-10T10:58:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "If you stop flushing the environments, does it still happen? I know this isn't a valid workflow, but I'm trying to get a sense of whether it's the r10k deploy or the env flush that is causing the problem...", "created": "2022-03-11T15:38:00.000000"}, {"author": "618d77713ae523006917eb86", "body": "Hello.\u00a0 \u00a0 The problem seems to stop (it's a race condition so we don't always hit it) when we don't flush the cache, but then we end up with stale code in our manifests.\u00a0\u00a0\n\nThe server doesn't seem to be waiting for the cache to be complete before serving partial data during pluginsync (and more rarely but does happen) during catalog compilation.\u00a0 As I mentioned above it's often the last classes alphabetically (vswitch) that are missing.\n\n\u00a0\n\n\u00a0", "created": "2022-03-14T10:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks, that's helpful. Fwiw in Puppet Enterprise we have mechanisms in place that go to some lengths to avoid situations like this (including locking compiles like you describe in one mode). However, I still would have expected the envs to reload correctly if flushed while doing pluginsync like you describe. After all, the plugins themselves should be correctly present on disk.\n\nI'm not sure when we'll have a chance to dig into this. I am somewhat concerned that this might also impact the lockless mode in PE, however: I think we may have seen something like that a while back, but not sure it's shown up in a while.", "created": "2022-04-12T10:36:00.000000"}], "components": [], "created": "2022-03-03T09:28:00.000000", "creator": "618d77713ae523006917eb86", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d7dd37f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8ri24i"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/22"}], "description": "*Puppet Version: 7.14.0*\n*Puppet Server Version: 7.6.0*\n*OS Name/Version: AlmaLinux 8*\n\nWe update our environments every 5 minutes using r10k and have a postrun script that runs at the end to flush the cache to ensure that any updates are loaded.\u00a0 When this cache flush happens, any agent that is compiling a catalog at that moment missing parts of the catalog.\u00a0 This is mostly seen in pluginsync with a bunch of files being removed but also ocasionally results in entire modules dissapearing and catalog compilatoin failing.\u00a0 Generally it's modules at the end of the alphabet (eg: vswitch)\n\n\nDescribe steps to reprodue: Flush the environment cache and run puppet agent -t at the same time.\n\n*Desired Behavior:\u00a0 The catalog should pause while the cache is being refreshed.*\n\n*Actual Behavior: Partial data is served to the aent.*\n\n[QA] aruwsauth:~ [reboot!] # puppet agent -t \nInfo: Using environment 'testing' \nInfo: Retrieving pluginfacts \nNotice: /File[/opt/puppetlabs/puppet/cache/facts.d/os_immutable.txt]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/facts.d/os_service_default.txt]/ensure: removed \nInfo: Retrieving plugin \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/os_package_type.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/os_service_default.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/os_workers.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/ovs.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/ovs_uuid.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/pci_address.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/inet6_prefix.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/is_service_default.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/normalize_ip_for_uri.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/os_database_connection.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/os_transport_url.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/range_to_mask.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack_config]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/policy_rcd]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_bridge]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_config]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_port]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_ssl]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/openstack_config.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/policy_rcd.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/vs_bridge.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/vs_config.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/vs_port.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/vs_ssl.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/util/openstackconfig]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/util/openstackconfig.rb]/ensure: removed \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppetx/redhat]/ensure: removed \nInfo: Loading facts \n^CNotice: Caught INT; exiting \n^[[A[QA] aruwsauth:~ [reboot!] # puppet agent -t \nInfo: Using environment 'testing' \nInfo: Retrieving pluginfacts \nNotice: /File[/opt/puppetlabs/puppet/cache/facts.d/os_immutable.txt]/ensure: defined content as '\\{sha256}ec1edfda7078b67696035687c4afea48e16d882d2989b601caa4e8eb828fea18' \nNotice: /File[/opt/puppetlabs/puppet/cache/facts.d/os_service_default.txt]/ensure: defined content as '\\{sha256}8e2d7ac8318a71a307b4431c0e156c4e5a99a94385b8c32429307a9ccc4f6ac5' \nInfo: Retrieving plugin \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/os_package_type.rb]/ensure: defined content as '\\{sha256}57de2388a04d3aeeb74dc068f7476e37ebbe4d23325bba3bc11aeed93891e75e' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/os_service_default.rb]/ensure: defined content as '\\{sha256}1d6742092402043da3e64931690ab7622204f77669f0703974ac9d26d3012926' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/os_workers.rb]/ensure: defined content as '\\{sha256}af4d2c4d8553c5d321528faf3a50e692528377d026966e49172f0101e98e2560' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/ovs.rb]/ensure: defined content as '\\{sha256}e39666748426c6034eef93cdc5c82c5917f7cd7c0bf6f631e11f3405352004dd' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/ovs_uuid.rb]/ensure: defined content as '\\{sha256}848dbbd3c8cf32f8e8caaa0e503fbfbd52750767b0877823c6bbd7d377991a9d' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/pci_address.rb]/ensure: defined content as '\\{sha256}f98046d25ca95d26261dbe7eb53e6b62be5050822ac560b15b1c03b2ada7bbda' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/inet6_prefix.rb]/ensure: defined content as '\\{sha256}23207107c486224e0d2bd7e3e96818b059f04f0aaed2056cd73c68104796cf4f' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/is_service_default.rb]/ensure: defined content as '\\{sha256}e91f816ee6956a0cd5ff38cf069b49a503fcde2cb5eff22e1e18ee3c35026e85' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/normalize_ip_for_uri.rb]/ensure: defined content as '\\{sha256}73e7a7cd424fa376989b7576f367639b0ea6689d455d88a474eece302afee11a' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/os_database_connection.rb]/ensure: defined content as '\\{sha256}2b5e683676b3d3e682005c3eb4b4b501b8a346bd17696da0a2b624d26e8988f3' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/os_transport_url.rb]/ensure: defined content as '\\{sha256}2aca15321768c336f081fe22b51927adf5988c51bfe9c3ba2cd3ae1230ecc908' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/range_to_mask.rb]/ensure: defined content as '\\{sha256}59ce31707eff47ef886c31ca625fd47da9320adc4ff6d2c78dec8ffd571090f0' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack]/ensure: created \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack.rb]/ensure: defined content as '\\{sha256}101ce9735507787794a2fc42743786e81d1405ccb5de229ce7e46b59333e070c' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack/auth.rb]/ensure: defined content as '\\{sha256}3d82422674903d4350554c8f4ed89a59f9fdfcbce8e03633f8f0436e5408c142' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack/credentials.rb]/ensure: defined content as '\\{sha256}debe61f75bd90d8c068da2cb69d0e19ddba7b6623648247bb30f33cff1877fb6' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack_config]/ensure: created \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack_config/ini_setting.rb]/ensure: defined content as '\\{sha256}1180c0b6d41b5c5b3441f010a57e8edd9b084d8e3ae38264252a99bbc0e7aba8' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/openstack_config/ruby.rb]/ensure: defined content as '\\{sha256}1bef8d9580c2f00e8f0c23ef13c2edec539a0247e605b9593445ce6302cf73c0' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/policy_rcd]/ensure: created \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/policy_rcd/policy_rcd.rb]/ensure: defined content as '\\{sha256}74284747dcef7e76f77d94fda2a7916a7db95143b788adfa01c312ffcbf900bf' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_bridge]/ensure: created \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_bridge/ovs.rb]/ensure: defined content as '\\{sha256}b54ed5de59af2d054c0f110ccd21e5142d72ed6b07eb8274f8786db6aa60426e' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_config]/ensure: created \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_config/ovs.rb]/ensure: defined content as '\\{sha256}f12da88d1ea337382ec64f144eb6d23d85adc1585066ad0341376a45dd1e6f73' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_port]/ensure: created \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_port/ovs.rb]/ensure: defined content as '\\{sha256}8a0cab0f606e553afcf13bab13a417ac60af60be037c652c00023778dd824643' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_port/ovs_redhat.rb]/ensure: defined content as '\\{sha256}bc73305dcaa614838c148d0dc0a142feab6bbe640cee9a42828d4601c0177c43' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_ssl]/ensure: created \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/vs_ssl/ovs.rb]/ensure: defined content as '\\{sha256}ed46a14bd39631b92439f4bcd62a29df96e1397f91564138e9dbab22c6c0b32b' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/openstack_config.rb]/ensure: defined content as '\\{sha256}a998d1564c25139638c2f32f32e193caafe188f2f5a9a4383dc7c384e00ceb94' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/policy_rcd.rb]/ensure: defined content as '\\{sha256}515ff688d6e9e28358f4ebddad76814512e7b30b651439ba0fc9338c666764d0' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/vs_bridge.rb]/ensure: defined content as '\\{sha256}2836fe69626c9f48befa48d3dd1e3accb6fea06e2f97b7afd10ae61a2f19320f' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/vs_config.rb]/ensure: defined content as '\\{sha256}e6b699c39a5448926f47faffb3bbb2eb05bc5f6bc28de983c8aacc1a97572daf' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/vs_port.rb]/ensure: defined content as '\\{sha256}261132ffd43172ea84bbce6d6e93ccccab0b695dcfcf8f8e1b0765267f4948dd' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/vs_ssl.rb]/ensure: defined content as '\\{sha256}6cab166aafebb21ae39f4c6d220bcbb8de17c9877e760a31f2e79e93cd8c3ead' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/util/openstackconfig]/ensure: created \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/util/openstackconfig.rb]/ensure: defined content as '\\{sha256}3c4df67269ad2ccb941326b085b730a96aac20252660b0a1e9e7be112ebcd978' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/util/openstackconfig/section.rb]/ensure: defined content as '\\{sha256}cffde1007c0aeef4dc5fa349306dc69d8eb04a639e9d62a774cafc2f7737b4d4' \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppetx/redhat]/ensure: created \nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppetx/redhat/ifcfg.rb]/ensure: defined content as '\\{sha256}f726b365f157bb7a72e82e8a89afbfd98b6681aff42f9cbd6d50b350827fe4a5' \nInfo: Loading facts", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16113", "fixedVersions": [], "id": "16113", "issueType": "Bug", "key": "SERVER-3177", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "618d77713ae523006917eb86", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Flushing the Environment cache causes plugins to be deleted on agents", "timeSpent": "PT0S", "updated": "2022-04-12T10:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Hey [~accountid:61b085826d002b006b41ed33]! Feel free to open a PR and we'll take a look! Thanks!", "created": "2022-02-24T11:20:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Our internal EZBake tooling doesn't support producing ARM artifacts on Linux platforms, so unfortunately this won't be possible right now.\n\nSee https://github.com/puppetlabs/puppetserver/pull/2617 \n\n", "created": "2022-03-31T11:17:00.000000"}], "components": [], "created": "2022-02-23T05:36:00.000000", "creator": "61b085826d002b006b41ed33", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d04d889"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8ri240i"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Feb/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3127296523_*|*_6_*:*_1_*:*_0"}], "description": "Hi Team,\n\nI am trying to use the\u00a0*puppetlabs/puppetserver* image on arm64 platform, but it seems it is not available for arm64.\n\nI have successfully built the image for arm64 platform, using the command {color:#172b4d}{color:#0747a6}_docker build -t image_name_ {color}_._{color}\n\nI have modified the\u00a0{*}Dockerfile{*},\u00a0*Makefile*\u00a0and\u00a0*.github/workflows/docker.yml*\u00a0files to build and push the docker image of puppetlabs/puppetserver for both the platforms using buildx.\n\n*Commit Link* \u2013\u00a0[https://github.com/odidev/puppetserver/commit/3e54d73db4505e96bf0619930e63ab5c26451912]\n\n*Docker Hub Link*\u00a0-[https://hub.docker.com/repository/docker/odidev/puppetserver/tags?page=1&ordering=last_updated]\n\nDo you have any plans on releasing arm64 images?\n\nIf interested, I will raise a PR.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16646", "fixedVersions": [], "id": "16646", "issueType": "New Feature", "key": "SERVER-3176", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61b085826d002b006b41ed33", "resolution": "Won't Do", "resolutionDate": "2022-03-31T11:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Require image for ARM64 ", "timeSpent": "PT0S", "updated": "2022-03-31T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2022-02-22T17:16:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d5fa9ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11460"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0f1ut:i"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_152150707_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2417150360"}], "description": "(Initial planned release date: 2022-03-15)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.6.1\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-03-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.15.0 Release - 2022-03-15", "estimate": "PT0S", "externalId": "14848", "fixedVersions": [], "id": "14848", "issueType": "Task", "key": "SERVER-3175", "labels": ["release"], "originalEstimate": "PT0S", "parent": "26589", "parentSummary": "Puppet Platform 7.15.0 Release - 2022-03-15", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-03-24T11:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.15.0)", "timeSpent": "PT0S", "updated": "2022-03-24T11:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "There is another Platform release planned before the next PE release, so this can be closed.", "created": "2022-02-24T11:36:00.000000"}], "components": [], "created": "2022-02-22T17:16:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37c5f991"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11460"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0em1y:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Feb/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_152150063_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_300506"}], "description": "(Initial planned release date: 2022-03-15)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.15.0 Release - 2022-03-15", "estimate": "PT0S", "externalId": "17473", "fixedVersions": [], "id": "17473", "issueType": "Task", "key": "SERVER-3174", "labels": ["release"], "originalEstimate": "PT0S", "parent": "26589", "parentSummary": "Puppet Platform 7.15.0 Release - 2022-03-15", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Won't Do", "resolutionDate": "2022-02-24T11:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.15.0)", "timeSpent": "PT0S", "updated": "2022-02-24T11:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-02-22T17:16:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34a0323d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11460"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0f1ut:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_152146275_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2335280843"}], "description": "(Initial planned release date: 2022-03-15)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.6.1\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.6.1\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-03-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.15.0 Release - 2022-03-15", "estimate": "PT0S", "externalId": "17219", "fixedVersions": [], "id": "17219", "issueType": "Task", "key": "SERVER-3173", "labels": ["release"], "originalEstimate": "PT0S", "parent": "26589", "parentSummary": "Puppet Platform 7.15.0 Release - 2022-03-15", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-03-23T13:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.15.0)", "timeSpent": "PT0S", "updated": "2022-03-23T13:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2022-02-22T17:16:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f4b74b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11460"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0f1us:i"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_152133953_*|*_3_*:*_2_*:*_125404332_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1119537082_*|*_10005_*:*_1_*:*_501003194"}], "description": "(Initial planned release date: 2022-03-15)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.6.1 is built and ready for testing.\n", "duedate": "2022-03-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.15.0 Release - 2022-03-15", "estimate": "PT0S", "externalId": "16893", "fixedVersions": [], "id": "16893", "issueType": "Task", "key": "SERVER-3172", "labels": ["release"], "originalEstimate": "PT0S", "parent": "26589", "parentSummary": "Puppet Platform 7.15.0 Release - 2022-03-15", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-03-16T17:30:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.15.0)", "timeSpent": "PT0S", "updated": "2022-03-16T17:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2022-02-22T15:48:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ffbae6e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server Docker Improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0elq6:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16231486589_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16299", "fixedVersions": [], "id": "16299", "issueType": "Epic", "key": "SERVER-3171", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-08-29T13:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Docker Improvements", "timeSpent": "PT0S", "updated": "2022-10-25T14:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "attachments": [], "comments": [{"author": "605bbb3d2f7d9000709ed091", "body": "[~accountid:61952c64b0b630006a62649d] [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] I'm putting this on pause because we need some communication to go out in advance of this.\u00a0", "created": "2022-02-17T11:11:00.000000"}, {"author": "605bbb3d2f7d9000709ed091", "body": "Pausing this until we get some ducks in a row on communications.\u00a0", "created": "2022-02-17T11:12:00.000000"}, {"author": "605bbb3d2f7d9000709ed091", "body": "Ok - reopened this ticket. We would like to include this update in the April release 7.16.0 please. [~accountid:61952c64b0b630006a62649d] [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0", "created": "2022-03-10T08:55:00.000000"}], "components": [], "created": "2022-02-16T11:21:00.000000", "creator": "605bbb3d2f7d9000709ed091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Telemetry is Opt-out"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27ead171"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8rip"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Metrics will now be collected with Dropsonde by default. To opt out of metrics collection, configure dropsonde: { enabled: false } in puppetserver.conf. By default, Dropsonde collects metrics when the service is started and once a week thereafter. "}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_411026551_*|*_1_*:*_2_*:*_1752604304_*|*_10007_*:*_1_*:*_2925471_*|*_3_*:*_1_*:*_946758_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_1806133297_*|*_10006_*:*_1_*:*_83980355_*|*_10005_*:*_1_*:*_104080"}], "description": "We want to switch dropsonde telemetry from opt-in to opt-out effective with the April release 7.16.0.\n\nUpdate the default in puppetserver here [https://github.com/puppetlabs/puppetserver/blob/aa1f9ac4f1a64bb52fe603da558693229de150a9/src/clj/puppetlabs/services/analytics/analytics_service.clj#L34] and make sure the config file has the right info about the default.", "duedate": "2022-03-01T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15448", "fixedVersions": ["SERVER 7.7.0"], "id": "15448", "issueType": "Task", "key": "SERVER-3170", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "High (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "605bbb3d2f7d9000709ed091", "resolution": "Fixed", "resolutionDate": "2022-04-04T11:30:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change Dropsonde telemetry to Opt-out", "timeSpent": "PT0S", "updated": "2022-04-04T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "body": "another observation we made:\n\nwhen checking \"netstat -tn|grep 8140 | grep EST\" usually we see between 10 and 30\u00a0 established connections, that usually have a Recv and Send queue with 0 bytes in them.\n\nwhen a puppetserver starts showing issues, there will be more then 100 connections in establish state, where a lot of the connections have something in there recv queue.\n\nthe puppetserver will not work on those connections, and the recv queue is not getting worked on, it seems like, that at some point in time, the client gives up, and closes the connections.\n\n\u00a0\n\nthis might be the reason for the \"Early EOF\" messages in the puppetservers log. but the question is, why is puppetserver not serving those connections.", "created": "2022-02-14T09:52:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83] Thanks for reporting this! \n\n64 jrubies sounds like a lot - could you try reducing that to 24?\n\nWe've also seen {{Early EOF}} errors related to firewall issues - is that something you could check on?\n\nAnd then lastly, you could try putting your GC logs into https://gceasy.io/ to identify memory issues, particularly regarding your code cache, or metaspace, which is similar.", "created": "2022-02-17T11:18:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83] Let us know if you've tried any of the above suggestions and what the outcomes were. If we don't hear from you, we're going to close this ticket.", "created": "2022-03-03T11:25:00.000000"}, {"author": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "body": "adding \"-XX:ReservedCodeCacheSize=1024m\" to the java opts solved the issue for me.\n\n\u00a0\n\nit is interesting, that this option is mentioned in the puppetserver 5 documentation, but has been removed in puppetserver 6 and 7 documentation.\n\n\u00a0\n\nmaybe re add this setting to the documentation?", "created": "2022-03-04T02:38:00.000000"}], "components": [], "created": "2022-02-14T09:35:00.000000", "creator": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48b904e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0lil"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/22"}], "description": "our puppetserver partly stop serving agent requests, after running for a while.\n\n\u00a0\n\non the agent side, you will see timeouts, when talking to puppetserver. usually we will see a timeout of 120 seconds.\n\n\u00a0\n\nthese errors happen, after puppet server is running for for a while, usually we can see this with puppetserver uptime >1h, but we have also seen this happen after several minutes.\n\n\u00a0\n\nrestarting our puppetserver instances will solve this for a while, but the issues will occur again after a few hours.\n\n\u00a0\n\nwe are using dns service discovery, we have increased the ulimit nofile to 102400, and we are have 64 jruby instances configured currently.\n\n\u00a0\n\non the puppetserver side, you will see error messages like this:\n\n2022-02-14T02:26:24.401+01:00 ERROR [qtp1474895435-10368] [p.r.core] Internal Server Error: org.eclipse.jetty.io.EofException: Early EOF\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.HttpInput$3.getError(HttpInput.java:1207)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.HttpInput$3.noContent(HttpInput.java:1195)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.HttpInput.read(HttpInput.java:333)\n\u00a0 \u00a0 \u00a0 \u00a0 at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)\n\u00a0 \u00a0 \u00a0 \u00a0 at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)\n\u00a0 \u00a0 \u00a0 \u00a0 at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)\n\u00a0 \u00a0 \u00a0 \u00a0 at java.io.InputStreamReader.read(InputStreamReader.java:184)\n\u00a0 \u00a0 \u00a0 \u00a0 at java.io.BufferedReader.fill(BufferedReader.java:161)\n\u00a0 \u00a0 \u00a0 \u00a0 at java.io.BufferedReader.read1(BufferedReader.java:212)\n\u00a0 \u00a0 \u00a0 \u00a0 at java.io.BufferedReader.read(BufferedReader.java:286)\n\u00a0 \u00a0 \u00a0 \u00a0 at java.io.Reader.read(Reader.java:140)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.java.io$fn__11538.invokeStatic(io.clj:337)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.java.io$fn__11538.invoke(io.clj:334)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.lang.MultiFn.invoke(MultiFn.java:239)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.java.io$copy.invokeStatic(io.clj:406)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.java.io$copy.doInvoke(io.clj:391)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.lang.RestFn.invoke(RestFn.java:425)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.core$slurp.invokeStatic(core.clj:6951)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.core$slurp.doInvoke(core.clj:6942)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.lang.RestFn.invoke(RestFn.java:439)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.request_handler.request_handler_core$body_for_jruby.invokeStatic(request_handler_core.clj:78)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.request_handler.request_handler_core$body_for_jruby.invoke(request_handler_core.clj:54)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.request_handler.request_handler_core$wrap_params_for_jruby.invokeStatic(request_handler_core.clj:86)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.request_handler.request_handler_core$wrap_params_for_jruby.invoke(request_handler_core.clj:81)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.request_handler.request_handler_core$jruby_request_handler$fn__41876.invoke(request_handler_core.clj:269)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.puppetserver.jruby_request$wrap_with_jruby_instance$fn__36839.invoke(jruby_request.clj:49)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.puppetserver.jruby_request$wrap_with_error_handling$fn__36835.invoke(jruby_request.clj:34)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.request_handler.request_handler_service$reify__41901$service_fnk__5102__auto___positional$reify__41916.handle_request(request_handler_service.clj:43)\n\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.protocols.request_handler$fn__41814$G__41810__41817.invoke(request_handler.clj:3)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.protocols.request_handler$fn__41814$G__41809__41821.invoke(request_handler.clj:3)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.core$partial$fn__5839.invoke(core.clj:2624)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.trapperkeeper.authorization.ring_middleware$fn__26286$wrap_authorization_check__26291$fn__26292$fn__26293.invoke(ring_middleware.clj:290)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.ring_middleware.core$fn__23720$wrap_bad_request__23729$fn__23732$fn__23738.invoke(core.clj:187)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.ring_middleware.core$fn__23818$wrap_uncaught_errors__23827$fn__23830$fn__23835.invoke(core.clj:233)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.ring_middleware.core$fn__23388$wrap_request_logging__23393$fn__23394$fn__23396.invoke(core.clj:47)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.i18n.core$locale_negotiator$fn__4494.invoke(core.clj:361)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.ring_middleware.core$fn__23417$wrap_response_logging__23422$fn__23423$fn__23424.invoke(core.clj:53)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__37088.invoke(ringutils.clj:83)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.master.master_core$fn__43468$v3_ruby_routes__43473$fn__43474$fn__43495.invoke(master_core.clj:1068)\n\u00a0 \u00a0 \u00a0 \u00a0 at bidi.ring$fn__17717.invokeStatic(ring.cljc:25)\n\u00a0 \u00a0 \u00a0 \u00a0 at bidi.ring$fn__17717.invoke(ring.cljc:21)\n\u00a0 \u00a0 \u00a0 \u00a0 at bidi.ring$fn__17702$G__17697__17711.invoke(ring.cljc:16)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.comidi$make_handler$fn__19633.invoke(comidi.clj:245)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.metrics.http$fn__42168$wrap_with_request_metrics__42173$fn__42177$fn__42179$fn__42180$fn__42181.invoke(http.clj:152)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\u00a0 \u00a0 \u00a0 \u00a0 at com.codahale.metrics.Timer.time(Timer.java:101)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.metrics.http$fn__42168$wrap_with_request_metrics__42173$fn__42177$fn__42179$fn__42180.invoke(http.clj:152)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\u00a0 \u00a0 \u00a0 \u00a0 at com.codahale.metrics.Timer.time(Timer.java:101)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.metrics.http$fn__42168$wrap_with_request_metrics__42173$fn__42177$fn__42179.invoke(http.clj:148)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.comidi$fn__19698$wrap_with_route_metadata__19703$fn__19704$fn__19706.invoke(comidi.clj:332)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__29673.invoke(jetty9_core.clj:455)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n\u00a0 \u00a0 \u00a0 \u00a0 at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)\n\u00a0 \u00a0 \u00a0 \u00a0 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\u00a0 \u00a0 \u00a0 \u00a0 at java.lang.reflect.Method.invoke(Method.java:498)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)\n\u00a0 \u00a0 \u00a0 \u00a0 at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$fn__29243$normalize_uri_handler__29248$fn__29249$fn__29250.invoke(normalized_uri_helpers.clj:74)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:190)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:713)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:54)\n\u00a0 \u00a0 \u00a0 \u00a0 at com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:179)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.Server.handle(Server.java:516)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\n\u00a0 \u00a0 \u00a0 \u00a0 at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\n\u00a0 \u00a0 \u00a0 \u00a0 at java.lang.Thread.run(Thread.java:748)\n\n\nanother error message that we see regularly is this:\n\n2022-02-14T15:10:47.118+01:00 ERROR [qtp915921934-376] [p.r.core] Internal Server Error: java.lang.IllegalStateException: Unable to borrow JRubyInstance from pool\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$fn__34141$borrow_from_pool_BANG__STAR___34146$fn__34147.invoke(jruby_internal.clj:313)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$fn__34141$borrow_from_pool_BANG__STAR___34146.invoke(jruby_internal.clj:300)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$fn__34188$borrow_from_pool_with_timeout__34193$fn__34194.invoke(jruby_internal.clj:348)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$fn__34188$borrow_from_pool_with_timeout__34193.invoke(jruby_internal.clj:337)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.jruby_pool_manager.impl.instance_pool$fn__34952.invokeStatic(instance_pool.clj:48)\n\u00a0 \u00a0 \u00a0 \u00a0 at puppetlabs.services.jruby_pool_manager.impl.instance_pool$fn__34952.invoke(instance_pool.clj:10)\n\u00a0 \u00a0 \u00a0 \u00a0 at", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15447", "fixedVersions": [], "id": "15447", "issueType": "Bug", "key": "SERVER-3169", "labels": ["docs"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver hangs", "timeSpent": "PT0S", "updated": "2022-06-02T10:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "Being tracked by an internal PE ticket as specific work for the Jetty upgrade.", "created": "2022-11-28T10:26:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We _should_ be able to do the FOSS facing work in a backwards compatible manner so we are also removing this from Puppet Server 8 epic.", "created": "2022-12-09T13:38:00.000000"}], "components": [], "created": "2022-02-10T14:36:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@69a64f0a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:6"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Nov/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_69465426_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_25057904878"}], "description": "We are currently on Jetty 9.4. There are 10.x and 11.x streams as well, we should maybe see if it makes sense to update to one of the later streams (preferably _the_ latest) for Puppet 8.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14847", "fixedVersions": [], "id": "14847", "issueType": "Task", "key": "SERVER-3168", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-11-28T10:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "[SPIKE] upgrade Jetty to latest", "timeSpent": "PT0S", "updated": "2022-12-09T13:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Prior to doing this work, Puppet, Facter, and Bolt should be successfully running their unit tests against Ruby 3.2.", "created": "2023-01-13T11:21:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I left extensive comments as I worked through & tested this ticket in the PR here [https://github.com/puppetlabs/puppetserver/pull/2687]\n\ntl", "created": "2023-02-08T14:43:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The fix for JRuby bug was merged and they anticipate releasing it in 2-8 weeks from when it was merged. Just before it merged they released 9.4.1.0 so I've updated the PR with that. I think we should merge it and the PE folks can start integrating JRuby 9.4/Ruby 3 into the PE as soon as they'd like. If there's an issue and we have to release Puppet Server 8 prior to JRuby releasing the fix to we will have to revert.", "created": "2023-02-13T17:56:00.000000"}], "components": [], "created": "2022-02-10T14:31:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@415b8c96"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3165"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0lif"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The vendored JRuby has been upgraded to 9.4.x which brings with it Ruby 3.x compatibility."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jan/23"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_76557526_*|*_1_*:*_1_*:*_146732_*|*_10007_*:*_2_*:*_152833217_*|*_3_*:*_1_*:*_1572657494_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_443234990_*|*_10006_*:*_1_*:*_688443124_*|*_10005_*:*_1_*:*_29021917572"}], "description": "Update to the 9.4 stream of jruby [https://www.jruby.org/2022/11/23/jruby-9-4-0-0]\n\nWe should update jruby-deps as part of this, but _not_ update jruby-utils or at least clj-parent so that all of PE doesn't have to deal with this upgrade as we're working on it in FOSS. Puppet Server should pin jruby-deps specifically until we have this fulling integrated into all downstream clj-parent projects (PE).\n\n\u00a0\n\nPotential sub-tasks to break out:\n\n* We may need to update some Ruby code that is shipped in Puppet Server's \"src/ruby\", we may use removed Ruby constructs like {{File.exists?}} see [compatibilty issues|https://github.com/ruby/ruby/blob/v3_2_0_preview3/NEWS.md#compatibility-issues] and [release notes|https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/].\n\n* Run performance benchmarks (particularly full_catalog) from the Puppet repo's benchmark rake tasks using the new JRuby. Update performance tuning recommendations as necessary, these may be important to the PE uptake and if major changes are needed should be noted in those tickets.", "epicLinkSummary": "Puppet Server 8", "estimate": "PT0S", "externalId": "17471", "fixedVersions": ["SERVER 8.0.0"], "id": "17471", "issueType": "Story", "key": "SERVER-3167", "labels": [], "originalEstimate": "PT0S", "parent": "16890", "parentSummary": "Puppet Server 8", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2023-02-15T11:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade JRuby to 9.4", "timeSpent": "PT0S", "updated": "2023-02-15T11:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Updating this file https://github.com/puppetlabs/puppetserver/blob/6.x/resources/ext/build-scripts/dropsonde-gem.txt to point to the new version should do the trick.", "created": "2022-02-10T14:33:00.000000"}], "components": [], "created": "2022-02-10T14:31:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22281fd2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0ec8e:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_430568377_*|*_1_*:*_1_*:*_112000_*|*_10007_*:*_1_*:*_3564385_*|*_3_*:*_1_*:*_377334_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_81004917_*|*_10005_*:*_1_*:*_509006470"}], "description": "This includes the new stable url updates.puppet.com\n\nhttps://rubygems.org/gems/dropsonde/versions/0.0.7", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17218", "fixedVersions": ["SERVER 6.19.0", "SERVER 7.6.1"], "id": "17218", "issueType": "Improvement", "key": "SERVER-3166", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "resolution": "Fixed", "resolutionDate": "2022-02-22T11:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dropsonde has been updated to v0.0.7", "timeSpent": "PT0S", "updated": "2022-02-22T11:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623e7689562ab90069f9ec45", "body": "What is the issue this is dupe'd against?", "created": "2022-11-02T19:52:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "[~accountid:623e7689562ab90069f9ec45] the epic itself is being tracked internally as part of a larger overall effort.  The individual tickets are being moved or replaced within that internal work.  Is there something in particular you are interested in?", "created": "2022-11-28T10:28:00.000000"}, {"author": "623e7689562ab90069f9ec45", "body": "[~accountid:557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8] I'm an OSP user.\u00a0 I'm interested in seeing how 8 is progressing and how imminent it is because that helps me plan when we will need to devote time to major version upgrades.\u00a0 I don't have a reference point in terms of an account rep or road map, and previous major releases have been trackable publicly.\u00a0 Since this isn't visible, it's causing a blind spot in our 2023 planning, and the beginnings of \"well, what if this is the early sign of discontinuing OSP?\" planning.", "created": "2022-11-28T14:00:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "[~accountid:623e7689562ab90069f9ec45] you might find the puppet dev mailing list helpful for upcoming plans.  There have been two recent announcements around Puppet 8 support going forward, and a projected release date of February.  https://groups.google.com/g/puppet-dev\n\nThe agent work is public as well:  https://puppet.atlassian.net/browse/PA-4664\n\n[~accountid:63d40628f6e1b543161789a7] might be able to give you some additional ideas of where to track what is going on with the projects.  In terms of Puppet 8 support and Puppetserver:  We will have `SERVER` tickets that are visible, so you can watch those.  High level planning is likely to be internal. \n\nIn terms of this ticket, it didn't represent the correct set of work and was more misleading than informative.\n\nI hope that helps.", "created": "2022-11-28T14:16:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've updated this ticket to _hopefully_ be more informative than misleading. Just want everyone to understand that Product may add or remove items willy nilly between now and when we ship Puppet Platform 8.\u00a0 ", "created": "2022-12-09T13:44:00.000000"}], "components": [], "created": "2022-02-10T14:30:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Skeletor"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7af9e239"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server 8"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3it:tur"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/22"}], "description": "Things under consideration for the next major version of Puppet Server.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16890", "fixedVersions": ["SERVER 8.0.0"], "id": "16890", "issueType": "Epic", "key": "SERVER-3165", "labels": ["23Q1"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Developing", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 8", "timeSpent": "PT0S", "updated": "2023-01-31T04:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623e79498d8b9c0068b9f45e", "body": "I figured this out by watching what the server was doing with inotifywatch - the problem was the private keys. \u00a0\n\nMy cert chain had been constructed with EC keys instead of RSA keys. \u00a0I converted the intermediate CA key to PKCS8 format unencrypted but the import process still didn't create a valid ca_key.pem or ca_pub.pem file. \u00a0It *somehow* still managed to sign the puppetserver's cert during the import but it didn't throw an error until I went to start working with the first new client.\n\nSo, can EC key support be added as a RFE for a future release ? \u00a0It also would have been super helpful if the underlying system had said what file it was referencing when it barfed.", "created": "2022-02-03T15:52:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Hi [~accountid:623e79498d8b9c0068b9f45e] the agent does support EC keys, but not in situations where the agent and server are running on the same host, since the server shares the agent's key and cert and puppetserver does not support EC keys (or the recently proposed Ed25519 keys, see PUP-11439). AFAIK we don't have plans on adding EC key support to puppetserver anytime soon. I'd recommend only using EC keys in cases where you're provisioning an \"agent-only\" host.\n\nI'm going to move this to the SERVER projects as that's where changes you're suggesting would need to happen.", "created": "2022-02-07T16:53:00.000000"}], "components": [], "created": "2022-02-03T08:46:00.000000", "creator": "623e79498d8b9c0068b9f45e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@217c2c73"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Master Config", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Monolithic"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e7li:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Feb/22"}], "description": "New Puppet master on RHEL8, FIPS enabled, with puppetserver-7.6.0-1.el8.noarch installed.\n\n- Create intermediate CA per docs\n\n- Setup a new intermediate CA configuration via 'puppetserver ca import'\n\n- Puppet server certificate is signed with intermediate CA\n\npuppetserver ca list command now outputs the following error:\n\nError:\n\n\u00a0 \u00a0 code: 500\n\n\u00a0 \u00a0 body: Internal Server Error: java.lang.IllegalArgumentException: The PEM stream must contain exactly one object\n\nNo certificates to list\n\npuppetserver.log has the following error:\n\n2022-02-03T15:44:49.756Z ERROR [qtp2104016619-45] [p.r.core] Internal Server Error: java.lang.IllegalArgumentExc\n\neption: The PEM stream must contain exactly one object\n\n\u00a0 \u00a0 \u00a0 \u00a0 at com.puppetlabs.ssl_utils.SSLUtils.pemToPublicKey(SSLUtils.java:785)\n\n\u00a0 \u00a0 \u00a0 \u00a0 at com.puppetlabs.ssl_utils.SSLUtils.pemToCaCert(SSLUtils.java:680)\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14845", "fixedVersions": [], "id": "14845", "issueType": "New Feature", "key": "SERVER-3164", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79498d8b9c0068b9f45e", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Intermediate CA configuration results in error with EC keys", "timeSpent": "PT0S", "updated": "2022-02-10T11:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2022-02-01T13:55:00.000000", "creator": "61af86343618cd006f430854", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3cde2bf6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e5aw:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_135439_*|*_6_*:*_1_*:*_0"}], "description": "The bolt-server [endpoint|https://github.com/puppetlabs/bolt/blob/e933adf9e7627e85917584b806d739dbe76f0253/lib/bolt_server/transport_app.rb#L830] that we currently use to process inventory takes a project as an input, finds the inventory file in the project, parses it, and returns the targets.\n\nFor projectless inventory, we need an endpoint that will process standalone inventory data, instead of trying to load it from a file in a project. \n\nNote that the current bolt processing functions assume that the inventory is [in YAML|https://github.com/puppetlabs/bolt/blob/e933adf9e7627e85917584b806d739dbe76f0253/lib/bolt/inventory.rb#L80], but we can wrap the inventory snippet in a JSON data structure to pass to this new endpoint.\n\nEnsure it:\n* handles the data format we want to use for submitting the inventory snippet.\n* validates the data being submitted and returns an intelligible error if it's bad.\n* returns the processed targets as JSON, just like the [existing endpoint|https://github.com/puppetlabs/orchestrator/blob/2ac458b28077b2271ae65d72a04bd3903c2a4e2f/src/puppetlabs/orchestrator/bolt/client.clj#L20-L82].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17469", "fixedVersions": [], "id": "17469", "issueType": "Task", "key": "SERVER-3162", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-02-01T13:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CLONE - Add endpoint to bolt-server that can process raw inventory file data", "timeSpent": "PT0S", "updated": "2022-02-01T13:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c0f04562ab90069f8b137", "created": "2022-02-01T01:32:00.000000", "name": "Puppet_Server_5_metrics.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10786"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2022-02-01T01:32:00.000000", "name": "Puppet_Server_7_metrics.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10859"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2022-04-08T01:15:00.000000", "name": "Puppet_Server_7_reports.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10635"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2022-03-04T01:14:00.000000", "name": "Screenshot 2022-03-04 at 09-13-33 Puppet Server - Grafana.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10634"}], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Hi [~accountid:623c0f04562ab90069f8b137], thanks for opening this!\n\nHave you tried Puppet Server 6? We're curious if this issue started happening from 5 to 6 or 6 to 7. ", "created": "2022-02-03T11:19:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "I have never tried Puppet Server 6.\n6 & 7 look kinda identical from the outside, e.g. same JRuby & Jetty versions, OpenJDK requirements etc.\nFor the record, the Puppet Server 5 is running with the default JRuby 1.7, not JRuby 9k.\n\nI will setup a Puppet Server 6, see how that behaves and report back.\n\nOne important detail I forgot to add: we have a loadbalancer in front of the Puppet Servers, which terminates the SSL connnection. The appropiate headers are added and {{allow-header-cert-info: true}} is configured on the servers.", "created": "2022-02-03T11:45:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Thanks for getting back to us, [~accountid:623c0f04562ab90069f8b137]! Please let us know when you've gotten Puppet Server 6 set up and how it behaves compared to 5 and 7.\n\nWe'd also be interested in seeing if enabling {{multithreaded: true}} in {{puppetserver.conf}} on your Puppet Server 7 install helps at all (see [docs|https://puppet.com/docs/puppet/7/server/config_file_puppetserver.html#settings] for details).", "created": "2022-02-10T11:34:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "I have now configured a Puppet Server 6.18.0. I did some tests in our development environment by moving single agent(s) to the development environment on the fly and let the agent run with --noop.\nThus the agent receives a catalog compiled by Puppet Server 6.\nOverall, Puppet Server 6 is as slow as Puppet Server 7.\n\nI get the impression, that {{file}} resources with the {{source}} attribute are very slow. The same impression has already been reported in SERVER-2673, but there it was sufficient to tune the JVM and puppetserver.conf to get a performing setup.\n\nI have added some numbers [here (GitHub Gist)|https://gist.github.com/stdietrich/9cd010d8038d999ed5679c69a4549dca].\nOverall {{file}} resources take up to ~10-12x more time to get served from Puppet Server 6. This can be even observed for a very simple catalog, which only inclues a single notify and file resource with source attribute. See this table for a brief summary:\n||Test||Puppet Server 5||Puppet Server 6||\n||production catalog|1.45s|15.55s|\n||production catalog, with static catalog|-|1.51s|\n||Single File|0.02s|0.25s|\n||Single File, file exists locally|0.06s|0.73s|\n||Single File, file exists localy, with static catalog|-|0.03s|\n\nThe same numbers can be observed with Puppet Server 7\nIt does not matter, if the Puppet Agent is 5, 6 or 7 or if I switch a Puppet Agent 5 from md5 to sha256 via {{{}--digest_algorithm sha256{}}}.\n\nThe only measurable difference happens, when I enable static catalogs on Puppet Server 6/7. I have used a very simple {{code-content-command}} which just does a cat on the file.\nWith static catalogs enabled, file resources are on-par with Puppet Server 5.\nCurrently, I have no Puppet Server 5 with enabled static catalogs available -> missing values in the table\n\nIMHO this fits to the initial oberservation and the performance plots.\nIf the limited number of JRubies are for longer periods of time busy by serving file resources, it's no surprise for the huge number of requested JRubies in the plot.\nWith static catalogs, I seem to bypass this bottleneck (somehow).\n\nI had a quick shot with {{multithreaded: true}} on Puppet Server 6 (09 in the gist), but there I see the same slow file resources without static catalogs.\nMultithreading might help me with scaling up, e.g. more JRubies per Puppet Server instance, but it does not solve the underlying problem.\n\nPlease let me know, if this helps to debug this further or if more informaton is required.", "created": "2022-02-13T07:06:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:623c0f04562ab90069f8b137] Can you enable static catalogs to work around this issue? We're thinking of documenting that as a recommendation for FOSS users.", "created": "2022-02-17T11:26:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:623c0f04562ab90069f8b137] Were you able to try the suggested workaround? We really appreciate the amount of work you put into investigating this, there's just unfortunately not much we can do about this right now, so we'll close this ticket if we don't hear from you. But we'd love to keep working with you on it if static catalogs isn't working!", "created": "2022-03-03T11:27:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Static catalogs did not solve the problem. It changed the behaviour slightly, Puppet Server 7 runs OK for a couple of minutes until the requested JRubies spike appears:\n\n!Screenshot 2022-03-04 at 09-13-33 Puppet Server - Grafana.png|width=482,height=250!\n\nI am currently looking into the setup of the infrastructure itself one more time, with special regard to the load balancer in front of it. I am also seeing the Early EOF, which have been reported in SERVER-3169.\n\nI should be able to give an update next week, if you want to keep the ticket open.\n\n\u00a0\n\nEdit: The metric plot is also listed in the attachments, with full resolution.", "created": "2022-03-04T01:29:00.000000"}, {"author": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "body": "[~accountid:623c0f04562ab90069f8b137] give adding '-XX:ReservedCodeCacheSize=1024m' to the java opts a try. this solved the slowness and EOF issue for me.", "created": "2022-03-04T02:41:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "[~accountid:557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83] thanks for the hint, however I am already running with {{-XX:ReservedCodeCacheSize=2g}}. {{-Xlog:compilation+codecache=debug:file=/var/log/puppetlabs/puppetserver/codecache.log}} indicates that I should have enough memory, the free value in the log does not hit 0.", "created": "2022-03-04T05:16:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Please excuse the long silence and thanks for keeping this open.\n\nMost likely, I found the 2 main reasons for the weird Puppet Server 7 performance in our infrastructure. tl", "created": "2022-04-08T01:36:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Finally migrated to Puppet Server 7.7.0 and it is running smoothly now. Compile times have been improved by ~40-50% with Puppet Server 7. Feel free to close the ticket.", "created": "2022-04-28T09:26:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Happy to hear that, [~accountid:623c0f04562ab90069f8b137]! We appreciate the work you put into investigating this. ", "created": "2022-04-28T10:34:00.000000"}], "components": [], "created": "2022-02-01T01:37:00.000000", "creator": "623c0f04562ab90069f8b137", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5eea6530"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0u96k"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7459023333_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Version*: 7.10.0\n*Puppet Server Version*: 7.3.0\n*OS Name & Version*: AlmaLinux 8.5\n\nWhen trying to migrate from Puppet Server 5.3.16 to 7.3.0, we notice a huge decrease in performance. Regardless of the configuration, the Puppet Server can not keep up with the load and agents take more time to receive configuration.\nFor monitoring the performance, we use the graphite exporter and visualize the metrics in Grafana.\n\n{{max-active-instances}} is set to 10, JVM heap to 14GB, CodeCacheSize to 2GB and UseParallelGC as the GC.\nThe compile times seem to be not the biggest issues, while they are initially very slow they are speeding up after a couple of minutes and get at some point to the \nHowever, static file serving seems to be much slower. For Puppet Server 5, file_metadatas is handled in ~500ms and file_metadata ~10-15ms, Puppet Server 7 requires for both tasks around >=10-20 seconds.\nStatic catalogs are so far not enabled.\nI guess this is also the reason for the increase of requested JRubies to ~150.\nHowever, due to the CodeCacheSize limitations of 2GB, I can not really add more max-active-instances. The hardware has still plenty of RAM (92GB) and threads (40) left.\nPuppet Server 5 has more max-active-instances configured, but uses <=10 JRubies.\n\nAttachted are 2 plots from the metrics, as a comparison between 5 and 7.\n\nOverall we have 5 Puppet Servers serving ~6200 Agents with a 30 minute runinterval.\nExtrapolating from the JRuby usage of Puppet Server 7, I would need 15-20 Puppet Servers.\nAny hint to squeeze a better performance would be appreciated.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15876", "fixedVersions": [], "id": "15876", "issueType": "Bug", "key": "SERVER-3161", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0f04562ab90069f8b137", "resolution": "Cannot Reproduce", "resolutionDate": "2022-04-28T10:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 7 very slow", "timeSpent": "PT0S", "updated": "2022-04-28T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Hi [~accountid:557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83], thanks for opening this!\n\nWe're aware of issues with multithreaded mode in Puppet 6, but we've fixed some of these issues in the Puppet 7 stream. Could you upgrade and see if you're still encountering issues? Otherwise, we recommend disabling multithreaded mode in Puppet 6.", "created": "2022-02-03T11:21:00.000000"}, {"author": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "body": "i am sorry, i selected the wrong version, this issue has been encountered with puppetserver version 7.6.0-1 on centos 7", "created": "2022-02-03T11:32:00.000000"}, {"author": "557058:5cf34d61-0327-46c9-a7c5-18d45e15df55", "body": "+1 on Ubuntu 20.04 for us, same server version.", "created": "2022-02-22T19:07:00.000000"}, {"author": "557058:5cf34d61-0327-46c9-a7c5-18d45e15df55", "body": "We've actually reproduced it on any 7.x server (centos or Ubuntu) when the 7.14 agent is installed.. seems caused by this change in the 7.14 agent: PUP-11373.", "created": "2022-03-08T15:34:00.000000"}], "components": ["Puppet Server"], "created": "2022-01-29T08:07:00.000000", "creator": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6bb7acfe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2911"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0emad:c"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/22"}], "description": "hi there,\n\n\u00a0\n\nwhen enabling the threaded mode for puppet server, one gets random errors like these:\n\n\npuppet agent -t\nInfo: Using environment 'prod'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, Internal Error: Attempt to redefine loader named 'resolv_conf private' (file: /etc/puppetlabs/code/environments/prod/modules/resolv_conf/manifests/init.pp, line: 62, column: 18) on node node.example.com\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n\n\nthis error happens in random modules. the error mentioned here, happend in saz-resolv_conf:4.2.1\n\nbut i have seen similar errors with other modules, doing something completely different. for example, i have seen this error in a pp file, doing a \"contain\"\n\nhere is the full stack trace from the puppetserver, for the above issue:\n\n2022-01-29T15:55:53.411+01:00 ERROR [qtp1822750400-395] [puppetserver] Puppet Evaluation Error: Error while evaluating a Function Call, Internal Error: Attempt to redefine loader named 'resolv_conf private' (file: /etc/puppetlabs/code/environments/prod/modules/resolv_conf/manifests/init.pp, line: 62, column: 18) on node node.example.com\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loaders.rb:258:in `add_loader_by_name'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loaders.rb:538:in `create_loader_with_dependencies_first'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loaders.rb:522:in `resolve'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loaders.rb:250:in `private_loader_for_module'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loaders.rb:190:in `[]'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/adapters.rb:95:in `loader_for_model_object'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:300:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:995:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:964:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:909:in `eval_AttributeOperation'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:864:in `block in eval_ResourceExpression'\norg/jruby/RubyArray.java:1809:in `each'\norg/jruby/RubyEnumerable.java:1126:in `inject'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:863:in `block in eval_ResourceExpression'\norg/jruby/RubyArray.java:2577:in `map'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:824:in `eval_ResourceExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:1060:in `block in eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/scope.rb:985:in `with_guarded_scope'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:1056:in `eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `block in eval_BlockExpression'\norg/jruby/RubyArray.java:1809:in `each'\norg/jruby/RubyEnumerable.java:1126:in `inject'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:60:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:27:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:63:in `block in evaluate'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:62:in `block in evaluate'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:61:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:30:in `safeevaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:80:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:79:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:71:in `evaluate'\norg/jruby/RubyArray.java:1809:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:259:in `evaluate_classes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/contain.rb:47:in `contain'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:60:in `invoke'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:43:in `block in dispatch'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:42:in `dispatch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:46:in `block in call'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:45:in `call'\n/etc/puppetlabs/code/environments/prod/modules/profiles/manifests/resolv_conf.pp:5\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/puppet_stack.rb:42:in `stack'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:305:in `block in call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:303:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:995:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:964:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:1058:in `block in eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/scope.rb:985:in `with_guarded_scope'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:1056:in `eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `block in eval_BlockExpression'\norg/jruby/RubyArray.java:1809:in `each'\norg/jruby/RubyEnumerable.java:1126:in `inject'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:60:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:27:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:63:in `block in evaluate'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:62:in `block in evaluate'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:61:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:30:in `safeevaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:80:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:79:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:71:in `evaluate'\norg/jruby/RubyArray.java:1809:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:259:in `evaluate_classes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/contain.rb:47:in `contain'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:60:in `invoke'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:43:in `block in dispatch'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:42:in `dispatch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:46:in `block in call'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:45:in `call'\n/etc/puppetlabs/code/environments/prod/modules/profiles/manifests/base.pp:37\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/puppet_stack.rb:42:in `stack'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:305:in `block in call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:303:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:995:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:964:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `block in eval_BlockExpression'\norg/jruby/RubyArray.java:1809:in `each'\norg/jruby/RubyEnumerable.java:1126:in `inject'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:1058:in `block in eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/scope.rb:985:in `with_guarded_scope'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:1056:in `eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `block in eval_BlockExpression'\norg/jruby/RubyArray.java:1809:in `each'\norg/jruby/RubyEnumerable.java:1126:in `inject'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:679:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:60:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:27:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:63:in `block in evaluate'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:62:in `block in evaluate'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:61:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:30:in `safeevaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:80:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:79:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:71:in `evaluate'\norg/jruby/RubyArray.java:1809:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:259:in `evaluate_classes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/include.rb:48:in `include'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:60:in `invoke'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:43:in `block in dispatch'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:42:in `dispatch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:46:in `block in call'\norg/jruby/RubyKernel.java:1189:in `catch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:45:in `call'\n/etc/puppetlabs/code/environments/prod/manifests/site.pp:1\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/puppet_stack.rb:42:in `stack'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:305:in `block in call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:303:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:995:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:990:in `eval_CallMethodExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n2022-01-29T15:55:53.411+01:00 ERROR [qtp1822750400-395] [puppetserver] Puppet Evaluation Error: Error while evaluating a Function Call, Internal Error: Attempt to redefine loader named 'resolv_conf private' (file: /etc/puppetlabs/code/environments/prod/modules/resolv_conf/manifests/init.pp, line: 62, column: 18) on node node.example.com\n2022-01-29T15:55:53.411+01:00 ERROR [qtp1822750400-395] [puppetserver] Puppet Server Error: Evaluation Error: Error while evaluating a Function Call, Internal Error: Attempt to redefine loader named 'resolv_conf private' (file: /etc/puppetlabs/code/environments/prod/modules/resolv_conf/manifests/init.pp, line: 62, column: 18) on node node.example.com", "epicLinkSummary": "Multithreaded Fixes", "estimate": "PT0S", "externalId": "17217", "fixedVersions": [], "id": "17217", "issueType": "Bug", "key": "SERVER-3160", "labels": [], "originalEstimate": "PT0S", "parent": "17234", "parentSummary": "Multithreaded Fixes", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Evaluation Error: Error while evaluating a Function Call, Internal Error: Attempt to redefine loader named", "timeSpent": "PT0S", "updated": "2022-06-02T11:06:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2022-01-27T10:47:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@617b4c53"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8riz"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2363976_*|*_3_*:*_1_*:*_5613107_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2413391142_*|*_10005_*:*_1_*:*_2245875018"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for ubuntu-20.04-amd64\n* Add ubuntu-20.04-amd64 to [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/main/jenkii/platform/projects/puppetserver.yaml]\n* Add ubuntu-20.04-amd64 to [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/main/jenkii/platform/projects/puppetserver.yaml].\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16298", "fixedVersions": [], "id": "16298", "issueType": "Task", "key": "SERVER-3159", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-03-22T12:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable ubuntu-20.04-amd64 builds and testing for puppetserver", "timeSpent": "PT0S", "updated": "2022-03-22T12:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So far this has actually been clean for us except for pinning JRuby's jnr-posix dep, which I did under the SERVER-3157 ticket.", "created": "2022-02-02T17:04:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Also the gettext license, but I don't think there's anything we can do about that for now, and it affects all clojure projects. We are currently not surfacing license issues in the PR checks.", "created": "2022-02-02T17:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "All remaining issues are low-severity license issues.", "created": "2022-02-02T17:07:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I cleaned up a couple of duplicate projects in the Snyk dashboard that were giving out of date results. The current ones all look clean.", "created": "2022-02-07T16:47:00.000000"}], "components": [], "created": "2022-01-20T16:00:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cf8c44d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8s"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_415527437_*|*_10007_*:*_1_*:*_17497591_*|*_3_*:*_1_*:*_332612617_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_791518348_*|*_10005_*:*_1_*:*_865011"}], "description": "According to the severity we have certain SLAs we're supposed to meet, eg. ASAP for Critical, 30 days for High, etc. Review the slides here for exact time frames:\n[https://confluence.puppetlabs.com/display/SEC/Training]\n\u00a0\nThis dashboard tracks what projects are in or out of SLA: [https://puppet.grafana.net/d/7isze1Tnk/snyk-status?orgId=1&viewPanel=6]\n\nThis ticket is to audit the projects SLAs on the above dashboard. \n\n* Critical & High - review all issues, fix anything trivial, open tickets for any non-trivial issues we actually need to resolve, snooze anything that isn't a real issue that affects us\n* Medium and below - snooze in Snyk, open any necessary exceptions to our SLA\n\nSchedule a meeting with the rest of the team to discuss any issues we're not sure about, after clearing out issues that are easy to assess.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17216", "fixedVersions": ["None"], "id": "17216", "issueType": "Task", "key": "SERVER-3158", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2022-02-07T16:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Review snyk Security SLA issues & snooze OR create Jira tickets as needed", "timeSpent": "PT0S", "updated": "2022-02-07T16:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There's an issue with the clojure snyk runner not using the reverse proxy to download dependencies, so it's trying and failing to hit artifactory. [~accountid:6195282ef241500072505c94] is working on a fix.\n\nIn the meantime, I have PRs up for\n[pe-pse|https://github.com/puppetlabs/pe-puppet-server-extensions/pull/1394]\n[pe-file-sync|https://github.com/puppetlabs/pe-file-sync/pull/517]\n[code-manager|https://github.com/puppetlabs/code-manager/pull/512]\n[puppetserver|https://github.com/puppetlabs/puppetserver/pull/2607]\n\nI may want to change those to run on push rather than PR, since I _think_ they won't run on PRs made from forks anyway, due to those not having access to the secrets. However, that will be easier to ignore, so I don't love it. If we do move to making PRs directly against the {{puppetlabs}} fork to work better with snyk, we'll need to update Travis so it doesn't run twice on every PR.", "created": "2022-01-27T15:23:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Did some of the major repos, leaving the others to be done as we touch them. There might be some changes coming to the actions as we figure out better workflows.", "created": "2022-02-01T15:35:00.000000"}], "components": [], "created": "2022-01-20T15:54:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ad322a1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8rr"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jan/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_415720827_*|*_10007_*:*_1_*:*_15555774_*|*_3_*:*_1_*:*_494569241_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_109701207_*|*_10005_*:*_1_*:*_163865"}], "description": "We need to add snyk scanning to our projects.\n\nWe should ensure our repos are using snyk scanning. We can see our integration status here: [https://puppet.grafana.net/d/RpECy40nk/snyk-repo-coverage]\n\nWe can use the Github actions here:\n\u00a0\n * [https://github.com/puppetlabs/security-snyk-clojure-action]\u00a0\n * [https://github.com/puppetlabs/security-snyk-vanagon-action]\u00a0\n * \u00a0[https://github.com/snyk/actions]\u00a0\n\n\u00a0\n\nMore information can be found in the slides here:\n\n[https://confluence.puppetlabs.com/display/SEC/Training]\n\n\u00a0\n\nplease also update the Maintainers column of this spreadsheet:\n\nhttps://docs.google.com/spreadsheets/d/1MBm_eF9eDQAk9fqIAaDaWqXtqHXLyaVBAvrY-yv3Pc0/edit#gid=2065455227", "duedate": "2022-02-18T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16888", "fixedVersions": ["SERVER 6.19.0", "SERVER 7.6.1"], "id": "16888", "issueType": "Task", "key": "SERVER-3157", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2022-02-01T15:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "And Snyk testing to CI pipelines", "timeSpent": "PT0S", "updated": "2022-04-01T11:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2022-01-18T11:10:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f00039b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8rivi"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We now support puppetserver on sles-15-x86_64."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_336853559_*|*_1_*:*_1_*:*_173476771_*|*_10007_*:*_1_*:*_503198967_*|*_3_*:*_1_*:*_22537844_*|*_5_*:*_2_*:*_456673660_*|*_10006_*:*_1_*:*_2413462220_*|*_10005_*:*_1_*:*_2850919182"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for sles-15-x86_64\n* Add sles-15-x86_64 to [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/main/jenkii/platform/projects/puppetserver.yaml]\n* Add sles-15-x86_64 to [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/main/jenkii/platform/projects/puppetserver.yaml].\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17468", "fixedVersions": ["SERVER 6.19.0", "SERVER 7.7.0"], "id": "17468", "issueType": "Task", "key": "SERVER-3156", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-04-06T17:09:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable sles-15-x86_64 builds and testing for puppetserver", "timeSpent": "PT0S", "updated": "2022-04-08T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Given the amount of resources being put into MT puppetserver I'm going to close this.", "created": "2022-02-02T18:03:00.000000"}], "components": [], "created": "2022-01-11T18:14:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a2d9fc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0dfr0:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1900189667_*|*_6_*:*_1_*:*_0"}], "description": "Try to reproduce PUP-11373 using https://github.com/puppetlabs/puppetserver/tree/6.x/ext/thread_test and add a test for it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16112", "fixedVersions": [], "id": "16112", "issueType": "Task", "key": "SERVER-3155", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Won't Do", "resolutionDate": "2022-02-02T18:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add test for PUP-11373", "timeSpent": "PT0S", "updated": "2022-02-02T18:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2022-01-05T15:56:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e92af89"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11417"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8u"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_675578874_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1315846992"}], "description": "(Initial planned release date: 2022-01-18)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.18.0\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [winston|https://github.com/puppetlabs/winston], [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/], and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-01-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.26.0 Release - 2022-01-18", "estimate": "PT0S", "externalId": "17215", "fixedVersions": [], "id": "17215", "issueType": "Task", "key": "SERVER-3153", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24623", "parentSummary": "Puppet Platform 6.26.0 Release - 2022-01-18", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2022-01-28T17:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 6.26.0)", "timeSpent": "PT0S", "updated": "2022-01-28T17:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2022-01-05T15:56:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d775ed0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11417"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0dbv4:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_675595528_*|*_10007_*:*_1_*:*_16897094_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1216305549"}], "description": "(Initial planned release date: 2022-01-18)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 6.26.0 Release - 2022-01-18", "estimate": "PT0S", "externalId": "16885", "fixedVersions": [], "id": "16885", "issueType": "Task", "key": "SERVER-3152", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24623", "parentSummary": "Puppet Platform 6.26.0 Release - 2022-01-18", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2022-01-27T18:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 6.26.0)", "timeSpent": "PT0S", "updated": "2022-01-27T18:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-01-05T15:56:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72d4803e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11417"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0dbuw:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_675631548_*|*_3_*:*_1_*:*_950291779_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_24240"}], "description": "(Initial planned release date: 2022-01-18)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 6.18.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.18.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-01-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.26.0 Release - 2022-01-18", "estimate": "PT0S", "externalId": "16645", "fixedVersions": [], "id": "16645", "issueType": "Task", "key": "SERVER-3151", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24623", "parentSummary": "Puppet Platform 6.26.0 Release - 2022-01-18", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2022-01-24T11:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 6.26.0)", "timeSpent": "PT0S", "updated": "2022-01-24T11:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ticketmatch came out all clean except for SERVER-3137 which was put in to keep ezbake versions consistent between main and 6.x despite us NOT shipping Debian in the 6.x branch.", "created": "2022-01-14T12:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Code has all been in PE for more than a week.\n\nThe Confluence page is very out of date, not just for server but for all components, will discuss with PM on Tuesday.\n\nPromotions were disabled for both streams here: [https://github.com/puppetlabs/ci-job-configs/pull/8214]\n\nBuilt and staged the tagged build here: [http://builds.delivery.puppetlabs.net/puppetserver/6.18.0/]\n\n\u00a0", "created": "2022-01-14T17:06:00.000000"}], "components": [], "created": "2022-01-05T15:56:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60abdaa1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11417"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0dbuo:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_675578553_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_106207308"}], "description": "(Initial planned release date: 2022-01-18)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 6.18.0 is built and ready for testing.\n", "duedate": "2022-01-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.26.0 Release - 2022-01-18", "estimate": "PT0S", "externalId": "16297", "fixedVersions": [], "id": "16297", "issueType": "Task", "key": "SERVER-3150", "labels": ["release"], "originalEstimate": "PT0S", "parent": "24623", "parentSummary": "Puppet Platform 6.26.0 Release - 2022-01-18", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2022-01-14T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 6.26.0)", "timeSpent": "PT0S", "updated": "2022-01-14T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2022-01-05T15:19:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ec3c3d0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11407"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8u9"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_677948140_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1315761136"}], "description": "(Initial planned release date: 2022-01-18)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.6.0\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [winston|https://github.com/puppetlabs/winston], [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/], and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2022-01-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.14.0 Release - 2022-01-18", "estimate": "PT0S", "externalId": "16883", "fixedVersions": [], "id": "16883", "issueType": "Task", "key": "SERVER-3149", "labels": ["release"], "originalEstimate": "PT0S", "parent": "23490", "parentSummary": "Puppet Platform 7.14.0 Release - 2022-01-18", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2022-01-28T17:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.14.0)", "timeSpent": "PT0S", "updated": "2022-01-28T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2022-01-05T15:19:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b8804c2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11407"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0dbm0:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_53939283_*|*_1_*:*_1_*:*_677935289_*|*_10007_*:*_1_*:*_3225471_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1234457670"}], "description": "(Initial planned release date: 2022-01-18)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.14.0 Release - 2022-01-18", "estimate": "PT0S", "externalId": "16644", "fixedVersions": [], "id": "16644", "issueType": "Task", "key": "SERVER-3148", "labels": ["release"], "originalEstimate": "PT0S", "parent": "23490", "parentSummary": "Puppet Platform 7.14.0 Release - 2022-01-18", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2022-01-28T10:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.14.0)", "timeSpent": "PT0S", "updated": "2022-01-28T10:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2022-01-05T15:19:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28bf6f99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11407"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0dbls:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_677919968_*|*_3_*:*_1_*:*_950221282_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11508"}], "description": "(Initial planned release date: 2022-01-18)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.6.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.6.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2022-01-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.14.0 Release - 2022-01-18", "estimate": "PT0S", "externalId": "16296", "fixedVersions": [], "id": "16296", "issueType": "Task", "key": "SERVER-3147", "labels": ["release"], "originalEstimate": "PT0S", "parent": "23490", "parentSummary": "Puppet Platform 7.14.0 Release - 2022-01-18", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2022-01-24T11:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.14.0)", "timeSpent": "PT0S", "updated": "2022-01-24T11:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Nothing popped on ticketmatch.\n\nCode has all been in PE for more than a week.\n\nThe Confluence page is very out of date, not just for server but for all components, will discuss with PM on Tuesday.\n\nPromotions were disabled for both streams here: [https://github.com/puppetlabs/ci-job-configs/pull/8214]\n\nBuilt and staged the tagged build here: [http://builds.delivery.puppetlabs.net/puppetserver/7.6.0/]\n\nLet everyone in #proj-puppet-release know about the artifacts.\n\n\u00a0", "created": "2022-01-14T17:11:00.000000"}], "components": [], "created": "2022-01-05T15:19:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@459a3abe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11407"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0dblk:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jan/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_677916756_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_106397216"}], "description": "(Initial planned release date: 2022-01-18)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.6.0 is built and ready for testing.\n", "duedate": "2022-01-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.14.0 Release - 2022-01-18", "estimate": "PT0S", "externalId": "16036", "fixedVersions": [], "id": "16036", "issueType": "Task", "key": "SERVER-3146", "labels": ["release"], "originalEstimate": "PT0S", "parent": "23490", "parentSummary": "Puppet Platform 7.14.0 Release - 2022-01-18", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2022-01-14T17:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.14.0)", "timeSpent": "PT0S", "updated": "2022-01-14T17:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I have two PRs up to unblock this, [one|https://github.com/puppetlabs/puppet-agent/pull/2179] for the 6.x agent, and [another|https://github.com/puppetlabs/ezbake/pull/596] for the ezbake change.", "created": "2022-01-04T17:49:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've done the prework for this (the tickets are linked, but I think [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da] was maybe going to help get it over the line.", "created": "2022-01-05T16:14:00.000000"}], "components": [], "created": "2021-12-16T16:16:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@777fc849"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8r"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server is now packaged for Debian 11. It requires Java 11 to be installed."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jan/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_98651273_*|*_1_*:*_1_*:*_242277_*|*_10007_*:*_3_*:*_8942588_*|*_3_*:*_2_*:*_69641183_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_1400170554_*|*_10005_*:*_1_*:*_415359043"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for debian-11-amd64\n* Add debian-11-amd64 to [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/main/jenkii/platform/projects/puppetserver.yaml]\n* Add debian-11-amd64 to [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/main/jenkii/platform/projects/puppetserver.yaml].\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16643", "fixedVersions": ["SERVER 7.6.0"], "id": "16643", "issueType": "Task", "key": "SERVER-3137", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2022-01-08T17:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable debian-11-amd64 builds and testing for puppetserver", "timeSpent": "PT0S", "updated": "2022-03-28T15:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Moving to SERVER project", "created": "2021-12-13T14:57:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "Hi [~accountid:6243854d258562006fa2b8c0], only CD4PE is affected. See our blog post for more information. https://puppet.com/blog/puppet-response-to-remote-code-execution-vulnerability-cve-2021-44228/", "created": "2021-12-13T15:01:00.000000"}, {"author": "6243854d258562006fa2b8c0", "body": "Thank you", "created": "2021-12-14T02:54:00.000000"}], "components": [], "created": "2021-12-13T08:54:00.000000", "creator": "6243854d258562006fa2b8c0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f54c519"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CVE-ID", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CVE-2021-44228 - log4j"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0d1sw:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Dec/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22024066_*|*_6_*:*_1_*:*_0"}], "description": "we see that puppetserver uses Slf4jLogger mechanism for logging. With ongoing vulnerability log4j, we noticed that slf4jlogger might be dependent on log4j, hence would like to understand the impact and remediation if any.\n\nwe use latest opensource\n\npuppetserver: 6.17, puppetdb 6.19, puppet-agent 6.25\n\npuppetserver.service - puppetserver Service\n\u00a0 \u00a0Loaded: loaded (/lib/systemd/system/puppetserver.service; enabled; vendor preset: enabled)\n\u00a0 \u00a0Active: active (running) since Sat 2021-11-20 12:57:37 CET; 3 weeks 1 days ago\n\u00a0Main PID: 2242 (java)\n\u00a0 \u00a0 Tasks: 141 (limit: 4915)\n\u00a0 \u00a0CGroup: /system.slice/puppetserver.service\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2514\u25002242 /usr/bin/java -Xms4g -Xmx4g -XX:ReservedCodeCacheSize=1G -{*}Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger{*} -XX:OnOutOfMemoryError=kill -9 %p -XX:ErrorFile=/var/log/puppet\n\n\u00a0", "environment": "Production CICD", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16642", "fixedVersions": [], "id": "16642", "issueType": "Bug", "key": "SERVER-3136", "labels": ["support"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243854d258562006fa2b8c0", "resolution": "Cannot Reproduce", "resolutionDate": "2021-12-13T15:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CVE-2021-44228 - log4j", "timeSpent": "PT0S", "updated": "2021-12-14T02:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The {{bcutil}} jar has been pulled in correctly: \n{code}\n\u279c  puppetserver git:(main) \u2717 lein deps :tree | grep bc\nTried to load com.google.guava/guava version 28.2-jre but 20.0 was already loaded.\nTried to load org.jsoup/jsoup version 1.13.1 but 1.7.2 was already loaded.\n [org.bouncycastle/bcpkix-jdk15on \"1.70\"]\n   [org.bouncycastle/bcprov-jdk15on \"1.70\"]\n   [org.bouncycastle/bcutil-jdk15on \"1.70\"]\n{code}", "created": "2022-01-19T17:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I built an uberjar of jvm-ssl-utils and didn't see any evidence of any bouncy-castle libraries in it, including the new utils lib. Is that the right way to check the \"provided\" profile you mention [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]?", "created": "2022-01-20T09:34:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yep.", "created": "2022-01-21T12:50:00.000000"}], "components": ["Puppet Server"], "created": "2021-12-06T12:58:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26822023"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0lir"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now ships with Bouncy Castle 1.70, which has improved TLS 1.3 support."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jan/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_322480884_*|*_1_*:*_1_*:*_253108634_*|*_10007_*:*_1_*:*_706830831_*|*_3_*:*_1_*:*_69335835_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2520713894_*|*_10005_*:*_1_*:*_1038653770"}], "description": "We're currently using BC 1.68 which came out around a year ago. We should update to\u00a0[BC 1.70|https://bouncycastle.org/releasenotes.html#r1rv70] which just came out. 1.70 contains TLS v1.3 & ECDSA bug fixes which we think we'll start seeing more of now that we've enabled TLS v1.3 by default.\n\nThis ticket includes:\n * update jvm-ssl-utils to test that there's not regressions (there are potentially backwards incompatible changes in 1.69).\n * ensure the new utils jar that they've split out is pulled in transitively from the artifact ids and if not explicitly declaring a dependency on the new utils jar.\n * verify the new utils jar is properly removed by the \"[provided|https://github.com/puppetlabs/jvm-ssl-utils/blob/main/project.clj#L42-L44]\" profile\n * update clj-parent once we've verified it doesn't break jvm-ssl-utils and puppetserver (puppetserver testing is p art of the clj-parent bump process)\n * ensure puppetserver is updated to the new clj-parent (should be automatic)\n * let PDB know that they should be using the new version", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15446", "fixedVersions": ["SERVER 6.19.0", "SERVER 7.6.1"], "id": "15446", "issueType": "Task", "key": "SERVER-3135", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2022-02-01T09:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump BouncyCastle to at least 1.70 (FOSS)", "timeSpent": "PT0S", "updated": "2022-03-15T12:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "288000", "aggregatetimeoriginalestimate": "288000", "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Tested this out a bit this morning and got a bunch of StackOverflowExcpetions in the puppetserver tests...\n{code}\nCaused by: org.jruby.embed.InvokeFailedException: java.lang.StackOverflowError\n at org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call (EmbedRubyObjectAdapterImpl.java:322)\n    org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod (EmbedRubyObjectAdapterImpl.java:170)\n    org.jruby.embed.ScriptingContainer.callMethod (ScriptingContainer.java:1463)\n    com.puppetlabs.jruby_utils.jruby.InternalScriptingContainer.callMethodWithArgArray (InternalScriptingContainer.java:43)\n    sun.reflect.GeneratedMethodAccessor90.invoke (:-1)\n    sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)\n    java.lang.reflect.Method.invoke (Method.java:498)\n    clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:167)\n    clojure.lang.Reflector.invokeInstanceMethod (Reflector.java:102)\n    puppetlabs.services.jruby.jruby_puppet_core$eval27861$get_initialize_pool_instance_fn__27866$fn__27867$fn__27868.invoke (jruby_puppet_core.clj:138)\n    puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval25733$create_pool_instance_BANG___25742$fn__25745.invoke (jruby_internal.clj:256)\n    puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval25733$create_pool_instance_BANG___25742.invoke (jruby_internal.clj:225)\n....\nCaused by: java.lang.StackOverflowError: null\n at org.jruby.ext.set.RubySet.initialize_dup (RubySet.java:313)\n    org.jruby.ext.set.RubySet$INVOKER$i$1$0$initialize_dup.call (RubySet$INVOKER$i$1$0$initialize_dup.gen:-1)\n    org.jruby.runtime.callsite.SuperCallSite.call (SuperCallSite.java:218)\n    org.jruby.ext.set.RubySet.initialize_dup (RubySet.java:313)\n    org.jruby.ext.set.RubySet$INVOKER$i$1$0$initialize_dup.call (RubySet$INVOKER$i$1$0$initialize_dup.gen:-1)\n    org.jruby.runtime.callsite.SuperCallSite.call (SuperCallSite.java:218)\n    org.jruby.ext.set.RubySet.initialize_dup (RubySet.java:313)\n    org.jruby.ext.set.RubySet$INVOKER$i$1$0$initialize_dup.call (RubySet$INVOKER$i$1$0$initialize_dup.gen:-1)\n    org.jruby.runtime.callsite.SuperCallSite.call (SuperCallSite.java:218)\n    org.jruby.ext.set.RubySet.initialize_dup (RubySet.java:313)\n{code}", "created": "2021-11-17T09:45:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We may also want to consider moving to jruby 9.3, but we will open a separate ticket for that, since we'll need to investigate whether this bump requires a major version bump.", "created": "2021-11-18T11:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yeah we should definitely consider the 9.3 bump separately. I think we want to still pick up a 9.2 update before that, since they picked up a newer jruby-openssl, which might solve some user issues that we've heard about.", "created": "2021-12-16T16:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We need to wait for them to release 9.2.21 to work this.", "created": "2022-01-04T10:03:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Considering they still haven't done another 9.2 release, going to try going directly to 9.3. Initial test results look good.", "created": "2022-04-14T15:22:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Seems like 9.3 would be good to upgrade to at least for the 2021/future LTS stream. It causes no issues in basic testing and its perf looks similar to 9.2 in Puppet's benchmarks.\n\nHowever, work on getting the update into clj-parent needs to wait for the PE release branches to be cut, since we don't want this to go out in the current set. Also conversations about which branches to land it in are still ongoing.", "created": "2022-04-20T10:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This update has been merged through clj-parent, but we're waiting to release that till we also get the Clojure update in, for the new 5.0.0 release.", "created": "2022-05-06T12:40:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "I believe this work is complete.", "created": "2022-06-21T10:48:00.000000"}], "components": [], "created": "2021-11-17T08:36:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Dumpling"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@15ce1faa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Upgrade JRuby to 9.2.21.0 or 9.3.x"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3j7:x"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now uses JRuby 9.3.4.0."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Nov/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_608454039_*|*_1_*:*_3_*:*_3231122934_*|*_10007_*:*_2_*:*_579166919_*|*_3_*:*_1_*:*_97013184_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1214777489_*|*_10014_*:*_1_*:*_1810029276_*|*_10006_*:*_1_*:*_11068305534_*|*_10005_*:*_2_*:*_1867912921"}, {"fieldName": "productboard URL", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:url", "value": "https://puppet.productboard.com/feature-board/planning/features/13265734"}], "description": "We are currently are using JRuby 9.2.17.0, but there have been several bug fix releases since we last updated. We should upgrade to 9.2.21.0 in both the 6.x and main streams. (At the moment, this isn't released quite yet, but 9.2.20 has [this bug|https://github.com/jruby/jruby/issues/6958] which affects us) If the release of this takes too long, we should look at going to 9.3 instead.\n\n- Update [jruby-deps|https://github.com/puppetlabs/jruby-deps/blob/c4b1b4f6396e7a8c1ae61fe1e5ab5686bd2e7bb1/project.clj#L1-L3] with the new version\n- Release that and bump it in [jruby-utils|https://github.com/puppetlabs/jruby-utils/blob/419e87acec31f6965a724f6025daa01d08befb5e/project.clj#L25]\n- Release that and update in [clj-parent|https://github.com/puppetlabs/clj-parent/blob/436d5430bdf2fbb5e6c87b15ac682783c44b17cc/project.clj#L129]\n- Release that and update it in:\n-- puppetserver\n-- pe-pse (don't forget to also update [this|https://github.com/puppetlabs/clj-parent/blob/436d5430bdf2fbb5e6c87b15ac682783c44b17cc/project.clj#L129])\n-- orchestrator\n", "epicLinkSummary": null, "estimate": "PT288000S", "externalId": "16881", "fixedVersions": ["SERVER 7.9.0"], "id": "16881", "issueType": "Epic", "key": "SERVER-3133", "labels": [".Q2-Planned", "docs_reviewed", "PE-SoS"], "originalEstimate": "PT288000S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2022-07-12T09:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade JRuby to 9.3.4.0", "timeSpent": "PT0S", "updated": "2022-08-09T16:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2021-11-15T15:15:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d65acb8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11354"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0chnc:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_258234858_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1559302249"}], "description": "(Initial planned release date: 2021-12-07)\n\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.5.0\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [winston|https://github.com/puppetlabs/winston], [tefoji|https://github.com/puppetlabs/tefoji-puppet-templates/], and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-12-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.13.0 Release - 2021-12-13", "estimate": "PT0S", "externalId": "15444", "fixedVersions": [], "id": "15444", "issueType": "Task", "key": "SERVER-3132", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28843", "parentSummary": "Puppet Platform 7.13.0 Release - 2021-12-13", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2021-12-06T16:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Post-release housekeeping (Puppet Platform 7.13.0)", "timeSpent": "PT0S", "updated": "2021-12-06T16:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "This isn't immediately going into a PE release, so this can be closed.", "created": "2021-11-18T15:18:00.000000"}], "components": [], "created": "2021-11-15T15:15:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54bbc23b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11354"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0chn4:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Nov/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_258253378_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1098841_*|*_10005_*:*_1_*:*_60120"}], "description": "(Initial planned release date: 2021-12-07)\n\nIf this release is not destined for an upcoming PE release, you can close this ticket.\n\nOtherwise, once PE release branches have been cut:\n* Bump the version of pe-puppet-server-extensions such that the X and Y versions match those of the subsequent PE release but the Z and build versions are bumped/reset, so that we have somewhere to branch from if we need to promote anything to the PE release branches.\nFor example:\n** 2019.8.3.96-SNAPSHOT -> 2019.8.4.0-SNAPSHOT\n** 2021.4.0.66-SNAPSHOT -> 2021.5.0.0-SNAPSHOT\n* Re-enable puppetserver promotions\n", "epicLinkSummary": "Puppet Platform 7.13.0 Release - 2021-12-13", "estimate": "PT0S", "externalId": "15248", "fixedVersions": [], "id": "15248", "issueType": "Task", "key": "SERVER-3131", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28843", "parentSummary": "Puppet Platform 7.13.0 Release - 2021-12-13", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Won't Do", "resolutionDate": "2021-11-18T15:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump pe-pse and re-enable promotions (Puppet Platform 7.13.0)", "timeSpent": "PT0S", "updated": "2021-11-18T15:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [{"author": "60e4906e4134aa006931a5d6", "body": "[https://docs-herrera-preview.netlify.app/docs/puppet/7/server/release_notes.html#puppet-server-750]\u00a0", "created": "2021-12-08T10:33:00.000000"}], "components": [], "created": "2021-11-15T15:15:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7eb3c70"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11354"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0chmw:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Dec/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_258261333_*|*_5_*:*_2_*:*_880028_*|*_10006_*:*_1_*:*_1711968969_*|*_10005_*:*_1_*:*_76595"}], "description": "(Initial planned release date: 2021-12-07)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.5.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.5.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2021-12-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.13.0 Release - 2021-12-13", "estimate": "PT0S", "externalId": "14843", "fixedVersions": [], "id": "14843", "issueType": "Task", "key": "SERVER-3130", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28843", "parentSummary": "Puppet Platform 7.13.0 Release - 2021-12-13", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Fixed", "resolutionDate": "2021-12-08T10:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Platform 7.13.0)", "timeSpent": "PT0S", "updated": "2021-12-08T10:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The release has been pushed out a couple days due to some additional changes needed in the agent. I've kicked CI again, and will tag Monday if everything looks good.", "created": "2021-12-03T17:06:00.000000"}], "components": [], "created": "2021-11-15T15:15:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52afd6b5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11354"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0chmo:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Dec/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_258281105_*|*_3_*:*_1_*:*_369426727_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1189762863_*|*_10005_*:*_1_*:*_34071"}], "description": "(Initial planned release date: 2021-12-07)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n** If you haven't already, notify the puppet-agent release lead that puppetserver 7.5.0 is built and ready for testing.\n", "duedate": "2021-12-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.13.0 Release - 2021-12-13", "estimate": "PT0S", "externalId": "17466", "fixedVersions": [], "id": "17466", "issueType": "Task", "key": "SERVER-3129", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28843", "parentSummary": "Puppet Platform 7.13.0 Release - 2021-12-13", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Done", "resolutionDate": "2021-12-06T16:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Platform 7.13.0)", "timeSpent": "PT0S", "updated": "2021-12-06T16:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "consolidating with https://puppet.atlassian.net/browse/SERVER-3127", "created": "2021-12-07T12:17:00.000000"}], "components": [], "created": "2021-11-12T13:30:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51f3a116"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0ly"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Dec/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_524785533_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1630844066"}], "description": "Test pe-pse for redhatfips-8-x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16641", "fixedVersions": [], "id": "16641", "issueType": "Task", "key": "SERVER-3128", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Duplicate", "resolutionDate": "2021-12-07T12:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Test pe-puppetserver for redhatfips-8-x86_64", "timeSpent": "PT0S", "updated": "2021-12-07T12:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We don't support FIPS in FOSS.", "created": "2021-11-18T15:13:00.000000"}], "components": [], "created": "2021-11-12T13:29:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ea43c1d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0cghc:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Nov/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_524500432_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_163961"}], "description": "Add redhatfips-8-x86_64 to [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15245", "fixedVersions": [], "id": "15245", "issueType": "Task", "key": "SERVER-3126", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Won't Do", "resolutionDate": "2021-11-18T15:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable redhatfips-8-x86_64 test pipeline for puppetserver", "timeSpent": "PT0S", "updated": "2021-11-18T15:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We don't support FIPS in FOSS.", "created": "2021-11-18T15:14:00.000000"}], "components": [], "created": "2021-11-12T13:29:00.000000", "creator": "623e79777910a200718cd128", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c33f22c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0cgh4:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Nov/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_524339476_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_386491"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for redhatfips-8-x86_64\n* Add redhatfips-8-x86_64 to [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml#L84-L93]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14842", "fixedVersions": [], "id": "14842", "issueType": "Task", "key": "SERVER-3125", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e79777910a200718cd128", "resolution": "Won't Do", "resolutionDate": "2021-11-18T15:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable redhatfips-8-x86_64 builds for puppetserver", "timeSpent": "PT0S", "updated": "2021-11-18T15:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2021-11-11T15:16:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30059561"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3178"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk3ms:002a"}], "description": "We want to start using the Puppet HTTP client in the {{splunk_hec}} module, to fully support the module on FIPS hosts, where Net::HTTP is not functional. However, the module currently allows users to configure a custom timeout for HTTP requests, and this is not supported by the Puppet Server version of the Puppet HTTP client. In order to be able to use the Puppet client in the module, we need to support per-request timeouts.", "epicLinkSummary": "Puppet Server configurable timeouts", "estimate": "PT0S", "externalId": "15242", "fixedVersions": [], "id": "15242", "issueType": "Task", "key": "SERVER-3124", "labels": [], "originalEstimate": "PT0S", "parent": "16647", "parentSummary": "Puppet Server configurable timeouts", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow configuring per-request timeouts in Puppet Server's HTTP client", "timeSpent": "PT0S", "updated": "2022-05-31T09:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] is going to gather more info on the impact of the current solution and how this work would help before we can prioritize this.", "created": "2021-12-08T11:15:00.000000"}], "components": [], "created": "2021-11-11T14:52:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7cb27966"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0emad:zzzi"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Dec/21"}], "description": "Sometimes, we need to make requests to servers that authenticate with non-Puppet certificates. For example, a custom report processor that sends data to a Splunk instance.\n\nSome users are able to use the [system store|https://puppet.atlassian.net/browse/SERVER-3019] for this, but others need to supply a completely custom cert bundle. For example, the {{splunk_hec}} module currently allows users to configure a custom bundle, separate from the system store. However, it uses Net::HTTP directly to accomplish this, which will not work in FIPS mode. If this module is to work correctly in FIPS mode, we need to support the same in the Server version of the Puppet HTTP client. \n\nOur HTTP client should support supplying a custom cert bundle (or a path to PEM file so we can create one?) per-request.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17214", "fixedVersions": [], "id": "17214", "issueType": "Task", "key": "SERVER-3123", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Specify a custom cert bundle for Puppet Server's HTTP client", "timeSpent": "PT0S", "updated": "2022-03-09T09:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c0dfe50bb2b0070b6b0b3", "created": "2021-11-12T01:10:00.000000", "name": "puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11095"}], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Hey [~accountid:623c0dfe50bb2b0070b6b0b3]! Would you mind showing us the whole contents of your {{puppetserver.conf}} file and also more of the log messages around where you saw that error, particularly the stacktrace following the error? Thanks!", "created": "2021-11-11T11:20:00.000000"}, {"author": "623c0dfe50bb2b0070b6b0b3", "body": "Thank you for the reply.\n\nOf course:\n\n{noformat}\njruby-puppet: {\n    \"gem-home\": \"/opt/puppetlabs/server/data/puppetserver/jruby-gems\",\n    \"gem-path\": [\n        \"/opt/puppetlabs/server/data/puppetserver/jruby-gems\",\n        \"/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems\"\n    ],\n    \"max-active-instances\": \"2\",\n    \"max-requests-per-instance\": 3000,\n    \"ruby-load-path\": [\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby\",\n        \"/opt/puppetlabs/puppet/cache/lib\"\n    ],\n    \"use-legacy-auth-conf\": false\n}\n{noformat}\n\n\nHighlighting some more logs\n{noformat}\n2021-11-12T09:03:44.486+01:00 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-cert'\n2021-11-12T09:03:44.486+01:00 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-key'\n2021-11-12T09:03:44.487+01:00 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-ca-cert'\n2021-11-12T09:03:44.487+01:00 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-crl-path'\n{noformat}\n\nso assume they are being picked up from puppet.conf file? \n\nLog file attached which is full server start up and then two puppet runs. [^puppetserver.log] \n\nI can actually get rid of errors by installing our external CRL  at /var/lib/puppet/ssl/crl.pem - \nNow wondering if this is actually the client check of the puppetdb server ?\n\n", "created": "2021-11-12T01:18:00.000000"}, {"author": "623c0dfe50bb2b0070b6b0b3", "body": "Indeed if I disable puppetdb connectivity completly this error go's away.\n\nI was sure I checked that earlier but ... clearly not.\n\nI'd say this can be closed.", "created": "2021-11-12T01:28:00.000000"}], "components": ["Puppet Server"], "created": "2021-11-11T05:51:00.000000", "creator": "623c0dfe50bb2b0070b6b0b3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33b9e639"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0cfu0:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Nov/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_624515161_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:* 7.12.0\n*Puppet Server Version:* 7.12.1\n*OS Name/Version:* CentOS 7\n\nStarting with a puppetserver with a webserver configuration of the following\nto disable SSL.\n\n{noformat}\nwebserver: {\n    \"access-log-config\": \"/etc/puppetlabs/puppetserver/request-logging.xml\",\n    \"client-auth\": \"none\",\n    \"host\": \"0.0.0.0\",\n    \"port\": 8140,\n    \"shutdown-timeout-seconds\": 120\n}\n{noformat}\n\nThen puppet runs to this service (via a SSL terminating haproxy) result in an ERROR\n\n{noformat}\n2021-11-11T13:46:41.992+01:00 ERROR [qtp503110807-52] [puppetserver] Puppet The CRL is missing from '/var/lib/puppet/ssl/crl.pem'\n{noformat}\n\nand indeed it is  missing since this is a non SSL server it should not matter.\n\nWe did not observe this with puppetserver 6.11\n\n*Desired Behavior:*\nShould not be an SSL Error for a non SSL service.\n\n\n*Actual Behavior:*\npuppetserver logs presumably because it checks as aboive.\n\n\nPlease take a moment and attach any relevant log output and/or manifests. This will help us immensely when troubleshooting the issue.\n\nExamples:\nRun puppet agent with --test --trace --debug\n\nRelevant sections of {{/var/log/puppetlabs/puppetserver/puppetserver.log}} or any applicable logs from the same directory.\n\nFor more detailed information turn up the server logs by upping the log level in the server's logback.xml\n\nRelevant sections of configurations files (puppet.conf, hiera.conf, Server's conf.d, defaults/sysconfig)\n\nFor memory issues with server heap dumps are also helpful.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16640", "fixedVersions": [], "id": "16640", "issueType": "Bug", "key": "SERVER-3122", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0dfe50bb2b0070b6b0b3", "resolution": "Cannot Reproduce", "resolutionDate": "2021-11-18T11:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver checks CRL even when SSL is disabled", "timeSpent": "PT0S", "updated": "2021-11-18T11:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "61af86343618cd006f430854", "body": "not gonna do it, wouldn't be prudent\n\n\u00a0", "created": "2022-02-08T11:58:00.000000"}], "components": [], "created": "2021-11-10T12:13:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3098d0f0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0cf4o:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Feb/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_288197_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_7774789313"}], "description": "We have a way to directly export metrics out of puppetserver to graphite.\u00a0 This was the original way to export metrics before we added the jolokia HTTP endpoints to get metrics out.\u00a0\u00a0\n\nThe recommended way to get metrics out is the puppet-metrics-collector / puppet-metrics-dashboard modules which all use the HTTP endpoints.\u00a0\u00a0\n\n\u00a0\n\nWe should deprecate and maybe eventually remove the direct metrics export to graphite\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14841", "fixedVersions": [], "id": "14841", "issueType": "Improvement", "key": "SERVER-3121", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Won't Fix", "resolutionDate": "2022-02-08T11:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Deprecate the metrics graphite export functionality in favor of puppet-metrics-collector ", "timeSpent": "PT0S", "updated": "2022-02-08T13:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "61af86343618cd006f430854", "body": "Thank you for reporting this issue. While we agree this is likely an improvement, we do not anticipate addressing this any time soon due to other issues demanding precedence.\u00a0\n\nIf you are interested in submitting a patch to implement this issue, please open a pull request and reference this ticket.", "created": "2022-03-09T08:04:00.000000"}], "components": ["API", "Puppet Server"], "created": "2021-10-22T00:18:00.000000", "creator": "70121:50b59257-833b-4781-b2cd-bd1ad41bbf2d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ff7119"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91j"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Oct/21"}], "description": "*Puppet Version: 7.X*\n *Puppet Server Version: 7.X*\n *OS Name/Version: 20.04(focal)*\n\nCould you please add to Puppet::Server::HttpClient put and delete\n\nmethod. Now only post and get available [https://github.com/puppetlabs/puppetserver/blob/main/src/ruby/puppetserver-lib/puppet/server/http_client.rb]\n\n\u00a0", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "15874", "fixedVersions": ["None"], "id": "15874", "issueType": "New Feature", "key": "SERVER-3117", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:50b59257-833b-4781-b2cd-bd1ad41bbf2d", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement put and delete request for Puppet::Server::HttpClient", "timeSpent": "PT0S", "updated": "2022-03-09T09:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:623e754d94742a00683f7cf0] before we dig into this, do you happen to know if anything is wrong here?", "created": "2021-10-19T11:38:00.000000"}, {"author": "6243b74e247a4b00691c4151", "body": "I saw someone that had the same issue.\u00a0\n\nhttps://puppet.atlassian.net/browse/SERVER-2622", "created": "2021-10-20T02:03:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "hey [~accountid:6243b74e247a4b00691c4151], while we investigate this, are you able to use the metrics dashboard at all? [https://puppet.com/docs/puppet/7/server/puppet_server_metrics.html#using-the-sample-grafana-dashboard]\u00a0", "created": "2021-11-10T11:34:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "also [~accountid:6243b74e247a4b00691c4151]\u00a0did this issue arise in Puppet Server 7.4.0, or has this been a problem for a while now?", "created": "2021-11-10T11:35:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "More specifically than the grafana-dashboard.\u00a0 You can use the puppet-metrics-collector module to gather metrics from the HTTP endpoints and then send them to a graphite server.\u00a0\u00a0\n\nhttps://github.com/puppetlabs/puppetlabs-puppet_metrics_collector#metrics_server_type", "created": "2021-11-10T11:37:00.000000"}, {"author": "6243b74e247a4b00691c4151", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da] I think this issue popped up when we went from Puppet 5 to Puppet 7. I cannot pinpoint what version that was.\u00a0\n\n\u00a0\n\n[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]\u00a0We are using both Graphite and jmx_agent (We are trying to move away from Graphite, thus that's why we have both atm). The\u00a0puppet-metrics-collector does have the same issue. (all metrics except the compiler metrics)", "created": "2021-11-15T00:51:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:6243b74e247a4b00691c4151] thanks for that info.\u00a0 What information from the compiler metrics where you using and how was it helping you?\u00a0\u00a0", "created": "2021-12-08T11:31:00.000000"}, {"author": "6243b74e247a4b00691c4151", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] I was tasked with getting it in Prom so not sure what we were using that for before.", "created": "2021-12-17T02:01:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "I've also hit this.\u00a0 Spent all afternoon trying to get function and compiler metrics to be emitted (graphite into prometheus graphite exporter).\u00a0 Nothing I've tried has worked.\n\n\u00a0\n\nI'm on Puppet 6.24.0 and Puppetserver 6.16.1", "created": "2022-02-18T11:17:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "The documentation doesn't make it clear, (probably because it defaults to true), but I've just figured out you also need to make sure you don't have the 'profiler' setting disabled in puppetserver.conf\n\nIn my case, it was disabled as this is the default when configuring puppetserver using the theforeman/puppet module.\n\n(I'm going to open a PR to change this.)\u00a0", "created": "2022-02-21T03:33:00.000000"}, {"author": "6243b74e247a4b00691c4151", "body": "[~accountid:557058:054fa98a-5e29-48e7-aeca-d5542926f8ba] This was indeed the issue. Once we enabled the profiler setting, it worked fine.\n\n\u00a0", "created": "2022-03-24T07:25:00.000000"}], "components": ["Puppet Server"], "created": "2021-10-19T02:06:00.000000", "creator": "6243b74e247a4b00691c4151", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c43d9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8ri2404"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Oct/21"}], "description": "*Puppet Version:\u00a07.9.0*\n *Puppet Server Version: 7.4.0*\n *OS Name/Version: Centos7/3.10.0-957.12.2.el7.x86_64*\n\nWhen using the graphite metrics or jmx_agent for metrics, we get all the metrics except the compiler metrics. We did not disable these in our configs.\n\nWe are using the\u00a0[jmx_prometheus_javaagent-0.16.1.jar|https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar]. We also tried an empty config and we also don't get it there. When using tcpdump for the Graphite metrics, we get everything except the compiler metrics.\n\n*Desired Behavior:*\u00a0We want to have the compiler metrics\n\n*Actual Behavior:*\u00a0We are getting all metrics except the compiler metrics.\n\n\u00a0\n\n{code}\n#\n# Managed by Puppet\n#\n# settings related to metrics\nmetrics: {\n # a server id that will be used as part of the namespace for metrics produced\n # by this server\n server-id: \"puppetid.eu\"\n registries: {\n puppetserver: {\n # specify metrics to allow in addition to those in the default list\n metrics-allowed: [\n \"compiler\",\n ]\n\nreporters: {\n # enable or disable JMX metrics reporter\n jmx: {\n enabled: true\n }\n # enable or disable Graphite metrics reporter\n graphite: {\n enabled: true\n }\n }\n\n}\n }\n\n# this section is used to configure settings for reporters that will send\n # the metrics to various destinations for external viewing\n reporters: {\n graphite: {\n # graphite host\n host: \"graphitehost.eu\"\n # graphite metrics port\n port: 2003\n # how often to send metrics to graphite\n update-interval-seconds: 5\n }\n }\n metrics-webservice: {\n jolokia: {\n # Enable or disable the Jolokia-based metrics/v2 endpoint.\n # Default is true.\n # enabled: false\n\n# Configure any of the settings listed at:\n # https://jolokia.org/reference/html/agents.html#war-agent-installation\n servlet-init-params: {\n # Specify a custom security policy:\n # https://jolokia.org/reference/html/security.html\n # policyLocation: \"file:///etc/puppetlabs/puppetserver/jolokia-access.xml\"\n }\n }\n }\n\n}\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16639", "fixedVersions": [], "id": "16639", "issueType": "Improvement", "key": "SERVER-3116", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243b74e247a4b00691c4151", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "DOC: Compiler metrics require profiling to also be enabled", "timeSpent": "PT0S", "updated": "2022-06-02T10:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We think you might need to set {{-Djruby.debug.fullTrace=true}}. That's how you have to set it for {{JAVA_ARGS}}, or alternatively it can be set as {{debug.fullTrace=true}} in a {{.jrubyrc}} file in {{pe-puppet}}'s home directory. See https://github.com/jruby/jruby/wiki/JRuby-Options.\n\nThis [gist|https://gist.github.com/justinstoller/aa2f0ede214c42adede9278085a55051] is based on running from source, but contains a useful script that might help you simulate your reports.", "created": "2021-10-18T11:31:00.000000"}, {"author": "5a028139c24efb3c4ed448c4", "body": "I spent some time on this yesterday but I was unable to get this to pass that parameter in a way that had any effect. I tried the JAVA_ARGS method and .jrubyrc. Neither method got navigation to work. \n", "created": "2021-10-19T10:48:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]\u00a0will talk to Yasmin and Micah about the priority of this work.", "created": "2021-11-10T11:25:00.000000"}], "components": ["Puppet Server"], "created": "2021-10-15T16:02:00.000000", "creator": "5a028139c24efb3c4ed448c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "A package installed puppetserver instance should be able to execute via a puppetserver foreground session, and pry breakpoints should support navigation commands like `step` and `next`."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@96d743c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8ri25r"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Oct/21"}], "description": "When running puppetserver in a foreground session, pry navigation does not work.\n\nThe error supplied says\n\n\n{noformat}\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/pry-nav-0.3.0/lib/pry-nav/tracer.rb:38: warning: tracing (e.g. set_trace_func) will not capture all events without --debug flag\n{noformat}\n\n\nI have been unable to find a way to pass that flag, or another set of flags that will satisfy jruby an enable navigation commands like `next` or `step` to work.\n\nThis is a problem for development of products and features like report processors that run in the puppetserver process. It slows down development significantly if stepping into a function requires stopping the process entirely to put a new pry breakpoint in the spot you want to get to, and then starting the service again and starting another puppet run, etc, etc, to get back to the spot you need to get to.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17213", "fixedVersions": [], "id": "17213", "issueType": "Task", "key": "SERVER-3115", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a028139c24efb3c4ed448c4", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pry navigation does not work with puppetserver foreground", "timeSpent": "PT0S", "updated": "2022-03-09T09:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I can reproduce this and it looks to be an issue in puppetserver.", "created": "2021-10-13T16:04:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is an issue with the Clojure helpers that are used to generate the CA when {{puppetserver start}} is run without first running {{puppetserver ca setup}}. The latter uses Ruby code from the [CLI tool|https://github.com/puppetlabs/puppetserver-ca-cli].\n\nIt would be pretty simple for us to start using the {{keyid}} instead, but I didn't do it when I [updated the helpers|https://github.com/puppetlabs/jvm-ssl-utils/commit/a7d395bfca37173d1e9534146ad3abb4ca7bdb78] to support the {{keyid}}, because I was worried people would somehow be relying on the other form. If that's not true, I'm happy to switch it out.", "created": "2021-10-13T16:11:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "For what it's worth, if you don't have any Puppet 5 agents, {{puppetserver ca setup}} is the recommended way to generate the CA, because it generates a chain with a root CA cert and an intermediate signing CA cert, instead of signing everything with the self-signed root.", "created": "2021-10-13T17:19:00.000000"}, {"author": "70121:63e7c45a-e632-48a8-9d39-7a15d3538bc9", "body": "Thanks Maggie, I'll generate with that way !", "created": "2021-10-14T02:29:00.000000"}, {"author": "70121:63e7c45a-e632-48a8-9d39-7a15d3538bc9", "body": "FYI, I've got an answer from LibreSSL: https://github.com/libressl-portable/portable/issues/684#issuecomment-951005927", "created": "2021-10-25T10:02:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It sounds like there's are two issues here: this keyid problem and the CA cert's CN getting added as a subject alt name. I think we should probably fix both. There's a [PR|https://github.com/puppetlabs/puppet/pull/8801] for the latter, but I think we'd want to go a different route, and just not add the CN to the SANs for the signing certs.", "created": "2021-10-25T10:15:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] will update the description of this ticket to include our plans for fixing this.", "created": "2021-10-26T11:43:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "So coming back to this, I think the puppet PR is a band aid and I'm inclined to close. My understanding is that our CA shouldn't add a Subject Alternative Name extension to CA certs (root or intermediate). The SAN extension should only be added to leaf certs that may need to have multiple identities bound to the certificate.\n\nNote LibreSSL fails because we're using \"Puppet CA:\" as a dNSName in the Subject Alt Name extension, which is invalid. But it is ok to include as a \"dirName/directoryName\" in the Authority Key Identifier extension.\n\nThough for consistency, it would be good to always emit the Authority Key Identifier as a keyid instead of dirName. I think referencing the authority's key is more direct than referencing the serial number.", "created": "2021-11-01T15:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think this PR should fix both the issues mentioned in this ticket. https://github.com/puppetlabs/puppetserver/pull/2603", "created": "2022-01-05T16:34:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I verified that the CA CLI does not add alt names to either its [root cert|https://github.com/puppetlabs/puppetserver-ca-cli/blob/dd5f5363d49f8ba3397eb51b18aba54b9c9ed546/lib/puppetserver/ca/local_certificate_authority.rb#L230-L235] or its [intermediate signing cert|https://github.com/puppetlabs/puppetserver-ca-cli/blob/dd5f5363d49f8ba3397eb51b18aba54b9c9ed546/lib/puppetserver/ca/local_certificate_authority.rb#L280-L285], so we should be good there.", "created": "2022-01-07T11:52:00.000000"}], "components": [], "created": "2021-10-13T08:21:00.000000", "creator": "70121:63e7c45a-e632-48a8-9d39-7a15d3538bc9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74f8742"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0li"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* The self-signed CA signing cert generated by starting puppetserver will now use a keyid for its authority key identifier, to match the CA chain generated by `puppetserver ca setup`.\n* The CA signing cert no longer has subject alternative names added to it, since they are not meaningful."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_108478788_*|*_1_*:*_1_*:*_32155009_*|*_10007_*:*_1_*:*_155404113_*|*_3_*:*_1_*:*_17863574_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_12114_*|*_10005_*:*_1_*:*_7240825826"}], "description": "Hello,\n\nFollowing PA-3979, I found a weird puppet behavior during CA certificate generation.\nWhen generating the CA crt with \"puppetserver start\", \"Authority Key Identifier\" is set in the CA crt with the issuer :\n\n{noformat}\n\t\t\tX509v3 Authority Key Identifier: \n\t\t\t\tDirName:/CN=Puppet CA: puppet\n\t\t\t\tserial:01\n{noformat}\n\nIf I regenerate the CA crt with pupperserver ca setup, this field is filled with a keyid :\n\n{noformat}\n            X509v3 Authority Key Identifier: \n                keyid:04:27:BC:E8:9A:D9:15:9F:3F:1A:0F:F0:0D:71:99:65:60:CD:AE:75\n{noformat}\n\nThe issue is that LibreSSL get in trouble with the first one and cannot validate any certificate with it.\nWhy the behavior is different between the two ways of generation ?\n\nThanks in advance\n\n*To make Puppet Server generate certs with a keyid instead of a DirName:*\n* Update [this|https://github.com/puppetlabs/puppetserver/blob/9414c5eead642900230bae683cf70a820b859957/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L660] to use the new arity from [this PR|https://github.com/puppetlabs/jvm-ssl-utils/pull/116].", "environment": "Debian 10", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16034", "fixedVersions": ["SERVER 6.18.0", "SERVER 7.6.0"], "id": "16034", "issueType": "Bug", "key": "SERVER-3114", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:63e7c45a-e632-48a8-9d39-7a15d3538bc9", "resolution": "Done", "resolutionDate": "2022-01-08T17:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA Authority Key Identifier with issuer instead of keyid", "timeSpent": "PT0S", "updated": "2022-03-28T15:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "5e17c6830af0d70e911d48f8", "created": "2021-10-06T19:16:00.000000", "name": "image-2021-10-06-19-16-48-964.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11317"}], "comments": [], "components": ["Puppet Server"], "created": "2021-10-06T19:48:00.000000", "creator": "5e17c6830af0d70e911d48f8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f40590b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91k6"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Nov/21"}], "description": "*Problem:* The [External SSL Termination documentation|https://puppet.com/docs/puppet/7/server/external_ssl_termination.html] goes to lengths to suggest that {{allow-header-cert-info: true}}\u00a0is dangerous but it seems like it should be an easy fix.\n\n*Given:* Some of the most common proxies, HAproxy, nginx, Apache and probably others can be configured to present client certificates to HTTPS enabled backend servers.\n\n*Proposal:* When {{allow-header-cert-info: true}} use TLS certificate based authentication to only accept the {{x-client-*}} headers from trusted proxies.\n\n*Digram:* Something roughly like the following where the \"authorize\" step is the new feature.\n\n!image-2021-10-06-19-16-48-964.png!\n\nThough I have drawn the \"authorize\" step here at Jetty it could likely also be done at the TrapperKeeper auth middleware.\n\n*Notes:*\nSomewhere [in here|https://github.com/puppetlabs/trapperkeeper-authorization/blob/main/src/puppetlabs/trapperkeeper/authorization/ring_middleware.clj] maybe?\u00a0 (Sorry, not a TK/Clojure expert.)\n\n*Flexible implementation:*\nPerhaps it makes sense to even re-use the rules functionality.\u00a0 I can see two ways to go about it in auth.conf.\n # Add a new parameter maybe {{allow-header-cert-info-rules}}\n\u00a0{{authorization:}}\n{{\u00a0 {}}\n{{\u00a0 \u00a0 version: 1}}\n{{\u00a0 \u00a0 allow-header-cert-info: true}}\n{{\u00a0 \u00a0 allow-header-cert-info-rules: [...]}}\n{{\u00a0 \u00a0 rules: [...]}}\n{{\u00a0 }}}\n # Let the \"allow-header-cert-info\" parameter to be a boolean or list of \\{rules}\n{{authorization:}}\n{{\u00a0 {}}\n{{\u00a0 \u00a0 version: 1}}\n{{\u00a0 \u00a0 allow-header-cert-info: [...]}}\n{{\u00a0 \u00a0 rules: [...]}}\n{{\u00a0 }}}\n\n{{{{}}}}", "environment": "Puppet FOSS 6 w/ multiple compile masters and HAproxy w/ TCP load balancing.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "15240", "fixedVersions": [], "id": "15240", "issueType": "Improvement", "key": "SERVER-3113", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e17c6830af0d70e911d48f8", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Client cert authentication for allow-header-cert-info", "timeSpent": "PT0S", "updated": "2022-03-09T09:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "JRuby released a version with newer jruby-openssl, but we can't pick it up quite yet because of a bug. See SERVER-3133. But hopefully they will soon, and then we won't need this.", "created": "2022-01-04T12:13:00.000000"}, {"author": "61af86343618cd006f430854", "body": "will continue to rely on JRuby's vendor ssl", "created": "2022-02-08T12:00:00.000000"}], "components": [], "created": "2021-10-04T09:47:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d40afb1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0bluj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Feb/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_58879_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_10984294536"}], "description": "JRuby currently ships jruby-openssl 0.10.5, but there are newer versions of this openssl gem: current latest is 0.10.7. Some users have been reporting bugs that may be fixed in the later versions.\n\nWe should see if: \n* installing the latest version of jruby-openssl as a gem external to the jruby distribution (e.g. using our [build script|https://github.com/puppetlabs/puppetserver/blob/6.x/resources/ext/build-scripts/jruby-gem-list.txt]) successfully causes puppetserver to use the newer version, rather than the one that's shipped inside Jruby. \n* If this works, we need to verify that using the newer one doesn't cause any issues. \n* If there are surmountable issues, file separate tickets for solving them and doing the update.\n* Otherwise, let's start shipping it (and can use this ticket for that update).\n\n\nIf it doesn't work, we should file an issue with JRuby at least asking why they haven't picked up the newer version. It could be they're picking it up in 9.3.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16638", "fixedVersions": [], "id": "16638", "issueType": "Task", "key": "SERVER-3112", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-02-08T12:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "[SPIKE] Is it feasible to vendor newer jruby-openssl as an installed gem?", "timeSpent": "PT0S", "updated": "2022-02-08T12:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2021-09-29T16:38:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c52b31a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8uc"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server is now being tested on Rocky and Alma Linux. Use the EL8 packages on these operating systems."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_243087868_*|*_1_*:*_1_*:*_9225_*|*_10007_*:*_1_*:*_76924139_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_9270287841_*|*_10005_*:*_1_*:*_1106996820"}], "description": "We're replacing Centos 8 with Rocky and Alma support in 7.x. We should test the RHEL packages on these hosts, in FOSS and PE, to make sure they're as compatible as they claim.\n\nI don't have strong opinions about where we add these. We weren't previously bothering to test on Centos 8 in most places, so it won't just be a replacement of those cells. Maybe just to smoke tests in both the Puppetserver and pe-pse pipelines? And/or as one of the compilers in the more complex pe-pse pipelines?\n\nWe'll need to make sure that our jobs know that these new platforms should use EL 8 packages.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15229", "fixedVersions": ["SERVER 7.6.1"], "id": "15229", "issueType": "Task", "key": "SERVER-3099", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2022-01-31T11:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add Rocky and Alma cells to the test matrices", "timeSpent": "PT0S", "updated": "2022-03-15T12:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "attachments": [], "comments": [{"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] when we are troubleshooting an issue with jruby pool locking are we recommending that customers enable lockless deploys in puppetserver?   ", "created": "2021-09-28T09:19:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "So far, the support team has held off on reflexively recommending lockless because customers tend to be a few patch versions behind and significant fixes are still landing.", "created": "2021-12-03T10:59:00.000000"}, {"author": "61af86343618cd006f430854", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da] I believe you may have previously merged these changes and my hope is that this ticket can be closed as Fixed. Can you take a look and see what's actually left on this one? (No need to treat as an interrupter, just a background task). Thanks!", "created": "2022-03-09T07:36:00.000000"}], "components": [], "created": "2021-09-27T16:00:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c09d07c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8ri244"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The JRuby lock lifecycle of request, acquire, release is now logged at the INFO level, rather than DEBUG."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Sep/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_657034_*|*_10007_*:*_1_*:*_14065750578_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Server Version: Latest\n*OS Name/Version: Any\n\nThe JRuby pool used by Puppet Server and PE Orchestrator has a lock functionality that is used, notably by Code Manager, to drain in-flight requests in order to gain exclusive access to file resources used by JRuby.\n\nThe lifecycle of requesting, acquiring, and releasing this lock has a critical impact on JRuby availability and thus on service performance. The following messages around the lock lifecycle logged at DEBUG level:\n\n{noformat}\n2021-09-25T17:01:38.280Z DEBUG [clojure-agent-send-off-pool-4596] [p.s.j.jruby-core] Acquiring lock on JRubyPool...\n2021-09-25T17:01:38.280Z DEBUG [clojure-agent-send-off-pool-4596] [p.s.j.jruby-core] Lock acquired\n2021-09-25T17:02:36.446Z DEBUG [clojure-agent-send-off-pool-4596] [p.s.j.jruby-core] Lock on JRubyPool released\n{noformat}\n\nDue to the critical nature of this workflow, these messages should be logged at INFO level to facilitate post-mortem debugging.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14840", "fixedVersions": ["SERVER 6.19.0", "SERVER 7.6.1"], "id": "14840", "issueType": "Improvement", "key": "SERVER-3098", "labels": ["docs_reviewed", "low-hanging-fruit"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2022-03-09T10:20:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby pool lock lifecycle should be logged at INFO level", "timeSpent": "PT0S", "updated": "2022-03-15T12:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks for the ticket, I believe we have some internal work towards this being prioritized. I've labeled this so our Product Owner can link this to the relevant internal tickets.", "created": "2021-09-28T11:41:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Nick has given us the go-ahead to do this somewhat soon, but it's not super high priority.\n\nWe should get tickets generated for this work and coordinate with PuppetDB on the timing.", "created": "2021-11-10T11:11:00.000000"}, {"author": "6243b1e6f6a26900695c26e4", "body": "Is there a definition what \"somewhat soon, but it's not super high priority\" means? ", "created": "2021-11-26T02:27:00.000000"}, {"author": "623c0d45ee1b5a007029329a", "body": "We are also waiting for this package.\nDo you know when the puppetserver for the bullseye puppet6 and puppet7 will be available?\n\n\u00a0", "created": "2021-11-26T04:56:00.000000"}, {"author": "70121:cc8549d3-f905-428a-8b68-113da090ba09", "body": "I'd like to add myself to the list of people that are eagerly waiting for the puppetserver package for Debian 11. Bullseye became stable over 3 months ago and my company already began migration to the new Debian release. So yeah, we'd greatly appreciate puppetserver package for Bullseye :)", "created": "2021-11-26T12:51:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "hey folks, we are hoping to land this in our January release. Thanks for your patience!", "created": "2021-12-01T17:00:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Note: we only plan to add Debian 11 support to the puppet7 stream, NOT puppet6.  /cc [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]", "created": "2021-12-16T14:44:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "These packages should be available in the next release (puppetserver 7.6.0).", "created": "2022-01-11T12:00:00.000000"}], "components": [], "created": "2021-09-22T06:43:00.000000", "creator": "623c0b71a1d81f0069d8de25", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@305e70f5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0lzi"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "https://puppet.atlassian.net/browse/PE-33253 should cover the docs and release notes for this"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Sep/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_337749201_*|*_1_*:*_2_*:*_536378023_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_73118_*|*_10005_*:*_2_*:*_8739113481"}], "description": "Would it be possible to create packages for Debian 11 (bullseye)?\n\nCurrently, I can only find packages for puppet-agent in:\n * [https://nightlies.puppetlabs.com/apt/pool/bullseye/puppet7-nightly/p/]\n * [https://apt.puppetlabs.com/pool/bullseye/puppet7/p/]\n\nThanks!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14839", "fixedVersions": ["SERVER 7.6.0"], "id": "14839", "issueType": "Bug", "key": "SERVER-3096", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0b71a1d81f0069d8de25", "resolution": "Fixed", "resolutionDate": "2022-01-11T12:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Package puppetserver for Debian 11 (bullseye)", "timeSpent": "PT0S", "updated": "2022-03-28T15:49:00.000000", "votes": "8", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There is a PR that starts dealing with this, needs a bit of work https://github.com/puppetlabs/puppetserver/pull/2505", "created": "2021-09-21T15:40:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "^ we'll just need to validate that that fixes this issue", "created": "2021-09-21T16:10:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "FWIW, the description of this ticket is really for the work I've done here: \u00a0[puppetlabs/pupperware#272|https://github.com/puppetlabs/pupperware/pull/272]\n\nWhile the upgrade scenario of a 6.x -> 7.x server is handled in the already linked pr: [https://github.com/puppetlabs/puppetserver/pull/2505]\n\nThe latter depends on the former, and both should be merged to bring the Puppet Server / Puppetware docker containers up to snuff.\n\nI'm concerned about users pulling down the newest docker image (once we release the above change) into an existing pupperware cluster that isn't using the above pupperware changes. The image start up will migrate the existing CA into a still inaccessible path, basically wiping out their CA. Does anyone know of a way to ensure the image isn't taken up w/o first upgrading the volume mounts?", "created": "2022-03-01T12:25:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This has been merged and should be available in the head of pupperware and the edge puppetserver container.", "created": "2022-04-13T11:15:00.000000"}], "components": ["Puppet Server"], "created": "2021-09-20T09:46:00.000000", "creator": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3501fe3e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0u99"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_107547144_*|*_10007_*:*_1_*:*_3707399553_*|*_3_*:*_1_*:*_437033664_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_13463470565_*|*_10005_*:*_1_*:*_1864557"}], "description": "*Summary:*\nAfter upgrading the puppetserver container, the CA directory is gone and therefore *nothing* work.\n\n----\n\nThis issue concerns puppetserver run as a docker container.\n\nThe project https://github.com/puppetlabs/puppetserver/ does not have its own Issue tracking at github (as pupperware do), so I file this ticket here at tickets.puppetlabs.com instead:\n\n*Puppet Server Version:* All (the container currently use 7.4.0-1bionic)\n*OS Name/Version:* Any linux (probably the same problem in Windows)\n\n\nThis bug is so huge I really can't believe it exists.\nIt also means that no one must have ever upgraded their puppetserver container, or they would have experienced the same.\n\nCRITICAL fault:\n\nInside the container we have:\n{noformat}\n# ls -l /etc/puppetlabs/puppet/ssl\nlrwxrwxrwx 1 puppet puppet   31 Sep 20 14:59 ca -> /etc/puppetlabs/puppetserver/ca\ndrwxr-xr-x 2 puppet puppet 4096 Sep 20 14:59 certificate_requests\ndrwxr-xr-x 2 puppet puppet 4096 Sep 20 14:59 certs\n-rw-r--r-- 1 puppet puppet 1994 Sep 20 14:59 crl.pem\ndrwxr-x--- 2 puppet puppet 4096 Sep 20 14:59 private\ndrwxr-x--- 2 puppet puppet 4096 Sep 20 14:59 private_keys\ndrwxr-xr-x 2 puppet puppet 4096 Sep 20 14:59 public_keys\n{noformat}\n\nThe directory {{/etc/puppetlabs/puppet}} is mounted in the persistent volume {{compose-services_puppetserver-config}}.\nHowever, see how the {{ca}} directory is symlinked away to another place, {{/etc/puppetlabs/puppetserver/ca}}.\nThis place is volatile!!! It's part of the container's own filesystem, which is gone if you e.g. upgrade the container to a new version of puppetserver.\n\nAfter an upgrade, and the new container start, that place is empty.\nSo the {{ca}} symlink now point to an empty directory, and the entire puppet server stop working, 'cause all certificate lookup calls (like {{\"GET /puppet-ca/v1/certificate/ca HTTP/1.0\"}}) now get a 404 not found.\n\n*Desired Behavior:*\nAll important files must be stored in a persistent volume.\n\n*Actual Behavior:*\nThe {{ca}} files are stored in the container image's own filesystem.\nAs long as one keep this docker overlay2 layer, things work fine (including reboots).\nBut if you upgrade the container to a new version (like from v7.3.0 to 7.4.0), the new puppetserver 7.4.0 will not work.\nPS: The old overlay filesystem is also removed when the new image is pulled and started, so you can't even extract a copy of your old CA files. They are gone.\n\nExample of my setup:\nI configure pupperware to install puppetserver v7.3.0 (and db7.5.2) and bring it up with: docker-compose up -d.\nAll is good. CA certificate files are created. All agents can connect and run puppet just fine.\n\nPuppetserver 7.4.0 is released. I take the stack down:\ndocker-compose down\nI configure pupperware to install puppetserver v7.4.0 (and db7.6.0).\ndocker-compose up -d\nNow the 7.4.0 image is pulled and the stack is started.\n\nThe new 7.4.0-server, with its new container image, lack the CA files where the symlink point, so everything stop working. No agents can connect.\n\n----\n\nSince /etc/puppetlabs/puppet is mounted to a persistent volume, files in the subdir /etc/puppetlabs/puppet/ssl/* is already persistent. I don't understand why /etc/puppetlabs/puppet/ssl/ca is symlinked off to another place.\nWhy not simply skip the symlink and leave the files in ssl/? Problem solved?\nThe only explaination I can think of is a human ooops: Perhaps this symlink is some old attempt to place the CA files in the persistent volume {{compose-services_puppetserver-data}} (not {{-config}}), but instead of linking to /opt/puppetlabs/server/data/puppetserver/ca it became /etc/puppetlabs/puppetserver/ca, i.e. the wrong 'puppetserver' dir.\n\n----\n\nJust a paste of my own debug history:\nIn the 7.3.0-server, I create a file, via exec inside the container:\n{noformat}\ntouch /etc/puppetlabs/puppet/ssl/ca/foobar.tmp\nexit\nupdatedb\nlocate foobar.tmp\n/var/lib/docker/overlay2/e7e17620cd11d7d4d888532c95eff0d099044bba98e077c1039116a75d37ecec/diff/etc/puppetlabs/puppetserver/ca/foobar.tmp\n/var/lib/docker/overlay2/e7e17620cd11d7d4d888532c95eff0d099044bba98e077c1039116a75d37ecec/merged/etc/puppetlabs/puppetserver/ca/foobar.tmp\n{noformat}\nMy file (and the ca files) are placed in overlay e7e17620...\nI now take down the stack and upgrade.\n7.4.0 (and db7.6.0) is pulled and started.\nI exec into 7.4.0 and my file (and the ca files) are gone.\nI create foobar2.txt and exit back to the docker mother.\n{noformat}\n# locate foobar2.tmp\n/var/lib/docker/overlay2/66717a12d1632c7f18ef12162020d683f3096780da2478605a5ded3def7510b9/diff/etc/puppetlabs/puppetserver/ca/foobar2.tmp\n/var/lib/docker/overlay2/66717a12d1632c7f18ef12162020d683f3096780da2478605a5ded3def7510b9/merged/etc/puppetlabs/puppetserver/ca/foobar2.tmp\n{noformat}\nfoobar2.txt is created in the image filesystem of puppetserver:7.4.0 (overlay 66717a12...). \nThe old overlay e7e17620... no longer exists, so I can't even try to get the original CA files back. The files are gone.", "epicLinkSummary": "Puppet Server Docker Improvements", "estimate": "PT0S", "externalId": "15872", "fixedVersions": [], "id": "15872", "issueType": "Bug", "key": "SERVER-3094", "labels": [], "originalEstimate": "PT0S", "parent": "16299", "parentSummary": "Puppet Server Docker Improvements", "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "resolution": "Fixed", "resolutionDate": "2022-04-13T11:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "docker container: Critical: CA files stored in volatile storage", "timeSpent": "PT0S", "updated": "2022-04-13T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c0bdd4a57610068e74367", "body": "Hello,\n\nany update about this issue ? We just need to add `openjdk-11-jre-headless` in `PACKAGES` I guess ?\n\n[https://github.com/puppetlabs/puppetserver/blob/main/docker/puppetserver/Dockerfile#L10]\n\nIt's also possible to add this change on Puppetserver 6.X ?\n\nRegards,", "created": "2022-08-08T07:33:00.000000"}], "components": [], "created": "2021-09-18T09:51:00.000000", "creator": "623a4c909b54ec0068b0740c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32acc89e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:90c"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Aug/22"}], "description": "Recently both PuppetDB and Puppet Server enabled TLSv1.3 support by default, but this is unusable with the published Docker containers as they use the Java 8 JRE rather than the Java 11 JRE.\n\nGiven the TLSv1.3 support I assume that Java 11 is supported, and Java 11 is included in the Ubuntu 18.04 base image that the container uses, so I believe that this should be a one-line change in the Dockerfile.", "environment": "Docker containers as published by the Puppet Server project, which use Ubuntu 18.04 (Bionic).", "epicLinkSummary": "Puppet Server Docker Improvements", "estimate": "PT0S", "externalId": "17465", "fixedVersions": [], "id": "17465", "issueType": "Improvement", "key": "SERVER-3093", "labels": ["docker", "low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "16299", "parentSummary": "Puppet Server Docker Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4c909b54ec0068b0740c", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docker: please update Java to 11 or higher", "timeSpent": "PT0S", "updated": "2022-08-08T07:33:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Should look into making winston conditionally create \"publish/ship\" tickets so we don't create a bunch of tickets and then have to close them. I found that process confusing and assumed the tickets were mistakes.", "created": "2021-10-11T15:35:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Some winston/tefoji work is being done in the 7.4.1 ticket.", "created": "2021-10-18T17:41:00.000000"}], "components": [], "created": "2021-09-16T15:37:00.000000", "creator": "61af7ccdc75da800725247ff", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@592c9b03"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11253"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b8ix:i"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Oct/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_434972611_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2337245721"}], "description": "(Initial planned release date: 2021-10-12)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.17.0\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-10-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.25.0 Release - 2021-10-12\n", "estimate": "PT0S", "externalId": "16636", "fixedVersions": [], "id": "16636", "issueType": "Task", "key": "SERVER-3092", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20219", "parentSummary": "Puppet Platform 6.25.0 Release - 2021-10-12\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61af7ccdc75da800725247ff", "resolution": "Fixed", "resolutionDate": "2021-10-18T17:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.17.0)", "timeSpent": "PT0S", "updated": "2021-10-18T17:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "covered by https://puppet.atlassian.net/browse/RE-14322", "created": "2021-09-21T16:28:00.000000"}], "components": [], "created": "2021-09-16T15:37:00.000000", "creator": "61af7ccdc75da800725247ff", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@303aaf06"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11253"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b9gj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_435053123_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-10-12)\n\nIf this release is part of a larger Puppet Platform release, you can close this ticket.\n\nOtherwise, ship puppetserver artifacts using the [puppetserver shipping pipeline|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_ship-puppetserver_stage-foss-artifacts_standalone/].\n", "duedate": "2021-10-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.25.0 Release - 2021-10-12\n", "estimate": "PT0S", "externalId": "16293", "fixedVersions": [], "id": "16293", "issueType": "Task", "key": "SERVER-3091", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20219", "parentSummary": "Puppet Platform 6.25.0 Release - 2021-10-12\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61af7ccdc75da800725247ff", "resolution": "Duplicate", "resolutionDate": "2021-09-21T16:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ship artifacts (Puppet Server 6.17.0)", "timeSpent": "PT0S", "updated": "2021-09-21T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2021-09-16T15:37:00.000000", "creator": "61af7ccdc75da800725247ff", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54a1f5e6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11253"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b8ix:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_435106698_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1442169444"}], "description": "(Initial planned release date: 2021-10-12)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 6.17.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.17.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2021-10-01T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.25.0 Release - 2021-10-12\n", "estimate": "PT0S", "externalId": "16030", "fixedVersions": [], "id": "16030", "issueType": "Task", "key": "SERVER-3090", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20219", "parentSummary": "Puppet Platform 6.25.0 Release - 2021-10-12\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61af7ccdc75da800725247ff", "resolution": "Fixed", "resolutionDate": "2021-10-08T09:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 6.17.0)", "timeSpent": "PT0S", "updated": "2021-10-08T09:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Notes:\n\nTicketmatch reports\n # SERVER-2998 - unresolved and missing release notes. Is an epic, notes are on contained stories\n # SERVER-3078 - missing release notes. Is actually a ticket to update docs, probably should have been a DOCS ticket.\n\nWe won't be disabling promotion in a more traditional way, but after the release we will be switching the pipelines to a private repo.\n\nProject version has already been bumped.", "created": "2021-10-08T15:54:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "tagged, build available at http://builds.delivery.puppetlabs.net/puppetserver/6.17.0/", "created": "2021-10-08T16:31:00.000000"}], "components": [], "created": "2021-09-16T15:37:00.000000", "creator": "61af7ccdc75da800725247ff", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@209a7b40"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11253"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b8iw:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Oct/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_435156258_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1468877555"}], "description": "(Initial planned release date: 2021-10-12)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n  ** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n  ** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n  ** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n  ** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n  ** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n  ** If you haven't already, notify the puppet-agent release lead that puppetserver 6.17.0 is built and ready for testing.\n", "duedate": "2021-10-01T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.25.0 Release - 2021-10-12\n", "estimate": "PT0S", "externalId": "15871", "fixedVersions": [], "id": "15871", "issueType": "Task", "key": "SERVER-3089", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20219", "parentSummary": "Puppet Platform 6.25.0 Release - 2021-10-12\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61af7ccdc75da800725247ff", "resolution": "Fixed", "resolutionDate": "2021-10-08T16:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Server 6.17.0)", "timeSpent": "PT0S", "updated": "2021-10-08T16:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2021-09-16T15:27:00.000000", "creator": "61af7ccdc75da800725247ff", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26d2f757"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11243"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b8iy:k"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_437907692_*|*_3_*:*_1_*:*_152236787_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2334949818"}], "description": "(Initial planned release date: 2021-10-12)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.4.1\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-10-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.12.0 Release - 2021-10-12\n", "estimate": "PT0S", "externalId": "14838", "fixedVersions": [], "id": "14838", "issueType": "Task", "key": "SERVER-3088", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25574", "parentSummary": "Puppet Platform 7.12.0 Release - 2021-10-12\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61af7ccdc75da800725247ff", "resolution": "Fixed", "resolutionDate": "2021-10-20T11:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.4.1)", "timeSpent": "PT0S", "updated": "2021-10-20T11:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "covered by https://puppet.atlassian.net/browse/RE-14319", "created": "2021-09-21T17:05:00.000000"}], "components": [], "created": "2021-09-16T15:27:00.000000", "creator": "61af7ccdc75da800725247ff", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a313625"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11243"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b98j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_437868853_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-10-12)\n\nIf this release is part of a larger Puppet Platform release, you can close this ticket.\n\nOtherwise, ship puppetserver artifacts using the [puppetserver shipping pipeline|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_ship-puppetserver_stage-foss-artifacts_standalone/].\n", "duedate": "2021-10-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.12.0 Release - 2021-10-12\n", "estimate": "PT0S", "externalId": "17464", "fixedVersions": [], "id": "17464", "issueType": "Task", "key": "SERVER-3087", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25574", "parentSummary": "Puppet Platform 7.12.0 Release - 2021-10-12\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61af7ccdc75da800725247ff", "resolution": "Duplicate", "resolutionDate": "2021-09-21T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ship artifacts (Puppet Server 7.4.1)", "timeSpent": "PT0S", "updated": "2021-09-21T17:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [], "components": [], "created": "2021-09-16T15:27:00.000000", "creator": "61af7ccdc75da800725247ff", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e9cd156"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11243"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b8iy:i"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_437918214_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1439960177"}], "description": "(Initial planned release date: 2021-10-12)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.4.1\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.4.1\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2021-10-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.12.0 Release - 2021-10-12\n", "estimate": "PT0S", "externalId": "17212", "fixedVersions": [], "id": "17212", "issueType": "Task", "key": "SERVER-3086", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25574", "parentSummary": "Puppet Platform 7.12.0 Release - 2021-10-12\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61af7ccdc75da800725247ff", "resolution": "Fixed", "resolutionDate": "2021-10-08T09:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.4.1)", "timeSpent": "PT0S", "updated": "2021-10-08T09:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ticketmatch found exactly zero things wrong:\n{code:java}\n----- Git commits in Jira -----\nALL COMMIT TOKENS WERE FOUND IN JIRA----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA----- Tickets missing release notes -----\nALL ISSUES CONTAIN RELEASE NOTES {code}\nWe won't be disabling promotion in a more traditional way, but after the release we will be switching the pipelines to a private repo.\n\nProject version has already been bumped.", "created": "2021-10-08T16:31:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Tagged and packages available here: [http://builds.delivery.puppetlabs.net/puppetserver/7.4.1/]", "created": "2021-10-08T16:50:00.000000"}], "components": [], "created": "2021-09-16T15:27:00.000000", "creator": "61af7ccdc75da800725247ff", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5495d380"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11243"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b8iy:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Oct/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_437927430_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1467886809"}], "description": "(Initial planned release date: 2021-10-12)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n  ** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n  ** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n  ** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n  ** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n  ** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n  ** If you haven't already, notify the puppet-agent release lead that puppetserver 7.4.1 is built and ready for testing.\n", "duedate": "2021-10-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.12.0 Release - 2021-10-12\n", "estimate": "PT0S", "externalId": "16877", "fixedVersions": [], "id": "16877", "issueType": "Task", "key": "SERVER-3085", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25574", "parentSummary": "Puppet Platform 7.12.0 Release - 2021-10-12\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61af7ccdc75da800725247ff", "resolution": "Fixed", "resolutionDate": "2021-10-08T16:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Server 7.4.1)", "timeSpent": "PT0S", "updated": "2021-10-08T16:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "body": "I'm closing my own ticket.\n\nI misunderstood. The env-variables are set globally from docker run or docker-compose.\nNo need to replace the \"placeholders\".\n", "created": "2021-09-20T13:10:00.000000"}], "components": ["Puppet Server"], "created": "2021-09-14T06:03:00.000000", "creator": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c831f5d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b60r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20187860_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_523826166"}], "description": "Update:\nI misunderstood. The env-variables are set globally from docker run or docker-compose.\nNo need to replace the \"placeholders\".\nClosing this ticket.\n\n----\n\nOriginal report:\nThis ticket should probably be fixed at the same time as SERVER-3083, since they are exactly the same, and the fix take place in the same file ({{45-update-puppetserver-conf.sh}}).\n\n{noformat}\n    # (optional) maximum number of JRuby instances to allow\n    max-active-instances: ${PUPPETSERVER_MAX_ACTIVE_INSTANCES}\n\n    # (optional) number of HTTP requests a given JRuby instance will handle in its lifetime\n    max-requests-per-instance: ${PUPPETSERVER_MAX_REQUESTS_PER_INSTANCE}\n{noformat}\nThe two variables/placeholders above should be replaced with a custom or default value.\n\n\nUnlike $LOGDIR, the above two variables are described in the instructions at https://hub.docker.com/r/puppet/puppetserver but they don't seem to be used.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16292", "fixedVersions": [], "id": "16292", "issueType": "Bug", "key": "SERVER-3084", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "resolution": "Won't Do", "resolutionDate": "2021-09-20T13:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "docker: puppetserver.conf PUPPETSERVER_MAX_ACTIVE_INSTANCES etc unhandled", "timeSpent": "PT0S", "updated": "2021-09-20T13:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "body": "I'm closing my own ticket since I misunderstood how the logging is performed in the container.", "created": "2021-09-20T13:04:00.000000"}], "components": ["Puppet Server"], "created": "2021-09-14T05:52:00.000000", "creator": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver (container) should log to the default file by default."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43c99a9f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b603:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20834639_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_523532780"}], "description": "Update:\nHmmm, I think I have misunderstood.\nIt seems like all logging from the container (webserver and puppetserver) is sent to stdout.\nI assume I'm supposed to get it via {{docker logs}} and not directly via files under the container's /var/log/\n\n\n----\n----\n\n\nOriginal report:\n\n*Puppet Server Version:* All (the container currently use 7.3.0-1bionic)\n*OS Name/Version:* Any linux (probably the same problem in Windows)\n\nThis issue concerns puppetserver run as a docker container.\n\nThe project https://github.com/puppetlabs/puppetserver/ does not have its own Issue tracking at github (as pupperware do), so I file this ticket here at tickets.puppetlabs.com instead:\n\nAfter starting puppetserver via Docker, the template file {{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}} is never updated, leaving {{master-log-dir}} configuration like this:\n{noformat}\n    # (optional) path to puppet log dir; if not specified, will use\n    # /var/log/puppetlabs/puppetserver\n    master-log-dir: ${LOGDIR}\n{noformat}\n\n*Desired Behavior:*\nThe variable should be replaced with\n1) custom path, if any was specified when starting the container (see below)\n2) or \"/var/log/puppetlabs/puppetserver\" per default\n\n*Actual Behavior:*\nmaster-log-dir is literally set to ${LOGDIR}.\nSince this env variable is not set anywhere, it is empty, and puppetserver therefore don't log to file. :-(\n\n----\n\nIn {{puppetserver.conf}}, all other paths are hardcoded (ex: master-conf-dir: /etc/puppetlabs/puppet). No variables are used. \nThe container setup scripts should therefore do the same for {{master-log-dir}}.\nThat is, replace the placeholder '${LOGDIR}' with the actual path\n(don't solve this by assigning the $LOGDIR variable in some global system file).\n\nSee {{40-update-puppetdb-conf.sh}} for a good example of both filename and contents.\nPerhaps you should add the file {{45-update-puppetserver-conf.sh}} and sed the LOGDIR placeholder.\n(also see SERVER-3084 and fix this at the same time)\n\nAlso, the instructions at https://hub.docker.com/r/puppet/puppetserver lack any information regarding $LOGDIR, so add a section.\n\nPS: When I tried to find where the logging was setup I only found this file:\nhttps://github.com/puppetlabs/puppetserver/blob/6.x/docker/puppetserver/docker-entrypoint.d/90-log-config.sh\nThe filename could state it should setup the log config, but the contents has nothing to do with log setup, rather config printing.\nI think you should rename that file to {{90-print-config.sh}}.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15440", "fixedVersions": [], "id": "15440", "issueType": "Bug", "key": "SERVER-3083", "labels": ["container", "docker", "puppetserver"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "resolution": "Won't Do", "resolutionDate": "2021-09-20T13:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "docker: puppetserver.conf LOGDIR unhandled", "timeSpent": "PT0S", "updated": "2021-09-20T13:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2021-09-13T00:55:00.000000", "creator": "5fd8f370208dbf0107d2bc4c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68e193d4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b4vv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_44580834_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17211", "fixedVersions": [], "id": "17211", "issueType": "Sub-task", "key": "SERVER-3082", "labels": [], "originalEstimate": "PT0S", "parent": "16635", "parentSummary": "Problem uploading new CRL to Puppet Server with Intermediate CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5fd8f370208dbf0107d2bc4c", "resolution": "Duplicate", "resolutionDate": "2021-09-13T13:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TEST", "timeSpent": "PT0S", "updated": "2021-09-13T13:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2021-09-13T00:55:00.000000", "creator": "5fd8f370208dbf0107d2bc4c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c9deba0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b4vf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_44572584_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16875", "fixedVersions": [], "id": "16875", "issueType": "Sub-task", "key": "SERVER-3081", "labels": [], "originalEstimate": "PT0S", "parent": "16635", "parentSummary": "Problem uploading new CRL to Puppet Server with Intermediate CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5fd8f370208dbf0107d2bc4c", "resolution": "Duplicate", "resolutionDate": "2021-09-13T13:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "DEV", "timeSpent": "PT0S", "updated": "2021-09-13T13:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [{"attacher": "5fd8f370208dbf0107d2bc4c", "created": "2021-10-01T05:38:00.000000", "name": "intermediate.crl.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11250"}, {"attacher": "5fd8f370208dbf0107d2bc4c", "created": "2021-10-01T05:38:00.000000", "name": "intermediate.crl.with.revoke.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11171"}, {"attacher": "5fd8f370208dbf0107d2bc4c", "created": "2021-10-01T05:38:00.000000", "name": "root.crl.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11094"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I was unable to reproduce this issue with my certificates. I'll try following the steps in your blogpost next.\n\nHowever, generally speaking, the reason the errors are vague is that the underlying SSL libraries are also exceedingly vague in their errors. There is very little information to work with, which is possibly partly by design on the library's part, it being so concerned with the key pieces of a system's security setup.\n\nIf I can reproduce this, there might be better messaging we can add, but lacking that, maybe there are docs improvements that could be made.", "created": "2021-09-29T17:55:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Following the instructions in your blog post, I noticed that CRLs generated do not have the {{Authority Key Identifier}} extension. We rely on this -- specifically the {{keyid}} version of it -- to make sure we're replacing the right CRLs in the chain. Since this is the field that associates a CRL with its cert, if a CRL doesn't have one, we won't be able to identify it in your submission. See the source code [here|https://github.com/puppetlabs/puppetserver/blob/01acfc93749ecaa8214ffc87d4b86381ff738ec5/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1469-L1484]. In your case, this can be accomplished by adding {{crl_extensions = crl_ext}} to the {{CA_default}} section of your {{openssl.cnf}}. The {{crl_ext}} section below already contains the right config, {{authorityKeyIdentifier = keyid:always}}, it just wasn't being used with those commands from your blogpost.\n\nThe good news is, I think we can surface this requirement through a better error message, and update the docs to make it clear this is required. Thanks for the report!", "created": "2021-09-30T10:40:00.000000"}, {"author": "5fd8f370208dbf0107d2bc4c", "body": "Adding\u00a0{{crl_extensions = crl_ext}} does not solve the issue. So I created 2 gists with my current openssl configuration including the crl extensions.\n\nroot ca\n [https://gist.github.com/tom-krieger/c969f94ac7d179913d52bbec293d6989]\n\nintermediate ca\n [https://gist.github.com/tom-krieger/035daf0bafe797b8c7ed2864be9d13f7]\n\n\u00a0\n\nFor PE installation I have a root crl and an intermediate crl. Both I attach as files to this ticket. I created a server certificate with my intermediate ca and revoked it again. So I got a second crl for my intermediate CA which I want to upload after PE was fully installed. I used 2 days for crl lifetime default. In PE I see the two crls with 1 day left until expiry. So the import of the crl bundle during installation works.\n\nWhat I see from the root ca crl is:\n{code:java}Certificate Revocation List (CRL):\n        Version 2 (0x1)\n    Signature Algorithm: sha256WithRSAEncryption\n        Issuer: /C=DE/ST=Bavaria/L=Amberg/O=Toms Home Datacenter/OU=IT/CN=Puppet Root CA/emailAddress=admin@tom-krieger.de\n        Last Update: Oct  1 10:19:50 2021 GMT\n        Next Update: Oct  3 10:19:50 2021 GMT\n        CRL extensions:\n            X509v3 Authority Key Identifier: \n                keyid:EF:1B:1E:C7:DE:5B:A9:9F:13:B1:51:0C:BC:35:C4:D3:B4:9B:94:87            X509v3 CRL Number: \n                4096\nNo Revoked Certificates.\n    Signature Algorithm: sha256WithRSAEncryption\n{code}\nFor the intermediate CA crl it looks like this before revoking a cert:\n{code:java}Certificate Revocation List (CRL):\n        Version 2 (0x1)\n    Signature Algorithm: sha256WithRSAEncryption\n        Issuer: /C=DE/ST=Bavaria/O=Toms Home Datacenter/OU=IT/CN=Puppet Intermediate CA/emailAddress=admin@tom-krieger.de\n        Last Update: Oct  1 10:20:03 2021 GMT\n        Next Update: Oct  3 10:20:03 2021 GMT\n        CRL extensions:\n            X509v3 Authority Key Identifier: \n                keyid:4C:EB:CC:56:D8:A3:38:F2:F6:AA:E4:04:51:AD:F9:AB:38:10:7C:92            X509v3 CRL Number: \n                4096\nNo Revoked Certificates.\n    Signature Algorithm: sha256WithRSAEncryption\n{code}\nAnd finally thats the new crl for the intermediate CA with one revoked certificate:\n{code:java}Certificate Revocation List (CRL):\n        Version 2 (0x1)\n    Signature Algorithm: sha256WithRSAEncryption\n        Issuer: /C=DE/ST=Bavaria/O=Toms Home Datacenter/OU=IT/CN=Puppet Intermediate CA/emailAddress=admin@tom-krieger.de\n        Last Update: Oct  1 11:06:57 2021 GMT\n        Next Update: Oct  3 11:06:57 2021 GMT\n        CRL extensions:\n            X509v3 Authority Key Identifier: \n                keyid:4C:EB:CC:56:D8:A3:38:F2:F6:AA:E4:04:51:AD:F9:AB:38:10:7C:92            X509v3 CRL Number: \n                4097\nRevoked Certificates:\n    Serial Number: 1000\n        Revocation Date: Oct  1 11:06:23 2021 GMT\n    Signature Algorithm: sha256WithRSAEncryption\n{code}\nAs far as I can see the key identifiers for both crls of the intermediate CA are identical, the CRL number was increased by 1 for the second crl. All seems ok for my at that point.\n\nTrying to upload the new crl for the intermediate CA with curl fails with error 400.\n\nAnother question: is it possible, that this issue is related to Ubuntu 18.04 LTS which my customer will use for PE and therefore I used for my tests?\u00a0\n\nI would like to figure out all pitfalls I fell into so we can provide some guidance to our customers .\n\nDo you mind to share a working example openssl configuration with me to test and figure possible problems out?", "created": "2021-10-01T05:52:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I was able to reproduce this using the script from your blogpost, on OSX. I think there are a couple of things going on:\n* We only allow updates of non-leaf CRLs. So revoking a cert with the intermediate CA cert and then trying to use the endpoint to upload that will not work. You should try with an updated CRL for the root CA cert.\n* Changing the {{data}} flag in the curl command to {{data-binary}} allowed the request to succeed for me, submitting an updated root CRL.\n\nFrom curl's manpage:\n{code}\n       --data-binary <data>\n              (HTTP) This posts data exactly as specified with no extra process-\n              ing whatsoever.\n\n              If you start the data with the letter @,  the  rest  should  be  a\n              filename.   Data is posted in a similar manner as -d, --data does,\n              except that newlines and carriage returns are preserved  and  con-\n              versions are never done.\n{code}\n\nI think perhaps the newline preservation is key here.\n\nBoth of these things are lacking in [the docs|https://puppet.com/docs/puppet/7/server/http_certificate_revocation_list.html#update-crls-with-crl-pem] and should definitely be called out. See [this commit|https://github.com/puppetlabs/puppetserver/commit/e4145e8ba09907ed1e2f597b6b3b6d6c5cd84ee0] for me clearly thinking the same thing in the past about not replacing the leaf CRL, but apparently neglecting to do anything about it xD", "created": "2021-10-06T17:21:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've got these docs updates in motion, and also want to fix the thing that was causing the 500 for you originally, to give a more informative error.\n\nPlease let me know if you're still having issues after this, but with those changes mentioned (auth key id, only trying to update the root CRL, and using {{data-binary}}), the rest of your blog post now works for me.", "created": "2021-10-06T17:52:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "PR to fix the 500 caused by the schema error: https://github.com/puppetlabs/puppetserver/pull/2590", "created": "2021-10-07T16:26:00.000000"}], "components": ["Puppet Server"], "created": "2021-09-13T00:55:00.000000", "creator": "5fd8f370208dbf0107d2bc4c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* An upload of a newly created CRL is possible\n * Log messages in PE server log are more useful and give more insights, why a CRL is considered invalid."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@418d26d1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0w"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The CRL update endpoint will now issue a meaningful error message when a CRL without an authority key identifier is sent in the request body."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Sep/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2483947402_*|*_1_*:*_1_*:*_53776163_*|*_10007_*:*_1_*:*_89555764_*|*_3_*:*_2_*:*_65950768_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_1936447064_*|*_10005_*:*_1_*:*_73246673"}], "description": "I'm testing this setup for one of my customers. He's in the health industry and regulations demand that he has to use his own Intermediate CA for PE. He didn't manage to get this running, that's why I tested it to be able to give the customer some help. That's why I discovered a problem with uploading new CRLs into Puppet Server.\n\nFor information on how I setup my Root and Intermediate CA and how I installed Puppet Enterprise 2019.8.8 running into this issue, please refer to [https://blog.tom-krieger.de/2021/09/10/puppet-enterprise-with-intermediate-ca/]\n\nYou find all steps I did there and you can also find the openssl.cnf files and a script to create the CAs. Puppet Enterprise runs well after these steps. I have my own intermediate CA in Puppet Enterprise. I double checked this by\n\n\u00a0\n{code:java}root@okdsrv:~# openssl x509 -in /etc/puppetlabs/puppet/ssl/ca/signed/okdsrv.home.tom-krieger.de.pem -text -noout\nCertificate:\n Data:\n Version: 3 (0x2)\n Serial Number: 1 (0x1)\n Signature Algorithm: sha256WithRSAEncryption\n Issuer: C = DE, ST = Bavaria, O = <example corp>, OU = IT, CN = Intermediate CA, emailAddress = admin@example.com\n Validity\n Not Before: Sep 9 08:26:10 2021 GMT\n Not After : Sep 6 08:26:13 2036 GMT\n Subject: CN = okdsrv.home.tom-krieger.de\n Subject Public Key Info:\n Public Key Algorithm: rsaEncryption\n RSA Public-Key: (4096 bit){code}\nDue to the docs it is important, to take care about the CRLs using an own intermediate CA. So I created a shell script and tried to upload a new CRL. And that's where my problems start. I can not upload a newly created CRL. It always results in an error 400 and it is unimportant if I use a a with openssl created CRL or an invalid one. Both result in the same message. I turned up Puppet Server logging to trace level and did not find a useful error message in the logs explaining me what went wrong and why my newly generated CRL is not accepted.\n\nI tried to do the upload with curl, Postman and a self written Ruby client. All three have the new CRL in the body of the request. Postman and Ruby both result in an error 500 producing a stack trace in the puppet server logs with \"[nil (named \\\\{(not (map? nil)) invalid-key} key-crl-map)]\" message.\n\nUsing _curl_ always results in an error 400 or if I use data-binary option, in an error 500 with the above described stack trace.\n\nI tried the following CRLs:\n * new CRL for the Intermediate CA\n * new CRL for the root CA\n * combination of new CRL of intermediate CA and Root CA\n * a CRL which contains a revoked server certificate\n\nI also checked the\u00a0_/etc/puppetlabs/puppetserver/conf.d/auth.conf_ file if the path for CRL upload is set correctly. And as far as I can see, the settings are ok.\n\nWhy do I open this ticket:\n # The 400 error does not give any hint, why the CRL is considered invalid. That makes it very difficult for customers and me to deal with it.\n # The Puppet Server logs are currently not very helpful\n # I need some advice how to get the CRL upload running\u00a0\n\nIf you need further information please don't hesitate to contact me.\n\n*Outcomes*\n* Determine whether there is a bug here and, if so, fix it. \n* Otherwise, determine what the user is doing wrong to get these errors.\n\u00a0* Regardless of whether this is a bug or not, improve the error messaging for this endpoint.", "environment": "Short description of my environment, for more information please refer to the Blog Post I put into the description above. If contains my openssl.cnf files and a script to setup the Root and Intermediate CA. It also creates the files needed for the Puppet installer.\n\nCAs running on CentOS 7, fully patched\n\nPuppet Enterprise running on Ubuntu 18.04", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16635", "fixedVersions": ["SERVER 6.18.0", "SERVER 7.5.0"], "id": "16635", "issueType": "Bug", "key": "SERVER-3080", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5fd8f370208dbf0107d2bc4c", "resolution": "Fixed", "resolutionDate": "2021-11-06T11:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Problem uploading new CRL to Puppet Server with Intermediate CA", "timeSpent": "PT0S", "updated": "2021-12-07T12:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I got this succesfully installing in an isolated dir with all its dependencies and can manually submit metrics using it, pending this change to dropsonde: https://github.com/puppetlabs/dropsonde/pull/13.\n\nNext up, put together a simple tk-scheduler task to run it periodically.", "created": "2021-10-08T16:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Ran into an issue where shelling out from within puppetserver causes {{dropsonde}} to be run as the {{puppet}} user rather than {{root}}, which mean it [looks in the wrong spot|https://github.com/puppetlabs/puppet/blob/665ee61a69b202d74837f9352ec5dfc577b0650d/lib/puppet/util/run_mode.rb#L55-L67] for Puppet's files (it assumes a non-root install). I don't know yet what a reasonable way around this might be. It _might_ invalidate the idea of using a tk-scheduler job.", "created": "2021-10-11T17:22:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] to follow up:\n\nI was able to get this to work by doing a couple of hacky things.\n1. Set the {{HOME}} env var to the dropsonde data dir when [shelling out|https://github.com/puppetlabs/puppetserver/pull/2591/files#diff-4132be7b1230c67cbad2fbdd8c00edc4c365d935adc45ad7d4d932c1276a0502R15] for the command. This is needed because the {{puppet}} user does not have a home directory, so Ruby can't properly expand {{~}} in that context, which it attempts to do when resolving defaults, regardless of what is done in (2) below.\n2. Initialize Puppet's settings in Dropsonde like so:\n{code}\n  Puppet.initialize_settings([\"--confdir\", \"/etc/puppetlabs/puppet\",\n                              \"--codedir\", \"/etc/puppetlabs/code\",\n                              \"--logdir\", \"/var/log/puppetlabs/puppetserver\",\n                              \"--vardir\", \"/opt/puppetlabs/server/data/puppetserver\"])\n{code}\n\nHard coding this in dropsonde is obviously not feasible. We can't pass things on the Dropsonde CLI because the settings are [initialized|https://github.com/puppetlabs/dropsonde/blob/423892b144dd2a2a7b1b3b5d47c95b0b54424e05/lib/dropsonde.rb#L18] _before_ the CLI args are evaluated, and it will error while attempting to resolve settings without these passed. We might be able to use environment variables, that could be set when invoking the command in Puppet Server. These could be set to values from Puppetserver's config. I'll try that out next.", "created": "2021-10-19T18:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Okay got this working, in two parts:\nDropsonde https://github.com/puppetlabs/dropsonde/pull/14\nPuppetserver https://github.com/puppetlabs/puppetserver/pull/2591", "created": "2021-10-25T13:21:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:605bbb3d2f7d9000709ed091] [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] Last open question from me is whether we want it off or on by default. I'm not really concerned about it breaking anyone, fwiw, the way it is ultimately implemented.\n\nAnd then, is one of you or the IAC team going to handle sending out comms, or should Froyo do it?", "created": "2021-10-26T09:50:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is blocked until Dropsonde is released and we get an answer to ^^.", "created": "2021-10-27T12:56:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're going to leave this opt-in for now, and switch to opt-out in the next major release.", "created": "2021-10-29T10:14:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Pulled the update dropsonde gem into my PR, should be good to go now.", "created": "2021-11-17T10:44:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Had to make a couple of adjustments for merging this up to {{main}}, see https://github.com/puppetlabs/puppetserver/pull/2597", "created": "2021-11-17T18:01:00.000000"}], "components": [], "created": "2021-09-08T14:49:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fc6becc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jra"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Users can now enable module metrics collection via Dropsonde. To turn this on, configure `dropsonde: { enabled: true }` in `puppetserver.conf`. By default, it collect metrics on service start and then once a week thereafter."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_130528142_*|*_1_*:*_1_*:*_4432047_*|*_10007_*:*_3_*:*_226718227_*|*_3_*:*_3_*:*_868845619_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_2408671289_*|*_10006_*:*_1_*:*_2088643760_*|*_10005_*:*_1_*:*_504175538"}], "description": "In order to install dropsonde alongside the puppetserver package, we need a way to ship the gem without its dependencies interfering with the other gems installed by the server and agent packages.\n\nWe should try to have the puppetserver package install dropsonde in an isolated gem dir, with all its dependencies, self-contained, and then see what it would take to run its CLI using puppet-agent's ruby. This can probably be accomplished by adding to https://github.com/puppetlabs/puppetserver/blob/6.x/resources/ext/build-scripts/install-vendored-gems.sh, putting dropsonde with its deps in a third dir.\n\n*Outcome*\n* determine if this is a feasible path forward to making dropsonde available to puppetserver out of the box\n* If simple, finish the implementation. If complicated, consider writing up for handoff to IAC or file another ticket to track the work for us.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16873", "fixedVersions": ["SERVER 6.18.0", "SERVER 7.5.0"], "id": "16873", "issueType": "Task", "key": "SERVER-3079", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2021-11-19T16:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Package dropsonde in an isolated gem dir", "timeSpent": "PT0S", "updated": "2021-12-16T09:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "cc [~accountid:60e4906e4134aa006931a5d6] we're hoping to pull this into our next sprint, which starts tomorrow. Do you think you'll have bandwidth for that?\n\n[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] will add some links to existing docs where this new flag should be added.", "created": "2021-09-07T11:54:00.000000"}, {"author": "60e4906e4134aa006931a5d6", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]\u00a0I can do that, no problem. Thanks for the assistance on where to look for things as I continue to learn my way around the documentation.", "created": "2021-09-07T11:58:00.000000"}], "components": [], "created": "2021-09-03T15:53:00.000000", "creator": "61b104456d002b006b47d72c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a3df7a0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0ays3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Sep/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_529121_*|*_3_*:*_1_*:*_594211184_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_693364289_*|*_10005_*:*_1_*:*_333438815"}], "description": "Document the use of the --{{force}}\u00a0flag for the command {{puppetserver ca generate}}.\u00a0 The flag is only meant to be use with {{-ca-client}}\u00a0flag when running the {{generate}} subcommand.\u00a0Note that this should be used only when the status of the server cannot be determined, but the user knows that the server is offline.\n\nThe subcommands are documented [here|https://puppet.com/docs/puppet/7/server/subcommands.html#available-actions] but no special mention is made of {{generate --ca-client}}. We could add a mention of it, but I don't think {{force}} should be mentioned at that level.\n\nHowever, there's a cert regen workflow doc, with a note under step 4 [here|https://puppet.com/docs/puppet/7/ssl_regenerate_certificates.html#regenerate_agent_certs_and_add_dns_alt_names], where it might be good to mention that {{--force}} can be used if the tool cannot determine that the server is offline, but the user knows that it is.\n\n[This page|https://puppet.com/docs/puppet/7/puppet_server_ca_cli.html] also calls out {{generate --ca-client}}, so might be good to mention there too?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15870", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.4.0"], "id": "15870", "issueType": "Task", "key": "SERVER-3078", "labels": ["DOCS"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61b104456d002b006b47d72c", "resolution": "Fixed", "resolutionDate": "2021-09-22T10:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document `--force` flag for `puppetserver ca generate` action", "timeSpent": "PT0S", "updated": "2021-09-22T10:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2021-09-03T08:33:00.000000", "creator": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "No custom changes to the puppetserver should go into the docker-container's own filesystem (overlay2), but into a persistent volume."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b35d301"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:90i"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Sep/21"}], "description": "*Puppet Server Version:* All (the container currently use 7.2.1-1bionic)\n *OS Name/Version:* Any linux (probably the same problem in Windows)\n\nThis issue concerns puppetserver run as a docker container.\n\nThe project [https://github.com/puppetlabs/puppetserver/] does not have its own Issue tracking at github (as pupperware do), so I file this ticket here at tickets.puppetlabs.com instead:\n\nJust a thought...\n\nBy default r10k uses the path /etc/puppetlabs/r10k/r10k.yaml to look for its conf file.\n However, the path /etc/puppetlabs/r10k/ does not reside in any of the persistent docker volumes for puppetserver. :-/\n\nIf I manually create the dir /etc/puppetlabs/r10k/ and create a conf-file r10k.yaml, and later remove/upgrade the puppetserver container, these changes are lost.\n\nSuggestion:\n In the puppetserver image, create a symlink to a sample r10k.yaml file placed in the root of persistent volume 'puppetserver-config' (i.e. next to puppet.conf, puppetdb.conf, etc):\n{noformat}\nIn the root of volume 'puppetserver-config', create:\n\u00a0 ./r10k.yaml\u00a0\u00a0 <-- sample file with all lines commented out\n\nIn the puppetserver image (https://github.com/puppetlabs/puppetserver/blob/6.x/docker/puppetserver/Dockerfile),\nadd:\n  mkdir /etc/puppetlabs/r10k\n \u00a0ln -s /etc/puppetlabs/puppet/r10k.yaml /etc/puppetlabs/r10k/r10k.yaml\n{noformat}\n\n*Desired Behavior:*\n Make ones r10k.yaml conf persistent.\n\n*Actual Behavior:*\n After the container is removed/updated, the file is gone.\n\n\n\nExample of how I do:\nPS: A possible workaround is to use 'r10k -c' to always point r10k to a custom r10k.yaml file that you have stored anywhere in a persistant volume, but I don't want this. I want to be able to exec into the container and run r10k without any extra options.\n\nPPS: My r10k fetches stuff from repos using git, which uses ssh. Here too I want things to \"work as normal\" when I exec into the container and run r10k/git/ssh. This means that I do more symlinks than just the one above.\n\nSince I need a persistent place to store files, I put them all in a new sub-folder called {{containerfs-links}}, to logically separate my \"extra files\" from the ones that are normally placed in the volume.\nThere are three persistent volumes to choose from, I choose {{puppetserver-config}} which is mounted at /etc/puppetlabs/puppet.\nSo /etc/puppetlabs/puppet/containerfs-links/* is where I place my persistent extra files.\nHere's just an example of the changes I make to the puppetserver image, to get things the way I need:\n{noformat}\n# cat Dockerfile\nFROM puppet/puppetserver:7.4.0\n\n# Add ssh-client so that r10k/git can fetch repos via ssh.\n# Add nano, vim and netcat for when working/debugging within the container.\nRUN echo 'APT::Install-Recommends \"0\";' > /etc/apt/apt.conf.d/01_no_recommends && \\\n  apt-get update && \\\n  apt-get -y install cron openssh-client nano-tiny vim-tiny netcat-openbsd && \\\n  ln -s /bin/nano-tiny /usr/local/bin/nano && ln -s /usr/bin/vim.tiny /usr/local/bin/vim\n\n# By default, /etc/puppetlabs/r10k/r10k.yaml is used, but this dir and file don't exist so we create them and point to our persistent place.\n# Prepare symlinks for ssh (git) access to repos.\nRUN mkdir /etc/puppetlabs/r10k && ln -s /etc/puppetlabs/puppet/containerfs-links/r10k.yaml /etc/puppetlabs/r10k/r10k.yaml && \\\n  mkdir /root/.ssh && ln -s /etc/puppetlabs/puppet/containerfs-links/root/.ssh/id_rsa_for_puppet-master-fetchrepos /root/.ssh/id_rsa && \\\n  ln -s /etc/puppetlabs/puppet/containerfs-links/root/.ssh/id_rsa.pub_for_puppet-master-fetchrepos /root/.ssh/id_rsa.pub && \\\n  ln -s /etc/puppetlabs/puppet/containerfs-links/root/.ssh/known_hosts /root/.ssh/known_hosts\n\n# Let us have our own version of auth.conf and handle the catch22 the very first time the stack is started and our version don't exist yet.\n# This must be executed in the running docker (with the volume mounted), it can't be done with just a symlink directly in the image.\nRUN mkdir /docker-custom-entrypoint.d && echo '#!/bin/bash\\n\\\n# If our version does not (yet) exist, link to the original so puppetserver can start\\n\\\nif [ ! -f /etc/puppetlabs/puppet/containerfs-links/puppetserver/conf.d/auth.conf ]; then\\n\\\n  mkdir -p /etc/puppetlabs/puppet/containerfs-links/puppetserver/conf.d\\n\\\n  mv /etc/puppetlabs/puppetserver/conf.d/auth.conf /etc/puppetlabs/puppet/containerfs-links/puppetserver/conf.d/auth.conf\\n\\\nelse\\n\\\n  mv /etc/puppetlabs/puppetserver/conf.d/auth.conf /etc/puppetlabs/puppetserver/conf.d/auth.conf.original_from_container\\n\\\nfi\\n\\\nln -s /etc/puppetlabs/puppet/containerfs-links/puppetserver/conf.d/auth.conf /etc/puppetlabs/puppetserver/conf.d/auth.conf' > /docker-custom-entrypoint.d/10-auth.conf.sh\n\n# Start a cron daemon inside the continer to do tasks like running r10k.\n# Clear all default files installed by the package.\nRUN echo '#!/bin/bash\\n\\\nrm -f /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/*\\n\\\necho \"SHELL=/bin/sh\\nPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\\n\" > /etc/crontab\\n\\\necho \"#*/5     *       *       *       *       root    /usr/local/bin/run-r10k 2>&1 | /bin/grep -v \\\"Could not acquire lock. Exiting.\\\"\" >> /etc/crontab\\n\\\n/usr/sbin/cron' > /docker-custom-entrypoint.d/50-cron.sh\n\n# More stuff\nRUN chmod 755 /docker-custom-entrypoint.d/* && \\\n  ...blah... && \\\n  ...blah...\n{noformat}\n", "epicLinkSummary": "Puppet Server Docker Improvements", "estimate": "PT0S", "externalId": "15181", "fixedVersions": [], "id": "15181", "issueType": "Improvement", "key": "SERVER-3077", "labels": ["container", "docker", "puppetserver", "r10k", "volume"], "originalEstimate": "PT0S", "parent": "16299", "parentSummary": "Puppet Server Docker Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:77e61db9-5988-47b2-a5fb-b2bf857ff07c", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "docker container: Make r10k.yaml persistent", "timeSpent": "PT0S", "updated": "2022-03-09T09:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-08-26T17:19:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a380952"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0au17:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now supports TLS 1.3 and associated cipher suites by default."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_156447174_*|*_1_*:*_1_*:*_42505_*|*_10007_*:*_1_*:*_344824716_*|*_3_*:*_1_*:*_539266_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_265560861_*|*_10005_*:*_1_*:*_412982274"}], "description": "Update pe-puppet-server-extensions to clj-parent 4.8.0, which includes the updated tk-jetty9.\n\n(puppetserver has already been updated automatically).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14837", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.4.0"], "id": "14837", "issueType": "Improvement", "key": "SERVER-3076", "labels": ["docs-reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2021-09-09T09:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update to new tk-jetty9 version to enable TLSv1.3 by default", "timeSpent": "PT0S", "updated": "2021-09-19T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "cc [~accountid:60e4906e4134aa006931a5d6] We're gonna do this in the next sprint, so that we can remove el-6 in the next Platform 7 release.", "created": "2021-11-09T11:34:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "I _think_ this is the only place that needs to be updated: https://puppet.com/docs/puppet/7/server/install_from_packages.html#supported-operating-systems\nBut please correct me if you know of other places where we list supported Server platforms.", "created": "2021-11-19T10:52:00.000000"}], "components": [], "created": "2021-08-24T13:05:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@476e6b0c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a94007"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_452261_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1859938873_*|*_10005_*:*_1_*:*_6650486253"}], "description": "Update docs to remove el-6-x86_64 as a supported server platform.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15869", "fixedVersions": [], "id": "15869", "issueType": "Task", "key": "SERVER-3075", "labels": ["DOCS"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2021-12-01T00:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update FOSS docs to remove el-6-x86_64 as a supported server platform", "timeSpent": "PT0S", "updated": "2021-12-01T00:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-08-24T13:05:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59c011e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a94006x"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_14169736_*|*_1_*:*_1_*:*_453670_*|*_10007_*:*_1_*:*_65201449_*|*_3_*:*_1_*:*_87953169_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_707825844_*|*_10005_*:*_1_*:*_6650490844"}], "description": "Remove el-6-x86_64 from [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml].\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17463", "fixedVersions": ["SERVER 7.5.0"], "id": "17463", "issueType": "Task", "key": "SERVER-3074", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2021-11-19T14:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable el-6-x86_64 test pipeline for puppetserver", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-08-24T13:05:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3bc4e218"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a94006v"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Deprecation"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Removed support for el6 in puppetserver 7."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_14125451_*|*_1_*:*_1_*:*_450304_*|*_10007_*:*_1_*:*_65208221_*|*_3_*:*_1_*:*_87869292_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_707917836_*|*_10005_*:*_1_*:*_6650485155"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for el-6-x86_64\n* Remove el-6-x86_64 from [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml#L84-L93]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17210", "fixedVersions": ["SERVER 7.5.0"], "id": "17210", "issueType": "Task", "key": "SERVER-3073", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2021-11-19T14:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable el-6-x86_64 builds for puppetserver", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2021-08-23T15:47:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a3c32eb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75957269_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_775388970_*|*_10005_*:*_1_*:*_1737472984"}], "description": "(Initial planned release date: 2021-09-14)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.3.1\" AND issuetype=Epic] have been closed and any unresolved tickets are removed from said epics.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-09-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.11.0 Release - 2021-09-14\n", "estimate": "PT0S", "externalId": "15868", "fixedVersions": [], "id": "15868", "issueType": "Task", "key": "SERVER-3072", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28829", "parentSummary": "Puppet Platform 7.11.0 Release - 2021-09-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-09-22T14:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.4.0)", "timeSpent": "PT0S", "updated": "2021-09-22T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "covered by\u00a0https://puppet.atlassian.net/browse/RE-14251", "created": "2021-08-24T12:55:00.000000"}], "components": [], "created": "2021-08-23T15:47:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47c67f00"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0arcr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Aug/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_76033907_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-09-14)\n\nIf this release is part of a larger Puppet Platform release, you can close this ticket.\n\nOtherwise, ship puppetserver artifacts using the [puppetserver shipping pipeline|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_ship-puppetserver_stage-foss-artifacts_standalone/].\n", "duedate": "2021-09-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.11.0 Release - 2021-09-14\n", "estimate": "PT0S", "externalId": "15439", "fixedVersions": [], "id": "15439", "issueType": "Task", "key": "SERVER-3071", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28829", "parentSummary": "Puppet Platform 7.11.0 Release - 2021-09-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Duplicate", "resolutionDate": "2021-08-24T12:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ship artifacts (Puppet Server 7.3.1)", "timeSpent": "PT0S", "updated": "2021-08-24T12:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:60e4906e4134aa006931a5d6] can this be closed? I assume so, since this release went out already, but I didn't see the release notes doc or anything, so not sure.", "created": "2021-09-24T15:48:00.000000"}, {"author": "60e4906e4134aa006931a5d6", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]\u00a0Yes, I'll close- thanks! Slipped my mind before.", "created": "2021-09-27T09:36:00.000000"}], "components": [], "created": "2021-08-23T15:47:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e77b549"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr9"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Sep/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75995316_*|*_3_*:*_1_*:*_1023728447_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_163904224_*|*_10005_*:*_1_*:*_1738094254"}], "description": "(Initial planned release date: 2021-09-14)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.4.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.4.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2021-09-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.11.0 Release - 2021-09-14\n", "estimate": "PT0S", "externalId": "15180", "fixedVersions": [], "id": "15180", "issueType": "Task", "key": "SERVER-3070", "labels": ["DOCS", "release"], "originalEstimate": "PT0S", "parent": "28829", "parentSummary": "Puppet Platform 7.11.0 Release - 2021-09-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-09-27T09:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.4.0)", "timeSpent": "PT0S", "updated": "2021-09-27T09:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Ticketmatch looks good, the two tickets that are still going through CI have cleared FOSS and are just waiting on PE.", "created": "2021-09-08T16:34:00.000000"}], "components": [], "created": "2021-08-23T15:47:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1892312e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000j9"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Sep/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3149717_*|*_1_*:*_1_*:*_76008590_*|*_3_*:*_1_*:*_174589407_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1308895723"}], "description": "(Initial planned release date: 2021-09-14)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n  ** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n  ** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n  ** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n  ** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n  ** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n  ** If you haven't already, notify the puppet-agent release lead that puppetserver 7.4.0 is built and ready for testing.\n", "duedate": "2021-09-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.11.0 Release - 2021-09-14\n", "estimate": "PT0S", "externalId": "14896", "fixedVersions": [], "id": "14896", "issueType": "Task", "key": "SERVER-3069", "labels": ["release"], "originalEstimate": "PT0S", "parent": "28829", "parentSummary": "Puppet Platform 7.11.0 Release - 2021-09-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-09-10T17:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Server 7.4.0)", "timeSpent": "PT0S", "updated": "2021-09-10T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2021-08-20T07:10:00.000000", "creator": "623c10eb9b54ec0068b142e0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54c630a0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91i"}], "description": "\u00a0\n\n*Issue:*\n\nWhen i try to start/restart or recreate the puppetserver docker container while there are already certs other than the ca.pem and the puppet.pem certificate present inside the /etc/puppetlabs/puppet/ssl/certs/ folder, it will fail while executing the last entrypoint script (\u00a0/docker-entrypoint.d/90-log-config.sh ).\n\nIn my case its a generated cert for the puppetboard docker container.\n\n+_This happens because of this line_+: [https://github.com/puppetlabs/puppetserver/blob/main/docker/puppetserver/docker-entrypoint.d/90-log-config.sh#L9]\n\nIn this scenario it now has multiple cert names seperated by a new line inside of the variable it uses to check the server cert, because there is no check that it will only grab a single name. Even if it would grab only the first one of the listing it would be the wrong one.\n\n+_This pull request would open a possible workaround_+ by having PUPPET_HOSTNAME set: [https://github.com/puppetlabs/puppetserver/pull/2470]\n\nbut that would not fix the underlying problem of determining the right name without external input. Maybe it shouldn't try to do that in the first place.\n\n\u00a0\n\n*Desired Behavior:*\n\npuppetserver inside the docker container starts successfully with other certs present inside of /etc/puppetlabs/puppet/ssl/certs/ folder\n\n\u00a0\n\n*Actual Behavior:*\n\ncontainer restart loop\n\n\u00a0\n\ndocker-compose log:\n{noformat}puppet_1       | Running /docker-entrypoint.d/10-analytics.sh\npuppet_1       | (/docker-entrypoint.d/10-analytics.sh) Pupperware analytics disabled; skipping metric submission\npuppet_1       | Running /docker-entrypoint.d/20-use-templates-initially.sh\npuppet_1       | Running /docker-entrypoint.d/30-set-permissions.sh\npuppet_1       | Running /docker-entrypoint.d/40-update-puppetdb-conf.sh\npuppet_1       | Running /docker-entrypoint.d/50-set-certname.sh\npuppet_1       | Running /docker-entrypoint.d/55-set-masterport.sh\npuppet_1       | Running /docker-entrypoint.d/60-setup-autosign.sh\npuppet_1       | Running /docker-entrypoint.d/70-set-dns-alt-names.sh\npuppet_1       | Running /docker-entrypoint.d/80-ca.sh\npuppet_1       | Running /docker-entrypoint.d/85-setup-storeconfigs.sh\npuppet_1       | Running /docker-entrypoint.d/90-log-config.sh\npuppet_1       | System configuration values:\npuppet_1       | * HOSTNAME: 'puppet'\npuppet_1       | * hostname -f: 'puppet'\npuppet_1       | * PUPPETSERVER_HOSTNAME:PUPPET_MASTERPORT: 'puppet:8140'\npuppet_1       | * Generated certname: 'puppet.pem\npuppet_1       | puppetboard.pem'\npuppet_1       | * DNS_ALT_NAMES: 'puppet,puppet.[REDACTED_DOMAIN]'\npuppet_1       | * SSLDIR: '/etc/puppetlabs/puppet/ssl'\npuppet_1       | CA Certificate:\npuppet_1       | subject=CN = \"Puppet Enterprise CA generated on puppet at [REDACTED]\"\npuppet_1       | issuer=CN = Puppet Root CA: [REDACTED]\npuppet_1       |         X509v3 extensions:\npuppet_1       |             X509v3 Basic Constraints: critical\npuppet_1       |                 CA:TRUE\npuppet_1       |             X509v3 Key Usage: critical\npuppet_1       |                 Certificate Sign, CRL Sign\npuppet_1       |             X509v3 Subject Key Identifier: \npuppet_1       |                 [REDACTED]\npuppet_1       |             Netscape Comment: \npuppet_1       |                 Puppet Server Internal Certificate\npuppet_1       |             X509v3 Authority Key Identifier: \npuppet_1       |                 keyid:[REDACTED]\npuppet_1       | \npuppet_1       | Certificate puppet.pem\npuppet_1       | puppetboard.pem:\npuppet_1       | Can't open /etc/puppetlabs/puppet/ssl/certs/puppet.pem\npuppet_1       | puppetboard.pem for reading, No such file or directory\npuppet_1       | 140142905807296:error:02001002:system library:fopen:No such file or directory:crypto/bio/bss_file.c:69:fopen('/etc/puppetlabs/puppet/ssl/certs/puppet.pem\npuppet_1       | puppetboard.pem','r')\npuppet_1       | 140142905807296:error:2006D080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:76:\npuppet_1       | unable to load certificate{noformat}\n\u00a0", "environment": "pupperware / docker-compose / docker", "epicLinkSummary": "Puppet Server Docker Improvements", "estimate": "PT0S", "externalId": "14894", "fixedVersions": [], "id": "14894", "issueType": "Bug", "key": "SERVER-3067", "labels": ["docker"], "originalEstimate": "PT0S", "parent": "16299", "parentSummary": "Puppet Server Docker Improvements", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c10eb9b54ec0068b142e0", "status": "Ready for Merge", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Container not able to (re)start when another cert is present inside the certs folder. (Container restart loop)", "timeSpent": "PT0S", "updated": "2022-03-09T09:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2021-08-19T15:45:00.000000", "creator": "61b104456d002b006b47d72c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Update the {{prune}} action so that it will only accept and operate on one Puppet's CRL.\n * Provide the number of certificate within Puppet's CRL before pruning.\n * Fix the bug in {{http_client.rb}} that causes an error when not passing anything for the {{:query}} parameter."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18fc032e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0ahrl:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_437512107_*|*_1_*:*_1_*:*_1395706_*|*_5_*:*_1_*:*_0"}], "description": "{{puppetserver-ca prune}} is currently operating on a list of Puppet's CRL.\u00a0 This is unnecessary as there should be only one Puppet's CRL so there is no need to operate on a list of Puppet's CRL.\u00a0 Furthermore, update {{prune}} to log the number of certificates in the CRL before pruning to provide more information to the user.\u00a0\u00a0\n\nThere is also a small bug where not passing anything to the {{:query}} parameter when creating a new URL in {{http_client.rb}} will result in an error.\u00a0 This bug can be fix by simply adding a check for\u00a0parameter to be {{nil}} when creating a new URL.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "14893", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.4.0"], "id": "14893", "issueType": "Task", "key": "SERVER-3066", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61b104456d002b006b47d72c", "resolution": "Done", "resolutionDate": "2021-08-24T17:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update `prune` action and fix params query bug", "timeSpent": "PT0S", "updated": "2021-08-24T17:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Thanks for the report [~accountid:557058:f2ee3fe1-33d7-4cc0-9468-a0aeab57eee5]! We will keep an eye on this to see if anyone else encounters it. Please let us know if this is causing any problems for you!", "created": "2021-08-24T11:46:00.000000"}, {"author": "557058:613151bd-b161-4bc3-9e32-335fdcef4d89", "body": "I was able to reproduce that error even without the USE_PUPPETDB=false setting. It looks like our containers are missing the {{/etc/protocols}} file because they are missing the {{netbase}} package. Once the package is installed, the container starts puppetserver without any errors. This appears to be because there are only a few packages installed that reference netbase, none of which actually depend on {{netbase}}.\n\n{code}\nroot@puppet:/# apt-cache --installed rdepends netbase\nnetbase\nReverse Depends:\n  perl\n  net-tools\n  perl\n{code}\n\nOf those, {{perl}}'s dependency is a Recommends, so it isn't getting installed, and {{net-tools}} Replaces: netbase (<< 4.00), but {{netbase}} is now version 5.2 so that filter doesn't apply.\n\nI think we need to ensure that all our containers have the {{netbase}} package installed.", "created": "2021-08-31T14:42:00.000000"}, {"author": "5f4f9a12fe0a46004df94320", "body": "I can confirm that the issue is present on latest Debian as well, even if you just install puppetserver from Puppet repository - so, no usage of premade docker containers based on old Ubuntu 18.04.\n\nBasically, create docker container from debian:latest, add repository and install puppetserver 7.x from there. Once you start the service, you get the same error, which can be solved by adding netbase package (currently 6.3), as already mentioned.\n\nMaybe you should add that to installation requirements, and of course, build docker images with netbase installed.\n\nOr simply add the following:\n\n/etc/ethertypes\n/etc/protocols\n/etc/rpc\n/etc/services\n\nas these are actually the only things in netbase package.\n\n\u00a0\n\nCheers.", "created": "2022-10-21T17:15:00.000000"}], "components": ["Puppet Server"], "created": "2021-08-18T10:12:00.000000", "creator": "557058:f2ee3fe1-33d7-4cc0-9468-a0aeab57eee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@649c09cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:90o"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Aug/21"}], "description": "Hi,\n\nI'm occasionally using the official puppetserver docker image\u00a0 puppet/puppetserver for development and testing.\n\n\u00a0\n\nToday I've pulled the latest image with 7.3.0,\n\npuppet/puppetserver:latest e6724ddcacc3 \n\nwhich is just a few hours old.\n\n\u00a0\n\nSince then, when starting puppet server (with USE_PUPPETDB=false) I get two (non-lethal) voluminous error messages (see below, important lines pasted), but the puppet server still starts and works. \n\nI'm not sure whether this is just ugly output causing no real problem or really breaks something.\n\nJust to let you know. Does not really look reliable.\n\n\u00a0\n\nregards\n\nHadmut\n\n\u00a0\n\n\u00a0\n\npuppetserver_1 | 2021-08-18 15:33:50,248 WARN [j.n.NativeProtocolsDB] Failed to load native protocols db\npuppetserver_1 | java.lang.RuntimeException: getprotobyname_r failed\npuppetserver_1 | at jnr.netdb.NativeProtocolsDB$LinuxNativeProtocolsDB.getProtocolByName(NativeProtocolsDB.java:180)\npuppetserver_1 | at jnr.netdb.NativeProtocolsDB.load(NativeProtocolsDB.java:80)\npuppetserver_1 | at jnr.netdb.NativeProtocolsDB.access$000(NativeProtocolsDB.java:40)\n\n...\n\npuppetserver_1 | at com.puppetlabs.jruby_utils.jruby.InternalScriptingContainer.callMethodWithArgArray(InternalScriptingContainer.java:43)\npuppetserver_1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\npuppetserver_1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\npuppetserver_1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\npuppetserver_1 | at java.lang.reflect.Method.invoke(Method.java:498)\npuppetserver_1 | at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)\npuppetserver_1 | at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102)\npuppetserver_1 | at puppetlabs.services.jruby.jruby_puppet_core$fn__36407$get_initialize_pool_instance_fn__36412$fn__36413$fn__36414.invoke(jruby_puppet_core.clj:138)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$fn__34181$create_pool_instance_BANG___34190$fn__34193.invoke(jruby_internal.clj:256)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$fn__34181$create_pool_instance_BANG___34190.invoke(jruby_internal.clj:225)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34599$add_instance__34604$fn__34608.invoke(jruby_agents.clj:52)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34599$add_instance__34604.invoke(jruby_agents.clj:47)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34626$prime_pool_BANG___34631$fn__34635.invoke(jruby_agents.clj:76)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34626$prime_pool_BANG___34631.invoke(jruby_agents.clj:61)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.instance_pool$fn__35188$fn__35189.invoke(instance_pool.clj:16)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:403)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:378)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:388)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:378)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$fn__14976$shutdown_service__14981$fn$reify__14983$service_fnk__5102__auto___positional$reify__14988.shutdown_on_error(internal.clj:448)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$fn__14906$G__14902__14914.invoke(internal.clj:411)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$fn__14906$G__14901__14923.invoke(internal.clj:411)\n\n\u00a0\n\n\u00a0\n\nand\n\n\u00a0\n\npuppetserver_1 | 2021-08-18 15:33:50,335 WARN [j.n.NativeServicesDB] Failed to load native services db\npuppetserver_1 | java.lang.RuntimeException: getservbyname_r failed\npuppetserver_1 | at jnr.netdb.NativeServicesDB$LinuxServicesDB.getServiceByName(NativeServicesDB.java:220)\n\n...\n\npuppetserver_1 | at com.puppetlabs.jruby_utils.jruby.InternalScriptingContainer.callMethodWithArgArray(InternalScriptingContainer.java:43)\npuppetserver_1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\npuppetserver_1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\npuppetserver_1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\npuppetserver_1 | at java.lang.reflect.Method.invoke(Method.java:498)\npuppetserver_1 | at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)\npuppetserver_1 | at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102)\npuppetserver_1 | at puppetlabs.services.jruby.jruby_puppet_core$fn__36407$get_initialize_pool_instance_fn__36412$fn__36413$fn__36414.invoke(jruby_puppet_core.clj:138)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$fn__34181$create_pool_instance_BANG___34190$fn__34193.invoke(jruby_internal.clj:256)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$fn__34181$create_pool_instance_BANG___34190.invoke(jruby_internal.clj:225)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34599$add_instance__34604$fn__34608.invoke(jruby_agents.clj:52)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34599$add_instance__34604.invoke(jruby_agents.clj:47)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34626$prime_pool_BANG___34631$fn__34635.invoke(jruby_agents.clj:76)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34626$prime_pool_BANG___34631.invoke(jruby_agents.clj:61)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.instance_pool$fn__35188$fn__35189.invoke(instance_pool.clj:16)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:403)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:378)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:388)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:378)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$fn__14976$shutdown_service__14981$fn$reify__14983$service_fnk__5102__auto___positional$reify__14988.shutdown_on_error(internal.clj:448)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$fn__14906$G__14902__14914.invoke(internal.clj:411)\npuppetserver_1 | at puppetlabs.trapperkeeper.internal$fn__14906$G__14901__14923.invoke(internal.clj:411)\npuppetserver_1 | at clojure.core$partial$fn__5839.invoke(core.clj:2625)\npuppetserver_1 | at clojure.core$partial$fn__5839.invoke(core.clj:2624)\npuppetserver_1 | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34573$send_agent__34578$fn__34579$agent_fn__34580.invoke(jruby_agents.clj:41)\n\n\u00a0\n\n\u00a0\n\n\u00a0\n\n\u00a0\n\n\u00a0\n\n\u00a0\n\n\u00a0", "epicLinkSummary": "Puppet Server Docker Improvements", "estimate": "PT0S", "externalId": "15867", "fixedVersions": [], "id": "15867", "issueType": "Bug", "key": "SERVER-3064", "labels": ["docker"], "originalEstimate": "PT0S", "parent": "16299", "parentSummary": "Puppet Server Docker Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f2ee3fe1-33d7-4cc0-9468-a0aeab57eee5", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "java.lang.RuntimeException: getprotobyname_r failed in recent docker image", "timeSpent": "PT0S", "updated": "2022-10-21T17:15:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [{"author": "61b104456d002b006b47d72c", "body": "The work for this ticket was combined into SERVER-3060", "created": "2021-08-17T15:38:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "(puppetserver 7.3.0 was already released, so updated that fix version)", "created": "2021-08-19T16:11:00.000000"}], "components": ["Puppet Server"], "created": "2021-08-17T11:37:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32774055"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0ahrk:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Aug/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_153825777_*|*_1_*:*_1_*:*_11616_*|*_3_*:*_1_*:*_90261302_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_13193602"}], "description": "This failure came up in puppetsever's Travis scan and in our internal CI scans (see linked SEC ticket for details).\n\nThis appears to be a false positive and should be suppressed in both [puppetserver|https://github.com/puppetlabs/puppetserver/blob/6.x/ext/travisci/suppression.xml]\u00a0and [pe-pse|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/2019.8.x/ext/travisci/suppression.xml].", "duedate": "2021-11-15T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14892", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.4.0"], "id": "14892", "issueType": "Task", "key": "SERVER-3063", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2021-08-20T11:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Suppress core.cache-0.7.1.jar scan failure", "timeSpent": "PT0S", "updated": "2021-08-27T11:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [], "components": [], "created": "2021-08-10T12:29:00.000000", "creator": "61b104456d002b006b47d72c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b0883dc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a94006"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver-ca CLI command `list` will now utilize the updated certificate_status endpoint for a faster performance when requesting for certificate requests."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_259130900_*|*_1_*:*_1_*:*_88179127_*|*_3_*:*_1_*:*_370464404_*|*_10009_*:*_1_*:*_61242968_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_79937350"}], "description": "Puppetserver CA CLI is currently very slow when querying for CSRs (or {{requested}} state).\u00a0 As of right now, when a user want to list all of the requests pending through using {{puppetserver ca list}}, the CLI would get all of the certificates and CSRs then filter to the user's queried state.\u00a0 The impact on performance is noticeable when the user has a lot of signed or revoked certificates.\u00a0\n\n*Outcome*\n\nUpdate the CLI (more specifically the {{list}}\u00a0action) to only look for CSRs when the state being queried is\u00a0{{requested}}. The performance when using {{puppetserver ca list}} should be faster than {{puppetserver ca list --all}} when there exists a lot of signed or revoked certificates.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "15866", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.4.0"], "id": "15866", "issueType": "Improvement", "key": "SERVER-3060", "labels": ["docs-reviewed", "froyo_intern"], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61b104456d002b006b47d72c", "resolution": "Fixed", "resolutionDate": "2021-08-20T11:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve `puppetserver ca list` speed when querying for requests", "timeSpent": "PT0S", "updated": "2021-09-09T16:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Hey [~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68], thanks for opening this! To clarify, did something actually break or did you just see this message but packages installed successfully? And can you tell us exactly what you did to encounter this? Looks like this message cropped up when installing postgresql, as opposed to when installing puppetserver - is that right? \n\nWe think [this|https://github.com/puppetlabs/puppetserver/blob/6.x/resources/ext/config/conf.d/puppetserver.conf#L41] is where that directory is configured, but it's going to be non-trivial to fix this for just CentOS 8, since earlier operating systems likely still use {{/var/run}}.", "created": "2021-08-10T11:41:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "Hi [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da],\nI just checked CentOS 7 and that has the same symlink:\n{code}\n[vagrant@localhost ~]$ ls -la /var/run\nlrwxrwxrwx. 1 root root 6 Apr 30  2020 /var/run -> ../run\n[vagrant@localhost ~]$ cat /etc/centos-release\nCentOS Linux release 7.9.2009 (Core)\n[vagrant@localhost ~]$\n{code}\n\nto reproduce the error on centos 8:\n{code}\ndnf install -y http://yum.puppet.com/puppet7-release-el-8.noarch.rpm\ndnf install -y puppetserver\nsystemd-tmpfiles --create puppetserver.conf\n{code}\n\nthat will create the following error message:\n{code}\n[puppetserver.conf:1] Line references path below legacy directory /var/run/, updating /var/run/puppetlabs/puppetserver \u2192 /run/puppetlabs/puppetserver", "created": "2021-08-12T02:32:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "okay I just checked all our supported server platforms for this symlink:\n* ubuntu-20.04-amd64\n* ubuntu-18.04-amd64\n* ubuntu-20.04-amd64\n* debian-9-amd64\n* debian-10-amd64\n* sles-12-x86_64\n* centos-8-x86_64\n* redhat-8-x86_64\n* centos-7-x86_64\n* redhat-7-x86_64\n* centos-6-x86_64\n* redhat-6-x86_64\n\nAll except for centos 6 and redhat 6 have a {{/var/run -> /run}} or {{/var/run -> ../run}} symlink, so we'll need to take that into account when determining if/how to update this.", "created": "2021-08-16T10:43:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] Do you know if there are any plans for dropping FOSS server/pdb support for el 6?", "created": "2021-08-17T11:51:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Nick says we can remove server/pdb support for el 6 in puppet7, which means we'll only fix this issue in puppet7. We'll need to send communications about this removal, I believe at least 90 days ahead of the actual removal. I will generate winston tickets for this effort.", "created": "2021-08-18T11:41:00.000000"}], "components": ["Puppet Server"], "created": "2021-08-10T07:18:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8394a85"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91ki"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Aug/21"}], "description": "Hi,\nduring some playing with CentOS 8 I noticed the following error (I was installing the postgresql13-server package after puppetserver-7.2.1-1.el8.src.rpm):\n{code}\nError in <unknown> scriptlet in rpm package postgresql13-server\n[/usr/lib/tmpfiles.d/puppetserver.conf:1] Line references path below legacy directory /var/run/, updating /var/run/puppetlabs/puppetserver \u2192 /run/puppetlabs/puppetserver; please update the tmpfiles.d/ drop-in file accordingly.\n{code}\n\nthe tmpfile:\n{code}\n# cat /usr/lib/tmpfiles.d/puppetserver.conf\nd /var/run/puppetlabs/puppetserver 0755 puppet puppet -\n{code}\n\ncould you in the next release update this from /var/run to /run? It's a symlink on CentOS 8:\n\n{code}\n# ls -la /var/run\nlrwxrwxrwx. 1 root root 6 Dec  4  2020 /var/run -> ../run\n{code}\n\nI reported the same bug for PuppetDB https://puppet.atlassian.net/browse/PDB-5229", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16634", "fixedVersions": [], "id": "16634", "issueType": "Bug", "key": "SERVER-3059", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CentOS 8 package uses legacy path in tmpfiles", "timeSpent": "PT0S", "updated": "2022-03-09T09:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3532fc49-9a37-49ef-bddf-417bf6bba5fe", "attachments": [], "comments": [{"author": "557058:3532fc49-9a37-49ef-bddf-417bf6bba5fe", "body": "Added docs at https://github.com/puppetlabs/osp-docs/pull/144", "created": "2021-07-23T15:11:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "hey [~accountid:557058:3532fc49-9a37-49ef-bddf-417bf6bba5fe]. are there any docs for the scripts directory / what's the purpose of that? The question came up a few times on slack. Maybe that information can be added to the puppetserver changelog as well.", "created": "2021-10-15T04:26:00.000000"}, {"author": "557058:3532fc49-9a37-49ef-bddf-417bf6bba5fe", "body": "Hey [~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68] I think https://puppet.com/docs/bolt/latest/developer_updates.html#how-bolt-loads-scripts is the best overview we have written about what the changes are and why we're making them. All of this is mentioned there, but to give a little more detail: there are 2 main reasons we added the scripts directory:\n1. Many people were creating tasks when they didn't need to, and were then thinking that getting started with Bolt required a lot of setup and boilerplate that in reality wasn't needed. We're hoping that having a scripts directory encourages more people to just leave their scripts as scripts unless they need to make it a task.\n2. Having a more specific file path to files in Puppet modules is more readable and less \"magical\" (no special knowledge required).", "created": "2021-10-19T09:59:00.000000"}], "components": [], "created": "2021-07-23T10:25:00.000000", "creator": "557058:3532fc49-9a37-49ef-bddf-417bf6bba5fe", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6202b191"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09zir:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver 6+ now has a new default mount named 'scripts' that can be used with API endpoints such as {{file_content}}, {{file_metadata}}, and {{static_file_content}} to load scripts from the {{scripts/}} directory of a module."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Oct/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_261035330_*|*_1_*:*_1_*:*_349812037_*|*_10007_*:*_1_*:*_1469619540_*|*_3_*:*_1_*:*_2138_*|*_5_*:*_1_*:*_0"}], "description": "The adds the new mount 'scripts' as a default mount for Puppetserver, which loads files from the `scripts/` directory of the specified module.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15865", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.3.0"], "id": "15865", "issueType": "Task", "key": "SERVER-3058", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3532fc49-9a37-49ef-bddf-417bf6bba5fe", "resolution": "Fixed", "resolutionDate": "2021-08-16T12:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add scripts as a default mount", "timeSpent": "PT0S", "updated": "2021-10-19T09:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "No updates found to submit to winston.", "created": "2021-08-24T17:09:00.000000"}], "components": [], "created": "2021-07-22T15:20:00.000000", "creator": "61d4868af63ac800706ebb62", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27f90c5f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11174"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a940w"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Aug/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_334128763_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2523595894"}], "description": "(Initial planned release date: 2021-08-17)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.3.0\"] have been closed and any unresolved tickets are removed from said epics.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-08-18T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.10.0 Release - 2021-08-17\n", "estimate": "PT0S", "externalId": "15435", "fixedVersions": [], "id": "15435", "issueType": "Task", "key": "SERVER-3057", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27675", "parentSummary": "Puppet Platform 7.10.0 Release - 2021-08-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61d4868af63ac800706ebb62", "resolution": "Done", "resolutionDate": "2021-08-24T17:09:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.3.0)", "timeSpent": "PT0S", "updated": "2021-08-24T17:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "covered by https://puppet.atlassian.net/browse/RE-14224", "created": "2021-07-26T12:10:00.000000"}], "components": [], "created": "2021-07-22T15:20:00.000000", "creator": "61d4868af63ac800706ebb62", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67fd529f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11174"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09xb7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jul/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_334192278_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-08-17)\n\nIf this release is part of a larger Puppet Platform release, you can close this ticket.\n\nOtherwise, ship puppetserver artifacts using the [puppetserver shipping pipeline|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_ship-puppetserver_stage-foss-artifacts_standalone/].\n", "duedate": "2021-08-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.10.0 Release - 2021-08-17\n", "estimate": "PT0S", "externalId": "15179", "fixedVersions": [], "id": "15179", "issueType": "Task", "key": "SERVER-3056", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27675", "parentSummary": "Puppet Platform 7.10.0 Release - 2021-08-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61d4868af63ac800706ebb62", "resolution": "Duplicate", "resolutionDate": "2021-07-26T12:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ship artifacts (Puppet Server 7.2.2)", "timeSpent": "PT0S", "updated": "2021-07-26T12:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "60e4906e4134aa006931a5d6", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "hey [~accountid:60e4906e4134aa006931a5d6] would you mind adding a link to your release notes doc to this ticket? Wanted to check whether https://puppet.atlassian.net/browse/SERVER-3058 was included, since it landed a little late.", "created": "2021-08-16T11:11:00.000000"}, {"author": "60e4906e4134aa006931a5d6", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]\u00a0Sure, here's the Google doc: [https://docs.google.com/document/d/1I3RpUI_-l5-I9Li-jTTNfvKaxhNTwGZCeVeI7WOZw04/edit#heading=h.sfjcfn2suia]\n\nI had not seen/included that issue", "created": "2021-08-16T11:17:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Thanks! yeah, sorry about that, sometimes things land last minute \ud83d\ude05", "created": "2021-08-16T11:28:00.000000"}], "components": [], "created": "2021-07-22T15:20:00.000000", "creator": "61d4868af63ac800706ebb62", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@339f7f6d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11174"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a940ri"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Aug/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_334118859_*|*_3_*:*_2_*:*_1550724542_*|*_5_*:*_2_*:*_346835497_*|*_10005_*:*_1_*:*_113492"}], "description": "(Initial planned release date: 2021-08-17)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.3.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.3.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2021-08-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.10.0 Release - 2021-08-17\n", "estimate": "PT0S", "externalId": "14891", "fixedVersions": [], "id": "14891", "issueType": "Task", "key": "SERVER-3055", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27675", "parentSummary": "Puppet Platform 7.10.0 Release - 2021-08-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61d4868af63ac800706ebb62", "resolution": "Fixed", "resolutionDate": "2021-08-17T11:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.3.0)", "timeSpent": "PT0S", "updated": "2021-08-17T11:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2021-07-22T15:20:00.000000", "creator": "61d4868af63ac800706ebb62", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f56f55a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11174"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a940r9"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_334107035_*|*_3_*:*_1_*:*_259018443_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1551550428"}], "description": "(Initial planned release date: 2021-08-17)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n  ** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n  ** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n  ** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n  ** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n  ** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n  ** If you haven't already, notify the puppet-agent release lead that puppetserver 7.3.0 is built and ready for testing.\n", "duedate": "2021-08-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.10.0 Release - 2021-08-17\n", "estimate": "PT0S", "externalId": "17462", "fixedVersions": [], "id": "17462", "issueType": "Task", "key": "SERVER-3054", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27675", "parentSummary": "Puppet Platform 7.10.0 Release - 2021-08-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61d4868af63ac800706ebb62", "resolution": "Fixed", "resolutionDate": "2021-08-16T11:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Server 7.3.0)", "timeSpent": "PT0S", "updated": "2021-08-16T11:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c0da2d32a94006a649651", "created": "2021-07-26T22:09:00.000000", "name": "container.conf", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11170"}, {"attacher": "623c0da2d32a94006a649651", "created": "2021-07-20T22:32:00.000000", "name": "puppetserver-bad.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10785"}, {"attacher": "623c0da2d32a94006a649651", "created": "2021-07-26T21:41:00.000000", "name": "puppetserver-container", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11093"}, {"attacher": "623c0da2d32a94006a649651", "created": "2021-07-20T10:09:00.000000", "name": "puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11169"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Can you check that your CRL is in the expected place? There should be a CRL corresponding to your CA cert at {{/etc/puppetlabs/puppet/ssl/crl.pem}}. You can use {{openssl crl -noout -text -in <crl_path>}} to examine it, and make sure it's issued by your CA cert.", "created": "2021-07-20T12:14:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Fwiw we don't test these packages on any Fedora versions, and it's not really supported. But at the same time, if it worked for you on the older version I can't think of a reason why it shouldn't work on the newer one.", "created": "2021-07-20T12:17:00.000000"}, {"author": "623c0da2d32a94006a649651", "body": "Yes, I acknowledge it is unsupported and I appreciate any assistance you can give. The only dependency which wasn't met was for /bin/mkdir (which is /usr/bin/mkdir in Fedora) so it was fairly straight forward to just install the rpm with dependency checking turned off.\n\n\u00a0\n\nI actually have my ssldir = /usr/local/etc/puppet/ssl, but to be sure, I added a symbolic link (from /etc/pupet/pupptlabs/ssl to /usr/local/etc/puppet/ssl) with no difference.\n\nstrace shows the crl being opened successfully:\n{quote}58864 openat(AT_FDCWD, \"/usr/local/etc/puppet/ssl/ca/ca_crl.pem\", O_RDONLY) = 69\n{quote}\nThe CRL looks OK and is signed which I can check with\n{quote}openssl crl -CAfile ca/ca_crt.pem -noout -in ca/ca_crl.pem\nverify OK\n{quote}\nI've attached\u00a0[^puppetserver-bad.log] created with -Djavax.net.debug=ssl.\n\n\u00a0", "created": "2021-07-20T22:44:00.000000"}, {"author": "623c0da2d32a94006a649651", "body": "I've created slimmed down container images. Using the attached script\u00a0[^puppetserver-container] . Which essentially does\n{quote}dnf --installroot=<target> --releasever=nn install ... puppetserver\n{quote}\nThen I can use the same script to create appropriate bind mounts which lets me do\n{quote}chroot <target> puppetmaster foreground\n{quote}\nThe configuration files, ssl directory etc are all bind mounted. The net result is I can easily test different images created exactly the same way, using exactly the same configuration, differing only in the version of Fedora they are based on.\n\nI can confirm that Fedora32 works, but Fedora33 and Fedora34 don't. This is a puzzle to say the least. The process does result in slightly different java release numbers but installing the Fedora32 version in the Fedora 33 or 34 image makes no difference, so it is not the JVM. As fas as I can tell, the SSL processing mostly happens in jetty, and the jetty code is all in the puppetserver package, not the system packages.\n\nFor now, I have resorted to just running the puppetserver in the Fedora32 container, which, fortunately systemd makes fairly easy using the attached dropin [^container.conf]. It is not a long term solution though.\n\n\u00a0", "created": "2021-07-26T22:11:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Since it sounds like you found a workaround and we don't explicitly support puppetserver packages for Fedora, I'm going to close this.\nBut heads up to [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] that there is some interest in this, if you're tracking interest in what platforms to support for puppetserver.", "created": "2021-08-03T11:42:00.000000"}], "components": ["Puppet Server"], "created": "2021-07-20T10:11:00.000000", "creator": "623c0da2d32a94006a649651", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36bc70aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09tzf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jul/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1215089653_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 7.8.0*\n *Puppet Server Version: 7.2.0*\n *OS Name/Version:*\n\nI have RedHat el8 packages for puppet agent and puppet server installed on Fedora 32 and Fedora 34. The Fedora 32 installation works but the Fedora 34 doesn't.\n\n*Desired Behavior:*\n\nAgents on client machines work as expected.\n\n*Actual Behavior:*\n\nConnections fail with SSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown.\n\n\u00a0\n\nIf I mount a Fedora 32 image and run puppetserver in a chroot environment it works even with /opt/puppetlabs, /etc/puppetlabs and /etc/syconfig/puppetserver bind mounted so that the puppet configuration is identical in the Fedora 34 and Fedora 32 imagesa nd because it is in a chroot environment, both cases use the same kernel and same network and services (like dns).\n\nAdding -Djavax.net.debug=ssl -Djava.security.debug=access to JAVA_ARGS results in \"java.security.cert.CertPathValidatorException: Could not determine revocation status\", whereas for the Fedora 32 case, I get \"Found trusted certificate:\" at the same place.\n\nI am using the traditional self signed certificate and for both cases the logs show:\n\n***\n\nadding as trusted cert:\n Subject: CN=Puppet CA: puppet.beware.dropbear.id.au\n Issuer: CN=Puppet CA: puppet.beware.dropbear.id.au\n Algorithm: RSA; Serial number: 0x1\n Valid from Mon Feb 12 23:22:49 ACDT 2018 until Sun Feb 12 23:22:49 ACDT 2023\n\nand the keys are identical.\n\nI have installed the Fedora 32 version of java 8 on Fedora 34 and it still doesn't work.\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14890", "fixedVersions": [], "id": "14890", "issueType": "Bug", "key": "SERVER-3053", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0da2d32a94006a649651", "resolution": "Won't Do", "resolutionDate": "2021-08-03T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Fails to Validate Keys on Fedora 34", "timeSpent": "PT0S", "updated": "2021-08-03T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Talked to Sean about this yesterday and pointed out the settings utils we made for multithreaded, which might be able to be slightly repurposed to more safely sandbox things for project compiles. The way that Bolt does it assumes that it doesn't need to reset any state afterwards, which is not true in this environment.", "created": "2021-07-20T10:43:00.000000"}], "components": [], "created": "2021-07-14T12:48:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1dd876e6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09gmj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jul/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21797_*|*_10007_*:*_1_*:*_96503171_*|*_3_*:*_1_*:*_685581362_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_427119049"}], "description": "Be proactive about assisting the Skeletor team with apply blocks work that goes into puppetserver.\n\nBe prepared to review their PRs.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17209", "fixedVersions": ["None"], "id": "17209", "issueType": "Task", "key": "SERVER-3052", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2021-07-28T12:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Help Skeletor with apply blocks", "timeSpent": "PT0S", "updated": "2021-07-28T12:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:63d40628f6e1b543161789a7] Do you know when you need this done by?", "created": "2021-07-13T11:34:00.000000"}], "components": [], "created": "2021-07-08T17:25:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@363a9cb3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2911"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09npn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_410952193_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_20567877334"}], "description": "Puppet's execution API supports a {{cwd}} option to specify the current working directory for the child process. However, puppetserver's implementation does not support it (it's also missing several other options, see SERVER-74).\n\nPuppet's {{generate}} function changes the current working directory of the command, but that affects the entire puppetserver java process and is not safe when multithreading is enabled or when there are multiple JRuby instances generating different commands, and those commands rely on the cwd behavior.\n\nSo in order to change the {{generate}} function, {{puppetserver}} would need to accept the {{cwd}} option.", "epicLinkSummary": "Multithreaded Fixes", "estimate": "PT0S", "externalId": "15434", "fixedVersions": [], "id": "15434", "issueType": "Task", "key": "SERVER-3051", "labels": [], "originalEstimate": "PT0S", "parent": "17234", "parentSummary": "Multithreaded Fixes", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow cwd parameter to be specified when executing commands", "timeSpent": "PT0S", "updated": "2022-03-08T11:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] Do you know if this is something we want to do, and if so, what is the priority? I didn't see any conclusions from [~accountid:557058:6710b319-779a-49c9-b66f-f584a24dab53] in the thread linked above.", "created": "2021-07-13T11:42:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "can we just update line 178 to be puppetdb or satellite?  \n\nhttps://github.com/puppetlabs/puppetserver/blob/6.16.0/src/ruby/puppetserver-lib/puppet/server/compiler.rb#L177-L182\n\nit seems like the satellite terminus just adds onto the puppetdb one and has all the same requirements as the pupeptdb terminus ?  \n\nhttps://github.com/puppetlabs/puppetlabs-satellite_pe_tools/blob/main/lib/puppet/indirector/facts/satellite.rb\n\n", "created": "2021-07-13T14:53:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] We just wanted to make sure this is something you want us to do. [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] was mentioning that it may have been an intentional decision to only support the puppetdb terminus in CD4PE. It sounds like a business decision, so we wanted Product input on whether or not we want to support satellite in this context. Have you talked to [~accountid:557058:6710b319-779a-49c9-b66f-f584a24dab53] at all about this?", "created": "2021-07-13T15:31:00.000000"}, {"author": "557058:6710b319-779a-49c9-b66f-f584a24dab53", "body": "Whatever you all agree is the right solution is fine with me. The end customer goal is that users with fact cache termini other than puppetdb should still be able to use Impact Analysis. Keep in mind we have created a fact cache terminus for two internal data POCs now, and I suspect it won't be the last time we develop a customer fact cache terminus.", "created": "2021-07-13T15:48:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Would one of you mind filling out some acceptance criteria? If I'm understanding correctly, we want to support any fact terminus for use with Impact Analysis, not just satellite. Do we want to support those other termini in the Platform/PE more generally? It doesn't seem like this [{{get_facts_from_puppetdb}}|https://github.com/puppetlabs/puppetserver/blob/6.16.0/src/ruby/puppetserver-lib/puppet/server/compiler.rb#L179] method will do the right thing for other termini, though I admit I don't know much about the facts termini yet. /cc [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]", "created": "2021-07-13T16:17:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "According to [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], we only need to focus on solving this for satellite (if we easily get support for other termini, great, but trying not to expand scope).\nWe should spike on this to determine the appropriate solution without too much investment.\n\nIf we go with Nick's proposed solution, we need to confirm that satellite will behave identically to the puppetdb terminus.", "created": "2021-08-04T11:49:00.000000"}, {"author": "70121:6ae14dd4-8d8c-46fe-8ef7-e6c4076362bf", "body": "All, I've had some escalations from the RBA (the customer who reported the issue). \u00a0The only reason they purchased CD4PE was for impact analysis and they can't use it. \u00a0Do you have any idea when a workaround/fix might be available?", "created": "2021-08-04T21:58:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "hey [~accountid:70121:6ae14dd4-8d8c-46fe-8ef7-e6c4076362bf] - we're hoping to do some investigative work around this in our next sprint (8/11-8/25), which should ideally give us a better sense of what the right fix is and how long that will take. We'll try to keep you posted, but feel free to ping us if things are seeming to languish. ", "created": "2021-08-05T11:29:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Looking at the Satellite terminus, it definitely looks like a [wrapper|https://github.com/puppetlabs/puppetlabs-satellite_pe_tools/blob/main/lib/puppet/indirector/facts/satellite.rb#L7] for the PDB terminus (notice the call to {{super}} at the end of the one overridden method). \n\nIn particular, our method of [saving facts|https://github.com/puppetlabs/puppetserver/blob/6.16.0/src/ruby/puppetserver-lib/puppet/server/compiler.rb#L130] looks like it will probably just work. Agreed with Molly that [retrieving|https://github.com/puppetlabs/puppetserver/blob/6.16.0/src/ruby/puppetserver-lib/puppet/server/compiler.rb#L213-L218] the facts might need to be updated a little, I'm not sure why we go out of our way to construct that specific terminus there. I know for a while we were trying to avoid using the indirector directly in that code where possible, but I also feel like it would do exactly what we want for this use case, so it might be worth looking into retrieving the same way that we save, leaving the type navigation up to the indirector.", "created": "2021-08-06T10:45:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Sounds like the HDP folks are running into the same issues when trying to use custom termini (currently {{hdp}} terminus, but looking to extend to use {{splunk_hec}} as well), so it would be valuable to investigate supporting those as well. /cc [~accountid:61939d4b2278e7006b4e9a17]", "created": "2021-08-09T13:14:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "If we can make a simple change to enable the satellite terminus I believe we should do that and re-title this ticket around fixing that specific problem.  \n\nThen we open a new ticket for supporting HDP / splunk and maybe generally any terminus but that's an expansion of scope I'm not clear we need to take on if the satellite problem is simple to solve.  ", "created": "2021-08-10T10:11:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Well we agreed to spike on this to start anyway, so yeah, depending on what we identify as the best solution, we'll either create tickets for supporting these separately or create a ticket to support custom termini more generally. Does that seem reasonable [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]?", "created": "2021-08-10T10:40:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We're thinking it probably makes sense to use the indirector for this endpoint, in which case we'd be able to easily support arbitrary custom termini.", "created": "2021-08-10T11:51:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Is 3 story points for the spike or for implementing the general solution?  I'm for the general solution if we don't think that's a large scope increase.  ", "created": "2021-08-10T12:55:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The latter, implementing using the indirector as it was meant to be used for this extension point.", "created": "2021-08-10T13:06:00.000000"}], "components": ["API"], "created": "2021-07-07T11:07:00.000000", "creator": "557058:1134d60c-31df-407a-b573-e0cfaef8865e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@183e33f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Priority"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2918"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0b8iy:r"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The v4 catalog endpoing (used by Impact Analysis) now supports retrieving facts from any facts terminus, if none are provided with the request."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "44982"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_587533613_*|*_1_*:*_1_*:*_537032420_*|*_10007_*:*_1_*:*_10273058_*|*_3_*:*_1_*:*_95795331_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4233542151_*|*_10005_*:*_1_*:*_2403672804"}], "description": "PE 2019.8.7 & CD4PE 4.6.1\n\n*Puppet Version:* 6.23.0\n*Puppet Server Version:* 6.16.0\n*OS Name/Version:* RHEL 7\n\nThis issue has been raised from a customer support ticket where both CD4PE and the satellite PE tools are both in use in conjunction with Puppet Enterprise. \n\nIn the set-up for the satellite tools modules, the fact terminus is set to satellite and this ensures facts will be sent to both satellite and puppetdb.\n\nHowever, when the customer tries to run Impact Analysis from CD4PE, they are met with the following error:\n\n{code:java}\n\"Internal Server Error: org.jruby.exceptions.RuntimeError: (Error) PuppetDB not configured, please provide facts with your catalog request.\"\n{code}\n\nThis looks like the puppet/v4/catalog API is hard-wired such that it can only retrieve facts from the PuppetDB terminus:\nhttps://github.com/puppetlabs/puppetserver/blob/6.16.0/src/ruby/puppetserver-lib/puppet/server/compiler.rb#L177-L182\n\n*Desired Behavior:* Allow fact retrieval from the puppet/v4/catalog API when terminus is not set to puppetdb\n\n*Actual Behavior:* WHen fact terminus is set to satellite, the puppet/v4/catalog API is hard coded to error out.\n\n--\n*Outcomes*\n* Fix this issue for custom termini more generally by using the indirector. This file should have examples of using the indirector: https://github.com/puppetlabs/puppetserver/blob/6.16.0/src/ruby/puppetserver-lib/puppet/server/compiler.rb\n* If it turns out that using the indirector is more complicated than we anticipated, we should stop and re-evaluate potential solutions in order to support the {{satellite}} terminus more quickly.\n* Determine if any docs updates are needed (internal and external).\n\n\n\n", "epicLinkSummary": "V4 Catalog Endpoint Improvements", "estimate": "PT0S", "externalId": "16871", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.4.1"], "id": "16871", "issueType": "Bug", "key": "SERVER-3050", "labels": ["jira_escalated", "known-issue-added"], "originalEstimate": "PT0S", "parent": "14909", "parentSummary": "V4 Catalog Endpoint Improvements", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:1134d60c-31df-407a-b573-e0cfaef8865e", "resolution": "Fixed", "resolutionDate": "2021-10-06T12:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Compile API errors out if a fact terminus other than PuppetDB is used", "timeSpent": "PT0S", "updated": "2021-11-08T14:42:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] was able to solve the immediate issue of inter-container certificate communication that spawned this ticket, so this would be an improvement / tech debt, but would also support several other larger CA improvements, including a long-standing problem of expiring certificates.\n\nThis won't be prioritized until we get more customer feedback, but there are at least three use cases that this would help with ([~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] will add what those are).", "created": "2021-07-21T15:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Things that this would improve:\n* Users who are reaching the end of their agent's cert lifetimes (5 years by default) need to take manual action to regenerate those certs. For some customers, this comes in large waves and often requires them to open a support ticket to handle the volume without having an outage. If the renewal was automatic, this entire pain point would go away.\n* Users whose CAs are expiring (15 years by default as of Puppet 6) need to either manually regenerate things before expiration or suffer through an outage. If the self-signed CA could renew itself, no action would need to be taken and no outage would occur. (note: ca_extend does not claim to support PE 2021, this might be because of the moved CA dir, and should be fixed)\n* If renewal was automatic, we could significantly shorten the lifetime of agent certificates, and since expired certificates no longer need to be recorded in the CRL, it would allow us to dramatically shrink the size of the CRL by pruning the expired short-lifetime certs. This would alleviate some of the issues we have with large CRLs.", "created": "2021-07-22T10:02:00.000000"}, {"author": "619528076d002b006b1c1e8d", "body": "PE-34955", "created": "2023-02-28T12:21:00.000000"}], "components": [], "created": "2021-07-07T10:13:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@87d16f1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:m"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jul/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_523819786_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_51413854356"}], "description": "Right now, if certificates expire it's a [manual process|https://puppet.com/docs/puppet/7/ssl_regenerate_certificates.html] to regenerate them, or you can use [puppetlabs/ca_extend|https://forge.puppet.com/modules/puppetlabs/ca_extend]. I propose making the functionality of ca_extend part of the product, as this is basic functionality all Puppet admins need.\n\nPuppet Server should monitor certificate expiration. If the CA is about to expire, the CA should extend its own certificate. Servers should pick that up, then use agent checkins to distribute the new certificate to agents (this is secure while the old CA certificate is still valid).\n\nIt's not clear to me how intermediate signing certs should be updated; presumably Puppet Enterprise should warn when they're about to expire but it's up to the admin to generate a new signing certificate. Servers would still need to pick up the updated CA certificate chain.\n\nIf a particular agent certificate is close to expiring, it should request a new version of its certificate during checkin with the server.\n\nThe {{puppetserver ca}} CLI should also have a subcommand that will regenerate a certificate if it's about to expire (and no-op otherwise). \"Ensure\" semantics would be nice: create a certificate if it doesn't exist, regenerate it if expiring, else leave it alone. It should work for both {{--ca-client}} and normal certificates.\n\nThere's a case we could consider around if the CA certificate is changed and certificates become invalid, but that feels out-of-scope (as a lot of the workflows above would likely no longer work).", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "15431", "fixedVersions": [], "id": "15431", "issueType": "New Feature", "key": "SERVER-3049", "labels": [], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Duplicate", "resolutionDate": "2023-02-28T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automatically rotate expiring certificates", "timeSpent": "PT0S", "updated": "2023-02-28T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:263afade-3e4f-46c6-b50a-cf2982192562] Is this something you could take a look at? We're not totally sure what the allowed values of {{AUTOSIGN}} are.", "created": "2021-07-06T11:36:00.000000"}, {"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "It's in the README source at [https://github.com/puppetlabs/puppetserver/blob/d5889d7322f2a07c110cd340bb75eb09d9e590c2/docker/puppetserver/README.md?plain=1#L33]\u00a0- just need to fix the markdown", "created": "2021-07-20T12:26:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "This should be fixed now [~accountid:557058:f2ee3fe1-33d7-4cc0-9468-a0aeab57eee5], thanks for the report!", "created": "2021-07-21T09:43:00.000000"}], "components": ["Puppet Server"], "created": "2021-07-03T15:55:00.000000", "creator": "557058:f2ee3fe1-33d7-4cc0-9468-a0aeab57eee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@302e4c58"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09k9v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jul/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_62152893_*|*_1_*:*_1_*:*_1456870465_*|*_10007_*:*_1_*:*_13400177_*|*_3_*:*_1_*:*_487626_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Version: 7.x*\n *Puppet Server Version: 7.2*\n *OS Name/Version: Docker*\n\nThe Docker README for puppet/puppetserver , see at\n\n[https://hub.docker.com/r/puppet/puppetserver]\n\noriginally at\n\n[https://github.com/puppetlabs/puppetserver/tree/6.x/docker/puppetserver]\n\ndescribes the environmentvariables to control the behavior of the puppetserver as a docker image.\n\n\u00a0\n\nThe description for the variable AUTOSIGN is broken (incomplete sentence):\n\nWhether or not to enable autosigning on the puppetserver instance. Valid values match [true\n\n\u00a0\n\n\u00a0\n\nSomething missing after \u201e[true\u201c\n\n\u00a0\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15178", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.3.0"], "id": "15178", "issueType": "Bug", "key": "SERVER-3048", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f2ee3fe1-33d7-4cc0-9468-a0aeab57eee5", "resolution": "Fixed", "resolutionDate": "2021-07-21T09:43:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "broken sentence in puppetserver docker documentation", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-06-30T13:32:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c710a1b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11148"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a942i"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10054759_*|*_10007_*:*_1_*:*_564692_*|*_3_*:*_1_*:*_2167336_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2932777109"}], "description": "(Initial planned release date: 2021-07-20)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.16.1\"] have been closed and any unresolved tickets are removed from said epics.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-07-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.24.0 Release - 2021-07-20\n", "estimate": "PT0S", "externalId": "16291", "fixedVersions": ["None"], "id": "16291", "issueType": "Task", "key": "SERVER-3046", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20252", "parentSummary": "Puppet Platform 6.24.0 Release - 2021-07-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-08-03T15:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.16.1)", "timeSpent": "PT0S", "updated": "2021-08-03T15:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "covered by https://puppet.atlassian.net/browse/RE-14159", "created": "2021-06-30T16:18:00.000000"}], "components": [], "created": "2021-06-30T13:32:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f062c3f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11148"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09gu3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9979130_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-07-20)\n\nIf this release is part of a larger Puppet Platform release, you can close this ticket.\n\nOtherwise, ship puppetserver artifacts using the [puppetserver shipping pipeline|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_ship-puppetserver_stage-foss-artifacts_standalone/].\n", "duedate": "2021-07-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.24.0 Release - 2021-07-20\n", "estimate": "PT0S", "externalId": "16029", "fixedVersions": [], "id": "16029", "issueType": "Task", "key": "SERVER-3045", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20252", "parentSummary": "Puppet Platform 6.24.0 Release - 2021-07-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Duplicate", "resolutionDate": "2021-06-30T16:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ship artifacts (Puppet Server 6.16.1)", "timeSpent": "PT0S", "updated": "2021-06-30T16:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5fc46fd09592df0076141ac0", "attachments": [], "comments": [], "components": [], "created": "2021-06-30T13:32:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f2c71b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11148"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09msf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1029638822_*|*_3_*:*_1_*:*_602909164_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_246414"}], "description": "(Initial planned release date: 2021-07-20)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 6.16.1\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 6.16.1\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2021-07-03T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.24.0 Release - 2021-07-20\n", "estimate": "PT0S", "externalId": "15864", "fixedVersions": [], "id": "15864", "issueType": "Task", "key": "SERVER-3044", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20252", "parentSummary": "Puppet Platform 6.24.0 Release - 2021-07-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-07-19T11:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 6.16.1)", "timeSpent": "PT0S", "updated": "2021-07-19T11:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-06-30T13:31:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d22a481"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11148"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09gtn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_16335819_*|*_1_*:*_1_*:*_9513262_*|*_3_*:*_1_*:*_4921211_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1020753035"}], "description": "(Initial planned release date: 2021-07-20)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n  ** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n  ** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n  ** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n  ** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n  ** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n  ** If you haven't already, notify the puppet-agent release lead that puppetserver 6.16.1 is built and ready for testing.\n", "duedate": "2021-07-03T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.24.0 Release - 2021-07-20\n", "estimate": "PT0S", "externalId": "15496", "fixedVersions": ["SERVER 6.16.1"], "id": "15496", "issueType": "Task", "key": "SERVER-3043", "labels": ["release"], "originalEstimate": "PT0S", "parent": "20252", "parentSummary": "Puppet Platform 6.24.0 Release - 2021-07-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-07-12T17:37:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Server 6.16.1)", "timeSpent": "PT0S", "updated": "2021-07-12T17:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-06-30T13:29:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f14907a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a942r"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10586410_*|*_10007_*:*_1_*:*_555260_*|*_3_*:*_1_*:*_2163205_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2932436210"}], "description": "(Initial planned release date: 2021-07-20)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Ensure that epics [associated with this release|https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.2.1\"] have been closed and any unresolved tickets are removed from said epics.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-07-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.9.0 Release - 2021-07-20", "estimate": "PT0S", "externalId": "15495", "fixedVersions": ["None"], "id": "15495", "issueType": "Task", "key": "SERVER-3042", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27667", "parentSummary": "Puppet Platform 7.9.0 Release - 2021-07-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-08-03T15:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.2.1)", "timeSpent": "PT0S", "updated": "2021-08-03T15:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "covered by https://puppet.atlassian.net/browse/RE-14156", "created": "2021-06-30T16:24:00.000000"}], "components": [], "created": "2021-06-30T13:29:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ea9f57"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09gmr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10537378_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-07-20)\n\nIf this release is part of a larger Puppet Platform release, you can close this ticket.\n\nOtherwise, ship puppetserver artifacts using the [puppetserver shipping pipeline|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_ship-puppetserver_stage-foss-artifacts_standalone/].\n", "duedate": "2021-07-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.9.0 Release - 2021-07-20", "estimate": "PT0S", "externalId": "15177", "fixedVersions": [], "id": "15177", "issueType": "Task", "key": "SERVER-3041", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27667", "parentSummary": "Puppet Platform 7.9.0 Release - 2021-07-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Duplicate", "resolutionDate": "2021-06-30T16:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ship artifacts (Puppet Server 7.2.1)", "timeSpent": "PT0S", "updated": "2021-06-30T16:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5fc46fd09592df0076141ac0", "attachments": [], "comments": [], "components": [], "created": "2021-06-30T13:28:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18d57770"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09msi:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1051781282_*|*_3_*:*_1_*:*_581191337_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-07-20)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.2.1\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"SERVER 7.2.1\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n* NOTE: These docs should not be published to the main site until release day.\n", "duedate": "2021-07-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.9.0 Release - 2021-07-20", "estimate": "PT0S", "externalId": "14889", "fixedVersions": [], "id": "14889", "issueType": "Task", "key": "SERVER-3040", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27667", "parentSummary": "Puppet Platform 7.9.0 Release - 2021-07-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-07-19T11:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.2.1)", "timeSpent": "PT0S", "updated": "2021-07-19T11:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-06-30T13:28:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@41d2741e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09gmo:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_103095237_*|*_1_*:*_1_*:*_10486269_*|*_10007_*:*_1_*:*_2539030_*|*_3_*:*_1_*:*_1198993_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1277954017"}], "description": "(Initial planned release date: 2021-07-20)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n  ** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n  ** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n  ** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n  ** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n  ** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n  ** If you haven't already, notify the puppet-agent release lead that puppetserver 7.2.1 is built and ready for testing.\n", "duedate": "2021-07-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.9.0 Release - 2021-07-20", "estimate": "PT0S", "externalId": "17521", "fixedVersions": ["SERVER 7.2.1"], "id": "17521", "issueType": "Task", "key": "SERVER-3039", "labels": ["release"], "originalEstimate": "PT0S", "parent": "27667", "parentSummary": "Puppet Platform 7.9.0 Release - 2021-07-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-07-16T17:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Server 7.2.1)", "timeSpent": "PT0S", "updated": "2021-07-16T17:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [], "components": [], "created": "2021-06-29T16:58:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d4d919f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09g5v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_424805375_*|*_1_*:*_1_*:*_9347_*|*_10007_*:*_1_*:*_74188706_*|*_3_*:*_1_*:*_19694300_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_515246075_*|*_10005_*:*_1_*:*_74149610"}], "description": "Merge the 1.x branch of the puppetserver-ca-cli library into its {{main}} branch.\n* Checkout puppetserver-ca-cli#1.x and pull down the latest updates: {{git pull <puppet remote> 1.x}}\n* Checkout puppetserver-ca-cli#main and pull down the latest updates for it.\n* From the main branch, run {{git merge --log --no-ff 1.x}}. This should bring all the new commits from 1.x into the {{main}} branch\n* Create a PR against the upstream {{main}} branch with these changes.\n\nBump, tag, build, and release the puppetserver-ca gem by running the release pipeline\n* [for the 1.x branch|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver-ca_init-multijob_1.x/]\n* [for the main branch|https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver-ca_init-multijob_main/]\n\nUpdate to the new gem versions in puppetserver and pe-puppet-server-extensions\n* 1.x -> [puppetserver 6.x|https://github.com/puppetlabs/puppetserver/blob/6.x/resources/ext/build-scripts/mri-gem-list-no-dependencies.txt]\n* main (2.x) -> [puppetserver main|https://github.com/puppetlabs/puppetserver/blob/main/resources/ext/build-scripts/mri-gem-list-no-dependencies.txt]\n* 1.x -> [pe-pse 2019.8.x|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/2019.8.x/resources/ext/build-scripts/mri-gem-list-no-deps.txt]\n* main (2.x) -> [pe-pse main|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/main/resources/ext/build-scripts/mri-gem-list-no-deps.txt]\n\nWe usually do all of this as part of any given ticket for puppetserver-ca work, but since we're making multiple updates, we didn't want to have to do this process a bunch of times in a row.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16290", "fixedVersions": ["SERVER 6.16.1", "SERVER 7.2.1"], "id": "16290", "issueType": "Task", "key": "SERVER-3038", "labels": ["froyo_intern"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2021-07-12T12:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Release puppetserver-ca gem for inclusion in upcoming releases", "timeSpent": "PT0S", "updated": "2021-07-12T12:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61af86343618cd006f430854", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is a cron job preferable to something that's built into the server (using tk-scheduler)? We don't have any prior art for shipping crontab files, but could probably build something into the server fairly easily. That would come with a config value for how frequently (if at all) to run it. This would mirror what we do for our built-in analytics service.", "created": "2021-06-29T11:37:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is there a timeline that you want this released by?", "created": "2021-06-29T11:37:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] and [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] will discuss this and then talk to the Froyo and IAC teams ([~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] [~accountid:5c2ff2fd81c1261667adfa1d]) about our path forward.", "created": "2021-07-07T11:44:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Maggie spoke to Norman and gave them some places to start, but we haven't heard back. We're just going to leave this until someone raises alarms about it.", "created": "2021-07-21T14:56:00.000000"}, {"author": "5c2ff2fd81c1261667adfa1d", "body": "Hi, sorry for the no update on this ticket.  The IAC team have been tracking the dropsonde work under our own board https://puppet.atlassian.net/browse/IAC-1685. We haven't started this work as we have been closing out on the AC testing of the Gem.\n\nThe team hasn't got to this packaging ticket due to difficulties with creating acceptance tests for the gem, and on review of how to package up modules and gem, we have learned we need to handle the dependencies. We still have some work to do and do not want to put the upcoming puppet server release at risk.\n\nI've linked both these tickets now.", "created": "2021-07-22T00:31:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Closing as there is no work to do currently\n\nTicket can be re-opened when there is actual work to do", "created": "2022-01-12T11:46:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "This was actually done already.", "created": "2022-01-12T11:51:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It has not been added to PE. When that is desired, we'll have to do similar work to what we did in FOSS for PE packaging.", "created": "2022-01-12T12:47:00.000000"}], "components": ["Puppet Server"], "created": "2021-06-24T13:01:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d2250a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09dar:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_426918804_*|*_6_*:*_2_*:*_245229_*|*_10005_*:*_1_*:*_17024986798"}], "description": "The [Dropsonde telemetry gem|https://rubygems.org/gems/dropsonde] should be installed with the puppetserver & pe_puppetserver packages.\n\nIt should also have a cron job running like this. The comment should match exactly and the time scheduling fields should be generated randomly.\n\n{code}\n# Puppet Name: submit Puppet telemetry report\n27 17 * * 2 /opt/puppetlabs/puppet/bin/dropsonde submit\n{code}\n\nHow should I provide release notes and instructions for disabling it?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15863", "fixedVersions": [], "id": "15863", "issueType": "Task", "key": "SERVER-3037", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "resolution": "Done", "resolutionDate": "2022-01-12T11:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dropsonde needs to be packaged with (pe_)puppetserver", "timeSpent": "PT0S", "updated": "2022-01-12T12:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Had a community member hit this today https://groups.google.com/g/puppet-users/c/z_ptA5c-4es/m/SDOuGEdhAQAJ?utm_medium=email&utm_source=footer", "created": "2021-07-08T15:37:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] will add steps to reproduce this error.", "created": "2021-08-03T11:57:00.000000"}], "components": [], "created": "2021-06-23T18:29:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47620f72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:di"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "44816"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Aug/21"}], "description": "If {{puppetserver ca generate --ca-client}} is called when the CA has not been properly set up, the command will throw an exception:\n{code}\n=> puppetserver ca generate --ca-client --certname test\nTraceback (most recent call last):\n\t6: from ./exe/puppetserver-ca:10:in `<main>'\n\t5: from /Users/aileen/code/server/puppetserver-ca-cli/lib/puppetserver/ca/cli.rb:94:in `run'\n\t4: from /Users/aileen/code/server/puppetserver-ca-cli/lib/puppetserver/ca/action/generate.rb:144:in `run'\n\t3: from /Users/aileen/code/server/puppetserver-ca-cli/lib/puppetserver/ca/action/generate.rb:191:in `generate_authorized_certs'\n\t2: from /Users/aileen/code/server/puppetserver-ca-cli/lib/puppetserver/ca/action/generate.rb:191:in `map'\n\t1: from /Users/aileen/code/server/puppetserver-ca-cli/lib/puppetserver/ca/action/generate.rb:202:in `block in generate_authorized_certs'\n/Users/aileen/code/server/puppetserver-ca-cli/lib/puppetserver/ca/local_certificate_authority.rb:158:in `sign_authorized_cert': undefined method `subject' for nil:NilClass (NoMethodError)\n{code}\n\nThis happens because if any CA files are missing when the command is run, the LocalCertificateAuthority will [not attempt to load|https://github.com/puppetlabs/puppetserver-ca-cli/blob/2fea044fd1a7510508e02077d2f9fe4328fb87b5/lib/puppetserver/ca/local_certificate_authority.rb#L48] its artifacts, which means when we go to sign the generated cert, we don't have our CA signing cert.\n\nI think this happened during a refactor, that we started silently failing to load CA artifacts, but the usecase where the {{import}} command needs to generate its own CRL takes advantage of it (see [this commit|https://github.com/puppetlabs/puppetserver-ca-cli/commit/f1da16140ec886b9b6acf5a7d020e2107e5360cc]). In this case, we want to be able to create the local authority without attempting to load the artifacts.\n\nWe should fix this to error better when files are missing, without compromising the CRL generation for {{import}}.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "17208", "fixedVersions": [], "id": "17208", "issueType": "Bug", "key": "SERVER-3036", "labels": ["jira_escalated", "low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA CLI `generate` action will throw with stacktrace if CA files are missing", "timeSpent": "PT0S", "updated": "2022-03-09T09:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This update caused an issue with SNI on FIPS, which appears to be resolved by updating FIPS Bouncy Castle, see PE-32070.", "created": "2021-06-28T12:08:00.000000"}], "components": [], "created": "2021-06-23T16:33:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1542e104"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09bib:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Security Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Update jetty to 9.4.42, which resolves CVE-2021-28169."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_440808951_*|*_1_*:*_1_*:*_334899_*|*_10007_*:*_1_*:*_148423043_*|*_5_*:*_1_*:*_0"}], "description": "Jetty has disclosed CVE-2021-28169 (See SEC-620). Which effects us (currently using 9.4.40). We do not believe any of our products are affected, however we should take this opportunity to update to the latest patch release of the 9.4.x series anyways.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15176", "fixedVersions": ["SERVER 6.16.1", "SERVER 7.2.1"], "id": "15176", "issueType": "Task", "key": "SERVER-3035", "labels": ["docs-reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2021-06-30T12:20:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update Jetty to 9.4.42", "timeSpent": "PT0S", "updated": "2021-07-12T11:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Something you could try is to run {{puppet generate types --force}}. If that doesn't help, let us know and we can dig in further.", "created": "2021-07-06T12:25:00.000000"}, {"author": "557058:9f06ffd3-1605-405d-940b-a1053fa2b93d", "body": "\u00a0\n\n{{[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0doing this on the puppet server and we see...}}\n\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_command.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_contact.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_contactgroup.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_host.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_hostdependency.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_hostescalation.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_hostextinfo.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_hostgroup.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_service.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_servicedependency.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_serviceescalation.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_serviceextinfo.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_servicegroup.pp' using 'pcore' format.}}\n{{Notice: Generating '/etc/puppetlabs/code/environments/production/.resource_types/nagios_timeperiod.pp' using 'pcore' format.}}\n\n\u00a0\n\n{{The error message persists:}}\n\n{{Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Could not autoload puppet/type/nagios_contactgroup: Attempt to redefine entity 'http://puppet.com/2016.1/runtime/type/nagios_contactgroup'. Set at unknown location on node nag01}}", "created": "2021-07-06T13:02:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for doing that, we'll take a look.", "created": "2021-07-06T18:14:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "A few questions:\n1) Is it always the same node that fails? If so, is there anything unique about that node's catalog?\n\n2) Does the problem persist even after restarting the server?", "created": "2021-07-07T10:50:00.000000"}, {"author": "557058:9f06ffd3-1605-405d-940b-a1053fa2b93d", "body": "This node always fails, we have a VM that runs basically the same manifest that does not see this issue.\n\n This node is physical, which would introduce some minor difference. Looking at the facts I see `nagios_pci_megaraid_sas => true`.\n\nThe problem does persist, we have tried rebuilding the server and the result is the same.", "created": "2021-07-07T11:08:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Did it ever work for this node? Or, for example, did it break on an upgrade of Puppet, or any other change to installed modules or manifests?\n\nOne thing to check is if there are maybe multiple versions of the module installed. It looks like this stack is coming from the environment dir, is there any chance the module is also in {{/opt/puppetlabs/puppet/cache/lib}}? Though if this were true and causing issues, I would expect every node to be failing this way...", "created": "2021-07-07T14:34:00.000000"}, {"author": "557058:9f06ffd3-1605-405d-940b-a1053fa2b93d", "body": "It has never worked for this host, we are attempting to get his host commissioned. However other hosts continue to use this resource type without issues.\n\nThe manifest and modules are stable, we apply a role to our nagios hosts, the same role applies to working and this non-working host.\n\nThe only difference is the non working host is a physical server, but I'm struggling to understand why this could cause this.\n\nI removed /opt/puppetlabs/puppet/cache/lib on the client and server. The issue persists.", "created": "2021-07-08T12:43:00.000000"}, {"author": "557058:9f06ffd3-1605-405d-940b-a1053fa2b93d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0any thoughts on next steps?", "created": "2021-08-19T12:47:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:9f06ffd3-1605-405d-940b-a1053fa2b93d] can you include your puppet manifest(s) relating to nagios resource types?", "created": "2021-10-26T09:36:00.000000"}], "components": ["Puppet Server"], "created": "2021-06-22T17:25:00.000000", "creator": "557058:9f06ffd3-1605-405d-940b-a1053fa2b93d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64f25b5a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09b0b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jul/21"}], "description": "*Puppet Version:*\u00a0puppet-agent-6.22.1-1.el7.x86_64\n *Puppet Server Version:*\u00a0puppetserver-6.15.3-1.el7.noarch\n *OS Name/Version:*\u00a0CentOS Linux release 7.9.2009 (Core)\n\nNew build of a nagios server fails with:\n\n{noformat}\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Could not autoload puppet/type/nagios_contactgroup: Attempt to redefine entity 'http://puppet.com/2016.1/runtime/type/nagios_contactgroup'. Set at unknown location on node nag01\n{noformat}\n\n*Desired Behavior:*\n\nCatalog compiles and applies.\n\n*Actual Behavior:*\n{noformat}2021-06-22T15:42:51.763-07:00 ERROR [qtp317762346-3529] [puppetserver] Puppet Could not autoload puppet/type/nagios_contactgroup: Attempt to redefine entity 'http://puppet.com/2016.1/runtime\n/type/nagios_contactgroup'. Set at unknown location on node nag01\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loader/base_loader.rb:125:in `fail_redefine'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loader/base_loader.rb:74:in `set_entry'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loaders.rb:151:in `register_runtime3_type'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/metatype/manager.rb:132:in `newtype'\n/etc/puppetlabs/code/environments/production/modules/nagios_core/lib/puppet/util/nagios_maker.rb:16:in `create_nagios_type'\n/etc/puppetlabs/code/environments/production/modules/nagios_core/lib/puppet/type/nagios_contactgroup.rb:3:in `<main>'\norg/jruby/RubyKernel.java:1009:in `load'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/autoload.rb:66:in `load_file'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/autoload.rb:201:in `load'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/metatype/manager.rb:172:in `type'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource.rb:382:in `resource_type'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource.rb:370:in `resource_type'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource.rb:311:in `initialize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:386:in `resource'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler/catalog_validator/relationship_validator.rb:37:in `block in validate_relationship'\norg/jruby/RubyArray.java:1809:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler/catalog_validator/relationship_validator.rb:33:in `validate_relationship'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler/catalog_validator/relationship_validator.rb:11:in `block in validate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:45:in `block in eachparam'\norg/jruby/RubyHash.java:1415:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:44:in `eachparam'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler/catalog_validator/relationship_validator.rb:9:in `block in validate'\norg/jruby/RubyArray.java:1809:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler/catalog_validator/relationship_validator.rb:6:in `validate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:204:in `block in validate_catalog'\norg/jruby/RubyArray.java:1809:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:204:in `validate_catalog'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:192:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:191:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:274:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:155:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:34:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:307:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:305:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:233:in `block in benchmark'\nuri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/benchmark.rb:308:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:232:in `benchmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:303:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:56:in `block in find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/node/environment.rb:427:in `with_text_domain'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:55:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:223:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:138:in `do_find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:54:in `block in call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:274:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:53:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `block in process'\norg/jruby/RubyArray.java:1809:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:87:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:70:in `block in with_request_profiling'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:66:in `with_request_profiling'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:86:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:93:in `respond_to_errors'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:85:in `process'\nuri:classloader:/puppetserver-lib/puppet/server/master.rb:65:in `block in handleRequest'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:274:in `override'\nuri:classloader:/puppetserver-lib/puppet/server/master.rb:64:in `handleRequest'\n{noformat}\nWe have existing nagios vms\u00a0 getting catalogs from the same puppetserver which use nagios_contactgroup without issues. The server has the nagios_core module in place.", "environment": "Server and client are Centos 7 (x86_64), running on Dell hardware.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14888", "fixedVersions": [], "id": "14888", "issueType": "Bug", "key": "SERVER-3034", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9f06ffd3-1605-405d-940b-a1053fa2b93d", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Error 500 on SERVER: Server Error: Could not autoload puppet/type/nagios_contactgroup: Attempt to redefine entity 'http://puppet.com/2016.1/runtime/type/nagios_contactgroup'. Set at unknown location on node", "timeSpent": "PT0S", "updated": "2021-10-26T10:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:5fc46fd09592df0076141ac0] Not sure if we add known issues after they've been fixed, but I guess I don't know exactly when this will get released, so might be good to add. Something like:\n\nPuppet Server 7.2.0 includes a new API endpoint {{PUT /puppet-ca/v1/certificate_revocation_list}}. In order to access this endpoint, you must edit the config file at {{/etc/puppetlabs/puppetserver/conf.d/auth.conf}} and update the rule for this endpoint to be type {{regex}} instead of {{path}}.\n", "created": "2021-06-16T13:04:00.000000"}, {"author": "5fc46fd09592df0076141ac0", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]\u00a0noted, will do!", "created": "2021-06-16T13:08:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "^that will also affect 6.16.0, which is tagged but not shipped yet.", "created": "2021-06-19T23:04:00.000000"}, {"author": "5fc46fd09592df0076141ac0", "body": "remove from known issues on day of release ---> move to bug fixes for 6.16.1 and 7.2.1", "created": "2021-07-12T11:56:00.000000"}], "components": [], "created": "2021-06-16T12:46:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b4a9819"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o097pn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The PUT /puppet-ca/v1/certificate_revocation_list endpoint is now enabled by default. Previously, users would need to manually update auth.conf to access this endpoint."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_504356672_*|*_1_*:*_1_*:*_6370_*|*_10007_*:*_1_*:*_364168_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_75900"}], "description": "There was a bug in our auth rule for the CA endpoint to update CRLs.\n\nMostly just writing this ticket so we have a place for release notes.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15494", "fixedVersions": ["SERVER 6.16.1", "SERVER 7.2.1"], "id": "15494", "issueType": "Bug", "key": "SERVER-3033", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2021-06-22T08:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ensure CRL update endpoint is accessible", "timeSpent": "PT0S", "updated": "2021-07-12T13:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We intentionally always include the certname as a SAN, but we will update our SAN check to always allow the certname as a SAN, regardless of the {{allow-subject-alt-names}} setting. Thanks for the report [~accountid:623c0f04562ab90069f8b137]!", "created": "2021-06-22T11:36:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We set the SAN to the certname in order to comply with the spec. See https://puppet.atlassian.net/browse/SERVER-2338.", "created": "2021-06-29T13:12:00.000000"}], "components": ["Certificate Authority"], "created": "2021-06-16T06:02:00.000000", "creator": "623c0f04562ab90069f8b137", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c84019d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o096sz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "`puppetserver ca generate` will no longer always error when `allow-subject-alt-names` is false."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_98387950_*|*_1_*:*_1_*:*_538409454_*|*_10007_*:*_1_*:*_70621958_*|*_3_*:*_1_*:*_5626280_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_93326820_*|*_10005_*:*_1_*:*_610443685"}], "description": "*Puppet Version:* 7.7.0\n*Puppet Server Version:* 7.2.0\n*OS Name/Version:* CentOS 7.9\n\nWhen using the {{puppetserver ca generate --certname <CERTNAME>}} command to generate a certificate, the new certificate has always the SAN attribute set to the {{DNS:<CERTNAME>}}.\n{{--subject-alt-names}} was not used on the CLI:\n\n{noformat}\n# puppetserver ca generate --certname this-is-a-test.desy.de\nSuccessfully saved private key for this-is-a-test.desy.de to /etc/puppetlabs/puppet/ssl/private_keys/this-is-a-test.desy.de.pem\nSuccessfully saved public key for this-is-a-test.desy.de to /etc/puppetlabs/puppet/ssl/public_keys/this-is-a-test.desy.de.pem\nError:\n    When attempting to submit certificate request for 'this-is-a-test.desy.de', received:\n      code: 400\n      body: CSR 'this-is-a-test.desy.de' contains subject alternative names (DNS:this-is-a-test.desy.de), which are disallowed. To allow subject alternative names, set allow-subject-alt-names to true in your puppetserver.conf file, restart the puppetserver, and try signing this certificate again.\n{noformat}\n\nWe use the {{puppetserver ca generate}} feature to create some special certificates, which are not directly used or generated by a Puppet agent.\n\n*Desired Behavior:*\n{{puppetserver ca generate --certname <CERTNAME>}} should not set the SAN attribute without {{--subject-alt-names}}\n\n*Actual Behavior:*\n{{puppetserver ca generate --certname <CERTNAME>}} sets the SAN attribute by default to {{DNS:<CERTNAME>}} in the certificate.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15493", "fixedVersions": ["SERVER 6.16.1", "SERVER 7.2.1"], "id": "15493", "issueType": "Bug", "key": "SERVER-3032", "labels": ["docs-reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0f04562ab90069f8b137", "resolution": "Fixed", "resolutionDate": "2021-07-02T15:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver ca generate always sets subject alternative name", "timeSpent": "PT0S", "updated": "2021-07-12T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-06-11T15:35:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e4c8fc8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o094xv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9481_*|*_3_*:*_1_*:*_160378589_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_342382953"}], "description": "Planning to demo on Thurs 6/17.\n\nFOSS install, hit the endpoint, ???, profit", "duedate": "2021-06-16T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15862", "fixedVersions": ["None"], "id": "15862", "issueType": "Task", "key": "SERVER-3031", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2021-06-17T11:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prep demo of CRL update endpoint", "timeSpent": "PT0S", "updated": "2021-06-17T17:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "6323aedbed8abffd7ffdf0ce", "body": "Using same Server version as Platform 7.7.0 (Server 7.2.0), as nothing new has landed. Closing Server tickets. ", "created": "2021-06-10T14:42:00.000000"}], "components": [], "created": "2021-06-10T14:13:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@581239d0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11107"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o093jn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1727952_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-06-22)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-06-23T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.8.0 Release - 2021-06-24", "estimate": "PT0S", "externalId": "15861", "fixedVersions": [], "id": "15861", "issueType": "Task", "key": "SERVER-3030", "labels": [], "originalEstimate": "PT0S", "parent": "28813", "parentSummary": "Puppet Platform 7.8.0 Release - 2021-06-24", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Won't Do", "resolutionDate": "2021-06-10T14:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.2.0)", "timeSpent": "PT0S", "updated": "2021-06-10T14:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "6323aedbed8abffd7ffdf0ce", "body": "Using same Server version as Platform 7.7.0 (Server 7.2.0), as nothing new has landed. Closing Server tickets. ", "created": "2021-06-10T14:42:00.000000"}], "components": [], "created": "2021-06-10T14:13:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2bd65f23"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11107"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o093jf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1731093_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-06-22)\n\nIf this release is part of a larger Puppet Platform release, you can close this ticket.\n\nOtherwise, ship puppetserver artifacts using the [puppetserver shipping pipeline|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_ship-puppetserver_stage-foss-artifacts_standalone/].\n", "duedate": "2021-06-22T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.8.0 Release - 2021-06-24", "estimate": "PT0S", "externalId": "15492", "fixedVersions": [], "id": "15492", "issueType": "Task", "key": "SERVER-3029", "labels": [], "originalEstimate": "PT0S", "parent": "28813", "parentSummary": "Puppet Platform 7.8.0 Release - 2021-06-24", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Won't Do", "resolutionDate": "2021-06-10T14:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ship artifacts (Puppet Server 7.2.0)", "timeSpent": "PT0S", "updated": "2021-06-10T14:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5fc46fd09592df0076141ac0", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We've already released this version, so nothing to update.", "created": "2021-06-10T17:14:00.000000"}, {"author": "5fc46fd09592df0076141ac0", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0- if interested, release notes for Puppet Platform 7.8.0 can be reviewed here (Server is the last section):\u00a0\n\n[https://docs.google.com/document/d/1GEZO0gSGLGSe5T6V5WT6lcKSwDrozmGebIGCB8NT08A/edit?usp=sharing]\n\n\u00a0", "created": "2021-06-21T09:46:00.000000"}], "components": [], "created": "2021-06-10T14:13:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@98aaf49"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11107"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o093j7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10814811_*|*_10009_*:*_1_*:*_1589691814_*|*_5_*:*_1_*:*_923216950_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-06-22)\n\nWrite release notes for the release based on the tickets found in the previous step:\n\n* Search for tickets with {{fixVersion = \"SERVER 7.2.0\"}}: [https://puppet.atlassian.net/secure/IssueNavigator.jspa?jql=fixVersion=\"7.2.0\"]\n* Check each ticket's DOCS tab for the necessary release notes.\n* Open a PR in the [osp-docs|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md] repo. Target the PR against the {{*-preview}} branch corresponding to the major Platform version (or {{latest-preview}}).\n", "duedate": "2021-06-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.8.0 Release - 2021-06-24", "estimate": "PT0S", "externalId": "15175", "fixedVersions": [], "id": "15175", "issueType": "Task", "key": "SERVER-3028", "labels": [], "originalEstimate": "PT0S", "parent": "28813", "parentSummary": "Puppet Platform 7.8.0 Release - 2021-06-24", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Won't Do", "resolutionDate": "2021-07-09T19:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.2.0)", "timeSpent": "PT0S", "updated": "2021-07-09T19:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "6323aedbed8abffd7ffdf0ce", "body": "Using same Server version as Platform 7.7.0 (Server 7.2.0), as nothing new has landed. Closing Server tickets. ", "created": "2021-06-10T14:42:00.000000"}], "components": [], "created": "2021-06-10T14:13:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a9ba1fa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11107"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o093iz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1736767_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-06-22)\n\nPrepare release artifacts.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 6.x -> main, if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Once a release candidate has been determined, ensure it has promoted to the appropriate PE stream(s).\n\n* If this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n  ** This can be done prior to tagging, since promotion via the release pipeline is enable separately.\n  ** Example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n\n* Tag and build packages.\n  ** If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n  ** Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n  ** Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n  ** If you haven't already, notify the puppet-agent release lead that puppetserver 7.2.0 is built and ready for testing.\n", "duedate": "2021-06-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.8.0 Release - 2021-06-24", "estimate": "PT0S", "externalId": "14887", "fixedVersions": [], "id": "14887", "issueType": "Task", "key": "SERVER-3027", "labels": [], "originalEstimate": "PT0S", "parent": "28813", "parentSummary": "Puppet Platform 7.8.0 Release - 2021-06-24", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Won't Do", "resolutionDate": "2021-06-10T14:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare artifacts for release (Puppet Server 7.2.0)", "timeSpent": "PT0S", "updated": "2021-06-10T14:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2021-06-04T16:25:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b26f7ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ry:5"}], "description": "The [job|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] to tag & deploy puppetserver can only be used to tag and deploy from the HEAD of a branch.\n\nThe {{RELEASE_FROM_SHA}} parameter implies (to me at least) that we should be able to release from whatever SHA we want, but setting this to an older SHA results in the following error:\n{code:java}\n+ echo 'Check out RELEASE_FROM_SHA if specified'\nCheck out RELEASE_FROM_SHA if specified\n+ '[' -n 147d0a366404a314f84b3f9f68389e6d606a019e ']'\n+ git fetch origin\n+ git checkout 147d0a366404a314f84b3f9f68389e6d606a019e\nPrevious HEAD position was 5334fa41... (maint) update submodule versions and agent pin\nHEAD is now at 147d0a36... (maint) update submodule versions and agent pin\nM\truby/facter\nM\truby/puppet\n+ echo\n\n+ echo 'Fail if there are any changes to the local repo.'\nFail if there are any changes to the local repo.\n+ /usr/local/bin/lein-2.9.1 vcs assert-committed\nUncommitted changes in /home/jenkins/agent/workspace/platform_puppetserver_release-clj_6.x_release directory.\nBuild step 'Execute shell' marked build as failure\n{code}\n(from https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_release-clj_6.x_release/8/)\n\nNot sure if there was a historical reason for this error, but assuming there isn't currently a good reason, we should update the [job|https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/release-clj.sh] to allow passing an arbitrary SHA. This may be useful if changes have landed between feature complete and when we actually tag.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15173", "fixedVersions": [], "id": "15173", "issueType": "Improvement", "key": "SERVER-3022", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable puppetserver tag & deploy job to use any SHA", "timeSpent": "PT0S", "updated": "2022-03-09T08:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-06-02T09:45:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12908eee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694420i"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_70143582_*|*_1_*:*_1_*:*_52068_*|*_10007_*:*_1_*:*_16124089_*|*_3_*:*_1_*:*_1023487233_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_197317265"}], "description": "We need to add the {{lein-nvd}} security scanner to our CI for both FOSS and PE, as specified in https://puppet.atlassian.net/browse/SEC-478.\n\nOther teams have added it to PR testing, either in Jenkins Pipelines or in Travis. See https://github.com/puppetlabs/puppetdb/commit/5a6a792a64f565c119c828b628e63c434dfc8b2d.\n\nWe might possibly have some deps that aren't fully up to date yet. Other teams have added exceptions for those to allow CI to pass while the updates work their way through.\n\n*Outcomes:*\n* Add lein-nvd to puppetserver PR testing\n* Add lein-nvd to pe-pse PR testing\n* Add lein-nvd to pe-pse Jenkins pipeline\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17207", "fixedVersions": ["SERVER 6.16.0", "SERVER 7.2.1"], "id": "17207", "issueType": "Task", "key": "SERVER-3021", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2021-06-17T12:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add lein-nvd security scanner to Server CI", "timeSpent": "PT0S", "updated": "2021-07-12T13:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:5e3375e183d74c0e821851f3] This should be released in the PE 2019.8.9 and 2021.4 releases (planned for November).", "created": "2021-08-11T12:32:00.000000"}], "components": ["Puppet Server"], "created": "2021-06-01T15:26:00.000000", "creator": "5e3375e183d74c0e821851f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e3c9b12"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0a1eo:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Querying for CSRs will be much faster since we're only looking into the request directory instead of both certificate directory and request directory."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "44592"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Aug/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_75320553_*|*_1_*:*_1_*:*_248756272_*|*_10007_*:*_1_*:*_16062883_*|*_3_*:*_1_*:*_505413627_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5277275708_*|*_10005_*:*_1_*:*_1041669"}], "description": "The current method for querying CSRs from puppetserver is to use {{/puppet-ca/v1/certificate_statuses/ignored?state=requested}}. Unfortunately, this walks all of the signed certificates instead of just the CSRs, resulting in long query times. We have seen query times of over 2 minutes on this endpoint and they are called often when using the console. This causes long page load times as well as timeouts.\n\nOne possible solution that was discussed is to only walk the CSR dir when {{state=requested}} https://github.com/puppetlabs/puppetserver/blob/6.x/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1562-L1563\n\n*Outcomes*\n* Querying CSRs in a specific state should be faster (don't gather data we don't need).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16869", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.3.0"], "id": "16869", "issueType": "Task", "key": "SERVER-3020", "labels": ["docs-reviewed", "froyo_intern", "jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e3375e183d74c0e821851f3", "resolution": "Fixed", "resolutionDate": "2021-08-11T12:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "certificate_statuses endpoint is slow when only querying CSRs", "timeSpent": "PT0S", "updated": "2021-08-11T12:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2021-05-27T15:01:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73023ce7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-14"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Use System cert store"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylkkc:0014"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_11847626789_*|*_6_*:*_1_*:*_0_*|*_10015_*:*_1_*:*_18832085074_*|*_10014_*:*_1_*:*_3794384861"}], "description": "Server extensions like termini and report processors cannot connect to third-party HTTPS servers when using puppetserver's http client. It is possible to use raw {{Net::HTTP}}, but that does not work when puppetserver is running on a FIPS-enabled host nor does it work for HTTPS servers chained to the Let's Encrypt expired CA (or any other cert verification behavior present in openssl 1.1.x)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16633", "fixedVersions": ["SERVER 7.8.0"], "id": "16633", "issueType": "Epic", "key": "SERVER-3019", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2022-06-30T15:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use System cert store", "timeSpent": "PT0S", "updated": "2022-08-12T10:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5fc46fd09592df0076141ac0", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Filled in the other half of the pre-docs, for both FOSS and PE intermediate CA pages.", "created": "2021-05-26T15:55:00.000000"}, {"author": "5fc46fd09592df0076141ac0", "body": "PE - 2019.8.7 + 2021.2.0", "created": "2021-05-26T16:57:00.000000"}], "components": [], "created": "2021-05-25T11:36:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73936b8e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2712"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:40900006944209"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/May/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_790476_*|*_3_*:*_1_*:*_707276109_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1119139"}], "description": "*Summary:*\nIn SERVER-2550 we added an API for updating CRLs from an external CA. Users of the {{puppetserver ca import}} command sometimes supply CRLs from their corporate CAs that expire frequently. Once they do, the artifacts they imported become unusable and need updating.\n\n*Pre-docs:* https://docs.google.com/document/d/17bQrCIs80MCZAsKU924t3R0wrrQAwcItLGQW7Sq2MWU/edit?usp=sharing\n\n*Updates needed:*\nWe need to update https://github.com/puppetlabs/osp-docs/blob/latest-preview/server/http_certificate_revocation_list.md to document the new API endpoint, and https://github.com/puppetlabs/osp-docs/blob/latest-preview/server/intermediate_ca.md#set-up-puppet-as-an-intermediate-ca-with-an-external-root to talk about how to use this endpoint in the context of setting up Puppet as an intermediate CA.", "epicLinkSummary": "Improve CRL Management", "estimate": "PT0S", "externalId": "17519", "fixedVersions": ["SERVER 6.16.0", "SERVER 7.2.0"], "id": "17519", "issueType": "Task", "key": "SERVER-3018", "labels": [], "originalEstimate": "PT0S", "parent": "16586", "parentSummary": "Improve CRL Management", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2021-06-02T16:36:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs: Update expired external CRLs with the CRL update endpoint", "timeSpent": "PT0S", "updated": "2021-06-10T12:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T05:29:00.000000", "name": "agent.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10717"}, {"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T05:21:00.000000", "name": "ca.cnf", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10784"}, {"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T05:31:00.000000", "name": "client-1.crt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11316"}, {"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T05:31:00.000000", "name": "client-1.key", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11249"}, {"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T05:31:00.000000", "name": "server-1.crt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11168"}, {"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T05:31:00.000000", "name": "server-1.key", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11092"}, {"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T05:29:00.000000", "name": "server.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10633"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We only recently started ensuring that all certs have SANs that match their common names, and haven't yet moved to allowing common names to be empty. You're correct that we should get there to be spec compliant, but this likely low priority for us. /cc [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] for priority input.", "created": "2021-05-26T11:11:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T12:20:00.000000"}], "components": [], "created": "2021-05-25T05:31:00.000000", "creator": "623c08e7a1d81f0069d8dd26", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d7030c9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o08p2z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/May/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_106674956_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_24718272281"}], "description": "*Puppet Version:* 7.6.1\n*Puppet Server Version:* 7.1.2\n*OS Name/Version:* Debian Unstable\n\n[Disable the internal CA|https://puppet.com/docs/puppet/7/config_ssl_external_ca.html#config_puppet_server]\n\nGenerate certificates and keys (also attached):\n# {{openssl req -x509 -utf8 -subj \"/CN=Server\" -addext \"subjectAltName=critical,DNS:server.example.com\" -days 3650 -nodes -newkey rsa:2048 -keyout server.key -out server.crt}}\n# {{openssl req -utf8 -subj \"/\" -addext \"subjectAltName=critical,DNS:client.example.com\"  -nodes -newkey rsa:2048 -keyout client.key -out client.csr}}\n# {{mkdir newcerts && touch index; openssl ca -config ca.cnf -notext -create_serial -in client.csr -out client.crt}}\n\nConfigure the webserver:\n{code}\nwebserver: {\n\tclient-auth: want\n\n\tssl-ca-cert: server.crt\n\tssl-cert: server.crt\n\tssl-key: server.key\n\n\tssl-host: \"[::]\"\n\tssl-port: 8140\n\tssl-protocols: [TLSv1.2, TLSv1.3]\n}\n{code}\n\nConfigure the agent:\n{code}\n[main]\nserver = server.example.com\nenvironment = example\n\nlocalcacert = server.crt\nhostcert = client.crt\nhostprivkey = client.key\ncertificate_revocation = false\n{code}\n\n# Start the server\n# Run {{puppet agent -t}}\n# Internal server error\n\n*Desired Behavior:*\nAble to authenticate with an empty subject/CN, which is valid per the RFCs.\n\nNotably for my external CA issuing certificates with a CN doesn't make sense. Machines are uniquely identified by the Subject Alternative Name (SAN) and putting that information in the [now superseded CN|https://datatracker.ietf.org/doc/html/rfc6125#section-6.4.4] would be redundant.\n\n*Actual Behavior:*\nInternal server error. See [^agent.log] and [^server.log].", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "16632", "fixedVersions": [], "id": "16632", "issueType": "Bug", "key": "SERVER-3017", "labels": [], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c08e7a1d81f0069d8dd26", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Authorization internal server error with empty client CN", "timeSpent": "PT0S", "updated": "2022-03-08T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [{"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-06-01T05:08:00.000000", "name": "ec_server.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10858"}, {"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T04:17:00.000000", "name": "example.crt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10925"}, {"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T04:17:00.000000", "name": "example.key", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10857"}, {"attacher": "623c08e7a1d81f0069d8dd26", "created": "2021-05-25T04:11:00.000000", "name": "log.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11013"}], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey Raul, thanks for opening the ticket!\n\nWe use BouncyCastle's PEMParser to read parse keys and it looks like it will support most EC keys out of the box, however it doesn't seem to like the additional EC PARAMETERS above the key proper. I believe it is parsing the first set of \"------BEGIN *------\" and \"------END *------\" pairs it finds and returning that instead of the key. To fix this issue we'd need to first do some of our own parsing of the key file and strip out. I will update this ticket to match that feature request.\u00a0\n\nIn the meantime you should be able to get it to work by removing the parameter, moving it\u00a0 from the top of the key file, or altering it to no longer match the \"-----BEGIN (.*)-----\" format.\n\nYou can also convert this from the openssl format to the standard pkcs#8 format with {{openssl pkcs8 -in example.key -topk8 -out example.pk8}}.\n\nOr, if you are generating this key from openssl's cli you can pass the {{-noout}} option to keep it from printing the param into the key file.\n\n\u00a0\n\nnb: I validated these options from the repl, and all of them allowed the server to start up successfully, however I didn't spin up a full repro so there may be some agent <-> server communication that is still affected by different EC issues, if so, please let us know, but I believe it will be a different issue/ticket and all of them will go into a PKI related group of work.", "created": "2021-05-26T14:42:00.000000"}, {"author": "623c08e7a1d81f0069d8dd26", "body": "Thanks for the workaround, it works.\nDoing it that way the agent is unable to parse the key due to a regex which checks for \"BEGIN EC PRIVATE KEY\" generated by {{openssl genkey}} while {{openssl req}} generates \"BEGIN PRIVATE KEY\" instead. This is probably blocked by having a newer ruby-openssl, which offers a more generic interface for parsing unknown types of keys.\nIf I change the format to \"BEGIN EC PRIVATE KEY\" then the server is unable to understand the key. A bit of a catch-22 because my Puppet server is also an agent, but I think I'll bear with two differently formatted keys for this one machine for the time being.", "created": "2021-06-01T03:56:00.000000"}, {"author": "623c08e7a1d81f0069d8dd26", "body": "Right a normal EC \"BEGIN PRIVATE KEY\" doesn't work for the server either, see [^ec_server.log].\nPKCS#8 seems to however work. I did need to add {{-nocrypt}} to get an unencrypted key that Puppet Server could read.\n\nIn short, one can use traditional EC keys with Puppet. However not yet ED25519 as ruby-openssl lacks support.", "created": "2021-06-01T05:11:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Am I reading it right that PCKS#8 is the format required for both server and agent to understand? It sounds like this might be more user friendly if we put that in our documentation somewhere.", "created": "2021-06-02T09:21:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Some background for the agent. The {{OpenSSL::PKey.read}} method doesn't work in older ruby versions, so the agent checks for the EC header and uses that to determine what kind of key to load: see https://github.com/puppetlabs/puppet/blob/1a13e0cf96c70b303492e684f9ccf4c38207b3dd/lib/puppet/x509/cert_provider.rb#L18 and https://github.com/puppetlabs/puppet/blob/1a13e0cf96c70b303492e684f9ccf4c38207b3dd/lib/puppet/x509/cert_provider.rb#L218-L222. However, since that time, we dropped ruby 2.3 and 2.4 support in puppet 7.x. So you may be able to drop the regex and switch to {{OpenSSL::PKey.read}}?", "created": "2021-06-02T09:46:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It looks like {{OpenSSL::PKey.read}} works for both OpenSSL's format and PCKS#8 in Ruby MRI 2.7, but is broken in _new_ ways in JRuby 9.2.17.0 (it reads the file but returns a garbage key).\n\nI don't believe we use that code in JRuby during Server's operations, but I need to verify that next.", "created": "2021-06-02T10:40:00.000000"}, {"author": "623c08e7a1d81f0069d8dd26", "body": "{panel:title=Justin Stoller}\nAm I reading it right that PCKS#8 is the format required for both server and agent to understand?\n{panel}\nNot quite. I'll summarize.\n\nClient:\n* ED25519 doesn't work because of [ruby-openssl#443|https://github.com/ruby/openssl/issues/443].\n* EC works, but the key must begin with \"BEGIN EC PRIVATE KEY\". Thus PKCS#8 and the other header variation generated by {{openssl req -newkey}} don't work.\n\nServer:\n* ED25519 works\n* EC works, but for OpenSSL format:\n** Must not include EC parameters section.\n** Header must be \"BEGIN PRIVATE KEY\" not \"BEGIN EC PRIVATE KEY\".\n** _Or_ use unencrypted PKCS#8.\n\nSo it's best to have private keys in the OpenSSL format with the \"BEGIN EC PRIVATE KEY\" header variation.\n\nUsing {{OpenSSL::PKey.read}} simplifies this by being able to use the OpenSSL private key format in either variation for the client. Client will also transparently gain support for ED25519 once it's implemented in ruby-openssl.\nI gave this a try locally and it works for the client and doesn't seem to have affected the server.", "created": "2021-06-03T01:56:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thank you for the clarification. I've also opened PUP-11082 for the agent side changes. We think we will get to this work in our next iteration, 2-4 weeks from now.", "created": "2021-06-03T10:29:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Not really finding docs that outline what private key formats we support... and with these changes (this and PUP-11082), I'm not sure if there are meaningful restrictions anymore. Does anyone know of any such docs?", "created": "2021-06-24T10:40:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I'm not aware of any docs or any restrictions for puppet agent or server specifically. There are some hard coded assumptions in the puppet ecosystem like [https://github.com/binford2k/binford2k-node_encrypt/blob/a8ba89e4bd330a9237e4c7201aa3d3a876b493d5/lib/puppet_x/binford2k/node_encrypt.rb#L62|https://github.com/binford2k/binford2k-node_encrypt/blob/a8ba89e4bd330a9237e4c7201aa3d3a876b493d5/lib/puppet_x/binford2k/node_encrypt.rb#L62.]\u00a0but those can be fixed as folks start to EC keys.", "created": "2021-06-24T11:37:00.000000"}], "components": [], "created": "2021-05-25T04:17:00.000000", "creator": "623c08e7a1d81f0069d8dd26", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@fbb099"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a43y"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server can now successfully load private key PEM files that include a separate blocks for EC parameters, like the ones output by OpenSSL's EC key gen commands."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/May/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_504076987_*|*_1_*:*_1_*:*_111400095_*|*_10007_*:*_1_*:*_22020522_*|*_3_*:*_1_*:*_76166224_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1644636916_*|*_10005_*:*_1_*:*_781021507"}], "description": "OpenSSL uses a legacy format that should be compatible with PKCS however the Bouncy Castle PEMParser class's implementation won't support it.\n\nSpecifically the PKCS format should skip all content outside of approved \"{{----BEGIN <APPROVED TYPES>----}}\". However, PEMParser will read any value for \"{{APPROVED TYPES\"}} and return the first encoded object in a file. This is problematic because OpenSSL puts the ec param at the top of the file in its own BEGIN block. It is this value that is returned when parsing a key file in OpenSSL's format with the PEMParser.\n\nSince OpenSSL is the de facto standard for working with PKI from the command line we should filter BEGIN lines that do not include the word \"KEY\" (or more specifically \"PRIVATE KEY\" or \"RSA PRIVATE KEY\") from the content prior to giving it to the PEMParser.\n\n\u00a0These updates should be made in https://github.com/puppetlabs/jvm-ssl-utils - there are various places this update could go, so think about that (e.g. pem->key, more-generic pem->obj, Java level, etc.).\n\n* Ensure that keys generated following the process below no longer crash the server.\n* Unit tests\n* Open a SERVER ticket with DOCS label that includes pre-docs for what needs to be updated.\n\n----------------------------------------------------------------------------------------\n\n\u00a0\n\nOriginal bug report:\n\n*Puppet Server Version:* 7.1.2\n *OS Name/Version:* Debian Unstable\n\n[Disable the internal CA|https://puppet.com/docs/puppet/7/config_ssl_external_ca.html#config_puppet_server]\n\nGenerate an appropriate EC key and cert (also attached):\n # {{openssl ecparam -name prime256v1 -genkey -out example.key}}\n # {{openssl req -x509 -utf8 -subj \"/CN=Example\" -addext \"subjectAltName=critical,DNS:example.com\" -new -key example.key -out example.crt}}\n\nConfigure the webserver:\n{code}webserver: {\n\tclient-auth: want\n\n\tssl-ca-cert: example.crt\n\tssl-cert: example.crt\n\tssl-key: example.key\n\n\tssl-host: \"[::]\"\n\tssl-port: 8140\n\tssl-protocols: [TLSv1.2, TLSv1.3]\n}\n{code}\n*Desired Behavior:*\n Puppet Server is able to use a EC NIST P-256 cert/key.\n\n*Actual Behavior:*\n Crashes on startup with \"Expected a KeyPair or PrivateKey, got 1.2.840.10045.3.1.7\". See [^log.txt] for the backtrace.\n\n*Remarks:*\n Notably ED25519 does work, but is not usable because of [ruby-openssl#443|https://github.com/ruby/openssl/issues/443].\n Presumably regular EC keys have a different class or something as they need to include extra information about the curve for the key.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15860", "fixedVersions": ["SERVER 6.16.1", "SERVER 7.2.1"], "id": "15860", "issueType": "Bug", "key": "SERVER-3016", "labels": ["docs-reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c08e7a1d81f0069d8dd26", "resolution": "Fixed", "resolutionDate": "2021-06-30T12:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Cannot use OpenSSL EC files in OpenSSL format", "timeSpent": "PT0S", "updated": "2021-07-12T11:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2021-05-18T11:28:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@627c5165"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694421"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Users of the environment and transport info endpoints may have seen the cache bypassed (and additional work on the server) even though a 304 Not Modified response was received."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_501125012_*|*_1_*:*_1_*:*_116424_*|*_10007_*:*_1_*:*_6331686_*|*_3_*:*_1_*:*_6519666_*|*_5_*:*_1_*:*_0"}], "description": "As part of a refactor in SERVER-2471 a bug was introduced where if the etag cache has been evicted but the requester submits a still valid etag the server will compute the class info for an environment (because the cache was empty)\u00a0then check the computed etag value against requested etag and return a 304, _but_ not cache the newly computed etag.\n\n\n\u00a0\n\nThis means if there's a deploy that evicts an environment but doesn't change the class info for that environment, the cache will not be updated (despite returning 304) until a deploy where the environment changes its class content.\n\nA work around for this exists, users may submit a request to the environment_classes endpoint without the etag. This will trigger the correct caching behavior. However, the console (the consumer of the environment_classes endpoint in PE) will always submit an etag for an environment if it has one.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16631", "fixedVersions": ["SERVER 6.16.0", "SERVER 7.2.0"], "id": "16631", "issueType": "Bug", "key": "SERVER-3015", "labels": ["doc_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2021-05-24T10:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Environment_classes endpoint will not cache data if given accurate etag", "timeSpent": "PT0S", "updated": "2021-05-24T10:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The async http client we use inside the server is also affected by these URL normalization changes. I've fixed up the unit tests for now, and we're running this through beaker testing to see if it causes any issues with routine http requests internally.", "created": "2021-05-13T09:54:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm pretty sure the fix for this is what actually broke things: [https://issues.apache.org/jira/browse/HTTPCLIENT-1960.] There is apparently a _lot_ of heated debate in the open-source community as to which of these two behaviors is correct: it seems to depend a lot on what you're trying to do and how smart the server being queried is. In our case, we had some tests that were gratuitously adding slashes between the host and the path. Assuming the result of the work is what was described in the ticket, then the resulting URL should have the second slash encoded rather than ignored, which results in a 404. Note that additional forward slashes between other path segments still works fine.\n\nThis update also introduced some other changes to encoding that didn't happen to break our tests. If the URL contains certain encoded characters, notably '/' and ':', the client will no longer preserve those in what it sends to the server (the maintainers claim that it is not required by the spec that ':' be encoded, and that preserving encoded slashes is \"dumb and pointless\"). See the comments on https://github.com/apache/httpcomponents-client/commit/8c04c6ae5e5ba1432e40684428338ce68431766b.", "created": "2021-05-13T15:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This did not cause any test failures in our beaker tests, in either FOSS or PE.", "created": "2021-05-14T10:00:00.000000"}], "components": [], "created": "2021-05-12T10:52:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a5b89bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automated Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o08hxw:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Security Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "A security update to the apache HTTP client introduced an unrelated change to URL normalization, so that URLs with two consecutive forward slashes between the host and the path will no longer be sent as-is to the server: the second will be URL-encoded as if it was part of the path segment and not a separator. This affects any use of Puppet's HTTP client within Puppet Server."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_85944248_*|*_1_*:*_1_*:*_5736_*|*_10007_*:*_1_*:*_69457976_*|*_3_*:*_1_*:*_14215933_*|*_5_*:*_1_*:*_0"}], "description": "We recently updated the apache HTTP client in clj-parent from 4.5.3 to 4.5.13. Doing so has broken a number of tests in puppetserver.\n\nSome of these seem to be due to a change in the way double slashes are handled in URLs, and was caused by the updates in 4.5.8. Still investigating other failures.\n\nWe will need to do further testing to make sure none of these changes affect our actual product.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14885", "fixedVersions": ["SERVER 6.16.0", "SERVER 7.2.0"], "id": "14885", "issueType": "Bug", "key": "SERVER-3014", "labels": ["doc_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2021-05-14T10:00:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "New apache HTTP client is breaking tests", "timeSpent": "PT0S", "updated": "2021-05-18T12:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "5e3375e183d74c0e821851f3", "created": "2021-05-12T08:28:00.000000", "name": "image-2021-05-12-10-09-55-969.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11248"}, {"attacher": "623cfc6c01f8660070b787d6", "created": "2021-11-11T23:58:00.000000", "name": "puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11014"}, {"attacher": "557058:3f9bb89b-7f6b-4aa6-8670-4021884c44fe", "created": "2021-05-12T10:28:00.000000", "name": "screenshot-1.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10632"}, {"attacher": "557058:3f9bb89b-7f6b-4aa6-8670-4021884c44fe", "created": "2021-05-12T10:29:00.000000", "name": "screenshot-2.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10716"}], "comments": [{"author": "5e3375e183d74c0e821851f3", "body": "[~accountid:557058:3f9bb89b-7f6b-4aa6-8670-4021884c44fe] Do those errors align with a Jruby refresh in the puppetserver.log? ", "created": "2021-05-12T08:27:00.000000"}, {"author": "557058:3f9bb89b-7f6b-4aa6-8670-4021884c44fe", "body": "We are still seeing this regularly ( albeit more random, and not during cold start of the Puppet server any more since changing the\u00a0libdir to {color:#000000}/opt/puppetlabs/puppet/cache/lib{color} )\n\n!image-2021-05-12-10-09-55-969.png!\n\nin 24 hours, out of the 56, 4 events occurred from 2 servers, so correlating it to any particular catalogue is impossible given we have ~630 nodes checking in every 30 minutes for similar node configurations.\n\nAny further thoughts on how I could continue troubleshooting?", "created": "2021-05-12T10:17:00.000000"}, {"author": "557058:3f9bb89b-7f6b-4aa6-8670-4021884c44fe", "body": "I will check on jruby refreshes [~accountid:5e3375e183d74c0e821851f3]\u00a0 and respond back shortly.", "created": "2021-05-12T10:18:00.000000"}, {"author": "557058:3f9bb89b-7f6b-4aa6-8670-4021884c44fe", "body": "Hi [~accountid:5e3375e183d74c0e821851f3] ,\n\n\u00a0\nYes, we are seeing the JRUBY creations happening seconds or minutes before the next ruby-pwsh loading error:\n\nh2. Jruby creations\n !screenshot-1.png|thumbnail! \nh2 Node errors\n !screenshot-2.png|thumbnail! \n", "created": "2021-05-12T10:29:00.000000"}, {"author": "5e3375e183d74c0e821851f3", "body": "[~accountid:557058:3f9bb89b-7f6b-4aa6-8670-4021884c44fe]Thank you for confirming. That indicates that the Jruby startup fails to find the library during the first catalog compilation.  I will defer to the team that owns this Jira space for comment or investigation.\n\nA potential workaround, for now, would be to increase the {{max-requests-per-instance}} to decrease the Jruby refresh frequency. You could potentially set it to 0 to disable the refreshes or increase it to a larger number like 1,000,000 to decrease the frequency. ", "created": "2021-05-12T10:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We wanted to double check if the versions at the top of the ticket are correct: are you using a Puppet 6 agent alongside a Puppet 5 server? This is not a configuration we recommend to run with outside of the upgrade process", "created": "2021-05-12T12:08:00.000000"}, {"author": "623cfc6c01f8660070b787d6", "body": "We are seeing the same.\n\nPuppetserver: 6.15.3\n Puppet agent: 6.23\n OS: Windows Server 2019\n\nWe need several runs until all dsc resources we use are loaded. Reloading the puppetserver after the puppet runs succeed reintroduces the problem.\n\nThere are errors in the logs of the puppetserver (attached). E.g. line 155 shows the error we see on the clients.\n\n[^puppetserver.log]", "created": "2021-11-11T23:38:00.000000"}, {"author": "557058:3f9bb89b-7f6b-4aa6-8670-4021884c44fe", "body": "Still an active issue on latest PuppetServer and Puppet agent. Seems to be server side. After the first catalog compilation error the issue does not persist. ", "created": "2021-11-22T13:58:00.000000"}], "components": ["Puppet Server"], "created": "2021-05-12T08:21:00.000000", "creator": "5e3375e183d74c0e821851f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76d11645"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0lip"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/May/21"}], "description": "*Puppet Version: 6.18.0*\n *Puppet Server Version: 5.3*\n *OS Name/Version:*\u00a0Windows Server 2012 R2\n\n\u00a0\n\nWe get the following error randomly across our windows nodes in our puppet environment. We have 4 different node types which interface with different custom puppet manifests however all of them seem to have this issue pop up occasionally.\u00a0\n{code:java}\nCould not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Could not autoload puppet/type/dsc: Could not autoload puppet/provider/base_dsc_lite/powershell: no such file to load -- ruby-pwsh  {code}\nAfter\u00a0changing the\u00a0libdir to\u00a0{color:#000000}/opt/puppetlabs/puppet/cache/lib it does not occur on the pupperserver restart.{color}\n\n\u00a0\n\n*Desired Behavior:*\n\nThe library is present, so puppetserver should load it at all times.\n\n*Actual Behavior:*\n\n\u00a0\n\nIn 24 hours, out of the 56, 4 events occurred from 2 servers, so correlating it to any particular catalogue is impossible given we have ~630 nodes checking in every 30 minutes for similar node configurations. !image-2021-05-12-10-09-55-969.png!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16867", "fixedVersions": [], "id": "16867", "issueType": "Bug", "key": "SERVER-3013", "labels": ["has_workaround"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3f9bb89b-7f6b-4aa6-8670-4021884c44fe", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver intermittently fails to load ruby files", "timeSpent": "PT0S", "updated": "2022-03-09T09:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5abd613dd4cf3c56be24b70d", "body": "duplicate of:\u00a0https://puppet.atlassian.net/browse/SERVER-3010", "created": "2021-05-19T00:58:00.000000"}], "components": [], "created": "2021-05-12T02:06:00.000000", "creator": "5abd613dd4cf3c56be24b70d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b730f7e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-3747"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o08hlw:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_36340_*|*_6_*:*_2_*:*_570550208_*|*_10006_*:*_1_*:*_30126905"}], "description": "Remove {{Debian 8}} from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove Debian 8 FOSS support", "estimate": "PT0S", "externalId": "16630", "fixedVersions": [], "id": "16630", "issueType": "Task", "key": "SERVER-3012", "labels": [], "originalEstimate": "PT0S", "parent": "58462", "parentSummary": "Remove Debian 8 FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5abd613dd4cf3c56be24b70d", "resolution": "Duplicate", "resolutionDate": "2021-05-19T00:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Debian 8 from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2021-05-19T00:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "5efb3a716fddfb0bb4f62604", "created": "2021-05-10T12:12:00.000000", "name": "puppagent-2.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11012"}, {"attacher": "5efb3a716fddfb0bb4f62604", "created": "2021-05-10T12:12:00.000000", "name": "puppetserver-2.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10924"}], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hello,\n\nYou mention that 6.15.3 no longer works. I was wondering if it worked in 6.14 or 6.13? Specifically if PUP-10238 is causing issues ([release notes|https://puppet.com/docs/puppet/6.22/release_notes_puppet.html#new_features_puppet_x-13-0-new-default-behavior], [pull request|https://github.com/puppetlabs/puppet/pull/7982]).", "created": "2021-05-12T13:05:00.000000"}, {"author": "5efb3a716fddfb0bb4f62604", "body": "Hello,\n\nThis was on a fresh install of puppetserver, not an upgrade from a previously working version. We only tried 6.15.3 and 7.1.2 then. I'm a bit reluctant to reinstall an old version again, since we now have a more or less working setup with the certname comparison.\n\nPUP-10238 seems to change the strict_hostname_checking. Could a change in hostname checking explain that neither the corresponding node name nor the default one are executed? Even with only a single default node in the site.pp the content is not executed.", "created": "2021-05-13T09:09:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "yeah, sorry for the delay getting back to you. I understand not wanting to try out random versions of Puppet Server, especially since you have something working.\n\n\u00a0\n\nHowever, I haven't been able to reproduce your issue. I just did a fresh install with Puppet Server 7.1.2, ran the {{puppetserver ca setup}} util and create a single additional environment \"farm\" in my codedir with just a site.pp. It looks like this:\n{code:java}[root@acoustic-flaw ~]# cat /etc/puppetlabs/code/environments/farm/manifests/site.pp \n\n$certname = $trusted['certname']notify{\"facter certname: $certname\":}\n\nnode default {\n    notify{'node default':}\n}\n\nnode 'acoustic-flaw.delivery.puppetlabs.net' {\n    notify{'include master':}\n}\n\nif $certname == 'acoustic-flaw.delivery.puppetlabs.net' {\n    notify{'certname master':}\n}\n\nnotify{'End of site.pp':} {code}\n{code:java}[root@acoustic-flaw ~]# cat /etc/puppetlabs/puppet/puppet.conf \n\n# This file can be used to override the default puppet settings.\n# See the following links for more details on what settings are available:\n# - https://puppet.com/docs/puppet/latest/config_important_settings.html\n# - https://puppet.com/docs/puppet/latest/config_about_settings.html\n# - https://puppet.com/docs/puppet/latest/config_file_main.html\n# - https://puppet.com/docs/puppet/latest/configuration.html\n\n[server]\nvardir = /opt/puppetlabs/server/data/puppetserver\nlogdir = /var/log/puppetlabs/puppetserver\nrundir = /var/run/puppetlabs/puppetserver\npidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid\ncodedir = /etc/puppetlabs/code\n\n[agent]\nserver = acoustic-flaw.delivery.puppetlabs.net\nenvironment = farm\n {code}\n{code:java}[root@acoustic-flaw ~]# puppet agent -t  \nInfo: Using configured environment 'farm'\nInfo: Retrieving pluginfacts                                                                   \nInfo: Retrieving plugin       \nInfo: Caching catalog for acoustic-flaw.delivery.puppetlabs.net\nInfo: Applying configuration version '1622069327'\nNotice: facter certname: acoustic-flaw.delivery.puppetlabs.net\nNotice: /Stage[main]/Main/Notify[facter certname: acoustic-flaw.delivery.puppetlabs.net]/message: defined 'message' as 'facter certname: acoustic-flaw.delivery.puppetlabs.net'\nNotice: certname master                                                                        \nNotice: /Stage[main]/Main/Notify[certname master]/message: defined 'message' as 'certname master'\nNotice: End of site.pp\nNotice: /Stage[main]/Main/Notify[End of site.pp]/message: defined 'message' as 'End of site.pp' \nNotice: include master\nNotice: /Stage[main]/Main/Node[acoustic-flaw.delivery.puppetlabs.net]/Notify[include master]/message: defined 'message' as 'include master'\nNotice: Applied catalog in 0.02 seconds {code}\n\u00a0\n\n\u00a0\n\nIs it possible that there's some encoding issue? Everything _should_ be UTF-8 compatible though sometime special characters can cause problems.", "created": "2021-05-26T17:03:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:5efb3a716fddfb0bb4f62604] since we can't reproduce your issue, we are going to close this. If you're still having trouble and can provide additional info, feel free to re-open. Thanks!", "created": "2021-06-09T11:38:00.000000"}], "components": [], "created": "2021-05-10T12:15:00.000000", "creator": "5efb3a716fddfb0bb4f62604", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b04840c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o08eoc:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/May/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2589801353_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.20.0*\n *Puppet Server Version: 7.1.2, 6.15.3*\n *OS Name/Version: CentOS7*\n\nOur puppet master server (called 'master.XYZ.com' here) ignores the node definitions in the manifest/site.pp of our environment (called 'farm').\nThe site.pp looks like this:\n{code:java}\n$certname = $trusted['certname']\nnotify{\"facter certname: $certname\":}\n\nnode default {\n    notify{'node default':}\n}\n\nnode 'master.XYZ.com' {\n    notify{'include master':}\n    include master\n}\n\nif $certname == 'master.XYZ.com' {\n    notify{'certname master':}\n}\n\nnotify{'End of site.pp':}\n{code}\nWe want to run puppet-agent on\u00a0master.XYZ.com itself, so we add the agent section to /etc/puppetlabs/puppet/puppet.conf:\n{code:java}\n# This file can be used to override the default puppet settings.\n# See the following links for more details on what settings are available:\n# - https://puppet.com/docs/puppet/latest/config_important_settings.html\n# - https://puppet.com/docs/puppet/latest/config_about_settings.html\n# - https://puppet.com/docs/puppet/latest/config_file_main.html\n# - https://puppet.com/docs/puppet/latest/configuration.html\n[user]\nhttp_proxy_host = scarecrow\nhttp_proxy_port = 3128\n[server]\nvardir = /opt/puppetlabs/server/data/puppetserver\nlogdir = /var/log/puppetlabs/puppetserver\nrundir = /var/run/puppetlabs/puppetserver\npidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid\ncodedir = /etc/puppetlabs/code\n[master]\nstoreconfigs = true\nstoreconfigs_backend = puppetdb\n[agent]\nserver = master.XYZ.com\nenvironment = farm{code}\nRunning puppet agent -t on master.XYZ.com successfully executes the init.pp above, but skips both the default node case and the master.XYZ.com case. Manually checking for $certname == 'master.XYZ.com' works and the corresponding notify is executed. The verbose logs of the agent and server are attached.\n\nWe observerd this behavior both running puppetserver version 7.1.2 and puppetserver version 6.15.3 and also both before and after installing puppetdb.\n*Desired Behavior:*\nThe node 'master.XYZ.com' {} block is executed*.*\n*Actual Behavior:*\nEverything but the node {} blocks in site.pp is executed.\n\n\u00a0", "environment": "[^puppagent.log]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16865", "fixedVersions": [], "id": "16865", "issueType": "Bug", "key": "SERVER-3011", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5efb3a716fddfb0bb4f62604", "resolution": "Cannot Reproduce", "resolutionDate": "2021-06-09T11:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "node definitions are being ignored", "timeSpent": "PT0S", "updated": "2021-06-09T11:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2021-05-06T12:52:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d44f6a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-3735"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o08dtg:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_69759614_*|*_1_*:*_1_*:*_1414_*|*_10007_*:*_1_*:*_5293902_*|*_3_*:*_1_*:*_386176_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_378784"}], "description": "Remove {{Debian 8 Jessie (amd64, i386)}} from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove Debian 8 Jessie (amd64, i386) FOSS support", "estimate": "PT0S", "externalId": "16629", "fixedVersions": [], "id": "16629", "issueType": "Task", "key": "SERVER-3010", "labels": [], "originalEstimate": "PT0S", "parent": "58460", "parentSummary": "Remove Debian 8 Jessie (amd64, i386) FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2021-05-07T09:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Debian 8 Jessie (amd64, i386) from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2021-05-07T09:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:623c12a0562ab90069f8b338] I'm wondering if there's a code versioning issue. Did you happen to restart the puppetserver process after upgrading?", "created": "2021-05-05T16:57:00.000000"}, {"author": "623c12a0562ab90069f8b338", "body": "[~accountid:63d40628f6e1b543161789a7] Yes, and actually I use theforeman/puppet to manage puppetserver version. This takes care of the configuration and hasn't been a problem yet. I'm using the latest version of [https://forge.puppet.com/modules/theforeman/puppet.|https://forge.puppet.com/modules/theforeman/puppet]\n\n\u00a0\n\nMore information that is helpful is that we actually mount the /etc/puppetlabs/puppet/ssl dir to back it up. When I unmount this directory, I am able to run a successful puppet agent -t. This makes me think there's a permissions problem with the mountpoint, but we've been using this for a while. I only experience the Operation Not Permitted errors after upgrading the puppetserver to version 5.3.15. <=5.3.14 works. >=5.3.15 does not work.", "created": "2021-05-05T17:31:00.000000"}, {"author": "623c12a0562ab90069f8b338", "body": "I feel like this has something to do with the problem - https://puppet.atlassian.net/browse/SERVER-2863\n\n\u00a0\n\nI'm not sure what is happening under the hood when an agent requests a certificate. As far as I can see, puppetserver writes the CSR to the /etc/puppetlabs/puppet/ssl/ca/requests folder with 600 permissions. In my case, the file is written in this directory and WHATEVER is next is not being permitted. This is where it throws the \"Operation Not Permitted\" error. As I mentioned in my last comment, this works when I am not using a gluster mountpoint for the /etc/puppetlabs/puppet/ssl directory, but if that is mounted, I received the Internal Server 500 Operation Not Permitted error on new certificate requests.", "created": "2021-05-06T13:20:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The atomic write functionality that seems to be causing issues for you relies pretty heavily on fairly low-level Java interfaces to Posix file operations. See https://github.com/puppetlabs/clj-kitchensink/blob/main/src/puppetlabs/kitchensink/file.clj for the relevant code. I'm not sure how those might interact with Gluster. Are you aware of any differences there that might be interfering? I'm not sure if we'll be able to fix them, but we may be able to at least document any caveats or gotchas.", "created": "2021-05-27T11:52:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:623c12a0562ab90069f8b338] We're going to close this due to lack of activity. If you're still having trouble and can give us more info on Gluster, feel free to re-open.", "created": "2021-06-09T11:42:00.000000"}], "components": [], "created": "2021-05-05T16:17:00.000000", "creator": "623c12a0562ab90069f8b338", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ffe5117"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "RHEL 7 (x86_64)"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o08ch8:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/May/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3007480914_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 5.22*\n *Puppet Server Version: 6.14.1*\n *OS Name/Version: RHEL 7 x86*\n\nDescribe your issue in as much detail as possible\u2026\n\n\u00a0\n\nAfter upgrading puppetserver from 5.3.5 to 6.14.1, agents are not able to successfully request a new certificate. Running a puppet agent -t will result in an internal server error 500 \"operation not permitted\". It looks like the CSR is getting written to /etc/puppetlabs/puppet/ssl/ca/requests/ with mode of 600. The exception is a \" java.nio.file.FileSystemException: /etc/puppetlabs/puppet/ssl/ca/requests\". the puppet user and group is the owner of that directory.\n\nI have SELinux turned off.\n\n\u00a0\n\n*Desired Behavior: The agent should be able to request a certificate and the puppetserver CA should issue the certificate automatically.*\n\n*Actual Behavior:*\n\nExamples:\n Run puppet agent with --test --trace --debug\n\n\u00a0\n{code:java}\nDebug: Creating new connection for https://puppetmaster.ssnp201.apse2.xx.xxx.com:8140\nDebug: HTTP GET https://puppetmaster.ssnp201.xx.xx.xx.com:8140/puppet-ca/v1/certificate/i-0484da0deef1a4829.ntpd2.xx.xx.internal.xxxx.com returned 404 Not Found\nDebug: Dynamically-bound server lookup failed, falling back to ca_server setting: puppetmaster.ssnp201.apse2.xxx.xx.com\nDebug: Dynamically-bound port lookup failed; falling back to ca_port setting: 8140\nDebug: Creating new connection for https://puppetmaster.ssnp201.apse2.internal.xxx.com:8140\nDebug: HTTP GET https://puppetmaster.ssnp201.xx.xx.xx.xx:8140/puppet-ca/v1/certificate_request/i-0484da0deef1a4829.ntpd2.ssnp201.xx.xxx.xx.com returned 404 Not Found\nInfo: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml\nInfo: Creating a new SSL certificate request for i-0484da0deef1a4829.ntpd2.xxxx.xxxx.xxx.xxx.xxx\nInfo: Certificate Request fingerprint (SHA256): 7F:20:83:8D:64:DC:6B:5F:C0:EB:9B:BE:70:7D:32:02:C0:E0:02:E6:F4:46:83:3D:95:9D:24:0F:E2:F3:B6:D6\nDebug: Dynamically-bound server lookup failed, falling back to ca_server setting: puppetmaster.ssnp201.xxx.xxx.xxxx.xxxx\nDebug: Dynamically-bound port lookup failed; falling back to ca_port setting: 8140\nDebug: Creating new connection for https://puppetmaster.ssnp201.apse2.xx.xx.com:8140\nDebug: HTTP PUT https://puppetmaster.ssnp201.xx.xx.xx.com:8140/puppet-ca/v1/certificate_request/i-0484da0deef1a4829.ntpd2.ssnp201.xx.xx.xx.com returned 500 Server Error\nError: Could not request certificate: Error 500 on SERVER: Internal Server Error: java.nio.file.FileSystemException: /etc/puppetlabs/puppet/ssl/ca/requests/i-0484da0deef1a4829.ntpd2.ssnp201.xx.xx.xx.com.pem2243328055254746826tmp: Operation not permitted\n{code}\n\u00a0\n\n\u00a0\n\n\u00a0\n\nRelevant sections of {{/var/log/puppetlabs/puppetserver/puppetserver.log}} or any applicable logs from the same directory.\n\n\u00a0\n{code:java}\n-05-05 21:59:32,009 ERROR [qtp34013190-36] [p.r.core] Internal Server Error: java.nio.file.FileSystemException: /etc/puppetlabs/puppet/ssl/ca/requests/i-0484da0deef1a4829.ntpd2.ssnp201.xx.xx.xx.com.pem4432301073617702865tmp: Operation not permitted\n\tat sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)\n\tat sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)\n\tat sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)\n\tat sun.nio.fs.UnixFileAttributeViews$Posix.setMode(UnixFileAttributeViews.java:238)\n\tat sun.nio.fs.UnixFileAttributeViews$Posix.setPermissions(UnixFileAttributeViews.java:260)\n\tat java.nio.file.Files.setPosixFilePermissions(Files.java:2045)\n\tat puppetlabs.kitchensink.file$atomic_write.invokeStatic(file.clj:76)\n\tat puppetlabs.kitchensink.file$atomic_write.invoke(file.clj:36)\n\tat puppetlabs.puppetserver.certificate_authority$fn__37644$write_csr__37649$fn__37650.invoke(certificate_authority.clj:479)\n\tat puppetlabs.puppetserver.certificate_authority$fn__37644$write_csr__37649.invoke(certificate_authority.clj:474)\n\tat puppetlabs.puppetserver.certificate_authority$fn__38703$save_certificate_request_BANG___38708$fn__38709.invoke(certificate_authority.clj:1226)\n\tat puppetlabs.puppetserver.certificate_authority$fn__38703$save_certificate_request_BANG___38708.invoke(certificate_authority.clj:1218)\n\tat puppetlabs.puppetserver.certificate_authority$fn__38837$process_csr_submission_BANG___38842$fn__38846.invoke(certificate_authority.clj:1310)\n\tat puppetlabs.puppetserver.certificate_authority$fn__38837$process_csr_submission_BANG___38842.invoke(certificate_authority.clj:1296)\n\tat puppetlabs.services.ca.certificate_authority_core$fn__40800$handle_put_certificate_request_BANG___40805$fn__40806.invoke(certificate_authority_core.clj:60)\n\tat puppetlabs.services.ca.certificate_authority_core$fn__40800$handle_put_certificate_request_BANG___40805.invoke(certificate_authority_core.clj:55)\n\tat puppetlabs.services.ca.certificate_authority_core$fn__40998$web_routes__41003$fn__41004$fn__41015.invoke(certificate_authority_core.clj:389)\n\tat bidi.ring$fn__17722.invokeStatic(ring.cljc:25)\n\tat bidi.ring$fn__17722.invoke(ring.cljc:21)\n\tat bidi.ring$fn__17707$G__17702__17716.invoke(ring.cljc:16)\n\tat puppetlabs.comidi$make_handler$fn__19638.invoke(comidi.clj:245)\n\tat puppetlabs.trapperkeeper.authorization.ring_middleware$fn__26381$wrap_authorization_check__26386$fn__26387$fn__26388.invoke(ring_middleware.clj:290)\n\tat puppetlabs.ring_middleware.core$fn__23841$wrap_bad_request__23850$fn__23853$fn__23859.invoke(core.clj:187)\n\tat puppetlabs.puppetserver.ringutils$fn__37165$wrap_with_trapperkeeper_or_client_whitelist_authorization__37170$fn__37171$fn__37175.invoke(ringutils.clj:124)\n\tat puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n\tat puppetlabs.ring_middleware.core$fn__23939$wrap_uncaught_errors__23948$fn__23951$fn__23956.invoke(core.clj:233)\n\tat puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__37154.invoke(ringutils.clj:83)\n\tat puppetlabs.ring_middleware.core$fn__23538$wrap_response_logging__23543$fn__23544$fn__23545.invoke(core.clj:53)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__29738.invoke(jetty9_core.clj:455)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n\tat sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$fn__29308$normalize_uri_handler__29313$fn__29314$fn__29315.invoke(normalized_uri_helpers.clj:74)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1363)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:190)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1278)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:221)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)\n\tat org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:717)\n\tat org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:54)\n\tat com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n\tat org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:500)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:543)\n\tat org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:398)\n\tat org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)\n\tat java.lang.Thread.run(Thread.java:748){code}\n\u00a0\n\nPuppetMasters puppet.conf config:\n\n\u00a0\n{code:java}\n# file managed by puppet\n[main]\n    certname = puppetmaster.xx.xx.xx.xx.com\n    codedir = /etc/puppetlabs/code\n    environmentpath = /etc/puppetlabs/code/environments\n    hiera_config = $confdir/hiera.yaml\n    hostprivkey = $privatekeydir/$certname.pem { mode = 640 }\n    logdir = /var/log/puppetlabs/puppet\n    pluginfactsource = puppet:///pluginfacts\n    pluginsource = puppet:///plugins\n    privatekeydir = $ssldir/private_keys { group = service }\n    reports = none\n    rundir = /var/run/puppetlabs\n    server = puppetmaster.xx.xx.xx.xx.com\n    show_diff = false\n    ssldir = /etc/puppetlabs/puppet/ssl\n    vardir = /opt/puppetlabs/puppet/cache[agent]\n    classfile = $statedir/classes.txt\n    default_schedules = false\n    environment = develop\n    localconfig = $vardir/localconfig\n    masterport = 8140\n    noop = false\n    report = true\n    runinterval = 1800\n    splay = true\n    splaylimit = 1800\n    usecacheonfailure = true[master]\n    autosign = /etc/puppetlabs/puppet/autosign.conf { mode = 0664 }\n    ca = true\n    ca_ttl = 2y\n    certname = puppetmaster.xx.xx.xx.xx.com\n    logdir = /var/log/puppetlabs/puppetserver\n    parser = current\n    rundir = /var/run/puppetlabs/puppetserver\n    ssldir = /etc/puppetlabs/puppet/ssl\n    storeconfigs = false\n    strict_variables = false\n    vardir = /opt/puppetlabs/server/data/puppetserver{code}\n\u00a0\n\nPuppetserver conf file:\n{code:java}\n[root@puppetmaster conf.d]# cat puppetserver.conf\n#\n# Managed by Puppet\n#\n# configuration for the JRuby interpreters\njruby-puppet: {\n    # Where the puppet-agent dependency places puppet, facter, etc...\n    # Puppet server expects to load Puppet from this location\n    ruby-load-path: [\n        /opt/puppetlabs/puppet/lib/ruby/vendor_ruby,\n    ]    # This setting determines where JRuby will install gems.  It is used for loading gems,\n    # and also by the `puppetserver gem` command line tool.\n    gem-home: /opt/puppetlabs/server/data/puppetserver/jruby-gems    # This setting defines the complete \"GEM_PATH\" for jruby.  If set, it should include\n    # the gem-home directory as well as any other directories that gems can be loaded\n    # from (including the vendored gems directory for gems that ship with puppetserver)\n    gem-path: [${jruby-puppet.gem-home}, \"/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_gems\"]    # PLEASE NOTE: Use caution when modifying the below settings. Modifying\n    # these settings will change the value of the corresponding Puppet settings\n    # for Puppet Server, but not for the Puppet CLI tools. This likely will not\n    # be a problem with master-var-dir, master-run-dir, or master-log-dir unless\n    # some critical setting in puppet.conf is interpolating the value of one\n    # of the corresponding settings, but it is important that any changes made to\n    # master-conf-dir and master-code-dir are also made to the corresponding Puppet\n    # settings when running the Puppet CLI tools. See\n    # https://docs.puppetlabs.com/puppetserver/latest/puppet_conf_setting_diffs.html#overriding-puppet-settings-in-puppet-server\n    # for more information.    # (optional) path to puppet conf dir; if not specified, will use\n    # the puppet default\n    master-conf-dir: /etc/puppetlabs/puppet    # (optional) path to puppet code dir; if not specified, will use\n    # the puppet default\n    master-code-dir: /etc/puppetlabs/code    # (optional) path to puppet var dir; if not specified, will use\n    # the puppet default\n    master-var-dir: /opt/puppetlabs/server/data/puppetserver    # (optional) path to puppet run dir; if not specified, will use\n    # the puppet default\n    master-run-dir: /var/run/puppetlabs/puppetserver    # (optional) path to puppet log dir; if not specified, will use\n    # the puppet default\n    master-log-dir: /var/log/puppetlabs/puppetserver    # (optional) maximum number of JRuby instances to allow\n    max-active-instances: 4    # (optional) the number of HTTP requests a given JRuby instance will handle in its lifetime.\n    max-requests-per-instance: 0    # (optional) The maximum number of requests that may be queued waiting to borrow a JRuby from the pool.\n    max-queued-requests: 0    # (optional) Sets the upper limit for the random sleep set as a Retry-After header on 503 responses returned when max-queued-requests is enabled.\n    max-retry-delay: 1800    # (optional) Authorize access to Puppet master endpoints via rules\n    # specified in the legacy Puppet auth.conf file (if true) or via rules\n    # specified in the Puppet Server HOCON-formatted auth.conf (if false or not\n    # specified).\n    use-legacy-auth-conf: false    # (optional) enable or disable environment class cache\n    environment-class-cache-enabled: false\n}# settings related to HTTPS client requests made by Puppet Server\nhttp-client: {\n    # A list of acceptable protocols for making HTTPS requests\n    ssl-protocols: [\n        TLSv1.2,\n    ]    # A list of acceptable cipher suites for making HTTPS requests\n    cipher-suites: [\n        TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,\n        TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,\n        TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,\n        TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,\n        TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,\n        TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,\n    ]    # Whether to enable http-client metrics; defaults to 'true'.\n    metrics-enabled: false    # The amount of time, in milliseconds, that an outbound HTTP connection\n    # will wait for data to be available before closing the socket. If not\n    # defined, defaults to 20 minutes. If 0, the timeout is infinite and if\n    # negative, the value is undefined by the application and governed by the\n    # system default behavior.\n    idle-timeout-milliseconds: 1200000    # The amount of time, in milliseconds, that an outbound HTTP connection will\n    # wait to connect before giving up. Defaults to 2 minutes if not set. If 0,\n    # the timeout is infinite and if negative, the value is undefined in the\n    # application and governed by the system default behavior.\n    connect-timeout-milliseconds: 120000\n}# settings related to profiling the puppet Ruby code\nprofiler: {\n    # enable or disable profiling for the Ruby code;\n    enabled: false\n}\n{code}\n\u00a0\n\n\u00a0\n\n\u00a0\n\nFor more detailed information turn up the server logs by upping the log level in the server's logback.xml\n\nRelevant sections of configurations files (puppet.conf, hiera.conf, Server's conf.d, defaults/sysconfig)\n\nFor memory issues with server heap dumps are also helpful.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16289", "fixedVersions": [], "id": "16289", "issueType": "Bug", "key": "SERVER-3009", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12a0562ab90069f8b338", "resolution": "Cannot Reproduce", "resolutionDate": "2021-06-09T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Internal Server Error 500: Operation Not Permitted  agent on Certificate Requests", "timeSpent": "PT0S", "updated": "2021-06-09T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2021-05-03T04:17:00.000000", "creator": "5c083dd9ed26a5223c94f646", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3cd0d11a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Prometheus Metrics HTTP Endpoint"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o089y4:"}], "description": "To monitor Puppet Server there is a need for having a Prometheus compliant metrics exporter HTTP endpoint.\n\nSuch an endpoint will allow us to have a basic understanding of the state of the Puppet Server. It will also allow us to come up with a Grafana dashboard on Puppet Server performance.\n\nThe Puppet Server Helm chart can be developed further to include a Kubernetes resource of the type \"ServiceMonitor\" - so that the Puppet Server can be automatically configured to be discovered by the official Prometheus Operator.\n\nSome good examples for Ruby can be found here:\n * [https://github.com/discourse/prometheus_exporter]\n * [https://github.com/prometheus/client_ruby]\n * [https://www.robustperception.io/instrumenting-a-ruby-on-rails-application-with-prometheus]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17518", "fixedVersions": [], "id": "17518", "issueType": "Epic", "key": "SERVER-3008", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5c083dd9ed26a5223c94f646", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Prometheus Metrics Exporter HTTP Endpoint", "timeSpent": "PT0S", "updated": "2021-05-03T04:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2021-04-30T11:39:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@55428ffb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o089rg:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Updated JRuby to 9.2.17.0"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_26787171_*|*_1_*:*_1_*:*_9099649_*|*_10007_*:*_1_*:*_246328647_*|*_3_*:*_1_*:*_56628_*|*_5_*:*_1_*:*_0"}], "description": "https://www.jruby.org/2021/03/29/jruby-9-2-17-0.html\n\nThere's a fix to a bug Patrick filed about InvokeDynamic, but I think it's unclear if that's sufficient to let us turn it on again.\n\nThis is more just a maintenance thing, to keep us up to date, since we're currently several versions behind.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17517", "fixedVersions": ["SERVER 6.16.0", "SERVER 7.2.0"], "id": "17517", "issueType": "Task", "key": "SERVER-3007", "labels": ["doc_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2021-05-03T18:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update JRuby to 9.2.17.0", "timeSpent": "PT0S", "updated": "2021-05-18T12:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for filing this! We have https://puppet.atlassian.net/browse/SERVER-2252 for this request, but I'll close that in favor of this, to record that there's user interest in the feature.", "created": "2021-05-12T10:14:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2021-04-29T05:23:00.000000", "creator": "623c104794742a00683e402a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* The puppetserver ca cli enables to user to display information in different formats when using the {{list}} command\n * The old behaviour is still the default (and can be explicitly set with using \"text\" as format).\n * A json-output-format is available."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38a739b5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o09big:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The puppetserver-ca CLI tool now can output certificates in a specified format by the user's choice through using the '--format' flag.  Current available options are: 'text' (default), 'json'."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/May/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_322222160_*|*_1_*:*_1_*:*_1140674900_*|*_10007_*:*_1_*:*_197119013_*|*_3_*:*_1_*:*_81503880_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2158886804_*|*_10005_*:*_1_*:*_1996257977"}], "description": "+*Scenario*+\n\nWe are currently using a puppet bolt script in order to sign CSRs. For now, we are parsing the output of the following command.\n{code:java}\npuppetserver ca list --all\n{code}\n\u00a0\n\n+*Motivation*+\n\nParsing plain text is quite error prone and most likely, if something changes in the output printing, it will fail in the future.\n\n\u00a0\n\n+*Proposal*+\n\nIt would be good, if the output format of the ca command could be controlled by using a switch such as:\n{code:java}\n--format json{code}\nFor our use case, json would be completely sufficient.\n\n\u00a0\n\n+*Notes*+\n\nThe puppetserver-ca-cli already seems to internally work with json and could probably easily just dump it without converting it beforehand.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "16028", "fixedVersions": ["SERVER 6.16.1", "SERVER 7.2.1"], "id": "16028", "issueType": "New Feature", "key": "SERVER-3006", "labels": ["ca", "docs-reviewed", "feature", "froyo_intern", "server"], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c104794742a00683e402a", "resolution": "Done", "resolutionDate": "2021-07-06T11:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide parsable (json) output for puppetserver ca commands", "timeSpent": "PT0S", "updated": "2021-07-12T10:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2021-04-28T15:44:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68feaaa3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11035"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o089rl:o"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_7667702_*|*_1_*:*_1_*:*_1189537192_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1146617180"}], "description": "(Initial planned release date: 2021-05-25)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-05-26T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "estimate": "PT0S", "externalId": "15172", "fixedVersions": [], "id": "15172", "issueType": "Task", "key": "SERVER-3005", "labels": [], "originalEstimate": "PT0S", "parent": "24527", "parentSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-05-25T18:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.2.0)", "timeSpent": "PT0S", "updated": "2021-05-25T18:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2021-04-28T15:43:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@521cfea7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11035"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o089rl:c"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1189587983_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1046865181"}], "description": "(Initial planned release date: 2021-05-25)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2021-05-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "estimate": "PT0S", "externalId": "17516", "fixedVersions": [], "id": "17516", "issueType": "Task", "key": "SERVER-3004", "labels": [], "originalEstimate": "PT0S", "parent": "24527", "parentSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Won't Do", "resolutionDate": "2021-05-24T12:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 7.2.0)", "timeSpent": "PT0S", "updated": "2021-05-24T12:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2021-04-28T15:43:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13608e48"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11035"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o089rl:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1189587608_*|*_3_*:*_1_*:*_3234032_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1037674583"}], "description": "(Initial planned release date: 2021-05-25)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 7.3.0 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2021-05-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "estimate": "PT0S", "externalId": "17251", "fixedVersions": [], "id": "17251", "issueType": "Task", "key": "SERVER-3003", "labels": [], "originalEstimate": "PT0S", "parent": "24527", "parentSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-05-24T11:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 7.2.0)", "timeSpent": "PT0S", "updated": "2021-05-24T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "5fc46fd09592df0076141ac0", "body": "[~accountid:557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c] resolved this since docs took over this process", "created": "2021-05-24T18:31:00.000000"}], "components": [], "created": "2021-04-28T15:43:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@fbd7c40"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11035"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o089rk:o"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/May/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1189587855_*|*_3_*:*_1_*:*_25719390_*|*_10009_*:*_1_*:*_228347_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1040919120"}], "description": "(Initial planned release date: 2021-05-25)\n\nWrite release notes for the release based on the tickets found in the previous step:\n *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md]. The osp docs repo usually has a {{<platform release>-preview}} branch. If releasing the latest version of the platform the osp docs branch will be {{latest-preview}}.\n * Search for tickets with {{fixVersion = \"SERVER 7.2.0\"}}.\n * Check each ticket's DOCS tab for the necessary release notes.\n * Request review from the docs team by pinging [~accountid:5fc46fd09592df0076141ac0] or [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] in the opened PR - give them at least two days prior to the go/no-go meeting to review.\n * Docs controls the release schedule. If notes need to be published out of band, ask in the #prod-docs Slack channel.", "duedate": "2021-05-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "estimate": "PT0S", "externalId": "16951", "fixedVersions": [], "id": "16951", "issueType": "Task", "key": "SERVER-3002", "labels": [], "originalEstimate": "PT0S", "parent": "24527", "parentSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-05-24T18:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.2.0)", "timeSpent": "PT0S", "updated": "2021-05-24T18:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2021-04-28T15:43:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a6142d6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11035"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o089rk:c"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1189587091_*|*_3_*:*_1_*:*_3230309_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1037675744"}], "description": "(Initial planned release date: 2021-05-25)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n\n* If there is concern about new PRs, promotions, or mergeups happening after reconciliation, create a release branch and release branch pipeline in ci-job-configs.\n", "duedate": "2021-05-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "estimate": "PT0S", "externalId": "16628", "fixedVersions": [], "id": "16628", "issueType": "Task", "key": "SERVER-3001", "labels": [], "originalEstimate": "PT0S", "parent": "24527", "parentSummary": "Puppet Platform 7.7.0 Release - 2021-06-01", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-05-24T11:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 7.2.0)", "timeSpent": "PT0S", "updated": "2021-05-24T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is this an alternative solution to the request from before about having JRubies have an internal timeout? If so, I think it might be good to talk about the general problem you're having, and from there, discuss the best path forward and get it prioritized with Product. Would you be willing to meet with us to talk about the general issue, or write something up?", "created": "2021-05-12T11:25:00.000000"}], "components": ["Puppet Server"], "created": "2021-04-28T15:04:00.000000", "creator": "5b590061a3f8512ca5eb3be7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@641e58c7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91ii"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/May/21"}], "description": "Currently, the\u00a0/puppet-admin-api/v1/jruby-pool endpoint deletes all JRubies from the pool and does not allow for the deletion of specific instances.\u00a0 Please add an endpoint that takes and deletes a specific JRuby, e.g.\u00a0/puppet-admin-api/v1/jruby-pool/<id>", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "14884", "fixedVersions": [], "id": "14884", "issueType": "Improvement", "key": "SERVER-3000", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b590061a3f8512ca5eb3be7", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create api for deletion of specific JRuby instances", "timeSpent": "PT0S", "updated": "2022-03-09T09:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Hey, thanks for filing this. It looks like you've included some personal information from your site, this is a public ticket, so you may want to remove that. \n\nHave you [contacted support team|https://support.puppet.com/hc/en-us/articles/216014828-How-do-I-open-a-support-ticket-]? They may be better able to help you with debugging this.", "created": "2021-04-28T11:14:00.000000"}, {"author": "5d000ab4e0430f0bc91ba39d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0I will contact support, thank you. Can you delete this ticket?", "created": "2021-04-28T11:38:00.000000"}], "components": [], "created": "2021-04-19T14:51:00.000000", "creator": "5d000ab4e0430f0bc91ba39d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet is successfully installed, UI is accessible, agents running on all instances.\u00a0"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2826b9d6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o07zz0:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1213251265_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:*\n *Puppet Server Version: 7.5*\n *OS Name/Version: CentOS7\u00a03.10.0-1160.24.1.el7.x86_64***\n\nWhen installing puppet we get a single dependency failure message which causes everything else to fail after\u00a0\n\n[Notice]: /Stage[main]/Pe_postgresql::Server::Service/Pe_anchor[pe_postgresql::server::service::begin]: Dependency Package[postgresql-contrib] has failures: trueESC[0m\n *Desired Behavior:*\n\nPuppet is installed successfully\u00a0\n\n*Actual Behavior:*\n\nPuppet fails to install successfully. The puppet services are running but the UI is unreachable\u00a0\u00a0\n\n\u00a0\n\n*puppet agent \u2013-test*\n\nError: Could not retrieve catalog; skipping run\n Error: Connection to failed, trying next route: Request to failed after 0.0 seconds: Failed to open TCP connection to puppetmaster (Connection refused - connect(2) for \"puppetmaster1\" port 8140)\n Wrapped exception:\n Failed to open TCP connection to puppetmaster:8140 (Connection refused - connect(2) for \"puppetmaster\" port 8140)\n Error: Could not send report: No more routes to report\n\n*systemctl status puppet*\n Apr 19 20:35:40 puppetmasterpuppet-agent[17124]: (/File[/opt/puppetlabs/puppet/cache/lib]) Could not evaluate: Could not retrieve file metadata for puppet:///plugins: No more routes to fileserver\n Apr 19 20:35:41 puppetmaster puppet-agent[17124]: Connection to [https://puppetmaster1:8140/puppet/v3|https://puppetmaster1.fed.cloudcheckr.com:8140/puppet/v3] failed, trying next route: Request to [https://puppetmaster1:8140/puppet/v3|https://puppetmaster1.fed.cloudcheckr.com:8140/puppet/v3] failed ...\n Apr 19 20:35:41 puppetmasterpuppet-agent[17124]: Wrapped exception:\n Apr 19 20:35:41 puppetmaster puppet-agent[17124]: Failed to open TCP connection to puppetmaster:8140 (Connection refused - connect(2) for \"puppetmaster\" port 8140)\n Apr 19 20:35:41 puppetmaster puppet-agent[17124]: Could not retrieve catalog from remote server: No more routes to puppet\n Apr 19 20:35:41 puppetmaster puppet-agent[17124]: Could not retrieve catalog; skipping run\n Apr 19 20:35:41 puppetmaster puppet-agent[17124]: Connection to [https://puppetmaster1:8140/puppet/v3|https://puppetmaster1.fed.cloudcheckr.com:8140/puppet/v3] failed, trying next route: Request to [https://puppetmaster1.8140/puppet/v3|https://puppetmaster1.fed.cloudcheckr.com:8140/puppet/v3] failed ...\n Apr 19 20:35:41 puppetmasterpuppet-agent[17124]: Wrapped exception:\n\n\u00a0\n\nApr 19 20:35:41 puppetmaster puppet-agent[17124]: Failed to open TCP connection to puppetmaster:8140 (Connection refused - connect(2) for \"puppetmaster\" port 8140)\n Apr 19 20:35:41 puppetmaster puppet-agent[17124]: Could not send report: No more routes to report\n\n*Installer logs*\u00a0\n\nCould not update: Execution of '/usr/bin/yum -d 0 -e 0 -y install pe-postgresql11-contrib' returned 1: Error: Rpmdb checksum is invalid: pkg checksums:\n 2021-04-19T19:51:54.480+00:00 - [Error]: /Stage[main]/Pe_postgresql::Server::Contrib/Package[postgresql-contrib]/ensure: change from 'purged' to 'latest' failed: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y install pe-postgresql11-contrib' returned 1: Error: Rpmdb checksum is invalid: pkg checksums: qualys-cloud-agent-0:2.6.0-88.x86_64\n\nCould not prefetch pe_node_group provider 'ruby': Request to\u00a0 failed after 0.008 seconds: Failed to open TCP connection to puppetmaster:4433 (Connection refused - connect(2) for \"puppetmaster\" port 4433)\n Wrapped exception:\n Failed to open TCP connection to puppetmaster:4433 (Connection refused - connect(2) for \"puppetmaster\" port 4433)\n 2021-04-19T19:52:11.426+00:00 - [Error]: Failed to apply catalog: Request to failed after 0.008 seconds: Failed to open TCP connection to puppetmaster:4433 (Connection refused - connect(2) for \"puppetmaster\" port 4433)\n Wrapped exception:\n Failed to open TCP connection to puppetmaster:4433 (Connection refused - connect(2) for\" port 4433)\n 2021-04-19T19:52:13.531+00:00 - [Notice]: Sent analytics: pe_installer - install_finish - failed\n 2021-04-19T19:52:13.543+00:00 - [Notice]: Sent analytics: pe_installer - install_fail_type - exit_code_not_0_or_2\n * /opt/puppetlabs/puppet/bin/puppet infrastructure configure --detailed-exitcodes --environmentpath /opt/puppetlabs/server/data/environments --environment enterprise --no-noop --libdir /dev/null --factpath /dev/null --install=2019.8.4 --install-method='-c_pe_conf'\n * returned: 1\n 2021-04-19T19:52:13.800+00:00 [ERROR]: !! There were problems during the application of the installation catalog. !!\n 2021-04-19T19:52:13.816+00:00 [ERROR]: !! Review the logs at /var/log/puppetlabs/installer/2021-04-19T19.49.21+0000.install.log and resolve any issues you can find. !!\n 2021-04-19T19:52:13.824+00:00 [ERROR]: !! After fixing any errors, re-run the installer to complete the installation or upgrade. !!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16288", "fixedVersions": [], "id": "16288", "issueType": "Bug", "key": "SERVER-2999", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "High (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5d000ab4e0430f0bc91ba39d", "resolution": "Cannot Reproduce", "resolutionDate": "2021-05-03T15:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": " Dependency Package[postgresql-contrib] has failures", "timeSpent": "PT0S", "updated": "2021-05-03T15:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [], "components": [], "created": "2021-04-16T14:41:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ae29e73"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-13"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "CRL Dedup"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_green"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:40900006949xlo"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6763_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_4303920393_*|*_10015_*:*_1_*:*_8236318613_*|*_10014_*:*_1_*:*_2918639800"}], "description": "The Puppet Server CA will happily revoke a certificate multiple times, resulting in multiple identical entries in the CRL. If a customer's workflow causes this to happen frequently, the CRL can grow unnecessarily large.\n\nWe want to fix this with a two-pronged approach:\n1) Prevent certs from being added to the CRL multiple times\n2) Deduplicate existing CRLs on upgrade to retroactively pare them down", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15171", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.3.0"], "id": "15171", "issueType": "Epic", "key": "SERVER-2998", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2021-10-12T12:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix duplicate entries in CRLs", "timeSpent": "PT0S", "updated": "2021-10-12T12:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This error is unfamiliar to me. Does this happen every time you try to start the server?  Has any older version of puppetserver ever worked in your environment?\n\nIf you can enable core dumps, that might be useful.", "created": "2021-04-28T11:21:00.000000"}, {"author": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "body": "Just following up here in case the original author doesn't see it....\n\nIn Puppet Community Slack they commented that:\n{quote}Update the issue was due to the fact that hyperV environment was emulating a AMD , and not Intel Processor{quote}\n\nhttps://puppetcommunity.slack.com/archives/C0W298S9G/p1619047900099900?thread_ts=1618615388.493100&cid=C0W298S9G", "created": "2021-04-28T11:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Oh okay, thanks for that! I think we'll go ahead and close this then. Glad they figured it out.", "created": "2021-04-28T12:17:00.000000"}], "components": ["Puppet Server"], "created": "2021-04-16T14:01:00.000000", "creator": "623c0af91c7f6a007049e4e1", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@727bb928"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o07y6c:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1030560131_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 7.5.0*\n *Puppet Server Version: 7.1.0*\n *OS Name/Version: Centos / Rhel 7*\n\n\u00a0\n\n*Desired Behavior: when installed , and puppetserver service has started , default port 8140 should be listening.*\n\n*Actual Behavior: Puppetserver starts but service fails complete startup*\n\nApr 16 20:50:43 puppet systemd[1]: puppetserver.service start operation timed out. Terminating.\nApr 16 20:50:44 puppet puppetserver[3266]: Startup script was terminated before completion\nApr 16 20:50:45 puppet systemd[1]: puppetserver.service: control process exited, code=exited status=1\nApr 16 20:50:45 puppet systemd[1]: Failed to start puppetserver Service.\n-- Subject: Unit puppetserver.service has failed\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n-- \n-- Unit puppetserver.service has failed.\n-- \n-- The result is failed.\nApr 16 20:50:45 puppet systemd[1]: Unit puppetserver.service entered failed state.\nApr 16 20:50:45 puppet systemd[1]: puppetserver.service failed.\nApr 16 20:50:45 puppet systemd[1]: puppetserver.service holdoff time over, scheduling restart.\nApr 16 20:50:45 puppet systemd[1]: Stopped puppetserver Service.\n-- Subject: Unit puppetserver.service has finished shutting down\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n-- \n-- Unit puppetserver.service has finished shutting down.\nApr 16 20:50:45 puppet polkitd[670]: Unregistered Authentication Agent for unix-process:3172:1621353 (system bus name :1.48, object path /org/freedesktop/PolicyKit1/Aut\nApr 16 20:50:45 puppet systemd[1]: Starting puppetserver Service...\n-- Subject: Unit puppetserver.service has begun start-up\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n-- \n-- Unit puppetserver.service has begun starting up.\n\npuppetserver.log\n\n#\n# A fatal error has been detected by the Java Runtime Environment:\n#\n# SIGILL (0x4) at pc=0x00007ff7e2364be4, pid=1176, tid=0x00007ff7938fa700\n#\n# JRE version: OpenJDK Runtime Environment (8.0_282-b08) (build 1.8.0_282-b08)\n# Java VM: OpenJDK 64-Bit Server VM (25.282-b08 mixed mode linux-amd64 compressed oops)\n# Problematic frame:\n# J 8311 C1 org.jruby.ir.instructions.CallBase.potentiallySend(Ljava/lang/String;I)Z (41 bytes) @ 0x00007ff7e2364be4 [0x00007ff7e2364be0+0x4]\n#\n# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try \"ulimit -c unlimited\" before starting Java again\n#\n# If you would like to submit a bug report, please visit:\n# https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%207&component=java-1.8.0-openjdk\n\npuppet.conf\n\nmain]\ncertname = puppet\nserver = puppet\nenvironment = production\ndns_alt_names = puppet\nruninterval = 1h\nstrict_variables = true\n\n[master]\ndns_alt_names = puppetmaster,puppet\nreports = puppetdb\nstoreconfigs_backend = puppetdb\nstoreconfigs = true\nenvironment_timeout = unlimited\n\n[server]\nvardir = /opt/puppetlabs/server/data/puppetserver\nlogdir = /var/log/puppetlabs/puppetserver\nrundir = /var/run/puppetlabs/puppetserver\npidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid\ncodedir = /etc/puppetlabs/code\n\n\u00a0\n\nsysconfig puppetserver\n\n[agent]\nserver = puppet\n[root@puppet puppet]# cat /etc/sysconfig/puppetserver \n###########################################\n# Init settings for puppetserver\n###########################################\n\n# Location of your Java binary (version 8)\nJAVA_BIN=\"/usr/bin/java\"\n\n# Modify this if you'd like to change the memory allocation, enable JMX, etc\nJAVA_ARGS=\"-Xms1g -Xmx1g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger\"\n#JAVA_ARGS=\" -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger\"\n\n\u00a0\n\n# Modify this as you would JAVA_ARGS but for non-service related subcommands\nJAVA_ARGS_CLI=\"${JAVA_ARGS_CLI:-}\"\n\n# Modify this if you'd like TrapperKeeper specific arguments\nTK_ARGS=\"\"\n\n# These normally shouldn't need to be edited if using OS packages\nUSER=\"puppet\"\nGROUP=\"puppet\"\nINSTALL_DIR=\"/opt/puppetlabs/server/apps/puppetserver\"\nCONFIG=\"/etc/puppetlabs/puppetserver/conf.d\"\n\n# Bootstrap path\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/\"\n\n# SERVICE_STOP_RETRIES can be set here to alter the default stop timeout in\n# seconds. For systemd, the shorter of this setting or 'TimeoutStopSec' in\n# the systemd.service definition will effectively be the timeout which is used.\nSERVICE_STOP_RETRIES=60\n\n# START_TIMEOUT can be set here to alter the default startup timeout in\n# seconds. For systemd, the shorter of this setting or 'TimeoutStartSec'\n# in the service's systemd.service configuration file will effectively be the\n# timeout which is used.\nSTART_TIMEOUT=300\n\n\n# Maximum number of seconds that can expire for a service reload attempt before\n# the result of the attempt is interpreted as a failure.\nRELOAD_TIMEOUT=120\n\n\u00a0\n\nFor memory issues with server heap dumps are also helpful.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16950", "fixedVersions": [], "id": "16950", "issueType": "Bug", "key": "SERVER-2997", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0af91c7f6a007049e4e1", "resolution": "Won't Fix", "resolutionDate": "2021-04-28T12:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver version: 7.1.0 wont open up port 8140 ", "timeSpent": "PT0S", "updated": "2021-04-28T12:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This looks like a duplicate of the other one you filed, I've moved that to the PUP project, and I'm going to close this one.", "created": "2021-11-05T14:52:00.000000"}], "components": [], "created": "2021-04-13T09:56:00.000000", "creator": "623c0da5bef8a60068c797d5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32f4f445"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0cark:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Nov/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_17817903328_*|*_6_*:*_1_*:*_0"}], "description": "Running Puppet 6.21.1 with Puppet Server 6.15.1\n\nExample to reproduce issue:\n\n// Install puppetlabs-stdlib 6.6.0 and puppetlabs-registry 4.0.0\npuppet module install puppetlabs-stdlib --version 6.6.0 --force\npuppet module install puppetlabs-registry --version 4.0.0 --force\n\n// Attempt to install puppet-windows_firewall latest\npuppet module install puppet-windows_firewall --version 4.0.0\n\u00a0\n\nAfter attempting to install puppet-windows_firewall the terminal outputs this error:\n\nError: Could not install module 'puppet-windows_firewall' (v4.0.0)\n The requested version cannot satisfy one or more of the following installed modules:\n puppetlabs-registry, installed: 4.0.0, expected: >= 1.1.1 < 4.0.0 Use `puppet module install 'puppet-windows_firewall' --ignore-dependencies` to install only this module\n\n\u00a0\n\nThe problem is that it is complaining about the wrong dependency - it should be complaining that puppetlabs-registry is not < 4.0.0 as indicated in the dependency requirements. The error output is not clear to the end user which dependency is actually a problem, requiring them to have to go to Forge to look it up.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15859", "fixedVersions": [], "id": "15859", "issueType": "Bug", "key": "SERVER-2995", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0da5bef8a60068c797d5", "resolution": "Duplicate", "resolutionDate": "2021-11-05T15:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server gives error about incorrect dependency", "timeSpent": "PT0S", "updated": "2021-11-05T15:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is nice to have, I couldn't make it break without this change.", "created": "2021-04-09T19:26:00.000000"}], "components": [], "created": "2021-04-09T19:09:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@152c7ec5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o07rtw:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_25307205_*|*_1_*:*_1_*:*_6001_*|*_10007_*:*_1_*:*_311719933_*|*_3_*:*_1_*:*_983426_*|*_5_*:*_1_*:*_0"}], "description": "We recently made Puppet's 6.x branch detect a migrated CA dir when calculating its default settings. We need to do the same for the CA CLI gem.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17515", "fixedVersions": ["SERVER 6.15.3"], "id": "17515", "issueType": "Task", "key": "SERVER-2993", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2021-04-13T17:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Backport detection of migrated cadir in CA CLI settings resolution", "timeSpent": "PT0S", "updated": "2021-04-15T16:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Currently you can only list certs, but AFAIK you can't show information about the cert beyond what {{puppetserver ca list}} shows, such as expiration dates and issuers.\n\n{noformat}\n$ puppetserver ca list --certname xxx --format text\nSigned Certificates:\n    xxx       (SHA256)  99:2A:A4:96:4C:8B:76:88:33:88:40:E8:E4:5D:31:0E:DB:D1:8B:FD:A2:7B:B6:18:B7:32:D7:C7:3C:93:08:8A\talt names: [\"DNS:puppet\", \"DNS:xxx\"]\tauthorization extensions: [pp_cli_auth: true]\n{noformat}\n\nNote {{puppet ssl show}} operates in an SSL client context. It will only show client certs that the agent has retrieved (and that match its private key). Whereas this ticket is asking for the ability to run in an SSL server context and show arbitrary certs that the CA has issued.\n\nIt would also be super trivial to implement. Once you have the certificate, you just need to call {{puts OpenSSL::X509::Certificate#to_text}}.\n", "created": "2022-01-12T20:58:00.000000"}], "components": [], "created": "2021-04-08T05:02:00.000000", "creator": "557058:cfaec180-0e96-4d38-8f35-88b11a5113bf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@105607e6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o07qqk:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jan/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_540206213_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_24801552813"}], "description": "*Puppet Version: N/A*\n *Puppet Server Version: > 5*\n *OS Name/Version: N/A*\n\n(Shamelessly copied / modified from\u00a0https://puppet.atlassian.net/browse/PUP-10888)\n\nAs a user, I would like a Puppetserver 6 equivalent of the 'puppet cert print' command similar to what was available in previous versions of Puppet on CA servers. The current method requires using OpenSSL as shown in the doc of the deprecated 'puppet cert' command.\u00a0\n\n\u00a0", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "15490", "fixedVersions": [], "id": "15490", "issueType": "New Feature", "key": "SERVER-2992", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cfaec180-0e96-4d38-8f35-88b11a5113bf", "resolution": "Won't Do", "resolutionDate": "2022-01-26T11:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add \"puppetserver ca show (--certname) <certname>\" command", "timeSpent": "PT0S", "updated": "2022-01-26T11:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Rather than disabling promotions, we ended up creating a 2019.8.6-release branch in pe-pse, so we could continue promoting into 2019.8.x without worrying about disrupting the PE release. Instead, this will need to be reverted after PE 2019.8.6 is buttoned up: https://github.com/puppetlabs/ci-job-configs/commit/2b63144c165257ddda293a3dcce60e6da35c801d", "created": "2021-04-21T12:14:00.000000"}], "components": [], "created": "2021-03-25T14:14:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@892be9b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10986"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o089rn:o"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Apr/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_88799379_*|*_10007_*:*_1_*:*_2851009_*|*_3_*:*_1_*:*_659694_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3460160650_*|*_10005_*:*_1_*:*_19811"}], "description": "(Initial planned release date: 2021-04-20)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-04-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "17514", "fixedVersions": ["None"], "id": "17514", "issueType": "Task", "key": "SERVER-2991", "labels": [], "originalEstimate": "PT0S", "parent": "22483", "parentSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-05-05T17:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.15.3)", "timeSpent": "PT0S", "updated": "2021-05-05T17:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We ended up creating a 2019.8.6-release branch in pe-pse, so we can continue promoting into 2019.8.x without worrying about disrupting the PE release. Closing this.", "created": "2021-04-21T12:12:00.000000"}], "components": [], "created": "2021-03-25T14:14:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68ecba3a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10986"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:iy"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Apr/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_88811356_*|*_10007_*:*_1_*:*_3039655_*|*_3_*:*_1_*:*_507281_*|*_5_*:*_2_*:*_261594619_*|*_10006_*:*_2_*:*_1971544042_*|*_10005_*:*_1_*:*_6894"}], "description": "(Initial planned release date: 2021-04-20)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2021-04-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "16949", "fixedVersions": ["None"], "id": "16949", "issueType": "Task", "key": "SERVER-2990", "labels": [], "originalEstimate": "PT0S", "parent": "22483", "parentSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-04-21T12:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.15.3)", "timeSpent": "PT0S", "updated": "2021-04-21T12:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-03-25T14:14:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68a1e86a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10986"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:iw"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_72256575_*|*_1_*:*_1_*:*_88834154_*|*_3_*:*_2_*:*_3037199_*|*_5_*:*_2_*:*_236423931_*|*_10006_*:*_2_*:*_1964305164"}], "description": "(Initial planned release date: 2021-04-20)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 6.15.3 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2021-04-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "16627", "fixedVersions": ["None"], "id": "16627", "issueType": "Task", "key": "SERVER-2989", "labels": [], "originalEstimate": "PT0S", "parent": "22483", "parentSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-04-21T23:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.15.3)", "timeSpent": "PT0S", "updated": "2021-04-21T23:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-03-25T14:14:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34244786"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10986"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:ir"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_88840048_*|*_10007_*:*_2_*:*_360139242_*|*_3_*:*_2_*:*_570564948_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1474088889"}], "description": "(Initial planned release date: 2021-04-20)\n\nWrite release notes for the release based on the tickets found in the previous step:\n  *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md]. The osp docs repo usually has a {{<platform release>-preview}} branch. If releasing the latest version of the platform the osp docs branch will be {{latest-preview}}.\n\n* Search for tickets with {{fixVersion = \"SERVER 6.15.3\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging [~accountid:5fc46fd09592df0076141ac0] or [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] in the opened PR - give them at least two days prior to the go/no-go meeting to review.\n* Docs controls the release schedule. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2021-04-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "16287", "fixedVersions": ["None"], "id": "16287", "issueType": "Task", "key": "SERVER-2988", "labels": [], "originalEstimate": "PT0S", "parent": "22483", "parentSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-04-23T10:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 6.15.3)", "timeSpent": "PT0S", "updated": "2021-04-23T10:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-03-25T14:14:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17447ce9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10986"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:ii"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_88845643_*|*_3_*:*_1_*:*_273906950_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1198907340"}], "description": "(Initial planned release date: 2021-04-20)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n\n* If there is concern about new PRs, promotions, or mergeups happening after reconciliation, create a release branch and release branch pipeline in ci-job-configs.\n", "duedate": "2021-04-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "16027", "fixedVersions": ["None"], "id": "16027", "issueType": "Task", "key": "SERVER-2987", "labels": [], "originalEstimate": "PT0S", "parent": "22483", "parentSummary": "Puppet Platform 6.22.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-04-12T16:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.15.3)", "timeSpent": "PT0S", "updated": "2021-04-15T17:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Rather than disabling promotions, we ended up creating a 2021.1.0-release branch in pe-pse, so we could continue promoting into main without worrying about disrupting the PE release. Instead, this will need to be reverted after PE 2021.1.0 is buttoned up: https://github.com/puppetlabs/ci-job-configs/commit/469362927287b3660cce9aeabe1f99d162845cd1", "created": "2021-04-21T13:26:00.000000"}], "components": [], "created": "2021-03-25T12:39:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c7f2776"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10975"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o089rn:c"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Apr/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11165428_*|*_10007_*:*_1_*:*_2848654_*|*_3_*:*_1_*:*_659238_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2866665387_*|*_10005_*:*_1_*:*_676818511"}], "description": "(Initial planned release date: 2021-04-20)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-04-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "17513", "fixedVersions": ["None"], "id": "17513", "issueType": "Task", "key": "SERVER-2986", "labels": [], "originalEstimate": "PT0S", "parent": "22481", "parentSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-05-05T17:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.1.2)", "timeSpent": "PT0S", "updated": "2021-05-05T17:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We ended up creating a 2021.1.0-release branch in pe-pse, so we can continue promoting into main without worrying about disrupting the PE release. Closing this.", "created": "2021-04-21T13:24:00.000000"}], "components": [], "created": "2021-03-25T12:39:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53985400"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10975"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:o"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Apr/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11151578_*|*_10007_*:*_1_*:*_269930_*|*_3_*:*_1_*:*_286401_*|*_5_*:*_2_*:*_101784143_*|*_10006_*:*_2_*:*_1545133116_*|*_10005_*:*_1_*:*_676841338"}], "description": "(Initial planned release date: 2021-04-20)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2021-04-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "16948", "fixedVersions": ["None"], "id": "16948", "issueType": "Task", "key": "SERVER-2985", "labels": [], "originalEstimate": "PT0S", "parent": "22481", "parentSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-04-21T13:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 7.1.2)", "timeSpent": "PT0S", "updated": "2021-04-21T13:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-03-25T12:39:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dec24db"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10975"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:m"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_51200670_*|*_1_*:*_1_*:*_11144940_*|*_3_*:*_2_*:*_5234181_*|*_5_*:*_2_*:*_69392550_*|*_10006_*:*_2_*:*_1628438354_*|*_10005_*:*_1_*:*_676854448"}], "description": "(Initial planned release date: 2021-04-20)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 7.1.2 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2021-04-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "16626", "fixedVersions": ["None"], "id": "16626", "issueType": "Task", "key": "SERVER-2984", "labels": [], "originalEstimate": "PT0S", "parent": "22481", "parentSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-04-22T19:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 7.1.2)", "timeSpent": "PT0S", "updated": "2021-04-22T19:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-03-25T12:39:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@578abe8a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10975"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:k"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11139883_*|*_10007_*:*_2_*:*_256932797_*|*_3_*:*_2_*:*_510021366_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1044329052_*|*_10005_*:*_1_*:*_676866406"}], "description": "(Initial planned release date: 2021-04-20)\n\nWrite release notes for the release based on the tickets found in the previous step:\n  *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md]. The osp docs repo usually has a {{<platform release>-preview}} branch. If releasing the latest version of the platform the osp docs branch will be {{latest-preview}}.\n\n* Search for tickets with {{fixVersion = \"SERVER 7.1.2\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging [~accountid:5fc46fd09592df0076141ac0] or [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] in the opened PR - give them at least two days prior to the go/no-go meeting to review.\n* Docs controls the release schedule. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2021-04-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "16286", "fixedVersions": ["None"], "id": "16286", "issueType": "Task", "key": "SERVER-2983", "labels": [], "originalEstimate": "PT0S", "parent": "22481", "parentSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-04-23T10:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.1.2)", "timeSpent": "PT0S", "updated": "2021-04-23T10:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2021-03-25T12:39:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d4680d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10975"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:j"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11136498_*|*_3_*:*_1_*:*_11440955_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1030091327_*|*_10005_*:*_1_*:*_676878500"}], "description": "(Initial planned release date: 2021-04-20)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n\n* If there is concern about new PRs, promotions, or mergeups happening after reconciliation, create a release branch and release branch pipeline in ci-job-configs.\n", "duedate": "2021-04-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "estimate": "PT0S", "externalId": "16026", "fixedVersions": ["None"], "id": "16026", "issueType": "Task", "key": "SERVER-2982", "labels": [], "originalEstimate": "PT0S", "parent": "22481", "parentSummary": "Puppet Platform 7.6.0 Release - 2021-04-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2021-04-14T13:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 7.1.2)", "timeSpent": "PT0S", "updated": "2021-04-15T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2021-03-09T10:10:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@157c7fb6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91jo"}], "description": "The {{environments}} REST API can list all environments and the {{environments_classes}}/{{environment_modules}} endpoints can provide detailed information about a single environment, but you can't (easily) ask if an environment exists. It'd be helpful if there was a way to do that, such as {{/puppet/v3/environments/<name>}} or\n{{/puppet/v3/environments?environment=<name>}} or\n{{/puppet/v3/environments?include=<name1>,<name2>,...}} ", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "15858", "fixedVersions": [], "id": "15858", "issueType": "Improvement", "key": "SERVER-2981", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide the ability to get summary info for a single environment", "timeSpent": "PT0S", "updated": "2022-03-09T09:53:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "There is a manual workaround for this issue:\n# stop the puppetserver service:\n    {{systemctl stop puppetserver}}\n# move your CA directory to the new location:\n    {{mv /etc/puppetlabs/puppet/ssl/ca /etc/puppetlabs/puppetserver/ca}}\n# to maintain backwards compatibility, create a symlink from the new location to the old location:\n    {{ln -sf /etc/puppetlabs/puppetserver/ca /etc/puppetlabs/puppet/ssl/ca}}\n# restart the puppetserver service:\n    {{systemctl start puppetserver}}\n", "created": "2021-03-05T11:25:00.000000"}], "components": [], "created": "2021-03-03T11:51:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28c403e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694401"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6896_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_174486313"}], "description": "Created based on an issue surfaced to the puppet-users list: https://groups.google.com/d/msgid/puppet-users/c4627ffb-887d-490e-9dc6-7b730cdf3622n%40googlegroups.com?utm_medium=email&utm_source=footer\n\n*Puppet Version:* 7.4.1\n*Puppet Server Version:* 7.0.3\n*OS Name/Version:* RedHat 7\n\nI'm trying to solve the notification about \"The cadir is currently configured to be inside the /etc/puppetlabs/puppet/ssl directory\".\nWhen I follow the steps, and run:\n\n#  puppetserver ca migrate --config /etc/puppetlabs/puppet/puppet.conf\n\nI get the message: \"Puppetserver service is running. Please stop it before attempting to run this command.\"\n\nIf I then stop the puppetserver service and run the command again, I get the following Error: \"Fatal error when running action 'migrate'\n  Error: Failed connecting to https://xxx.loc:8140/status/v1/simple/ca\n  Root cause: Failed to open TCP connection to xxx.loc:8140 (Invalid argument - connect(2) for \"xxx.loc\" port 8140)\"\n\n---\n\nWhen we check to see if puppetserver is running prior to migrating the CA dir, we [catch and swallow {{Errno::ECONNREFUSED}}|https://github.com/puppetlabs/puppetserver-ca-cli/blob/main/lib/puppetserver/ca/utils/http_client.rb#L184]. This person appears to be getting {{Errno::EINVAL}} instead, so the error is surfaced.\n\nA potential solution would be to loosen which errors we catch, but we should investigate why this is happening in the first place.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17512", "fixedVersions": [], "id": "17512", "issueType": "Bug", "key": "SERVER-2979", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Cannot Reproduce", "resolutionDate": "2021-03-05T12:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA dir migration fails with unexpected error", "timeSpent": "PT0S", "updated": "2021-03-05T12:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The fixes required to reduce the amount of data retained probably span a few teams. The java.lang.String instances in the incoming and outgoing requests likely fall under the Puppet Server team.\n\nThe extra org.jruby.RubyString copy of the request body, the Puppet::Transaction::Report instance (which is probably a legitimate copy to keep to support multiple report processors), and the extra org.jruby.RubyArray holding log messages could be either Puppet Server or Puppet Agent.\n\nThe remaining org.jruby.RubyHash, and two org.jruby.RubyString copies of the PuppetDB response are issues that likely need to be solved in the PuppetDB report processor.", "created": "2021-03-03T10:55:00.000000"}, {"author": "5b50a69a2726b92cd5368cb3", "body": "benefits - use less heap, fewer tuning and outages. significant gains to this for our customers. ", "created": "2021-04-13T14:09:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "It's possible that PuppetDB fixed some similar issues - [~accountid:557058:613151bd-b161-4bc3-9e32-335fdcef4d89] do you happen to know if there's a similar PDB ticket we can reference?", "created": "2021-10-27T11:26:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We'll re-evaluate how important this ticket is once we have a better understanding of the state of the world with regard to the work PDB has already done.", "created": "2021-10-27T11:30:00.000000"}, {"author": "557058:613151bd-b161-4bc3-9e32-335fdcef4d89", "body": "Yeah, PuppetDB has attempted to minimize its number of concurrently retained copies. Currently, when we are sending something to PuppetDB puppetserver will retain 5 copies of the data.\n\n# Java string of the agent's HTTP POST to puppetserver\n# jruby copy of above string\n# Puppet object representing the HTTP string\n# ruby string to POST to PuppetDB\n# java copy of that string to POST to PuppetDB", "created": "2021-10-28T12:19:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The two string copies of the HTTP request body are probably the remaining items to get rid of. As far as I know, nothing needs these to persist for the lifetime of the request once the body has been de-serialized to a Ruby object.", "created": "2021-10-28T13:20:00.000000"}], "components": ["Puppet Server"], "created": "2021-03-03T09:58:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56a44e17"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Rank", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1500.0"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0u96ri"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "44196,49876"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/21"}], "description": "When processing agent requests such as fact submissions, catalog requests,\nor report uploads, Puppet Server creates several copies of the request data\nas part of processing. However, many of these copies outlive their useful\ncontext and are retained in memory until a response is delivered to the\nclient and the request is closed.\n\nThe following reproduction case examines report submission --- which creates\nat least 7 copies of the request data by the time the report is handed\noff to PuppetDB. This behavior magnifies the impact of large run reports\nand makes it easier for a single agent or group of agents to exhaust the\nmemory available to Puppet Server.\n\nh2. Reproduction Case\n\n  - Install Puppet Server 7 on a CentOS 7 node:\n\n{code:bash}\nyum install -y http://yum.puppetlabs.com/puppet7-release-el-7.noarch.rpm\nyum install -y puppetserver\nsource /etc/profile.d/puppet-agent.sh\n\npuppet config set server $(hostname -f)\npuppetserver ca setup\n\nsystemctl start puppetserver\n{code}\n\n  - Install PuppetDB 7 and configure it as a report processor:\n\n{code:bash}\npuppet module install puppetlabs-puppetdb\n\npuppet apply <<'EOF'\nclass { 'puppetdb':\n  postgres_version => '11',\n}\n\nclass { 'puppetdb::master::config':\n  enable_reports          => true,\n  manage_report_processor => true,\n}\nEOF\n{code}\n\n  - Next, configure Puppet Server to use one JRuby instance with the default allocation of 512 MB of RAM and configure JRuby to produce extra debugging information in heap dumps:\n\n{code:bash}\npuppet module install puppetlabs-hocon\n\npuppet apply <<'EOF'\nservice { 'puppetserver':\n  ensure => running,\n}\n\nini_subsetting {\n  default:\n    ensure            => present,\n    path              => '/etc/sysconfig/puppetserver',\n    section           => '',\n    key_val_separator => '=',\n    setting           => 'JAVA_ARGS',\n    notify            => Service['puppetserver'],\n  ;\n  'puppetserver min ram':\n    subsetting => '-Xms',\n    value      => '1g',\n  ;\n  'puppetserver max ram':\n    subsetting => '-Xmx',\n    value      => '1g',\n  ;\n  'reify jruby classes':\n    subsetting => '-Djruby.reify.classes',\n    value      => 'true',\n  ;\n  'reify jruby instance variables':\n    subsetting => '-Djruby.reify.variables',\n    value      => 'true',\n  ;\n}\n\n\nhocon_setting { 'puppetserver jruby instances':\n  ensure  => present,\n  path    => '/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf',\n  setting => 'jruby-puppet.max-active-instances',\n  value   => 1,\n  notify  => Service['puppetserver'],\n}\nEOF\n{code}\n\n  - Generate certificates for a test node and configure it to recursively purge a deep directory tree in order to generate a large report:\n\n{code:bash}\ncurl -L https://raw.githubusercontent.com/LLNL/fdtree/master/fdtree.bash -o /usr/local/bin/fdtree\nmkdir -p /tmp/recursion_test\n\n# Create, 1 level, 14 directories per level, 999 files per directory, 0 bytes per file\nbash /usr/local/bin/fdtree -C -l 1 -d 14 -f 999 -s 0 -o /tmp/recursion_test\n\npuppetserver ca generate --certname recursion.test\n\ncat <<'EOF' >/etc/puppetlabs/code/environments/production/manifests/site.pp\nnode default {}\n\nnode 'recursion.test' {\n  file {\"/tmp/recursion_test\":\n    ensure  => directory,\n    recurse => true,\n    purge   => true,\n    noop    => true,\n  }\n}\nEOF\n{code}\n\n  - Install {{mitmproxy}} and configure it to dump the Puppet Server heap when a report is submitted to PuppetDB:\n\n{code:bash}\nyum install -y java-1.8.0-openjdk-devel python3-pip\npip3 install mitmproxy\n\nuseradd --create-home mitmproxy\ncat $(puppet config print hostprivkey) $(puppet config print hostcert) >/home/mitmproxy/cert_bundle.pem\n\n# Allow mitmproxy to execute commands as puppet, to satisfy Java security policies\ncat <<'EOF' >/etc/sudoers.d/mitmproxy\nDefaults:mitmproxy !requiretty\nmitmproxy ALL=(puppet) NOPASSWD: ALL\nEOF\n\ncat <<'EOF' >/home/mitmproxy/dump_heap.py\nimport subprocess\nimport sys\n\ndef request(flow):\n  if flow.request.query['command'] == 'store_report':\n    sys.stderr.write(\"Dumping Puppet Server heap on PuppetDB store_report request.\\n\")\n    subprocess.call(['/usr/bin/sudo',\n                     '-u', 'puppet',\n                     '/bin/bash', '-c',\n                     '/usr/bin/jmap -dump:live,format=b,file=/tmp/$(hostname)-$(date +%Y%m%d%H%M%S).hprof $(systemctl show -p MainPID puppetserver|cut -d= -f2)'])\nEOF\n\ncat <<'EOF' >/etc/systemd/system/mitm-heapdump.service\n[Unit]\nDescription=mitmproxy configured to dump puppetserver heap upon report submission\n\n[Service]\nType=simple\nExecStart=/usr/sbin/runuser -u mitmproxy -- /usr/local/bin/mitmdump --certs /home/mitmproxy/cert_bundle.pem --set client_certs=/home/mitmproxy/cert_bundle.pem --ssl-insecure --mode transparent --listen-port 9000 --scripts /home/mitmproxy/dump_heap.py\nExecStartPost=/usr/sbin/iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitmproxy --dport 8081 -j REDIRECT --to-port 9000\nExecStopPost=-/usr/sbin/iptables -t nat -D OUTPUT -p tcp -m owner ! --uid-owner mitmproxy --dport 8081 -j REDIRECT --to-port 9000\nEOF\n\nsystemctl daemon-reload\nsystemctl start mitm-heapdump\n{code}\n\n  - Run {{puppet agent}} to enforce the resource and submit a report (this will take about 5 minutes):\n\n{code:bash}\n# Direct output to /dev/null to avoid spamming the console\npuppet agent -t --certname recursion.test &>/dev/null\n{code}\n\n  - Analyze the {{*.hprof}} file written to {{/tmp}}\n\nh3. Outcome\n\nAt the time data is being handed off to PuppetDB, 8 of the 10 largest objects on the heap are related to the report processing request:\n\n  - A java.lang.String instance containing the HTTP request body submitted by the puppet agent and recieved by Java. The content of this string is UTF-16 encoded, which means it uses twice the memory a UTF-8 encoded string would need to store the same ASCII data. Retains 39,835,016 bytes.\n\n  - A org.jruby.RubyString instance containing a copy of the HTTP request body after conversion from Java to a Puppet::Network::HTTP::Request. Retains 21,909,328 bytes.\n\n  - An org.jruby.RubyHash instance representing the report data after the Puppet::Network::HTTP::Request body is parsed to create a Puppet::Transaction::Report instance. Retains 26,189,328 bytes.\n\n  - An org.jruby.RubyArray instance holding the log entries of the report. Created when the Puppet::Transaction::Report instance is duplicated before processing by PuppetDB. Retains 8,705,088 bytes.\n\n  - An org.jruby.RubyHash instance representing a copy of the report data, transformed by the PuppetDB report processor. Retains 27,387,848 bytes.\n\n  - An org.jruby.RubyString instance created by serializing the above hash to JSON for submission to PuppetDB. Retains 13,334,192 bytes.\n\n  - An org.jruby.RubyString instance created by duplicating the above string and adding some metadata. Used soley  for computing a PuppetDB command checksum. Retains 13,334,272 bytes.\n\n  - A com.puppetlabs.http.client.RequestOptions instance used to make the actual POST request to PuppetDB that contains a copy of the above strings as the request body. The request body in this object is a java.lang.String which also pays the UTF-16 tax. Retains 26,668,368 bytes.\n\nEnd result: a 19,917,508 byte report submission by the agent is magnified to 177,142,440 bytes of memory usage for the Puppet Server by the time the data is handed off to PuppetDB and the request starts closing out --- an overhead of nearly 10x.\n\nh3. Expected Outcome\n\nPuppet Server retains minimal copies of large data blocks while serving agent request.\n\nh3. Engineering outcomes:\n\nDig through this information and create tickets describing any work we can do to streamline this. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14883", "fixedVersions": [], "id": "14883", "issueType": "Bug", "key": "SERVER-2978", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server keeps several redundant copies of request data", "timeSpent": "PT0S", "updated": "2023-03-05T13:03:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["API"], "created": "2021-03-01T13:05:00.000000", "creator": "557058:745ad6f8-2461-4691-9873-549d5904bb16", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5defb7c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2918"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:9i"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "42946"}], "description": "*Puppet Version:* 2019.8.4\n*Puppet Server Version:* 2019.8.4\n*OS Name/Version:*  EL 7\n\nDescribe your issue in as much detail as possible\u2026\n\nIf the v4/catalog endpoint on a compiler is used to generate a catalog for a compiler node, it returns an incorrect catalog.  Specifically, the catalog will contain resources that should be confined to a primary server.  This causes CD4PE's impact analysis to return false positives for compilers.\n\nDescribe steps to reproduce\u2026\n\nUse the API to send a catalog compilation request to the compiler for the catalog of the compiler and note that PE primary server related classes are in the returned catalog. \n\n{code:java}\n# cat catalog-gen-from-compiler.sh\n#!/bin/bash\ncurl -s -X POST --cacert $(puppet config print localcacert) https://pe-201984-compiler.puppetdebug.vlan:8140/puppet/v4/catalog -d '{ \"certname\": \"pe-201984-compiler.puppetdebug.vlan\", \"persistence\": { \"facts\": false, \"catalog\": false }, \"environment\": \"production\", \"options\": {\"prefer_requested_environment\": true, \"capture_logs\": true } }' -H \"Content-Type: application/json\" -H \"X-Authentication: $(cat ~/.puppetlabs/token)\" | python -m json.tool \n# ./catalog-gen-from-compiler.sh | grep -c puppet_enterprise::master::code_manager\n58\n{code}\n\nRunning the exact same thing against the primary does not result in these extra classes being included:\n\n{code:java}\n# cat catalog-gen-from-primary.sh\n#!/bin/bash\ncurl -s -X POST --cacert $(puppet config print localcacert) https://pe-201984-primary.puppetdebug.vlan:8140/puppet/v4/catalog -d '{ \"certname\": \"pe-201984-compiler.puppetdebug.vlan\", \"persistence\": { \"facts\": false, \"catalog\": false }, \"environment\": \"production\", \"options\": {\"prefer_requested_environment\": true, \"capture_logs\": true } }' -H \"Content-Type: application/json\" -H \"X-Authentication: $(cat ~/.puppetlabs/token)\" | python -m json.tool\n# ./catalog-gen-from-primary.sh | grep -c puppet_enterprise::master::code_manager\n0\n{code}\n\n*Desired Behavior:*\n\nThe catalog generated by a compiler should be the same as a catalog compiled by a primary server.\n\n*Actual Behavior:*\n\nThe catalog generated by a compiler appears to include additional class data.\n\n---\n\nThe key appears to be the pe_compile_master() function at https://github.com/puppetlabs/puppet-enterprise-modules/blob/main/modules/puppet_enterprise/lib/puppet/parser/functions/pe_compile_master.rb#L38.  When the v4/catalog endpoint is used in this way, that function will return false even when the target is actually a compiler.  This causes the extra classes to get pulled in.\n\nThe v4/catalog endpoint is used by CD4PE for impact analysis.  The incorrect catalog contents being returned causes false positives to show up in reports for compilers when a compiler is used for the impact analysis workload, which is the recommended configuration.", "epicLinkSummary": "V4 Catalog Endpoint Improvements", "estimate": "PT0S", "externalId": "16285", "fixedVersions": [], "id": "16285", "issueType": "Bug", "key": "SERVER-2977", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": "14909", "parentSummary": "V4 Catalog Endpoint Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:745ad6f8-2461-4691-9873-549d5904bb16", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "v4/catalog endpoint returns incorrect data for compiler when run against compiler", "timeSpent": "PT0S", "updated": "2022-03-09T09:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2021-02-25T10:27:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The CA service in puppetserver depends on the JRubyConfig service, because CA settings are still loaded from {{puppet.conf}}, rather than puppetserver's hocon config. In order to be able to reasonably run the CA standalone (e.g. as part of a more granular container workflow, or as a security measure, to run the CA separate from the puppetserver node), we need to remove this dep by moving the CA settings into the HOCON config."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@744b9482"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "CA without JRuby"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o06tag:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25922925125_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16025", "fixedVersions": [], "id": "16025", "issueType": "Epic", "key": "SERVER-2975", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2021-12-22T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA without JRuby", "timeSpent": "PT0S", "updated": "2022-02-22T14:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2021-02-23T16:51:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f765660"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2918"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:9c"}], "description": "The indirected v3 catalog endpoint will filter virtual resources via this method: https://github.com/puppetlabs/puppet/blob/main/lib/puppet/indirector/catalog/compiler.rb#L65\n\nFor feature parity we should also filter virtual resources in the v4 endpoint or look to move that functionality into the compiler proper.\n\nQuestion: would moving the logic into the compiler mess with PAL/Bolt usage?", "epicLinkSummary": "V4 Catalog Endpoint Improvements", "estimate": "PT0S", "externalId": "16625", "fixedVersions": [], "id": "16625", "issueType": "Bug", "key": "SERVER-2974", "labels": [], "originalEstimate": "PT0S", "parent": "14909", "parentSummary": "V4 Catalog Endpoint Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "v4 catalog endpoint should filter virtual resources", "timeSpent": "PT0S", "updated": "2022-03-09T09:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-02-23T10:12:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4336f142"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10930"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dg:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_696269642_*|*_3_*:*_1_*:*_86148871_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1115509644"}], "description": "(Initial planned release date: 2021-03-16)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-03-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "estimate": "PT0S", "externalId": "16024", "fixedVersions": [], "id": "16024", "issueType": "Task", "key": "SERVER-2973", "labels": [], "originalEstimate": "PT0S", "parent": "27717", "parentSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-03-17T10:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.1.0)", "timeSpent": "PT0S", "updated": "2021-03-17T10:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-02-23T10:12:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60e826f2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10930"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070df:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_696279293_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1115513045"}], "description": "(Initial planned release date: 2021-03-16)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2021-03-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "estimate": "PT0S", "externalId": "15489", "fixedVersions": [], "id": "15489", "issueType": "Task", "key": "SERVER-2972", "labels": [], "originalEstimate": "PT0S", "parent": "27717", "parentSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-03-16T10:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 7.1.0)", "timeSpent": "PT0S", "updated": "2021-03-16T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-02-23T10:12:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48af41e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10930"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070de:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_696285431_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1115354903"}], "description": "(Initial planned release date: 2021-03-16)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_main_release/] is the job for main.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 7.1.0 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2021-03-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "estimate": "PT0S", "externalId": "15170", "fixedVersions": [], "id": "15170", "issueType": "Task", "key": "SERVER-2971", "labels": [], "originalEstimate": "PT0S", "parent": "27717", "parentSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-03-16T10:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 7.1.0)", "timeSpent": "PT0S", "updated": "2021-03-16T10:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "attachments": [], "comments": [], "components": [], "created": "2021-02-23T10:12:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3517cbca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10930"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070di:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_696291270_*|*_10007_*:*_1_*:*_410505265_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_705035871"}], "description": "(Initial planned release date: 2021-03-16)\n\nWrite release notes for the release based on the tickets found in the previous step:\n  *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md]. The osp docs repo usually has a {{<platform release>-preview}} branch. If releasing the latest version of the platform the osp docs branch will be {{latest-preview}}.\n\n* Search for tickets with {{fixVersion = \"SERVER 7.1.0\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging [~accountid:5fc46fd09592df0076141ac0] or [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] in the opened PR - give them at least two days prior to the go/no-go meeting to review.\n* Docs controls the release schedule. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2021-03-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "estimate": "PT0S", "externalId": "14882", "fixedVersions": [], "id": "14882", "issueType": "Task", "key": "SERVER-2970", "labels": [], "originalEstimate": "PT0S", "parent": "27717", "parentSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-03-16T10:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.1.0)", "timeSpent": "PT0S", "updated": "2021-03-16T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-02-23T10:12:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47705f72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10930"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dd:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_696296956_*|*_3_*:*_1_*:*_495434562_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_620064282"}], "description": "(Initial planned release date: 2021-03-16)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/main/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to main. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n\n* If there is concern about new PRs, promotions, or mergeups happening after reconciliation, create a release branch and release branch pipeline in ci-job-configs.\n", "duedate": "2021-03-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "estimate": "PT0S", "externalId": "17511", "fixedVersions": [], "id": "17511", "issueType": "Task", "key": "SERVER-2969", "labels": [], "originalEstimate": "PT0S", "parent": "27717", "parentSummary": "Puppet Platform 7.5.0 Release - 2021-03-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2021-03-16T10:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 7.1.0)", "timeSpent": "PT0S", "updated": "2021-03-16T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c0977562ab90069f8af22", "body": "Hello Team,\n\nCan someone please guide me on this.\n\nThanks.", "created": "2021-02-26T07:01:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yes, we have packages for Redhat 8 for that version. You can download these via the release package at http://yum.puppetlabs.com/puppet6-release-el-8.noarch.rpm. The docs at https://puppet.com/docs/puppet/6.21/server/install_from_packages.html are out of date, apologies.", "created": "2021-03-03T11:18:00.000000"}, {"author": "623c0977562ab90069f8af22", "body": "Hello [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69],\n\nThanks a lot for your update.", "created": "2021-03-08T00:09:00.000000"}], "components": [], "created": "2021-02-23T02:50:00.000000", "creator": "623c0977562ab90069f8af22", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a6e4dd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o06qq0:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1927241379_*|*_6_*:*_1_*:*_0"}], "description": "Hello Team,\n\n\u00a0\n\nPlease clarify whether its good to proceed with the Puppet Server installation 6.21 on RHEL 8.1\n\nThanks.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14923", "fixedVersions": [], "id": "14923", "issueType": "Task", "key": "SERVER-2968", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0977562ab90069f8af22", "resolution": "Fixed", "resolutionDate": "2021-03-17T11:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Installation on RHEL 8", "timeSpent": "PT0S", "updated": "2021-03-17T11:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "closing this because we re-decided we don't like subtasks. gonna use the parent ticket instead.", "created": "2021-03-24T14:14:00.000000"}], "components": [], "created": "2021-02-22T10:49:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@219352b1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o06pxc:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Mar/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_44047_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2600690084"}], "description": "Add details based on the API decisions made in SERVER-2961. Docs for the existing {{certificate_revocation_list}} endpoint: https://github.com/puppetlabs/osp-docs/blob/latest-preview/server/http_certificate_revocation_list.md\n\nDocument how to use the new CRL update endpoint as part of the \"how to setup an intermediate CA\" documentation.  ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14921", "fixedVersions": [], "id": "14921", "issueType": "Sub-task", "key": "SERVER-2967", "labels": [], "originalEstimate": "PT0S", "parent": "15462", "parentSummary": "The CA API should accept CRL updates", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Duplicate", "resolutionDate": "2021-03-24T14:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document CRL update endpoint", "timeSpent": "PT0S", "updated": "2021-03-24T14:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Files sourced from {{puppet:///}} are used in static catalogs, in which the checksum of the file is included in the catalog. If we don't have the resource, we can't create a valid catalog. So this failure is intentional.", "created": "2021-03-03T11:24:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] So, can you set it to something like {{notfound}} so that it works the same way as {{http://}} and doesn't cause enterprise-wide levels of panic?", "created": "2021-03-03T11:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9], do you have a use case for knowingly shipping broken catalogs?\n\nI'd understand if this was a behavior change where we started failing previously passing compilations, but I don't understand the desire to be able to ship more knowingly broken catalogs to agents. Why does failing catalog compilations cause \"enterprise-wide levels of panic\" but not failing agent runs?", "created": "2021-03-17T11:22:00.000000"}, {"author": "557058:7948aec2-bc51-47d8-8a79-7ca9a48364e7", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] I do have a couple of use cases actually!\n\nAs a security officer, I would like my security settings to be applied to my system regardless of whether or not someone made a boneheaded mistake with a file being sourced from my puppet server.\n\nAs a puppet user, I would like the {{source}} parameter of the {{file}} resource to behave consistently regardless of the actual source being referenced.\n\nAs a puppet user, I would like as much of my catalog to apply as possible regardless of a failure in a single resource (the default behavior).", "created": "2021-03-19T07:44:00.000000"}, {"author": "557058:7948aec2-bc51-47d8-8a79-7ca9a48364e7", "body": "I guess a corollary to this is that I would like file sources to be deferred until runtime and be able to use another server for content.\n\nThe usual operation would be:\n * Local checksum\n * Request file metadata from wherever\n * Validate and download if necessary\n\nMoving to this model would allow for better leveling across the board and open up the system to using Nexus, WebDAV, a failover puppet server, or whatever.", "created": "2021-03-19T07:48:00.000000"}, {"author": "557058:7948aec2-bc51-47d8-8a79-7ca9a48364e7", "body": "To the comment from [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] about static catalogs", "created": "2021-03-19T07:59:00.000000"}], "components": ["Puppet Server"], "created": "2021-02-19T12:08:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@645d023e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o06pa0:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/21"}], "description": "*Puppet Version: All*\n *Puppet Server Version: All*\n *OS Name/Version: All*\n\nCompilation of the puppet catalog should not fail if there is a missing artifact that is sourced by a {{file}} resource via the {{source}} parameter being set to {{puppet:///...}}.\n\nIn contrast, sourcing the file from {{http://}} will not fail the entire catalog compilation.\n\nThis can be worked around by using {{sourceselect => 'all'}} but the default behavior of completely failing the compilation if the artifact is not present on the server seems incorrect to me.\n\n*Desired Behavior:*\n\nAs much of the catalog as is viable should be applied regardless of whether or not the file is present on the server.\n\n*Actual Behavior:*\n\nThe catalog fails to compile.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15857", "fixedVersions": [], "id": "15857", "issueType": "Bug", "key": "SERVER-2966", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet should not fail compilation if a file is missing from a module", "timeSpent": "PT0S", "updated": "2021-03-19T07:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Do we think this needs release notes? I'm not sure how much we've generally documented this endpoint.", "created": "2021-02-23T16:24:00.000000"}], "components": [], "created": "2021-02-18T21:52:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57ee9264"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o06oj4:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Feb/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_74548549_*|*_1_*:*_1_*:*_387799245_*|*_10007_*:*_1_*:*_155318_*|*_3_*:*_1_*:*_24299506_*|*_5_*:*_1_*:*_0"}], "description": "The catalog v3 endpoint rejects requests whose environment is an empty string, due to https://github.com/puppetlabs/puppet/blob/c6412ea369aa1613ca166b10fb819fcf6130814b/lib/puppet/node/environment.rb#L127\n\nFor example:\n\n{noformat}\n$ curl -ks --key ~/.puppetlabs/etc/puppet/ssl/private_keys/localhost.pem --cert ~/.puppetlabs/etc/puppet/ssl/certs/localhost.pem https://localhost:8140/puppet/v3/catalog/localhost\\?environment\\=\"\"\nThe environment must be purely alphanumeric, not ''\n{noformat}\n\nThe catalog v4 endpoint does not, and instead returns an empty catalog:\n\n{noformat}\ncurl \\\n -sk \\\n -d \"{ \\\"certname\\\":\\\"localhost\\\",\\\"options\\\":{\\\"prefer_requested_environment\\\":true},\\\"persistence\\\":{\\\"facts\\\":false,\\\"catalog\\\":false},\\\"environment\\\":\\\"\\\",\\\"facts\\\":{\\\"values\\\": {}}}\" \\\n -H 'Content-Type: application/json' \\\n -H 'Accept: application/json' \\\n --key ~/.puppetlabs/etc/puppet/ssl/private_keys/localhost.pem \\\n --cert ~/.puppetlabs/etc/puppet/ssl/certs/localhost.pem \\\n https://localhost:8140/puppet/v4/catalog\n{\"catalog\":{\"tags\":[\"settings\"],\"name\":\"localhost\",\"version\":1613709770,\"code_id\":null,\"catalog_uuid\":\"3d264ed9-af23-45d9-afcb-9b09584f1714\",\"catalog_format\":1,\"environment\":\"\",\"resources\":[{\"type\":\"Stage\",\"title\":\"main\",\"tags\":[\"stage\"],\"exported\":false,\"parameters\":{\"name\":\"main\"}},{\"type\":\"Class\",\"title\":\"Settings\",\"tags\":[\"class\",\"settings\"],\"exported\":false},{\"type\":\"Class\",\"title\":\"main\",\"tags\":[\"class\"],\"exported\":false,\"parameters\":{\"name\":\"main\"}}],\"edges\":[{\"source\":\"Stage[main]\",\"target\":\"Class[Settings]\"},{\"source\":\"Stage[main]\",\"target\":\"Class[main]\"}],\"classes\":[\"settings\"]}}\n{noformat}\n\nI can see puppetserver tries to load non-existent files. Presumably puppet is doing the equivalent of {{File.join(Puppet[:basemodulepath], \"\", \"manifests\")}}\n\n{noformat}\n~/.puppetlabs/etc/code/environments/environment.conf\n~/.puppetlabs/etc/code/environments/manifests\n{noformat}\n\nAnd due to a puppet bug (See PUP-10852) the parser does not complain about the {{manifests}} directory not existing. Instead it compiles an empty catalog.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15169", "fixedVersions": ["SERVER 6.15.3", "SERVER 7.1.0"], "id": "15169", "issueType": "Bug", "key": "SERVER-2965", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2021-02-24T13:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The catalog v4 endpoint should reject an empty string environment", "timeSpent": "PT0S", "updated": "2021-03-11T14:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "closing this because we re-decided we don't like subtasks. gonna use the parent ticket instead.", "created": "2021-03-24T14:12:00.000000"}], "components": [], "created": "2021-02-11T11:01:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@630ff291"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o06ja0:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Mar/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_519889129_*|*_3_*:*_2_*:*_755295406_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_2099228893_*|*_10005_*:*_1_*:*_175881947"}], "description": "Acceptance criteria:\n\n* HTTPS endpoint in the [puppet-ca/v1|https://github.com/puppetlabs/puppetserver/blob/9cb1073394f22ad14487992d3af34ca33e0b3b5e/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L373] API that receives a POST to consume CRL updates on the /certificate_revocation_list resource.\n* Should use the same tk-auth rules as the existing CA admin endpoints.\n* Writes a new [CRL file|https://github.com/puppetlabs/puppetserver/blob/6.x/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L467] (given chain + local CA CRL) to be used by the server & CA. All uses should be satisfied by writing the CRLs to disk at the location the CA writes it during revocations.\n** Including the [infra-crl|https://github.com/puppetlabs/puppetserver/blob/6.x/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1521-L1533] pem.\n* Should not cause race conditions with existing revocations (utilizes existing CRL [write lock|https://github.com/puppetlabs/puppetserver/blob/6.x/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L346]).\n* Logs that it has received CRLs and updated the CRL file at INFO level.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16624", "fixedVersions": [], "id": "16624", "issueType": "Sub-task", "key": "SERVER-2961", "labels": [], "originalEstimate": "PT0S", "parent": "15462", "parentSummary": "The CA API should accept CRL updates", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Duplicate", "resolutionDate": "2021-03-24T14:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement CA API to take updated upstream CRLs", "timeSpent": "PT0S", "updated": "2021-03-24T14:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "rk:6d5ede63-cd1a-4ed1-9c03-7afa59c5908e", "created": "2021-02-04T06:45:00.000000", "name": "openj9_error.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11011"}], "comments": [{"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "The error you're encountering is happening when the leiningen tool attempts to install itself, well before anything specific to puppet occurs. There's a bug reported against that project [on github|https://github.com/technomancy/leiningen/issues/2725] which mentions the specific line numbers that are in your log, though that appears to be closed in favor of being a bug at some lower level library or j9 itself.\n\nThat said, we don't support openj9 and don't currently have any plans to.", "created": "2021-02-17T13:42:00.000000"}], "components": ["Puppet Server"], "created": "2021-02-04T07:51:00.000000", "creator": "623a47e094742a00683d6fe0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f7a6efc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o06d6w:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1144291508_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 7.3.0*\n *Puppet Server Version: 7.0.2*\n *OS Name/Version: Ubuntu 18.04*\n\n*Desired Behavior:*\u00a0\n\nThe build should proceed successfully using AdoptJDK11 with openj9.\n\n*Actual Behavior:*\n\nThe build failed with the log attached below.\n\nSteps to reproduce the issue:\n{code:java}\nsudo apt-get update\nsudo apt-get install -y g++ tar git make wget locales locales-all unzip ruby-dev ant zip\nsudo -E env PATH=\"$PATH\" gem install bundler rake-compiler\n\ncd ~\nwget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9_openj9-0.24.0/OpenJDK11U-jdk_x64_linux_openj9_11.0.10_9_openj9-0.24.0.tar.gz\ntar -xf OpenJDK11U-jdk_x64_linux_openj9_11.0.10_9_openj9-0.24.0.tar.gz\nexport JAVA_HOME=~/jdk-11.0.10+9\nexport PATH=$JAVA_HOME/bin:$PATH\n\nwget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein\nchmod +x lein\nsudo mv lein /usr/bin/\n\ngit clone --recursive --branch 7.0.2 git://github.com/puppetlabs/puppetserver\ncd puppetserver\nexport LANG=\"en_US.UTF-8\" && ./dev-setup\n{code}\nWhen following the same process with other JDK variants including OpenJDK11 and AdoptOpenJDK with hotspot, the build is successful. So the NullPointerException issue only arises with this particular JDK variant (AdoptJDK11 with openj9).\n\n\u00a0It will be really helpful if we could support this JDK variant as it tends to provide better performance in general.", "environment": "Ubuntu 18.04 on x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16022", "fixedVersions": [], "id": "16022", "issueType": "Bug", "key": "SERVER-2960", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a47e094742a00683d6fe0", "resolution": "Won't Fix", "resolutionDate": "2021-02-17T13:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server fails to build using AdoptOpenJDK11 with Openj9", "timeSpent": "PT0S", "updated": "2021-02-17T13:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-01-29T17:20:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@bf349bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10874"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:w"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_252793190_*|*_10007_*:*_1_*:*_97769622_*|*_3_*:*_1_*:*_7228694_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1364191154"}], "description": "(Initial planned release date: 2021-02-09)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-02-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "16063", "fixedVersions": [], "id": "16063", "issueType": "Task", "key": "SERVER-2958", "labels": [], "originalEstimate": "PT0S", "parent": "27693", "parentSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-18T15:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.0.3)", "timeSpent": "PT0S", "updated": "2021-02-18T15:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-01-29T17:20:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a4ed31e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10874"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:s"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_252836907_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_260003068"}], "description": "(Initial planned release date: 2021-02-09)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2021-02-05T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "15488", "fixedVersions": [], "id": "15488", "issueType": "Task", "key": "SERVER-2957", "labels": [], "originalEstimate": "PT0S", "parent": "27693", "parentSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-04T15:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 7.0.3)", "timeSpent": "PT0S", "updated": "2021-02-04T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-01-29T17:20:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27c36145"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10874"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:o"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_252849555_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_259987924"}], "description": "(Initial planned release date: 2021-02-09)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 7.0.3 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2021-02-05T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "15168", "fixedVersions": [], "id": "15168", "issueType": "Task", "key": "SERVER-2956", "labels": [], "originalEstimate": "PT0S", "parent": "27693", "parentSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-04T15:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 7.0.3)", "timeSpent": "PT0S", "updated": "2021-02-04T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The release notes for this should include that a general note that we updated various dependencies to pick up some security fixes.", "created": "2021-02-01T12:21:00.000000"}], "components": [], "created": "2021-01-29T17:20:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e0a2ab3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10874"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:l"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Feb/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_252867512_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_259967418"}], "description": "(Initial planned release date: 2021-02-09)\n\nWrite release notes for the release based on the tickets found in the previous step:\n  *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md]. The osp docs repo usually has a {{<platform release>-preview}} branch. If releasing the latest version of the platform the osp docs branch will be {{latest-preview}}.\n\n* Search for tickets with {{fixVersion = \"SERVER 7.0.3\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging [~accountid:5fc46fd09592df0076141ac0] or [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] in the opened PR - give them at least two days prior to the go/no-go meeting to review.\n* Docs controls the release schedule. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2021-02-04T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "14918", "fixedVersions": [], "id": "14918", "issueType": "Task", "key": "SERVER-2955", "labels": [], "originalEstimate": "PT0S", "parent": "27693", "parentSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-04T15:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.0.3)", "timeSpent": "PT0S", "updated": "2021-02-04T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-01-29T17:20:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1fa51458"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10874"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:i"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_252881980_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_259951275"}], "description": "(Initial planned release date: 2021-02-09)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n\n* If there is concern about new PRs, promotions, or mergeups happening after reconciliation, create a release branch and release branch pipeline in ci-job-configs.\n", "duedate": "2021-02-04T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "17509", "fixedVersions": [], "id": "17509", "issueType": "Task", "key": "SERVER-2954", "labels": [], "originalEstimate": "PT0S", "parent": "27693", "parentSummary": "Puppet Platform 7.4.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-04T15:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 7.0.3)", "timeSpent": "PT0S", "updated": "2021-02-04T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-01-29T17:13:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2afb8ecb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:f"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_253279513_*|*_10007_*:*_1_*:*_97759698_*|*_3_*:*_1_*:*_7219640_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1364108530"}], "description": "(Initial planned release date: 2021-02-09)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-02-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "17249", "fixedVersions": [], "id": "17249", "issueType": "Task", "key": "SERVER-2953", "labels": [], "originalEstimate": "PT0S", "parent": "21329", "parentSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-18T15:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.15.1)", "timeSpent": "PT0S", "updated": "2021-02-18T15:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-01-29T17:13:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2dc49d82"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:c"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_253295787_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_259922694"}], "description": "(Initial planned release date: 2021-02-09)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2021-02-05T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "16623", "fixedVersions": [], "id": "16623", "issueType": "Task", "key": "SERVER-2952", "labels": [], "originalEstimate": "PT0S", "parent": "21329", "parentSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-04T15:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.15.1)", "timeSpent": "PT0S", "updated": "2021-02-04T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-01-29T17:13:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7799382"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:9"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_253326253_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_259890074"}], "description": "(Initial planned release date: 2021-02-09)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 6.15.1 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2021-02-05T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "16284", "fixedVersions": [], "id": "16284", "issueType": "Task", "key": "SERVER-2951", "labels": [], "originalEstimate": "PT0S", "parent": "21329", "parentSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-04T15:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.15.1)", "timeSpent": "PT0S", "updated": "2021-02-04T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The release notes for this should include that a general note that we updated various dependencies to pick up some security fixes.", "created": "2021-02-01T12:20:00.000000"}], "components": [], "created": "2021-01-29T17:13:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f87d76c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:6"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Feb/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_253317973_*|*_3_*:*_1_*:*_191758964_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_68132010"}], "description": "(Initial planned release date: 2021-02-09)\n\nWrite release notes for the release based on the tickets found in the previous step:\n  *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md]. The osp docs repo usually has a {{<platform release>-preview}} branch. If releasing the latest version of the platform the osp docs branch will be {{latest-preview}}.\n\n* Search for tickets with {{fixVersion = \"SERVER 6.15.1\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging [~accountid:5fc46fd09592df0076141ac0] or [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] in the opened PR - give them at least two days prior to the go/no-go meeting to review.\n* Docs controls the release schedule. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2021-02-04T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "16060", "fixedVersions": [], "id": "16060", "issueType": "Task", "key": "SERVER-2950", "labels": [], "originalEstimate": "PT0S", "parent": "21329", "parentSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-04T15:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 6.15.1)", "timeSpent": "PT0S", "updated": "2021-02-04T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-01-29T17:13:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@700928ff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:3"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_253193468_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_260023308"}], "description": "(Initial planned release date: 2021-02-09)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n\n* If there is concern about new PRs, promotions, or mergeups happening after reconciliation, create a release branch and release branch pipeline in ci-job-configs.\n", "duedate": "2021-02-04T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "estimate": "PT0S", "externalId": "15721", "fixedVersions": [], "id": "15721", "issueType": "Task", "key": "SERVER-2949", "labels": [], "originalEstimate": "PT0S", "parent": "21329", "parentSummary": "Puppet Platform 6.21.0 Release - 2021-02-09\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2021-02-04T15:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.15.1)", "timeSpent": "PT0S", "updated": "2021-02-04T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "There are also vulnerabilities in {{guava}} and {{google-closure-library}} that this lib brings in, so we should probably get to this sooner rather than later if we don't want to pin a ton of things.", "created": "2021-06-04T17:40:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "This is looking like a good alternative: https://github.com/lambdaisland/uri\nI was pretty easily able to just sub that in, since we're only using this in a test.", "created": "2021-06-07T12:35:00.000000"}], "components": [], "created": "2021-01-28T00:34:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@405d37b1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a4"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_399710773_*|*_3_*:*_1_*:*_1242868_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_10871920668"}], "description": "As part of the recent security scan (see SEC-274), {{protobuf-java}} was flagged as having a vulnerability. Froyo's projects pull in this dep as part of {{cemerick/url}}, a defunct library used for URL handling in our tests.\n\nSince this is a testing-only dependency, it's likely we're not actually vulnerable to the security issue, but in the interest of getting clean scans in the future and moving away from orphaned libraries, we should see what it would take to remove use of {{cemerick/url}} from our tests.\n\nUses:\nhttps://github.com/puppetlabs/puppetserver/blob/6.x/test/integration/puppetlabs/services/jruby/jruby_metrics_service_test.clj", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "17508", "fixedVersions": ["None"], "id": "17508", "issueType": "Task", "key": "SERVER-2959", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2021-06-07T12:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "[SPIKE] Remove use of cemerick/url to avoid CVEs", "timeSpent": "PT0S", "updated": "2021-06-07T12:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2021-01-27T14:06:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56542306"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678o:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_100569451_*|*_1_*:*_1_*:*_36511_*|*_10007_*:*_1_*:*_3790308_*|*_3_*:*_1_*:*_94736749_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_6026"}], "description": "[Updating our ring dependencies|https://github.com/puppetlabs/clj-parent/commit/a49a69ba2d145181b90c2b03913be0c0ad07bc57] introduced failures in the puppetserver pipeline:\n* https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/6.x/job/platform_puppetserver_integration-system_no-conditional_puppet5-compat_6.x/55/LAYOUT=redhat7-64ma-64a,LDAP_TYPE=default,label=k8s-beaker/console\n{code:java}\n13:15:22 Errored Tests Cases:\n13:15:22   Test Case acceptance/suites/compat_tests/020_backwards_compat/binary_file_test.rb reported: #<Beaker::Host::CommandFailure: Host 'kind-retrospect.delivery.puppetlabs.net' exited with 2 running:\n13:15:22  diff /tmp/binary_file_test.8JBFDn/binary-file-old /tmp/binary_file_test.8JBFDn/binary-file-backup\n13:15:22 Last 10 lines of output were:\n13:15:22 \tBinary files /tmp/binary_file_test.8JBFDn/binary-file-old and /tmp/binary_file_test.8JBFDn/binary-file-backup differ>\n13:15:22     Test line: acceptance/suites/compat_tests/020_backwards_compat/binary_file_test.rb:24:in `block (3 levels) in run_test'\n{code}\n\n* https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/6.x/job/platform_puppetserver_integration-system_no-conditional_full-6.x/56/LAYOUT=redhat7-64ma-64a,LDAP_TYPE=default,label=k8s-beaker/console\n{code:java}\n13:55:07 Failed Tests Cases:\n13:55:07   Test Case ruby/puppet/acceptance/tests/catalog_with_binary_data.rb reported: #<Beaker::DSL::Outcomes::FailTest: \n13:55:07 Binary file did not contain originally specified data.\n13:55:07 Expected /c0\\nff/ to match \"c3\\n80\\nc3\\nbf\\na\\n\".\n13:55:07 >\n13:55:07     Test line: ruby/puppet/acceptance/tests/catalog_with_binary_data.rb:61:in `block (3 levels) in run_test'\n{code}\n\nWe narrowed it down to the ring-servlet dependency. The breaking change was introduced somewhere [between versions 1.5.1 and 1.6.0-beta4|https://github.com/ring-clojure/ring/compare/1.5.1...1.6.0-beta4] (I couldn't test 1.6.0-beta1-3 with ring-core 1.8.2 because they [changed a method name|https://github.com/ring-clojure/ring/blob/master/CHANGELOG.md#160-beta4-2016-07-13]).\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15167", "fixedVersions": ["SERVER 6.15.1", "SERVER 7.0.3"], "id": "15167", "issueType": "Bug", "key": "SERVER-2948", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2021-01-29T21:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "ring update causes failures in binary file tests", "timeSpent": "PT0S", "updated": "2021-01-29T21:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2021-01-25T12:00:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2682babb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ry:9"}], "description": "Currently, the [puppetserver mergeup|https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/puppetserver-mergeup.sh] script does not handle conflicts in project.clj.\n\nIt probably should, at least for conflicts around {{ps-version}}.\n\nWe should decide if we want to update the embedded merge driver script in cjc or if we want to do the same thing we do for [pe-pse|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/2019.8.x/jenkins/mergeup.sh] and put the merge driver script in the puppetserver repo. The latter might be more work, but I think is probably better in the long run.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15720", "fixedVersions": [], "id": "15720", "issueType": "Improvement", "key": "SERVER-2947", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver mergeup should handle project.clj", "timeSpent": "PT0S", "updated": "2022-03-09T08:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2021-01-22T10:44:00.000000", "creator": "5e3375e183d74c0e821851f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@553afa30"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3178"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8ri253"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "42685,45251,46090"}], "description": "*Description*\nJrubies can be borrowed for extended periods of time, while the client-side has long since moved past the original request. This can unnecessarily occupy a Jruby for long times and potentially cause conflicts with file-sync locks. It would be nice to have a timeout or maximum borrow time for a Jruby to prevent a situation where this could occur. \n\n*Desired Behavior*\nA JRuby should timeout after 60 minutes of being borrowed. The timeout should be configurable. \n\n*Actual Behavior*\nThe JRuby is borrowed until the request is fully processed, which can be an indefinite amount of time. I recently saw one consumed for 28 days, which is well beyond the default 60 minute runtimeout of the agent run that made the request.\n\n*Additional Notes*\n\nIf it is not possible to set a timeout for an individual request, is it possible to set a time based lifetime for the JRuby similar to {{max-requests-per-instance}}?", "epicLinkSummary": "Puppet Server configurable timeouts", "estimate": "PT0S", "externalId": "17247", "fixedVersions": [], "id": "17247", "issueType": "Improvement", "key": "SERVER-2946", "labels": ["jira_escalated", "low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "16647", "parentSummary": "Puppet Server configurable timeouts", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e3375e183d74c0e821851f3", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide a way to timeout a JRuby instance", "timeSpent": "PT0S", "updated": "2022-03-09T09:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2021-01-21T13:22:00.000000", "creator": "557058:21c1957c-b7fb-4b38-968c-7f18ab046d3a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ccd6eb8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91"}], "description": "Java Memory settings cannot be changed, when running Puppet Server in the Docker Image. Setting for example:\n\nPUPPETSERVER_JAVA_ARGS=\"-Xms2048m -Xmx2048m\"\u00a0\n\nwhen creating the Docker container (docker-compose using Pupperware) results a message from Java \"invalid initial Heap memory size\".\n\nIt seems that the\u00a0PUPPETSERVER_JAVA_ARGS are added in addition to the preexisting \"-Xms512m -Xmx512m\" parameters resulting in this error.\n\nEntering the container (using docker exec ... bash) and changing /etc/default/puppetserver to JAVA_ARGS=\"-Xms2048m -Xmx2048m\" results a correctly starting puppetserver.\n\nBut it should be possible to change these settings using\u00a0PUPPETSERVER_JAVA_ARGS on docker container build time.\n\nTested against \"latest\" puppetserver:\n\nhttps://hub.docker.com/layers/puppet/puppetserver/latest/images/sha256-184abc8290e81a0bbe7c71da41a20a1498586a9b6adafe553610d10425e8b6ef?context=explore\n\n\u00a0", "epicLinkSummary": "Puppet Server Docker Improvements", "estimate": "PT0S", "externalId": "17244", "fixedVersions": [], "id": "17244", "issueType": "Bug", "key": "SERVER-2945", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "16299", "parentSummary": "Puppet Server Docker Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:21c1957c-b7fb-4b38-968c-7f18ab046d3a", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver in Docker Environment - JAVA_ARGS cannot change Java memory settings", "timeSpent": "PT0S", "updated": "2022-03-09T09:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "On the agent side, if the {{include_system_store}} option is true, then puppet will trust CA certs in the puppet-agent CA bundle. In addition, if {{Puppet[:ssl_trust_store]}} refers to a file, such as {{/etc/pki/tls/cert.pem}}, then the agent will include those CA certs as well.", "created": "2021-06-03T10:45:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:63d40628f6e1b543161789a7] , I have a shot at this up here: [https://github.com/puppetlabs/puppetserver/pull/2631]\n\nIn it if {{include_system_store}} is true I will include the java keystore shipped at {{/opt/puppetlabs/puppet/ssl/puppet-cacerts}} and if {{Puppet[:ssl_trust_store]}} is set to a path and that path is a file, will attempt to load it as either a list of certs like our own CA chain, or a java keystore.\n\nDoes that sound like the correct behavior?", "created": "2022-04-21T16:31:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "{quote}\nif\u00a0{{Puppet[:ssl_trust_store]}}\u00a0is set to a path and that path is a file, will attempt to load it as either a list of certs like our own CA chain, or a java keystore.\n{quote}\n\nAll sounds good with one comment. Since it's a puppet setting and the agent doesn't understand java keystores, I think it's safe to assume it *must* be a file containing concatenated PEM files. Trying to set it to a keystore would cause the local agent to misbehave.\n\nAlso note the agent will ignore the setting if it points to something other than a file or if the file is empty (due to a weird ruby/openssl issue): https://github.com/puppetlabs/puppet/blob/d894861565aa95bd6f4f1cb85fe44ab62cc37854/lib/puppet/ssl/ssl_provider.rb#L77\u00a0", "created": "2022-04-27T11:36:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Can this be resolved?", "created": "2022-05-17T17:09:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "No, it's still going through main CI, waiting on a cert bundle update in puppet-runtime for the test.", "created": "2022-05-17T17:16:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "No, it hasn't finished promoting into PE because of some other agent related cert issues. I apparently need to do a manual release of the {{puppet-ca-bundle}} project and bump it in {{puppet-runtime}} and have that promote into puppet-agent & PE before the last test will pass.", "created": "2022-05-17T17:16:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "ahh gotcha, thanks!", "created": "2022-05-17T17:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]can you add some release notes to this? /cc [~accountid:60e4906e4134aa006931a5d6]", "created": "2022-05-24T11:07:00.000000"}], "components": [], "created": "2021-01-19T16:15:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1bf62c34"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3019"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fi0m:f"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server's Ruby HTTP client now supports loading certificates from the system trust store that is included with Puppet Agent, as well as loading certs from a file or Java cert store at an arbitrary location via the `ssl_trust_store` setting."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1105026365_*|*_1_*:*_1_*:*_850479903_*|*_10007_*:*_1_*:*_1726914839_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_38631505447"}], "description": "The Puppet HTTP client API accepts an {{include_system_store}} option to its HTTP methods (e.g. {{get}}, {{post}}). When true, this option should cause the request to use an SSL context containing certificates from the system store.\n\nIn SERVER-2943, made the clj-http-client understand how to create an SSL context with system certs in it. We need to plumb this flag through from the [request options|https://github.com/puppetlabs/puppetserver/blob/1b699a076dfa3c2e85c98defeb421a0af6d5d4e0/src/ruby/puppetserver-lib/puppet/server/http_client.rb#L56-L79] to the underlying clj-http-client, where we [load the store|https://github.com/puppetlabs/clj-http-client/blob/ec78805007db944b0ef7b4e4212d4969d7d8d0a4/src/java/com/puppetlabs/http/client/impl/SslUtils.java#L27-L31], and have it load the new store with system certs instead.\n\nTesting: We expect this to be tested sufficiently at the clojure integration level. ", "epicLinkSummary": "Use System cert store", "estimate": "PT0S", "externalId": "16947", "fixedVersions": ["SERVER 6.20.0", "SERVER 7.8.0"], "id": "16947", "issueType": "Task", "key": "SERVER-2944", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": "16633", "parentSummary": "Use System cert store", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2022-05-24T11:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make puppetserver http client respect `include_system_store` option", "timeSpent": "PT0S", "updated": "2022-07-25T10:36:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] will re-split up this work based on discussion in grooming.", "created": "2021-01-22T12:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Agreed. This has come up several times recently and might be one of the things that is worth doing.", "created": "2022-03-08T14:09:00.000000"}, {"author": "61af86343618cd006f430854", "body": "dupe of SERVER-2944", "created": "2022-04-27T11:13:00.000000"}], "components": [], "created": "2021-01-19T15:48:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28920a93"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3019"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fi0m:c"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jan/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_851276314_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_3034546575_*|*_10006_*:*_2_*:*_36097272261"}], "description": "Currently, jvm-ssl-utils can only [create SSL contexts|https://github.com/puppetlabs/jvm-ssl-utils/blob/master/src/java/com/puppetlabs/ssl_utils/SSLUtils.java#L1057-L1069] that have Puppet's internal certs and keys added. Users want to be able to use an SSLContext that also trusts certificates in the system keystore. Puppet's new HTTP client API provides a flag, {{include_system_store}}, that should enable this mode.\n\nWe need to change the spot where we [create our SSL context|https://github.com/puppetlabs/clj-http-client/blob/ec78805007db944b0ef7b4e4212d4969d7d8d0a4/src/java/com/puppetlabs/http/client/impl/SslUtils.java#L27-L31] to optionally allow including certs from the system store (in addition to the Puppet certs). These are installed with puppet-agent as a bundle to {{/opt/puppetlabs/puppet/ssl/cert.pem}}. This may or may not require updates to jvm-ssl-utils.\n\nIn order to facilitate testing, this should be implemented so that the path to the certs is configurable, and doesn't try to just hard-code the location of the additional certs to be loaded.", "epicLinkSummary": "Use System cert store", "estimate": "PT0S", "externalId": "14916", "fixedVersions": [], "id": "14916", "issueType": "Task", "key": "SERVER-2943", "labels": [], "originalEstimate": "PT0S", "parent": "16633", "parentSummary": "Use System cert store", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Duplicate", "resolutionDate": "2022-04-27T11:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow clj-http-client to optionally load system stores from agent's bundle", "timeSpent": "PT0S", "updated": "2022-04-27T11:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5f98fb568405b10077498a2e", "body": "Here is an example summary from a CentOS 7 node with Puppet 6.19.1:\n{noformat}\n$ time puppet agent -td --profile --summarize\n...\nNotice: Applied catalog in 567.89 seconds\nChanges:\n            Total: 15\nEvents:\n          Success: 15\n            Total: 15\nResources:\n   Corrective change: 13\n          Changed: 14\n      Out of sync: 14\n            Total: 1292\nTime:\n        Resources: 0.00\n         Ssl pkey: 0.00\n        Mailalias: 0.00\n         Schedule: 0.00\n        Swap file: 0.00\n             Host: 0.00\n             Cron: 0.00\n            Mount: 0.00\n        X509 cert: 0.00\n      Concat file: 0.00\n     X509 request: 0.00\n           Notify: 0.00\n           Anchor: 0.00\n           Sysctl: 0.00\n   Sysctl runtime: 0.00\n          Yumrepo: 0.01\n        File line: 0.01\n   Kernel parameter: 0.02\n   Concat fragment: 0.02\n   Ssh authorized key: 0.03\n            Group: 0.04\n       Selboolean: 0.11\n             User: 0.19\n              Pam: 0.27\n     Alternatives: 0.28\n         Firewall: 0.81\n          Java ks: 1.56\n     Startup time: 1.69\n         Last run: 1610124104\n             Exec: 24.52\n          Service: 3.65\n        Selmodule: 32.85\n             File: 480.14\n   Convert catalog: 5.03\n   Config retrieval: 56.11\n   Transaction evaluation: 567.60\n   Catalog application: 567.89\n       Filebucket: 0.00\n   Node retrieval: 69.47\n          Package: 7.15\n   Fact generation: 7.59\n      Plugin sync: 73.79\n           Augeas: 9.62\n            Total: 782.32\nVersion:\n           Puppet: 6.19.1\n           Config: server-environment-674b6668d9e\n\nreal    15m31.909s\nuser    1m21.789s\nsys     0m19.356s\n{noformat}", "created": "2021-01-08T09:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We think this might be the same issue as in https://puppet.atlassian.net/browse/PUP-10856, does that look likely to you? If so, it's fixed in Puppet 7.4, which is going out in the next couple weeks.", "created": "2021-02-01T16:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're going to close this in light of the recent release, please reopen if you're still seeing the issue.", "created": "2021-03-03T11:29:00.000000"}], "components": ["Puppet Server"], "created": "2021-01-08T09:29:00.000000", "creator": "5f98fb568405b10077498a2e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@230132f7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05stc:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Feb/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4672811217_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 7.0.1 and 6.x including 6.19.1*\n *Puppet Server Version: 7.0.1*\n *OS Name/Version: CentOS\u00a07.9.2009*\n\nWe recently upgraded puppet server 7 and puppet db latest via yum.\u00a0 Immediately, agent runs went from taking ~1 min to >15 min.\u00a0 We rolled back to the previous RPMs and agent run times went back to normal.\n\nLater, we performed the same yum update again and see the same drastic increase.\u00a0 The server usually runs in SELinux enforcing mode with auditd running.\u00a0 We have disabled both of those but the times remain very high.\u00a0 Server load and memory use do not seem to be affected.\n\n*Desired Behavior:*\n\nPuppet agent runs with a puppetserver v7 run with similar speeds as with v6.\n\n*Actual Behavior:*\n\nWe have run the agent with a few different diagnostic levels:\n * puppet agent -td --profile --summarize\n * puppet agent -td --evaltrace\n\nBoth of these indicate File resources are taking a very long time.\u00a0 I have seen many online threads and even historical puppet issues that address this but none of the posts helped me ID the root cause and solution.\n\nWe had been using the default environment_timeout (0) in previous versions because we didn't know any better.\u00a0 After reading some tuning guides this week, we have tested with {{environment_timeout = unlimited}}.\u00a0 This does not seem to help.\n\nWe have disconnected puppetdb from the puppetserver but this did not help.\n{noformat}\n$ rpm -qa | grep ^puppet | sort\npuppet-agent-7.1.0-1.el7.x86_64\npuppet-agent-oauth-0.5.1-3.el7.noarch\npuppet-bolt-2.40.2-1.el7.x86_64\npuppetdb-7.0.1-1.el7.noarch\npuppetdb-termini-7.0.1-1.el7.noarch\npuppetserver-7.0.1-1.el7.noarch{noformat}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17506", "fixedVersions": [], "id": "17506", "issueType": "Bug", "key": "SERVER-2942", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5f98fb568405b10077498a2e", "resolution": "Fixed", "resolutionDate": "2021-03-03T11:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Very slow agent runs (particularly file resources) after puppet server upgrade from 6 to 7", "timeSpent": "PT0S", "updated": "2021-03-03T11:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think you're right, this can probably be removed. We weren't able to use jrjackson at the end of the day.", "created": "2021-03-17T11:20:00.000000"}], "components": [], "created": "2020-12-29T14:16:00.000000", "creator": "5cf96166b7268e0e7bb41131", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@588fde96"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05nxs:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_438504345_*|*_1_*:*_1_*:*_6725011777_*|*_10007_*:*_1_*:*_52364800_*|*_3_*:*_1_*:*_24172771_*|*_5_*:*_1_*:*_0"}], "description": "Hello!\n\nI've been working on packaging puppetserver in Debian and it seems to me the dependency on [com.fasterxml.jackson.module/jackson-module-afterburner] in puppetserver's project.clj is not required.\n\nWhile researching this issue, I found out it was added as part of the move to jrjackson. AFAICT, you decided not to use jrjackson. Thus, this dependency shouldn't be required.\n\nThe commit that added this dep is [https://github.com/puppetlabs/puppetserver/commit/2b2baa843ee563f0e5427aa837274a6c93ade536]\n\nIt references (SERVER-2098), but I find the following PR on github much clearer to why it was added:\n\nhttps://github.com/puppetlabs/puppetserver/pull/1647#issuecomment-371907691", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15268", "fixedVersions": ["SERVER 6.15.3", "SERVER 7.1.2"], "id": "15268", "issueType": "Bug", "key": "SERVER-2941", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5cf96166b7268e0e7bb41131", "resolution": "Done", "resolutionDate": "2021-03-23T10:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the dependency on [com.fasterxml.jackson.module/jackson-module-afterburner] still needed?", "timeSpent": "PT0S", "updated": "2021-04-09T13:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [{"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10709"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T13:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10710"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11086"}], "comments": [{"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to ruth@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser iq22sor1509701pjb.38 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to karen@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser gk5sor1495606pjb.30 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y17sor1538073pjt.40 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T13:01:00.000000"}], "components": [], "created": "2020-12-16T12:55:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@318835d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10830"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:h"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2604442519_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-01-19)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-01-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "15719", "fixedVersions": [], "id": "15719", "issueType": "Task", "key": "SERVER-2940", "labels": [], "originalEstimate": "PT0S", "parent": "26680", "parentSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-01-15T16:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.0.2)", "timeSpent": "PT0S", "updated": "2021-01-15T16:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [{"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10921"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11163"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11312"}], "comments": [{"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to ruth@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v27sor1502092pgk.77 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to karen@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 1sor1525910pjz.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b3sor1510447pji.35 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're going to have another 7.x release before we release PE, so we want to keep promotions on.", "created": "2021-01-15T16:02:00.000000"}], "components": [], "created": "2020-12-16T12:55:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c41fa28"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10830"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:gi"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2603219566_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-01-19)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2021-01-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "15265", "fixedVersions": [], "id": "15265", "issueType": "Task", "key": "SERVER-2939", "labels": [], "originalEstimate": "PT0S", "parent": "26680", "parentSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Won't Do", "resolutionDate": "2021-01-15T16:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 7.0.2)", "timeSpent": "PT0S", "updated": "2021-01-15T16:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [{"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10780"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11006"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11162"}], "comments": [{"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to ruth@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m12sor1485420pjz.34 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to karen@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser g19sor1376682pfk.91 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n14sor1502001pjq.27 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}], "components": [], "created": "2020-12-16T12:55:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@503db27"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10830"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:g"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2604442144_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-01-19)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 7.0.2 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2021-01-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "14914", "fixedVersions": [], "id": "14914", "issueType": "Task", "key": "SERVER-2938", "labels": [], "originalEstimate": "PT0S", "parent": "26680", "parentSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-01-15T16:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 7.0.2)", "timeSpent": "PT0S", "updated": "2021-01-15T16:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [{"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10853"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11087"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11244"}], "comments": [{"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to ruth@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser w12sor1679766plz.58 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to karen@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j10sor1306190pjs.0 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j5sor1513358pji.14 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}], "components": [], "created": "2020-12-16T12:55:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@175b51ec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10830"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:fi"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2604306046_*|*_3_*:*_1_*:*_320321631_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-01-19)\n\nWrite release notes for the release based on the tickets found in the previous step:\n  *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md].\n\n* Search for tickets with {{fixVersion = \"SERVER 7.0.2\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging @K8med in the opened PR - give her at least two days prior to ship to review.\n* The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n* Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2021-01-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "17503", "fixedVersions": [], "id": "17503", "issueType": "Task", "key": "SERVER-2937", "labels": [], "originalEstimate": "PT0S", "parent": "26680", "parentSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-01-19T09:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.0.2)", "timeSpent": "PT0S", "updated": "2021-01-19T09:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [{"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10626"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T13:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10627"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T12:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11005"}], "comments": [{"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to ruth@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k2sor1686769pld.59 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to karen@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser g19sor1376648pfk.91 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T12:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser fy14sor1529445pjb.12 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T13:01:00.000000"}], "components": [], "created": "2020-12-16T12:55:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@170ed56f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10830"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:f"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2603584083_*|*_5_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2021-01-19)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2021-01-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "17242", "fixedVersions": [], "id": "17242", "issueType": "Task", "key": "SERVER-2936", "labels": [], "originalEstimate": "PT0S", "parent": "26680", "parentSummary": "Puppet Platform 7.2.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-01-15T16:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 7.0.2)", "timeSpent": "PT0S", "updated": "2021-01-15T16:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [{"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10617"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10618"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10594"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10595"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10596"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10597"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10598"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10599"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10600"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10601"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10602"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10603"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10604"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10605"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10606"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10607"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10608"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10609"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10610"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10611"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10612"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10613"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10614"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10615"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10616"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10619"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10620"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10621"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10622"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10623"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10624"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10625"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10677"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10678"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10679"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10680"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10681"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10682"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10683"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10684"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10685"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10686"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10687"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10688"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10689"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10690"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10691"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10692"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10693"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10694"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10695"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10696"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10697"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10698"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10699"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10700"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10701"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10702"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10703"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10704"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10705"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10706"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10707"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10708"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10778"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10748"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10749"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10750"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10751"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10752"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10753"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10754"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10755"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10756"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10757"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10758"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10759"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10760"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10761"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10762"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10763"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10764"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10765"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10766"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10767"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10768"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10769"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10770"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10771"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10772"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10773"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10774"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10775"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10776"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10777"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10779"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10820"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10821"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10822"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10823"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10824"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10825"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10826"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10827"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10828"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10829"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10830"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10831"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10832"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10833"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10834"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10835"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10836"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10837"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10838"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10839"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10840"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10841"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10842"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10843"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10844"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10845"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10846"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10847"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10848"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10849"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10850"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10851"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10852"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10889"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10890"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10891"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10892"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10893"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10894"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10895"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10896"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10897"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10898"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10899"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10900"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10901"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10902"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10903"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10904"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10905"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10906"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10907"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10908"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10909"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10910"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10911"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10912"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10913"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10914"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10915"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10916"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10917"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10918"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10919"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10920"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10970"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10971"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10972"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10973"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10974"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10975"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10976"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10977"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10978"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10979"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10980"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10981"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10982"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10983"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10984"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10985"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10986"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10987"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10988"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10989"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10990"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10991"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10992"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10993"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10994"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10995"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10996"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10997"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10998"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10999"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11000"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11001"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11002"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11003"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11004"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11055"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11056"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11057"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11058"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11059"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11060"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11061"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11062"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11063"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11064"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11065"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11066"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11067"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11068"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11069"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11070"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11071"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11072"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11073"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11074"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11075"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11076"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11077"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11078"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11079"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11080"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11081"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11082"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11083"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11084"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11085"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11129"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11130"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11131"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11132"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11133"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11134"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11135"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11136"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11137"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11138"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11139"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11140"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11141"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11142"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11143"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11144"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11145"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11146"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11147"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11148"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11149"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11150"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11151"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11152"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11153"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11154"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11155"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11156"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11157"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11158"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11159"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11160"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11161"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T16:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11212"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11213"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11214"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11215"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11216"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11217"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:37:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11218"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11219"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11220"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11221"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11222"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11223"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11224"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11225"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11226"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11227"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11228"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11229"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11230"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11231"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11232"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:25:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11233"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11234"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11235"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11236"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11237"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11238"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:05:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11239"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:45:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11240"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11241"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T12:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11242"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11243"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11299"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T17:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11280"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11281"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T18:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11282"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T19:21:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11283"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11284"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T20:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11285"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11286"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T21:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11287"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T22:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11288"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:13:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11289"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-14T23:53:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11290"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T00:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11291"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11292"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T01:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11293"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T02:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11294"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11295"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T03:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11296"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T04:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11297"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T05:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11298"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T06:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11300"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11301"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T07:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11302"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:17:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11303"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T08:57:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11304"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T09:33:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11305"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11306"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T10:29:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11307"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:09:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11308"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T11:49:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11309"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:01:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11310"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-15T13:41:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11311"}], "comments": [{"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser g4sor9692127plp.13 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y66sor8429186pfb.82 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f15sor8587157pfa.44 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l13sor8529378pfc.12 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ng6sor8720609pjb.35 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i124sor1982165pfe.23 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o1sor8334435pfu.97 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d1sor1592609pjw.1 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b19sor8784736pjo.14 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d21sor6395657pfq.3 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v3sor8891850pjl.25 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser kk4sor8729449pjb.23 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 70sor8486009pfv.34 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T16:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser cx2sor7718981pjb.13 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser u1sor9262699plz.68 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c10sor5715563plr.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 1sor9661399plc.42 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z10sor9014214pgl.45 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z25sor9128370pgu.29 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s1sor4754877pfm.94 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x20sor6001658pll.2 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j5sor8991055pji.14 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser u14sor9098455pjd.22 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j205sor8487117pfd.41 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o12sor8958596pjr.0 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x5sor5354510plm.35 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser a9sor9051910pjv.24 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ba9sor5936977plb.4 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T17:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y17sor9188987pjt.40 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser kk4sor8809131pjb.23 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser e4sor3270414pgg.30 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z4sor108834plb.46 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t9sor9448906plr.21 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser q13sor1581039pgi.20 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y11sor9071661pjm.25 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i17sor8932621pjl.31 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d7sor9358086pgd.7 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser g2sor9139262pge.33 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y16sor5619773plp.28 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z4sor151631plb.46 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d5sor8539964pfo.11 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser h38sor9097097pgb.21 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser e4sor3325748pgg.30 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T18:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b3sor7625759pji.35 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y9sor6429491pfe.86 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r20sor9331394pgi.3 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m12sor9323481pjg.15 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y15sor5664837pgj.27 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m12sor9002797pjz.34 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 1sor9837464plc.42 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser cv8sor9292165pjb.20 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f14sor6432533pgj.35 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 24sor9315677pgz.51 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i10sor9126651pju.3 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f141sor8691437pfa.0 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l197sor5860654pga.2 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m12sor7405684pgj.41 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t5sor3535013pfl.47 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T19:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser p1sor8596737pfp.96 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o12sor9124916pjr.0 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z11sor3062072pfq.30 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 70sor8701250pfv.34 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r33sor9434551pgb.8 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r8sor9266590pjz.3 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t1sor9211375pjs.2 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m12sor9414457pjg.15 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c16sor9830483pls.53 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d12sor3673975pfd.101 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d1sor9906887pls.17 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o4sor9134963pgi.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n31sor9093098pgl.18 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t2sor9194459pji.26 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o4sor9890694pls.50 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T20:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b24sor5423593pfo.72 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s19sor3015293plq.39 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 11sor7411217plg.10 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b68sor8881257pfb.77 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser g17sor9312252pju.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser gk5sor9142446pjb.30 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser fr14sor9190028pjb.23 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r10sor9233838pjp.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x10sor8792465pff.70 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n194sor8625030pfd.1 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 10sor9820321plb.52 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 18sor3227360pjk.42 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser w12sor8707374pfi.24 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser p1sor8715695pfp.96 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o4sor9217749pgi.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T21:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 63sor9680969pla.15 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j19sor9767824plj.49 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t6sor5354981pju.19 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l13sor8911323pfc.12 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m10sor9372376pgp.78 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i38sor9378706pgl.28 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser w5sor9816193plq.69 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m10sor9385758pgp.78 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s11sor9416382pjp.5 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f9sor10016285plb.37 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser lx18sor9471157pjb.32 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o24sor9168632pll.60 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j5sor9361446pji.14 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j16sor9328089pgh.79 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j205sor8830919pfd.41 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T22:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c6sor4364262pll.31 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 136sor8841111pfz.33 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 128sor9359269pgi.86 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b31sor9271759pgm.55 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ge15sor2577787pjb.8 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b16sor6357086plz.51 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t11sor8764876pgu.4 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b3sor1720347pld.26 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b188sor3920193pfa.89 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser p20sor8960185pfn.53 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z23sor234067pgv.73 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d5sor8865285pfo.11 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z4sor582722plb.46 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ge15sor2619901pjb.8 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser h38sor9457238pgb.21 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-14T23:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t63sor9578720pgc.40 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o1sor8826176pfu.97 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v2sor9145668pfu.13 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z6sor9487424pju.27 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c26sor9387732pgb.53 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i38sor9523176pgl.28 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t35sor3307743pfg.35 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l6sor10057179plb.11 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d20sor9542053pgi.25 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 1sor10299515plc.42 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c6sor4520470pll.31 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser az12sor10252077plb.47 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r205sor3804424pgr.63 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b12sor9740774pgr.70 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c10sor6367798plr.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T00:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n3sor9435859pgh.66 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser az12sor10285296plb.47 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser fz10sor5543506pjb.11 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser g6sor10334737plo.12 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o4sor9456156pgi.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j10sor791015pjs.0 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j8sor2974756pff.57 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser u5sor1496859pjr.37 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c16sor10275481pls.53 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r20sor9803342pgi.3 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c16sor10287115pls.53 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser u14sor9700920pjd.22 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s11sor9666176pjp.5 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k6sor9722984pjm.26 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ha18sor4911209pjb.17 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T01:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s1sor5330057pfm.94 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser a7sor9626174pjw.6 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser bf10sor180658plb.73 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n8sor10272899plk.62 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 26sor2939328pgq.62 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser bj22sor9649622pjb.6 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t6sor5674113pju.19 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y11sor9663416pjm.25 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k4sor9193539pfg.90 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k19sor9188250pfc.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b12sor9874907pgr.70 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser a17sor9784471pjq.42 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x10sor9158701pff.70 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser q14sor9384010pfj.22 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 11sor7919711plg.10 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T02:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b19sor9515101pjo.14 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser bi7sor5195296plb.30 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser bj22sor9715525pjb.6 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser gf11sor9764695pjb.7 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m10sor9735652pgp.78 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d12sor4136802pfd.101 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser u14sor8923315pfc.36 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y11sor9745475pjm.25 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o12sor9680758pjr.0 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser w18sor9350955pfu.29 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s1sor5447144pfm.94 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser cx2sor8533866pjb.13 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c9sor7080296plo.23 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s1sor5459111pfm.94 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser u14sor8957400pfc.36 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T03:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b68sor9358363pfb.77 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n3sor9657473pgh.66 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 11sor8023637plg.10 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser iq22sor9796020pjb.38 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i7sor5776412pgr.31 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f22sor9180455pfd.27 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v4sor9515430pfm.19 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y2sor8365781pjv.20 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k6sor9928743pjm.26 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser e13sor9873276pgt.44 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser p24sor9675468pgb.26 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x11sor9443307pfc.84 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z4sor1015318plb.46 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c16sor10555675pls.53 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser h38sor9812770pgb.21 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T04:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b16sor6852512plz.51 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b68sor9431510pfb.77 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser p17sor10298932plq.19 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser q13sor2356684pgi.20 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j6sor3607947pga.42 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i69sor5478091pgc.11 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 205sor9323618pfw.25 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser gk5sor9746842pjb.30 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t36sor9550680pfg.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser e4sor2704668pfh.74 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l197sor6584909pga.2 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r33sor10125872pgb.8 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x9sor10789604plb.27 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b3sor8429907pji.35 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i33sor9737750pgb.19 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T05:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d21sor7974790pld.64 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v4sor9635889pfm.19 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n10sor9980903pjt.33 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser g3sor355969pfq.65 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j8sor3320601pff.57 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x10sor9410255pff.70 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s15sor2208966pjr.43 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser a3sor3351744pgg.38 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s11sor10034438pjp.5 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z22sor9470457pfc.61 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser a1sor3392868pfn.83 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 4sor3212571pfy.52 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d10sor8641998pln.20 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v3sor10067788pjr.29 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser g19sor9483643pfk.91 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T06:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m12sor9881332pjz.34 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ms2sor10007172pjb.21 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser h21sor9811747pgv.37 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser co14sor9883292pjb.19 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser me13sor10044694pjb.15 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k206sor9406657pfd.32 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ob3sor9904639pjb.28 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser h11sor10655286plr.5 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ob3sor9916990pjb.28 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser cp5sor1284225plb.71 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f19sor10045034pgk.67 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o4sor9944499pgi.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser w21sor9791678pfc.31 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y9sor7331856pfe.86 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser bb12sor4292586pjb.10 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T07:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f19sor10073646pgk.67 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l3sor10095192pjz.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d8sor10079724pgj.5 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z6sor2831041pjq.4 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v5sor10106678pjl.22 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i124sor3117632pfe.23 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z6sor2849366pjq.4 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 78sor9705153pfy.75 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser cv8sor10334410pjb.20 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser bf8sor10084946pjb.31 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser kk4sor9917487pjb.23 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 85sor8963208pge.32 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser g17sor10242642pju.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y16sor10388205pgk.59 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v2sor9810114pfu.13 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T08:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r10sor10148005pjp.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t35sor3946112pfg.35 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 1sor9811764pfz.102 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d2sor8703395pjl.12 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d21sor7556114pfq.3 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser my9sor10344389pjb.7 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c6sor5328050pll.31 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z12sor10229427pgg.83 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d134sor10270649pga.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d10sor8919691pln.20 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser q13sor2753308pgi.20 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f18sor10372117pgh.39 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r70sor9777526pfc.66 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser fr14sor10188715pjb.23 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser r33sor10515948pgb.8 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T09:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d7sor10568772pgd.7 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n6sor149033pgn.47 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser j5sor10284893pji.14 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n14sor10193507pjq.27 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f141sor9752596pfa.0 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k19sor9785264pfc.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l3sor10302437pjz.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k15sor2825175pls.25 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d21sor7653462pfq.3 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m22sor10335434pgu.85 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l2sor10194813pjk.29 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser fs21sor10290753pjb.18 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b3sor2772090pld.26 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ha18sor5641401pjb.17 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 85sor9447033pfw.95 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T10:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b12sor10582743pgr.70 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser e8sor10257647pgn.57 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c10sor7281894plr.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser mq13sor6543623pjb.4 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser w9sor8414461pge.15 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v2sor10001480pfu.13 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y16sor7115957plp.28 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l2sor11141862plk.7 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n21sor10007584pfu.81 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i69sor6035660pgc.11 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser f62sor10344136pjk.8 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x10sor9844631pff.70 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d1sor3075789pjw.1 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser bj8sor11068445plb.14 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v3sor10504660pjr.29 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T11:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l197sor7156343pga.2 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser h11sor11074461plr.5 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser ng6sor10211850pjb.35 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n3sor10340398pgh.66 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n194sor9687370pfd.1 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser p8sor11228199plk.0 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser a13sor273318pfn.20 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser p17sor10962165plq.19 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser s19sor4401765plq.39 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o4sor10714082pgu.43 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser h13sor10607562pgl.10 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:41:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser q10sor9819829pfs.68 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:45:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser u1sor11339537plq.61 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:49:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t18sor9836912pfq.56 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:53:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 18sor4441957pjk.42 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T12:57:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z15sor9581263pfg.93 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:01:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n14sor16521pjq.27 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:05:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t18sor9854727pfq.56 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:09:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x20sor7696297pll.2 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:13:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser my9sor43936pjb.7 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:17:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n3sor10419996pgh.66 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:21:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser t11sor9868890pgu.4 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:25:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 89sor14880ple.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:29:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser mr2sor60337pjb.13 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:33:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser p67sor9104446pgp.80 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:37:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 89sor20746plf.40 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-15T13:41:00.000000"}], "components": [], "created": "2020-12-11T10:02:00.000000", "creator": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@141dfd1c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05grs:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_15227912_*|*_1_*:*_1_*:*_2469936_*|*_10007_*:*_1_*:*_263235669_*|*_5_*:*_1_*:*_0"}], "description": "Look at PUP-10812 for more details.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15262", "fixedVersions": ["SERVER 7.0.2"], "id": "15262", "issueType": "Task", "key": "SERVER-2934", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "resolution": "Fixed", "resolutionDate": "2020-12-14T16:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server side element of PUP-10812; issue cadir warnings", "timeSpent": "PT0S", "updated": "2020-12-15T13:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Logback will only scan for files that are at most 32 days old when the maxHistory interval has changed. Logback is not a Puppet project and looking at their history they've changed the default a couple of times in the last decade. [Here|https://github.com/qos-ch/logback/blob/bbc783e6d68482abe8e7dff0d06708175e971b91/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover.java#L33] is the current code that manages it.  It doesn't look user configurable.", "created": "2020-12-17T16:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Marking this as \"Won't Fix\" since the issue is the behavior of the upstream library and they seem happy with its behavior.", "created": "2020-12-17T16:25:00.000000"}], "components": [], "created": "2020-12-09T23:04:00.000000", "creator": "6220db614160640069c7133a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f5cd65b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05g88:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_664861088_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2351256"}], "description": "*Puppet Version:* 2019.8.1\n *Puppet Server Version:*\u00a02019.8.1\n *OS Name/Version:* RHEL 7\n\nLog files are not deleted based on the\u00a0_*maxHistory*_\u00a0parameter value updated in _*logback.xml*_\n\n*Before changing any settings in the logback.xml file*\u00a0\n{code:java}log file puppetserver-<date>.log.gz count shows as below.\n\n[root@pe-201981-master puppetserver]# ls |grep puppetserver-2 | wc -l\n  89 {code}\n\u00a0\n\nUpdated the\u00a0*{{logback.xml}}*\u00a0file to set the\u00a0*{{<maxHistory>7</maxHistory>}}*\u00a0and restarted the\u00a0*{{puppetserver}}*\u00a0service.\n{code:java}  <appender name=\"F1\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <file>/var/log/puppetlabs/puppetserver/puppetserver.log</file>\n        <append>true</append>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy\">\n            <fileNamePattern>/var/log/puppetlabs/puppetserver/puppetserver-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>\n            <!-- each file should be at most 200MB, keep 90 days worth of history, but at most 1GB total -->\n            <maxFileSize>200MB</maxFileSize>\n            <maxHistory>7</maxHistory>\n            <cleanHistoryOnStart>true</cleanHistoryOnStart>\n            <totalSizeCap>1GB</totalSizeCap>\n        <cleanHistoryOnStart>true</cleanHistoryOnStart>\n        </rollingPolicy>\n        <encoder>\n            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} %-5p [%t] [%c{2}] %m%n</pattern>\n        </encoder>\n    </appender> {code}\n\u00a0Output after the settings changed.\n{code:java}   [root@pe-201981-master puppetserver]# ls |grep puppetserver-2 | wc -l\n   57 {code}\nIt deletes the files just from one month before, meaning deleted the log files from only\u00a0_*{{Nov 2020}}*_\u00a0but not from\u00a0_*{{SEP & OCT 2020}}*_.\n\nSuppose to keep the log files only for the past *7* days and delete the rest of the files based on the _*maxHistory*_ parameter value.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17536", "fixedVersions": [], "id": "17536", "issueType": "Bug", "key": "SERVER-2933", "labels": ["needs_repro"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6220db614160640069c7133a", "resolution": "Won't Fix", "resolutionDate": "2020-12-17T16:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Log files are failed to delete based on maxHistory value parameter in logback.xml ", "timeSpent": "PT0S", "updated": "2020-12-17T16:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-12-08T15:50:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42c5326d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:qu"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_583435691_*|*_1_*:*_1_*:*_5633_*|*_3_*:*_1_*:*_545410147_*|*_10009_*:*_1_*:*_75325258_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_8196751701_*|*_10005_*:*_1_*:*_2667110195"}], "description": "This needs to remain compatible with deprecated settings. Audit codebase for inappropriate terms and prefer alternatives when reading config/puppet settings.\n\nMost of the stuff in here seem to be internal variable names that use \"master\" in a way that's easily convertible to \"server\".\n\nThere are also still a few places reading the \"master\" version of puppet's settings, though the work to merge in the \"server\" section from the config has been done.\n\nDon't forget to audit specs as part of this.", "epicLinkSummary": "Froyo owned changes in terminology", "estimate": "PT0S", "externalId": "17535", "fixedVersions": ["SERVER 6.16.0", "SERVER 7.2.0"], "id": "17535", "issueType": "Task", "key": "SERVER-2932", "labels": [], "originalEstimate": "PT0S", "parent": "14926", "parentSummary": "Froyo owned changes in terminology", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2021-04-27T09:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update harmful terminology in puppetserver-ca-cli", "timeSpent": "PT0S", "updated": "2021-04-27T09:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-12-04T12:18:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e1f7cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000609"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_5284_*|*_1_*:*_1_*:*_270836_*|*_10007_*:*_1_*:*_2918317_*|*_3_*:*_1_*:*_10354801_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_249118478_*|*_10005_*:*_1_*:*_3394"}], "description": "The ca cli warns when the cadir is in the ssldir. We want this during nearly all ca cli invocations, but we should prevent it from warning when running the migration action.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14913", "fixedVersions": ["SERVER 7.0.1"], "id": "14913", "issueType": "Bug", "key": "SERVER-2931", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2020-12-07T13:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Do not warn regarding cadir when running migration", "timeSpent": "PT0S", "updated": "2020-12-07T13:16:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Docs ticket needs to be updated for the osp-docs repo and to replace Kate with our newest docs person (maybe also mention Claire)?", "created": "2020-12-16T17:34:00.000000"}], "components": [], "created": "2020-12-03T16:52:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@270cb751"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10801"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfs:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_94411940_*|*_3_*:*_1_*:*_264904772_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_835047818"}], "description": "(Initial planned release date: 2020-12-15)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-12-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "estimate": "PT0S", "externalId": "15487", "fixedVersions": [], "id": "15487", "issueType": "Task", "key": "SERVER-2930", "labels": [], "originalEstimate": "PT0S", "parent": "24453", "parentSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-12-17T12:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.0.1)", "timeSpent": "PT0S", "updated": "2020-12-17T12:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This isn't going out in a PE release but I used this ticket number for the cjc work that I did (create a release branch and jobs to release from it).", "created": "2020-12-10T14:03:00.000000"}], "components": [], "created": "2020-12-03T16:52:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ab383ef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10801"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfc:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_94412735_*|*_10007_*:*_1_*:*_334772069_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_500260450"}], "description": "(Initial planned release date: 2020-12-15)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2020-12-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "estimate": "PT0S", "externalId": "14911", "fixedVersions": [], "id": "14911", "issueType": "Task", "key": "SERVER-2929", "labels": [], "originalEstimate": "PT0S", "parent": "24453", "parentSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-12-14T11:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 7.0.1)", "timeSpent": "PT0S", "updated": "2020-12-14T11:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-12-03T16:52:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@225abfc5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10801"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o059jy:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_94410775_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_834936198"}], "description": "(Initial planned release date: 2020-12-15)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 7.0.1 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-12-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "estimate": "PT0S", "externalId": "17534", "fixedVersions": [], "id": "17534", "issueType": "Task", "key": "SERVER-2928", "labels": [], "originalEstimate": "PT0S", "parent": "24453", "parentSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-12-14T11:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 7.0.1)", "timeSpent": "PT0S", "updated": "2020-12-14T11:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-12-03T16:52:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b29c01f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10801"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o059jw:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_94409609_*|*_10007_*:*_1_*:*_333847155_*|*_3_*:*_1_*:*_1230384_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_499777241"}], "description": "(Initial planned release date: 2020-12-15)\n\nWrite release notes for the release based on the tickets found in the previous step:\n *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md].\n * Search for tickets with {{fixVersion = \"SERVER 7.0.1\"}}.\n * Check each ticket's DOCS tab for the necessary release notes.\n * Request review from the docs team by pinging [~accountid:5fc46fd09592df0076141ac0] in the opened PR - give her at least two days prior to ship to review.\n * The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n * Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band, ask in the #prod-docs Slack channel.", "duedate": "2020-12-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "estimate": "PT0S", "externalId": "17239", "fixedVersions": [], "id": "17239", "issueType": "Task", "key": "SERVER-2927", "labels": [], "originalEstimate": "PT0S", "parent": "24453", "parentSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-12-14T10:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.0.1)", "timeSpent": "PT0S", "updated": "2020-12-14T10:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Running ticketmatch like:\n{code}\npuppetserver (main<>) :: ruby ../../tools/ticketmatch/ticketmatch.rb \nEnter Git From Rev: 7.0.0                                                                                                    \nEnter Git To Rev: |master| main                               \nEnter JIRA project: |PUP| SERVER                    \nEnter JIRA fix version: |SERVER main| SERVER 7.0.1  \n(Optional) Enter JIRA team name:\n\n.....\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 7.0.1)\nI18N\nPE-30410\nSERVER-2876\nSERVER-2914\nSERVER-2925\n\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n\n----- Unresolved Jira tickets found in git commits -----\nUNRESOLVED ISSUES FOUND IN GIT\nSERVER-2917     Ready for CI           (Froyo)\n\n----- Tickets missing release notes -----\nALL ISSUES CONTAIN RELEASE NOTES\n{code}\n\nPE-30410 - Is an Orch fix that requires updates in FOSS land, specifically our AST compiler endpoint. The ticket is in the correct form for a PE ticket and I'm not going to force the FOSS workflow here.\n\nThe remaining three in that category (SERVER-2876, SERVER-2914, SERVER-2925) landed originally in earlier branches and were merged up without the ticket having 7.0.1 added to the fixVersion. I've added it.\n\nFinally, there's SERVER-2917 which has passed CI for FOSS but there's a follow up PE clean up that the ticket is open waiting for. It has functionally been resolved on the FOSS side and shouldn't block anything.", "created": "2020-12-10T13:37:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It was voom build 7.0.1-20201210_045602-gcc9cb79 that was promoted into PE. Which corresponds to this [FOSS build|http://builds.delivery.puppetlabs.net/puppetserver/7.0.1.SNAPSHOT.2020.12.10T0726/]. If one double checks you'll find that one of those is for the merge commit and the other is not, for some reason our FOSS packages do not build the merge commit even though they contain the same functionality, however they do promote the merge commit into PE.", "created": "2020-12-10T13:51:00.000000"}], "components": [], "created": "2020-12-03T16:51:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43634d40"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10801"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o059jv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_94406901_*|*_3_*:*_1_*:*_9845298_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_489873113"}], "description": "(Initial planned release date: 2020-12-15)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-12-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "estimate": "PT0S", "externalId": "16946", "fixedVersions": [], "id": "16946", "issueType": "Task", "key": "SERVER-2926", "labels": [], "originalEstimate": "PT0S", "parent": "24453", "parentSummary": "Puppet Platform 7.1.0 Release - 2020-12-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-12-10T13:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 7.0.1)", "timeSpent": "PT0S", "updated": "2020-12-10T13:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-12-03T16:03:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45490238"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05c80:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This release upgrade JRuby 9k to 9.1.17.0, which fixes a memory leak affecting certain users. (release notes only needed for 5.x, since JRuby 9k is a much higher version in the later streams and didn't suffer from this bug)"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_254227524_*|*_1_*:*_1_*:*_12336_*|*_10007_*:*_1_*:*_1770866_*|*_3_*:*_1_*:*_88804473_*|*_5_*:*_1_*:*_0"}], "description": "We recently had an example of a customer on XXX, which has JRuby 9.1.16.0, experiencing a memory leak that looks like it might be caused by [https://github.com/jruby/jruby/issues/4796.] We should attempt to upgrade JRuby to at least 9.1.17.0 to see if it fixes this issue.\n\nJRuby changelog: https://www.jruby.org/2018/04/23/jruby-9-1-17-0.html", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16945", "fixedVersions": ["SERVER 5.3.17", "SERVER 6.15.0", "SERVER 7.0.1"], "id": "16945", "issueType": "Bug", "key": "SERVER-2925", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-12-07T15:50:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Memory leak in JRuby <9.1.17.0", "timeSpent": "PT0S", "updated": "2021-01-14T16:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T14:55:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10628"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:35:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10629"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:47:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10630"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:27:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10631"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:23:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10711"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:03:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10712"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:15:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10713"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:55:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10714"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:11:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10781"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:31:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10782"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:43:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10783"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T14:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10854"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:39:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10855"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:51:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10856"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:27:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10922"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:19:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10923"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T14:43:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11007"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:15:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11008"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:07:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11009"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:47:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11010"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T14:47:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11088"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:03:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11089"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:55:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11090"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:35:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11091"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T14:51:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11164"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:31:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11165"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:43:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11166"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:23:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11167"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:19:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11245"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:11:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11246"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:51:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11247"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:07:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11313"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T15:59:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11314"}, {"attacher": "623c13dfee1b5a0070293665", "created": "2020-12-16T16:39:00.000000", "name": "icon.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11315"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think you are hitting the fact that a given module directory can _only_ contain valid modules. Each directory is supposed to be a module. So you can't nest one module dir inside another one, because that nested dir is not a valid module. See the third paragraph here [https://puppet.com/docs/puppet/6.19/dirs_modulepath.html] for details. So because of that, it's not valid to have an entry to the modulepath that is a subdirectory of another entry.\n\nI'm not sure why this possible worked before. But it works when you switch the order because puppet searches the modulepath from first to last, and stops looking when it finds what it needs. So in the case without the error, it stops after the first entry ({{modules/hosts}}) and never searches just {{modules}}. If your module was instead in {{modules}}, it would probably fail when it got to searching that.", "created": "2020-12-08T16:49:00.000000"}, {"author": "61d042dc567cb70070a95af9", "body": "Hi,\n\n> I'm not sure why this possible worked before. But it works when you switch the order because puppet searches the modulepath from first to last, and stops looking when it finds what it needs. So in the case without the error, it stops after the first entry (modules/hosts) and never searches just modules. If your module was instead in modules, it would probably fail when it got to searching that.\n >\n\nHere the tree of my directory (partial because it would be a little too long)\n\n\u251c\u2500\u2500 data\n \u2502.. \u251c\u2500\u2500 categories\n \u2502.. \u251c\u2500\u2500 roles\n \u2502.. \u251c\u2500\u2500 status\n \u2502.. \u2514\u2500\u2500 types\n \u251c\u2500\u2500 manifests\n \u2514\u2500\u2500 modules\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 apache\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 apt\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 archive\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 augeas_core\n\n\u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 augeasproviders\n \u00a0\u00a0\u00a0 \u00a0 \u251c\u2500\u2500 augeasproviders_core\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 augeasproviders_shellvar\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 augeasproviders_sysctl\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 concat\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 consul\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 cron_core\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 cronapt\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 custom\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 hosts\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u2502.. \u251c\u2500\u2500 server1\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u2502.. \u251c\u2500\u2500 server2\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u2502.. \u251c\u2500\u2500 server3\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 icinga2\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u251c\u2500\u2500 icingaweb2\n ...\n\nand all modules, apache, apt, archive etc... work fine\n\neach directory server1, server2, server3 etc...are create by either puppet module for the old one or pdk for the new one\n\nSo I'm not sure what you mean by nested modules. For me the directory \u00abhosts\u00bb are just a directory not a module.\n\nAnd inside (for example)\n\nhosts --> server1\n\n\u251c\u2500\u2500 hosts\n \u2502.. \u251c\u2500\u2500 server1\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u251c\u2500\u2500 Gemfile\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0 \u251c\u2500\u2500 README.md\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0 \u251c\u2500\u2500 Rakefile\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0 \u251c\u2500\u2500 manifests\n \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0 \u2502.. \u251c\u2500\u2500 init.pp\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u2502.. \u251c\u2500\u2500 monitoring.pp\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u2502.. \u251c\u2500\u2500 packages.pp\n \u00a0\u00a0\u00a0 \u00a0 \u00a0\u00a0 \u2502.. \u2514\u2500\u2500 reste.pp\n \u00a0\u00a0\u00a0 \u00a0 \u00a0\u00a0 \u251c\u2500\u2500 metadata.json\n \u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 spec\n \u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u2502.. \u251c\u2500\u2500 classes\n \u00a0 \u00a0\u00a0 \u00a0 \u00a0 \u2502.. \u2502.. \u2514\u2500\u2500 init_spec.rb\n \u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u2502.. \u2514\u2500\u2500 spec_helper.rb\n \u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u2514\u2500\u2500 tests\n \u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u2514\u2500\u2500 init.pp\n\nand inside manifests/init.pp I got\n\nclass server1 {\n }\n\nfor me that should be correct.\n\nBy the way If I keep the\n\n\u00a0\u00a0\u00a0 modulepath = modules:modules/hosts\n and move all modules/hosts/* inside modules/ it's working.\n\n\u00a0I'm pretty sure this guys got the same problem \n\nhttps://ask.puppet.com/question/35514/error-500-could-not-find-class-classname/\n\nRegards\n\n\u00a0", "created": "2020-12-09T04:29:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So, for each entry to the module path, in your case \"modules\" and \"modules/hosts\", all of the directories inside each entry need to be valid puppet modules.\n\nBut that's not the case in your example, because \"hosts\" is a directory inside another entry in the module path (\"modules\"), but it is NOT a valid puppet module. It's a directory containing other modules. This is not allowed.\n\nIn the link you found, the solution at the end works because they removed the \"modules\" entry from the modulepath. So now their modulepath is a just a series of directories that all contain only valid modules.\n\nIt seems you've also solved it by moving all of the modules in your inner directory (\"modules/hosts\") up to the outer (\"modules\"), which means everything in your \"modules\" directory is now valid (I think Puppet just ignores the empty \"hosts\" dir), so things work. If you want to group some of your modules in a directory other than \"modules\", that new dir cannot be nested under \"modules\". It has to be next to it, or somewhere else entirely.\n\nI don't know why this changed in Puppet 6. Perhaps [~accountid:63d40628f6e1b543161789a7] has some insight? But I agree it could be documented more clearly.", "created": "2020-12-09T10:03:00.000000"}, {"author": "61d042dc567cb70070a95af9", "body": "Well, I'm not sure I understand the principal. You mean if I got 1000 modules I only can put all of them flat inside \u00abmodules\u00bb ?\n \nIn that case what are the purpose of the variable modulepath ? and how can my config work ? Because currently it works and\nmy modules are inside modules/hosts *and* modules/ and as I say my apache module are in modules/apache and all my module can\nload the apache module.\n\nAnd yes I tested to put everything in modules, it's working, but it's not very convenient.", "created": "2020-12-14T07:38:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "Generally speaking, we recommend as best practices to put module directories at the top level of your control repository (next to the Puppetfile) and then recording them in the environment.conf file.\n\nSee\u00a0https://github.com/puppetlabs/control-repo/blob/production/environment.conf", "created": "2020-12-16T14:38:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z12sor1627251pgg.83 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T14:43:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser l2sor1850068plk.7 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T14:47:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser n10sor1627737pjt.33 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T14:51:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I asked around, and it sounds like generally we recommend putting multiple module directories side-by-side top-level in the control repo. So for example, you could organize as:\n{code}\n...\n/etc/puppetlabs/code/environments/production/manifests\n...\n/etc/puppetlabs/code/environments/production/host_modules\n/etc/puppetlabs/code/environments/production/other_modules\n/etc/puppetlabs/code/environments/production/more_modules\n{code}\nAnd add all of the directories with modules in them to the modulepath for the environment.", "created": "2020-12-16T14:54:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z23sor1656681pgv.73 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T14:55:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i10sor1640175pju.3 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T14:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser fy14sor1658561pjb.12 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:03:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x10sor1658293pga.61 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:07:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x9sor1901561plb.27 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:11:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser b3sor1905425pld.26 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:15:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser d134sor1683005pga.16 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:19:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser bc5sor1890329plb.70 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:23:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k63sor1673368pgd.69 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:27:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser o34sor1716877pgb.49 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:31:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser y17sor1695483pjt.40 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:35:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser e8sor1647041pjw.41 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:39:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 30sor1712475pgo.13 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:43:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 18sor1667339pjk.42 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:47:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser k5sor1694986pjp.1 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:51:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser fz10sor1665137pjb.11 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:55:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 89sor1927888ple.9 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T15:59:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x64sor688476pfc.101 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:03:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z25sor1749133pgu.29 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:07:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser e15sor1591205pfh.85 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:11:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c28sor1523489pfp.92 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:15:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser x10sor1729273pga.61 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:19:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c6sor1976742pll.31 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:23:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser v1sor1977150plp.8 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:27:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser i17sor1696158pjl.31 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:31:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser u1sor1902165plz.68 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:35:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser co14sor1696749pjb.19 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:39:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 24sor1778384pgz.51 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:43:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser m142sor1568317pfd.37 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:47:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser 11sor1975444plg.10 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:51:00.000000"}, {"author": "623c13dfee1b5a0070293665", "body": "** Address not found **\n\nYour message wasn't delivered to jeremy.barlow@puppet.com because the address couldn't be found, or is unable to receive mail.\n\nLearn more here: https://support.google.com/mail/?p=NoSuchUser\n\nThe response was:\n\n550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser c33sor1082197pgl.18 - gsmtp\n\n----- Message truncated -----", "created": "2020-12-16T16:55:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is working as intended. Puppet searches the modulepath in the order the entries are supplied, and breaks when it finds a directory that is not a valid module. It is not recommended to put nested directories on the modulepath, but rather only directories that are on the same level as each other or on unrelated paths, to avoid issues where Puppet tries to parse the nested dir as a module (which it is not) and fails.", "created": "2021-03-17T11:57:00.000000"}], "components": ["Puppet Server"], "created": "2020-12-03T09:42:00.000000", "creator": "61d042dc567cb70070a95af9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@329a39c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05bsg:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_8989427402_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_638682"}], "description": "*Puppet Version: 5.5.22 and 6.19*\n *Puppet Server Version:6.14.1-1stretch*\n *OS Name/Version: Debian/Stretch*\n\nAfter upgrading from puppetserver 5.5 to 6.19 I notice the modulepath are wrongly use.\n\nIf I put in the environment.conf\n{quote}modulepath=modules:modules/OTHER\n{quote}\nthe directory OTHER are not see as modules but somehow it still look inside modules/OTHER but throw error about non autorise name of the class\n\n\u00a0\n\nBut if I put\n{quote}modulepath = modules/OTHER:modules\n{quote}\n\u00a0\n\nEverything work fine\n\n*Desired Behavior:*\n\nMaybe I miss\u00a0 a special point but I don't see any actual reason why the order of those paths put in the modulepath should impact how those paths should be used.\n\n\u00a0\n\n*Actual Behavior:*\n\nIf I put\n{quote}modulepath=modules:modules/hosts\n{quote}\nin\n{quote}environment.conf\n{quote}\nand run puppet I got this error\n{quote}root@servername:~# puppet agent -vt --environment myself\n Info: Using configured environment 'myself'\n Info: Retrieving pluginfacts\n Info: Retrieving plugin\n Info: Retrieving locales\n Info: Loading facts\n Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Unacceptable location. The name 'servername' is unacceptable in file '/etc/puppetlabs/code/environments/myself/modules/hosts/servername/manifests/init.pp' (file: /etc/puppetlabs/code/environments/myself/modules/hosts/servername/manifests/init.pp, line: 28, column: 1) on node servername.fqdn \n Warning: Not using cache on failed catalog \n Error: Could not retrieve catalog; skipping run\n{quote}\n\u00a0\n\nIf I put\n{quote}modulepath = modules/hosts:modules\n{quote}\neverything work fine.\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15718", "fixedVersions": [], "id": "15718", "issueType": "Bug", "key": "SERVER-2924", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61d042dc567cb70070a95af9", "resolution": "Won't Fix", "resolutionDate": "2021-03-17T11:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Weird problem with environment.conf", "timeSpent": "PT0S", "updated": "2021-03-17T11:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "6220db7149c90000701fd082", "body": "An additional note: Code deploy's {{pre_commit_hook_commands}} doesn't look to make any difference in {{generate types}} behavior, in case there were any suspicions.", "created": "2020-11-24T11:36:00.000000"}, {"author": "5e3375e183d74c0e821851f3", "body": "One of the larger impacts of this in PE is that catalog compilation can fail if the type definitions had varying parameters. If it is a common type, all of the agents could be impacted until manual intervention is performed in the {{code-staging)) directory.", "created": "2020-11-24T11:36:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:63d40628f6e1b543161789a7]\u00a0Is a change to the generate types face something Froyo should take on? Or is this something you would look in to?\u00a0", "created": "2020-11-24T12:08:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "(y) to froyo looking at this.\n\nAnother potential issue here is that we don't take into account the version of puppet that was used to generate the files. So if the generator code changes (https://github.com/puppetlabs/puppet/blob/8bf64bb72eb48cca24d7e6e4c99e6b21e497fa86/lib/puppet/generate/models/type/property.rb#L59-L62) or the ERB template changes (https://github.com/puppetlabs/puppet/blob/7.0.0/lib/puppet/generate/templates/type/pcore.erb) then you'd have to run with {{force}} to re-render them.", "created": "2020-11-30T12:14:00.000000"}], "components": ["Puppet Server"], "created": "2020-11-23T18:19:00.000000", "creator": "6220db7149c90000701fd082", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17962eb7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91iu"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "4.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "42102,44362,48502,48623"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Nov/20"}], "description": "*Situation:* You have two resource types of the same name provided by two different modules. You revert your code to remove the newest of the modules, which supplies the newest of the two types.\n\n*Expectation:* {{puppet generate types}} updates to the older of the two types.\n\n*Behavior:* {{puppet generate types}} uses the version with the newest timestamp, potentially causing hard to diagnose catalog errors when your repository's code is correct. The only solution ends up manually removing the newer file through {{/etc/puppetlabs/code-staging/*/production/.resource_types/}} and re-running a code deploy/type regen.\n\n{noformat}\n# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\n...\nInfo: Retrieving locales\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: no parameter named '<name>' (file: /etc/puppetlabs/code/environments/production/modules/<module>/manifests/<class>.pp, line: 18) on Class[<title>] (file: /etc/puppetlabs/code/environments/production/modules/<module>/manifests/<class>.pp, line: 18) on node...\n{noformat}\n\nThe relevant code that determines whether the type needs to be regenerated can be found here: \n [https://github.com/puppetlabs/puppet/blob/7.0.0/lib/puppet/generate/type.rb#L49]\n\n*Proposed Solutions:*\n\n1) Replace the timestamp logic and instead pass along `git diff` information\n\n2) Add the {{--force}} flag to the generate types script to skip the timestamp check: \n [https://github.com/puppetlabs/pe-puppet-server-extensions/blob/2019.8.x/resources/ext/bin/generate-puppet-types.rb#L12-L16]\n\nSuch as from the following behavior: \n [https://github.com/puppetlabs/puppet/blob/main/lib/puppet/face/generate.rb#L40-L43]", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16622", "fixedVersions": [], "id": "16622", "issueType": "Task", "key": "SERVER-2923", "labels": ["001G000001DNBZ1IAP", "jira_escalated"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6220db7149c90000701fd082", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Regenerated puppet types with duplicate names fails to revert changes", "timeSpent": "PT0S", "updated": "2022-06-28T15:06:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Dup of a PDB-4972", "created": "2020-11-21T10:44:00.000000"}, {"author": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "body": "[~accountid:63d40628f6e1b543161789a7]\u00a0- i opened both issues separately so both packages would be tracked, since the \"Requires\" is the same on both RPM packages", "created": "2020-11-21T11:34:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Ah sorry my mistake, thanks for reporting", "created": "2020-11-21T12:20:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]\u00a0Is this feasible?\u00a0", "created": "2020-11-24T12:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think Morgan started looking into this and has a path forward for at least some OSes. We had also talked about defaulting to Java 11 for platforms where we can support allowing both.", "created": "2020-12-02T12:12:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "hey [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab], wondering if you were able to make any progress on this. ", "created": "2021-06-09T11:44:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da] was going to follow up on this.", "created": "2021-06-29T11:44:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] said \"IIRC the potential fix for RHEL platforms will only work for RHEL8 but I want to confirm that's the case since it's been a while since we looked at it\" - she plans to take another work sometime this week.", "created": "2021-06-29T12:31:00.000000"}, {"author": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "body": "What is the potential solution for RHEL8?\u00a0 I'm on RHEL7 and am the originator of the issue.", "created": "2021-06-29T12:46:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03]\u00a0The issue with fixing this for el7 is twofold:\n * OpenJDK is packaged in such a way that it is hard to do something like 'Requires /usr/bin/java' - neither openjdk 8 or 11 provides '/usr/bin/java' since that is managed through alternatives. openjdk 8 provides 'java', but openjdk 11 only provides 'java-11' . This is intentional for openjdk since compatibility between java 8 and java 11 isn't guaranteed [https://unix.stackexchange.com/questions/504706/how-do-i-set-a-rpm-package-to-require-java-8-or-higher-whose-dependencies-can-b]\n * The version of rpm that ships with el7 does not support boolean dependencies. This is a relatively new feature for rpm, and could be used to resolve this issue for el8 [https://rpm.org/user_doc/boolean_dependencies.html]\n\nIt seems like the only way to actually resolve this for el7 would be to switch from requiring java8 to java11 which is not a change we're ready to make at this time.", "created": "2021-07-02T16:19:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03] Since we don't have a solution for el7 right now, we're going to close this ticket, but please let us know if there's anything else we can help you with. Thanks!", "created": "2021-07-06T11:45:00.000000"}], "components": ["Puppet Server"], "created": "2020-11-21T10:15:00.000000", "creator": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e466848"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q04"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Nov/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_3_*:*_12937504274_*|*_6_*:*_2_*:*_5710612_*|*_10005_*:*_1_*:*_6671383404"}], "description": "*Puppet Version: 7.0.0*\n *Puppet Server Version: 7.0.0*\n *OS Name/Version: Redhat 7.9*\n\nthe new puppetserver-7.0.0 redhat packages still \"require\"\u00a0java-1.8.0-openjdk-headless, even though the package supports OpenJDK 11.\n\n*Desired Behavior:* puppetserver-7.0.0 should probably switch to just requiring `/usr/bin/java` since redhat's 1.8.0 and 11 openjdk packages do not have a common provides like `jre-headless`\n\n*Actual Behavior:*\n\n[root@puppet modules]# yum install puppetserver -y\n Resolving Dependencies\n --> Running transaction check\n ---> Package puppetserver.noarch 0:7.0.0-1.el7 will be installed\n --> Processing Dependency: java-1.8.0-openjdk-headless for package: puppetdb-7.0.0-1.el7.noarch\n --> Running transaction check\n ---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.272.b10-1.el7_9 will be installed\n --> Finished Dependency Resolution\n\nDependencies Resolved\n\n===========================================================================================\n Package Arch Version Repository Size\n ===========================================================================================\n Installing:\n puppetserver noarch 7.0.0-1.el7 puppet7 61 M\n Installing for dependencies:\n java-1.8.0-openjdk-headless x86_64 1:1.8.0.272.b10-1.el7_9 rhel7-server-rpms 33 M\n\nTransaction Summary\n ===========================================================================================\n Install 1 Package (+1 Dependent package)", "environment": "Redhat 7.9 x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17533", "fixedVersions": [], "id": "17533", "issueType": "Bug", "key": "SERVER-2922", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "resolution": "Won't Do", "resolutionDate": "2021-07-06T11:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver-7.0.0 redhat7 rpm requires java-1.8.0-openjdk-headless", "timeSpent": "PT0S", "updated": "2022-01-13T00:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5ade3a9f91bc312e6a4a30f3", "body": "Could potentially be related to https://puppet.atlassian.net/browse/PE-30653", "created": "2021-03-05T12:40:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:5b590061a3f8512ca5eb3be7] We suspect this may have been fixed. Do you know of this being an issue on the latest pe releases? ", "created": "2021-03-05T12:42:00.000000"}, {"author": "5b590061a3f8512ca5eb3be7", "body": "Hi, sorry I was out when the last update was made.\u00a0 I'm not aware of other instances of this, so if it's a dupe we could close it.", "created": "2021-03-25T09:20:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Reading through the zendesk ticket again, I think it's unlikely that the duplicate client identifier is the root cause of this issue. That bug should only manifest as new code not being available when a deploy is said to have completed. I think this is something else, and we should probably take some time to try to understand it. There's a chance it's related to environment caching issues we've been looking into for other reasons.", "created": "2021-03-25T10:34:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I verified with Josh that he found this to be related to environment caching issues with versioned dirs, and should be fixed in 2019.8.6. [~accountid:5b590061a3f8512ca5eb3be7] if your customer upgrades and tries this again, and the issues are fixed, please let us know so we can hopefully close this.", "created": "2021-04-02T11:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Fwiw, our internal Ops team was also seeing this bug, and is not seeing it anymore since the recent env caching issues got fixed. I'm going to close this as fixed so I can close out the associated epic. If any customer hits it again after upgrading to 2019.8.6, please reopen this and we will investigate further!", "created": "2021-04-15T11:53:00.000000"}], "components": [], "created": "2020-11-18T15:10:00.000000", "creator": "5b590061a3f8512ca5eb3be7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4313eb7a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694aq2r"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3307455_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1124799327_*|*_10005_*:*_1_*:*_11643708911"}], "description": "*Puppet Version:*\n\n6.17.0\n *Puppet Server Version:*\n\n2019.8.1\n *OS Name/Version:*\n\n**RHEL 7\n\n*Desired Behavior:*\n\nThe various endpoints involved should be atomic and work correctly with versioned deploys.\n\n*Actual Behavior:*\n\nIt seems like there is an issue with lockless deploys that causes some Orchestrator and Puppet server api calls to intermittently fail with a 404:\n{code:java}\n<ip> - - [12/Nov/2020:14:18:25 +0000] \"GET /puppet/v3/tasks/purge_node/init?environment=production HTTP/1.1\" 404 34 \"-\" \"Apache-HttpAsyncClient/4.1.4 (Java/11.0.8-internal)\" 4 - 1\n<ip> - - [12/Nov/2020:19:30:44 +0000] \"GET /puppet/v3/tasks/purge_node/init?environment=production HTTP/1.1\" 200 649 \"-\" \"Apache-HttpAsyncClient/4.1.4 (Java/11.0.8-internal)\" 36 - 33 \u00a0\n{code}\n{code:java}\n<ip> - - [12/Nov/2020:09:23:46 +0000] \"POST /orchestrator/v1/command/task HTTP/1.1\" 404 208 \"-\" \"OrchestratorClient/2.5.0\" 5515 113\n<ip> - - [12/Nov/2020:09:30:25 +0000] \"POST /orchestrator/v1/command/task HTTP/1.1\" 202 104 \"-\" \"Apache-HttpAsyncClient/4.1.4 (Java/11.0.8-internal)\" 5700 151 \u00a0\n{code}\n\u00a0Also, the\u00a0/environment_modules endpoint seems to not correctly find modules in all environments.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17236", "fixedVersions": [], "id": "17236", "issueType": "Bug", "key": "SERVER-2921", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b590061a3f8512ca5eb3be7", "resolution": "Fixed", "resolutionDate": "2021-04-15T11:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Intermittent failure to enumerate modules/tasks when versioned_deploys = true", "timeSpent": "PT0S", "updated": "2021-04-15T11:54:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-11-16T22:12:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50d47f0a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0555s:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10415_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_41168030284"}], "description": "These metrics are apparently confusing and not very useful. See SERVER-2878.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "16606", "fixedVersions": [], "id": "16606", "issueType": "Task", "key": "SERVER-2919", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Won't Do", "resolutionDate": "2022-03-08T09:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove aggregate metrics", "timeSpent": "PT0S", "updated": "2022-03-08T09:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-11-16T12:45:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@579e3f3a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "V4 Catalog Endpoint Improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o054lc:"}], "description": "This epic collects bugs and future work for the {{/puppet/v4/catalog}} endpoint.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14909", "fixedVersions": [], "id": "14909", "issueType": "Epic", "key": "SERVER-2918", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "V4 Catalog Endpoint Improvements", "timeSpent": "PT0S", "updated": "2022-03-08T13:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "When completed and promoted into PE https://github.com/puppetlabs/pe_acceptance_tests/pull/2872 shouldn't be required anymore.", "created": "2020-12-03T15:46:00.000000"}, {"author": "557058:79f2fdd6-baee-43c4-91af-c7e647173c95", "body": "The above pull was reverted ,but we started to see the same problems in CI. Where after an upgrade and CA migration we expect the first puppet run to produce 0 changes.\nBut as we can see from this job [here|https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/view/pe-integration/view/pe-main/job/enterprise_pe-acceptance-tests_integration-system_pe_smoke-upgrade_main/LAYOUT=redhat7-64mcd,LEGACY_AGENT_VERSION=NONE,PLATFORM=NONE,SCM_BRANCH=main,UPGRADE_FROM=2019.8.4,UPGRADE_TO_VERSION=NONE,label=beaker/185/testReport/(root)/acceptance_tests_00_post_install_setup/00_idempotent_rb/], that is still not the case:\n{quote}\n  western-spatter.delivery.puppetlabs.net (western-spatter.delivery.puppetlabs.net) 16:05:04$ puppet agent -t\n    Info: Using configured environment 'production'\n    Info: Retrieving pluginfacts\n    Info: Retrieving plugin\n    Info: Loading facts\n    Info: Caching catalog for western-spatter.delivery.puppetlabs.net\n    Info: Applying configuration version '1607702709'\n    Notice: /Stage[main]/Puppet_enterprise::Profile::Certificate_authority/File[/etc/puppetlabs/puppet/ssl/ca]/owner: owner changed 'root' to 'pe-puppet' (corrective)\n    Notice: /Stage[main]/Puppet_enterprise::Profile::Certificate_authority/File[/etc/puppetlabs/puppet/ssl/ca]/group: group changed 'root' to 'pe-puppet' (corrective)\n    Notice: Applied catalog in 24.69 seconds\n{quote}", "created": "2020-12-11T09:27:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Realized I forgot to bump the cli gem in pe-pse, PRs coming soon.", "created": "2020-12-11T10:54:00.000000"}], "components": [], "created": "2020-11-13T18:24:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36b3d577"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o059jt:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Dec/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_107990457_*|*_1_*:*_1_*:*_90608_*|*_10007_*:*_2_*:*_2012901_*|*_3_*:*_2_*:*_183937803_*|*_5_*:*_2_*:*_72614294_*|*_10004_*:*_1_*:*_5049465_*|*_10006_*:*_1_*:*_1482900431_*|*_10005_*:*_1_*:*_582100602"}], "description": "When we create a symlink from the new cadir to the old cadir, we should ensure that the symlink has the same permissions as the actual cadir. It should be owned by the puppet user and group.\n This includes when we create the symlink via\n * puppetserver itself\n * puppetserver-ca gem (setup, import)\n * puppetserver-ca gem (migrate, including 6.x branch)\n\nNeed to apply correct permissions and ownership for all components.\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14907", "fixedVersions": ["SERVER 6.15.0", "SERVER 7.0.1"], "id": "14907", "issueType": "Improvement", "key": "SERVER-2917", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2020-12-11T23:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ensure symlink to old cadir has same perms as actual cadir", "timeSpent": "PT0S", "updated": "2020-12-11T23:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Closing this in favor of PE-30479.\u00a0\u00a0", "created": "2020-11-13T14:08:00.000000"}], "components": ["Puppet Server"], "created": "2020-11-13T11:51:00.000000", "creator": "5ade3a9f91bc312e6a4a30f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ebf47b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2911"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090t"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Nov/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_8242066_*|*_6_*:*_1_*:*_0"}], "description": "TODO: list symptoms", "epicLinkSummary": "Multithreaded Fixes", "estimate": "PT0S", "externalId": "14905", "fixedVersions": [], "id": "14905", "issueType": "Task", "key": "SERVER-2916", "labels": [], "originalEstimate": "PT0S", "parent": "17234", "parentSummary": "Multithreaded Fixes", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5ade3a9f91bc312e6a4a30f3", "resolution": "Duplicate", "resolutionDate": "2020-11-13T14:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Debug Cust 0 multithreaded environment cache problem", "timeSpent": "PT0S", "updated": "2020-11-13T14:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-11-12T12:51:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9f87255"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:409000009"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_62611_*|*_10007_*:*_1_*:*_86567707_*|*_3_*:*_1_*:*_12375479_*|*_5_*:*_1_*:*_0"}], "description": "We should give the server docs a once-over as part of the work form Platform 7, to see if there are any obvious areas where language can be cleaned up, particularly around removing references to Puppet Server as \"new\" or \"experimental\" or an alternative to a native Ruby master.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15486", "fixedVersions": [], "id": "15486", "issueType": "Improvement", "key": "SERVER-2915", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-11-13T16:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make a pass of Server docs for Platform 7", "timeSpent": "PT0S", "updated": "2020-11-13T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-11-11T17:38:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25f37151"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:40900000c"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_64929142_*|*_1_*:*_1_*:*_11013_*|*_10007_*:*_1_*:*_8291277_*|*_3_*:*_1_*:*_3239157_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_70556371"}], "description": "Update the 'project' query params taken by [the {{/file_content}} and {{/file_metadatas}} endpoints|https://github.com/puppetlabs/puppetserver/blob/ceb5365b741ff9f8675097d8c159d222dc7fff21/src/clj/puppetlabs/services/master/master_core.clj#L997-L1001] to be 'versioned_project' instead. This makes clearer that the data is a combination of project id and ref.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15484", "fixedVersions": ["SERVER 6.15.0", "SERVER 7.0.1"], "id": "15484", "issueType": "Improvement", "key": "SERVER-2914", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2020-11-13T10:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change file serving 'project' query params to 'versioned_project'", "timeSpent": "PT0S", "updated": "2020-12-10T13:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-11-10T10:45:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e612d3d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10593"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04zvk:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Removes many default cipher suites from use when contacting Puppet Server, may break old on very old platforms. Brings FOSS into modern best practices and in alignment with PE."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_23407201_*|*_1_*:*_1_*:*_14348_*|*_10007_*:*_1_*:*_1255667_*|*_3_*:*_2_*:*_873751_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_12460"}], "description": "In Server 6.5 we upgrade to a Jetty version that began warning when weak cipher suites were used. Unfortunately, many of the cipher suites used by default in the 6.x series cause these warnings to be issued. In Puppet 7 we should restrict ourselves to only the cipher suites that Jetty considers strong.", "epicLinkSummary": "Puppet 7 Server", "estimate": "PT0S", "externalId": "16283", "fixedVersions": ["SERVER 7.0.0"], "id": "16283", "issueType": "Improvement", "key": "SERVER-2913", "labels": [], "originalEstimate": "PT0S", "parent": "20311", "parentSummary": "Puppet 7 Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2020-11-10T17:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove deprecated cipher suites", "timeSpent": "PT0S", "updated": "2020-11-10T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T09:46:00.000000"}], "components": [], "created": "2020-11-09T16:18:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71cb8ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04z5k:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Mar/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_590974093_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_41203133787"}], "description": "We added the ability for the server to run trusted external commands, see https://github.com/puppetlabs/puppet/blob/eadd5474c26e7d28d90de00b9d7a7545ac10e55d/lib/puppet/trusted_external.rb#L34. We need to collect metrics for these commands since they are called server-side and can degrade compiler performance. This is similar to adding metrics for automatic class parameter lookups.\n\n/cc [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b], [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "16944", "fixedVersions": [], "id": "16944", "issueType": "Task", "key": "SERVER-2912", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Won't Do", "resolutionDate": "2022-03-08T09:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ensure metrics are collected for trusted external commands", "timeSpent": "PT0S", "updated": "2022-03-08T09:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "attachments": [], "comments": [], "components": [], "created": "2020-11-05T16:09:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39db38e6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-8"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Multithreaded Fixes"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04xh4:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jan/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_62192378416_*|*_6_*:*_1_*:*_0"}], "description": "Bucket for multithreaded bugs and improvements.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17234", "fixedVersions": [], "id": "17234", "issueType": "Epic", "key": "SERVER-2911", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Won't Do", "resolutionDate": "2022-10-26T12:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Multithreaded Fixes", "timeSpent": "PT0S", "updated": "2022-10-26T12:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The PE release this went into is still a ways out because the date got moved, so I'm going to track this task elsewhere so it doesn't clutter the sprint.", "created": "2021-01-19T13:01:00.000000"}], "components": [], "created": "2020-10-30T15:35:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@717b12b2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10762"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:ei"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jan/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2291461_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6990500190"}], "description": "(Initial planned release date: 2021-01-19)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2021-01-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "15717", "fixedVersions": [], "id": "15717", "issueType": "Task", "key": "SERVER-2910", "labels": [], "originalEstimate": "PT0S", "parent": "26668", "parentSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-01-19T13:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.15.0)", "timeSpent": "PT0S", "updated": "2021-01-19T13:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-30T15:34:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@787bc15f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10762"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:e"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2294221_*|*_10007_*:*_1_*:*_2540771_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6652814013"}], "description": "(Initial planned release date: 2021-01-19)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2021-01-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "15259", "fixedVersions": [], "id": "15259", "issueType": "Task", "key": "SERVER-2909", "labels": [], "originalEstimate": "PT0S", "parent": "26668", "parentSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-01-15T15:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.15.0)", "timeSpent": "PT0S", "updated": "2021-01-15T15:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-30T15:34:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3edc979f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10762"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:di"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2223948_*|*_3_*:*_1_*:*_879814_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6652153442"}], "description": "(Initial planned release date: 2021-01-19)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 6.15.0 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2021-01-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "14903", "fixedVersions": [], "id": "14903", "issueType": "Task", "key": "SERVER-2908", "labels": [], "originalEstimate": "PT0S", "parent": "26668", "parentSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-01-15T15:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.15.0)", "timeSpent": "PT0S", "updated": "2021-01-15T15:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-30T15:34:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a950fcd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10762"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:d"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2293933_*|*_10007_*:*_1_*:*_324313931_*|*_3_*:*_2_*:*_1178299_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_6651646614"}], "description": "(Initial planned release date: 2021-01-19)\n\nWrite release notes for the release based on the tickets found in the previous step:\n  *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md].\n\n* Search for tickets with {{fixVersion = \"SERVER 6.15.0\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging @K8med in the opened PR - give her at least two days prior to ship to review.\n* The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n* Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2021-01-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "17532", "fixedVersions": [], "id": "17532", "issueType": "Task", "key": "SERVER-2907", "labels": [], "originalEstimate": "PT0S", "parent": "26668", "parentSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-01-19T09:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 6.15.0)", "timeSpent": "PT0S", "updated": "2021-01-19T09:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-30T15:34:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43f03a37"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10762"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05cfz:ci"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2292295_*|*_3_*:*_1_*:*_773504_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6571319702"}], "description": "(Initial planned release date: 2021-01-19)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2021-01-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "estimate": "PT0S", "externalId": "17232", "fixedVersions": [], "id": "17232", "issueType": "Task", "key": "SERVER-2906", "labels": [], "originalEstimate": "PT0S", "parent": "26668", "parentSummary": "Puppet Platform 6.20.0 Release - 2021-01-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2021-01-14T16:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.15.0)", "timeSpent": "PT0S", "updated": "2021-01-14T16:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-10-30T15:13:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65277a2f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10743"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000n9"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_522971735_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1539140580"}], "description": "(Initial planned release date: 2020-11-17)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-11-18T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "estimate": "PT0S", "externalId": "16282", "fixedVersions": ["None"], "id": "16282", "issueType": "Task", "key": "SERVER-2905", "labels": [], "originalEstimate": "PT0S", "parent": "28693", "parentSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-11-23T11:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 7.0.0)", "timeSpent": "PT0S", "updated": "2020-11-23T11:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-10-30T15:13:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f9d697b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10743"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:409000001r"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1327674_*|*_10007_*:*_1_*:*_63751197_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1072180285"}], "description": "(Initial planned release date: 2020-11-17)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2020-11-06T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "estimate": "PT0S", "externalId": "15716", "fixedVersions": [], "id": "15716", "issueType": "Task", "key": "SERVER-2904", "labels": [], "originalEstimate": "PT0S", "parent": "28693", "parentSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-11-12T18:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 7.0.0)", "timeSpent": "PT0S", "updated": "2020-11-12T18:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Release is here: http://builds.delivery.puppetlabs.net/puppetserver/7.0.0/", "created": "2020-11-16T20:21:00.000000"}], "components": [], "created": "2020-10-30T15:13:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d14e222"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10743"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:409000001i"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Nov/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1155844_*|*_3_*:*_1_*:*_416717665_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1073013864"}], "description": "(Initial planned release date: 2020-11-17)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 7.0.0 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-11-06T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "estimate": "PT0S", "externalId": "15481", "fixedVersions": ["None"], "id": "15481", "issueType": "Task", "key": "SERVER-2903", "labels": [], "originalEstimate": "PT0S", "parent": "28693", "parentSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-11-16T20:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 7.0.0)", "timeSpent": "PT0S", "updated": "2020-11-23T11:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-10-30T15:13:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ff74a35"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10743"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:409000001c"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1237623_*|*_10007_*:*_1_*:*_122478066_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1071808403"}], "description": "(Initial planned release date: 2020-11-17)\n\nWrite release notes for the release based on the tickets found in the previous step:\n  *Note:* for 5.x, these release notes are in the [puppetserver repo|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/release_notes.markdown], but for 6.x and beyond, they live in the [osp docs repo|https://github.com/puppetlabs/osp-docs/blob/latest/server/release_notes.md].\n\n* Search for tickets with {{fixVersion = \"SERVER 7.0.0\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging @K8med in the opened PR - give her at least two days prior to ship to review.\n* The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n* Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2020-11-05T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "estimate": "PT0S", "externalId": "15256", "fixedVersions": [], "id": "15256", "issueType": "Task", "key": "SERVER-2902", "labels": [], "originalEstimate": "PT0S", "parent": "28693", "parentSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-11-13T10:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 7.0.0)", "timeSpent": "PT0S", "updated": "2020-11-13T10:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{code}\npuppetserver (7.0.0_release) :: ruby ../../tools/ticketmatch/ticketmatch.rb     \nEnter Git From Rev: 6.x\nEnter Git To Rev: |master| main\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: |SERVER main| SERVER 7.0.0\n(Optional) Enter JIRA team name:\n\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100 10275    0 10106  100   169  64782   1083 --:--:-- --:--:-- --:--:-- 65445\n\n....snip....\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 7.0.0)\nI18N\nPUP-10386\nPUP-10656\nPUP-10720\nSERVER-2870\nSERVER-2876\n\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n\n----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA\n\n----- Tickets missing release notes -----\nALL ISSUES CONTAIN RELEASE NOTES\n{code}\n\nEverything looks good except for the commit tokens w/o 'SERVER 7.0.0' fix version. The three PUP ticket (PUP-10386, PUP-10656, \nPUP-10720) all were primarily Puppet tickets that ended up having a small follow on commit to enable, etc. They also have the proper 'PUPPET 7.0.0' fix version. So I'm going to ignore them.\n\nSERVER-2870 - Use Puppet APIs appropriately for terminology updates, was partially done for this release. Essentially we updated to the new APIs where using the old APIs triggered a deprecation warning. We will finish the ticket my moving to the other, non-deprecation throwing APIs, as part of 7.x follow work.\n\nSERVER-2876 - Server project file content, was merged into the '6.x' stream and part of it was merged up into the 'main' branch but has not yet been released in any stream.", "created": "2020-11-11T18:08:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We've merged up/cherry picked as needed and are going to use [6f77c8c36b6|https://github.com/puppetlabs/puppetserver/commit/6f77c8c36b639958a138255493fb1e38d93ee61f].", "created": "2020-11-11T22:19:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've built the above commit and it's available at http://builds.delivery.puppetlabs.net/puppetserver/7.0.0.SNAPSHOT.2020.11.12T0821/", "created": "2020-11-12T01:33:00.000000"}], "components": [], "created": "2020-10-30T15:12:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@41dfade6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10743"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000016"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Nov/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1206018_*|*_3_*:*_1_*:*_16685303_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1048110810"}], "description": "(Initial planned release date: 2020-11-17)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-11-05T00:00:00.000000", "epicLinkSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "estimate": "PT0S", "externalId": "14901", "fixedVersions": [], "id": "14901", "issueType": "Task", "key": "SERVER-2901", "labels": [], "originalEstimate": "PT0S", "parent": "28693", "parentSummary": "Puppet Platform 7.0.0 Release - 2020-11-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-11-11T22:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 7.0.0)", "timeSpent": "PT0S", "updated": "2020-11-12T01:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5ade3a9f91bc312e6a4a30f3", "body": "Given this is not really causing any issues (other than some added complexity in already-written/working code) the risk/reward for changing this now is not high enough to do for puppet8. Also, puppet config print has performance issues that are not trivial.\u00a0", "created": "2023-01-12T12:32:00.000000"}], "components": ["Puppet Server"], "created": "2020-10-29T12:01:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@15ddc217"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3165"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:9"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Dec/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5247_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_69557444093"}], "description": "We've deprecated the old location for the cadir (within in the ssldir) and now by default create it in a new location, but symlink back to the old location for users custom scripts that might not be using {{puppet config print cadir}}. In Puppet 8, we should finally stop creating the symlink to the old location. We should also remove the backwards compatibility mechanism in computing the cadir location. These should be done where appropriate (Puppet, Puppet Server, and the CA CLI tool). This is place holder ticket for that work until we get closer to Puppet 8.", "epicLinkSummary": "Puppet Server 8", "estimate": "PT0S", "externalId": "17229", "fixedVersions": ["SERVER 8.0.0"], "id": "17229", "issueType": "Task", "key": "SERVER-2900", "labels": [], "originalEstimate": "PT0S", "parent": "16890", "parentSummary": "Puppet Server 8", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Fix", "resolutionDate": "2023-01-12T12:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove cadir backwards compatability Puppet 8", "timeSpent": "PT0S", "updated": "2023-01-12T12:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:27665577-1ade-4994-ab15-2c591e26b497", "body": "This JIRA was my rubberduck, I see that a restart is triggered on the puppetserver service. The Error message, that ask to report this to the mainatainers still stand, though.", "created": "2020-10-29T04:47:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for the report, we have another ticket already for this issue, SERVER-2761. These warnings can be safely ignore, they're a byproduct of our needing support both Java 8 and Java 11. We hope to get them cleaned up at some point when third-party libraries update to avoid the problematic code.", "created": "2020-11-05T15:50:00.000000"}], "components": [], "created": "2020-10-29T04:43:00.000000", "creator": "557058:27665577-1ade-4994-ab15-2c591e26b497", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c1be822"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04s0o:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Nov/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_648439664_*|*_6_*:*_1_*:*_0"}], "description": "The puppetserver says the following in the log:\nOct 29 11:32:00 osl-puppet01 systemd[1]: Starting puppetserver Service...\nOct 29 11:32:11 osl-puppet01 puppetserver[14649]: WARNING: An illegal reflective access operation has occurred\nOct 29 11:32:11 osl-puppet01 puppetserver[14649]: WARNING: Illegal reflective access by dynapath.defaults$fn__16000$fn__16001 (file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar) to method java.net.URLClassLoader.addURL(java.net.URL)\nOct 29 11:32:11 osl-puppet01 puppetserver[14649]: WARNING: Please consider reporting this to the maintainers of dynapath.defaults$fn__16000$fn__16001\nOct 29 11:32:11 osl-puppet01 puppetserver[14649]: WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\nOct 29 11:32:11 osl-puppet01 puppetserver[14649]: WARNING: All illegal access operations will be denied in a future release\nOct 29 11:32:38 osl-puppet01 systemd[1]: Started puppetserver Service.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16605", "fixedVersions": [], "id": "16605", "issueType": "Bug", "key": "SERVER-2899", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:27665577-1ade-4994-ab15-2c591e26b497", "resolution": "Duplicate", "resolutionDate": "2020-11-05T15:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver logs Illegal reflective access", "timeSpent": "PT0S", "updated": "2020-11-05T15:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Those paths don't look correct, unless you've reconfigured your container. Puppet's ssldir should be at {{/etc/puppetlabs/puppet/ssl}} and the host cert bundle should be at {{/etc/puppetlabs/puppet/ssl/certs/<hostname>.pem}} and the CA cert at {{/etc/puppetlabs/puppet/ssl/ca/ca_crt.pem}}. Maybe that will help?", "created": "2020-10-27T12:20:00.000000"}, {"author": "623a4d3ba9575800695a006d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]I think there is some Information missing: The VCenter Certificate is not signed by our Puppet CA. It is signed by another intermediate CA of our Corporate PKI, of which our Puppet CA is another intermediate.\n\nAs far as I understand the path you wrote is for the Puppet CA, isn't it ? Or is it possible to add another CA Certificate to trust it ?", "created": "2020-10-28T00:15:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm sorry, you're right. However, I still don't recognize those paths. Are those paths you chose? Did you configure anything to point to them? I don't think anything placed there would be picked up automatically.", "created": "2020-10-28T09:36:00.000000"}, {"author": "623a4d3ba9575800695a006d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] In my test I found that the puppet-ca-bundle is stored under `{{/opt/puppetlabs/puppet/ssl/cert.pem}}`. On the agent we added your certificates to this bundle to use the certificates in providers which open connections to https services. Also the included ruby uses this bundle when installing gems.", "created": "2020-10-28T09:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Ah, I see. I was asking one of our Docker folks [~accountid:557058:263afade-3e4f-46c6-b50a-cf2982192562] about whether he recognized the {{/opt}} paths, and he mentioned to me that the server container still uses {{/etc}} for files like that. Others (notably the PE versions of the container) have been migrated to {{/opt}}. So while that path may have been correct for the agent's cert bundle, it is not respected by the server. And I think you said you're trying to write a custom function, right? That will be executed by the server, not the agent.\n\nSomething to try: on your server, ask Puppet where it thinks the relevant files live with:\n{{puppet config print hostcert --section master}}\n{{puppet config print localcacert --section master}}\nI _think_ those are the files that will be used to make HTTP requests from Puppet functions.\n\nAs a general note, we may be able to help more in a week or two, we're in the process of prepping for a couple different releases internally right now, so responses might be a bit delayed. Apologies in advance.", "created": "2020-10-30T09:36:00.000000"}, {"author": "623a4d3ba9575800695a006d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]: Thanks for your reply. The `/etc` path is as far as I understand for the Puppet Certificates (from the PuppetCA, which is in our Case an intermediate CA of our root). In the `localcacert` file the PuppetCA root cert is included. Is there any chance to add an additional CA cert to the truststore ? Not for agent-server communication, only for server to external service communication.\n\n\u00a0", "created": "2020-11-09T03:25:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:623a4d3ba9575800695a006d] I think the feature you're looking for is SERVER-1543, which would allow server extensions (such as report processors, functions, hiera backends) to make TLS connections to non-puppet infrastructure.", "created": "2020-11-09T10:50:00.000000"}, {"author": "623a4d3ba9575800695a006d", "body": "[~accountid:63d40628f6e1b543161789a7] You are right, that's what I'm looking for. Do you have any information when this is planed to be released ?", "created": "2020-11-10T00:05:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I don't think it's been explicitly prioritized, though I think the work that was previously blocking it has been done. I'll look into getting an estimate for you.", "created": "2020-11-16T12:29:00.000000"}, {"author": "623a4d3ba9575800695a006d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]: Do you have some news about this ? Did you get an estimate ?", "created": "2021-01-14T03:35:00.000000"}], "components": ["Puppet Server"], "created": "2020-10-27T07:23:00.000000", "creator": "623a4d3ba9575800695a006d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@634bb2c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:k"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Oct/20"}], "description": "*Puppet Version: 6.18.0*\n *Puppet Server Version: 6.12.1*\n *OS Name/Version: Puppetserver Docker Container*\n\nI'm currently building a custom function using the [https://github.com/vmware/vsphere-automation-sdk-ruby/] gem.\n\nMy Problem is that I can not connect to the VCenter because of the certificate verification failing.\u00a0 I already added our certificates to the {{/opt/puppetlabs/puppet/ssl/cert.pem}} and {{/opt/puppetlabs/puppet/ssl/puppet-cacerts}} .\n\nAlso when executing a script to connect to vcenter it fails:\n{code:java}\nroot@puppet:/etc/puppetlabs/code# /opt/puppetlabs/bin/puppetserver ruby vsphere_automation.rb\nOpenSSL::SSL::SSLError: certificate verify failed\n                connect at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:1002\n               do_start at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:924\n                  start at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:913\n                request at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:1465\n               call_api at /opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/vsphere-automation-runtime-0.4.7/lib/vsphere-automation-runtime/api_client.rb:71                                                                                                                                  \n  create_with_http_info at /opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/vsphere-automation-cis-0.4.7/lib/vsphere-automation-cis/api/session_api.rb:59                                                                                                                                     \n                 create at /opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/vsphere-automation-cis-0.4.7/lib/vsphere-automation-cis/api/session_api.rb:24                                                                                                                                     \n                 <main> at vsphere_automation.rb:74\n\n{code}\n*Desired Behavior:*\n\nPuppetserver should respect the certificates inside the Puppet CA Bundle + Certificates added to the bundle\n\n*Actual Behavior:*\n\n\u00a0\n\nPuppetserver ignores the Certificates.\n{code:java}\n2020-10-27 13:21:18,567 ERROR [puppetserver] Puppet Server Error: Evaluation Error: Error while evaluating a Function Call, get_vms_by_tag: certificate verify failed (file: /etc/puppetlabs/code/environments/test/modules/test/manifests/init.pp, line: 76, column: 11) on node test.foo.bar                                                                                                \n/etc/puppetlabs/code/environments/test/modules/vsphere_tag/lib/puppet/functions/get_vms_by_tag.rb:102:in `get_vms_by_tag'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:60:in `invoke'                          \n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:43:in `block in dispatch'\norg/jruby/RubyKernel.java:1189:in `catch'                                                           \n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:42:in `dispatch'                          \n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:46:in `block in call'\norg/jruby/RubyKernel.java:1189:in `catch'                                                     \n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:45:in `call'                       \n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/puppet_stack.rb:42:in `stack'                    \n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:305:in `block in call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'                      \n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:303:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:976:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:945:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'                  \n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:370:in `eval_AssignmentExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:94:in `visit_this_1'            \n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'              \n[...]\n\n{code}", "environment": "Official Puppetserver Docker Container with added custom CA certs", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15252", "fixedVersions": [], "id": "15252", "issueType": "Bug", "key": "SERVER-2898", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4d3ba9575800695a006d", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA Certificates are not used by Puppetserver", "timeSpent": "PT0S", "updated": "2022-03-09T09:41:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "PR for this was filed under the linked PE ticket https://github.com/puppetlabs/puppetserver/pull/2433", "created": "2020-10-23T10:59:00.000000"}], "components": [], "created": "2020-10-23T10:57:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@297ff807"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04opc:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The CA bulk clean endpoint will now log each certname revoked."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_361459596_*|*_1_*:*_1_*:*_9937_*|*_5_*:*_1_*:*_0"}], "description": "The API endpoint for revoking a single certificate logs the certname that was revoked, but new bulk API does not. This makes it a lot harder to keep track of what got revoked when. Originally we did not add logging of the certnames because of the potential for very long log entries, but the benefits of traceability here outweigh that negative. We should add logging for each certname revoked.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15249", "fixedVersions": ["SERVER 5.3.16", "SERVER 6.14.1"], "id": "15249", "issueType": "Improvement", "key": "SERVER-2897", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-10-27T15:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Log all certnames cleaned by the `/puppet-ca/v1/clean` endpoint", "timeSpent": "PT0S", "updated": "2020-10-27T15:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-10-15T17:28:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fa80642"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10593"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:409000003"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Deprecation"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Beginning in Puppet 7, the default value for the `cadir` setting will be located in the puppetserver conf directory, specifically at /etc/puppetlabs/puppetserver/ca. Previously, the default location was inside puppet's own ssldir. This change will make it safer to delete the puppet's own `ssldir` without accidentally deleting your CA certificates.\n\nThe puppetserver ca cli provides a `migrate` command to move the ca directory from the puppet conf to the puppetserver conf. It will leave behind a symlink on the old ca location, pointing to the new location at /etc/puppetlabs/puppetserver/ca. This link will provide backwards compatibility for tools still expecting the cadir to exist in the old location. In a future version of puppet, the cadir setting will be removed entirely. "}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_588404868_*|*_1_*:*_1_*:*_950185256_*|*_10007_*:*_1_*:*_9748068_*|*_3_*:*_1_*:*_417859172_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_172096160"}], "description": "In Puppet 7, we are working to migrate users to a new CA dir location outside of the SSL dir. We want to seamlessly support both halves of this migration, so when computing the settings for the CA CLI tool, the {{cadir}} should be the following:\n * If the setting is configured to something custom, use that (if it is inside the ssldir warn the with the same message as in Puppet, see PUP-10720).\n * If the files are in the old location (/etc/puppetlabs/puppet/ssl/ca), use that but warn with the same messages as in Puppet, see PUP-10720\n * if they're in the new location (/etc/puppetlabs/puppetserver/ca), use that\n * if they're in neither location (i.e. we are boostrapping), use the new one.\n\nThis logic only applies to Puppet 7, so as part of this work, branch the gem to create a 2.0 version for use with Puppet 7+ only.\n\n\u00a0\n\nEnsure there are meaningful integration tests.", "epicLinkSummary": "Puppet 7 Server", "estimate": "PT0S", "externalId": "14899", "fixedVersions": ["SERVER 7.0.0"], "id": "14899", "issueType": "Task", "key": "SERVER-2896", "labels": [], "originalEstimate": "PT0S", "parent": "20311", "parentSummary": "Puppet 7 Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-11-09T10:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update CA CLI settings init to compute CA dir location", "timeSpent": "PT0S", "updated": "2020-11-09T10:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-10-13T17:29:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c1b98bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10593"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:409000004"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See SERVER-2896 for release notes."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_406669756_*|*_1_*:*_2_*:*_523326536_*|*_10007_*:*_1_*:*_99871703_*|*_3_*:*_1_*:*_358023751_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_922940869_*|*_10005_*:*_1_*:*_4198"}], "description": "The puppetserver ca should\u00a0create CA files in the new location ({{/etc/puppetlabs/puppetserver/ca}}) and create a symlink from the old location to the new spot. This includes:\n* {{puppetserver ca setup}} - https://github.com/puppetlabs/puppetserver-ca-cli/blob/6c529f3afe782ad98a7d88f1147e9ec19fcf3d62/lib/puppetserver/ca/action/setup.rb#L74\n* {{puppetserver ca import}} - https://github.com/puppetlabs/puppetserver-ca-cli/blob/6c529f3afe782ad98a7d88f1147e9ec19fcf3d62/lib/puppetserver/ca/action/import.rb#L72\n\nSERVER-2896 should ensure that the {{cadir}} setting has the correct value. This ticket just includes symlinking to the old cadir.\n\nSee SERVER-2760 for analogous change to puppetserver's internal CA init code.", "epicLinkSummary": "Puppet 7 Server", "estimate": "PT0S", "externalId": "14898", "fixedVersions": ["SERVER 7.0.0"], "id": "14898", "issueType": "Task", "key": "SERVER-2895", "labels": [], "originalEstimate": "PT0S", "parent": "20311", "parentSummary": "Puppet 7 Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-11-09T10:23:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update `puppetserver ca setup` to create CA files in new location w/ symlink", "timeSpent": "PT0S", "updated": "2020-11-13T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-10-13T17:20:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fd5b1cb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10593"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkbbwzs"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Adds a new CLI command, `puppetserver ca migrate` that will move the contents of the CA dir from its current location to `/etc/puppetlabs/puppetserver/ca`. It also creates a symlink at the old location, pointing to the new directory. After running this command, it will be harder to accidentally delete the CA dir as part of cleaning up the client-side ssldir."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_155233320_*|*_1_*:*_1_*:*_70319800_*|*_10007_*:*_1_*:*_333151237_*|*_3_*:*_1_*:*_709464142_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_84311313"}], "description": "In order to make it harder for users to delete their CA directories, we want to create a new {{puppetserver ca}} CLI command that:\n * moves their CA files to the new location ({{/etc/puppetlabs/puppetserver/ca}}) from the current configured location.\n * Creates a symlink from the old location to the new location\n * Errors informatively if the files are already in the new location\n * Does not allow the user to choose the destination.\n\nThis command should be usable in Puppet 6, to help people migrate before upgrade to avoid warnings.", "epicLinkSummary": "Puppet 7 Server", "estimate": "PT0S", "externalId": "17531", "fixedVersions": ["SERVER 6.15.0", "SERVER 7.0.0"], "id": "17531", "issueType": "Task", "key": "SERVER-2894", "labels": [], "originalEstimate": "PT0S", "parent": "20311", "parentSummary": "Puppet 7 Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-10-29T09:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create `puppetserver ca migrate` command", "timeSpent": "PT0S", "updated": "2021-02-19T14:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-10-09T10:20:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@93cd5f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:9z"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}], "description": "Currently we have some promotion automation that triggers on a release of clj-parent to promote the new version automatically into puppetserver. This lives in CJC, and is not easily configurable across branches and does not scale well to additional projects.\n\nWe should look into moving this to a Jenkinsfile in the clj-parent repo, where we can take advantage of per-branch configuration and the more straightforward scripting available in that format.\n\nJenkinsfile docs: https://www.jenkins.io/doc/book/pipeline/jenkinsfile/\n\n*Alternatively*, maybe a better model is a poll-style job for each consuming repo, similar to what we do to update the puppet submodule pin in Puppet Server. Each repo that wants auto-updates for clj-parent polls for a new tag once a day (or however often) and pulls it in after running the repo's tests.\n\n*Outcome*\nProof of concept. Focus on an implementation for a single repo. (perhaps start with trying this for pe-pse) ", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15479", "fixedVersions": [], "id": "15479", "issueType": "Improvement", "key": "SERVER-2893", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move clj-parent promotion to Jenkinsfile", "timeSpent": "PT0S", "updated": "2022-03-09T09:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-07T16:36:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@16b94885"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10700"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04ffs:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1223_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3178909296"}], "description": "(Initial planned release date: 2020-10-20)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-10-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "15476", "fixedVersions": [], "id": "15476", "issueType": "Task", "key": "SERVER-2892", "labels": [], "originalEstimate": "PT0S", "parent": "25512", "parentSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-11-13T10:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.14.0)", "timeSpent": "PT0S", "updated": "2020-11-13T10:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-07T16:36:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3647e48d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10700"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04ffc:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1149_*|*_10007_*:*_1_*:*_9915282_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_752436311"}], "description": "(Initial planned release date: 2020-10-20)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2020-10-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "14897", "fixedVersions": [], "id": "14897", "issueType": "Task", "key": "SERVER-2891", "labels": [], "originalEstimate": "PT0S", "parent": "25512", "parentSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-10-16T12:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.14.0)", "timeSpent": "PT0S", "updated": "2020-10-16T12:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-07T16:36:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@446e4067"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10700"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04ff4:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1111_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_752306302"}], "description": "(Initial planned release date: 2020-10-20)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 6.14.0 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-10-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "17530", "fixedVersions": [], "id": "17530", "issueType": "Task", "key": "SERVER-2890", "labels": [], "originalEstimate": "PT0S", "parent": "25512", "parentSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-10-16T09:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.14.0)", "timeSpent": "PT0S", "updated": "2020-10-16T11:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "PR: https://github.com/puppetlabs/osp-docs/pull/72", "created": "2020-10-19T14:24:00.000000"}], "components": [], "created": "2020-10-07T16:36:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5074caa0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10700"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04few:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Oct/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1171_*|*_10007_*:*_1_*:*_80716295_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1028831797"}], "description": "(Initial planned release date: 2020-10-20)\n\nWrite [release notes|https://github.com/puppetlabs/puppetserver/blob/master/documentation/release_notes.markdown] for the release based on the tickets found in the previous step:\n* Search for tickets with {{fixVersion = \"SERVER 6.14.0\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging @K8med in the opened PR - give her at least two days prior to ship to review.\n* The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n* Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2020-10-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "17227", "fixedVersions": [], "id": "17227", "issueType": "Task", "key": "SERVER-2889", "labels": [], "originalEstimate": "PT0S", "parent": "25512", "parentSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-10-20T12:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 6.14.0)", "timeSpent": "PT0S", "updated": "2020-10-20T12:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Everything looks good here, tickets are in order and the SNAPSHOT version is correct.", "created": "2020-10-14T13:03:00.000000"}], "components": [], "created": "2020-10-07T16:36:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@447ced8d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10700"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04feo:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Oct/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1129_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_592031234"}], "description": "(Initial planned release date: 2020-10-20)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-10-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "16943", "fixedVersions": [], "id": "16943", "issueType": "Task", "key": "SERVER-2888", "labels": [], "originalEstimate": "PT0S", "parent": "25512", "parentSummary": "Puppet Platform 6.19.0 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-10-14T13:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.14.0)", "timeSpent": "PT0S", "updated": "2020-10-16T11:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Put up [https://github.com/puppetlabs/winston/pull/348] to add story points to our release tickets.", "created": "2020-10-16T12:46:00.000000"}], "components": [], "created": "2020-10-07T16:34:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a078d9d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10690"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:40900000g"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Oct/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1371_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3179066573"}], "description": "(Initial planned release date: 2020-10-20)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-10-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "16942", "fixedVersions": [], "id": "16942", "issueType": "Task", "key": "SERVER-2887", "labels": [], "originalEstimate": "PT0S", "parent": "29758", "parentSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-11-13T10:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 5.3.14)", "timeSpent": "PT0S", "updated": "2020-11-13T10:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-07T16:33:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@326bed08"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10690"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04f7k:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1194_*|*_10007_*:*_1_*:*_467749_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_64493083"}], "description": "(Initial planned release date: 2020-10-20)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2020-10-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "16281", "fixedVersions": [], "id": "16281", "issueType": "Task", "key": "SERVER-2886", "labels": [], "originalEstimate": "PT0S", "parent": "29758", "parentSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-10-08T10:36:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 5.3.15)", "timeSpent": "PT0S", "updated": "2020-10-09T09:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-07T16:33:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c96874c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10690"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04f7c:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1036_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_64489603"}], "description": "(Initial planned release date: 2020-10-20)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 5.3.14 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-10-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "16058", "fixedVersions": [], "id": "16058", "issueType": "Task", "key": "SERVER-2885", "labels": [], "originalEstimate": "PT0S", "parent": "29758", "parentSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-10-08T10:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.14)", "timeSpent": "PT0S", "updated": "2020-10-09T09:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-07T16:33:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f7a22fb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10690"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04f74:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1189_*|*_10007_*:*_2_*:*_118088975_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_929975855_*|*_10006_*:*_1_*:*_61657402"}], "description": "(Initial planned release date: 2020-10-20)\n\nWrite [release notes|https://github.com/puppetlabs/puppetserver/blob/master/documentation/release_notes.markdown] for the release based on the tickets found in the previous step:\n * Search for tickets with {{fixVersion = \"SERVER 5.3.15\"}}.\n * Check each ticket's DOCS tab for the necessary release notes.\n * Request review from the docs team by pinging @K8med in the opened PR - give her at least two days prior to ship to review.\n * The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n * Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band, ask in the #prod-docs Slack channel.", "duedate": "2020-10-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "15714", "fixedVersions": [], "id": "15714", "issueType": "Task", "key": "SERVER-2884", "labels": [], "originalEstimate": "PT0S", "parent": "29758", "parentSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-10-20T12:49:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 5.3.15)", "timeSpent": "PT0S", "updated": "2020-10-20T12:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-10-07T16:33:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9973dec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10690"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o04f6w:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1260_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_58794302"}], "description": "(Initial planned release date: 2020-10-20)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-10-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "estimate": "PT0S", "externalId": "15432", "fixedVersions": [], "id": "15432", "issueType": "Task", "key": "SERVER-2883", "labels": [], "originalEstimate": "PT0S", "parent": "29758", "parentSummary": "Puppet Platform 5.5.22 Release - 2020-10-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2020-10-08T08:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.15)", "timeSpent": "PT0S", "updated": "2020-10-09T09:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "ping Former user", "created": "2020-09-21T14:08:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:101ef854-ea25-4a6e-8fd8-b335c7b12963", "body": "Thanks for opening this ticket [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b].\n\nIndeed, I've discussed with the cert-manager developers about this recently, and while they can (and probably will) make it so that we can remove the key usage requests in CSR produced by cert-manager, this will be a mandatory option to use with the Puppet CA issuer unless the Puppet CA accepts these extensions.\n\nSo, I guess it would be great to make it possible for the Puppet CA to accept extra extensions.\n\nFor the record, this is what happens when I try to sign the CSR issued by cert-manager (HTTP reply using curl):\n\n\u00a0\n{code:java}\n\u200bFound\u00a0extensions\u00a0that\u00a0are\u00a0not\u00a0permitted:\u00a02.5.29.15,\u00a02.5.29.37\n{code}\n\u00a0", "created": "2020-09-21T16:37:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Usually the CA/issuer decides which keyUsages and\u00a0extendedKeyUsages extensions to include in the *certificate* rather than the subject that generates the *request* (CSR). Otherwise the subject might be able to get the CA to issue a cert for purposes other than what the CA intended. For example, if the CA only issues certs with extendedKeyUsage {{id-kp-serverAuth}} and {{id-kp-ClientAuth}}, then the subject might be able to slip through a CSR containing the {{id-kp-codeSigning}} extension. If so, then the subject could use the private key/cert to sign code in a way that other clients, etc would accept.", "created": "2020-09-28T13:48:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] thoughts on this?", "created": "2020-10-27T12:29:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I think Josh is right that the CA usually controls the extensions, though I think it'd also be fine for us to add more to the extensions we allow in the CSR. For this exact use case i think folks have already solved the workflow they were hoping for: https://github.com/camptocamp/puppetca-issuer", "created": "2020-10-27T16:26:00.000000"}], "components": ["Certificate Authority"], "created": "2020-09-21T14:07:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64f9927b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o045ls:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3897919854_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_42156030628"}], "description": "I ran into the [Puppet CA issuer|https://github.com/camptocamp/puppetca-issuer] project the other day and it's pretty cool. It's basically the glue layer that lets [cert-manager|https://cert-manager.io/] issue certificates for your k8s infrastructure from the Puppet CA.\n\nEspecially in OSP, it's super common for ops to use Puppet for their infra apps. This could be a valuable cloud integration.\n\nThe problem is that the current cert-manager uses the KeyUsage and ExtKeyUsage CSR extensions and the Puppet CA rejects those. Is there a reason we can't accept them?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15429", "fixedVersions": [], "id": "15429", "issueType": "Improvement", "key": "SERVER-2881", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "resolution": "Won't Do", "resolutionDate": "2022-03-08T13:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The CA should accept KeyUsage and ExtKeyUsage extensions", "timeSpent": "PT0S", "updated": "2022-03-08T13:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] have you seen this? Is this a general problem?", "created": "2020-10-27T12:31:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I think this is expected behavior. The Puppet timers are arranged in a tree structure where branch nodes, like {{compiler}}, are updated with timings generated by every node under them in the hierarchy:\n\nhttps://github.com/puppetlabs/puppet/blob/6.19.1/lib/puppet/util/profiler/aggregate.rb#L28-L38\n\nTherefore, leaf nodes like {{compiler.compile}} should be queried to find the time for a specific operation like catalog compilation. Querying {{compiler}} will get you an aggregate that also includes {{compiler.find_node}}, {{compiler.find_facts}}, etc. , etc.\n\nPersonally, I don't find the aggregate metrics that useful (or accurate). It's better to do these sorts of roll-ups in a time series database like InfluxDB or Prometheus that gives you control over which measurements are aggregated. I would be in favor of dropping these aggregates if they are causing confusion.", "created": "2020-10-27T15:59:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We should file another ticket to remove these aggregate metrics then, I think. I'm going to close this, since it's working as expected.", "created": "2020-11-05T15:55:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Filed https://puppet.atlassian.net/browse/SERVER-2919 for removing the aggregate metrics.", "created": "2020-11-16T22:13:00.000000"}], "components": ["API"], "created": "2020-09-14T08:49:00.000000", "creator": "557058:1a5cd6d8-54ba-4a8b-9e14-caf12e5b1b80", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2785d446"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o040bk:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Oct/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4521966686_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:*\u00a06.16.0 /\u00a0 5.5.20\n *Puppet Server Version:*\u00a06.12.0 /\u00a05.3.11\n *OS Name/Version:* CentOS 7\n\nWe're building Grafana dashboard based on Puppetserver Metrica API v2 (jolokia).\n\npuppetserver:name=puppetlabs.localhost.compiler.compile metric value is always higher than\u00a0puppetserver:name=puppetlabs.localhost.compiler metric value.\n\n*Desired Behavior:*\nI know which metric is full compilation time and which is just catalog compilation part.\n\n*Actual Behavior:*\n\nReferring to [documentation|https://puppet.com/docs/puppetserver/6.3/puppet_server_metrics.html#statistical-metrics] \n\n{quote}\npuppetlabs.<MASTER-HOSTNAME>.compiler: The time spent compiling catalogs. This metric represents the sum of the compiler.compile, static_compile, find_facts, and find_node fields.\n{quote}\nbut in my case compiler.compile is always higher than just compiler and couldn't be a subset of it.\n\n\u00a0{code}\n# curl -sk https://127.0.0.1:8140/metrics/v2/read/puppetserver:name=puppetlabs.localhost.compiler  | jq\n{\n  \"request\": {\n    \"mbean\": \"puppetserver:name=puppetlabs.localhost.compiler\",\n    \"type\": \"read\"\n  },\n  \"value\": {\n    \"StdDev\": 1611.637967925645,\n    \"Mean\": 233.36386353321265,\n    \"75thPercentile\": 15,\n    \"98thPercentile\": 3008,\n    \"RateUnit\": \"events/second\",\n    \"95thPercentile\": 487,\n    \"99thPercentile\": 6280,\n    \"Max\": 31936,\n    \"Count\": 105378640,\n    \"FiveMinuteRate\": 280.2831826603821,\n    \"50thPercentile\": 3,\n    \"MeanRate\": 247.01315875890023,\n    \"Min\": 0,\n    \"OneMinuteRate\": 222.1942582565626,\n    \"DurationUnit\": \"milliseconds\",\n    \"999thPercentile\": 31936,\n    \"FifteenMinuteRate\": 268.26695091062504\n  },\n  \"timestamp\": 1600094472,\n  \"status\": 200\n}\n{code}\n{code}\n# curl -sk https://127.0.0.1:8140/metrics/v2/read/puppetserver:name=puppetlabs.localhost.compiler.compile  | jq\n{\n  \"request\": {\n    \"mbean\": \"puppetserver:name=puppetlabs.localhost.compiler.compile\",\n    \"type\": \"read\"\n  },\n  \"value\": {\n    \"StdDev\": 7496.078949260645,\n    \"Mean\": 21326.983928565518,\n    \"75thPercentile\": 27335,\n    \"98thPercentile\": 40781,\n    \"RateUnit\": \"events/second\",\n    \"95thPercentile\": 33648,\n    \"99thPercentile\": 40781,\n    \"Max\": 72540,\n    \"Count\": 174591,\n    \"FiveMinuteRate\": 0.4633366522408939,\n    \"50thPercentile\": 18941,\n    \"MeanRate\": 0.4093234786658156,\n    \"Min\": 7898,\n    \"OneMinuteRate\": 0.3611410959643604,\n    \"DurationUnit\": \"milliseconds\",\n    \"999thPercentile\": 40781,\n    \"FifteenMinuteRate\": 0.44517883102519196\n  },\n  \"timestamp\": 1600094478,\n  \"status\": 200\n}\n{code}\n\n\u00a0", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "16056", "fixedVersions": [], "id": "16056", "issueType": "Bug", "key": "SERVER-2878", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:1a5cd6d8-54ba-4a8b-9e14-caf12e5b1b80", "resolution": "Won't Do", "resolutionDate": "2020-11-05T15:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver compiler metrics inconsistency", "timeSpent": "PT0S", "updated": "2020-11-16T22:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The {{ensure_resource}} function is provided in stdlib and it will raise a duplicate resource error if the same resource is referenced with different parameters. Note the source parameters are different (client vs server):\n\nsource => \"puppet:///modules/${module_name}/etc/openvpn/certificates/client/${basename($openvpnConf['cert'])}\",\nsource => \"puppet:///modules/${module_name}/etc/openvpn/certificates/server/${basename($openvpnConf['cert'])}\",", "created": "2020-09-09T10:31:00.000000"}], "components": ["Puppet Server"], "created": "2020-09-09T02:39:00.000000", "creator": "62438586fd5e4500704327b2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6fb5cd5c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03y7k:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Sep/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_28381882_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.17*\n *Puppet Server Version: 6.12*\n *OS Name/Version: Ubuntu 18 LTS*\n\n\u00a0\n{noformat}\nhelmut@mail:~$ sudo puppet agent -t -v\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, Duplicate declaration: File[/etc/openvpn/certificates/cert.crt] is already declared at (file: /etc/puppetlabs/code/modules/openvpn/manifests/init.pp, line: 103); cannot redeclare (file: /etc/puppetlabs/code/modules/openvpn/manifests/init.pp, line: 183) (file: /etc/puppetlabs/code/modules/openvpn/manifests/init.pp, line: 183, column: 7) on node mail\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\nhelmut@mail:~$\n{noformat}\n\nLine 103:\n{code:puppet}\n ensure_resource('file', \"${openvpnConf['cert']}\", {\n mode => '0644',\n owner => \"${rootUID}\",\n group => \"${rootGID}\",\n source => \"puppet:///modules/${module_name}/etc/openvpn/certificates/client/${basename($openvpnConf['cert'])}\",\n require => Package[\"${openvpnPackage}\"],\n notify => Service[\"${openvpnService}\"],\n })\n{code}\n\nLine 183:\n{code:puppet}\n ensure_resource('file', \"${openvpnConf['cert']}\", {\n mode => '0644',\n owner => \"${rootUID}\",\n group => \"${rootGID}\",\n source => \"puppet:///modules/${module_name}/etc/openvpn/certificates/server/${basename($openvpnConf['cert'])}\",\n require => Package[\"${openvpnPackage}\"],\n notify => Service[\"${openvpnService}\"],\n })\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16279", "fixedVersions": [], "id": "16279", "issueType": "Bug", "key": "SERVER-2877", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "62438586fd5e4500704327b2", "resolution": "Incomplete", "resolutionDate": "2020-09-09T10:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "ensure_resource does not work", "timeSpent": "PT0S", "updated": "2020-09-09T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2020-09-03T12:59:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@da655f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:409000001"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_89370166_*|*_1_*:*_1_*:*_173389_*|*_10007_*:*_2_*:*_428230395_*|*_3_*:*_1_*:*_3223835593_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2237399056"}], "description": "Serve from the lib (and manifest?) subdirectories of modules.\n\nDoes this also need to support serving from top level subdirectories?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17529", "fixedVersions": ["SERVER 6.15.0", "SERVER 7.0.1"], "id": "17529", "issueType": "New Feature", "key": "SERVER-2876", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Done", "resolutionDate": "2020-11-11T16:49:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Serve file_content for pluginsync from bolt projects", "timeSpent": "PT0S", "updated": "2020-12-10T13:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "This looks like the result of several Ruby code behaviors that need to be fixed in the PUP project, but filing the overall ticket here as there is interplay with Puppet Server's JRuby behavior.", "created": "2020-09-02T17:11:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Filed PUP-10657 for one way to cause this leak using Resource Collectors.", "created": "2020-09-02T17:17:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "This leak also shows up in PE as a result of how the {{new()}} function caches references:\n\nhttps://puppet.com/docs/puppet/6.18/function.html#new\n\nHowever, I haven't yet been able to isolate that behavior using FOSS Puppet Server.", "created": "2020-09-02T17:18:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I was able to isolate the leak in the {{new()}} to the use of Data Type casts. Filed PUP-10659 for that.", "created": "2020-09-04T09:53:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]\u00a0the two issues causing this in Puppet are resolved.\u00a0 Can we consider this resolved by those being resolved?", "created": "2020-10-02T10:26:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]\u00a0think it's waiting for the next release of PE's in November?", "created": "2020-10-02T11:09:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] The two linked issues resolve the out-of-the-box instances of retained compilers. I think it would be a good idea to examine a PE nightly running a non-triavial code base for retention before calling this ticket closed --- maybe the ops team could help with that?", "created": "2020-10-05T10:50:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]\u00a0Can/should we add the number of retained compilers to the puppet-metrics-collector?\u00a0\u00a0\n\n\u00a0\n\nThe debugging command you provided above forces a full GC is there something that can be run in metrics that is light-weight and we can graph over time?\u00a0\u00a0", "created": "2020-10-05T11:33:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "A full GC is needed to determine if the instance is \"retained\" or \"there, but not taken out with the trash yet\". Java GC is lazy and will quit early with garbage left if it has taken enough trash out and the application pause time is going over the configured target.\n\nAs for adding this to the collector, viewing it with {{jmap}} requires JRuby class reification to be on which does have overhead somewhere in the neighborhood of 5% -- 10%. Adding an internal counter for it would be ticky without creating a reference that could keep the object alive. Maybe a \"weak\" reference might work?", "created": "2020-10-05T11:42:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "So what would it look like for OPs to test this?\u00a0 How often do we need to run the command that causes the full GC and gives us the data that we want?\u00a0\u00a0\n\nJust guessing, something like 1-4 times a day?\u00a0 Then we can track the numbers over a few days?\u00a0\u00a0\n\nSo a cronjob on a TBD interval running the command and appending the results to a file?\u00a0\u00a0", "created": "2020-10-07T13:33:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "If it's ok to block port 8140 for a few minutes, then this should give a really clear picture:\n\n  - Upgrade to a nightly build that includes fixes for the linked PUP tickets.\n\n  - Ensure the {{pe-java11-devel}} package is installed so that {{jmap}} is available.\n\n  - Add {{\"Djruby.reify.classes\": \"=true\"}} to {{puppet_enterprise::profile::master::java_args}} so that Complier objects are visible to {{jmap}}.\n\n  - Let Puppet Server serve catalogs for a day or so, then suspend traffic and examine the heap:\n\n{code:bash}\n# Block new connections to 8140 (could also drop compiler from load balancer, if that is an option)\niptables -A INPUT -p tcp --dport 8140 -j REJECT\n\n# Wait until netstat reports no external connections to port 8140\n\nsudo -u pe-puppet $(find /opt/puppetlabs/server/apps -name jmap) -histo:live $(systemctl show -p MainPID pe-puppetserver|cut -d= -f2)|fgrep 'rubyobj.Puppet.Parser.Compiler'\n\n# If grep picks up any rubyobj.Puppet.Parser.Compiler instances, capture a full heap dump\nsudo -u pe-puppet $(find /opt/puppetlabs/server/apps -name jmap) -dump:live,format=b,file=/tmp/puppet_server.hprof $(systemctl show -p MainPID pe-puppetserver|cut -d= -f2)\n\n# Or, re-add the compiler to the load balancer\niptables -D INPUT -p tcp --dport 8140 -j REJECT\n{code}\n\n  - Remove {{Djruby.reify.classes}} from JAVA_ARGS.\n\nIf {{jmap -histo}} picks up any Compiler instances when no API traffic is being handled, then we are retaining Compilers in memory after requests finish.", "created": "2020-10-07T14:41:00.000000"}], "components": [], "created": "2020-09-02T17:10:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4678f900"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0u96r"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "40701"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Oct/20"}], "description": "When Puppet Server handles an API request for a catalog, an instance of {{Puppet::Parser::Compiler}} is created to generate the catalog from inputs supplied by the client. This Compiler instance is discarded after the API request finishes and should be destroyed by the Java garbage collector as it contains a lot of state that is not useful once the request is completed.\n\nPuppet Server is retaining a handful of these Compiler instances after their requests finish which bloats the memory footprint of the service and can lead to out of memory errors if the retained Compilers happen to have built particularly large catalogs.\n\n\nh2. Reproduction Case\n\n  - Install PE 2019.8 on CentOS 7 with the following debug configuration in pe.conf:\n\n{code}\n\"puppet_enterprise::master::puppetserver::jruby_max_active_instances\": 1\n\"puppet_enterprise::profile::master::java_args\": {\n    \"Djruby.reify.classes\": \"=true\"\n}\n{code}\n\n  - Install the development tools for {{pe-java}}:\n\n{code:bash}\nyum install -y pe-java11-devel\n{code}\n\n  - Run {{puppet}} a couple of times:\n\n{code:bash}\npuppet agent -t\npuppet agent -t\n{code}\n\n  - Check the number of {{Puppet::Parser::Compiler}} instances retained in Puppet Server memory:\n\n{code:bash}\nsudo -u pe-puppet $(find /opt/puppetlabs/server/apps -name jmap) -histo:live $(systemctl show -p MainPID pe-puppetserver|cut -d= -f2)|fgrep 'rubyobj.Puppet.Parser.Compiler'\n{code}\n\nh3. Outcome\n\nAfter running the agent twice, the {{puppetserver}} service is retaining two Compiler instances in memory:\n\n{noformat}\n# sudo -u pe-puppet $(find /opt/puppetlabs/server/apps -name jmap) -histo:live $(systemctl show -p MainPID pe-puppetserver|cut -d= -f2)|fgrep 'rubyobj.Puppet.Parser.Compiler'\n\n6172:             2             64  rubyobj.Puppet.Parser.Compiler\n{noformat}\n\nh3. Expected Outcome\n\nNo compiler instances should be retained as the compiler is discarded at the end of the request and the {{-histo:live}} flag forces a full garbage collection.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15246", "fixedVersions": [], "id": "15246", "issueType": "Bug", "key": "SERVER-2874", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "status": "Needs Information", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server retains Compiler objects after requests finish", "timeSpent": "PT0S", "updated": "2022-03-09T09:32:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:623c12521c7f6a007049e8fc] puppet6 no longer supports passenger as described in the 5.5 documentation. You'll want to transition to puppetserver, or ask in puppet slack for more information.", "created": "2020-09-01T09:30:00.000000"}, {"author": "623c12521c7f6a007049e8fc", "body": "Hi Cooper, Thanks for your replay, \nI have few question\n\n1) If I try to install passenger on 5.5 open source. I am unable to find the config.ru rack file to complete the installation process.\n\n2)\u00a0puppet in 6.18 instead of\u00a0 passenger what alternet is there ?\n\n\u00a0\n\nThanks,\n\nMathan", "created": "2020-09-01T11:51:00.000000"}], "components": [], "created": "2020-09-01T03:52:00.000000", "creator": "623c12521c7f6a007049e8fc", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d8fd848"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03v8g:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Sep/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20262899_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Version:\u00a0\u00a06.18.0*\n *Puppet Server Version: 6.13.0*\n *OS Name/Version: Ubuntu 18.04*\n\n\u00a0\n\n*[https://puppet.com/docs/puppet/5.5/passenger.html]*\n\n\u00a0\n\nAfter configure puppet passanger using the above document.\u00a0I am unable to add new agent in the puppet 6.18.\u00a0\n\n\u00a0\n\nGetting this error:-\u00a0\n\nroot@puppet:/usr/bin# puppetserver ca list\nError:\n code: 404\n body: <!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p>The requested URL was not found on this server.</p>\n<hr>\n<address>Apache/2.4.29 (Ubuntu) Server at puppet.master.com Port 8140</address>\n</body></html>\nNo certificates to list\n\n\u00a0\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16055", "fixedVersions": [], "id": "16055", "issueType": "Bug", "key": "SERVER-2872", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12521c7f6a007049e8fc", "resolution": "Won't Do", "resolutionDate": "2020-09-01T09:30:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "unable to configure puppet passanger ", "timeSpent": "PT0S", "updated": "2020-09-01T11:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Should be blocked by a ticket in PUP to change the upstream APIs.", "created": "2020-08-31T12:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Are all of those changes being added ahead of Platform 7? [~accountid:63d40628f6e1b543161789a7] do you know the timeline on those?", "created": "2020-09-01T16:36:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "AFAIK all of the PUP changes will be made in a backwards compatible way (for example supporting the {{master}} section in puppet.conf, etc) so -I wasn't planning on including in puppet7 (though whatever changes can be done by then, all the better).- It looks like NW will have bandwidth to get started on this for Puppet 7 and the 6.x release that follows", "created": "2020-09-01T17:05:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "By \"this\" I assume you mean the associated PUP work and not this ticket?", "created": "2020-09-18T14:23:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "sorry, yeah, the PUP tickets :facepalm:", "created": "2020-09-18T14:35:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0will link the PUP epic that describes the specific terms to look out for.\u00a0", "created": "2020-11-20T12:40:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Grepping puppetserver's {{src/ruby}} directory for master I find that we still use \"master\" when referring to http routing our usage of the indirected routes. These references are arguably not public facing for either Puppet or Puppet Server but an artifact of how closely they're intertwined. Specifically, our usage of the constant: [Puppet::Network::HTTP::MASTER_URL_PREFIX|https://github.com/puppetlabs/puppet/blob/main/lib/puppet/network/http.rb#L6-L7] and the namespace {{puppet/network/http/api/master/v3}}.\n\nI saw no other Puppet references using \"master\" or any references at all using \"white\" or \"black\" in {{src/ruby}}.", "created": "2021-03-01T10:16:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I can create a PR to change Puppet's constant that still includes master. I'm a little more hesitant to change the whole master/v3 namespace but can do it. I'd need to create a PUP ticket to do so.\n\nEither way I don't think Puppet Server can move to using the the replacement naming of those in 7.x since that would break compatibility with agents of the same major version. I _could_ put code in attempt to load non-master termed constant/file and fallback to the master named ones. What do people think?", "created": "2021-03-01T10:19:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Why are you hesitant to change the namespace?\n\nIMO, internal changes are still worthwhile, both from an inclusivity standpoint and so we can be as consistent as possible in our terminology generally.\n\nAnd just to make sure I'm understanding: you're saying that since the {{Puppet::Network::HTTP::MASTER_URL_PREFIX}} constant comes from puppet and was included in the first puppet7 release, puppetserver has to continue referencing that constant in case folks are using old puppet7 agents? That makes sense to me, though it's a bummer. Since it seems like we're really committed to these terminology changes, I _think_ it would make sense to do this switch+fallback sooner rather than later. It does feel icky.. but it sounds like this is the direction we want to be moving in? Does this just apply to the constant or the namespace too? I'm imagining making the namespace change backwards compatible is more gross, maybe that's why you're hesitant to make that change?", "created": "2021-03-01T12:47:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It seems like if we ever hope to get away from these terms, we need to start making changes like this in 6 and 7. I don't know if we're planning to drop Puppet 5 support in Platform 8, but if we are, at that point it might be possible to drop the fallbacks, but only if we work to get these changes into the agent side in the currently-live streams now.\n\nMakes sense to me to file a different ticket for the work in the Puppet repo, since I imagine the testing will be a little more elaborate. We'll want to make sure to validate different combinations of agents and servers, and probably upgrades.", "created": "2021-03-01T13:07:00.000000"}], "components": [], "created": "2020-08-31T12:09:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b923ea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o06h7j:qo"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Sep/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_413513305_*|*_1_*:*_1_*:*_102486340_*|*_10007_*:*_1_*:*_89782849_*|*_3_*:*_1_*:*_319291843_*|*_10009_*:*_1_*:*_261010289_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_257106811_*|*_10006_*:*_1_*:*_15057265878"}], "description": "The main Puppet project is also updating its terminology in a backwards compatible way. For Puppet 7 we should move to using its updated apis. Some work has been done on this, audit the puppetserver repo for other places where we need to update. (look for the works \"white\" and \"master\" and figure out what the replacement terms should be).", "epicLinkSummary": "Froyo owned changes in terminology", "estimate": "PT0S", "externalId": "16604", "fixedVersions": ["SERVER 7.1.0"], "id": "16604", "issueType": "Improvement", "key": "SERVER-2870", "labels": [], "originalEstimate": "PT0S", "parent": "14926", "parentSummary": "Froyo owned changes in terminology", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2021-03-10T10:36:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver to use new Puppet settings/apis", "timeSpent": "PT0S", "updated": "2021-03-10T10:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-08-31T12:07:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a4cb686"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0emad:x"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}], "description": "Note this only the puppetserver repo. This explicitly does not include the beaker acceptance tests. ", "epicLinkSummary": "Froyo owned changes in terminology", "estimate": "PT0S", "externalId": "16276", "fixedVersions": [], "id": "16276", "issueType": "Improvement", "key": "SERVER-2869", "labels": [], "originalEstimate": "PT0S", "parent": "14926", "parentSummary": "Froyo owned changes in terminology", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver tests and internal variable names", "timeSpent": "PT0S", "updated": "2022-03-09T08:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:619528076d002b006b1c1e8d] will follow up whether or not this should be prioritized.\u00a0", "created": "2023-01-26T14:36:00.000000"}, {"author": "619528076d002b006b1c1e8d", "body": "If the scope is accurate (3 points) then we should do it.\n\nIf that's not accurate, let's please get an updated scope. TY", "created": "2023-02-01T10:56:00.000000"}], "components": [], "created": "2020-08-31T12:05:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c0eeda6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3165"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0lig"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jan/23"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_102614975_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_505736987_*|*_10006_*:*_1_*:*_75526117382_*|*_10005_*:*_1_*:*_243156252"}], "description": "We specifically have a [\"master\" namespace|https://github.com/puppetlabs/puppetserver/blob/6.x/src/clj/puppetlabs/services/master/master_service.clj#L1] in our code and this is namespace is referenced in user-facing configuration. We need to change the namespace, but because it is also referenced in user-facing configuration we have to provide some stub implementation in the old namespace that warns of the deprecation and re-exports the new namespace.\n\n\u00a0\n\nFigure out a way to best keep compatibility with the least amount of crufty code.\u00a0\n\n\u00a0\n\nMake sure to update PEM accordingly to use the preferred replacement namespace.", "epicLinkSummary": "Puppet Server 8", "estimate": "PT0S", "externalId": "16053", "fixedVersions": ["SERVER 8.0.0"], "id": "16053", "issueType": "Improvement", "key": "SERVER-2868", "labels": [], "originalEstimate": "PT0S", "parent": "16890", "parentSummary": "Puppet Server 8", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2023-02-01T11:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update clojure namespaces and bootstrap.cfg configuration", "timeSpent": "PT0S", "updated": "2023-02-01T11:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This should probably get some release notes informing folks of the new variants for the settings we changed.", "created": "2021-03-05T15:46:00.000000"}], "components": [], "created": "2020-08-31T12:01:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@466ed305"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o06h7j:qu"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Deprecation"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The \"master-conf-dir\", \"master-code-dir\", \"master-var-dir\", \"master-log-dir\", and \"master-run-dir\" config settings have been deprecated in favor of \"server-conf-dir\", \"server-code-dir\", \"server-var-dir\", \"server-log-dir\", and \"server-run-dir\" respectively.\n\nAs part of the next release new config files which use the new terms will ship with the package. The old names are still honored for backwards compatibility but users should upgrade to the newer settings names at their earliest convenience. "}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1094565679_*|*_1_*:*_1_*:*_102819014_*|*_10007_*:*_1_*:*_2573105_*|*_3_*:*_2_*:*_347942366_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_3_*:*_15390899169_*|*_10005_*:*_1_*:*_243233785"}], "description": "Deprecate config values in puppet server's conf.d that refer to \"master\", \"whitelist\", etc and provide new values (\"server\" and \"allowlist\") to replace them. Alias or fallback to the old values for now to allow users to upgrade on their own timeframe.\n\nMost of these are here: [https://github.com/puppetlabs/puppetserver/blob/6.x/src/clj/puppetlabs/services/jruby/jruby_puppet_schemas.clj]\n\n\u00a0", "epicLinkSummary": "Froyo owned changes in terminology", "estimate": "PT0S", "externalId": "15712", "fixedVersions": ["SERVER 7.1.0"], "id": "15712", "issueType": "Improvement", "key": "SERVER-2867", "labels": [], "originalEstimate": "PT0S", "parent": "14926", "parentSummary": "Froyo owned changes in terminology", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2021-03-18T08:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver configuration values", "timeSpent": "PT0S", "updated": "2022-09-01T12:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-08-31T11:59:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72a135a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2864"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090q"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_102793847_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_15125473082_*|*_10005_*:*_1_*:*_243358929"}], "description": "https://github.com/puppetlabs/puppetserver/tree/6.x/documentation", "epicLinkSummary": "Froyo owned changes in terminology", "estimate": "PT0S", "externalId": "15427", "fixedVersions": [], "id": "15427", "issueType": "Improvement", "key": "SERVER-2866", "labels": [], "originalEstimate": "PT0S", "parent": "14926", "parentSummary": "Froyo owned changes in terminology", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2021-02-26T12:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver in-repo docs for terminology changes", "timeSpent": "PT0S", "updated": "2021-02-26T12:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] asked about {{master.conf}}. Will a replacement file be created for that in 6.x? Can we delete that file entirely for 7?", "created": "2020-09-18T13:25:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm not seeing a {{master.conf}}\u00a0in the currently released packages, I thought there was one in Puppet Server's {{conf.d}}\u00a0but what I thought would be one is called {{puppetserver.conf}}\n{code:java}\n[root@spare-affect ~]# /opt/puppetlabs/bin/puppetserver --version\npuppetserver version: 6.13.0\n\n[root@spare-affect ~]# ls /etc/puppetlabs/puppetserver/conf.d/\nauth.conf  ca.conf  global.conf  metrics.conf  puppetserver.conf  web-routes.conf  webserver.conf\n\n[root@spare-affect ~]# ls /etc/puppetlabs/puppetserver/\nconf.d  logback.xml  request-logging.xml  services.d {code}\n\nI'm either missing something or that's an aspect of the docs that hasn't been updated in some time.", "created": "2020-09-19T15:51:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] I think there are quite a few references master.conf in the docs, so I'll change these to puppetserver.conf in the Puppet 7 docs.\u00a0\n\nIs the `master` config section being changed to `primaryserver` or `puppetserver`? As described here:\u00a0https://puppet.com/docs/puppet/6.18/config_file_main.html#config-sections", "created": "2020-10-07T04:04:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The {{master}} config section is being renamed to {{server}} in PUP-10669", "created": "2020-10-07T11:05:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "Thanks!", "created": "2020-10-08T02:27:00.000000"}], "components": [], "created": "2020-08-31T11:57:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2756bc8c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-10"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Froyo Terminology Update"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "blue"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:40900006949xlpi"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Sep/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_23515439793_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_18215727068_*|*_10014_*:*_1_*:*_26179127010"}], "description": "This is a ticket to change references from the roles \"master\" to \"server\", \"compile masters\" to \"compilers\" (largely done previously), and \"master of masters\" to \"primary\" or \"main\".\n\nConcepts previously termed \"whitelists\" and \"blacklists\" should now be termed \"allowlists\" and \"denylists\" respectively.\n\nNamespaces, classes, parameters, and settings that require changing should be changed, but the previous terms should be aliased to the new so that new versions may be used in a backwards compatible way for the foreseeable future.\n\nThe git \"head\" branch for development should be changed from \"master\". New \"head\" branches should be termed \"main\".\n\nThis is to happen in all Froyo owned projects (public and private) and their respective docs, including puppetserver, puppetserver-ca-cli, r10k, file-sync, code-manager, and the wider trapperkeeper ecosystem.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14926", "fixedVersions": [], "id": "14926", "issueType": "Epic", "key": "SERVER-2864", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-10-26T11:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Froyo owned changes in terminology", "timeSpent": "PT0S", "updated": "2022-12-09T12:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "Is that standard across the system within bolt that it sees the top level as a module named the same of the project? IE I won't come across a bolt project that also has a module inside it with the project name, which would cause issues if I implemented this the way it's being asked?", "created": "2020-09-02T10:41:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "In bolt, project content shadows anything under `modules`. https://github.com/puppetlabs/bolt/pull/2143/files Bolt warns about this. I dont think we necessarily need to warn in puppetserver, we just need to make sure that the top level content takes precedence over anything in dependencies. ", "created": "2020-09-02T11:26:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "Is it only tasks and plans? Do you need to be able to serve plans through file_content?", "created": "2020-09-02T13:07:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "I cant think of a reason we need to serve plans. However, i do think for pluginsync we will need at least `lib` and perhaps `manifests`. ", "created": "2020-09-02T14:16:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "Okay, the pluginsync stuff is ticketed separately in SERVER-2876", "created": "2020-09-03T13:02:00.000000"}], "components": ["Puppet Server"], "created": "2020-08-27T17:57:00.000000", "creator": "5ade3a9f91bc312e6a4a30f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@763eea39"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkbbr9"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Sep/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_601242845_*|*_1_*:*_1_*:*_16375169_*|*_10007_*:*_2_*:*_1447841777_*|*_3_*:*_2_*:*_888949752_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_388754758"}], "description": "Bolt projects allow definition of tasks/plans etc in \"top level\" (read, not in a module) directories. The way this works in practice is that the tasks/plans in these top level directories are \"magically\" namespaced with the module name of the bolt-project. So effectively a bolt-project *is* a module. \n\nConsider the following structure:\n{code}\n[root@homemade-bit my_project_somesha]# tree\n.\n\u251c\u2500\u2500 bolt-project.yaml\n\u251c\u2500\u2500 modules\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 foo\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 tasks\n\u2502\u00a0\u00a0         \u2514\u2500\u2500 init.sh\n\u251c\u2500\u2500 plans\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 init.pp\n\u2514\u2500\u2500 tasks\n    \u2514\u2500\u2500 init.sh\n\n5 directories, 4 files\n{code}\nthat bolt-project.yaml only has a single key {{name: my_project}} if you {{bolt task show}} there should be two tasks {{my_project}} and {{foo}}. \n\nCurrently puppetserver is able to serve the `foo` task (the one in a \"traditional\" module), puppetserver should *also* serve the {{my_project}} task. \n\nCurrent behaviour:\n{code}\n[root@homemade-bit my_project_somesha]# curl --silent -v --cacert $BOLT_CACERT --cert $BOLT_CERT --key $BOLT_KEY $PUPPETSERVER/puppet/v3/file_content/tasks/foo/init.sh?project=my_project_somesha 2>/dev/null\n#!/bin/bash\n\necho 'yo'\n[root@homemade-bit my_project_somesha]# curl --silent -v --cacert $BOLT_CACERT --cert $BOLT_CERT --key $BOLT_KEY $PUPPETSERVER/puppet/v3/file_content/tasks/my_project/init.sh?project=my_project_somesha 2>/dev/null\nCould not find file_content for path: init.sh\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16941", "fixedVersions": ["SERVER 6.14.0"], "id": "16941", "issueType": "Improvement", "key": "SERVER-2875", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5ade3a9f91bc312e6a4a30f3", "resolution": "Fixed", "resolutionDate": "2020-10-05T10:37:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Serve \"top level\" task,plan,manifest,file content from bolt-projects", "timeSpent": "PT0S", "updated": "2020-10-05T10:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "I got the release notification for 5.3.15 overnight and saw you had decided to backport the atomic CRL rewriting to 5.x, given you said in SERVER-2565 that was unlikely to happen, so thanks for backporting. However after upgrading, it doesn't seem to have fixed the problem. I'm still seeing SSL issues sporadically so I've done a bit of investigating. I'm using `inotifywait -m /etc/puppetlabs/puppet/ssl | grep -v MODIFY` to watch what happens to the CRL.\n\nIf I run `puppet node clean ...` which is what our decommission script is doing then I see the following:\n{noformat}\n/etc/puppetlabs/puppet/ssl/ CREATE crl.pem3043508600540725174tmp\n/etc/puppetlabs/puppet/ssl/ OPEN crl.pem3043508600540725174tmp\n/etc/puppetlabs/puppet/ssl/ CLOSE_WRITE,CLOSE crl.pem3043508600540725174tmp\n/etc/puppetlabs/puppet/ssl/ OPEN crl.pem3043508600540725174tmp\n/etc/puppetlabs/puppet/ssl/ CLOSE_WRITE,CLOSE crl.pem3043508600540725174tmp\n/etc/puppetlabs/puppet/ssl/ ATTRIB crl.pem3043508600540725174tmp\n/etc/puppetlabs/puppet/ssl/ ATTRIB crl.pem3043508600540725174tmp\n/etc/puppetlabs/puppet/ssl/ ATTRIB crl.pem3043508600540725174tmp\n/etc/puppetlabs/puppet/ssl/ MOVED_FROM crl.pem3043508600540725174tmp\n/etc/puppetlabs/puppet/ssl/ MOVED_TO crl.pem\n\n/etc/puppetlabs/puppet/ssl/ CREATE crl.pem7845894041424336280tmp\n/etc/puppetlabs/puppet/ssl/ OPEN crl.pem7845894041424336280tmp\n/etc/puppetlabs/puppet/ssl/ CLOSE_WRITE,CLOSE crl.pem7845894041424336280tmp\n/etc/puppetlabs/puppet/ssl/ OPEN crl.pem7845894041424336280tmp\n/etc/puppetlabs/puppet/ssl/ CLOSE_WRITE,CLOSE crl.pem7845894041424336280tmp\n/etc/puppetlabs/puppet/ssl/ ATTRIB crl.pem7845894041424336280tmp\n/etc/puppetlabs/puppet/ssl/ ATTRIB crl.pem7845894041424336280tmp\n/etc/puppetlabs/puppet/ssl/ MOVED_FROM crl.pem7845894041424336280tmp\n/etc/puppetlabs/puppet/ssl/ MOVED_TO crl.pem{noformat}\nThe CRL gets rebuilt and then rebuilt again immediately after. If I use `puppetserver ca revoke --certname ...` instead then I just see the CRL rebuilt once. Would the double-rebuild be confusing any processes trying to re-read the CRL?", "created": "2020-10-21T08:10:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "{quote}I'm still seeing SSL issues sporadically\n{quote}\n[~accountid:557058:e0389099-cc54-4f97-bd2a-7fa4735554bd], can you provide more information on what issues you're seeing specifically, and under what circumstances? Specifically interesting would be seeing the errors themselves, both from the client side and from the Puppet Server logs, and a description of how you are using the service when the problem(s) occur.", "created": "2020-10-21T08:58:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "Some of this was covered in the original SERVER-115 ticket, but to recap, we have a Puppet CA that is nearly 5 years old and to date has issued over 130,000 certificates, confusingly our CRL has revoked nearly 300,000 certificates (I think due to a bug that meant the same certificate could be revoked more than once) and is now about 14 MB in size. The bug originally was that the CRL was rebuilt in place so any time a certificate was revoked it took so long to do based on the size/number that there were long periods where there was either no CRL on the filesystem or an incomplete one which meant any agent connecting would get an SSL error. The error we nearly always get in response to requesting a catalog or making puppet:/// fileserver requests is:\n{noformat}\nSSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown {noformat}\nWhenever this happened you could see the `/etc/puppetlabs/puppet/ssl/crl.pem` file was being truncated and rewritten. Whenever that file was stable we didn't get any errors. So the obvious fix was to build the new CRL in a temporary file and atomically move it into place on top of the old one, which is what has been done and the inotifywait output I've pasted confirms this. However after upgrading today I'm still seeing this error pop up and it seems to coincide with certificates being revoked.\n\nWe have a periodic job that reads expired machines from a queue and deactivates them in PuppetDB, revokes their Puppet certificate and does some other jobs such as clean up DNS and Active Directory. The script runs `puppet node deactivate <hostname>` followed by `puppet node clean <hostname>` which is why I noticed the double CRL rebuild.\n\nI've not seen any sort of error on the Puppet Server side, because it fails at the SSL level it never actually logs any of the failed requests. If there are any logging tweaks specifically for SSL please let me know and I can apply them.", "created": "2020-10-21T10:06:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], I'm guessing that the file operations pertaining to the CRL probably aren't at fault for this anymore, due to file content changes being atomic, but is it possible that Puppet Server reloading the CRL _data_ results in any periods of unavailability during which an agent might express an error such as what [~accountid:557058:e0389099-cc54-4f97-bd2a-7fa4735554bd]\u00a0reports?\n\nIs CRL data kept in memory by Puppet Server such that it can be atomically updated, or is it read from disk frequently / for every connection?\n{code:java}SSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown {code}", "created": "2020-10-21T11:18:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "I don't see the CRL being read from disk that often, if at all, apart from in response to external API actions. The only time I see it literally just read without any other filesystem operations is when the Puppet agent periodically runs on the Puppet Server. I don't see it being read immediately after its rewritten so it looks like it's kept in memory.", "created": "2020-10-22T02:34:00.000000"}], "components": [], "created": "2020-08-26T12:20:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b1b4ff1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03ruo:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Puppet Server CA will now write all of its files atomically, preventing an issue where CRLs could be read partway through being written, resulting in a failed load and corruping CA state. This improvement is backported from the Puppet Server 6 stream."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Oct/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_241657028_*|*_1_*:*_1_*:*_105093_*|*_10007_*:*_1_*:*_3241980_*|*_3_*:*_2_*:*_194458696_*|*_5_*:*_2_*:*_75751101"}], "description": "We updated the CA to write all of its files atomically in the 6.x branch recently. There has now been a request to backport this fix to the 5.x branch.\n\nOriginal puppetserver PR: https://github.com/puppetlabs/puppetserver/pull/2334\nOriginal kitchensink PR: https://github.com/puppetlabs/clj-kitchensink/pull/103", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17528", "fixedVersions": ["SERVER 5.3.15"], "id": "17528", "issueType": "Task", "key": "SERVER-2863", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-09-01T11:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Backport atomic CA file writes to 5.x", "timeSpent": "PT0S", "updated": "2020-10-22T02:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "70121:50cf9999-f5a4-4526-b662-a8cdc1d378a0", "created": "2020-08-25T07:59:00.000000", "name": "hs_err_pid57770.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11211"}], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The stack frame closest the top shows puppet trying to define a new function: Not sure if it's a built in function or something from a module?\n\n{noformat}\nJava frames: (J=compiled Java code, j=interpreted, Vv=VM code)\nj  com.kenai.jffi.Foreign.invokeN2O2(JJJJLjava/lang/Object", "created": "2020-08-25T12:59:00.000000"}, {"author": "70121:50cf9999-f5a4-4526-b662-a8cdc1d378a0", "body": "Can you see the function name or any other reference that can help to identify it? I have looked at it but can't see anything that i recognize from our modules, but I may have missed something.", "created": "2020-08-26T00:50:00.000000"}, {"author": "70121:50cf9999-f5a4-4526-b662-a8cdc1d378a0", "body": "After a lot of trial/error I finally found the problem. The mention of '{color:#000000}jnr.posix.Crypt' and libcrypt.so in the java error logs made me (after a lot of other ideas) suspect the stdlib 'pw_hash' function which we use to hash the root user pw (stored in eyaml, dynamically generated for each server). This function \"uses the Puppet Master's implementation of crypt(3)\". This is provided by glibc in RHEL7 and by 'libxcrypt' in RHEL8. {color}\n\n{color:#000000}After disabling the use of 'pw_hash' the puppetserver works fine on RHEL8. So something in the RHEL8 crypt functionality makes the puppetserver crash when called often enough. \n{color}\n\n{color:#000000}Any ideas of how to solve this and still be able to use 'pw_hash'? {color}", "created": "2020-08-28T09:31:00.000000"}, {"author": "70121:50cf9999-f5a4-4526-b662-a8cdc1d378a0", "body": "I've worked around this by replacing `pw_hash` with another method for pw management. Without `pw_hash` puppetserver works fine on RHEL8.", "created": "2020-09-04T01:37:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:70121:50cf9999-f5a4-4526-b662-a8cdc1d378a0]\u00a0I don't see which version of stdlib you were using... so I just tried to reproduce with latest and couldn't.\u00a0 I'm going to close this out since you've worked around it and I cannot reproduce.\u00a0\u00a0\n\n\u00a0\n{code:java}[root@frequent-hovel puppet-enterprise-2019.8.2-rc2-49-g65990c1-el-8-x86_64]# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Loading facts\nInfo: Caching catalog for frequent-hovel.delivery.puppetlabs.net\nInfo: Applying configuration version '1601657837'\nNotice: $6$dsfa$Yrz2ynZeBqR7OtpUb7nCtHDzsF3eeWBFRVyOVQCWnEYHLDz2OIhCwJ6lu3AQ0hlcg0i5LCKJymXUT6kpbM.gB/\nNotice: /Stage[main]/Main/Node[default]/Notify[$6$dsfa$Yrz2ynZeBqR7OtpUb7nCtHDzsF3eeWBFRVyOVQCWnEYHLDz2OIhCwJ6lu3AQ0hlcg0i5LCKJymXUT6kpbM.gB/]/message: defined 'message' as '$6$dsfa$Yrz2ynZeBqR7OtpUb7nCtHDzsF3eeWBFRVyOVQCWnEYHLDz2OIhCwJ6lu3AQ0hlcg0i5LCKJymXUT6kpbM.gB/'\nNotice: Applied catalog in 17.50 seconds\n[root@frequent-hovel puppet-enterprise-2019.8.2-rc2-49-g65990c1-el-8-x86_64]# cat /etc/puppetlabs/code/environments/production/\ndata/             environment.conf  hiera.yaml        manifests/        modules/          \n[root@frequent-hovel puppet-enterprise-2019.8.2-rc2-49-g65990c1-el-8-x86_64]# cat /etc/puppetlabs/code/environments/production/manifests/site.pp \nnode default {\n  \n  $test = pw_hash( '1sdfadfa', 'SHA-512', 'dsfa' )  \n  notify { $test : }\n  \n} [root@frequent-hovel puppet-enterprise-2019.8.2-rc2-49-g65990c1-el-8-x86_64]# facter os\n{\n  architecture => \"x86_64\",\n  family => \"RedHat\",\n  hardware => \"x86_64\",\n  name => \"CentOS\",\n  release => {\n    full => \"8.2.2004\",\n    major => \"8\",\n    minor => \"2\"\n  },\n  selinux => {\n    enabled => false\n  }\n}{code}", "created": "2020-10-02T11:01:00.000000"}, {"author": "5b187e201a75f051f4a72721", "body": "I've encountered this issue under a specific scenario, trigger Puppet runs on more than 1 node thru PXP on CentOS 8.2. Trigger only 1 node and normal Puppet daemon run don't result in thread dump. Hope this info helps.\n\nStack: [0x00007fcbc4b2e000,0x00007fcbc4c2f000], sp=0x00007fcbc4bf5dc8, free space=799k\n Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)\n C\u00a0[libcrypt.so.1+0x251b]\n\n\u00a0\n\n\u00a0\n\nMemory: 4k page, physical 8160804k(1927216k free), swap 2097148k(1769468k free)\n\nvm_info: OpenJDK 64-Bit Server VM (11.0.8-internal+10-adhoc.root.openjdk) for linux-amd64 JRE (11.0.8-internal+10-adhoc.root.openjdk), built on Jul 23 2020 15:25:04 by \"root\" with gcc 8.3.1 20191121 (Red Hat 8.3.1-5)", "created": "2020-11-24T19:35:00.000000"}, {"author": "618d77713ae523006917eb86", "body": "This is happening on two of my puppetservers after a conversion from CentOS8 to AlmaLinux8.\u00a0\u00a0\n\nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # A fatal error has been detected by the Java Runtime Environment: \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # \u00a0[thread 140529732388608 also had an error] \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: SIGSEGV (0xb) at pc=0x00007fd1b49afc48, pid=486694, tid=0x00007fcff5005700 \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # JRE version: OpenJDK Runtime Environment (8.0_312-b07) (build 1.8.0_312-b07) \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # Java VM: OpenJDK 64-Bit Server VM (25.312-b07 mixed mode linux-amd64 compressed oops) \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # Problematic frame: \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # C \u00a0[libcrypt.so.1+0x4c48] \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try \"ulimit -c unlimited\" before starting Java again \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # An error report file with more information is saved as: \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # /var/log/puppetlabs/puppetserver/puppetserver_err_pid486694.log \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # If you would like to submit a bug report, please visit: \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # \u00a0\u00a0[https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%208&component=java-1.8.0-openjdk] \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # The crash happened outside the Java Virtual Machine in native code. \nJan 20 00:26:22 glycon.ls.cbn puppetserver[486648]: # See problematic frame for where to report the bug.\n\n\ncat /etc/os-release \u00a0\nNAME=\"AlmaLinux\" \nVERSION=\"8.5 (Arctic Sphynx)\"\n\n\n\npuppetdb-7.8.0-1.el8.noarch \npuppetserver-7.5.0-1.el8.noarch\n\n\n\npuppetlabs-stdlib (v8.1.0)", "created": "2022-01-20T11:35:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Thanks for reporting this! We're planning to investigate within the next couple weeks.", "created": "2022-01-27T11:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The {{crypt}} function has given us issues before. Because the (J)Ruby function calls through directly to system libraries, it's very susceptible weird low-level bugs and changes.\n\nDo the people on this ticket generally have workarounds they could describe? It might be good for us to document this issue along with a recommendation for avoiding it, at minimum. ", "created": "2022-02-03T15:30:00.000000"}, {"author": "618d77713ae523006917eb86", "body": "I do not currently have a good workaround.\u00a0 if anyone knows of a simple alternative to pw_hash that would be appreciated.\u00a0\u00a0", "created": "2022-02-17T15:54:00.000000"}, {"author": "5e3375e183d74c0e821851f3", "body": "I hit this often on an 2021.x PE instance as well. It was initially happening on Centos 8 and now Almalinux.\u00a0\n\n\u00a0\n{code:java}# ls -lrt $(grep -l libcrypt.so puppetserver_err_pid*)\n-rw-r----- 1 pe-puppet pe-puppet 479306 Nov 30 13:28 puppetserver_err_pid1019.log\n-rw-r----- 1 pe-puppet pe-puppet 505603 Dec 12 12:53 puppetserver_err_pid185474.log\n-rw-r----- 1 pe-puppet pe-puppet 507623 Jan\u00a0 3 17:53 puppetserver_err_pid2191800.log\n-rw-r----- 1 pe-puppet pe-puppet 497688 Jan 12 05:53 puppetserver_err_pid289380.log\n-rw-r----- 1 pe-puppet pe-puppet 516829 Jan 18 05:53 puppetserver_err_pid1365728.log\n-rw-r----- 1 pe-puppet pe-puppet 501863 Jan 23 02:23 puppetserver_err_pid2367996.log\n-rw-r----- 1 pe-puppet pe-puppet 111538 Jan 27 08:23 puppetserver_err_pid3177958.log\n-rw-r----- 1 pe-puppet pe-puppet 513561 Feb\u00a0 1 20:23 puppetserver_err_pid1239.log\n-rw-r----- 1 pe-puppet pe-puppet 438747 Feb\u00a0 7 02:53 puppetserver_err_pid116299.log\n-rw-r----- 1 pe-puppet pe-puppet 445002 Feb\u00a0 7 10:38 puppetserver_err_pid996583.log\n-rw-r----- 1 pe-puppet pe-puppet 460778 Feb\u00a0 7 11:46 puppetserver_err_pid1052915.log\n-rw-r----- 1 pe-puppet pe-puppet 544232 Feb 18 14:23 puppetserver_err_pid2530370.log{code}\n\u00a0\n\nThe {{pw_hash}} function is used only twice in the codebase, which is applied to every node. There are only 10 nodes in this environment and compiles seem to work the majority of the time, with the exception of a couple of failures a month.", "created": "2022-02-21T07:30:00.000000"}, {"author": "5e3375e183d74c0e821851f3", "body": "I just linked MODULES-11219, which indicates that {{CentOS 8 + JRuby's String#crypt are not thread-safe}} and gives a script to reproduce the issue. I took a look at my recent instances of this and they were triggered by running jobs on multiple nodes through CD4PE deployments.", "created": "2022-02-21T08:05:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "so it sounds like this might have to be fixed in stdlib, per MODULES-11219. Does that sound right [~accountid:5e3375e183d74c0e821851f3]? /cc [~accountid:557058:154e67dd-e474-47c6-b112-0111e3b9f3d8] [~accountid:6220dc0e14cd24006908a366]\nIf so, I will close this ticket as a duplicate.", "created": "2022-02-24T11:25:00.000000"}, {"author": "5e3375e183d74c0e821851f3", "body": "That works for me. Since {{crypt}} is not stable with this combination, using {{org.apache.commons.codec.digest.Crypt.crypt}} in the function seems like a reasonable fix.", "created": "2022-02-24T11:36:00.000000"}, {"author": "618d77713ae523006917eb86", "body": "Has this actually been fixed yet in Stdlib.\u00a0 I see comments in MODULES-11219 but no fix is visible in github.\u00a0 I think the suggestion is just in the reporters local branch.\u00a0\u00a0", "created": "2022-03-03T14:35:00.000000"}], "components": ["Puppet Server"], "created": "2020-08-25T08:01:00.000000", "creator": "70121:50cf9999-f5a4-4526-b662-a8cdc1d378a0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@123cb424"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03quo:"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "46162"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Aug/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_6922450716_*|*_6_*:*_2_*:*_41045550354"}], "description": "*Puppet Version: 6.10.0*\n *Puppet Server Version: 6.12.1, 6.7.0*\n *OS Name/Version: RHEL8*\n\nI have a RHEL7 box running puppetserver 6.7 without problems. Trying to install a new puppetserver on RHEL8 results in repeated java crashes when put under load. RHEL7 and RHEL8 boxes are configured identically and reads the same puppet code. \n\nI have tested puppetserver 6.7 and the latest, 6.12.1, and tried both java-1.8.0-openjdk and java-11-openjdk. Running with light loads seems to work, but put under some stress (which the RHEL7 box manages fine) the java crashes with errors like these:\n\n\u00a0\n{noformat}\npuppetserver[54280]: # A fatal error has been detected by the Java Runtime Environment:\npuppetserver[54280]: # SIGSEGV (0xb) at pc=0x00007fcc8fef3c3e, pid=54287, tid=0x00007fcbd1ee6700\npuppetserver[54280]: # JRE version: OpenJDK Runtime Environment (8.0_262-b10) (build 1.8.0_262-b10)\npuppetserver[54280]: # Java VM: OpenJDK 64-Bit Server VM (25.262-b10 mixed mode linux-amd64 compressed oops)\npuppetserver[54280]: # Problematic frame:\npuppetserver[54280]: # C [libc.so.6+0x15dc3e] __memmove_avx_unaligned_erms+0x9e{noformat}\n{noformat}\npuppetserver[55962]: # A fatal error has been detected by the Java Runtime Environment:\npuppetserver[55962]: # SIGSEGV (0xb) at pc=0x00007f10879c7fe4, pid=55969, tid=0x00007f0ed1bb9700 \npuppetserver[55962]: # JRE version: OpenJDK Runtime Environment (8.0_262-b10) (build 1.8.0_262-b10)\npuppetserver[55962]: # Java VM: OpenJDK 64-Bit Server VM (25.262-b10 mixed mode linux-amd64 compressed oops)\npuppetserver[55962]: # Problematic frame:\npuppetserver[55962]: # C [libcrypt.so.1+0x2fe4]{noformat}\n\u00a0\n{noformat}\npuppetserver[750529]: [thread 140566186202880 also had an error][thread 140566179886848 also had an error]\n# A fatal error has been detected by the Java Runtime Environment:\npuppetserver[750529]: #\npuppetserver[750529]: # SIGSEGV (0xb) at pc=0x00007fd953a83550, pid=750536, tid=0x00007fd916ef2700\npuppetserver[750529]: #\npuppetserver[750529]: [thread 140566428763904 also had an error]# JRE version: OpenJDK Runtime Environment\n0)\npuppetserver[750529]: # Java VM: OpenJDK 64-Bit Server VM (25.262-b10 mixed mode linux-amd64 compressed oo\npuppetserver[750529]: # Problematic frame:\npuppetserver[750529]: # C 0x00007fd953a83550\npuppetserver[750529]: #\npuppetserver[750529]: # Core dump written. Default location: //core or core.750536\npuppetserver[750529]: #\npuppetserver[750529]: # An error report file with more information is saved as:\npuppetserver[750529]: # /tmp/hs_err_pid750536.log\npuppetserver[750529]: [thread 140566443476736 also had an error]\npuppetserver[750529]: [thread 140571393914624 also had an error]\npuppetserver[750529]: [thread 140570362042112 also had an error]\npuppetserver[750529]: [thread 140570357831424 also had an error]\npuppetserver[750529]: =============== DEBUG MESSAGE: illegal bytecode sequence - method not verified ================\npuppetserver[750529]: [thread 140566325888768 also had an error]\npuppetserver[750529]: [thread 140573830289152 also had an error]\npuppetserver[750529]: [thread 140566545291008 also had an error]\n{noformat}\n\u00a0\n\n\u00a0\n\n\u00a0\n\nThere is no clue to what triggers the crash in the logs, even with debug enabled. Any idea what could be causing this?\n\nAttaching an error report from java if that could help.\n\n\u00a0\n\n\u00a0", "environment": "OS: Red Hat Enterprise Linux release 8.2\u00a0\n\npuppetserver-6.12.1-1.el8.noarch\n\njava-1.8.0-openjdk-headless-1.8.0.262.b10-0.el8_2.x86_64\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15243", "fixedVersions": [], "id": "15243", "issueType": "Bug", "key": "SERVER-2862", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:50cf9999-f5a4-4526-b662-a8cdc1d378a0", "resolution": "Duplicate", "resolutionDate": "2022-03-03T11:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver crashes on RHEL8", "timeSpent": "PT0S", "updated": "2022-03-03T14:35:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [{"attacher": "623c098ea9575800695ac870", "created": "2020-08-21T06:48:00.000000", "name": "dump.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11279"}, {"attacher": "623c098ea9575800695ac870", "created": "2020-08-21T06:37:00.000000", "name": "image-2020-08-21-14-37-25-015.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10676"}, {"attacher": "623c098ea9575800695ac870", "created": "2020-08-21T06:43:00.000000", "name": "image-2020-08-21-14-43-24-300.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10593"}], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thank you for the report! We're looking to improve multithreading in an upcoming release and we'll working on this soon.", "created": "2020-08-31T17:04:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:6220db6259c0740069d86127] We think that disabling environment caching (ie setting the environment timeout to 0) resolves this issue, but creates others. We soak tested this in our internal deployment before releasing this as an experimental feature. Unfortunately, for unrelated reasons, they have environment_timeout set to 0, which we think is the reason we didn't see these issues before.", "created": "2020-10-05T12:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Based on the thread dump provided here, this is caused by problems with the way we are synchronizing 3x loaders. We suspected these issues would exist, but hadn't seen examples of it during development. We're analyzing what can be done to fix it. We've seen similar cases happen internally and with other users", "created": "2021-02-23T14:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Fwiw, any fix we determine for this is likely to be non-trivial. The loader system is very complex.", "created": "2021-02-24T13:22:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've filed PUP-10958 and PUP-10959 as two potential solutions to this issue. We'll likely try PUP-10959 first, as it is probably simpler.", "created": "2021-03-10T08:42:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We have https://github.com/puppetlabs/puppet/pull/8561 that should hopefully resolve the deadlock, and it will be getting released in the next Platform 7 release. It would be awesome if folks could give it a try and let us know if the deadlocking is gone. We were never able to reproduce it in our test environments.", "created": "2021-04-06T12:03:00.000000"}], "components": ["Puppet Server"], "created": "2020-08-21T06:49:00.000000", "creator": "623c098ea9575800695ac870", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59082b07"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2911"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0emad:9"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "41282"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Aug/20"}], "description": "*Puppet Version:*\n *Puppet Server Version:*\n *OS Name/Version:*\n\nI'm testing the new multithreaded option on Puppet Servers 6.11.1 running on a Kubernetes cluster. The main reason for going with this option is reducing the amount of memory used by Puppet.\n\nIn my tests I noticed that after some time (around 2 or 3 hours) the server freezes and from that moment every single requests produces a line similar to the following one:\n{noformat}Error 503 on SERVER at /puppet/v3/file_metadatas/pluginfacts: Attempt to borrow a JRubyInstance from the pool timed out.\n{noformat}\nAround the same time in which I start seeing the errors, I see this line in the logs:\n{noformat}Max borrows reached, but JRubyPool could not be flushed because lock could not be acquired. Will try again later.\n{noformat}\nThis is a consequence of using max-requests-per-instance, setting needed as there are memory leaks.\n\nI'm monitoring all JRuby metrics relevant and available. These plots show the evolution of a pod running Puppet Server from the moment in which is spawned to the moment in which is killed:\n\n !image-2020-08-21-14-37-25-015.png! \n \nThe plot on the left shows the borrow count, the retries and the timeouts. At some point it's not possible to borrow more threads. The middle one shows threads requested and returned. Both are quite similar so it seems that threads are successfully returned. The one on the left shows the total number of threads and the ones free. In this setup I'm setting the maximum number of threads to 5 and as you can see, at some point there's only one thread free (even when Puppet reports that there are none). It doesn't matter if the server has traffic or not, the number of free threads doesn't change.\n\nI have max-requests-per-instance set to 3000 and at the moment of starting failing, the borrow count is at 6K. Failing requests have a backend time of ~1200000, which matches with the default value for borrow-timeout.\n\nMy latest test has been to set max-requests-per-instance to 0 to see if the problem was related with the lock acquired when refreshing the instance. With this configuration the server was able to run for 7 hours, but the number of free threads with and without traffic was still 1 for most of the time.\n\nThe following plots cover the whole range since I spawned the pod (with traffic already pointing to the server) until several minutes after I stopped it. As you can see the number of free threads is 0 or 1 after 2 hours running. After that, it never goes above 1.\n\n !image-2020-08-21-14-43-24-300.png!\n\nA thread dump of the java process (done with jstack) shows a deadlock. You can find the whole dump attached to this ticket.", "epicLinkSummary": "Multithreaded Fixes", "estimate": "PT0S", "externalId": "16274", "fixedVersions": [], "id": "16274", "issueType": "Bug", "key": "SERVER-2860", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": "17234", "parentSummary": "Multithreaded Fixes", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c098ea9575800695ac870", "status": "Ready for Review", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRubyInstance borrow timing-out on multithreaded mode", "timeSpent": "PT0S", "updated": "2022-03-09T09:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I put up https://github.com/puppetlabs/jvm-ssl-utils/pull/97 as a further improvement, figuring out what to do about branching for that library.", "created": "2020-08-24T10:16:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Docs for this are here https://github.com/puppetlabs/puppetserver/pull/2399", "created": "2020-08-26T11:21:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Working on the mergeup now. It's a bit of its own project due to all the features added to the CA in 6.x.", "created": "2020-08-26T12:34:00.000000"}], "components": [], "created": "2020-08-20T12:16:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@721f8c8d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03pew:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added a new CA API endpoint, `puppet-ca/v1/clean` that accepts a list of cert names to be revoked and deleted as a batch."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_500162410_*|*_1_*:*_1_*:*_27588_*|*_10007_*:*_1_*:*_95065329_*|*_3_*:*_1_*:*_354794716_*|*_5_*:*_1_*:*_0"}], "description": "Sometimes users want to revoke and delete SSL files for many nodes at once. Currently, this requires two API requests for each node, and it requires the CRL to be read and rewritten for each revocation.\n\nWe want to implement an API endpoint that combines both of these actions and supports batching. Thinking of calling this {{puppet-ca/v1/clean}}, to correspond to the {{clean}} action in the CLI tool, which both revokes and deletes.\n\nBecause of the batching, the request might take a long time to respond. For now, for expediency, I plan to implement this as a synchronous endpoint, but ultimately it makes more sense for it to be command-style. I will include a flag in the request body to indicate whether it should be executed synchronously or asynchronously, to give us the option to implement the command style later without requiring a new API.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16940", "fixedVersions": ["SERVER 5.3.15", "SERVER 6.14.0"], "id": "16940", "issueType": "New Feature", "key": "SERVER-2859", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-08-31T12:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add API endpoint for bulk cleaning of certs", "timeSpent": "PT0S", "updated": "2022-04-25T11:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-08-19T18:40:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34945770"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10629"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03oyo:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1338_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2243028111"}], "description": "(Initial planned release date: 2020-08-25)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-08-26T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "estimate": "PT0S", "externalId": "14925", "fixedVersions": [], "id": "14925", "issueType": "Task", "key": "SERVER-2858", "labels": [], "originalEstimate": "PT0S", "parent": "22308", "parentSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2020-09-14T17:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.13.0)", "timeSpent": "PT0S", "updated": "2020-09-14T17:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "Not destined for a PE release.", "created": "2020-08-25T12:15:00.000000"}], "components": [], "created": "2020-08-19T18:39:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4be2fe61"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10629"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03oy8:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Aug/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1367_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_495344673"}], "description": "(Initial planned release date: 2020-08-25)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2020-08-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "estimate": "PT0S", "externalId": "17225", "fixedVersions": [], "id": "17225", "issueType": "Task", "key": "SERVER-2857", "labels": [], "originalEstimate": "PT0S", "parent": "22308", "parentSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Won't Do", "resolutionDate": "2020-08-25T12:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.13.0)", "timeSpent": "PT0S", "updated": "2020-08-25T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-08-19T18:39:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f9aca9c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10629"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03oy0:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_58799495_*|*_1_*:*_1_*:*_1178_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_430159794"}], "description": "(Initial planned release date: 2020-08-25)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 6.13.0 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-08-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "estimate": "PT0S", "externalId": "16939", "fixedVersions": [], "id": "16939", "issueType": "Task", "key": "SERVER-2856", "labels": [], "originalEstimate": "PT0S", "parent": "22308", "parentSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2020-08-25T10:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.13.0)", "timeSpent": "PT0S", "updated": "2020-08-25T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "This should get merged on release day, along with the release notes: https://github.com/puppetlabs/puppetserver/pull/2379", "created": "2020-08-21T15:52:00.000000"}], "components": [], "created": "2020-08-19T18:39:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@316f5206"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10629"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03oxs:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Aug/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1341_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_495256881"}], "description": "(Initial planned release date: 2020-08-25)\n\nWrite [release notes|https://github.com/puppetlabs/puppetserver/blob/master/documentation/release_notes.markdown] for the release based on the tickets found in the previous step:\n* Search for tickets with {{fixVersion = \"SERVER 6.13.0\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging @K8med in the opened PR - give her at least two days prior to ship to review.\n* The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n* Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2020-08-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "estimate": "PT0S", "externalId": "16603", "fixedVersions": [], "id": "16603", "issueType": "Task", "key": "SERVER-2855", "labels": [], "originalEstimate": "PT0S", "parent": "22308", "parentSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2020-08-25T12:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 6.13.0)", "timeSpent": "PT0S", "updated": "2020-08-25T12:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-08-19T18:39:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4216422f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10629"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03oxk:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1309_*|*_3_*:*_1_*:*_429771177_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_59165056"}], "description": "(Initial planned release date: 2020-08-25)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-08-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "estimate": "PT0S", "externalId": "16272", "fixedVersions": [], "id": "16272", "issueType": "Task", "key": "SERVER-2854", "labels": [], "originalEstimate": "PT0S", "parent": "22308", "parentSummary": "Puppet Platform 6.18.0 Release - 2020-08-25\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Done", "resolutionDate": "2020-08-25T10:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.13.0)", "timeSpent": "PT0S", "updated": "2020-08-25T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-08-13T17:24:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6da59274"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03la0:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Security Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Updated JRuby to 9.2.13.0, which contains a fix for https://nvd.nist.gov/vuln/detail/CVE-2017-18640."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_589479724_*|*_1_*:*_1_*:*_23199_*|*_10007_*:*_1_*:*_19733381_*|*_3_*:*_1_*:*_63041450_*|*_5_*:*_1_*:*_0"}], "description": "JRuby 9.2.13.0 has been released, we should update to it for the Server 6.13 release.\n\nRelease notes: https://www.jruby.org/2020/08/03/jruby-9-2-13-0.html", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14924", "fixedVersions": ["SERVER 6.13.0"], "id": "14924", "issueType": "Task", "key": "SERVER-2853", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-08-21T12:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update JRuby to 9.2.13.0", "timeSpent": "PT0S", "updated": "2020-08-21T12:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c1489a1d81f0069d8e30a", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], [FACT-2742|https://github.com/puppetlabs/facter/pull/2030] should fix the issue. We already have a mechanism to catch load errors similar to the one from puppet and I took advantage of the current implementation.\n Made a PR on server to test the changes [https://github.com/puppetlabs/puppetserver/pull/2386]", "created": "2020-08-13T09:03:00.000000"}, {"author": "623c1489a1d81f0069d8e30a", "body": "Today I checked with facter:4.x branch and server test seem to pass https://github.com/puppetlabs/puppetserver/pull/2386\n", "created": "2020-08-14T07:13:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Merged, thank you!", "created": "2020-08-14T09:24:00.000000"}], "components": [], "created": "2020-08-07T16:09:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ea573a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03i28:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Aug/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2541825_*|*_1_*:*_1_*:*_498808773_*|*_10007_*:*_1_*:*_81700648_*|*_5_*:*_1_*:*_0"}], "description": "We are currently using Facter 4 in our dev and test environments (when running puppetserver from source). The EC2 fact resolver adding in 4.0.27 starting [requiring Net::HTTP|https://github.com/puppetlabs/facter/blob/05c538787626e4b418337e661d36a745910642e6/lib/facter/resolvers/ec2.rb#L3], which in turn requires OpenSSL, which isn't available when running the server in FIPS mode. When we updated our Facter submodule to this version, FIPS testing broke.\n\nUntil we can find a way to avoid loading this resolver when using Facter in Puppet Server, we have to pin to 4.0.26, see https://github.com/puppetlabs/puppetserver/pull/2383.\n\n*Options*\n* depending on how it's implemented, we might be able to use Facter's block list, but not if the resolver is still required even when fact collection is blocked\n* skip requiring the EC2 resolver optional in Facter similar to how we [avoid loading OpenSSL|https://github.com/puppetlabs/puppet/blob/eadd5474c26e7d28d90de00b9d7a7545ac10e55d/lib/puppet/ssl/openssl_loader.rb#L8] in Puppet\n* Extract the resolvers for the few facts puppetserver needs from Facter proper, and stop requiring Facter in the server altogether.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16051", "fixedVersions": ["SERVER 6.13.0"], "id": "16051", "issueType": "Bug", "key": "SERVER-2852", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-08-14T10:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Facter 4.0.27+ does not work in FIPS mode", "timeSpent": "PT0S", "updated": "2020-08-14T10:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "https://github.com/puppetlabs/ci-job-configs/pull/7205", "created": "2020-08-04T15:47:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This was merged, won't be able to test it out till the next time we need a clj-parent release. But I'm going to close this now, and we can do any follow-on work as part of a separate ticket.\n\nIf this works out well for puppetserver, my next step would be to add similar jobs for pe-pse and pe-puppetserver.", "created": "2020-08-05T13:10:00.000000"}], "components": [], "created": "2020-08-04T12:14:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e1bd540"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03fdk:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_214893_*|*_10007_*:*_1_*:*_76778632_*|*_3_*:*_1_*:*_12781017_*|*_5_*:*_1_*:*_0"}], "description": "I'm envisioning a job that is triggered when clj-parent is released, that will update the version in puppetserver's project.clj file. If the model works well for puppetserver, we can expand it to other projects.\n\nI'm going to do this as a normal JJB-defined Jenkins job, because there is plenty of prior art. If we decide to do something similar on a wider scale, we can discuss other tooling options.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14922", "fixedVersions": [], "id": "14922", "issueType": "Task", "key": "SERVER-2851", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-08-05T13:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Build prototype clj-parent promotion job for puppetserver", "timeSpent": "PT0S", "updated": "2020-08-05T13:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-07-31T16:19:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1eece596"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03dy8:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11094703_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_50524645766"}], "description": "We have PR testing on the puppetserver repo that runs our clojure tests in its various modes (e.g. single vs. multithreaded) for every PR that is opened.\n\nWe also run the clojure tests (singlethreaded only) as part of our jenkins pipeline.\nThis means we're running some tests twice.\n\nThe reason we're currently doing this is to ensure we test any changes that did not go through the PR process.\nThe only changes we can think of that don't go through PR are mergeups.\n\nHave the mergeup job kick off the clojure tests, rather than running them every time the pipeline is run.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "14920", "fixedVersions": [], "id": "14920", "issueType": "Task", "key": "SERVER-2850", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Won't Do", "resolutionDate": "2022-03-08T13:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Don't run clojure tests unnecessarily", "timeSpent": "PT0S", "updated": "2022-03-08T13:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-07-31T16:18:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@121f4715"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ry:7"}], "description": "We currently have some basic smoke tests (ex. list of what [runs in Jenkins|https://github.com/puppetlabs/ci-job-configs/blob/9bd73fe14ae85f0bca52f97a2c8e3dd9928b663b/resources/job-groups/puppetserver.yaml#L244-L246], from [here|https://github.com/puppetlabs/puppetserver/tree/master/acceptance/suites]) that ensure that certain older agents can check in with newer masters. Now that we've added a branch for the Platform 7 stream, theoretically we a new compat test for Puppet 6 with it.\n\n*However*, we don't currently run all the tests we have, and they pretty much never fail. We should maybe discuss how useful these tests are in their current form, and weigh whether to keep them, before adding another one.", "duedate": "2022-06-30T00:00:00.000000", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "17527", "fixedVersions": [], "id": "17527", "issueType": "Task", "key": "SERVER-2849", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add compat tests for Puppet < 7 to puppetserver#main?", "timeSpent": "PT0S", "updated": "2022-03-09T08:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-07-31T09:57:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c9ce0df"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03dls:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_106889182_*|*_1_*:*_1_*:*_12192_*|*_3_*:*_1_*:*_259709183_*|*_5_*:*_1_*:*_0"}], "description": "Development work targeted specifically at Platform 7 has begun in the Puppet repo, so we should have Server branches and pipelines to integrate that work.\n\n*We want to:*\n* rename master to 6.x, but leave it as the default branch for now\n* create a new main branch, which will be the target for Platform 7 work\n* create test pipelines that pull in puppet-agent#next, which is where puppet#main promotes to\n* set up mergeups from 6.x -> main", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15709", "fixedVersions": ["SERVER 7.0.0"], "id": "15709", "issueType": "Task", "key": "SERVER-2848", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-08-04T15:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Set up CI pipelines for `main` branch (platform 7)", "timeSpent": "PT0S", "updated": "2020-08-04T15:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2020-07-29T16:22:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@232de1b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkb8ei"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1382327_*|*_3_*:*_1_*:*_1296431616_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_409293151"}], "description": "Specify the API to be used in SERVER-2845. For now it only needs to serve file content out of bolt projects but it might be good to make it flexible enough to also serve from environments in the future and replace the existing file_content endpoint (so essentially a v4).\n\nIn scope:\n * API spec to serve file_content from bolt projects\n * Source is addressed as project name and version\n * Allow specifying either the project or environment as a source\n\nOut of scope:\n * implementing serving from environment\n\nOpen questions:\n * Is this actually necessary? Even though this will have a new backend implementation it's possible it could be slotted into the existing api with a query parameter. Worth double checking.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16602", "fixedVersions": [], "id": "16602", "issueType": "New Feature", "key": "SERVER-2846", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Done", "resolutionDate": "2020-08-18T10:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "specify new version of file_content api", "timeSpent": "PT0S", "updated": "2020-08-18T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2020-07-29T16:16:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@740bcdcd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkb8f"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_179793230_*|*_1_*:*_1_*:*_1742621_*|*_10007_*:*_1_*:*_408355086_*|*_3_*:*_1_*:*_1212974925_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_602646983"}], "description": "Implement serving of file_content for bolt projects in puppetserver. Since we have the opportunity, implement this in clojure so it doesn't add any jruby contention. The code for this will go in FOSS puppetserver.\n\nProject structure is defined here [https://github.com/puppetlabs/bolt/blob/main/lib/bolt/project.rb]. \n\n*Outcomes*\n* a functioning [endpoint|https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/master/master_core.clj#L1024] that corresponds to the spec from SERVER-2846.\n* clojure integration tests\n* API docs under the [puppet API|https://github.com/puppetlabs/puppetserver/tree/master/documentation/puppet-api] (the section will be determined as part of SERVER-2846)\n\nAs a separate piece of work:\nWe might want to consider making sure this project layout is specified somewhere besides just in Bolt code, so it's more obvious when something changes. Perhaps something in https://github.com/puppetlabs/puppet-specifications/blob/master/file_paths.md? Some of the knowledge about this structure will have to be duplicated in clojure but it shouldn't be too bad.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16366", "fixedVersions": ["SERVER 6.13.0"], "id": "16366", "issueType": "New Feature", "key": "SERVER-2845", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Done", "resolutionDate": "2020-08-26T12:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Serve file_content for bolt projects", "timeSpent": "PT0S", "updated": "2020-11-11T17:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The parts of puppetserver that automagically reload configuration currently cause us a lot of problems (notably settings). We're hoping to move away from that sort of thing generally. Would better documentation help? Or is there a specific use case here that would really take advantage of automatic reloading (outside of the dev workflow)?\n\nCode manager is completely separate from this, it deploys _Puppet_ code, not library code for the Puppet application.", "created": "2020-07-28T17:26:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] It's not the {{reports}} setting specifically but the processors' implementation that is out-of-date. For example, if my {{reports}} setting is {{puppetdb,servicenow}}, then if the implementation of {{puppetdb}} or {{servicenow}} changes (the {{lib/puppet/reports/<name>.rb}} file), I'll need to manually reload puppetserver to capture those changes.\n\nI was (naively) thinking this problem could be solved via whatever's done to refresh custom function implementations. But I am also clueless about puppetserver code.\n\nUse-case is any module that ships a report processor that's going to be iterated on multiple times (like the {{servicenow_reporting_integration}}) before we get to a stable state. Automagically handling the sync results in a better UX for customers b/c that can be a subtle documentation detail that people miss.", "created": "2020-07-28T18:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Looking more at the report loading code, it kind of looks like we do go [through the autoloader|https://github.com/puppetlabs/puppet/blob/master/lib/puppet/reports.rb#L35] for report processors. Do you by any chance have an environment timeout configured to something non-zero? If so, the issue may simply be that your environment is getting cached, and needs to be refreshed before it will load your changes. You could try setting {{environment_timeout=0}} and see if that helps. If you want to keep a longer TTL, there's an [endpoint|https://puppet.com/docs/puppetserver/latest/admin-api/v1/environment-cache.html] you can hit to flush the environment cache on demand without a reload.\n\nI don't have a deep understanding of this code though, so no guarantees :)", "created": "2020-07-29T10:01:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "Thanks for digging into this! Looks like `environment_timeout` was set to 0 when I was running into the issue. Our module's also handling the sync so this isn't an issue anymore for the reporting integration (see https://github.com/puppetlabs/puppetlabs-servicenow_reporting_integration/commit/ce23a8f8787060e85b59be339dcfdcb76799f027 -- we're going with a restart since there's already a restart for the ini_subsetting resource and it seemed easier than adding manifest code that called a puppetserver API endpoint).\n\nNo worries. Are there plans to eventually fix this issue though? Eventually could also be a really long time, just trying to see if y'all think it is an issue worth fixing.", "created": "2020-07-29T11:14:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:63d40628f6e1b543161789a7] thoughts?", "created": "2020-07-29T11:49:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Report processors can be deployed in modules, along with facts, type, etc. For example to get the [splunk report processor|https://github.com/puppetlabs/puppetlabs-splunk_hec/blob/master/lib/puppet/reports/splunk_hec.rb], you just need to do {{puppet module install puppetlabs-splunk_hec}}.\u00a0I was thinking r10k/codemgr could at least warn when it deploys a new module that contains a report processor whose version is different than what's already been deployed. For example, we already have some \"when deploying a module\" code in r10k to generate pcore resource types: https://github.com/puppetlabs/r10k/blob/617f13792157bce68b40cf8b88be56cfea1a92d5/lib/r10k/action/deploy/module.rb#L67. It may be sufficient to just include some output like \"hey your module contains a report processor and it won't take effect until puppetserver is reloaded\". I'm also lumping r10k and code manager together, which may not be correct.\n\u00a0", "created": "2020-07-29T14:34:00.000000"}], "components": [], "created": "2020-07-27T10:59:00.000000", "creator": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@233c07ae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o03ajc:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jul/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_109640579_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_49598857545"}], "description": "Given a report processor that's stored in {{lib/puppet/reports/<name>.rb}}, any changes to the report processor's implementation requires a puppetserver reload. puppetserver should try to automagically do this for the user (if it can), or at least have a documented pattern that takes advantage of something like code manager. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15425", "fixedVersions": [], "id": "15425", "issueType": "Bug", "key": "SERVER-2844", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "resolution": "Won't Fix", "resolutionDate": "2022-02-22T17:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver fails to detect report processor changes", "timeSpent": "PT0S", "updated": "2022-02-22T17:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-07-22T02:37:00.000000", "creator": "5abd613dd4cf3c56be24b70d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f20fb3b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-3341"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o037lc:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1759_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_7197800024"}], "description": "Remove {{[Puppet7]EL 5}} from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove [Puppet7]EL 5 FOSS support", "estimate": "PT0S", "externalId": "14919", "fixedVersions": [], "id": "14919", "issueType": "Task", "key": "SERVER-2843", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": "57230", "parentSummary": "Remove [Puppet7]EL 5 FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5abd613dd4cf3c56be24b70d", "resolution": "Won't Fix", "resolutionDate": "2020-10-13T10:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove [Puppet7]EL 5 from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2021-03-11T12:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The example shows generation failing due to a DNS issue, because this is easy to configure. There are many other ways in which the same issue can fail though: a load balancer could return a HTTPS 503 response because the CA service is not reachable. This would cause certificate generation to fail even though the Puppet Server service is not running.\n\nCreating a new CA client needs to be done under emergency circumstances if the agent certificate for the node hosting Puppet Server has been damaged. To facilitate recovery in emergencies, the {{check_server_online}} logic should probably do one of:\n\n  - Accept any instance of {{Puppetserver::Ca::ConnectionFailed}}, not those that happen to wrap specific errors like TCP connection refused.\n\n  - Or, accept a {{--force}} flag that bypasses this specific safety check in favor of making recovery easier in an emergency.", "created": "2020-07-08T11:28:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We think the server healthcheck is still valuable, so a {{--force}} flag sounds like the right solution for handling cases like this.", "created": "2021-08-17T12:22:00.000000"}], "components": ["Certificate Authority"], "created": "2020-07-08T11:22:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17820096"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0atfs:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The `puppetserver ca generate --ca-client` command now can take a `--force` flag that will cause it to generate the cert even if the tool is unable to determine whether Puppet Server is offline. It is recommended that users manually ensure their server is offline before using this flag, to avoid potential CA corruption."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Aug/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_152355113_*|*_1_*:*_1_*:*_89982424_*|*_10007_*:*_1_*:*_359267462_*|*_3_*:*_1_*:*_153420328_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1310769872_*|*_10005_*:*_1_*:*_34905626013"}], "description": "The {{puppetserver ca generate --ca-client}} command performs an offline generation of a new certificate. This is useful in order to repair the agent certificate of a CA server. To ensure it is the only process manipulating CA state, the command does a HTTPS status check on the Puppet Server hostname and fails if the result is something other than a TCP connection refused:\n\nhttps://github.com/puppetlabs/puppetserver-ca-cli/blob/1.8.0/lib/puppetserver/ca/action/generate.rb#L170-L172\n\nThis check is prone to false positives if there is a DNS configuration issue, or proxy that generates a different response than TCP connection refused.\n\nh2. Reproduction Case\n\n  - Install Puppet Server 6.12.0 on CentOS 7:\n\n{code:bash}\nyum install -y http://yum.puppetlabs.com/puppet6-release-el-7.noarch.rpm\nyum install -y puppetserver-6.12.0\n{code}\n\n  - Bootstrap the Puppet Server CA:\n\n{code:bash}\n/opt/puppetlabs/bin/puppetserver ca setup\n{code}\n\n  - Simulate a DNS outage/misconfiguration by configuring Puppet's {{server}} setting to point at an unresolvable hostname:\n\n{code:bash}\n/opt/puppetlabs/bin/puppet config set server dns-outage.invalid\n{code}\n\n  - Attempt to generate a new CA client certificate:\n\n{code:bash}\nsystemctl stop puppetserver\n/opt/puppetlabs/bin/puppetserver ca generate --ca-client --certname new-cert.test\n{code}\n\nh3. Outcome\n\nCertificate generation fails because the error produced by the Puppet Server health check is not a TCP connection refusal:\n\n{noformat}\n# /opt/puppetlabs/bin/puppetserver ca generate --ca-client --certname new-cert.test\nFatal error when running action 'generate'\n  Error: Failed connecting to https://dns-outage.invalid:8140/status/v1/simple/ca\n  Root cause: Failed to open TCP connection to dns-outage.invalid:8140 (getaddrinfo: Name or service not known)\n{noformat}\n\nh3. Expected Outcome\n\nCertificate generation succeeds because the {{puppetserver}} service is not running.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "15239", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.4.0"], "id": "15239", "issueType": "Bug", "key": "SERVER-2842", "labels": ["docs-reviewed", "froyo_intern"], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2021-09-09T09:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver ca generate --ca-client fails when puppetserver is not running", "timeSpent": "PT0S", "updated": "2021-09-09T16:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "5cf96166b7268e0e7bb41131", "body": "By \"not super well maintained\", I mean the fork depends on [com.cemerick/clojurescript.test] - also deprecated upstream - and on [pathetic](https://mvnrepository.com/artifact/pathetic/pathetic/0.5.1), that hasn't been released since 2013...", "created": "2020-07-03T14:11:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for pointing this out. We'll look into it.", "created": "2020-07-09T12:24:00.000000"}], "components": ["Puppet Server"], "created": "2020-07-03T14:03:00.000000", "creator": "5cf96166b7268e0e7bb41131", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b8944f0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02wvs:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jul/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_160395302_*|*_1_*:*_1_*:*_512417293_*|*_10007_*:*_1_*:*_6370107_*|*_3_*:*_1_*:*_95441_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_28773043684"}], "description": "Hi,\n\nWhile working on packaging puppetserver in Debian, I found out it uses the [com.cemerick/url] dependency.\n\nThis project has since been deprecated by the upstream author. A fork exists ([https://github.com/arohner/uri)] but seems to introduce changes and doesn't seem super well maintained.\n\n\nWould be it possible to see if this dependency can be removed, and if not, move to the fork instead?\n\nCheers,", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "17526", "fixedVersions": ["SERVER 6.16.0", "SERVER 7.2.1"], "id": "17526", "issueType": "Bug", "key": "SERVER-2841", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5cf96166b7268e0e7bb41131", "resolution": "Fixed", "resolutionDate": "2021-06-09T11:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Clojure dependency com.cemerick/url deprecated upstream", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5abd613dd4cf3c56be24b70d", "body": "Closing this as there will be other tickets generated with this platform goes EOL", "created": "2020-09-30T00:01:00.000000"}], "components": [], "created": "2020-07-02T04:52:00.000000", "creator": "5abd613dd4cf3c56be24b70d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@31a80fb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-3325"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02w3s:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1708_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1658111920_*|*_10005_*:*_1_*:*_6100408808"}], "description": "Remove {{[Puppet7]Debian 8}} from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove [Puppet7]Debian 8 FOSS support", "estimate": "PT0S", "externalId": "15422", "fixedVersions": [], "id": "15422", "issueType": "Task", "key": "SERVER-2840", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": "58072", "parentSummary": "Remove [Puppet7]Debian 8 FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5abd613dd4cf3c56be24b70d", "resolution": "Won't Fix", "resolutionDate": "2020-09-30T00:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove [Puppet7]Debian 8 from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2020-09-30T00:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:57:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e7ded33"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02ud4:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1204_*|*_3_*:*_1_*:*_771100_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_2090326878"}], "description": "(Initial planned release date: 2020-06-14)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-06-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "estimate": "PT0S", "externalId": "16601", "fixedVersions": [], "id": "16601", "issueType": "Task", "key": "SERVER-2839", "labels": [], "originalEstimate": "PT0S", "parent": "29789", "parentSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-24T17:49:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.12.1)", "timeSpent": "PT0S", "updated": "2020-07-24T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:57:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@133e882d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02uco:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_965_*|*_10007_*:*_1_*:*_265378_*|*_3_*:*_1_*:*_369254_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_793985761"}], "description": "(Initial planned release date: 2020-06-14)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2020-07-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "estimate": "PT0S", "externalId": "16049", "fixedVersions": [], "id": "16049", "issueType": "Task", "key": "SERVER-2838", "labels": [], "originalEstimate": "PT0S", "parent": "29789", "parentSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-09T17:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.12.1)", "timeSpent": "PT0S", "updated": "2020-07-09T17:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:57:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d2a4abb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02ucg:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1014_*|*_3_*:*_1_*:*_86920081_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_786425986"}], "description": "(Initial planned release date: 2020-06-14)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 6.12.1 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-07-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "estimate": "PT0S", "externalId": "15707", "fixedVersions": [], "id": "15707", "issueType": "Task", "key": "SERVER-2837", "labels": [], "originalEstimate": "PT0S", "parent": "29789", "parentSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-10T15:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.12.1)", "timeSpent": "PT0S", "updated": "2020-07-10T15:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:57:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@16fddb6e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02uc8:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1138_*|*_10007_*:*_1_*:*_412021360_*|*_3_*:*_1_*:*_10410047_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_783961059"}], "description": "(Initial planned release date: 2020-06-14)\n\nWrite [release notes|https://github.com/puppetlabs/puppetserver/blob/master/documentation/release_notes.markdown] for the release based on the tickets found in the previous step:\n* Search for tickets with {{fixVersion = \"SERVER 6.12.1\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging @clairecadman in the opened PR - give her at least two days prior to ship to review.\n* The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n* Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2020-07-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "estimate": "PT0S", "externalId": "15420", "fixedVersions": [], "id": "15420", "issueType": "Task", "key": "SERVER-2836", "labels": [], "originalEstimate": "PT0S", "parent": "29789", "parentSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-14T12:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 6.12.1)", "timeSpent": "PT0S", "updated": "2020-07-14T12:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:57:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@333405f1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02uc0:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1073_*|*_3_*:*_1_*:*_1469401_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_771850587"}], "description": "(Initial planned release date: 2020-06-14)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-07-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "estimate": "PT0S", "externalId": "15234", "fixedVersions": [], "id": "15234", "issueType": "Task", "key": "SERVER-2835", "labels": [], "originalEstimate": "PT0S", "parent": "29789", "parentSummary": "Puppet Platform 6.17.0 Release - 2020-06-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-09T11:45:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.12.1)", "timeSpent": "PT0S", "updated": "2020-07-09T11:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:55:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c94febe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10552"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02u6w:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1113_*|*_3_*:*_1_*:*_779868_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_2090449279"}], "description": "(Initial planned release date: 2020-07-14)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-07-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "estimate": "PT0S", "externalId": "17224", "fixedVersions": [], "id": "17224", "issueType": "Task", "key": "SERVER-2834", "labels": [], "originalEstimate": "PT0S", "parent": "21382", "parentSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-24T17:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 5.3.14)", "timeSpent": "PT0S", "updated": "2020-07-24T17:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:54:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@377e6011"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10552"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02u6g:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1103_*|*_10007_*:*_1_*:*_1904931_*|*_3_*:*_1_*:*_239896_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_190586835"}], "description": "(Initial planned release date: 2020-07-14)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\nFor example: https://github.com/puppetlabs/ci-job-configs/commit/a9b5ca9d3a87fc5740f2ceb1af08074523131516\n", "duedate": "2020-07-03T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "estimate": "PT0S", "externalId": "16600", "fixedVersions": [], "id": "16600", "issueType": "Task", "key": "SERVER-2833", "labels": [], "originalEstimate": "PT0S", "parent": "21382", "parentSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-02T18:27:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 5.3.14)", "timeSpent": "PT0S", "updated": "2020-07-02T18:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:54:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@382e23ae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10552"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02u68:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_990_*|*_3_*:*_1_*:*_423432862_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_172566617"}], "description": "(Initial planned release date: 2020-07-14)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE. For example, [this|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_release-clj_master_release/] is the job for master.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* If you haven't already, notify the puppet-agent release lead that puppetserver 5.3.14 is built and ready for testing.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-07-03T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "estimate": "PT0S", "externalId": "16365", "fixedVersions": [], "id": "16365", "issueType": "Task", "key": "SERVER-2832", "labels": [], "originalEstimate": "PT0S", "parent": "21382", "parentSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-07T10:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.14)", "timeSpent": "PT0S", "updated": "2020-07-07T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:54:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49104039"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10552"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02u60:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1043_*|*_10007_*:*_1_*:*_1034135696_*|*_3_*:*_1_*:*_350542_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_172063131"}], "description": "(Initial planned release date: 2020-07-14)\n\nWrite [release notes|https://github.com/puppetlabs/puppetserver/blob/master/documentation/release_notes.markdown] for the release based on the tickets found in the previous step:\n* Search for tickets with {{fixVersion = \"SERVER 5.3.14\"}}.\n* Check each ticket's DOCS tab for the necessary release notes.\n* Request review from the docs team by pinging @clairecadman in the opened PR - give her at least two days prior to ship to review.\n* The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n* Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band, ask in the #prod-docs Slack channel.\n", "duedate": "2020-07-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "estimate": "PT0S", "externalId": "16047", "fixedVersions": [], "id": "16047", "issueType": "Task", "key": "SERVER-2831", "labels": [], "originalEstimate": "PT0S", "parent": "21382", "parentSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-14T12:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 5.3.14)", "timeSpent": "PT0S", "updated": "2020-07-14T12:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-06-30T12:54:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@639aae83"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10552"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02u5s:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1009_*|*_3_*:*_1_*:*_3339452_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_164259046"}], "description": "(Initial planned release date: 2020-07-14)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* If this is an X or Y release, ensure the SNAPSHOT version in [project.clj|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L1] is updated with the new version. This is necessary for the tag/build/release job to work properly.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release; non-SERVER tickets that landed in puppetserver can be ignored if they don't need a release note.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-07-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "estimate": "PT0S", "externalId": "15702", "fixedVersions": [], "id": "15702", "issueType": "Task", "key": "SERVER-2830", "labels": [], "originalEstimate": "PT0S", "parent": "21382", "parentSummary": "Puppet Platform 5.5.21 Release - 2020-07-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2020-07-02T11:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.14)", "timeSpent": "PT0S", "updated": "2020-07-02T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-06-29T11:18:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@424de1c9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:45"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_187948246_*|*_1_*:*_1_*:*_868079869_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_491700828_*|*_10005_*:*_1_*:*_3044728987"}], "description": "Add ubuntu-20.04-amd64 to [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml].\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16364", "fixedVersions": ["SERVER 6.13.0"], "id": "16364", "issueType": "Task", "key": "SERVER-2829", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2020-08-21T14:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable ubuntu-20.04-amd64 test pipeline for puppetserver", "timeSpent": "PT0S", "updated": "2020-08-21T14:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "5b5a27ad106ec32d95ea277d", "body": "Docs coming from [~accountid:557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c]", "created": "2020-08-21T14:54:00.000000"}], "components": [], "created": "2020-06-29T11:18:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@69fe9d69"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:44i"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We are now shipping packages for Ubuntu 20.04 for Puppetserver."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Aug/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_187966626_*|*_1_*:*_1_*:*_868100698_*|*_3_*:*_1_*:*_86823625_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_404874722_*|*_10005_*:*_1_*:*_3044705866"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for ubuntu-20.04-amd64\n* Add ubuntu-20.04-amd64 to [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml#L84-L93]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16045", "fixedVersions": ["SERVER 6.13.0"], "id": "16045", "issueType": "Task", "key": "SERVER-2828", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2020-08-21T14:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable ubuntu-20.04-amd64 builds for puppetserver", "timeSpent": "PT0S", "updated": "2020-08-21T14:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We've merged a fix to disable debug mode, so the 404's should not print large stacks anymore. That fix hasn't been released yet, so I'll block this ticket till that happens. Then you can let us know if that's sufficient.", "created": "2020-06-29T09:57:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think this should in your environment at this point, Have you noticed these stacks be better [~accountid:557058:f23b0b7f-9386-48b3-bd71-4399766356f4]?", "created": "2020-07-29T10:18:00.000000"}], "components": [], "created": "2020-06-24T16:49:00.000000", "creator": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6dd5a61"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02pqw:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_407310040_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_53323366408"}], "description": "*Puppet Version: 6.16.0*\n *Puppet Server Version:\u00a0 2019.8.0.22*\n *OS Name/Version: Centos 7*\n\nWe use a number of Jolokia metrics, but there are a few timers in puppetserver that don't exist until an event occurs. For these, Jolokia logs a long backtrace that clutters up our logs. (Just returning a 404 would be fine)\n\n*Desired Behavior:*\n\nEither prepopulate the timers so that these error don't occur or simply returning an error event without a backtrace would also be an improvement.**\n\n*Actual Behavior:*\n\nExample error:\n{code:java} 2020-06-24T09:21:00.097-07:00 ERROR [qtp1699810223-128] [p.t.s.m.jolokia] Error 404\n 1314 javax.management.InstanceNotFoundException: puppetserver:name=puppetlabs.<hostname>.compiler.evaluate_node_classes\n <100's of lines of backtrace>{code}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15232", "fixedVersions": [], "id": "15232", "issueType": "Improvement", "key": "SERVER-2826", "labels": ["customer0"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Medium (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "resolution": "Fixed", "resolutionDate": "2022-03-08T13:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepopulate timers for Jolokia / JMX metrics", "timeSpent": "PT0S", "updated": "2022-03-08T13:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Puppetserver depends on the puppet-agent package to provide the puppet ruby code that runs within puppetserver. The issue you saw is likely because the puppet-agent package on the puppetserver host updated, but the puppetserver process wasn't restarted. There was some discussion around automatically restarting puppetserver, see SERVER-1756.", "created": "2020-06-25T10:15:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "I agree, that's probably what happened. Not an issue then, I'll have that in mind next time I update agents on the compiler hosts.\n\nThanks [~accountid:63d40628f6e1b543161789a7]!", "created": "2020-06-25T11:21:00.000000"}], "components": ["Puppet Server"], "created": "2020-06-24T11:13:00.000000", "creator": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4fbc803e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02pjc:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jun/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_82918196_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_354816544"}], "description": "Hello,\n\nUpgraded a couple of agents from 6.14 to 6.16. Running against server 6.12.\n\nGot the following error on server:\n{noformat}\n2020-06-24T16:12:52.177Z ERROR [qtp1934319119-44] [puppetserver] Puppet Server Error: Could not intern from json: Did not recognize your adapter specification (no such file to load -- multi_json/adapters/json_gem).2020-06-24T16:12:52.177Z ERROR [qtp1934319119-44] [puppetserver] Puppet Server Error: Could not intern from json: Did not recognize your adapter specification (no such file to load -- multi_json/adapters/json_gem).org/jruby/RubyKernel.java:974:in `require'uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54:in `require'/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:157:in `load_adapter_from_string_name'/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:99:in `load_adapter'/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:103:in `load_adapter'/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:91:in `use'/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:73:in `adapter'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/json.rb:40:in `load'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/formats.rb:119:in `intern'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/format_support.rb:12:in `convert_from'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:93:in `convert_wire_facts'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:31:in `block in extract_facts_from_request'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:29:in `extract_facts_from_request'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:48:in `find'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:223:in `find'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:138:in `do_find'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:54:in `block in call'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290:in `override'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:53:in `call'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `block in process'org/jruby/RubyArray.java:1809:in `each'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:87:in `block in process'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:70:in `block in with_request_profiling'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:66:in `with_request_profiling'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:86:in `block in process'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:93:in `respond_to_errors'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:85:in `process'uri:classloader:/puppetserver-lib/puppet/server/master.rb:64:in `block in handleRequest'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290:in `override'uri:classloader:/puppetserver-lib/puppet/server/master.rb:63:in `handleRequest'2020-06-24T16:12:52.189Z ERROR [qtp1934319119-44] [p.r.core] Internal Server Error: org.jruby.exceptions.ArgumentError: (null) Did not recognize your adapter specification (no such file to load -- multi_json/adapters/json_gem). at RUBY.load_adapter(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:110) at RUBY.load_adapter(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:103) at RUBY.use(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:91) at RUBY.adapter(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:73) at RUBY.current_adapter(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:133) at RUBY.dump(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:139) at RUBY.dump(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/json.rb:62) at RUBY.to_json(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/error.rb:70) at RUBY.respond_with_http_error(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:104) at RUBY.respond_to_errors(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:100) at RUBY.process(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:85) at RUBY.handleRequest(uri:classloader:/puppetserver-lib/puppet/server/master.rb:64) at RUBY.override(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62) at RUBY.override(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290) at RUBY.handleRequest(uri:classloader:/puppetserver-lib/puppet/server/master.rb:63)\n2020-06-24T16:12:52.601Z INFO\u00a0 [qtp1934319119-47] [puppetserver] Puppet Bad Request: The request body is invalid: Could not intern from json: Did not recognize your adapter specification (no such file to load -- multi_json/adapters/json_gem).2020-06-24T16:12:52.605Z ERROR [qtp1934319119-47] [p.r.core] Internal Server Error: org.jruby.exceptions.ArgumentError: (null) Did not recognize your adapter specification (no such file to load -- multi_json/adapters/json_gem). at RUBY.load_adapter(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:110) at RUBY.load_adapter(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:103) at RUBY.use(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:91) at RUBY.adapter(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:73) at RUBY.current_adapter(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:133) at RUBY.dump(/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/multi_json-1.13.1/lib/multi_json.rb:139) at RUBY.dump(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/json.rb:62) at RUBY.to_json(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/error.rb:16) at RUBY.respond_with_http_error(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:104) at RUBY.respond_to_errors(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:96) at RUBY.process(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:85) at RUBY.handleRequest(uri:classloader:/puppetserver-lib/puppet/server/master.rb:64) at RUBY.override(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62) at RUBY.override(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290) at RUBY.handleRequest(uri:classloader:/puppetserver-lib/puppet/server/master.rb:63)\n{noformat}\nError on agent:\n{noformat}\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Internal Server Error: org.jruby.exceptions.ArgumentError: (null) Did not recognize your adapter specification (no such file to load -- multi_json/adapters/json_gem).\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\nError: Could not send report: Error 500 on SERVER: Internal Server Error: org.jruby.exceptions.ArgumentError: (null) Did not recognize your adapter specification (no such file to load -- multi_json/adapters/json_gem).\n\n{noformat}\nHowever, I was not able to replicate this again.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17223", "fixedVersions": [], "id": "17223", "issueType": "Bug", "key": "SERVER-2825", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "resolution": "Incomplete", "resolutionDate": "2020-06-29T12:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unexpected server exception", "timeSpent": "PT0S", "updated": "2020-06-29T12:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "body": "bq. we should update the tuning docs to reflect what we have learned.\n\nAs someone who really would like to vertically scale their Puppetservers using multithreaded mode, I'm super curious what you all have learned.\n\nDoes this ticket being closed as \"won't do\" mean that nothing was learned, or that the public docs won't be updated with what was learned?", "created": "2022-03-08T12:08:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "You're welcome to try using it, but some users have hit issues where the server will deadlock. We fixed one issue causing that, which makes it less frequent, but we're not convinced it's entirely fixed.\n\nWe haven't done much official performance profiling. The effort that started a while back got completely deprioritized. So while we could document things like they _way_ it scales, I'm not sure we have any numbers. Would that still be useful to you?", "created": "2022-03-08T12:15:00.000000"}, {"author": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "body": "Thanks for clarifying, though it is a bummer to hear that the effort got deprioritized.\n\nI was trying to think where it might fit in the [https://puppet.com/docs/puppet/7/server/tuning_guide.html] docs, but as multithreaded mode is still experimental and is known to have some problems, it's probably not worth mentioning it there.\n\nAnd in the puppetserver.conf reference, there is a blurb that says {{max-active-instances}} is how many threads are used for multithreaded mode, so I think we're covered there. Not sure what else would be needed.", "created": "2022-03-08T12:29:00.000000"}], "components": [], "created": "2020-06-16T16:43:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62d273a9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02l2g:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Mar/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1099257655_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_53319257877"}], "description": "Once we have a better sense of the performance and scaling characteristics of multithreaded mode, we should update the [tuning docs|https://github.com/puppetlabs/puppetserver/blob/master/documentation/tuning_guide.markdown] to reflect what we have learned.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14917", "fixedVersions": [], "id": "14917", "issueType": "Task", "key": "SERVER-2824", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver turning docs for multithreaded mode", "timeSpent": "PT0S", "updated": "2022-03-08T12:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-06-15T14:59:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f5aaf4f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Mutlithreaded Perfomance Evaluation"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02k28:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_53311936102_*|*_6_*:*_1_*:*_0"}], "description": "We have gotten multithreaded mode to a mostly stable state. Now we need to understand its performance and resource usage characteristics better so that we can give meaningful advice to our users on how to tune the system in the new mode. This epic tracks that effort.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16363", "fixedVersions": [], "id": "16363", "issueType": "Epic", "key": "SERVER-2823", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2022-02-22T14:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Mutlithreaded Perfomance Evaluation", "timeSpent": "PT0S", "updated": "2022-02-22T14:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] it's looking like this might require somewhat-substantial additions to some of our pages, including [https://github.com/puppetlabs/puppetserver/blob/master/documentation/puppet_server_metrics_performance.markdown] and [https://github.com/puppetlabs/puppetserver/blob/master/documentation/tuning_guide.markdown]. Do you recommend the team make the changes and get them reviewed by docs, or is there another workflow we should follow? \n\nThere also need to be some docs added for PE, around turning on the feature via the console, probably here [https://puppet.com/docs/pe/latest/config_puppetserver.html|https://puppet.com/docs/pe/latest/config_puppetserver.html]. How should we proceed with those? /cc [~accountid:557058:c9b48d3b-3b16-4fba-80cb-daf19743b953]", "created": "2020-06-15T16:01:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Filed https://puppet.atlassian.net/browse/SERVER-2824 for the tuning docs, since I don't think we really have enough info to update those now. Attached that to the epic that should give us the info.", "created": "2020-06-16T16:43:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], for open source, that's probably the way to go: make the changes and then get a docs review. Coordinate with [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] on that.\n\n[~accountid:557058:c9b48d3b-3b16-4fba-80cb-daf19743b953] can speak better to PE.", "created": "2020-06-16T18:10:00.000000"}, {"author": "557058:c9b48d3b-3b16-4fba-80cb-daf19743b953", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] Does this not cover it? \nhttps://puppet.com/docs/pe/latest/config_puppetserver.html#config_multithread_setting_puppetserver", "created": "2020-06-17T11:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Oh, I forgot we'd added that. Yeah I think that's fine, thanks [~accountid:557058:c9b48d3b-3b16-4fba-80cb-daf19743b953].", "created": "2020-06-17T11:55:00.000000"}], "components": [], "created": "2020-06-15T14:54:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13b8fc97"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02k20:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jun/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2213286_*|*_10007_*:*_1_*:*_1116005427_*|*_3_*:*_1_*:*_93794565_*|*_5_*:*_1_*:*_0"}], "description": "We currently have a couple release notes about multithreaded, but no actual docs, and some other pages (e.g. the {{puppetserver.conf}} reference) need to be updated to discuss the new mode.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "16044", "fixedVersions": [], "id": "16044", "issueType": "Task", "key": "SERVER-2822", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-06-29T15:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document multithreaded mode", "timeSpent": "PT0S", "updated": "2020-06-29T15:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I know we support running the Puppet _agent_ as a non-root (user specified) users/groups.\n\nIt looks like the Puppet agent supports configuring Puppet Server to run as different users (for the switch between puppet and pe-puppet when going from FOSS to Enterprise).\n\nPuppet and Puppet Server support end-user specified user/group workflows where the filesystem is nested in $HOME/.puppetlabs rather than /etc/puppetlabs/.\n\nHowever, I don't think we support running in /etc/puppetlabs as custom users, or running Puppet Server as a custom user from packages (the user and group are hard coded in our packaging which provides them and creates some of the directories in /etc/puppetlabs). I don't imagine that's changing without some investment from product.\n\nAre you to rolling your own FOSS package, or editing artifacts that packages lay down after the fact? (If the latter I would expect issues on upgrade)\n\nAssuming you're using Puppet Server as a custom user with its filesystem rooted in $HOME/.puppetlabs I think you should be able to use the puppetserver ca cli tool, but you'll need to run it as the user that Puppet Server runs as.", "created": "2020-07-09T14:38:00.000000"}, {"author": "557058:224c1010-2144-4081-ae3e-6f6fd7dea286", "body": "Gotcha. Yeah we've been just extracting the official RPM in the past (puppet 5) and running with it. Has more or less worked, until we had to switch over to actually using puppetserver (instead of puppet cert) commands. We're doing things fairly outside the norm, so may switch to not using the packages. Thanks for the update!", "created": "2020-08-10T12:50:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T11:58:00.000000"}], "components": ["Puppet Server"], "created": "2020-06-11T12:34:00.000000", "creator": "557058:224c1010-2144-4081-ae3e-6f6fd7dea286", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27390eb1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02i80:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jul/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4077931024_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_50787455301"}], "description": "*Puppet Version:\u00a06.14.0-1*\n *Puppet Server Version:\u00a06.9.2-1*\n *OS Name/Version: CentOS7*\n\nThe puppetserver codebase contains at least one instance of hardcoding the username and group that puppet operates under. In our case, we do not run puppet as the system puppet user. This ends up breaking when we generate a new install / certificate for CA.\n\n\u00a0\n\nHere is the line of code we've discovered:\n\n[https://github.com/puppetlabs/puppetserver-ca-cli/blob/master/lib/puppetserver/ca/utils/file_system.rb#L64]\n\n*Desired Behavior:*\n\nBe capable of running the puppet user as alternative system users than puppet.\u00a0\n\n*Actual Behavior:*\n\nFails with the following:\n\npuppet-agent-6.14.0-1/lib/ruby/2.5.0/fileutils.rb:1019:in `getpwnam': can't find user for puppet (ArgumentError)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14915", "fixedVersions": [], "id": "14915", "issueType": "Bug", "key": "SERVER-2821", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:224c1010-2144-4081-ae3e-6f6fd7dea286", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Hardcoded puppet user in code", "timeSpent": "PT0S", "updated": "2022-03-08T11:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "Hi people,\nwould be awesome to get official packages for 20.04 :)", "created": "2020-06-15T12:23:00.000000"}, {"author": "557058:686e37be-a453-4e08-a01d-e53960fbdb4d", "body": "+1 for this addition. I had been waiting for 20.04 to transition my home IoT devices to the Puppet Server rather than local puppet on each device to make setup and updates easier.", "created": "2020-06-15T12:33:00.000000"}, {"author": "5d1e907eb591b80c1e31f86e", "body": "Our organisation is hanging on the Server (, PuppetDB, Facter, etc) packages for Focal before rolling out several new clusters and data centre projects. Another +1 for this please.", "created": "2020-06-17T04:00:00.000000"}, {"author": "62438586fd5e4500704327b2", "body": "+1", "created": "2020-06-17T10:27:00.000000"}, {"author": "557058:bd0ee0e6-087c-4c15-ac2f-754e8aeffbed", "body": "Please add support for 20.04 master. We'd like to upgrade our infrastructure to 20.04.", "created": "2020-06-24T00:20:00.000000"}, {"author": "5e83452de57b6c0c1e66c14c", "body": "+1", "created": "2020-07-06T10:56:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "With the release of Puppet Platform 6.18.0, ubuntu 20.04 packages are now available for puppetserver (6.13.0) and puppetdb (6.12.0). They can be found here: http://apt.puppetlabs.com/pool/focal/", "created": "2020-08-25T15:59:00.000000"}], "components": ["Puppet Server"], "created": "2020-06-08T17:06:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37bfc2f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:46"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jun/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_2664128753_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_337472938_*|*_10005_*:*_3_*:*_3733566337"}], "description": "I'm starting to see 2-3 questions a week about Ubuntu 20.04 packages for Puppet Server. [~accountid:623e754d94742a00683f7cf0] also mentioned that he's seeing a lot.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16599", "fixedVersions": [], "id": "16599", "issueType": "Improvement", "key": "SERVER-2820", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "resolution": "Fixed", "resolutionDate": "2020-08-25T15:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ubuntu 20.04 packages for Puppet Server", "timeSpent": "PT0S", "updated": "2021-03-08T08:27:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We should look into updating this now that we have full Java 11 support. If we think it's somehow risky, we can do it for Puppet 7, but if it's possible to do in a backwards compatible way, that seems fine.", "created": "2020-06-29T10:11:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "We had a similar request in SERVER-2922. We couldn't require 8 or 11 in rpm but maybe we can in debs? /cc [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]", "created": "2022-01-13T00:06:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] ^Do you think it's feasible for our debian packages to require either java8 or java11? And is that a good idea if we can't do the same for rpms? ", "created": "2022-01-14T15:31:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]\u00a0ah yea we can totally do that for debs. TBH I thought that was already the case for debs but looks like I was wrong about that.", "created": "2022-01-20T15:08:00.000000"}], "components": [], "created": "2020-06-08T09:14:00.000000", "creator": "623c168594742a00683e4426", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13d76e32"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91kc"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jun/20"}], "description": "*Puppet Version:* 6.16.0-1bionic\n*Puppet Server Version:* 6.12.0-1bionic\n*OS Name/Version:* Ubuntu 18.04 LTS 64 bit\n\nAccording to the\u00a0[install documentation|https://puppet.com/docs/puppetserver/latest/install_from_packages.html#java-support], Java 11 and Java 8 are supported versions. Yet, the deb package still insist on using Java 8 only:\n\u00a0\n{code:shell}\n# apt-cache show puppetserver | head | grep -E '^(Package|Version|Depends):'\nPackage: puppetserver\nVersion: 6.12.0-1bionic\nDepends: openjdk-8-jre-headless, bash, net-tools, adduser, procps, puppet-agent (>= 5.5.0)\n{code}\n\n*Desired Behavior:*\n\nIdeally, the Depends should have \"openjdk-11-jre-headless| openjdk-8-jre-headless\".", "environment": "Ubuntu 18.04 LTS 64 bit\n\u00a0\n{code:shell}\n# apt-cache policy puppetserver | head\npuppetserver:\n  Installed: 6.12.0-1bionic\n  Candidate: 6.12.0-1bionic\n  Version table:\n *** 6.12.0-1bionic 500\n        500 http://apt.puppetlabs.com bionic/puppet6 amd64 Packages\n        500 http://apt.puppetlabs.com bionic/puppet6 all Packages\n        100 /var/lib/dpkg/status\n     6.11.1-1bionic 500\n        500 http://apt.puppetlabs.com bionic/puppet6 amd64 Packages\n{code}", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16362", "fixedVersions": [], "id": "16362", "issueType": "Bug", "key": "SERVER-2819", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c168594742a00683e4426", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PuppetServer deb should depend on Java 11 or Java 8", "timeSpent": "PT0S", "updated": "2022-06-02T11:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "This behavior is because the agent makes a node request to puppetserver to determine which server-specified environment the node belongs in. The agent later makes a catalog request, and puppetserver will make a second node request to determine which classes, parameters, etc to apply to the node. So this behavior is expected, though maybe not documented clearly?", "created": "2020-06-02T20:15:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Is there a way to distinguish the two?\n\nIn Foreman our flow is that we also upload facts in the ENC script. These facts can determine which classes and variables are used. Facts are read from $puppetdir/yaml/facts/$certname.yaml.\n\nWe've noticed that during the first request the the facts are not present (and if the env is unknown, this makes sense). Is it safe to only present the environment in the first request (which is a lot cheaper to get) and the full ENC in the second? Perhaps an environment variable or do we need to derive it based on facts present or not?\n\nFor reference, https://github.com/theforeman/puppet-foreman/blob/master/files/external_node_v2.rb is the script in question. As you can see in git, reading facts from the yaml files dates back to 2010. At cfgmgmtcamp I was pointed to the fact indirector, but that has the downside that there can only be a single indirector. That means we need to deal with puppetdb vs non-puppetdb installs.", "created": "2020-06-03T03:57:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I don't know of a fail-safe way to distinguish between the two requests. It just so happens that facts are not submitted with the first node request, but that is a \"bug\" in the agent lifecycle and something we've wanted to change, see PUP-7754.\n\nAnother problem with the first request is that the client must specify the name of a valid environment, which can be hard if this is a brand new node, see https://puppet.atlassian.net/browse/PUP-6802?focusedCommentId=729538&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-729538.\n\nI've been thinking about introducing a new puppetserver API to answer the \"what environment do I belong in\" which could replace the first node request. That API would accept facts, in particular trusted facts which are recommended way to assign nodes to different environments.", "created": "2020-06-05T15:37:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Would it make sense to keep the ENC script for that role, but extend it? The current API is to pass the certname as the first argument. A second argument could be added: literally environment to get the correct environment. The facts can be passed via stdin. Then another could be enc which returns all the classes and variables. For compatibility scripts should interpret no second argument as the enc action.", "created": "2020-06-07T14:29:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The trouble is the node REST API could be called for reasons other than an agent, and somehow puppetserver would need to differentiate. We could add a query parameter to the node REST API (to say \"only return the environment\"), and then have puppetserver invoke the {{exec}} node terminus differently... but that feels hacky, and doesn't solve the \"facts aren't sent with the node request\" problem. I think it might be cleaner to add a new REST API to ask for the node's environment. Thoughts [~accountid:623e754d94742a00683f7cf0], [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]?", "created": "2020-06-09T09:58:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Right, I was only talking about the ENC script implementation, not the REST API.", "created": "2020-06-09T10:11:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I agree that it sounds cleaner. Though it would need to have a new indirection and terminus plumbed through, right?", "created": "2020-06-09T11:51:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:623c100c4a57610068e74585] There are a number of issues with the way node requests work currently.\n\n1. The agent doesn't send facts with the node request, so in PE the classifier terminus retrieves the previous version of facts from puppetdb and includes them in the node request. This increases the load on puppetdb and classifier, and adds complexity, as the facts may be out of date or may not exist (for a newly provisioned node).\n2. The node response includes all of the facts (since all facts are node parameters), even though the agent doesn't need them. That wastes network bandwidth.\n3. If the node request fails/times out, then it can lead to the agent deleting all of its plugins and redownloading new versions. The resulting file_metadata and file_content requests and on-going node and catalog requests from other agents all compete for JRuby instances. This can lead to a positive feedback loop, as more node requests may timeout, etc.\n\nI think a better approach is for the agent to remember the last environment it used, and always start off in that environment. When the agent pluginsyncs and requests a catalog, then the agent can detect if catalog was compiled in a different environment, and retry pluginsync, etc. If it doesn't converge after 3 (or so) attempts, then the agent will fail the run (like it does already).\n\nThese changes are captured in PUP-10216, PUP-9570, PUP-6802\nAs a result, I'm going to close this as won't do.", "created": "2021-06-28T12:00:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Just to clarify with your better approach: would that end up with just a single call to the ENC script? Because that's the real issue I was hoping to get solved.\n\n\u00a0\n\nOur backend for the ENC is Foreman. Calculating the ENC is non-trivial so doubling the load because of that is the real problem.", "created": "2021-06-29T02:39:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Yep, just a single call to the ENC during compilation.", "created": "2021-06-29T11:50:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Then it sounds like this isn't \"won't do\" but more of a story that's blocked by the 3 mentioned tasks.", "created": "2021-06-30T02:29:00.000000"}], "components": [], "created": "2020-06-02T07:22:00.000000", "creator": "623c100c4a57610068e74585", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When running the reproducer:\n\n{noformat}\n[root@centos8 ~]# tail -f /tmp/enc &\n[root@centos8 ~]# puppet agent -t --verbose --server $HOSTNAME\nPUPPET ENC SCRIPT Tue Jun 2 13:04:45 UTC 2020 centos8.wisse.example.com\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: Find /puppet/v3/node/centos8.wisse.example.com resulted in 404 with the message: {\"message\":\"Not Found: Could not find node centos8.wisse.example.com\",\"issue_kind\":\"RESOURCE_NOT_FOUND\"}\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nPUPPET ENC SCRIPT Tue Jun 2 13:04:46 UTC 2020 centos8.wisse.example.com\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Could not find node 'centos8.wisse.example.com'; cannot compile\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n{noformat}\n\nNote how it outputs the ENC script twice. Since our ENC script calls a HTTP API, this increases the server load."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46f52d7d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10539"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o027fc:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_12720072894_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_21079015366"}], "description": "When configuring Puppetserver as an ENC script (using node_terminus = exec + external_nodes), that script is called twice for every Puppet run.\n\nhttps://puppet.com/docs/puppet/latest/nodes_external.html#merging-classes-from-multiple-sources states:\n> This behavior isn\u2019t mimicked when calling an ENC, which is invoked only once with the agent\u2019s full node name.\n\nLater on it again states:\n> Unlike regular node definitions, where a node can match a less specific definition if an exactly matching definition isn\u2019t found (depending on Puppet\u2019s strict_hostname_checking setting), an ENC is called only once, with the node\u2019s full name.", "environment": "{noformat}\n[root@centos8 ~]# rpm -qa | grep -i puppet\npuppet-agent-6.15.0-1.el8.x86_64\npuppet6-release-6.0.0-10.el8.noarch\npuppetserver-6.11.1-1.el8.noarch\n{noformat}\n\n{code}\n# Set up Puppetserver with a trivial ENC\nyum -y install https://yum.puppet.com/puppet6-release-el-8.noarch.rpm\nyum -y install puppetserver\n\ncat > /usr/local/bin/enc <<EOF\n#!/bin/sh\necho PUPPET ENC SCRIPT \\$(date) \\$1 >> /tmp/enc-log\nEOF\nchmod +x /usr/local/bin/enc\n\ncat >> /etc/puppetlabs/puppet/puppet.conf <<EOF \nnode_terminus = exec\nexternal_nodes = /usr/local/bin/enc\nEOF\n\nsystemctl start puppetserver\n\n# Not needed since it'll be created automatically but allows us to tail later and be sure the file exists\ntouch /tmp/enc-log\nchown puppet: /tmp/enc-log\n{code}", "epicLinkSummary": "Environment convergence", "estimate": "PT0S", "externalId": "15418", "fixedVersions": [], "id": "15418", "issueType": "Improvement", "key": "SERVER-2818", "labels": ["ondeck1"], "originalEstimate": "PT0S", "parent": "24513", "parentSummary": "Environment convergence", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c100c4a57610068e74585", "resolution": "Won't Do", "resolutionDate": "2021-06-28T12:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "ENC endpoint is called twice per Puppet run", "timeSpent": "PT0S", "updated": "2021-06-30T02:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I think {{want}} is necessary because 1) puppetserver needs to handle REST requests for agents that don't yet have a client cert (during the agent's ssl bootstrap process), and 2) puppetserver may have a custom mount for serving files where a client cert isn't required. I assume the default value in {{jetty9_config.clj}} is that way because other trapperkeeper services can require the more strict {{need}} value.", "created": "2020-06-02T20:21:00.000000"}, {"author": "623a4a598d8b9c0068b7e31a", "body": "OK thanks, that makes sense. I guess the documentation was just confusing me then.", "created": "2020-06-02T20:30:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I'm going to close this as the DOC ticket is resolved. Feel free to reopen if I missed something.", "created": "2020-06-03T10:10:00.000000"}], "components": ["Puppet Server"], "created": "2020-06-02T04:52:00.000000", "creator": "623a4a598d8b9c0068b7e31a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46ef2f92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o027dk:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_105486871_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Server Version:* 6.11.1\n*OS Name/Version:* Debian GNU/Linux 10 (buster)\n\nThe default value for the webserver's {{client-auth}} setting is {{need}}: https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/master/src/puppetlabs/trapperkeeper/services/webserver/jetty9_config.clj#L75 ([documentation|https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/master/doc/jetty-config.md#client-auth])\n\nBut the default {{/etc/puppetlabs/puppetserver/conf.d/webserver.conf}}, that comes with the Debian package from apt.puppetlabs.com at least, has {{client-auth: want}}. This seems wrong, and less secure than it should be. Typically I would expect explicitly-configured settings in default configuration files to match built-in defaults, meaning you could remove the default config file and nothing would change.\n\nAlso, an example in the documentation has a comment that seems to imply that the default should be {{need}} (or maybe that's what it used to be); see DOCUMENT-1114.\n\nThe default {{webserver.conf}} seems to be here: https://github.com/puppetlabs/puppetserver/blob/master/ezbake/config/conf.d/webserver.conf", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15415", "fixedVersions": [], "id": "15415", "issueType": "Bug", "key": "SERVER-2817", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4a598d8b9c0068b7e31a", "resolution": "Incomplete", "resolutionDate": "2020-06-03T10:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "default webserver.conf client-auth value of \"want\" is not the system default, which is \"need\"", "timeSpent": "PT0S", "updated": "2020-06-03T10:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "body": "[~accountid:557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd] :)", "created": "2020-07-09T14:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're not going to do this at least until the vendor EOLs the OS.", "created": "2020-07-10T12:08:00.000000"}, {"author": "5abd613dd4cf3c56be24b70d", "body": "Closing this as there will be other tickets generated with this platform goes EOL", "created": "2020-09-30T00:01:00.000000"}], "components": [], "created": "2020-05-28T15:30:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@15ebe41f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0259k:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_91368989_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_939735653_*|*_10006_*:*_1_*:*_3611744754_*|*_10005_*:*_1_*:*_6101411324"}], "description": "Remove ubuntu-16.04-amd64 from [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml].\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16361", "fixedVersions": [], "id": "16361", "issueType": "Task", "key": "SERVER-2815", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Won't Fix", "resolutionDate": "2020-09-30T00:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable ubuntu-16.04-amd64 test pipeline for puppetserver", "timeSpent": "PT0S", "updated": "2020-09-30T00:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "body": "[~accountid:557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd]\u00a0and these ones :)", "created": "2020-07-09T14:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're not going to do this at least until the vendor EOLs the OS.", "created": "2020-07-10T12:08:00.000000"}, {"author": "5abd613dd4cf3c56be24b70d", "body": "Closing this as there will be other tickets generated with this platform goes EOL", "created": "2020-09-30T00:01:00.000000"}], "components": [], "created": "2020-05-28T15:30:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3de5be6e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0259c:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_91384850_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_939681310_*|*_10006_*:*_1_*:*_3611751977_*|*_10005_*:*_1_*:*_6101430687"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for ubuntu-16.04-amd64\n* Remove ubuntu-16.04-amd64 from [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml#L84-L93]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16042", "fixedVersions": [], "id": "16042", "issueType": "Task", "key": "SERVER-2814", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Won't Fix", "resolutionDate": "2020-09-30T00:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable ubuntu-16.04-amd64 builds for puppetserver", "timeSpent": "PT0S", "updated": "2020-09-30T00:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "body": "[~accountid:557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd]\u00a0putting this on your radar for froyo", "created": "2020-07-09T11:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're not going to do this at least until the vendor EOLs the OS.", "created": "2020-07-10T12:09:00.000000"}, {"author": "5abd613dd4cf3c56be24b70d", "body": "Closing this as there will be other tickets generated with this platform goes EOL", "created": "2020-09-30T00:00:00.000000"}], "components": [], "created": "2020-05-28T15:27:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5214f26a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02514:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_91605215_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_939598801_*|*_10006_*:*_1_*:*_3611760847_*|*_10005_*:*_1_*:*_6101456070"}], "description": "Remove el-6-x86_64 from [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml].\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16938", "fixedVersions": [], "id": "16938", "issueType": "Task", "key": "SERVER-2812", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Won't Fix", "resolutionDate": "2020-09-30T00:00:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable el-6-x86_64 test pipeline for puppetserver", "timeSpent": "PT0S", "updated": "2020-09-30T00:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "body": "[~accountid:557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd]\u00a0putting this on your radar for froyo", "created": "2020-07-09T11:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're not going to do this at least until the vendor EOLs the OS.", "created": "2020-07-10T12:09:00.000000"}], "components": [], "created": "2020-05-28T15:27:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6db8c405"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0250w:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_91617143_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_939641681_*|*_10006_*:*_1_*:*_3611732061_*|*_10005_*:*_1_*:*_6198370424"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for el-6-x86_64\n* Remove el-6-x86_64 from [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml#L84-L93]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16598", "fixedVersions": [], "id": "16598", "issueType": "Task", "key": "SERVER-2811", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Won't Fix", "resolutionDate": "2020-10-01T02:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable el-6-x86_64 builds for puppetserver", "timeSpent": "PT0S", "updated": "2020-10-01T02:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-05-27T21:19:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ef1b4c4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o024eo:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_137171498_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_55996520332"}], "description": "After updating i18n from 0.8.0 to 0.9.0 in clj-parent and bumping that in puppetserver and puppetdb projects, we encountered errors in which services won't reload. \n\nTo reproduce:\n# Install PE with i18n 0.9.0 in clj-parent and puppetserver (if it's still up, {{tacit-averaging}} has an instance of this).\n# {{systemctl reload pe-puppetserver}}\nAfter about 2 minutes, the reload fails with an error.\n\nWe reverted the bump in clj-parent for now, but we'd like to get to the bottom of what's causing this issue.\n\nFor puppetserver, this seemed to only occur on redhat 8 and debian 10: https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-master/1363/\nFor pe-puppetserver-extensions, we encountered failures on all platforms: https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/job/enterprise_pe-puppet-server-extensions_integration-system_smoke-master/164/\nPEZ failed for all platforms: https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/job/enterprise_pez_integration-system-pezv2_smoke_master/611/\nPEZ failed for pe-puppetdb on a different subset of platforms: https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/job/enterprise_pez_integration-system-pezv2_smoke_master/623/", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16937", "fixedVersions": [], "id": "16937", "issueType": "Bug", "key": "SERVER-2810", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Won't Fix", "resolutionDate": "2022-03-08T13:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Services won't reload using i18n 0.9.0", "timeSpent": "PT0S", "updated": "2022-03-08T13:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-05-26T10:18:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b237555"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkbbwz"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_95271_*|*_1_*:*_1_*:*_10589_*|*_10007_*:*_1_*:*_239282544_*|*_3_*:*_1_*:*_23512924_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10540887242"}], "description": "Now that we are switching to use Facter 4 for our dev environment facter submodule, we should make it auto-update the way Puppet does, since Facter 4 is under active development. Currently, puppet and puppet-agent are updated based on the last passing SHA of the agent. We can probably extract the Facter SHA from the [same place|https://github.com/puppetlabs/puppetserver/blob/bad100b374d46447c08ebb651d989e6f8baf1be7/Rakefile#L132].\n\nThe Jenkins job definition is [here|https://github.com/puppetlabs/ci-job-configs/blob/master/resources/job-groups/puppetserver.yaml#L24-L32].\n\nNote that we will only be able to use \"last passing\" from the agent branch for {{main}}/7.x. In master/6.x, the last passing Facter SHA will be 3.x, which is C++, and therefore not usable as a submodule. So we need to get the Facter 4 SHA from the agent's {{main}} \"last passing\" SHAs, which probably entails adding an addition env var to the rake task to allow specifying Facter's branch differently from Puppet's.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16360", "fixedVersions": ["SERVER 6.14.0"], "id": "16360", "issueType": "Improvement", "key": "SERVER-2809", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-09-28T11:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Auto-update Facter submodule", "timeSpent": "PT0S", "updated": "2020-10-14T13:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "They might be referring to the fact that the v1 endpoint is now disabled by default due to a CVE, and the v2 endpoint is restricted to queries from localhost for the same reason.\n\nThis is currently true in both 5.x and 6.x, but for 6.x at least we are working on fixing the v2 endpoint, see https://puppet.atlassian.net/browse/PE-28647.", "created": "2020-06-29T10:13:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The v1 endpoint is still disabled by default, as well as deprecated, and that should be called out. The v2 endpoint is no longer restricted to {{localhost}}, but you now need a valid certificate to connect to it, for both PuppetDB and Puppet Server.", "created": "2022-01-14T09:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:60e4906e4134aa006931a5d6] is this something you can help with?", "created": "2022-01-14T09:46:00.000000"}], "components": [], "created": "2020-05-22T02:01:00.000000", "creator": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d66bd56"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o020wo:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3312825096_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_53318488001"}], "description": "*Puppet Version: 5.5*\n *Puppet Server Version: 5.3*\n *OS Name/Version:*\n\nI had some feedback from a user that said the following docs page doesn't reflect the changes made in the latest Server version. They didn't give any more information than that though.\u00a0\n\n[https://puppet.com/docs/puppetserver/5.3/metrics-api/v1/metrics_api.html]\n\nBut please close if this page looks right to you. Thanks!\n\n*Changes needed:*\n* the {{/metrics/v1}} endpiont is now disabled by default\n* both the v1 and the v2 endpoints now require a certificate to be sent when querying them\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15413", "fixedVersions": [], "id": "15413", "issueType": "Bug", "key": "SERVER-2808", "labels": ["feedback-form-docs-site", "low-hanging-fruit", "server"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document auth changes to metrics endpoints from PE-28647 and PE-28468", "timeSpent": "PT0S", "updated": "2022-03-08T11:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]\u00a0let me know when you are done with this task, I will close the epic", "created": "2020-06-29T19:13:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Thanks for the reminder! Will close when I'm done.", "created": "2020-06-29T21:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Was https://github.com/puppetlabs/ci-job-configs/pull/7123 the only thing keeping this ticket open? If so, I just merged it and this can probably be resolved.", "created": "2020-06-30T10:55:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "yep, done.", "created": "2020-06-30T12:26:00.000000"}], "components": [], "created": "2020-05-18T08:57:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a1cc0b2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10514"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkr6i"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jun/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1257_*|*_10007_*:*_1_*:*_54063042_*|*_3_*:*_2_*:*_437353218_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_3236315008"}], "description": "(Initial planned release date: 2020-05-27)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-05-28T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "estimate": "PT0S", "externalId": "16908", "fixedVersions": [], "id": "16908", "issueType": "Task", "key": "SERVER-2807", "labels": [], "originalEstimate": "PT0S", "parent": "20205", "parentSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-06-30T12:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.12.0)", "timeSpent": "PT0S", "updated": "2020-06-30T12:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-05-18T08:57:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@764a08b5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10514"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01xmw:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1203_*|*_10007_*:*_1_*:*_1074417_*|*_3_*:*_1_*:*_283016_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_954185313"}], "description": "(Initial planned release date: 2020-05-27)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n", "duedate": "2020-05-22T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "estimate": "PT0S", "externalId": "16359", "fixedVersions": [], "id": "16359", "issueType": "Task", "key": "SERVER-2806", "labels": [], "originalEstimate": "PT0S", "parent": "20205", "parentSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-05-29T10:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.12.0)", "timeSpent": "PT0S", "updated": "2020-05-29T10:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-05-18T08:57:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46f352f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10514"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01xmo:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1192_*|*_3_*:*_1_*:*_56629059_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_897548481"}], "description": "(Initial planned release date: 2020-05-27)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-05-22T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "estimate": "PT0S", "externalId": "16040", "fixedVersions": [], "id": "16040", "issueType": "Task", "key": "SERVER-2805", "labels": [], "originalEstimate": "PT0S", "parent": "20205", "parentSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-05-29T10:00:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.12.0)", "timeSpent": "PT0S", "updated": "2020-05-29T10:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-05-18T08:57:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e37db71"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10514"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01xmg:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1406_*|*_10007_*:*_1_*:*_151865825_*|*_3_*:*_1_*:*_26969906_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1216341591"}], "description": "(Initial planned release date: 2020-05-27)\n\n* Write release notes for the release based on the tickets found in the previous step.\n  ** Check any tickets for a docs tab with desired information.\n  ** The release notes go in puppetserver/documentation/release_notes.markdown.\n  ** Request review from the docs team by pinging @clairecadman in the opened PR and give her at least two days prior to ship to review.\n  ** The opened PR should be approved prior to a go/no-go discussion but should not be merged until the release day.\n  ** Docs are built if changes have landed at noon at 5pm Pacific. If notes need to be published out of band ask in `#prod-docs`.\n", "duedate": "2020-05-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "estimate": "PT0S", "externalId": "15699", "fixedVersions": [], "id": "15699", "issueType": "Task", "key": "SERVER-2804", "labels": [], "originalEstimate": "PT0S", "parent": "20205", "parentSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-06-03T12:30:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare documentation (Puppet Server 6.12.0)", "timeSpent": "PT0S", "updated": "2020-06-03T12:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-05-18T08:57:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32129355"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10514"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01xm8:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1170_*|*_3_*:*_1_*:*_14667185_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_882878231"}], "description": "(Initial planned release date: 2020-05-27)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-05-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "estimate": "PT0S", "externalId": "15412", "fixedVersions": [], "id": "15412", "issueType": "Task", "key": "SERVER-2803", "labels": [], "originalEstimate": "PT0S", "parent": "20205", "parentSummary": "Puppet Platform 6.16.0 Release - 2020-05-27\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Fixed", "resolutionDate": "2020-05-28T18:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.12.0)", "timeSpent": "PT0S", "updated": "2020-05-28T18:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c0aba7910a200718b90a4", "created": "2020-05-15T01:07:00.000000", "name": "image-2020-05-15-09-07-39-973.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10819"}, {"attacher": "623c0aba7910a200718b90a4", "created": "2020-05-15T01:07:00.000000", "name": "puppet_server_tls.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10888"}], "comments": [{"author": "623c0aba7910a200718b90a4", "body": "Hi there,\n\nis there a possiblity to get a short feedback on this?", "created": "2020-05-22T06:01:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There's a section for the http-client in the puppetserver config, see https://puppet.com/docs/puppetserver/latest/config_file_puppetserver.html#examples.", "created": "2020-07-20T14:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing this, since there does exist a way to configure these. Please reopen if you're still having issues.", "created": "2020-07-28T17:22:00.000000"}], "components": ["Puppet Server"], "created": "2020-05-15T01:12:00.000000", "creator": "623c0aba7910a200718b90a4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@143b3a02"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01wo8:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6451812157_*|*_6_*:*_1_*:*_0"}], "description": "Hi,\n\nafter upgrade to 6.11.1 I noticed that my reports where missing from foreman. I looked into the logfile of puppetserver and found the following error:\n\n\u00a0\n{code:java}\n2020-05-15T09:02:10.142+02:00 ERROR [qtp1319108692-7694] [puppetserver] Puppet Report processor failed: Could not send report to Foreman at https://foreman.example.com/api/config_reports: Received fatal alert: handshake_failure\n[\"org/jruby/ext/openssl/SSLSocket.java:276:in `connect_nonblock'\", \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/protocol.rb:44:in `ssl_socket_connect'\", \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:985:in `connect'\", \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:924:in `do_start'\", \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:913:in `start'\", \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:1465:in `request'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/reports/foreman.rb:69:in `process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:37:in `block in process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:54:in `block in processors'\", \"org/jruby/RubyArray.java:1800:in `each'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:51:in `processors'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:30:in `process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:14:in `save'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:316:in `save'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:199:in `do_save'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:54:in `block in call'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290:in `override'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:53:in `call'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `block in process'\", \"org/jruby/RubyArray.java:1800:in `each'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:87:in `block in process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:70:in `block in with_request_profiling'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:66:in `with_request_profiling'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:86:in `block in process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:93:in `respond_to_errors'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:85:in `process'\", \"uri:classloader:/puppetserver-lib/puppet/server/master.rb:64:in `block in handleRequest'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290:in `override'\", \"uri:classloader:/puppetserver-lib/puppet/server/master.rb:63:in `handleRequest'\"]\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/reports/foreman.rb:75:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:37:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:54:in `block in processors'\norg/jruby/RubyArray.java:1800:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:51:in `processors'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:30:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:14:in `save'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:316:in `save'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:199:in `do_save'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:54:in `block in call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:53:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `block in process'\norg/jruby/RubyArray.java:1800:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:87:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:70:in `block in with_request_profiling'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:66:in `with_request_profiling'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:86:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:93:in `respond_to_errors'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:85:in `process'\nuri:classloader:/puppetserver-lib/puppet/server/master.rb:64:in `block in handleRequest'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290:in `override'\n{code}\nThe handshake_failure part hinted me that it might be a ssl problem. I captured the SSL traffic with tcpdump and found out that the puppet server connects to the foreman host with a SSL client that only supports CBC Ciphers:\n\n!image-2020-05-15-09-07-39-973.png!\n\nAs my Foreman webserver has CBC ciphers disabled to prevent POODLE attacks the connection is aborted.\n\nThe foreman Report script from [https://github.com/theforeman/puppet-foreman/blob/master/files/foreman-report_v2.rb] does not specify any ciphers.\n\nCan you tell me how to configure the ciphers used by the client request of puppetserver?\n\n\u00a0\n\nKind regards\n\nClemens\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16597", "fixedVersions": [], "id": "16597", "issueType": "Bug", "key": "SERVER-2802", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0aba7910a200718b90a4", "resolution": "Fixed", "resolutionDate": "2020-07-28T17:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver's HTTP Client only uses CBC Ciphers", "timeSpent": "PT0S", "updated": "2020-07-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is causing a few test failures, and we will likely need some changes in jvm-ssl-utils.", "created": "2020-05-19T15:41:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "bouncycastle 1.63 introduced changes to ASN1 parsing that cause two test failures. These have been resolved by https://github.com/puppetlabs/jvm-ssl-utils/pull/95 .\n\nbouncycastle 1.64 was a security follow-on to 1.63. It introduced an error case that was not there previously, which we are hitting. We have not yet determined whether the erroneous behavior was always happening and now we're just aware of it or whether 1.64 itself introduced a bug that is causing our test to error (latest is 1.65 and the error still occurs there).\n\nThe error in question involves the old, ruby version of our certs. According to https://github.com/puppetlabs/jvm-ssl-utils/commit/5847eeacb90d9f7177cc600025696b5b0423e80c, these certs may never have been technically correct, but we are required to support them for at least the next ~2 years (can you remind me where that math comes from [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]).\n\nThis may prevent us from taking up new bouncycastle versions.", "created": "2020-05-21T18:07:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Today I looked into building custom bouncycastle jars from source, so that we can add debug info in the hopes of determining whether this is our issue or a bouncycastle issue.\n\nThe first thing I tried was cloning https://github.com/bcgit/bc-java, checking out {{r1rv65}}, installing gradle, and running {{gradle build}} from the root of the repo. This gave me an error:\n{code:java}\nFAILURE: Build failed with an exception.\n\n* Where:\nBuild file '/Users/molly.waggett/stuff/bc-java/build.gradle' line: 26\n\n* What went wrong:\nA problem occurred evaluating root project 'bc-java'.\n> Failed to apply plugin [id 'net.saliman.cobertura']\n   > Could not create task ':generateCoberturaReport'.\n      > Could not create task of type 'GenerateReportTask'.\n         > No signature of method: static org.gradle.util.DeprecationLogger.whileDisabled() is applicable for argument types: (net.saliman.gradle.plugin.cobertura.GenerateReportTask$1) values: [net.saliman.gradle.plugin.cobertura.GenerateReportTask$1@de80c29]\n{code}\nThis is apparently a known issue: https://github.com/stevesaliman/gradle-cobertura-plugin/issues/168\n\nThen I tried using a 5.x version of gradle. I stopped getting the above^ error, but got a bunch of test failures that block the build. I tried editing the {{build.gradle}} file to skip the tests and/or not care if they failed, but it either didn't work or I did it wrong.. Because I'm honestly not even sure that {{gradle build}} is the right way to get a jar, I gave up on this approach.\n\nNext I looked up how to edit the existing jar directly. I found [jar commands|https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jar.html] that seem handy, but when inspecting the jar ({{$ jar tf .m2/repository/org/bouncycastle/bcpkix-jdk15on/1.65/bcpkix-jdk15on-1.65.jar}}), I didn't see the files we wanted to edit. Comparing to the bc-java repo, it looks like only the stuff under the [{{pkix}}|https://github.com/bcgit/bc-java/tree/master/pkix] directory is included in that jar^, whereas we traced the error to here: https://github.com/bcgit/bc-java/blob/master/core/src/main/java/org/bouncycastle/asn1/DefiniteLengthInputStream.java#L133\n\nI am extra confused now, so this is where I'm stopping for the day.", "created": "2020-05-26T18:40:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "We're now hoping to get this in for the first LTS.z.\n\n[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] Would you mind adding a note about what you did to get a build, so we remember when we come back to this?", "created": "2020-05-29T13:23:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I dunno if it's useful, because it still didn't produce a jar that looks like the one we pull in, but I commented out {{mail}}, {{tls}}, {{pg}}, and {{test}} in {{settings.gradle}}, then built with {{gradle build -x test}} to skip running the tests as part of the build, since they were still failing for me. That spit out a jar at {{build/libs/bc-java.jar}} that I have yet to figure out how to pull into our clojure projects, so I don't know if it works.", "created": "2020-05-29T14:22:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Crisis averted: catching the new exception thrown [here|https://github.com/bcgit/bc-java/commit/b1bc75254f5fea633a49a751a1a7339056f97856#diff-a64f8b21931a10d173f182cd8e2b1564R105] seems to solve the last issue, which is us hitting https://puppet.atlassian.net/browse/PUP-4467 in a new way.", "created": "2020-08-03T12:52:00.000000"}], "components": [], "created": "2020-05-14T12:16:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4883ae83"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkb8e9"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/May/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_85850348_*|*_1_*:*_1_*:*_11970975_*|*_10007_*:*_1_*:*_73405488_*|*_3_*:*_4_*:*_2006608073_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_4_*:*_4989009103"}], "description": "Currently, we pull in [BC 1.60|https://github.com/puppetlabs/bouncy-castle-vanagon/blob/master/configs/components/bcpkix-jdk15on.rb] for non-FIPS in our clojure projects. This is several versions behind the latest, and we should try to upgrade, so we're ready to upgrade if a security event happens.\n\nThey're also adding TLS 1.3 support in more recent versions, and we want to support this sometime soon.\n\nBouncycastle release notes: https://www.bouncycastle.org/releasenotes.html\nBouncycastle package repo: https://repo1.maven.org/maven2/org/bouncycastle/\n\n----\nFor the first step of this upgrade, we tried bumping the version in [jvm-ssl-utils|https://github.com/puppetlabs/jvm-ssl-utils]. In version 1.63, we hit a bug in the tests where BC renamed a bunch of types, we fixed that [here|https://github.com/puppetlabs/jvm-ssl-utils/pull/95]. But in 1.64 they fixed a CVE (introduced in 1.63) that is now breaking support for legacy Puppet certs. We need to determine if these are actually invalid now, or if the new changes to the parsing code introduced a bug that is causing our certs to look bad.\n\n1.63 vs. 1.64 diff: https://github.com/bcgit/bc-java/compare/r1rv63...r1rv64\n\nIf newer BC does not support our legacy certs, this upgrade is going to involve a major effort to deprecate those certs, and upgrading won't be possible till we've dealt with that. But if it's a bug, we probably need to work with BC to get it fixed upstream. In either case, we can't just upgrade currently.\n\nOnce we get it working in jvm-ssl-utils, the next step would be to make sure it works with the CA code in puppetserver. Once we see that clear up, we can do the upgrade itself.\n\nPlaces that need to be changed for the upgrade:\n* [clj-parent|https://github.com/puppetlabs/clj-parent/blob/master/project.clj#L136-L139] for FOSS\n* [bouncy-castle-vanagon|https://github.com/puppetlabs/bouncy-castle-vanagon] for PE\n\n----\nOther bumps as part of this work:\n* bctls-fips bumped to 1.0.10 smoothly\n* other fips libraries are rumored to be getting new updates in a week or so (from July 25), so will check back in on those", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15695", "fixedVersions": ["SERVER 6.13.0"], "id": "15695", "issueType": "Task", "key": "SERVER-2801", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2020-08-05T11:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Review and potentially bump BouncyCastle", "timeSpent": "PT0S", "updated": "2020-08-05T11:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-05-14T12:14:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78df08b1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01wcg:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_259143330_*|*_1_*:*_1_*:*_12099145_*|*_10007_*:*_1_*:*_10666914_*|*_3_*:*_1_*:*_40426557_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_287238610"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15411", "fixedVersions": ["SERVER 6.12.0"], "id": "15411", "issueType": "Sub-task", "key": "SERVER-2800", "labels": [], "originalEstimate": "PT0S", "parent": "16596", "parentSummary": "Dependency bumps for Puppet Server 6.12", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2020-05-21T13:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump Jetty in tk-jetty9 to latest of the upstream 9.4.x branch", "timeSpent": "PT0S", "updated": "2020-05-21T13:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-05-14T11:19:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b558b3d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkb2"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_61383_*|*_3_*:*_2_*:*_758066036_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_458137994_*|*_10005_*:*_1_*:*_15315913"}], "description": "This ticket tracks the various dependency bumps we need to make for the next server release, in preparation for the PE LTS release.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16596", "fixedVersions": ["SERVER 6.12.0"], "id": "16596", "issueType": "Task", "key": "SERVER-2799", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-05-28T17:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dependency bumps for Puppet Server 6.12", "timeSpent": "PT0S", "updated": "2020-05-28T17:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1058a011-1194-4f15-ac2c-2aff0e71c6ae", "attachments": [], "comments": [{"author": "557058:1058a011-1194-4f15-ac2c-2aff0e71c6ae", "body": "Resolved through re-init of SSL.", "created": "2020-05-10T19:13:00.000000"}], "components": ["Puppet Server"], "created": "2020-05-10T17:48:00.000000", "creator": "557058:1058a011-1194-4f15-ac2c-2aff0e71c6ae", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@35ac7dd2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01s60:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5175569_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Version:6.5*\n *Puppet Server Version: 6.11.1*\n *OS Name/Version: CentOS 8.1*\n\nCreating a new puppet server.\n\nFirst step was to do \"puppetserver ca setup\".\n\nThen I did \"systemctl start puppetserver\". This failed. Results from log file:\n\n-- Unit puppetserver.service has begun starting up.\nMay 11 09:40:19 puppet6 puppetserver[27355]: Execution error (ClassCastException) at com.puppetlabs.ssl_utils.SSLUtils/pemToCerts (SSLUtils.java:512).\nMay 11 09:40:19 puppet6 puppetserver[27355]: org.bouncycastle.asn1.x509.SubjectPublicKeyInfo cannot be cast to org.bouncycastle.cert.X509CertificateHolder\nMay 11 09:40:19 puppet6 puppetserver[27355]: Full report at:\nMay 11 09:40:19 puppet6 puppetserver[27355]: /tmp/clojure-240356140966546384.edn\nMay 11 09:40:20 puppet6 puppetserver[27355]: Background process 27362 exited before start had completed\nMay 11 09:40:20 puppet6 systemd[1]: puppetserver.service: Control process exited, code=exited status=1\nMay 11 09:40:20 puppet6 systemd[1]: puppetserver.service: Failed with result 'exit-code'.\nMay 11 09:40:20 puppet6 systemd[1]: Failed to start puppetserver Service.\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15410", "fixedVersions": [], "id": "15410", "issueType": "Bug", "key": "SERVER-2798", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "High (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:1058a011-1194-4f15-ac2c-2aff0e71c6ae", "resolution": "Fixed", "resolutionDate": "2020-05-10T19:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver execution error in bouncycastle", "timeSpent": "PT0S", "updated": "2020-05-10T19:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T11:59:00.000000"}, {"author": "623e7689562ab90069f9ec45", "body": "PR attempted:\u00a0 https://github.com/puppetlabs/puppetserver-ca-cli/pull/98", "created": "2022-03-09T23:00:00.000000"}], "components": ["Puppet Server"], "created": "2020-05-10T10:36:00.000000", "creator": "623e7689562ab90069f9ec45", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64604d85"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The `puppetserver ca list` command will now exit 1 when run on a non-CA server."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Mar/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_449254949_*|*_1_*:*_1_*:*_6148455044_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_254656035_*|*_10005_*:*_1_*:*_51488892701"}], "description": "Use case: I'm working on some scripting to run a puppetserver ca command.\u00a0 I want to put in a safeguard to prevent someone from running a CA command on a compile master.\u00a0 The notion I had was to detect the ca-master by looking at the CA.\n\n\u00a0\n\nA CA master runs {{puppetserver ca list --all}} just like you would expect.\u00a0 On the compile masters, though:\n\n\u00a0\n{code:java}\n# puppetserver ca list --all\nError:\n code: 403\n body: Forbidden request: /puppet-ca/v1/certificate_statuses/any_key (method :get). Please see the server logs for details.\nNo certificates to list\n\n# echo $?\n0\n{code}\n\u00a0\n\nSince everything about that query was a failure, I would expect an error code to be returned.\u00a0 Instead the error is all in the text.\u00a0 While obvious to a human that this failed, with it having exited 0 we're into grepping text to find that the command failed.", "environment": "OSP puppetserver 6.7.1 with a CA master and 3 compile masters behind a loadbalancer.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "14912", "fixedVersions": ["SERVER 6.19.0", "SERVER 7.6.1"], "id": "14912", "issueType": "Story", "key": "SERVER-2797", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7689562ab90069f9ec45", "resolution": "Fixed", "resolutionDate": "2022-03-16T16:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve exit code for errors in 'puppetserver ca list'", "timeSpent": "PT0S", "updated": "2022-03-16T16:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I think this is fixed by https://github.com/puppetlabs/puppetserver/pull/2338", "created": "2020-05-11T16:08:00.000000"}, {"author": "5c083dd9ed26a5223c94f646", "body": "Yes - will test and let ya know.", "created": "2020-05-12T04:59:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Please reopen if you found that this was not actually fixed.", "created": "2020-07-20T14:32:00.000000"}], "components": ["Puppet Server"], "created": "2020-05-10T10:04:00.000000", "creator": "5c083dd9ed26a5223c94f646", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71668920"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01s5c:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/May/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6150487964_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Server Version:* *6.11.1***\n *OS Name/Version: puppet/puppetserver:**6.11.1*\n{code:java}\nRunning /docker-entrypoint.d/80-ca.sh\n/opt/puppetlabs/puppet/lib/ruby/2.5.0/openssl/x509.rb:20:in `create_ext': subjectAltName = DNS:, DNS:puppet, DNS:agents-to-puppet, DNS:puppet-compilers, DNS:puppetserver-helm-chart-puppetserver-compilers-0, DNS:puppetserver-helm-chart-puppetserver-compilers-1, DNS:puppetserver-helm-chart-puppetserver-compilers-2: invalid extension string (OpenSSL::X509::ExtensionError)\n from /opt/puppetlabs/puppet/lib/ruby/2.5.0/openssl/x509.rb:20:in `create_extension'\n from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.7.0/lib/puppetserver/ca/local_certificate_authority.rb:190:in `add_subject_alt_names_extension'\n from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.7.0/lib/puppetserver/ca/local_certificate_authority.rb:170:in `sign_authorized_cert'\n from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.7.0/lib/puppetserver/ca/local_certificate_authority.rb:148:in `create_master_cert'\n from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.7.0/lib/puppetserver/ca/action/setup.rb:79:in `generate_pki'\n from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.7.0/lib/puppetserver/ca/action/setup.rb:67:in `run'\n from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.7.0/lib/puppetserver/ca/cli.rb:94:in `run'\n from /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'{code}\n\u00a0", "environment": "Tested using [the Helm chart|https://github.com/puppetlabs/puppetserver-helm-chart].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17525", "fixedVersions": ["SERVER 6.10.0"], "id": "17525", "issueType": "Bug", "key": "SERVER-2796", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5c083dd9ed26a5223c94f646", "resolution": "Fixed", "resolutionDate": "2020-07-20T14:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TLS Certs Auto-Creation Fails", "timeSpent": "PT0S", "updated": "2020-07-20T14:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The REST API for this is implemented in puppetserver, so I'm moving this to the SERVER project", "created": "2020-05-07T10:18:00.000000"}, {"author": "70121:463745ad-7c98-46c2-b4bb-24cfa92dbd55", "body": "Hi\n\nAny solution to this problem?", "created": "2020-05-11T09:28:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think this might be caused by a typo that I actually just came across today, where there's a misplaced parenthesis in this code https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L343-L346, that puts the delete outside of the {{certificate_request}} endpoint.\n\nI will fix this as part of the work I am doing in that area of the code.", "created": "2020-07-20T14:34:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We've fixed this in master, but I'll look at cherry-picking the fix to 5.x too.", "created": "2020-07-21T17:55:00.000000"}], "components": [], "created": "2020-05-06T13:15:00.000000", "creator": "70121:463745ad-7c98-46c2-b4bb-24cfa92dbd55", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27f23833"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Ubuntu 16.04 (amd64)"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01qrk:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Re-enabled the ability to delete certificate signing requests via the CA API."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/May/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_104116217_*|*_1_*:*_1_*:*_6485028123_*|*_10007_*:*_1_*:*_78123049_*|*_3_*:*_1_*:*_76451700_*|*_5_*:*_1_*:*_0"}], "description": "*I can get the CSR information through the API from client*\n\ncurl -X GET\u00a0\\\n\n\u00a0 --tlsv1 \\\n\n\u00a0 -H \"Accept: application/json\" \\\n\n\u00a0 --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem \\\n\n\u00a0 https://$PUPMASTER:8140/puppet-ca/v1/certificate_request/$CERTNAME\n\n\u00a0\n\n*Response:*\n\n-----BEGIN CERTIFICATE REQUEST-----\n\nMIIEbDCCAlQCAQAwJzElMCMGA1UEAwwcMDgwMDI3MDkwNWNlLmtpb3NrLnRwYi5s\n\nb2NhbDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOBphK7YTkSjn01X\n\nVYPdsszYDWCqzo97+DbCNY1/UTvPNMJ066IMjZj5So3GBqCkL1OR97pMxQc0XfJQ\n\n0RfUh6fyct6w2ngl8tqul/dlKhPbF1Sol9/voMrGpSWJJEGpuCu5qW+JO6XQrHET\n\nVkFAbmejef/9jHIPE82ZYRIWLM+jBnpV+8wnU0BN+myIN4ZnR2D+xU3KjU2T7k/h\n\n4IsHKh3j6lgmn5U/CTuaLU5AwxXItkDdJWNLNY9qfjAdEiQHcd6KMyprTd8ZZEoX\n\nDBNKm7AB1QL0+CLthUcoxpJyAiPId3+IUdMgqPVyET7/hxYUNhL42COQ0E/m0zJC\n\n\u00a0\n\n*But i can't delete this CSR*\u00a0\n\ncurl -X DELETE \\\n\n\u00a0 --tlsv1 \\\n\n\u00a0 -H \"Accept: application/json\" \\\n\n\u00a0 --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem \\\n\n\u00a0 https://$PUPMASTER:8140/puppet-ca/v1/certificate_request/$CERTNAME\n\n*Response:*\n\n*NOT FOUND.*\n\nCan you help me with this?\n\n\u00a0\n\n*Puppet Version: 5.5*\n *Puppet Server Version: 5.5*\n *OS Name/Version: Ubuntu*\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16595", "fixedVersions": ["SERVER 5.3.15", "SERVER 6.13.0"], "id": "16595", "issueType": "Bug", "key": "SERVER-2795", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:463745ad-7c98-46c2-b4bb-24cfa92dbd55", "resolution": "Fixed", "resolutionDate": "2020-07-23T14:30:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": " Error deleting CSR request through HTTP API", "timeSpent": "PT0S", "updated": "2020-07-23T14:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [{"attacher": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "created": "2020-05-24T23:28:00.000000", "name": "lambdas_puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10969"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Context: we started seeing this error after upgrading from JRuby 9.2.8.0 to 9.2.11.1. It hasn't shown up against since downgrading back to 9.2.8, though the server has crashed a couple times in a seemingly unrelated fashion (oomkill due to an abundance of JGit threads), that we now believe was caused by pe-backups and failed file-sync status requests. See https://puppet.atlassian.net/browse/PE-29081.\n\nThings I was looking into when I put this down:\n\n1) The heap dump was one-third full with what looks like a giant YieldSite object, which I've never seen before. It has a ton of repeating nests of objects in it. JRuby made some pretty hefty updates to the way they handle blocks in 9.2.10. Possibly related? [https://github.com/jruby/jruby/pull/6005]\n\n2) Brandon High saw something similar when upgrading the JRuby used for VMPooler, see [https://github.com/jruby/jruby/issues/6124.] He thought at the time that it was related to this [https://github.com/jruby/jruby/pull/6014].", "created": "2020-05-13T10:53:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Since nothing in the stack traces leading to the StackOverflow errors looks particularly suspicious, we're going to experiment with increasing the JVM stack size to 2MB (up from 1MB), which is the value recommended by JRuby at this point.", "created": "2020-05-15T14:31:00.000000"}, {"author": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "body": "After adding the options -XX:+UnlockDiagnosticVMOptions and -XX:+ShowHiddenFrames I'm getting the stacktrace attached (environment _classes stack attached but the catalog one looks identical)\u00a0\n\n[^lambdas_puppetserver.log]", "created": "2020-05-24T23:28:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "This seems to be fixed for 6.12 by turning off jruby's invokedynamic.yield setting.\n\n\u00a0\n\nReported upstream at https://github.com/jruby/jruby/issues/6260", "created": "2020-06-05T13:12:00.000000"}], "components": [], "created": "2020-05-05T18:24:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ec66d71"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkb"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "It was possible to get a StackOverflowError after running puppet server for a while. This was introduced with the upgrade to JRuby 9.2.11.1 in server 6.11 and has been fixed by turning off a new optimization that came with that version of JRuby."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/May/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2314941377_*|*_1_*:*_1_*:*_27119_*|*_3_*:*_2_*:*_258366760_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_597186355"}], "description": "Twice since the update to JRuby 9.2.11.1, our internal Puppet deploy has hit an unrecoverable state where catalog compiles and {{environment_classes}} requests repeatedly throw StackOverflow errors. This was hit once after running two days, then again after running another week.\n\n\u00a0\n\n*Catalog Compiles:*\n{code:java}\n2020-05-01T00:00:22.514-07:00 WARN  [qtp547561796-115247] [o.e.j.s.HttpChannel] /puppet/v3/catalog/pe-compiler-infranext-prod-2.infc-aws.puppet.net\njava.lang.StackOverflowError: null\n  at opt.puppetlabs.puppet.lib.ruby.vendor_ruby.puppet.pops.parser.lexer2.RUBY$method$scan$0(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/lexer2.rb:711)\n  at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:95)\n  at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:105)\n  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:365)\n  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:153)\n  at com.headius.racc.Cparse$Parser.call_lexer(Cparse.java:744)\n  at com.headius.racc.Cparse$Parser.racc_yyparse(Cparse.java:727)\n  at com.headius.racc.Cparse$Parser$INVOKER$i$1$0$racc_yyparse.call(Cparse$Parser$INVOKER$i$1$0$racc_yyparse.gen)\n  at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:837)\n  at org.jruby.RubyClass.finvokeWithRefinements(RubyClass.java:514)\n  at org.jruby.RubyBasicObject.send(RubyBasicObject.java:1748)\n  at org.jruby.RubyBasicObject$INVOKER$i$send.call(RubyBasicObject$INVOKER$i$send.gen)\n  at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:174)\n  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:74)\n  at uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.racc.parser.invokeOther1:__send__(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/racc/parser.rb:325)\n  at uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.racc.parser.RUBY$method$yyparse$0(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/racc/parser.rb:325)\n  at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:121)\n  at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:175)\n  at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)\n  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203)\n  at opt.puppetlabs.puppet.lib.ruby.vendor_ruby.puppet.pops.parser.parser_support.invokeOther2:yyparse(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/parser_support.rb:246)\n  at opt.puppetlabs.puppet.lib.ruby.vendor_ruby.puppet.pops.parser.parser_support.RUBY$method$_parse$0(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/parser_support.rb:246)\n  at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:95)\n  at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:105)\n  at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)\n  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141)\n... {code}\n*environment_classes:*\n{code:java}\njava.lang.StackOverflowError: null\n  at java.base/java.security.AccessController.doPrivileged(Native Method)\n  at java.base/jdk.internal.logger.DefaultLoggerFinder.isSystem(DefaultLoggerFinder.java:142)\n  at java.logging/java.util.logging.Logger.demandLogger(Logger.java:650)\n  at java.logging/java.util.logging.Logger.getLogger(Logger.java:717)\n  at java.logging/java.util.logging.Logger.getLogger(Logger.java:701)\n  at com.headius.invokebinder.Binder.<init>(Binder.java:71)\n  at com.headius.invokebinder.Binder.from(Binder.java:162)\n  at org.jruby.ir.targets.YieldSite.yield(YieldSite.java:98)\n  at opt.puppetlabs.puppet.lib.ruby.vendor_ruby.puppet.pops.parser.lexer2.RUBY$method$scan$0(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/lexer2.rb:711)\n  at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:95)\n  at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:105)\n  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:365)\n  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:153)\n  at com.headius.racc.Cparse$Parser.call_lexer(Cparse.java:744)\n  at com.headius.racc.Cparse$Parser.racc_yyparse(Cparse.java:727)\n  at com.headius.racc.Cparse$Parser$INVOKER$i$1$0$racc_yyparse.call(Cparse$Parser$INVOKER$i$1$0$racc_yyparse.gen)\n  at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:837)\n  at org.jruby.RubyClass.finvokeWithRefinements(RubyClass.java:514)\n  at org.jruby.RubyBasicObject.send(RubyBasicObject.java:1748)\n  at org.jruby.RubyBasicObject$INVOKER$i$send.call(RubyBasicObject$INVOKER$i$send.gen)\n  at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:174)\n  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:74)\n  at uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.racc.parser.invokeOther1:__send__(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/racc/parser.rb:325)\n  at uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.racc.parser.RUBY$method$yyparse$0(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/racc/parser.rb:325)\n  at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:121)\n  at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:175)\n  at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)\n  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203)\n  at opt.puppetlabs.puppet.lib.ruby.vendor_ruby.puppet.pops.parser.parser_support.invokeOther2:yyparse(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/parser_support.rb:246)\n  at opt.puppetlabs.puppet.lib.ruby.vendor_ruby.puppet.pops.parser.parser_support.RUBY$method$_parse$0(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/parser_support.rb:246)\n  at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:95)\n  at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:105)\n... {code}\nWe suspect that this is related to the JRuby bump, though Java was also updated around the same time.\n\nCurrent course of action is to roll back JRuby to 9.2.8.0, but we should continue to investigate the root cause here. JRuby recently did some work around block handling, and the spot in the lexer that seems to be common to both of these is a {{yield}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15692", "fixedVersions": ["SERVER 6.12.0"], "id": "15692", "issueType": "Bug", "key": "SERVER-2793", "labels": ["customer0"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-06-11T11:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "StackOverflow errors after Puppet Server runs for a while", "timeSpent": "PT0S", "updated": "2020-08-26T10:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2020-05-05T00:00:00.000000", "creator": "623a4a598d8b9c0068b7e31a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1843fb3a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91i6"}], "description": "*Puppet Server Version:* 6.11.0\n*OS Name/Version:* Debian GNU/Linux 10\n\n*Desired Behavior:*\n{{/opt/puppetlabs/bin/puppetserver gem install --no-user-install --verbose r10k}} should install the gem on an IPv6-only system.\n\n*Actual Behavior:*\n{quote}ERROR:  Could not find a valid gem 'r10k' (>= 0), here is why:\n          Unable to download data from https://rubygems.org/ - Errno::ENETUNREACH: Network is unreachable - Failed to open TCP connection to rubygems.org:443 (Network is unreachable - Network is unreachable) (https://rubygems.org/specs.4.8.gz)\n{quote}\n\nThis appears to be a problem with Puppetserver's Java, because installing gems using the regular system {{gem}} works fine from this IPv6-only machine. This is on a completely default, fresh Debian and puppetserver installation. The machine has no legacy IP address (other than 127.0.0.1). Doing the same thing on a VM that does have legacy IP access, {{puppetserver gem install}} works fine.", "environment": "IPv6-only", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "15409", "fixedVersions": [], "id": "15409", "issueType": "Bug", "key": "SERVER-2792", "labels": ["IPv6"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4a598d8b9c0068b7e31a", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver gem doesn't work with IPv6", "timeSpent": "PT0S", "updated": "2024-02-26T15:18:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-04-29T18:07:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50a3f146"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10593"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090009"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server will no longer complete requests for legacy (3.x) Puppet endpoints."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_57027719_*|*_1_*:*_1_*:*_7072606856_*|*_10007_*:*_1_*:*_2985500_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6740251479_*|*_10005_*:*_1_*:*_1820658201"}], "description": "Puppet 3 has been EOL'ed for years. The legacy routes were added to support migration from 3 to newer versions due to the REST request path changing from {{/:environment/:indirection/:name}} to {{/puppet/v3/:indirection/:name?environment=:environment}}. We should make the backing code \"dead\"by removing the service from the bootstrap config. \n\nThis entails\n* updating the fixture [file|https://github.com/puppetlabs/puppetserver/blob/main/ezbake/system-config/services.d/bootstrap.cfg#L10] we ship with FOSS\n* Fixing any tests that fail as a result of these changes\n\nFor propagating this to PE, see PE-30415.", "epicLinkSummary": "Puppet 7 Server", "estimate": "PT0S", "externalId": "16038", "fixedVersions": ["SERVER 7.0.0"], "id": "16038", "issueType": "Task", "key": "SERVER-2791", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": "20311", "parentSummary": "Puppet 7 Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Done", "resolutionDate": "2020-10-28T09:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Delete legacy routes to handle puppet agents < 4", "timeSpent": "PT0S", "updated": "2022-07-28T13:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-04-24T18:55:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b346a99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10457"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01ka8:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1307_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2039214376"}], "description": "(Initial planned release date: 2020-04-30)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-05-01T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.20 Release - 2020-04-30\n", "estimate": "PT0S", "externalId": "15408", "fixedVersions": [], "id": "15408", "issueType": "Task", "key": "SERVER-2790", "labels": [], "originalEstimate": "PT0S", "parent": "26561", "parentSummary": "Puppet Platform 5.5.20 Release - 2020-04-30\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Done", "resolutionDate": "2020-05-18T09:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 5.3.13)", "timeSpent": "PT0S", "updated": "2020-05-18T09:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-04-24T18:55:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43b8b96d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10457"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01k9s:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1342_*|*_10007_*:*_1_*:*_3842930_*|*_3_*:*_1_*:*_29500_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_330859675"}], "description": "(Initial planned release date: 2020-04-30)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n", "duedate": "2020-04-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.20 Release - 2020-04-30\n", "estimate": "PT0S", "externalId": "14910", "fixedVersions": [], "id": "14910", "issueType": "Task", "key": "SERVER-2789", "labels": [], "originalEstimate": "PT0S", "parent": "26561", "parentSummary": "Puppet Platform 5.5.20 Release - 2020-04-30\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Done", "resolutionDate": "2020-04-28T15:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 5.3.13)", "timeSpent": "PT0S", "updated": "2020-04-28T15:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "http://builds.delivery.puppetlabs.net/puppetserver/5.3.13", "created": "2020-04-28T14:44:00.000000"}], "components": [], "created": "2020-04-24T18:55:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6341a669"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10457"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01k9k:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1187_*|*_3_*:*_1_*:*_6189009_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_324380686"}], "description": "(Initial planned release date: 2020-04-30)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-04-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.20 Release - 2020-04-30\n", "estimate": "PT0S", "externalId": "17524", "fixedVersions": [], "id": "17524", "issueType": "Task", "key": "SERVER-2788", "labels": [], "originalEstimate": "PT0S", "parent": "26561", "parentSummary": "Puppet Platform 5.5.20 Release - 2020-04-30\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Done", "resolutionDate": "2020-04-28T14:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.13)", "timeSpent": "PT0S", "updated": "2020-04-28T14:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Everything looked good here, the only meaningful change was a bump to the CA CLI gem.", "created": "2020-04-28T13:00:00.000000"}], "components": [], "created": "2020-04-24T18:55:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@779e6159"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10457"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01k9c:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1410_*|*_3_*:*_1_*:*_800990_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_323528758"}], "description": "(Initial planned release date: 2020-04-30)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-04-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.20 Release - 2020-04-30\n", "estimate": "PT0S", "externalId": "17221", "fixedVersions": [], "id": "17221", "issueType": "Task", "key": "SERVER-2787", "labels": [], "originalEstimate": "PT0S", "parent": "26561", "parentSummary": "Puppet Platform 5.5.20 Release - 2020-04-30\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Done", "resolutionDate": "2020-04-28T13:00:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.13)", "timeSpent": "PT0S", "updated": "2020-04-28T13:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-04-24T18:53:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73a9d737"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01k2w:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1206_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2039357480"}], "description": "(Initial planned release date: 2020-04-30)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-05-01T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.15.0 Release - 2020-04-30\n", "estimate": "PT0S", "externalId": "17523", "fixedVersions": [], "id": "17523", "issueType": "Task", "key": "SERVER-2786", "labels": [], "originalEstimate": "PT0S", "parent": "23375", "parentSummary": "Puppet Platform 6.15.0 Release - 2020-04-30\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Done", "resolutionDate": "2020-05-18T09:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.11.0)", "timeSpent": "PT0S", "updated": "2020-05-18T09:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-04-24T18:52:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@252437cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01k2g:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1149_*|*_10007_*:*_1_*:*_3841396_*|*_3_*:*_1_*:*_15450_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_331020418"}], "description": "(Initial planned release date: 2020-04-30)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n", "duedate": "2020-04-24T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.15.0 Release - 2020-04-30\n", "estimate": "PT0S", "externalId": "16903", "fixedVersions": [], "id": "16903", "issueType": "Task", "key": "SERVER-2785", "labels": [], "originalEstimate": "PT0S", "parent": "23375", "parentSummary": "Puppet Platform 6.15.0 Release - 2020-04-30\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Done", "resolutionDate": "2020-04-28T15:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.11.0)", "timeSpent": "PT0S", "updated": "2020-04-28T15:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "http://builds.delivery.puppetlabs.net/puppetserver/6.11.0", "created": "2020-04-28T15:54:00.000000"}], "components": [], "created": "2020-04-24T18:52:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fcb5393"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01k28:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1274_*|*_3_*:*_1_*:*_4130225_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_330740975"}], "description": "(Initial planned release date: 2020-04-30)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-04-24T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.15.0 Release - 2020-04-30\n", "estimate": "PT0S", "externalId": "16594", "fixedVersions": [], "id": "16594", "issueType": "Task", "key": "SERVER-2784", "labels": [], "originalEstimate": "PT0S", "parent": "23375", "parentSummary": "Puppet Platform 6.15.0 Release - 2020-04-30\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Done", "resolutionDate": "2020-04-28T15:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.11.0)", "timeSpent": "PT0S", "updated": "2020-04-28T15:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Not many tickets tagged with the fix version, but everything looks right.", "created": "2020-04-28T14:44:00.000000"}], "components": [], "created": "2020-04-24T18:52:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e0ed4a7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01k20:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1310_*|*_3_*:*_2_*:*_6380041_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_324297847"}], "description": "(Initial planned release date: 2020-04-30)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-04-23T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.15.0 Release - 2020-04-30\n", "estimate": "PT0S", "externalId": "16358", "fixedVersions": [], "id": "16358", "issueType": "Task", "key": "SERVER-2783", "labels": [], "originalEstimate": "PT0S", "parent": "23375", "parentSummary": "Puppet Platform 6.15.0 Release - 2020-04-30\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Done", "resolutionDate": "2020-04-28T14:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.11.0)", "timeSpent": "PT0S", "updated": "2020-04-28T14:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5ade3a9f91bc312e6a4a30f3", "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Is the plan to deprecate or drop support?", "created": "2020-10-19T10:50:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Just deprecate. Java 8 is supported upstream longer than Java 11 at this point.", "created": "2020-10-19T12:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We didn't do this for 7 since a deprecation can go out any time and we still don't have a plan to _remove_ support for Java 8.", "created": "2020-11-12T12:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is important, we should definitely do this.", "created": "2022-01-14T12:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Adding this to the Puppet Server 8 epic so we can decide if removing support for Java 8 in Platform 8 is what we want to do.", "created": "2022-12-09T12:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:63d40628f6e1b543161789a7] has mentioned this in the upcoming Puppet 8 announcement here: [https://groups.google.com/g/puppet-dev/c/0ObKV0cpLDY] and links to an amazingly brief email deprecating Java 8 support earlier.", "created": "2023-01-13T11:27:00.000000"}], "components": [], "created": "2020-04-22T08:53:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a1014f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3165"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0lii"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Deprecation"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet server will no longer support running on JDK 8. "}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Oct/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26011_*|*_10007_*:*_1_*:*_154566557_*|*_3_*:*_1_*:*_341068830_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_87210792976"}], "description": "We currently support Java 8 and 11 in Puppet Server 6; Java 8, 11, & 17 in latest releases of Puppet Server 7.x; and should support Java 11 & 17 in Puppet Server 8.0.\n\nIn the meantime we should deprecate java 8 in platform 7 so users know we can drop it if/when it becomes too costly in CI or due to maintenance.\n\nIn 7.x we should do:\n * documenting the deprecation\n * emitting a warning in the puppetserver logs on startup\n\nIn 8.0 we should update all of our packages (in EZBake) to depend on the Java virtual packages where available or the latest LTS packages available elsewhere (eg default-jre-headless,\u00a0 java-17-openjdk-headless).\n\n\u00a0\n\n\u00a0", "epicLinkSummary": "Puppet Server 8", "estimate": "PT0S", "externalId": "15687", "fixedVersions": ["SERVER 7.4.5", "SERVER 8.0.0"], "id": "15687", "issueType": "Story", "key": "SERVER-2782", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "16890", "parentSummary": "Puppet Server 8", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Fixed", "resolutionDate": "2023-02-01T10:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Deprecate Java 8 for puppetserver in Platform 7", "timeSpent": "PT0S", "updated": "2023-02-03T15:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is this still an issue? If so, here are some thoughts:\n\nWe have [logic|https://github.com/puppetlabs/puppetserver/blob/6.7.0/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L237-L241] that prevents requiring those files when {{enable-infra-crl}} is false. Do you know if you ever had it enabled? (It started being enabled by default in PE in 2019.0.3, but this is a FOSS installation, right?) Might be worth checking for a {{certificate-authority}} section in the main {{puppetserver.conf}} and seeing if anything looks awry there", "created": "2020-07-24T11:03:00.000000"}, {"author": "623a4a36a95758006959ff56", "body": "Hi,\n\nIt is still an issue. We had the crl enabled a year or so ago with this in the /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf\n{code:java}\ncertificate-authority: {\n    enable-infra-crl: true\n}\n{code}\nThis is the content of our /etc/puppetlabs/puppetserver/conf.d/ca.conf\n{code:java}\ncertificate-authority: {\n    # allow CA to sign certificate requests that have subject alternative names.\n    allow-subject-alt-names: true\n\n    # allow CA to sign certificate requests that have authorization extensions.\n    allow-authorization-extensions: true\n\n    # enable the separate CRL for Puppet infrastructure nodes\n    # enable-infra-crl: false\n}\n{code}\nWhat I tried so far is to:\n # Set the\u00a0*enable-infra-crl* to *false* in the *puppetserver.conf*\n # Comment out the entire\u00a0*certificate-authority* section in the *puppetserver.conf* (which has just the enable-infra-crl config var in it)\n # Uncomment the\u00a0*enable-infra-crl: false* in the *ca.conf*\n\nAfter each of these changes I was doing a restart of the puppetserver daemon and testing with *touch\u00a0/etc/puppetlabs/puppet/ssl/ca/inventory.txt* which resulted in the warning messages in the puppetserver.log\n\nI removed the symlink and just created an empty /etc/puppetlabs/puppet/ssl/ca/infra_inventory.txt which seems to have resolved the issue with the warning messages for now. The server however still requires this file and\u00a0\n\nHowever I am not sure if some mechanism would want to insert entries in this file, which would start the issue again.\n\nThe *cert_inventory* variable is pointing to\u00a0*/etc/puppetlabs/puppet/ssl/ca/inventory.txt*, so I hope the\u00a0infra_inventory.txt should not be populated any more.", "created": "2020-07-29T02:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We don't have any mechanisms for inserting entries into the {{infra_inventory.txt}} in FOSS (in PE it is populated automatically). So having the blank file should be safe.\n\nI tried reproducing the issue you describe on Puppet Server 6.7.1, settings things to false and deleting the {{infra_inventory.txt}} file, but I have been unable to make it break. I was hoping we would have some debug logging to print out CA settings, but it looks like that only triggers on first initialization. Because the only thing I can think is that it's still being enabled somehow, though I don't know where that would be.\n\nLet me know if you'd like more help digging into this further, or if the disappearance of the warnings is sufficient.", "created": "2020-07-29T10:55:00.000000"}, {"author": "623a4a36a95758006959ff56", "body": "Hi,\n\nThe workaround to create an empty\u00a0infra_crl.pem and\u00a0infra_inventory.txt does not seem to work. I tried adding a new client and when I triggered puppet for the first time it complained with this:\n\n\u00a0\n{code:java}\nroot@client # /opt/puppetlabs/bin/puppet agent -tv --use_srv_records --srv_domain my.example.com --environment master\nError: Failed to parse CRLs as PEM\nError: Could not run: Failed to parse CRLs as PEM\n{code}\nWhen I ran the above program with --debug it was failing right after:\n\n\u00a0\n\n\u00a0\n{code:java}\nDebug: HTTP GET https://my.example.com:8140/puppet-ca/v1/certificate_revocation_list/ca returned 200 OK\n{code}\nRunning a curl against that URL was returning 200 but the content was empty.\n\n\u00a0\n\nI populated the\u00a0infra_crl.pem file with the contents of the ca_crl.pem file and the issue was resolved, so it seems this file is still in use, at least when I initially register a new puppet client. I have afterwards decided to create a symlink as before from\u00a0ca_crl.pem to\u00a0infra_crl.pem in case a client updates the CRL and uses the same URL to retrieve it.\n\nAs for the files still referencing the infra_inventory.txt I found these:\n{code:java}\nroot@puppet-1 # grep infra_inventory.txt /opt/puppetlabs/ -Rl\n/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.6.0/lib/puppetserver/ca/action/enable.rb\n/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.6.0/lib/puppetserver/ca/action/setup.rb\n/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.6.0/lib/puppetserver/ca/action/import.rb\n{code}\nShould I eventually delete some gem and if yes, how exactly, as I do not wish to break our puppet?", "created": "2020-07-31T04:21:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "No, those things in the gems only matter when you use those CLI commands, and they set you up with defaults like the ones you have in place now: an empty infra_inventory file and a infra_crl that's a copy of your regular CRL chain. Your symlink is better only if you expect to actually be referencing that file (e.g. returning it from the endpoint), which shouldn't happen if the mode is disabled.\n\nSo then the fact that the endpoint is returning the contents of the {{infra_crl}} tells me your puppetserver still thinks the setting is enabled. As you can see in the handler for the endpoint, we choose which path to return based on the value of the {{enable-infra-crl}} setting: https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L87.\n\nCan you grep your {{conf.d}} directory and see if maybe there's somewhere else where {{enable-infra-crl}} still {{true}}? Can you also confirm your current puppetserver version? Is it still 6.7.1?", "created": "2020-07-31T09:52:00.000000"}, {"author": "623a4a36a95758006959ff56", "body": "We have upgraded our puppetserver to 6.10.0-1bionic nearly a month ago.\n\nPer my reply to the ticket on 29 July we do have the\u00a0enable-infra-crl enabled via puppetserver.conf. Setting it to false, removing the files \"infra_crl.pem and\u00a0infra_inventory.txt\" and restarting causes no issues. Question is however when it is enabled, why not use\u00a0*ca_crl.pem* instead of\u00a0*infra_crl.pem* and\u00a0*inventory.txt* instead of\u00a0*infra_inventory.txt*, since these files are already present for a CA enabled server?", "created": "2020-08-05T05:31:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There are some good docs [here|https://puppet.com/docs/puppetserver/latest/infrastructure_crl.html] on what the setting does and why you might want to use it. \n\nThe motivation for the feature is that, if your CRL is very large (e.g. because you have a lot of ephemeral infrastructure in your feel and spin up and spin down a lot of nodes), it can cause problems when the agents try to download it. \n\nSo you can turn on the infrastructure CRL, which creates a separate file that contains only the revocation status of your Puppet infrastructure nodes (so like your master and any compilers), as listed in {{infra_inventory.txt}}. The agents will get this shorter file when they query the CRL endpoint, rather than the big huge one with all of the other agent nodes.\n\nIf you don't have a problem with large CRLs, you probably want to disable the setting, at which point you should be able to get rid of the extra files entirely. If you _do_ have this problem, you should put the cert names of your Puppet Infrastructure nodes in {{infra_inventory.txt}}, so the agents can download the streamlined CRL. Note that the contents of this file have to be updated manually if you change your set of compilers.\n\nHope this makes things clearer!", "created": "2020-08-05T09:17:00.000000"}, {"author": "623a4a36a95758006959ff56", "body": "Thanks for the clarification Maggie. I guess with our infrastructure of less than 1000 nodes it would not make much sense to have the crl enabled. I wentahead and disabled it, which stopped both issues the one with the warning messages (as we will delete the infra_inventory.txt and infra_crl.pem) and the one with the requirement of the two files.", "created": "2020-08-06T07:26:00.000000"}], "components": ["Certificate Authority"], "created": "2020-04-20T10:27:00.000000", "creator": "623a4a36a95758006959ff56", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9a195a7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o01g4g:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Jul/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_8578507047_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_50787125718"}], "description": "*Puppet Version: 6.10.1*\n *Puppet Server Version:\u00a06.7.1*\n *OS Name/Version: Ubuntu Bionic*\n\nI noticed that this started after our upgrade from puppet 5.5 to puppet 6.7 in November last year. On out Puppet CA the file inventory.txt contains also the certificates which are already revoked. I also noticed that the file infra_inventory.txt and infra_crl.pem were last updated the day before we upgraded out puppet in November, thus I backed them up and removed them. After restart however the server failed to start with the following message:\n\n*Missing:*\n*/etc/puppetlabs/puppet/ssl/ca/infra_crl.pem*\n*/etc/puppetlabs/puppet/ssl/ca/infra_inventory.txt*\n\nthus I symlinked them to the respective ca_crl.pem and inventory.txt\n\nAs these files are not in use maybe the scripts requiring them should check for the proper filename and look for it instead.\n\n*Desired Behavior:*\n # Not being required to keep the infra_crl.pem and infra_inventory.txt if they are not in use.\n # Do not receive WARN messages on inventory.txt mtime update.\n\n*Actual Behavior:*\n\nThe following are the permissions of the related directories and files that we have:\n\ndrwxr-xr-x 8 puppet puppet 8 Nov 28 2018 /etc/puppetlabs\ndrwxr-xr-x 4 puppet puppet 8 Apr 1 11:00 /etc/puppetlabs/puppet\ndrwxrwx--x 8 puppet puppet 9 Apr 20 06:47 /etc/puppetlabs/puppet/ssl\ndrwxr-xr-x 5 puppet puppet 13 Apr 20 17:08 /etc/puppetlabs/puppet/ssl/ca\n-rw-r--r-- 1 puppet puppet 23K Apr 20 18:01 /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\n-rw-r--r-- 1 puppet puppet 1.9K Jun 13 2018 /etc/puppetlabs/puppet/ssl/ca/ca_crt.pem\n-rw-r----- 1 puppet puppet 3.2K Jun 13 2018 /etc/puppetlabs/puppet/ssl/ca/ca_key.pem\nlrwxrwxrwx 1 puppet puppet 10 Apr 20 17:08 infra_crl.pem -> ca_crl.pem\nlrwxrwxrwx 1 puppet puppet 13 Apr 20 17:07 infra_inventory.txt -> inventory.txt\n-rw-rw-rw- 1 puppet puppet 0 Apr 20 18:00 /etc/puppetlabs/puppet/ssl/ca/infra_serials\n-rw-r--r-- 1 puppet puppet 102K Apr 20 18:00 /etc/puppetlabs/puppet/ssl/ca/inventory.txt\ndrwxr-x--- 2 puppet puppet 3 Jun 13 2018 /etc/puppetlabs/puppet/ssl/ca/private\ndrwxr-xr-x 2 puppet puppet 2 Apr 20 17:51 /etc/puppetlabs/puppet/ssl/ca/requests\n-rw-r--r-- 1 puppet puppet 4 Apr 20 18:00 /etc/puppetlabs/puppet/ssl/ca/serial\ndrwxr-xr-x 2 puppet puppet 642 Apr 20 17:51 /etc/puppetlabs/puppet/ssl/ca/signed\n\n/etc/puppetlabs is recursively chown-ed to puppet:puppet\n\nEvery time the files:\n\n/etc/puppetlabs/puppet/ssl/ca/infra_inventory.txt\n/etc/puppetlabs/puppet/ssl/ca/inventory.txt\n\nare updated (even via chown, chmod, touch) we get these error messages in our puppetserver.log:\n\n*2020-04-20T18:00:06.172+02:00 WARN [clojure-agent-send-off-pool-0] [p.p.certificate-authority] Failed to find/load certificate for Puppet Infrastructure Node:0x0479 2020-04-16T11:42:07UTC 2025-04-16T11:42:07UTC /CN=FQDN.example.com*\n\nThe error messages are always the exact number of entries we have in the inventory.txt file.\n\n\u00a0The above error messages also appear when the puppetserver is started/restarted\n\nThis is our\u00a0/etc/puppetlabs/puppetserver/conf.d/ca.conf\n{code:java}\ncertificate-authority: {\n    # allow CA to sign certificate requests that have subject alternative names.\n    allow-subject-alt-names: true    # allow CA to sign certificate requests that have authorization extensions.\n    allow-authorization-extensions: true    # enable the separate CRL for Puppet infrastructure nodes\n    # enable-infra-crl: false\n}\n{code}\n... and\u00a0/etc/puppetlabs/puppetserver/services.d/ca.cfg\n{code:java}\npuppetlabs.services.ca.certificate-authority-service/certificate-authority-service\npuppetlabs.trapperkeeper.services.watcher.filesystem-watch-service/filesystem-watch-service{code}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14908", "fixedVersions": [], "id": "14908", "issueType": "Bug", "key": "SERVER-2781", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4a36a95758006959ff56", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "WARN messages in logs when modifying inventory.txt or infra_inventory.txt files.", "timeSpent": "PT0S", "updated": "2022-03-08T11:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:63d40628f6e1b543161789a7] so the\u00a0[response|https://github.com/puppetlabs/clj-http-client/blob/master/src/java/com/puppetlabs/http/client/Response.java] object that our Java client returns doesn't appear to have all the same capabilities or fields as {{Puppet::HTTP::Response}}. For example, it's missing the message that goes along with the code, so far as I can tell, and doesn't automatically support streaming the body. How do you think these gaps should be handled? Is it worth creating a lookup table for the message? Does it even make sense to try to implement streaming in the Ruby wrapper? Seems like the damage would already be done if we have the body in full in the response already... but I could be misremembering the benefits of the streaming API.", "created": "2020-09-18T10:28:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The response message/reason is not super important, but can be included in error messages either when a  [Puppet::HTTP::ResponseError|https://github.com/puppetlabs/puppet/blob/main/lib/puppet/http/errors.rb#L16] is created or by the caller, e.g. [puppetdb terminus|https://github.com/puppetlabs/puppetdb/pull/3329/files#diff-b43043c3acd01a66d0886dd6f3b01d71R90]. A look up table seems fine, though I imagine the underlying Java client could provide that info, IIUC that'd require a minor change to clj-http-client to plumb that through?\n\nThe streaming response body is more important for the agent as it may download a multi-GB file from something other than puppetserver, e.g. {{source => 'https://...'}}. I imagine catalogs and reports can get fairly large (tens/hundreds MB), so it'd be good to support streaming at some point, along with other connection pool improvements. But for now, since we've always read the entire response body in memory, you could fake out the method by defining a {{read_body}} method that just yields {{response.body}} or raises if a block is not provided.\n", "created": "2020-09-18T11:55:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "In order for acceptance tests to pass, [https://github.com/puppetlabs/puppetdb/pull/3329] needs to go in first, so PDB starts pulling the client out of the context and stops using Puppet's HttpPool, which calls the constructor of the client incorrectly for the new API.", "created": "2020-09-25T10:08:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've linked the classifier update work now, I think that will become important once we put this in a PE context.", "created": "2020-09-25T12:44:00.000000"}], "components": [], "created": "2020-04-17T18:02:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24f05000"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10593"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkbbwr"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now provides an HTTP client whose API conforms to the HTTP client provided by Puppet. This new client is stored in the Puppet runtime as `Puppet.runtime[:http]`."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/May/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_95354553_*|*_1_*:*_1_*:*_2239353564_*|*_10007_*:*_2_*:*_1192361696_*|*_3_*:*_2_*:*_1224542218_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_512101369_*|*_10006_*:*_1_*:*_10880752419"}], "description": "Currently Puppet Server implements a [wrapper|https://github.com/puppetlabs/puppetserver/blob/319fac1df276f862c7b4aa57f8f36380020e31f3/src/ruby/puppetserver-lib/puppet/server/http_client.rb] around the Apache AsyncHttp library (with help from the puppetlabs/clj-http-client library).\n\nCoremmunity has reworked the http client in Puppet and the contract that extensions should implement (like there is one now).\n\nWe should create a new HttpClient in Puppet Server that implements the [new interface|https://github.com/puppetlabs/puppet/blob/master/lib/puppet/http/client.rb] and if the new interface is available we should configure Puppet with it.\n\nHere are some notes from previous discussions:\n\n{quote}\n\nI was thinking puppetserver could register its client (similar to the existing `Puppet::Server::HttpClient`) but with the following differences:\n* A Puppet::Server::HttpClient object is created for a given server/port/use_ssl, and later the request path/query parameters/headers are passed to the get/post method. With the new API, the get/post methods receive the full URL.\n* The existing\u00a0Puppet::Server::HttpClient maps HTTP response codes back to Net::HTTP, but that's no longer necessary. Puppetserver can create a Puppet::HTTP::Response object directly with the status code, message, etc. and return that (or a subclass of it)\n* The client can raise `Puppet::HTTP::HTTPError` or more specific subclasses if it wants instead of deriving from SocketError\n\u00a0\nExample implementation registration:\u00a0[https://gist.github.com/joshcooper/98344933dbd8c44d63acd9183e1481b3]\n\n{quote}\n\u00a0\nWhoever picks this up should reach out to Josh Cooper for further details.", "epicLinkSummary": "Puppet 7 Server", "estimate": "PT0S", "externalId": "17522", "fixedVersions": ["SERVER 7.0.0"], "id": "17522", "issueType": "Task", "key": "SERVER-2780", "labels": ["ondeck1", "platform_7"], "originalEstimate": "PT0S", "parent": "20311", "parentSummary": "Puppet 7 Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2020-10-21T14:36:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide a server impl of the new Puppet http client", "timeSpent": "PT0S", "updated": "2020-10-21T14:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Josh is looking to do the removal of the backing code for this, so we should do this sooner rather than later.", "created": "2020-08-18T10:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "After this was merged, [this test|https://github.com/puppetlabs/puppetserver/blob/6.x/acceptance/suites/tests/authorization/x509_auth.rb#L129] started failing. However, it continues to fail after reverted the commit, and also fails for me locally on 6.x, even though it appears to be passing in Jenkins. Might need a sanity check...", "created": "2020-09-03T17:49:00.000000"}], "components": [], "created": "2020-04-14T09:32:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@537726ca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10593"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkbbrc"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Removes the setting to opt into using Puppet's legacy authorization files. Users are now required to use puppetserver's `auth.conf`, provided by trapperkeeper-authorization."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Aug/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_685068681_*|*_1_*:*_1_*:*_9792475790_*|*_10007_*:*_1_*:*_68421547_*|*_3_*:*_1_*:*_17489276_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2226848255"}], "description": "The legacy auth.conf file that Puppet used to use has been [heavily deprecated|https://puppet.com/docs/puppetserver/latest/deprecated_features.html#use-of-core-puppet-authconf-for-authorizing-master-service-routes] for several major releases, and doesn't have all the necessary features to correctly authenticate certs with authorization extensions, which are now widely in use in PE (e.g. CA cert, compiler certs). Puppet Server's trapperkeeper-authorization HOCON file has been a much more powerful replacement for a long time.\n\nThis ticket is to track removing the [setting|https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/master/master_service.clj#L109-L111], but not all of its backing code. That gives us the freedom to remove the code at our leisure, once the mode is no longer available to users.", "epicLinkSummary": "Puppet 7 Server", "estimate": "PT0S", "externalId": "16900", "fixedVersions": ["SERVER 7.0.0"], "id": "16900", "issueType": "Task", "key": "SERVER-2778", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": "20311", "parentSummary": "Puppet 7 Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-09-09T10:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove legacy auth setting", "timeSpent": "PT0S", "updated": "2020-09-09T10:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Specifically, something like a {{java_pkcs7}} encryptor would have to be implemented that called through to BouncyCastle instead of using the Ruby OpenSSL library:\n\nhttps://github.com/voxpupuli/hiera-eyaml/blob/master/lib/hiera/backend/eyaml/encryptors/pkcs7.rb", "created": "2020-04-09T12:49:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "As far as the BouncyCastle side of things I was imagining extending and making available\u00a0[https://github.com/puppetlabs/jvm-ssl-utils/blob/master/src/java/com/puppetlabs/ssl_utils/SSLUtils.java]\u00a0.", "created": "2020-04-09T13:38:00.000000"}, {"author": "557058:c9b48d3b-3b16-4fba-80cb-daf19743b953", "body": "Please remember to file a ticket to update docs when this is fixed. Thanks!", "created": "2020-05-15T10:53:00.000000"}], "components": [], "created": "2020-04-09T11:58:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f13bab8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91jc"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "39829,45830,48447"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/20"}], "description": "Loading Ruby's OpenSSL implementation fails in FIPS environments because JRuby's OpenSSL implementation isn't FIPS compatible. However we use BouncyCastle in a FIPS compatible way to load keys/certs in our our CA. We should expose those methods in Ruby & work with the heira-eyaml maintainers to use those so their important community projects can be used in a FIPS installation.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "15407", "fixedVersions": [], "id": "15407", "issueType": "Improvement", "key": "SERVER-2777", "labels": ["fips", "jira_escalated"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Work with hiera-eyaml maintainers to not use Ruby's OpenSSL for key decryption", "timeSpent": "PT0S", "updated": "2022-05-24T14:16:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Couple of notes for retro / maybe winston updates.\n * Should not create tickets for releases less than one week away.\n * We don't include anything wrt docs in our release process. We need tasks if not a whole step re docs, especially as I think we'll be taking more of this on.", "created": "2020-04-14T14:57:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "fwiw, we didn't have to re-enable promotions because we always had a release branch for the PE release that this FOSS release was targeting.", "created": "2020-04-24T17:26:00.000000"}], "components": [], "created": "2020-04-08T10:14:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d9fbd4a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2772"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o018tc:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1233_*|*_10007_*:*_1_*:*_242638586_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1407394111"}], "description": "(Initial planned release date: 2020-04-14)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-04-15T00:00:00.000000", "epicLinkSummary": "Puppet Server 6.10.0 2020-04-14 Release", "estimate": "PT0S", "externalId": "17510", "fixedVersions": [], "id": "17510", "issueType": "Task", "key": "SERVER-2776", "labels": [], "originalEstimate": "PT0S", "parent": "15443", "parentSummary": "Puppet Server 6.10.0 2020-04-14 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Done", "resolutionDate": "2020-04-27T12:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.10.0)", "timeSpent": "PT0S", "updated": "2020-04-27T12:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This release will go out in a PE release, but the release branch for that PE release was cut prior to the tag being built. It was manually promoted into PE and promotions were never disabled.\n\nsee\n\n[https://github.com/puppetlabs/enterprise-dist/commit/fd34ce714f18b8cad37e3f6c298a3c96330edf24]\n\nand\n\n[http://pebuildinfo.slice.puppetlabs.net/package/pe-puppetserver/version/2019.4.0.34]\n\n\u00a0\n\nIn reviewing promotions it does look like we missed re-enabling those after the last LTS release for the 5.3.x branch. I will re-enable those.", "created": "2020-04-14T14:53:00.000000"}], "components": [], "created": "2020-04-08T10:14:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a9c1c8e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2772"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o018sw:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1302_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_535212675"}], "description": "(Initial planned release date: 2020-04-14)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n", "duedate": "2020-04-10T00:00:00.000000", "epicLinkSummary": "Puppet Server 6.10.0 2020-04-14 Release", "estimate": "PT0S", "externalId": "16896", "fixedVersions": [], "id": "16896", "issueType": "Task", "key": "SERVER-2775", "labels": [], "originalEstimate": "PT0S", "parent": "15443", "parentSummary": "Puppet Server 6.10.0 2020-04-14 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Fixed", "resolutionDate": "2020-04-14T14:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.10.0)", "timeSpent": "PT0S", "updated": "2020-04-14T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Repo was tagged and packages built on April 7th:\u00a0[http://builds.delivery.puppetlabs.net/puppetserver/6.10.0/]", "created": "2020-04-14T14:42:00.000000"}], "components": [], "created": "2020-04-08T10:14:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a0c6563"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2772"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o018sg:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1299_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_534537917"}], "description": "(Initial planned release date: 2020-04-14)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-04-10T00:00:00.000000", "epicLinkSummary": "Puppet Server 6.10.0 2020-04-14 Release", "estimate": "PT0S", "externalId": "16357", "fixedVersions": [], "id": "16357", "issueType": "Task", "key": "SERVER-2774", "labels": [], "originalEstimate": "PT0S", "parent": "15443", "parentSummary": "Puppet Server 6.10.0 2020-04-14 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Fixed", "resolutionDate": "2020-04-14T14:43:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.10.0)", "timeSpent": "PT0S", "updated": "2020-04-14T14:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Everything in the 5.3.x branch is in the 6.10.0 tag (note: this work is happening after the tag because of a process snafu)\n\nTicketmatch brought up several commits that referenced tickets w/o fixVersions relating to Server. I'll list the ones here that won't be fix and why:\n * FACT-2390 - This was a Facter 2 release that was needed when testing threadsafe Puppet. It is now possible to run threadsafe Puppet Server w/ Facter 2 in test environments.\n * PE-28468 - CVE-2020-7943 was fixed under the auspices of the PE project. There some some commits in this release related to that.\n * SERVER-2660 - This has the correct version but cannot be seen I assume because of visibility restrictions on the ticket.\n * SERVER-2677 - CI transient, helped but not resolved in this timeframe.\n * SERVER-2763 - This is a known issue with the upcoming release from the JRuby update. Some commits landed to workaround our own issues.", "created": "2020-04-14T14:41:00.000000"}], "components": [], "created": "2020-04-08T10:14:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@dbf938"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2772"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o018s8:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1400_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_534423012"}], "description": "(Initial planned release date: 2020-04-14)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-04-09T00:00:00.000000", "epicLinkSummary": "Puppet Server 6.10.0 2020-04-14 Release", "estimate": "PT0S", "externalId": "16037", "fixedVersions": [], "id": "16037", "issueType": "Task", "key": "SERVER-2773", "labels": [], "originalEstimate": "PT0S", "parent": "15443", "parentSummary": "Puppet Server 6.10.0 2020-04-14 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Fixed", "resolutionDate": "2020-04-14T14:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.10.0)", "timeSpent": "PT0S", "updated": "2020-04-14T14:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-04-08T10:14:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67462f9c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server 6.10.0 2020-04-14 Release"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o018rs:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_60409606533_*|*_6_*:*_1_*:*_0"}], "description": "Puppet Server 6.10.0 2020-04-14 Release\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15443", "fixedVersions": [], "id": "15443", "issueType": "Epic", "key": "SERVER-2772", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Fixed", "resolutionDate": "2022-03-08T13:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 6.10.0 2020-04-14 Release", "timeSpent": "PT0S", "updated": "2022-03-08T13:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There is not really enough information in here to figure out what might have gone wrong. The timeout error you mention is probably just due to load. If by \"15 concurrency\" you mean that you have 15 JRuby instances, that seems like a lot more than you would need for just 2000 nodes. You may want to take a look at the [tuning guide|https://puppet.com/docs/pe/2019.8/config_puppetserver.html].\n\nI'm going to close this. If this is still an issue for you, or if you have more information to help diagnose, please reopen.", "created": "2020-10-27T12:52:00.000000"}], "components": ["Puppet Server"], "created": "2020-03-30T02:34:00.000000", "creator": "623e750fbef8a60068c8da79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30640cb8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00p4w:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Oct/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18267502317_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.14.0*\n *Puppet Server Version: 6.9.1*\n *OS Name/Version: Ubuntu 16.04*\n\nPuppetserver crashed in the middle of a run of 2000 nodes run with a concurrency of 15 and has been restarted by systemd\n\nCould not be reproduced until now.\n\n*Desired Behavior:*\n\nPuppetserver should not crash.\n\n\u00a0\n\n*Actual Behavior:*\n\nWhile trying to reproduce issue SERVER-2766 we noticed an unexpected crash of the Puppetserver service.\n\nExamples:\n\nThis has been shown in the logs at the time of the crash\n{noformat}\n2020-03-26T16:20:03.378+01:00 ERROR [clojure-agent-send-off-pool-473] [p.t.s.s.status-core] Status callback for puppet-profiler timed out, shutting down background task 2020-03-26T16:20:03.449+01:00 ERROR [clojure-agent-send-off-pool-473] [p.t.s.s.status-core] #error { :cause nil :via [{:type java.util.concurrent.CancellationException :message nil :at [java.util.concurrent.FutureTask report FutureTask.java 121]}] :trace [[java.util.concurrent.FutureTask report FutureTask.java 121] [java.util.concurrent.FutureTask get FutureTask.java 191] [clojure.core$deref_future invokeStatic core.clj 2300] [clojure.core$future_call$reify__8454 deref core.clj 6974] [clojure.core$deref invokeStatic core.clj 2320] [clojure.core$deref invoke core.clj 2306] [puppetlabs.trapperkeeper.services.status.status_core$fn__24285$guarded_status_fn_call__24290$fn__24291$fn__24301 invoke status_core.clj 323] [puppetlabs.trapperkeeper.services.status.status_core$fn__24285$guarded_status_fn_call__24290$fn__24291 invoke status_core.clj 323] [puppetlabs.trapperkeeper.services.status.status_core$fn__24285$guarded_status_fn_call__24290 invoke status_core.clj 305] [puppetlabs.trapperkeeper.services.status.status_core$fn__24387$call_status_fn_for_service__24396$fn__24399 invoke status_core.clj 385] [puppetlabs.trapperkeeper.services.status.status_core$fn__24387$call_status_fn_for_service__24396 invoke status_core.clj 367] [puppetlabs.trapperkeeper.services.status.status_core$fn__24387$call_status_fn_for_service__24396$fn__24397 invoke status_core.clj 378] [puppetlabs.trapperkeeper.services.status.status_core$fn__24387$call_status_fn_for_service__24396 invoke status_core.clj 367] [puppetlabs.trapperkeeper.services.status.status_core$fn__24425$call_status_fns__24430$fn__24431$fn__24433 invoke status_core.clj 405] [clojure.core$pmap$fn__8462$fn__8463 invoke core.clj 7022] [clojure.core$binding_conveyor_fn$fn__5754 invoke core.clj 2030] [clojure.lang.AFn call AFn.java 18] [java.util.concurrent.FutureTask run FutureTask.java 264] [java.util.concurrent.ThreadPoolExecutor runWorker ThreadPoolExecutor.java 1128] [java.util.concurrent.ThreadPoolExecutor$Worker run ThreadPoolExecutor.java 628] [java.lang.Thread run Thread.java 834]]}\n{noformat}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16593", "fixedVersions": [], "id": "16593", "issueType": "Bug", "key": "SERVER-2770", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e750fbef8a60068c8da79", "resolution": "Cannot Reproduce", "resolutionDate": "2020-10-27T12:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver crashes unexpectedly", "timeSpent": "PT0S", "updated": "2020-10-27T12:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "6243b0334fe01d006ba5c498", "created": "2020-03-28T01:53:00.000000", "name": "clojure-14664521080227414194.edn", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11128"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We haven't seen this anywhere else. Is this still an issue for you or did you solve it?", "created": "2020-10-27T12:54:00.000000"}, {"author": "623c0eb3562ab90069f8b0fe", "body": "*****Facing the same issue while starting the server****\n\n\u00a0systemd[1]: Starting puppetserver Service...\nAn illegal reflective access operation has occurred\n\u00a0 puppetserver[88017]: WARNING: Illegal reflective access by dynapath.defaults$fn__15798$fn__15799 ([file:/opt/puppetlabs/server/apps/puppetserver/puppet-se|file:///opt/puppetlabs/server/apps/puppetserver/puppet-se]>\n puppetserver[88017]: WARNING: Please consider reporting this to the maintainers of dynapath.defaults$fn__15798$fn__15799\n puppetserver[88017]: WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\n puppetserver[88017]: WARNING: All illegal access operations will be denied in a future release\n\u00a0 puppetserver[88017]: 2021-05-05 12:47:54,769 INFO [o.e.j.u.log] Logging initialized @4484ms to org.eclipse.jetty.util.log.Slf4jLog\n puppetserver[88017]: 2021-05-05 12:47:54,872 INFO [p.t.s.w.jetty9-core] Removing buggy security provider SunPKCS11 version 11\n\n\u00a0\n\n\u00a0", "created": "2021-05-04T21:01:00.000000"}, {"author": "623c0eb3562ab90069f8b0fe", "body": "Upon checking the status\n\n\u00a0puppetserver[97125]: at clojure.lang.RestFn.applyTo(RestFn.java:137)\npuppetserver[97125]: at clojure.lang.Var.applyTo(Var.java:705)\n\u00a0puppetserver[97125]: at clojure.main.main(main.java:40)\n\u00a0puppetserver[97125]: Execution error at jdk.internal.reflect.NativeConstructorAccessorImpl/newInstance0 (NativeConstructorAccessorImpl.java:-2).\n\u00a0puppetserver[97125]: Service ':CaService' not found\n\u00a0puppetserver[97125]: Full report at:\npuppetserver[97125]: /tmp/clojure-10810103828623896986.edn\npuppetserver[97125]: 2021-05-05 13:02:17,661 INFO [p.t.internal] Shutting down due to JVM shutdown hook.\npuppetserver[97125]: 2021-05-05 13:02:17,665 INFO [p.t.internal] Beginning shutdown sequence\n\u00a0puppetserver[97125]: 2021-05-05 13:02:17,672 INFO [p.t.internal] Finished shutdown sequence", "created": "2021-05-04T21:05:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2020-03-28T01:59:00.000000", "creator": "6243b0334fe01d006ba5c498", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63d4821d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00oxc:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Oct/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19234721423_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:* 6.14.0-1buster\n *Puppet Server Version:* 6.9.2-1buster\n *OS Name/Version:*\u00a0Debian buster ** \n\nI followed the instructions on [https://puppet.com/docs/puppetserver/latest/install_from_packages.html] to install {{puppetserver}} on this Debian system.\n\nI also downgraded to 6.7.2-1buster, which I understand is a \"released\" version, but the same problem persists.\n\n\u00a0\n\n*Desired Behavior:*\n\n{{systemctl start puppetserver}} should start the server.\n\n*Actual Behavior:*\n\nInstead, the server fails to start. This is the log contents:\n\n\u00a0\n{noformat}\nar 28 08:39:07 pulse systemd[1]: Starting puppetserver Service...\nMar 28 08:39:15 pulse puppetserver[2767]: WARNING: An illegal reflective access operation has occurred\nMar 28 08:39:15 pulse puppetserver[2767]: WARNING: Illegal reflective access by dynapath.defaults$fn__15949$fn__15950 (file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar) to method java.net.URLClassLoader.addURL(java.net.URL)\nMar 28 08:39:15 pulse puppetserver[2767]: WARNING: Please consider reporting this to the maintainers of dynapath.defaults$fn__15949$fn__15950\nMar 28 08:39:15 pulse puppetserver[2767]: WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\nMar 28 08:39:15 pulse puppetserver[2767]: WARNING: All illegal access operations will be denied in a future release\nMar 28 08:39:20 pulse puppetserver[2767]: 2020-03-28 08:39:20,868 INFO  [o.e.j.u.log] Logging initialized @13695ms to org.eclipse.jetty.util.log.Slf4jLog\nMar 28 08:39:21 pulse puppetserver[2767]: 2020-03-28 08:39:21,077 INFO  [p.t.s.w.jetty9-core] Removing buggy security provider SunPKCS11 version 11\nMar 28 08:39:23 pulse puppetserver[2767]: 2020-03-28 08:39:23,726 ERROR [p.t.internal] Error during app buildup!\n.Tea\nMar 28 08:39:23 pulse puppetserver[2767]: #011at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.lang.Reflector.invokeConstructor(Reflector.java:305)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invokeStatic(internal.clj:116)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invoke(internal.clj:106)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$instantiate$fn__14538.invoke(internal.clj:157)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$instantiate.invokeStatic(internal.clj:154)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$instantiate.invoke(internal.clj:147)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$fn__15176$build_app_STAR___15185$fn__15186.invoke(internal.clj:562)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$fn__15176$build_app_STAR___15185.invoke(internal.clj:530)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$fn__15280$boot_services_STAR___15289$fn__15290$fn__15291.invoke(internal.clj:632)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$fn__15280$boot_services_STAR___15289$fn__15290.invoke(internal.clj:631)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.internal$fn__15280$boot_services_STAR___15289.invoke(internal.clj:626)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.core$fn__16070$boot_with_cli_data__16077$fn__16078.invoke(core.clj:131)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.core$fn__16070$boot_with_cli_data__16077.invoke(core.clj:96)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.core$fn__16099$run__16104$fn__16105.invoke(core.clj:152)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.core$fn__16099$run__16104.invoke(core.clj:146)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.core$main.invokeStatic(core.clj:174)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:160)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.lang.Var.applyTo(Var.java:705)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.core$apply.invokeStatic(core.clj:665)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.core$apply.invoke(core.clj:660)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.main$_main.invokeStatic(main.clj:7)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:4)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.lang.Var.applyTo(Var.java:705)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.core$apply.invokeStatic(core.clj:665)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.main$main_opt.invokeStatic(main.clj:514)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.main$main_opt.invoke(main.clj:510)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.main$main.invokeStatic(main.clj:664)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.main$main.doInvoke(main.clj:616)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.lang.Var.applyTo(Var.java:705)\nMar 28 08:39:23 pulse puppetserver[2767]: #011at clojure.main.main(main.java:40)\nMar 28 08:39:24 pulse puppetserver[2767]: Execution error at jdk.internal.reflect.NativeConstructorAccessorImpl/newInstance0 (NativeConstructorAccessorImpl.java:-2).\nMar 28 08:39:24 pulse puppetserver[2767]: Service ':CaService' not found\nMar 28 08:39:24 pulse puppetserver[2767]: Full report at:\nMar 28 08:39:24 pulse puppetserver[2767]: /tmp/clojure-14664521080227414194.edn\nMar 28 08:39:24 pulse puppetserver[2767]: 2020-03-28 08:39:24,220 INFO  [p.t.internal] Shutting down due to JVM shutdown hook.\nMar 28 08:39:24 pulse puppetserver[2767]: 2020-03-28 08:39:24,229 INFO  [p.t.internal] Beginning shutdown sequence\nMar 28 08:39:24 pulse puppetserver[2767]: 2020-03-28 08:39:24,264 INFO  [p.t.internal] Finished shutdown sequence\nMar 28 08:39:24 pulse puppetserver[2767]: Background process 2774 exited before start had completed\nMar 28 08:39:24 pulse systemd[1]: puppetserver.service: Control process exited, code=exited, status=1/FAILURE{noformat}\nThe referenced file {{/tmp/clojure-14664521080227414194.edn}} is attached.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15228", "fixedVersions": [], "id": "15228", "issueType": "Bug", "key": "SERVER-2769", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243b0334fe01d006ba5c498", "resolution": "Cannot Reproduce", "resolutionDate": "2020-11-05T15:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver won't start, dies with java.lang.RuntimeException: Service ':CaService' not found", "timeSpent": "PT0S", "updated": "2021-05-04T21:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The {{returned=6}} part means there was a problem with the handshake. The {{write finished}} makes me think the remote side (puppetserver) closed the connection. Given the transient nature of this, I'd suggest using tcpdump/wireshark to capture traffic when the connection succeeds and when it fails. Given that it succeeds when debugging is enabled, it sounds timing relating. Just a guess but perhaps the server is running out of entropy and cannot generate the session keys needed for the connection? When the connection succeeds, which ciphersuite is selected? You can tell on the agent by running with {{puppet agent -t --http_debug}}", "created": "2020-03-30T10:57:00.000000"}, {"author": "624380d2a629c30068a3c8f3", "body": "TLS 1.2\ncipher suite: TLS_DHE_RSA_WITH_AES128_GCM_SHA256\nsignature algo: rsa_pkcs1_sha512\n\n\n\nFailed handshake and successful handshake look similar in a packet capture other than the Puppet server sending a Close Notify warning after sending it's cert and trusted chain. So in wireshark, the failed one looks like: (agent)client hello, (server)server hello, (server)certificate, (server)alert warning close notify, (server)fin/ack, (client)ack, (client)certificate key exchange cert verify change cipher spec encypted handshake, (client)fin/ack, (server) ack)", "created": "2020-03-30T15:58:00.000000"}, {"author": "624380d2a629c30068a3c8f3", "body": "Found the problem.\n\nThe webserver.conf had the ssl-cert-chain directive pointing to the same ca.pem bundle as ssl-ca-cert's ca.pem (50 certs) as opposed to just the servers chain (2 certs). Commenting this optional directive out and restarting the puppetserver service enables the agent to connect without issue. Doesn't explain why changing logging verbosity allowed it to work though.", "created": "2020-04-01T15:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "My theory: this was likely a race condition, (e.g. reading 50 certs takes longer than reading just 2) and since logging at debug slows things down, the issue disappeared. Since you seem to have solved this, I'm going to close this ticket. Please reopen if there is any additional action you think we need to take.", "created": "2020-10-27T12:57:00.000000"}], "components": ["Puppet Server"], "created": "2020-03-27T17:48:00.000000", "creator": "624380d2a629c30068a3c8f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@538e270a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00owo:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Mar/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18472195969_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 6*\n *Puppet Server Version: 6.9.2*\n *OS Name/Version: RHEL 7.7*\n\nDescribe your issue in as much detail as possible\u2026\n\nCurrently running puppet server 6.9.2 on rhel7 in a DoD STIG'd environment (fips mode off on puppet server, on on agent). Agent is 6.14.0. Agents running puppet agent -t recieve a \"Warning: SSL_connect returned=6 errno=0 state=SSLv3/TLS write finished\" error. Checked all the usual suspects like certs and trusts (puppet CA is off, using DoD signed certs). Here's where it gets interesting. If I go into logback.xml and increase logging verbosity of org.eclipse.jetty from INFO to DEBUG, and restart the puppetserver service, everything works. No errors for the most part.\u00a0A restart by itself seems to have no effect. Switching back to INFO and restarting the error comes back. Switching org.apache.http to DEBUG and restarting had no effect. The switchup with org.eclipse.jetty isn't 100%, still sometimes get the error, so intermittent, but gets through enough that I can lay down config on the agent side. Fwiw, also had the error on 6.7 before updating to the latest.\n\n\n Describe steps to reproduce\u2026\n\n*Desired Behavior:*\u00a0proper connection between puppet agent and puppet server.\n\n*Actual Behavior:*\u00a0Warning: SSL_connect returned=6 errno=0 state=SSLv3/TLS write finished\n\nPlease take a moment\u00a0and attach any relevant log output and/or manifests. This will help us immensely when troubleshooting the issue.\n\nExamples:\n Run puppet agent with --test --trace --debug\n\nRelevant sections of {{/var/log/puppetlabs/puppetserver/puppetserver.log}} or any applicable logs from the same directory.\n\nFor more detailed information turn up the server logs by upping the log level in the server's logback.xml\n\nRelevant sections of configurations files (puppet.conf, hiera.conf, Server's conf.d, defaults/sysconfig)\n\nFor memory issues with server heap dumps are also helpful.\n\n\u00a0\n\nWill add logs and config on Monday.", "environment": "DoD environment with DISA STIGs applied, though fips mode is turned off on the puppet server side. RHEL7 servers on VMware hypervisors. Fully up to date on OS and Puppet patches. Puppet CA is turned off, using DoD issued certs and trusts.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17165", "fixedVersions": [], "id": "17165", "issueType": "Bug", "key": "SERVER-2768", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "624380d2a629c30068a3c8f3", "resolution": "Fixed", "resolutionDate": "2020-10-27T12:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Strange SSL behavior ", "timeSpent": "PT0S", "updated": "2020-10-27T12:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623e750fbef8a60068c8da79", "created": "2020-05-11T07:30:00.000000", "name": "Bildschirmfoto 2020-05-11 um 15.28.24.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11210"}, {"attacher": "623a4603761efb0069cd34da", "created": "2020-04-06T01:51:00.000000", "name": "image-2020-04-06-09-51-08-470.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10592"}, {"attacher": "557058:6f0efc68-27fe-4011-b778-4afc32bab332", "created": "2020-05-12T03:57:00.000000", "name": "performance_puppetserver.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11054"}], "comments": [{"author": "623a4603761efb0069cd34da", "body": "This is a graph of the CodeHeap profiled nmethods cache. As of 25th of march we're starting to hit the \"max\" line which is also the day we've first seen those performance issues again. The Puppetserver update happened on the 19th of march, Puppet itself was upgraded on the 24th of march.\n\n!image-2020-04-06-09-51-08-470.png|width=1322,height=369!", "created": "2020-04-06T01:51:00.000000"}, {"author": "623e750fbef8a60068c8da79", "body": "This is just from today. You clearly can see the codeheap usage increasing after the restart at 2:23 pm. Once it is full the only way to make the puppetserver work again is another restart. Since quite a while now it is happening way more often. We already tried a downgrade but it did not have any affect.\n\n\u00a0 !Bildschirmfoto 2020-05-11 um 15.28.24.png|width=244,height=89,thumbnail!", "created": "2020-05-11T07:33:00.000000"}, {"author": "557058:6f0efc68-27fe-4011-b778-4afc32bab332", "body": "Hi,\n\n\u00a0\n\nthis looks exactly like the problem we are facing since our puppetserver upgrade to 6.3.1. Puppetserver is running normally for a couple of hours. We see an increase in java heap usage and when it hits the max line, pupeptserver performance is getting really slow. I can see the puppetserver doing Full GCs every few seconds during that time frame:\n\n!performance_puppetserver.png!\n\nAs you can see from the graphs, when heap usage reaches the peak, compile times are going through the roof and JRuby requests start to pile up. This is somewaht imediatly fixed with a restart of the puppetserver process. I've a support case open on this till Febuary, but it does not seem to get anywhere.", "created": "2020-05-12T04:00:00.000000"}, {"author": "623e750fbef8a60068c8da79", "body": "Since Upgrade to Puppetserver 6.12.0 and Puppet 6.16.0 the problems are gone! Thanks @puppetlabs for fixing this issue!\n\n\u00a0\n\nWe still use the setting `max-request-per-instance` with a value of `10000`.", "created": "2020-07-20T04:11:00.000000"}, {"author": "623e750fbef8a60068c8da79", "body": "This ticket can be closed!", "created": "2020-07-20T04:13:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Glad to hear that! The 6.12 release contained an update to JRuby, from 9.2.8.0 to 9.2.11.1, so perhaps that fixed your issue", "created": "2020-07-20T09:45:00.000000"}], "components": ["Puppet Server"], "created": "2020-03-27T07:49:00.000000", "creator": "623e750fbef8a60068c8da79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ff6a92e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00ols:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9942935474_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.14.0*\n *Puppet Server Version: 6.9.1*\n *OS Name/Version: Ubuntu 16.04*\n\nAfter an unspecific amount of runs the compilation time increases by 50-600%.\n\n*Describe steps to reproduce:*\n\nExecute a `puppet agent -t --noop` with a node concurrency of 15-40 for 2000 nodes.\n\n*Desired Behavior:*\n\nCompilation time should not constantly increase. It should stay nearly the same.\n\n*Actual Behavior:*\n\nCompilation time increases constantly and stays at a high value.\n\nSince quite a while we face a constant increase of the catalog compilation time with the puppetserver. After an unspecific amount of runs the compilation time increases by 50-600%. In the past the fixed this with your documenation meantioning to increase the `ReservedCodeCacheSize`. This did not completly solve the issue, but did ensure we did not need to restart the puppetserver regularly.\n\nAfter upgrading to puppetserver 6.9.1 this issue happens again very often, which forces us to restart the puppetserver often (1-2 times a day). But we cannot increase it futher because the we get an error telling us it can not be higher than 2GB.\n\nExamples:\n - compilation times of a node with many resources and puppetdb_query():\n\n097.50 seconds - restarted puppetserver \n 106.81 seconds - many values at 100 seconds +/- 15 for the next 2 hours\n 346.23 seconds - started a parallel (15) `puppet agent --noop` run\n 311.15 seconds - many values around 300 seconds +/- 30 for the next 2 hours\n 130.63 seconds - restarted the puppetserver\n 101.60 seconds - many values at 100 seconds +/- 15 for the next 2 hours\n 399.32 seconds - started a parallel (15) `puppet agent --noop` run\n 545.80 seconds - stopped the parallel run\n 554.95 seconds - \n 613.68 seconds - puppet agent run (cron) times out (600 seconds limit)\n 094.76 seconds - after restarted puppetserver\n - compilation times of a node with gentle amount of resources:\n\n8.67 seconds - restarted puppetserver \n 8.79 seconds - many values at 8 seconds +/- 1\n 22.33 seconds - started a parallel (15) `puppet agent --noop` run\n 7.94 seconds - restarted puppetserver \n 12.66 seconds - started a parallel (15) `puppet agent --noop` run\n 13.91 seconds -\n 13.26 seconds - stopped the parallel runs\n 8.44 seconds - restarted puppetserver\n\nSetup:\n\nWe run about 2.500 nodes served by two setups of puppetserver and puppetdb (each production and development has one). The production puppetserver serves only the production environment with about 175 modules. The development puppetserver serves 100+ environments also with about 175 modules.\n\nSettings:\n\nproduction puppetserver (Ubuntu Xenial, memory: 48GB, CPU: 32, Virtuzzo 6 VE):\n - max-active-instances: 32\n - max-requests-per-instance: 0\n - max-queued-requests: 64\n - max-retry-delay: 60\n - environment-class-cache-enabled: false\n - JAVA_ARGS: \"-Xms20480m -Xmx20480m -XX:+UseG1GC -XX:ReservedCodeCacheSize=2048m\"\n\ndevelopment puppetserver (Ubuntu Xenial, memory: 18GB, CPU: 12, Virtuzzo 6 VE):\n - max-active-instances: 12\n - max-requests-per-instance: 0\n - max-queued-requests: 24\n - max-retry-delay: 60\n - environment-class-cache-enabled: false\n - JAVA_ARGS: \"-Xms7680m -Xmx7680m -XX:+UseG1GC -XX:ReservedCodeCacheSize=1024m\"\n\nJava (same on all nodes):\n ~ $ java -version\n openjdk version \"11.0.5\" 2019-10-15\n OpenJDK Runtime Environment (build 11.0.5+10-post-Ubuntu-2ubuntu116.04)\n OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Ubuntu-2ubuntu116.04, mixed mode, sharing)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16356", "fixedVersions": ["SERVER 6.12.0"], "id": "16356", "issueType": "Bug", "key": "SERVER-2766", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e750fbef8a60068c8da79", "resolution": "Fixed", "resolutionDate": "2020-07-20T09:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Constant increase of catalog compilation time", "timeSpent": "PT0S", "updated": "2020-07-20T09:45:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:70121:b3f79c9f-72bf-4603-90c9-4edcdba10422] this is due to PUP-10238, which was fixed in 5.5.19. You can set {{strict_hostname_checking=false}} to restore the previous unsafe behavior. See the ticket for more information.", "created": "2020-03-27T15:33:00.000000"}, {"author": "70121:b3f79c9f-72bf-4603-90c9-4edcdba10422", "body": "[~accountid:63d40628f6e1b543161789a7]\u00a0that seems to be the problem indeed, my nodes are now receiving their definitions again. Thank you!\n\nWhat I would like to understand at this point:\n * Why is puppet-agent package affecting puppetserver?\n * Why is this change not reflected in the release notes? ([https://puppet.com/docs/puppet/5.5/release_notes.html|https://puppet.com/docs/puppet/5.5/release_notes.html#puppet-5519])\n * Why is such a breaking change in a patch release? People expect patch releases to not break things, and updating patch releases are usually considered \"safe\". (The same problem happened with PuppetDB 5.2.13, turning off some endpoints).\n\n\u00a0", "created": "2020-03-28T01:32:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "{quote}Why is puppet-agent package affecting puppetserver{quote}\n\nThe puppet-agent package contains the puppet ruby code that puppetserver uses to compile catalogs among other things.\n\n{quote}Why is this change not reflected in the release notes?{quote}\n\nWe're working on updating those.\n\n{quote}Why is such a breaking change in a patch release?{quote}\n\nThe previous behavior was insecure, and the only remedy is to change the behavior.", "created": "2020-04-01T12:08:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "The CVE page and release notes have been updated with this issue and fix:\n\n[https://puppet.com/security/cve/CVE-2020-7942/]\n\n[https://puppet.com/docs/puppet/5.5/release_notes.html#resolved-issues]", "created": "2020-04-02T02:52:00.000000"}], "components": ["Puppet Server"], "created": "2020-03-27T04:38:00.000000", "creator": "70121:b3f79c9f-72bf-4603-90c9-4edcdba10422", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cfc26e0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00oiw:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Mar/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_39272533_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 5.5.19*\n *Puppet Server Version: 5.3.12*\n *OS Name/Version: CentOS Linux release 7.7.1908 (Core)*\n\nAfter upgrading puppet (agent) to 5.5.19 (on the server) and restarting puppetserver, all nodes receive the default manifest (i.e. no config). There are no warnings/errors in puppetserver's output and I don't know what to provide here. Downgrading puppet (agent) to 5.5.18 (on the server) resolves the problem.\n\nThe clients (other agents) can run 5.5.19 just fine, it's just the server's agent version that must be downgraded for the puppetserver to function.\n\n*Desired Behavior:*\n\nUpgrading puppet (agent) to 5.5.19 shouldn't break puppetserver.\n\n*Actual Behavior:*\n\nUpgrading puppet (agent) to 5.5.19 breaks puppetserver.\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16592", "fixedVersions": [], "id": "16592", "issueType": "Bug", "key": "SERVER-2765", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:b3f79c9f-72bf-4603-90c9-4edcdba10422", "resolution": "Incomplete", "resolutionDate": "2020-03-27T15:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet 5.5.19 breaks puppetserver", "timeSpent": "PT0S", "updated": "2020-04-02T02:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Can you check if {{/var/log/puppetlabs/puppetserver/puppetserver.log}} contains a stack trace, and if so, add as a comment here? Also did the puppet-agent version change when the server updated?", "created": "2020-03-27T15:52:00.000000"}, {"author": "6243b5d445ece00069c8ffee", "body": "The agent did not update at the same time as the server. It last updated from 6.13.0 to 6.14.0 on 12 Mar 2020 while puppetserver updated from 6.9.1 to 6.9.2 on 26 Mar 2020 and that's when it stopped getting reports.\n\nThe stack trace in the pupperserver.log file is as follows:\n\n{noformat}\n2020-03-27T15:09:46.609-07:00 ERROR [qtp412108063-24281] [puppetserver] Puppet Server Error: undefined method `gsub' for true:TrueClass\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:46:in `reports'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:51:in `processors'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:30:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/report/processor.rb:14:in `save'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:316:in `save'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:199:in `do_save'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:54:in `block in call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:53:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `block in process'\norg/jruby/RubyArray.java:1800:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:88:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:87:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:70:in `block in with_request_profiling'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:66:in `with_request_profiling'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:86:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:93:in `respond_to_errors'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:85:in `process'\nuri:classloader:/puppetserver-lib/puppet/server/master.rb:64:in `block in handleRequest'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:290:in `override'\nuri:classloader:/puppetserver-lib/puppet/server/master.rb:63:in `handleRequest'\n{noformat}", "created": "2020-03-27T16:14:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "That line is [https://github.com/puppetlabs/puppet/blob/d8068536284ad3601d447308ab9d3d6f9cdcf02d/lib/puppet/indirector/report/processor.rb#L46]\u00a0which looks like the {{Puppet[:reports]}} setting is set to {{true}} instead of the name of the report processor(s), like {{http}}, {{puppetdb}}, {{store}}, etc. See https://puppet.com/docs/puppet/latest/report.html", "created": "2020-03-27T16:24:00.000000"}, {"author": "6243b5d445ece00069c8ffee", "body": "Thank you, this was the issue. Someone had pushed a commit with that setting as true and it didn't cause any issues until the puppetserver restarted when it updated.", "created": "2020-03-30T09:59:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Cool thanks, I'll close this out.", "created": "2020-03-30T10:19:00.000000"}], "components": ["Puppet Server"], "created": "2020-03-26T17:03:00.000000", "creator": "6243b5d445ece00069c8ffee", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fa4a04e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00ob4:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Mar/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_321331438_*|*_6_*:*_1_*:*_0"}], "description": "We have a puppet server set up with Foreman and PuppetDB that has not received reports since puppetserver was updated to 6.9.2 from 6.9.1\n\n\u00a0\n\nWe receive the following error:\n\n\"Error: Could not send report: Error 500 on SERVER: Server Error: undefined method `gsub' for true:TrueClass\"", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17163", "fixedVersions": [], "id": "17163", "issueType": "Bug", "key": "SERVER-2764", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243b5d445ece00069c8ffee", "resolution": "Incomplete", "resolutionDate": "2020-03-30T10:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Foreman/Server/PuppetDB Not Receiving Reports", "timeSpent": "PT0S", "updated": "2020-03-30T10:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [{"attacher": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "created": "2020-07-21T15:05:00.000000", "name": "versioned-fs.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10675"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] this is going to be a known issue for the Puppet Server 6.10.0 release. \n\n\"The update to JRuby 9.2.11.1 caused a change in defaults when installing gems with {{puppetserver gem}}. It now attempts to install docs by default, but installing docs is currently broken. Pass {{--no-document}} when installing gems with puppetserver to avoid the bug.\"", "created": "2020-04-03T17:05:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It looks like there was a regression in 9.2.10 that broke globbing from jars in some circumstances. There was a fix in 9.2.11, see\u00a0[https://github.com/jruby/jruby/pull/6084]. However the way we specify the \"puppetserver-lib\" location for some configurations (maybe just cli tools??) cannot be correctly expanded and is causing this issue.\n\nSpecifically with rdoc/rubygems. rdoc tries to load extensions by calling a rubygems function called \"find_files\" which searches the $LOAD_PATH for a specified glob. It is effectively this:\n{code:java}\n$LOAD_PATH.flat_map {|path| Dir.glob('rdoc/discover.rb', base: path) } {code}\nHere's an example from {{lein irb}}:\n{code:java}\nirb(main):006:0> Dir.glob(\"*\", base: \"./src/ruby/puppetserver-lib\")\n=> [\"puppet\"]\n\nirb(main):007:0> $LOAD_PATH\n=> [\"classpath:/puppetserver-lib\", \"./ruby/puppet/lib\", \"./ruby/facter/lib\", \"./ruby/hiera/lib\", \"./ruby/resource_api/lib\", \"uri:classloader:/META-INF/jruby.home/lib/ruby/2.5/site_ruby\", \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib\"]\n\nirb(main):008:0> Dir.glob \"*\", base:  \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib\"\n=> [\"drb\", \"racc\", \"digest\", ...snip... \"rdoc\", \"pathname.rb\"]\n\nirb(main):009:0> Dir.glob \"*\", base:  \"classpath:/puppetserver-lib\"\nTraceback (most recent call last):\n       16: from org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)\n       15: from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205)\n       14: from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396)\n       13: from org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)\n       12: from org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:212)\n       11: from org.jruby.RubyDir$INVOKER$s$0$2$glob.call(RubyDir$INVOKER$s$0$2$glob.gen)\n       10: from org.jruby.RubyDir.glob(RubyDir.java:310)\n        9: from org.jruby.util.Dir.push_glob(Dir.java:310)\n        8: from org.jruby.util.Dir.push_braces(Dir.java:449)\n        7: from org.jruby.util.Dir.push_globs(Dir.java:481)\n        6: from org.jruby.util.Dir.glob_helper(Dir.java:693)\n        5: from org.jruby.util.Dir.glob_helper(Dir.java:745)\n        4: from org.jruby.util.JRubyFile.createResource(JRubyFile.java:82)\n        3: from org.jruby.util.JRubyFile.createResource(JRubyFile.java:119)\n        2: from org.jruby.util.JRubyFile.create(JRubyFile.java:62)\n        1: from org.jruby.util.JRubyFile.createNoUnicodeConversion(JRubyFile.java:143)\nJava::JavaLang::IllegalArgumentException (Neither current working directory (classpath:/puppetserver-lib) nor pathname (.) led to an absolute path) {code}\n\u00a0\n\nWhy isn't this preventing us from loading things in \"puppetserver-lib\" normally, ie is this specific to how our cli runner creates the classpath? Or only specifically to {{Dir.glob()}} with a {{base}} parameter when acting on one entry in our LOAD_PATH? Could this affect the autoloader? \u2013 what else can the root cause of this issue effect?\n\nIs there a new or better way to specify classpath additions to the Ruby loadpath? What does a fix to the loadpath issue look like?", "created": "2020-04-08T23:39:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I'm not having an issue installing gems into puppetserver in PE 2019.7.  Is there a reason to believe we need to fix this more so than the existing fix to just not install docs?  ", "created": "2020-05-12T12:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Not sure. Depends on if that causes problems for anyone I guess. I think one thing we were considering is passing {{--no-document}} directly in puppetserver's internal gem invocation, so that no one external has to do anything.\n\nThis would make it impossible to ever install docs, but that's probably okay.", "created": "2020-05-12T12:57:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{quote}I'm not having an issue installing gems into puppetserver in PE 2019.7\n{quote}\nWe rolled back the JRuby update that broke this, didn't we?", "created": "2020-05-13T14:11:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "looks like we're on 9.2.8 so maybe that is why?  \n\nhttp://pebuildinfo.slice.puppetlabs.net/2019.7.0#component-201970-pe-puppetserver", "created": "2020-05-13T14:23:00.000000"}, {"author": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "body": "Today I observed a similar error and collected a backtrace (attached)\n{noformat}\n2020-07-21T06:20:36.193-07:00 ERROR [qtp767415779-162325] [puppetserver] Puppet Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, Neither current working directory (classpath:/puppetserver-lib) nor pathname (logging/plugins) led to an absolute path (file: /opt/puppetlabs/server/data/puppetserver/filesync/client/versioned-dirs/puppet-code/production-69eda3f7eb5c424f4b9fff978d7a04a6f988ed49/site/profile/manifests/aws/ec2/instances.pp, line: 50, column: 27) (file: /opt/puppetlabs/server/data/puppetserver/filesync/client/versioned-dirs/puppet-code/production-69eda3f7eb5c424f4b9fff978d7a04a6f988ed49/site/profile/manifests/aws/provisioner/forgenext.pp, line: 110) on node <redacted>{noformat}", "created": "2020-07-21T15:03:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], it looks like the root cause of this issue (a bad classpath in puppetserver that doesn't play well with some newer Ruby Dir methods) is causing an AWS gem requirement to fail to load when applying some DIO code, which is also then causing CD4PE's Impact Analysis to err. It sounds like DIO has disabled some of their IA checks for the time being. But I thought I'd bring that up (it was mentioned in slack) in case that info makes is a higher priority for you.", "created": "2020-08-04T15:21:00.000000"}, {"author": "557058:d266d245-5cba-4a99-842a-d1e061513459", "body": "To be clear, we cannot have IA as required check on our control repo until this is fixed. This effectively means we cannot rely on IA as a means of validating our code.", "created": "2020-08-20T09:40:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] idk how this ticket relates to the problem [~accountid:557058:d266d245-5cba-4a99-842a-d1e061513459] is talking about.  We should prioritize fixing Genes problem though.  Either via this ticket or a new one whichever makes more sense.  ", "created": "2020-08-20T15:14:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The ticket title/description describe a symptom and the proposed solution is a workaround for that symptom. The root cause I found in my [comment|https://puppet.atlassian.net/browse/SERVER-2763?focusedCommentId=731500&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-731500] above. That is the root cause, I believe, of both the original issue and Gene's (I don't believe the original proposed workaround would work for Gene though).", "created": "2020-08-20T16:00:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I updated the title and description to reflect my understanding of the issue.", "created": "2020-08-20T16:11:00.000000"}], "components": [], "created": "2020-03-26T16:03:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50e9bafe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkbbwyi"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server's JRuby load path can now be used with `Dir.glob`. Notably, this re-enables installing gems with docs via `puppetserver gem`."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_73137638_*|*_1_*:*_1_*:*_13382_*|*_10007_*:*_1_*:*_431643010_*|*_3_*:*_2_*:*_516422441_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_15725214868"}], "description": "It looks like there was a regression in 9.2.10 that broke globbing from jars in some circumstances. There was a fix in 9.2.11, see\u00a0[https://github.com/jruby/jruby/pull/6084]. However the way we specify the \"puppetserver-lib\" location for some configurations (maybe just cli tools??) cannot be correctly expanded and is causing this issue.\n\nSpecifically with rdoc/rubygems. rdoc tries to load extensions by calling a rubygems function called \"find_files\" which searches the $LOAD_PATH for a specified glob. It is effectively this:\n{code:java}$LOAD_PATH.flat_map {|path| Dir.glob('rdoc/discover.rb', base: path) } {code}\nHere's an example from {{lein irb}}:\n{code:java}irb(main):006:0> Dir.glob(\"*\", base: \"./src/ruby/puppetserver-lib\")\n=> [\"puppet\"]\n\nirb(main):007:0> $LOAD_PATH\n=> [\"classpath:/puppetserver-lib\", \"./ruby/puppet/lib\", \"./ruby/facter/lib\", \"./ruby/hiera/lib\", \"./ruby/resource_api/lib\", \"uri:classloader:/META-INF/jruby.home/lib/ruby/2.5/site_ruby\", \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib\"]\n\nirb(main):008:0> Dir.glob \"*\", base:  \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib\"\n=> [\"drb\", \"racc\", \"digest\", ...snip... \"rdoc\", \"pathname.rb\"]\n\nirb(main):009:0> Dir.glob \"*\", base:  \"classpath:/puppetserver-lib\"\nTraceback (most recent call last):\n       16: from org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)\n       15: from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205)\n       14: from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396)\n       13: from org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)\n       12: from org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:212)\n       11: from org.jruby.RubyDir$INVOKER$s$0$2$glob.call(RubyDir$INVOKER$s$0$2$glob.gen)\n       10: from org.jruby.RubyDir.glob(RubyDir.java:310)\n        9: from org.jruby.util.Dir.push_glob(Dir.java:310)\n        8: from org.jruby.util.Dir.push_braces(Dir.java:449)\n        7: from org.jruby.util.Dir.push_globs(Dir.java:481)\n        6: from org.jruby.util.Dir.glob_helper(Dir.java:693)\n        5: from org.jruby.util.Dir.glob_helper(Dir.java:745)\n        4: from org.jruby.util.JRubyFile.createResource(JRubyFile.java:82)\n        3: from org.jruby.util.JRubyFile.createResource(JRubyFile.java:119)\n        2: from org.jruby.util.JRubyFile.create(JRubyFile.java:62)\n        1: from org.jruby.util.JRubyFile.createNoUnicodeConversion(JRubyFile.java:143)\nJava::JavaLang::IllegalArgumentException (Neither current working directory (classpath:/puppetserver-lib) nor pathname (.) led to an absolute path) {code}\n\u00a0\n\nThis is most apparent when trying to generate rdoc content for gems. Generating rdoc content can be attempted automatically in some versions of Rubygems when installing gems. In those cases this bug causes gem installation to fail as well. When that happens it looks like:\n{code}# puppetserver gem install bundler\nSuccessfully installed bundler-2.1.4\nLoadError: load error: rdoc/rdoc -- java.lang.IllegalArgumentException: Neither current working directory (classpath:/puppetserver-lib) nor pathname (rdoc/discover) led to an absolute path\n                 require at org/jruby/RubyKernel.java:974\n                 require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54\n               load_rdoc at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:73\n                   setup at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:238\n                generate at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:151\n         generation_hook at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:56\n                    each at org/jruby/RubyArray.java:1809\n         generation_hook at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:55\n           install_hooks at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/request_set.rb:323\n                    each at org/jruby/RubyArray.java:1809\n           install_hooks at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/request_set.rb:322\n                 install at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/request_set.rb:221\n             install_gem at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:212\n            install_gems at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:264\n                    each at org/jruby/RubyArray.java:1809\n            install_gems at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:258\n                 execute at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:165\n  invoke_with_build_args at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command.rb:321\n            process_args at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command_manager.rb:184\n                     run at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command_manager.rb:148\n                     run at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/gem_runner.rb:59\n                  <main> at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/jgem:21\n                    load at org/jruby/RubyKernel.java:1009\n                  <main> at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/gem:4\n                    load at org/jruby/RubyKernel.java:1009\n                  <main> at -e:1\n{code}\nNotice that the gem install does not actually fail. It just explodes noisily when installing docs after succeeding to install the gem itself.\n\u00a0\n\nAs a workaround for this particular manifestation, the {{--no-document}} flag can be passed to the gem install command.\n\n\nIt also looks like a similar issue is occuring during a function in CD4PE's IA feature when loading {{logging/plugins}} during a catalog compilation. There isn't a known workaround for that issue besides disabling Impact Analysis.\n\nTo fix this, we most likely need to audit how we're constructing the classpath for JRuby to ensure JRuby's standard library, Puppet's libdir and Puppet Server's vendored Ruby code are all accessible and each entry is usable from {{Dir.glob(\"...\", base: <our values>)}}.\n\nBefore that we should also see if upgrading to JRuby 9.2.13.0 resolves the issue.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16591", "fixedVersions": ["SERVER 6.14.0"], "id": "16591", "issueType": "Bug", "key": "SERVER-2763", "labels": ["customer0"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-10-06T11:50:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Some Dir methods broken with puppetserver's custom classpath", "timeSpent": "PT0S", "updated": "2020-10-06T11:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "body": "Might also want to consider the number of catalog requests per minute as a more important metric. Not necessarily just the number of successful catalog compiles.\n\nFor capacity planning, it's extremely helpful to know how hard your Puppetserver is getting hit. And being able to graph the number of catalog requests per minute would help.", "created": "2020-03-27T18:31:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T09:47:00.000000"}], "components": ["Puppet Server"], "created": "2020-03-26T12:28:00.000000", "creator": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "I should be able to make an HTTP request and get a JSON response showing the number of catalog compiles that have happened in the previous 60 seconds."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1cf7260"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00nzk:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Mar/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19370119284_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_42140609886"}], "description": "As an administrator of multiple large Puppet infrastructures, I'd like to be able to quickly get a sense of how many catalogs a Puppetserver instance is compiling per minute. This information is critical for capacity planning, tuning, and for general health checks.\n\nRight now the only way to measure this value is to grep though puppetserver.log for lines containing \"Puppet compiled\", parsing out a time period I care about, then counting the found lines. Scraping logs to get this information is not ideal considering I get most of my other Puppetserver metrics through its metrics or status API's.\n\nIt'd be great to have an API return a JSON response for things like:\n* Number of catalogs compiled in the last 60 seconds (very important)\n* Number of catalogs compiled in the last 5 minutes (optional)\n* Number of catalogs compiled in the last 15 minutes (optional)\n* Number of catalogs compiled in the last hour (optional, but probably more useful than the 5m or 15m counts)", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "15441", "fixedVersions": [], "id": "15441", "issueType": "New Feature", "key": "SERVER-2762", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "resolution": "Won't Do", "resolutionDate": "2022-03-08T09:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add a Puppetserver metric to track the number of catalogs compiled per minute", "timeSpent": "PT0S", "updated": "2022-03-08T09:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4603761efb0069cd34da", "body": "Might be related to TK-481 but if I get this right, TK-481 talks about the test suite not about the \"normal\" running Puppetserver.", "created": "2020-03-26T03:47:00.000000"}, {"author": "6220db6259c0740069d86127", "body": "Not only at startup, but for anytime running few command commnads:\n----\n[root@pe-201950-master ~]# puppetserver irb\nWARNING: An illegal reflective access operation has occurred\nWARNING: Illegal reflective access by com.headius.backport9.modules.Modules (file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar) to field .FileDescriptor.fd\nWARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules\nWARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\nWARNING: All illegal access operations will be denied in a future release\nirb(main):001:0>\nMaybe related to this issue:\n\nhttps://github.com/voxpupuli/hiera-eyaml/issues/298\n\n\u00a0", "created": "2020-04-01T17:38:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "On Fedora 35, with the OS-provided Java 17 packages installed, and alternatives(8) configured to use Java 11 by default:\n\n{noformat}\n$ java -version\nopenjdk version \"17.0.1\" 2021-10-19\nOpenJDK Runtime Environment 21.9 (build 17.0.1+12)\nOpenJDK 64-Bit Server VM 21.9 (build 17.0.1+12, mixed mode, sharing)\n{noformat}\n\n\u2026I no longer see these warnings from Puppet server (either at startup, or at any other time).\n\n(In case anyone is wondering: Puppet doesn\u2019t package puppetserver for Fedora, so I use the RHEL8 packages on Fedora 35.)\n\nAccording to [JEP 403: Strongly Encapsulate JDK Internals|https://openjdk.java.net/jeps/403], OpenJDK disabled illegal access operations in Java 17, with no way to enable them.\n\nSo, what I suspect is happening here is:\n\n* Java 17 silently denies the illegal access operations that Puppet server is attempting, which is why the startup messages about illegal access no longer occur.\n* The denials are not fatal to Puppet server (and, in fact, do not even cause Puppet server to generate any warnings/errors).\n\nIf the denials subtly break some aspect of Puppet server functionality, I have not noticed it. (Note that I am _not_ asserting that they don\u2019t", "created": "2022-01-25T12:49:00.000000"}], "components": [], "created": "2020-03-26T03:46:00.000000", "creator": "623a4603761efb0069cd34da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66e355a0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00n94:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Apr/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19401433277_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_42154737068"}], "description": "*Puppet Version:* 6.14.0\n *Puppet Server Version:* 6.9.2\n *OS Name/Version:* Ubuntu 16.04\n*Java Version:* 11\n**\n\nAfter upgrading from 6.7.1 to 6.9.1 we're seeing WARNING in the startup log of Puppetserver.\n\n*Desired Behavior:*\n\nNo warning ;)\n\n*Actual Behavior:*\n{code:java}\nMar 18 12:06:30 ps01 puppetserver[4703]: WARNING: An illegal reflective access operation has occurred\nMar 18 12:06:30 ps01 puppetserver[4703]: WARNING: Illegal reflective access by dynapath.defaults$fn__15945$fn__15946 (file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar) to method java.net.URLClassLoader.addURL(java.net.URL)\nMar 18 12:06:30 ps01 puppetserver[4703]: WARNING: Please consider reporting this to the maintainers of dynapath.defaults$fn__15945$fn__15946\nMar 18 12:06:30 ps01 puppetserver[4703]: WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\nMar 18 12:06:30 ps01 puppetserver[4703]: WARNING: All illegal access operations will be denied in a future release{code}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17161", "fixedVersions": [], "id": "17161", "issueType": "Bug", "key": "SERVER-2761", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4603761efb0069cd34da", "resolution": "Won't Fix", "resolutionDate": "2022-03-08T13:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver starts logging warnings on startup", "timeSpent": "PT0S", "updated": "2023-02-07T15:07:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "body": "Simply adding a trailing slash to\u00a0{{rm -rf /etc/puppetlabs/ssl/}} (which would automatically happen if they tab-autocomplete the command)\u00a0will delete all of the files in {{/etc/puppetlabs/puppetserver/ca}}. So a symlink would be a half-measure.", "created": "2020-03-27T11:44:00.000000"}, {"author": "557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd", "body": "someone should run through the steps and confirm the behavior that Tom noted, and then we can spike on it", "created": "2020-06-12T11:55:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I can't reproduce the behavior Tom described with PE 2019.8:\n\n{noformat}\n# systemctl stop puppet pe-puppetserver\n# mkdir -p /var/opt/puppetlabs/puppetserver\n# chown pe-puppet /var/opt/puppetlabs/puppetserver\n\n# mv /etc/puppetlabs/puppet/ssl/ca /var/opt/puppetlabs/puppetserver\n# ln -s /var/opt/puppetlabs/puppetserver/ca /etc/puppetlabs/puppet/ssl/\n\n# ls -l /etc/puppetlabs/puppet/ssl/\ntotal 4\nlrwxrwxrwx 1 root      root        35 Aug  4 21:09 ca -> /var/opt/puppetlabs/puppetserver/ca\ndrwxr-xr-x 2 pe-puppet pe-puppet    6 Aug  4 20:32 certificate_requests\ndrwxr-xr-x 2 pe-puppet pe-puppet   92 Aug  4 20:34 certs\n-rw-r--r-- 1 pe-puppet pe-puppet 1982 Aug  4 20:34 crl.pem\ndrwxr-x--- 2 pe-puppet pe-puppet    6 Aug  4 20:32 private\ndrwxr-x--- 2 pe-puppet pe-puppet   79 Aug  4 20:34 private_keys\ndrwxr-xr-x 2 pe-puppet pe-puppet   79 Aug  4 20:34 public_keys\n{noformat}\n\nRemoving the ssl directory, with trailing slash, leaves the relocated content intact:\n\n{noformat}\n# rm -rf /etc/puppetlabs/puppet/ssl/\n\n# # ls /var/opt/puppetlabs/puppetserver/ca/\nca_crl.pem  ca_key.pem  infra_crl.pem        infra_serials  requests      serial\nca_crt.pem  ca_pub.pem  infra_inventory.txt  inventory.txt  root_key.pem  signed\n{noformat}", "created": "2020-08-04T15:16:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "This may be shell dependent, looks like adding {{mark-symlinked-directories}} in .inputrc will cause it?", "created": "2020-08-27T15:29:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Nah, I can't reproduce either. Tried running as root and non-root, with/without {{.inputrc}}. In all cases, {{rm -rf /etc/puppetlabs/puppet/ssl/}} doesn't follow the symlink. I also tried moving the {{ca}} directory to {{/opt/puppetlabs/puppet/ca}} in case rm -rf didn't follow across filesystems, but got the same result.\n\nAlso Linux man page says this about [symlinks|https://linux.die.net/man/7/symlink]\n{quote}Commands traversing a file tree\n\n...\n The second rule applies to symbolic links that refer to directories. Symbolic links that refer to directories are never followed by default. This is often referred to as a \"physical\" walk, as opposed to a \"logical\" walk\n ...\n The -H flag causes symbolic links specified on the command line to be dereferenced for the purposes of both the action to be performed and the tree walk, and it is as if the user had specified the name of the file to which the symbolic link pointed\n ...\n The rm(1) command operates on the symbolic link, and not the file it references, and therefore never follows a symbolic link. The rm(1) command does not support the -H, -L, or -P options.\n{quote}\nAssuming puppetserver is always installed on redhat/ubuntu I think our approach is fine.\n\nSo where do we move the {{ca}} directory to? Is this handled at install/upgrade time? Or when puppetserver starts up?\n\nI'm assuming puppetserver will move the directory and create the symlink?\n\nI also verified puppetserver can recover if the ssl directory is removed and a new one created. The {{setup}} command also correctly detects the existing CA:\n{noformat}# mv /etc/puppetlabs/puppet/ssl/ca /etc/puppetlabs/puppet/ca\n# ln -s /etc/puppetlabs/puppet/ca /etc/puppetlabs/puppet/ssl/\n# rm -rf /etc/puppetlabs/puppet/ssl/\n# systemctl stop puppetserver\n# puppetserver ca setup\nError:\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/ca_crt.pem'\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/ca_crl.pem'\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/infra_crl.pem'\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/ca_pub.pem'\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/inventory.txt'\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/infra_inventory.txt'\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/infra_serials'\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/serial'\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/signed/dull-kidnaper.delivery.puppetlabs.net.pem'\nExisting file at '/etc/puppetlabs/puppet/ssl/ca/ca_key.pem'\nIf you would really like to replace your CA, please delete the existing files first.\nNote that any certificates that were issued by this CA will become invalid if you\nreplace it!\n# mkdir /etc/puppetlabs/puppet/ssl/\n# chown puppet:puppet /etc/puppetlabs/puppet/ssl\n# ln -s /etc/puppetlabs/puppet/ca /etc/puppetlabs/puppet/ssl/\n# systemctl start puppetserver\n# puppet agent -t\nInfo: Using configured environment 'production'\n...\n{noformat}", "created": "2020-08-27T16:47:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I was thinking one way of handling this is to have puppetserver check if {{/etc/puppetlabs/puppet/ssl/ca}} is a directory or symlink when it starts. If it's still a directory, then log a warning about the need to run a command to migrate to the new directory structure.\n\nThen add a new command to the {{puppetserver ca}} CLI so users can manually migrate the ca directory. The migrate command (or whatever it's called) would move the ca directory to the new place and add a symlink.", "created": "2020-09-09T10:42:00.000000"}], "components": [], "created": "2020-03-24T09:06:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b403dc8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10593"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:409000005"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See SERVER-2896 for release notes."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Mar/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_259399500_*|*_1_*:*_2_*:*_517259178_*|*_10007_*:*_1_*:*_63280419_*|*_3_*:*_1_*:*_264718222_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_18775750898_*|*_10005_*:*_1_*:*_8036"}], "description": "The easiest way to separate the CA dir from the SSL dir is to create the files in a different location (or migrate them), and then provide a symlink from the old location to the new location. This will prevent users from automatically deleting their CA files, as {{rm -rf}} will just unlink the symlink and not follow it to delete the files themselves.\n\nWhen puppetserver starts, we should\n * if the CA is not yet initialized, create it in the new location ({{/etc/puppetlabs/puppetserver/ca}}) and create a symlink from the configured location to the new one (see SERVER-2895 for similar change to the CLI {{setup}} command)", "epicLinkSummary": "Puppet 7 Server", "estimate": "PT0S", "externalId": "15758", "fixedVersions": ["SERVER 7.0.0"], "id": "15758", "issueType": "Task", "key": "SERVER-2760", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": "20311", "parentSummary": "Puppet 7 Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-11-09T10:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver CA init code for new CA dir location", "timeSpent": "PT0S", "updated": "2020-11-13T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [{"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "PR to get this automated was merged in yesterday, and images have been pushed to dockerhub", "created": "2020-03-24T14:10:00.000000"}, {"author": "623a4603761efb0069cd34da", "body": "Thank you <3", "created": "2020-03-25T02:25:00.000000"}], "components": [], "created": "2020-03-23T10:11:00.000000", "creator": "623a4603761efb0069cd34da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71af5993"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00l08:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Mar/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6293308_*|*_3_*:*_1_*:*_94434914_*|*_5_*:*_1_*:*_0"}], "description": "Puppetserver 6.9.1 was released on the 05.03.2020 and 6.9.2 was released on the 18.03.2020 but I can't find an image at [https://hub.docker.com/r/puppet/puppetserver/tags.]\n\nCould you please create one and automated that process? :)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15438", "fixedVersions": [], "id": "15438", "issueType": "Bug", "key": "SERVER-2759", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4603761efb0069cd34da", "resolution": "Fixed", "resolutionDate": "2020-03-24T14:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet/puppserver:6.9.1/2 docker image missing", "timeSpent": "PT0S", "updated": "2020-03-25T02:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So far haven't run into any hitches with this. But we're currently overriding outside of clj-parent, and for some reason in puppetserver, ezbake does not pick up that override. So I haven't been able to do any package testing yet. I'm looking into how to fix that override issue.", "created": "2020-03-24T10:04:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "New issue, installing gems with {{puppetserver gem}} without specifying {{no-document}} causes a stack trace, even though the gem appears to install successfully:\n{code}\nLoadError: load error: rdoc/rdoc -- java.lang.IllegalArgumentException: Neither current working directory (classpath:/puppetserver-lib) nor pathname (rdoc/discover) led to an absolute path\n                 require at org/jruby/RubyKernel.java:974\n                 require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54\n               load_rdoc at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:73\n                   setup at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:238\n                generate at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:151\n         generation_hook at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:56\n                    each at org/jruby/RubyArray.java:1809\n         generation_hook at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:55\n           install_hooks at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/request_set.rb:323\n                    each at org/jruby/RubyArray.java:1809\n           install_hooks at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/request_set.rb:322\n                 install at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/request_set.rb:221\n             install_gem at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:212\n            install_gems at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:264\n                    each at org/jruby/RubyArray.java:1809\n            install_gems at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:258\n                 execute at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:165\n  invoke_with_build_args at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command.rb:321\n            process_args at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command_manager.rb:184\n                     run at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command_manager.rb:148\n                     run at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/gem_runner.rb:59\n                  <main> at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/jgem:21\n                    load at org/jruby/RubyKernel.java:1009\n                  <main> at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/gem:4\n                    load at org/jruby/RubyKernel.java:1009\n                  <main> at -e:1\n{code}", "created": "2020-03-25T14:26:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It seems the default recently changed: before jruby had configured rubygems to not install docs by default, but with the removal of the old {{no-rdoc no-ri}} flags, they decided to switch to having it enabled by default. https://github.com/jruby/jruby/commit/1f653743ae212ca5e0ba88d86d96d6e89563275d We might want to look into just disabling this again, at least temporarily.", "created": "2020-03-25T16:03:00.000000"}, {"author": "623c098ea9575800695ac870", "body": "I just got the same error while installing jruby-ldap on puppetserver-6.12.1-1.el8. Is there a regression?\n{noformat}\n LoadError: load error: rdoc/rdoc -- java.lang.IllegalArgumentException: Neither current working directory (classpath:/puppetserver-lib) nor pathname (rdoc/discover) led to an absolute path\n                  require at org/jruby/RubyKernel.java:974\n                  require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54\n                load_rdoc at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:73\n                    setup at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:238\n                 generate at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:151\n          generation_hook at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:56\n                     each at org/jruby/RubyArray.java:1809\n          generation_hook at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rdoc/rubygems_hook.rb:55\n            install_hooks at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/request_set.rb:323\n                     each at org/jruby/RubyArray.java:1809\n            install_hooks at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/request_set.rb:322\n                  install at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/request_set.rb:221\n              install_gem at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:212\n             install_gems at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:264\n                     each at org/jruby/RubyArray.java:1809\n             install_gems at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:258\n                  execute at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:165\n   invoke_with_build_args at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command.rb:321\n             process_args at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command_manager.rb:184\n                      run at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command_manager.rb:148\n                      run at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/gem_runner.rb:59\n                   <main> at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/jgem:21\n                     load at org/jruby/RubyKernel.java:1009\n                   <main> at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/gem:4\n                     load at org/jruby/RubyKernel.java:1009\n                   <main> at -e:1 {noformat}", "created": "2020-08-21T03:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yes. We've filed https://puppet.atlassian.net/browse/SERVER-2763, which has more detail, for fixing it.", "created": "2020-08-21T09:09:00.000000"}], "components": [], "created": "2020-03-18T17:43:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4339eab5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00jds:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We updated JRuby to 9.2.11.1, which contained a security fix and an update to RubyGems 3, which requires the use of the `--no-document` flag instead of `--no-ri --no-rdoc` when installing gems."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Aug/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_27007497_*|*_1_*:*_1_*:*_52447_*|*_10007_*:*_1_*:*_520616009_*|*_3_*:*_1_*:*_490731734_*|*_5_*:*_1_*:*_0"}], "description": "The latest release of JRuby is currently 9.2.11.0, but this ticket is tracking the work of upgrading us to any version past 9.2.8.0.\n\nIn 9.2.9.0, a bug was introduced that affects puppetserver on certain systems, see https://github.com/jruby/jruby/issues/5971. We need to see if we can work around it.\n\nIn 9.2.10.0, they moved to RubyGems 3+. The removal of {{--no-rdoc --no-ri}} in that version means some of our scripts need to change, at minimum.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15436", "fixedVersions": ["SERVER 6.10.0"], "id": "15436", "issueType": "Task", "key": "SERVER-2758", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-03-30T18:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update JRuby past 9.2.8.0", "timeSpent": "PT0S", "updated": "2020-08-21T09:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-03-17T13:26:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ea4c65b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2751"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00h7s:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_962_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_771147629"}], "description": "(Initial planned release date: 2020-03-18)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-03-19T00:00:00.000000", "epicLinkSummary": "Puppet Server 6.9.2 2020-03-18 Release", "estimate": "PT0S", "externalId": "14906", "fixedVersions": [], "id": "14906", "issueType": "Task", "key": "SERVER-2755", "labels": [], "originalEstimate": "PT0S", "parent": "16355", "parentSummary": "Puppet Server 6.9.2 2020-03-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2020-03-26T11:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.9.2)", "timeSpent": "PT0S", "updated": "2020-03-26T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-03-17T13:26:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e80028f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2751"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00h7c:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1250_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_89958710"}], "description": "(Initial planned release date: 2020-03-18)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n", "duedate": "2020-03-14T00:00:00.000000", "epicLinkSummary": "Puppet Server 6.9.2 2020-03-18 Release", "estimate": "PT0S", "externalId": "17157", "fixedVersions": [], "id": "17157", "issueType": "Task", "key": "SERVER-2754", "labels": [], "originalEstimate": "PT0S", "parent": "16355", "parentSummary": "Puppet Server 6.9.2 2020-03-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Won't Do", "resolutionDate": "2020-03-18T14:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.9.2)", "timeSpent": "PT0S", "updated": "2020-03-18T14:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-03-17T13:26:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4fbd75"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2751"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00h74:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_912_*|*_3_*:*_2_*:*_16847489_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_72421497"}], "description": "(Initial planned release date: 2020-03-18)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-03-14T00:00:00.000000", "epicLinkSummary": "Puppet Server 6.9.2 2020-03-18 Release", "estimate": "PT0S", "externalId": "16891", "fixedVersions": [], "id": "16891", "issueType": "Task", "key": "SERVER-2753", "labels": [], "originalEstimate": "PT0S", "parent": "16355", "parentSummary": "Puppet Server 6.9.2 2020-03-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2020-03-18T14:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.9.2)", "timeSpent": "PT0S", "updated": "2020-03-18T14:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-03-17T13:26:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78213539"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2751"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00h6w:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_923_*|*_3_*:*_1_*:*_4639555_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_168813"}], "description": "(Initial planned release date: 2020-03-18)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-03-13T00:00:00.000000", "epicLinkSummary": "Puppet Server 6.9.2 2020-03-18 Release", "estimate": "PT0S", "externalId": "16590", "fixedVersions": [], "id": "16590", "issueType": "Task", "key": "SERVER-2752", "labels": [], "originalEstimate": "PT0S", "parent": "16355", "parentSummary": "Puppet Server 6.9.2 2020-03-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2020-03-17T14:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.9.2)", "timeSpent": "PT0S", "updated": "2020-03-17T14:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-03-17T13:26:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e2eb383"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server 6.9.2 2020-03-18 Release"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00h6o:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4353276269_*|*_6_*:*_1_*:*_0"}], "description": "Puppet Server 6.9.2 2020-03-18 Release\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16355", "fixedVersions": [], "id": "16355", "issueType": "Epic", "key": "SERVER-2751", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2020-05-06T22:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 6.9.2 2020-03-18 Release", "timeSpent": "PT0S", "updated": "2020-05-06T22:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "created": "2020-03-12T14:01:00.000000", "name": "log.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10591"}], "comments": [{"author": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "body": "For the reference, I added the following modules\n\nmod 'camptocamp/augeas', '1.9.0'\nmod 'camptocamp/postfix', '1.10.0'\nmod 'puppet/alternatives', '3.0.0'\n\n", "created": "2020-03-12T14:02:00.000000"}, {"author": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "body": "At least some explanation would be nice, why it is closed", "created": "2022-03-08T14:46:00.000000"}], "components": ["Puppet Server"], "created": "2020-03-12T13:54:00.000000", "creator": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10144ab3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2911"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00di8:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20574977432_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_42154397606"}], "description": "*Puppet Version:*\n6.12\n\n*Puppet Server Version:*\n2019.3.0.21-1.el8\n\n*OS Name/Version:*\nCentOS 8\n\nReceived random errors with  puppet_enterprise::master::puppetserver::jruby_puppet_multithreaded: true\nafter feature  environment with new types/providers have been merged into 'production' branch. Several nodes have failed with similar 'not found type' error, but next run was successful.\n\nWill attach stack traces to the ticket\n", "epicLinkSummary": "Multithreaded Fixes", "estimate": "PT0S", "externalId": "16066", "fixedVersions": [], "id": "16066", "issueType": "Bug", "key": "SERVER-2750", "labels": [], "originalEstimate": "PT0S", "parent": "17234", "parentSummary": "Multithreaded Fixes", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "resolution": "Won't Fix", "resolutionDate": "2022-03-08T13:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "random 'Unknown resource type' errors when using multithread jruby", "timeSpent": "PT0S", "updated": "2022-03-08T14:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5e29fa0d006fae0ca233fd0d", "body": "So I think that the issue is with file permission. conf.d directory is owned by root with 751 permission. the service is run as puppet user. I have change the file permission to 755. it did not work. But run the service as root user works fine. The service will start up initially, but restart subsequently will not work.\u00a0", "created": "2020-03-09T08:07:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is this still an issue for you?", "created": "2020-11-05T16:51:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing this due to inactivity. Please reopen if you're still having issues.", "created": "2020-11-16T12:30:00.000000"}], "components": ["Puppet Server"], "created": "2020-03-09T06:47:00.000000", "creator": "5e29fa0d006fae0ca233fd0d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@308d0351"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00a9s:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Mar/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21797013286_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.13.0*\n *Puppet Server Version:6.9.0*\n *OS Name/Version:ubuntu 18.04*\n\nafter restarting puppet server, puppet server will not be able to start properly. It keeps complain about\n\n*Execution error (FileNotFoundException) at puppetlabs.trapperkeeper.config/get-files-from-config (config.clj:82).*\n\nand will not start up correctly.\u00a0\n\nafter puppet server installed and comes up correctly. run sudo service puppetserver restart\n\nor run\n\nsudo puppet resource service puppetserver ensure=running\n\nyou will get the error message from the\n\nsudo puppet resource service puppetserver ensure=running\n\nI do not see the same behavior for puppet server 6.7.2 on ubuntu 16.04.\u00a0\n\n*Desired Behavior:*\n\n*should restart correctly.*\u00a0\n\n*Actual Behavior:*\n\n*puppet server will not start correctly.*\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17156", "fixedVersions": [], "id": "17156", "issueType": "Bug", "key": "SERVER-2749", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e29fa0d006fae0ca233fd0d", "resolution": "Cannot Reproduce", "resolutionDate": "2020-11-16T12:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet server 6.9.0 complain about conf.d when restarting. ", "timeSpent": "PT0S", "updated": "2020-11-16T12:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-03-02T18:40:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61f9a9d3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10336"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00620:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_977_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2044708294"}], "description": "(Initial planned release date: 2020-03-10)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-03-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.19 Release - 2020-03-10\n", "estimate": "PT0S", "externalId": "15756", "fixedVersions": [], "id": "15756", "issueType": "Task", "key": "SERVER-2748", "labels": [], "originalEstimate": "PT0S", "parent": "27583", "parentSummary": "Puppet Platform 5.5.19 Release - 2020-03-10\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2020-03-26T11:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 5.3.12)", "timeSpent": "PT0S", "updated": "2020-03-26T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-03-02T18:40:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3936b936"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10336"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0061k:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1009_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_339944880"}], "description": "(Initial planned release date: 2020-03-10)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n", "duedate": "2020-03-06T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.19 Release - 2020-03-10\n", "estimate": "PT0S", "externalId": "15220", "fixedVersions": [], "id": "15220", "issueType": "Task", "key": "SERVER-2747", "labels": [], "originalEstimate": "PT0S", "parent": "27583", "parentSummary": "Puppet Platform 5.5.19 Release - 2020-03-10\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2020-03-06T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 5.3.12)", "timeSpent": "PT0S", "updated": "2020-03-06T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-03-02T18:40:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7816a6bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10336"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0061c:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1065_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_339960465"}], "description": "(Initial planned release date: 2020-03-10)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-03-06T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.19 Release - 2020-03-10\n", "estimate": "PT0S", "externalId": "14904", "fixedVersions": [], "id": "14904", "issueType": "Task", "key": "SERVER-2746", "labels": [], "originalEstimate": "PT0S", "parent": "27583", "parentSummary": "Puppet Platform 5.5.19 Release - 2020-03-10\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2020-03-06T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.12)", "timeSpent": "PT0S", "updated": "2020-03-06T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-03-02T18:40:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@587ec3e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10336"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00614:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1024_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_339935616"}], "description": "(Initial planned release date: 2020-03-10)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-03-05T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.19 Release - 2020-03-10\n", "estimate": "PT0S", "externalId": "17507", "fixedVersions": [], "id": "17507", "issueType": "Task", "key": "SERVER-2745", "labels": [], "originalEstimate": "PT0S", "parent": "27583", "parentSummary": "Puppet Platform 5.5.19 Release - 2020-03-10\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2020-03-06T17:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.12)", "timeSpent": "PT0S", "updated": "2020-03-06T17:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-03-02T18:33:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73bd353b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10326"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o005ug:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1117_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2045067156"}], "description": "(Initial planned release date: 2020-03-10)\n\n* If this release was part of a PE release, re-enable FOSS promotions once that release is ready to ship. Note: while it might be reasonable to re-enable these after PE's stop-ship, oftentimes additional last minute things need to land in pe-pse or pe-puppetserver, which gets complicated if untagged versions of puppetserver have promoted. So for now, we usually wait until after the window for such emergency changes has ended.\n* Update [winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-03-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.14.0 Release - 2020-03-10\n", "estimate": "PT0S", "externalId": "17505", "fixedVersions": [], "id": "17505", "issueType": "Task", "key": "SERVER-2744", "labels": [], "originalEstimate": "PT0S", "parent": "23353", "parentSummary": "Puppet Platform 6.14.0 Release - 2020-03-10\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2020-03-26T11:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update winston, re-enable promotions when appropriate (Puppet Server 6.9.1)", "timeSpent": "PT0S", "updated": "2020-03-26T11:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-03-02T18:33:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22b9c1ec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10326"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o005u0:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_971_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_340314337"}], "description": "(Initial planned release date: 2020-03-10)\n\nIf this release is destined to go out in a PE release, disable promotions between puppetserver and pe-puppet-server-extensions once the tag has promoted. This ensures that the puppetserver tag will ship in PE, while allowing work to continue on the FOSS branch.\n", "duedate": "2020-03-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.14.0 Release - 2020-03-10\n", "estimate": "PT0S", "externalId": "16886", "fixedVersions": [], "id": "16886", "issueType": "Task", "key": "SERVER-2743", "labels": [], "originalEstimate": "PT0S", "parent": "23353", "parentSummary": "Puppet Platform 6.14.0 Release - 2020-03-10\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2020-03-06T17:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable promotions (Puppet Server 6.9.1)", "timeSpent": "PT0S", "updated": "2020-03-06T17:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-03-02T18:33:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2464ca32"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10326"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o005ts:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1074_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_340298183"}], "description": "(Initial planned release date: 2020-03-10)\n\n* Ensure the candidate SHA has passed all applicable testing and has promoted to the appropriate PE branch.\n* Run the release pipeline for the maintenance branch being released from. This pipeline currently starts with \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically build, stage, and promote into PE.\n* Verify tagged release version is built, tested, and artifacts exist at builds.delivery.puppetlabs.net.\n* NOTE - Docker pipelines will fail between when a tag is pushed and that tag becomes publicly available for download!!\n", "duedate": "2020-03-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.14.0 Release - 2020-03-10\n", "estimate": "PT0S", "externalId": "16589", "fixedVersions": [], "id": "16589", "issueType": "Task", "key": "SERVER-2742", "labels": [], "originalEstimate": "PT0S", "parent": "23353", "parentSummary": "Puppet Platform 6.14.0 Release - 2020-03-10\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2020-03-06T17:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.9.1)", "timeSpent": "PT0S", "updated": "2020-03-06T17:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-03-02T18:33:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e6a3768"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10326"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o005tk:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_965_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_340284636"}], "description": "(Initial planned release date: 2020-03-10)\n\n* Once the scope of the release has been confirmed and the correct SemVer version known, ensure the [Versions and Dependencies page|https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies] in Confluence is up to date.\n\n* Merge up and/or down as required.\n  ** Outstanding changes from z branches should be merged up to master. Outstanding changes from \"older\" branches should be merged up through the branch to be released (e.g. 2.6.x -> 5.3.x if applicable).\n  ** Any changes that have been resolved in \"newer\" branches but need to be pulled down to the release branch should be cherry-picked (e.g. backports to an LTS branch).\n  ** This typically will have been done already, when the original changes went in, but good to double-check.\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch to reconcile JIRA ticket states with commit messages since the last release.\n  ** Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n  ** Run ticketmatch in the puppet repo WITH the team 'Froyo'\n\n* Follow up with any reported problematic areas:\n  ** Git commits in Jira: ensure these issues have the appropriate fix version and team or confirm that they are WIP and not targeted for the current release.\n  ** Unresolved Jira tickets not in git commits: retarget these issues for the appropriate release and notify stakeholders.\n  ** Unresolved Jira tickets found in git commits: ensure these issues have gone through CI and resolve them.\n  ** Tickets missing release notes: add release notes to these issues or mark 'Not Needed'.\n\n* Once a release candidate has been determined, tell the puppet-agent release lead what puppetserver ref to test with (either the tag or, if we're running behind, the SHA we plan to tag).\n", "duedate": "2020-03-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.14.0 Release - 2020-03-10\n", "estimate": "PT0S", "externalId": "16354", "fixedVersions": [], "id": "16354", "issueType": "Task", "key": "SERVER-2741", "labels": [], "originalEstimate": "PT0S", "parent": "23353", "parentSummary": "Puppet Platform 6.14.0 Release - 2020-03-10\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2020-03-06T17:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.9.1)", "timeSpent": "PT0S", "updated": "2020-03-06T17:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [{"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "If we have to block startup to do this I think we should probably consider providing this as a separate utility.  I don't want to add time to startup.  \n\nI suppose unless ( as bullet 5 is supposed to assess ) we see that this only takes a few seconds.  We'd want to know how long on avg-size as well as say a really large 150K entry CRL ( just to make sure it's linear ) ", "created": "2020-08-17T19:03:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] will break this ticket into smaller pieces for the intern.", "created": "2021-06-04T12:23:00.000000"}], "components": [], "created": "2020-02-27T14:40:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@79628c37"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2998"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a92i"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The subcommand 'prune' is implemented for Puppetserver's CA CLI tool.  This subcommand allows the user to deduplicate revoked certificates on CRL that is issued by Puppet's CA certificate."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_1098764727_*|*_1_*:*_1_*:*_298893_*|*_10007_*:*_2_*:*_270923017_*|*_3_*:*_2_*:*_954708153_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_3_*:*_41020597880_*|*_10005_*:*_2_*:*_1991299987"}], "description": "Puppet's CRL is prone to duplicate entries. We should add a command to the CA CLI that will deduplicate the CRL, only to be run when the server is offline. (This should go in both PE streams)\n\n*Outcomes*\n* New command in the CA CLI gem to deduplicate the CRL - check in with UX about whatever command syntax we come up with to make sure it's user-friendly.\n* Include debug output for what is being purged.\n* Check performance for a large CRL with many duplicates (see comments in SERVER-2509). Should not be \"unreasonably\" slow.\n", "epicLinkSummary": "Fix duplicate entries in CRLs", "estimate": "PT0S", "externalId": "16353", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.3.0"], "id": "16353", "issueType": "New Feature", "key": "SERVER-2740", "labels": ["docs-reviewed", "froyo_intern"], "originalEstimate": "PT0S", "parent": "15171", "parentSummary": "Fix duplicate entries in CRLs", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Done", "resolutionDate": "2021-08-05T09:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prune duplicate entries from CRL", "timeSpent": "PT0S", "updated": "2021-08-05T09:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2020-02-27T08:41:00.000000", "creator": "623a4603761efb0069cd34da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1abb80d7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0043c:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21702423_*|*_3_*:*_1_*:*_419005020_*|*_5_*:*_1_*:*_0"}], "description": "Puppetserver 6.9.0 was released last week but I can't find an image at [https://hub.docker.com/r/puppet/puppetserver/tags.]\n\n\u00a0\n\nCould you please create one? :)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14902", "fixedVersions": [], "id": "14902", "issueType": "Bug", "key": "SERVER-2739", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4603761efb0069cd34da", "resolution": "Fixed", "resolutionDate": "2020-03-03T11:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet/puppserver:6.9.0 docker image missing", "timeSpent": "PT0S", "updated": "2020-03-23T10:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "body": "If you are a PE customer, you should file this with PE Support.\u00a0\n\nUnable to reproduce via:\n{code:java}\n[root@pe-201913-master ~]# puppetserver gem install faraday\n[root@pe-201913-master ~]# puppetserver gem install faraday -v 0.9.0\n\n[root@pe-201913-master ~]# puppetserver gem list faraday\n*** LOCAL GEMS ***\nfaraday (1.0.0, 0.9.0)\n\n[root@pe-201913-master ~]# cat /etc/puppetlabs/code/environments/production/manifests/site.pp \nFile { backup => false }\nnode 'pe-201913-master.example.com' {\n\u00a0 package { 'faraday':\n\u00a0 \u00a0 ensure \u00a0 => present,\n\u00a0 \u00a0 provider => puppetserver_gem,\n\u00a0 }\n}\n\n[root@pe-201913-master ~]# service pe-puppetserver restart\n\n[root@pe-201913-master ~]# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Loading facts\nInfo: Caching catalog for pe-201913-master.puppetdebug.vlan\nInfo: Applying configuration version '1582743347'\nNotice: Applied catalog in 14.26 seconds\n\n[root@pe-201913-master ~]# ll /opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/\ntotal 0\ndrwxr-xr-x. 5 root root 192 Feb 26 18:50 faraday-0.9.0\ndrwxr-xr-x. 5 root root 136 Feb 26 18:37 faraday-1.0.0\ndrwxr-xr-x. 4 root root 229 Feb 26 18:37 multipart-post-2.1.1\n\n[root@pe-201913-master ~]# ll /opt/puppetlabs/server/data/puppetserver/jruby-gems/specifications/\ntotal 12\n-rw-r--r--. 1 root root 1228 Feb 26 18:50 faraday-0.9.0.gemspec\n-rw-r--r--. 1 root root 1475 Feb 26 18:37 faraday-1.0.0.gemspec\n-rw-r--r--. 1 root root 1652 Feb 26 18:37 multipart-post-2.1.1.gemspec{code}\n\u00a0\n\nNote the restart of the Puppet Server service, which was not necessary, but tested anyway.", "created": "2020-02-26T12:06:00.000000"}, {"author": "5bbc9e3e53dc9c5087edefc2", "body": "Hey [~accountid:557058:ea8d8852-0291-4b62-9047-0e4b235efa5d]\u00a0\n\nThe\u00a0 gem is being used by a custom function in a custom module. \n The error is seen on one compile master, when the agent runs on it, but the gem is installed on both the compile master and the master of master.\u00a0\n\nPerhaps I can reproduce this while you or somebody watches on a screen share?\n\n\u00a0\n\nThanks\n\nJames\n\n\u00a0", "created": "2020-03-03T01:44:00.000000"}, {"author": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "body": "Hello James,\n\nI am on a family leave until next week.\n\nIn any case, please follow up via\nhttps://puppetlabs.zendesk.com/tickets/38298\n\nTom\n-- \nTom Kishel\n\nPrincipal Support Engineer\nPuppet. The shortest path to better software.\n", "created": "2020-03-03T18:04:00.000000"}, {"author": "5bbc9e3e53dc9c5087edefc2", "body": "So I had another wack at this. And resolved the issue. I hope you are all staying safe and healthy!\u00a0", "created": "2020-03-18T12:56:00.000000"}, {"author": "5bbc9e3e53dc9c5087edefc2", "body": "You can close this ticket.", "created": "2020-03-18T12:57:00.000000"}, {"author": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "body": "We will close, but if you could update this with your solution, it will help others.\nThanks, James.", "created": "2020-03-20T16:16:00.000000"}], "components": ["Puppet Server"], "created": "2020-02-26T05:49:00.000000", "creator": "5bbc9e3e53dc9c5087edefc2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3294fa0b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "SLES 12 (x86_64)"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0033k:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_2021197785_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.0.10*\n *Puppet Server Version: 6.0.10*\n *OS Name/Version: SLES 12 SP4*\n\nRunning puppet agent -t on a newly configured compile master puppet agent reports the error\n\n```\n\nfrup9386:/home/unixad # puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Internal Server Error: org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- faraday\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n\n```\n\nHowever the gem in question is installed on both the compiler and the Master in question.\n\nfrup7682:/tmp/testing-codemanager # puppetserver gem list\n\n*** LOCAL GEMS ***\n\ncolumnize (0.9.0)\ndeep_merge (1.0.1)\ndid_you_mean (default: 1.0.1)\nfacter (2.5.4)\nfaraday (1.0.0, 0.9.0)\nfast_gettext (1.1.2)\ngettext (3.2.2)\nhiera-eyaml (3.0.0, 2.1.0)\nhighline (1.6.21)\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16588", "fixedVersions": [], "id": "16588", "issueType": "Bug", "key": "SERVER-2738", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5bbc9e3e53dc9c5087edefc2", "resolution": "Done", "resolutionDate": "2020-03-20T16:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ruby gem faraday fails to load error on compile master", "timeSpent": "PT0S", "updated": "2020-03-20T16:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is this still an issue for you?", "created": "2020-11-05T16:11:00.000000"}, {"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": ">   Is this still an issue for you?\n\nNo this has been resolved.\n\n-- \nZach", "created": "2020-11-06T21:23:00.000000"}], "components": [], "created": "2020-02-17T17:14:00.000000", "creator": "557058:0605a129-ce49-46e3-912d-378334931850", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14911094"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|i005nb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Nov/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22974737145_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.12.0*\n *Puppet Server Version: 6.8.0*\n *OS Name/Version: FreeBSD 12.1-RELEASE*\n\nIt appears that after I've upgraded to a newer puppetserver version, the server is unable to start.\u00a0 Before the upgrade, restarts of the daemon have been reliable, and if I revert the disk of the container to pre-upgrade, the daemon starts with 6.7.2 without issue.\u00a0 Its possible some other environmental condition causes the failure, but in any case, could I ask for some pointers as to what it might be?\n\n*Desired Behavior:*\n\n*puppetserver foreground doesn't die*\n\n*Actual Behavior:*\n\n\u00a0\n{code:java}\n2020-02-17T16:05:38.685-08:00 DEBUG [async-dispatch-2] [p.s.c.puppet-server-config-service] Initializing with the following settings from core Puppet:\n{:keylength 4096,\n :ca-name \"Puppet CA: pm13.l.larch.space\",\n :hostcrl \"/var/puppet/ssl/crl.pem\",\n :hostprivkey \"/var/puppet/ssl/private_keys/pm13.l.larch.space.pem\",\n :csrdir \"/var/puppet/ssl/ca/requests\",\n :capub \"/var/puppet/ssl/ca/ca_pub.pem\",\n :hostcert \"/var/puppet/ssl/certs/pm13.l.larch.space.pem\",\n :requestdir \"/var/puppet/ssl/certificate_requests\",\n :ssl-client-verify-header \"HTTP_X_CLIENT_VERIFY\",\n :dns-alt-names\n \"pm13.l.larch.space,puppet.larch.space,puppet.l.larch.space,puppetca.l.larch.space\",\n :puppet-version \"6.12.0\",\n :cacert \"/var/puppet/ssl/ca/ca_crt.pem\",\n :localcacert \"/var/puppet/ssl/certs/ca.pem\",\n :autosign \"/usr/local/etc/puppet/autosign.conf\",\n :csr-attributes \"/usr/local/etc/puppet/csr_attributes.yaml\",\n :privatekeydir \"/var/puppet/ssl/private_keys\",\n :trusted-oid-mapping-file\n \"/usr/local/etc/puppet/custom_trusted_oid_mapping.yaml\",\n :ca-ttl 157680000,\n :cakey \"/var/puppet/ssl/ca/ca_key.pem\",\n :cacrl \"/var/puppet/ssl/ca/ca_crl.pem\",\n :serial \"/var/puppet/ssl/ca/serial\",\n :manage-internal-file-permissions true,\n :certdir \"/var/puppet/ssl/certs\",\n :codedir \"/usr/local/etc/puppet/code\",\n :cert-inventory \"/var/puppet/ssl/ca/inventory.txt\",\n :hostpubkey \"/var/puppet/ssl/public_keys/pm13.l.larch.space.pem\",\n :ssl-client-header \"HTTP_X_CLIENT_DN\",\n :certname \"pm13.l.larch.space\",\n :signeddir \"/var/puppet/ssl/ca/signed\",\n :allow-duplicate-certs false}2020-02-17T16:05:38.685-08:00 INFO  [async-dispatch-2] [p.s.c.puppet-server-config-core] Initializing webserver settings from core Puppet\n2020-02-17T16:05:38.689-08:00 DEBUG [async-dispatch-2] [p.t.internal] Finished running lifecycle function 'init' for service ':PuppetServerConfigService'\n2020-02-17T16:05:38.689-08:00 DEBUG [async-dispatch-2] [p.t.internal] Running lifecycle function 'init' for service ':AnalyticsService'\n2020-02-17T16:05:38.690-08:00 DEBUG [async-dispatch-2] [p.t.internal] Finished running lifecycle function 'init' for service ':AnalyticsService'\n2020-02-17T16:05:38.691-08:00 DEBUG [async-dispatch-2] [p.t.internal] Running lifecycle function 'init' for service ':CaService'\n2020-02-17T16:05:38.696-08:00 DEBUG [async-dispatch-2] [p.p.certificate-authority] No custom OID mapping configuration file found at /usr/local/etc/puppet/custom_trusted_oid_mapping.yaml, custom OID mappings will not be loaded\n2020-02-17T16:05:38.702-08:00 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\njava.lang.UnsatisfiedLinkError: sun.nio.fs.LinuxWatchService.inotifyInit()I\n\tat sun.nio.fs.LinuxWatchService.inotifyInit(Native Method)\n\tat sun.nio.fs.LinuxWatchService.<init>(LinuxWatchService.java:59)\n\tat sun.nio.fs.BsdFileSystem.newWatchService(BsdFileSystem.java:51)\n\tat puppetlabs.trapperkeeper.services.watcher.filesystem_watch_core$create_watcher.invokeStatic(filesystem_watch_core.clj:97)\n\tat puppetlabs.trapperkeeper.services.watcher.filesystem_watch_core$create_watcher.invoke(filesystem_watch_core.clj:91)\n\tat puppetlabs.trapperkeeper.services.watcher.filesystem_watch_service$reify__27996$service_fnk__5004__auto___positional$reify__28003.create_watcher(filesystem_watch_service.clj:34)\n\tat puppetlabs.trapperkeeper.services.protocols.filesystem_watch_service$fn__27753$G__27749__27757.invoke(filesystem_watch_service.clj:43)\n\tat puppetlabs.trapperkeeper.services.protocols.filesystem_watch_service$fn__27753$G__27748__27762.invoke(filesystem_watch_service.clj:43)\n\tat clojure.core$partial$fn__5839.invoke(core.clj:2624)\n\tat puppetlabs.services.ca.certificate_authority_service$reify__42998$service_fnk__5004__auto___positional$reify__43013.init(certificate_authority_service.clj:34)\n\tat puppetlabs.trapperkeeper.services$fn__4828$G__4820__4831.invoke(services.clj:9)\n\tat puppetlabs.trapperkeeper.services$fn__4828$G__4819__4835.invoke(services.clj:9)\n\tat puppetlabs.trapperkeeper.internal$fn__14573$run_lifecycle_fn_BANG___14580$fn__14581.invoke(internal.clj:196)\n\tat puppetlabs.trapperkeeper.internal$fn__14573$run_lifecycle_fn_BANG___14580.invoke(internal.clj:179)\n\tat puppetlabs.trapperkeeper.internal$fn__14602$run_lifecycle_fns__14607$fn__14608.invoke(internal.clj:229)\n\tat puppetlabs.trapperkeeper.internal$fn__14602$run_lifecycle_fns__14607.invoke(internal.clj:206)\n\tat puppetlabs.trapperkeeper.internal$fn__15176$build_app_STAR___15185$fn$reify__15197.init(internal.clj:581)\n\tat puppetlabs.trapperkeeper.internal$fn__15224$boot_services_for_app_STAR__STAR___15231$fn__15232$fn__15234.invoke(internal.clj:609)\n\tat puppetlabs.trapperkeeper.internal$fn__15224$boot_services_for_app_STAR__STAR___15231$fn__15232.invoke(internal.clj:608)\n\tat puppetlabs.trapperkeeper.internal$fn__15224$boot_services_for_app_STAR__STAR___15231.invoke(internal.clj:602)\n\tat clojure.core$partial$fn__5841.invoke(core.clj:2630)\n\tat puppetlabs.trapperkeeper.internal$fn__14647$initialize_lifecycle_worker__14658$fn__14659$fn__14809$state_machine__11805__auto____14834$fn__14837.invoke(internal.clj:249)\n\tat puppetlabs.trapperkeeper.internal$fn__14647$initialize_lifecycle_worker__14658$fn__14659$fn__14809$state_machine__11805__auto____14834.invoke(internal.clj:249)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:973)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:972)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:977)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:975)\n\tat clojure.core.async$ioc_alts_BANG_$fn__12020.invoke(async.clj:384)\n\tat clojure.core.async$do_alts$fn__11960$fn__11963.invoke(async.clj:253)\n\tat clojure.core.async.impl.channels.ManyToManyChannel$fn__6624$fn__6625.invoke(channels.clj:95)\n\tat clojure.lang.AFn.run(AFn.java:22)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n2020-02-17T16:05:38.703-08:00 DEBUG [async-dispatch-2] [p.t.internal] Lifecycle worker completed :boot lifecycle task; awaiting next task.\n{code}\n\n**\n\nIf the above is insufficient, please let me know what else is useful.\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16065", "fixedVersions": [], "id": "16065", "issueType": "Bug", "key": "SERVER-2737", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0605a129-ce49-46e3-912d-378334931850", "resolution": "Fixed", "resolutionDate": "2020-11-09T15:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver unable to start after upgrade to 6.8.0", "timeSpent": "PT0S", "updated": "2020-11-09T15:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-02-14T16:12:00.000000", "creator": "557058:6710b319-779a-49c9-b66f-f584a24dab53", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73b9e029"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Server CA CLI v2"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylkkc:0019k"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_85081043338_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16352", "fixedVersions": [], "id": "16352", "issueType": "Epic", "key": "SERVER-2736", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6710b319-779a-49c9-b66f-f584a24dab53", "resolution": "Won't Do", "resolutionDate": "2022-10-26T10:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server CA CLI v2", "timeSpent": "PT0S", "updated": "2022-10-26T10:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "wip PR before I created the ticket here: https://github.com/puppetlabs/puppetlabs-stdlib/pull/1087", "created": "2020-02-13T16:10:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T11:16:00.000000"}], "components": [], "created": "2020-02-13T16:10:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@75acd2c7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|i004pz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Mar/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7325_*|*_3_*:*_1_*:*_15787110972_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_49340854328"}], "description": "There are three functions in standard lib that need JSON parsing. They actually use Puppet's PSON parser to parse this JSON because 11 years ago a JSON library wasn't included in Ruby's standard library. This has changed since then and PSON parsing is, anecdotally, drastically slower than JSON parsing. These functions should move to using Puppet's JSON util (which should select the best JSON parser for the platform). While we're there we should move them from Puppet's 3x function interface to Puppet's 4x function interface.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16280", "fixedVersions": [], "id": "16280", "issueType": "Improvement", "key": "SERVER-2735", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move stdlib functions that use PSON to use JSON if possible", "timeSpent": "PT0S", "updated": "2022-03-08T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2020-02-13T09:19:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@69257956"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|i004e7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_14011204_*|*_1_*:*_1_*:*_12602_*|*_10007_*:*_1_*:*_11301940_*|*_5_*:*_1_*:*_0"}], "description": "With the switch to Java 11, some type inference and Java class loading in Clojure got more particular about ambiguous types. A new one of these errors recently cropped up in tk-jetty9: https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/cc37079b473925283380449ef6749a506d5cc89b/src/puppetlabs/trapperkeeper/services/webserver/jetty9_core.clj#L740 that prevents the server from reloading in certain circumstances (e.g. when enabling file-sync). This seems to be fixed by adding a type annotation to the arg to {{Resource/newResource}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17504", "fixedVersions": ["SERVER 6.9.0"], "id": "17504", "issueType": "Improvement", "key": "SERVER-2734", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-02-13T16:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ambiguous method call in tk-jetty9", "timeSpent": "PT0S", "updated": "2020-02-13T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-02-06T11:55:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5abdef12"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10274"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzz2v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_963_*|*_10007_*:*_1_*:*_1181718_*|*_3_*:*_1_*:*_1046987_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1034008826"}], "description": "(Initial planned release date: 2020-02-18)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-02-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.13.0 Release - 2020-02-18\n", "estimate": "PT0S", "externalId": "15076", "fixedVersions": ["None"], "id": "15076", "issueType": "Task", "key": "SERVER-2733", "labels": [], "originalEstimate": "PT0S", "parent": "25486", "parentSummary": "Puppet Platform 6.13.0 Release - 2020-02-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2020-02-18T11:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.9.0)", "timeSpent": "PT0S", "updated": "2020-02-18T11:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "note to self: promote pe-puppetserver containing 6.9.0 into 2019.4.0-release branch on Tuesday", "created": "2020-02-14T18:42:00.000000"}], "components": [], "created": "2020-02-06T11:55:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a49b502"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10274"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzz2f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_337192689_*|*_1_*:*_1_*:*_950_*|*_3_*:*_1_*:*_809971_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_714778291"}], "description": "(Initial planned release date: 2020-02-18)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2020-02-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.13.0 Release - 2020-02-18\n", "estimate": "PT0S", "externalId": "17502", "fixedVersions": ["None"], "id": "17502", "issueType": "Task", "key": "SERVER-2732", "labels": [], "originalEstimate": "PT0S", "parent": "25486", "parentSummary": "Puppet Platform 6.13.0 Release - 2020-02-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2020-02-18T16:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.9.0)", "timeSpent": "PT0S", "updated": "2020-02-18T16:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-02-06T11:55:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71f9b40b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10274"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzz27:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1015_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_623213887"}], "description": "(Initial planned release date: 2020-02-18)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2020-02-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.13.0 Release - 2020-02-18\n", "estimate": "PT0S", "externalId": "17155", "fixedVersions": ["None"], "id": "17155", "issueType": "Task", "key": "SERVER-2731", "labels": [], "originalEstimate": "PT0S", "parent": "25486", "parentSummary": "Puppet Platform 6.13.0 Release - 2020-02-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2020-02-13T17:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.9.0)", "timeSpent": "PT0S", "updated": "2020-02-18T11:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "{code:java}\nmolly.waggett@molly:~/puppet-projects/puppetserver(master\ud83d\udc4c ) $ ruby ../ticketmatch/ticketmatch.rb --from 6.8.0 --to 6.9.0 --project SERVER --version \"SERVER 6.9.0\"\n(Optional) Enter JIRA team name:\n** DOCS\n    a895bd73  determine -> determines in ca ttl note\n** MAINT\n    2b97a16b  Condition calls to new method/arity in Puppet\n    72cc09c2  update puppet submodule version and agent pin\n    9a66ff78  update puppet submodule version and agent pin\n    c2d70316  update puppet submodule version and agent pin\n    e4478fad  update puppet submodule version and agent pin\n    453e0cfd  update puppet submodule version and agent pin\n    39a03fe5  update puppet submodule version and agent pin\n    b8b4d820  update puppet submodule version and agent pin\n    39552027  update puppet submodule version and agent pin\n    cd22bfd5  simplify reading /opt/puppetlabs/server/pe_version\n    ba46f6a7  update puppet submodule version and agent pin\n    e3874b23  update puppet submodule version and agent pin\n    d89c5bc2  update puppet submodule version and agent pin\n    43d36118  update puppet submodule version and agent pin\n    6ae970d6  update puppet submodule version and agent pin\n    fb94f751  update puppet submodule version and agent pin\n    78dc2ecb  update puppet submodule version and agent pin\n    f7f662da  update puppet submodule version and agent pin\n    6fb533ab  update puppet submodule version and agent pin\n    bdd762e2  update puppet submodule version and agent pin\n    dc0c93d7  update puppet submodule version and agent pin\n    df26e0d3  update puppet submodule version and agent pin\n    d3914319  update puppet submodule version and agent pin\n    2b33a945  update puppet submodule version and agent pin\n    c02ab422  missed pdb termini\n    5e6b61ac  missed a few preserved files in the release dockerfile\n    8a8e18e8  Scoping for Docker ARGs is not intuitive\n    422b0bee  update puppet submodule version and agent pin\n    70e2cf57  update puppet submodule version and agent pin\n    477c5d2b  update puppet submodule version and agent pin\n    e6525238  update puppet submodule version and agent pin\n    e9c3dc1b  update puppet submodule version and agent pin\n    9c10f30d  update puppet submodule version and agent pin\n    2b5bd601  Exclude :multithreaded-only tests by default\n    816f5e7b  Reordering broke puppetdb.conf templating\n    6a11ac0b  update puppet submodule version and agent pin\n    244ae003  update puppet submodule version and agent pin\n    f2ac5f2f  Bump version to 6.9.0-SNAPSHOT\n    501cc370  Remove release note about new JRuby pool\n    e8ac8709  update puppet submodule version and agent pin\n    3acb6aed  update puppet submodule version and agent pin\n    149873c9  update puppet submodule version and agent pin\n    346d4307  update puppet submodule version and agent pin\n    527a7963  update puppet submodule version and agent pin\n    339bdf5a  update puppet submodule version and agent pin\n    b95c1b5f  update puppet submodule version and agent pin\n    880829c3  Remove unused args\n    0d7f6c00  update puppet submodule version and agent pin\n    23d1a8aa  Update the resource api to latest tag\n    e45d9f52  update puppet submodule version and agent pin\n    082f4513  update puppet submodule version and agent pin\n    86571473  update puppet submodule version and agent pin\n    76f05527  update puppet submodule version and agent pin\n    06ee4d37  update puppet submodule version and agent pin\n** PUP-10222\n    5a186377  Add test case for looking up class params via hiera data\n-- SERVER-2679 (Resolved)\n    71479d52  Bump to clj-parent 4.3.0\n    1c0909e6  Fix borrow and return event logging for ReferencePool\n-- SERVER-2680 (Resolved)\n    8928a8a3  Filter tests that don't work properly with `multithreaded`\n    81d5c73d  Add Travis cells for testing with `multithreaded`\n    6d408ec3  Configure `multithreaded` in tests via env var\n    1411988f  Update Travis test script to allow test filters\n    0783ccd2  Add lein test filter for multithreaded test mode\n-- SERVER-2681 (Resolved)\n    2459629f  Enable metrics tests in multithreaded mode\n    9a0df77a  Remove test that checks instance ids\n-- SERVER-2721 (Resolved)\n    790cc4ff  Explain single-threaded-only test\n    ad7500bf  Add flush API test for multithreaded mode\n-- SERVER-2722 (Resolved)\n    ac213c10  Add ppAuthCertExt to custom_extensions\n-- SERVER-2724 (Resolved)\n    52bcb51b  Add missing `ipaddress6` fact to v4 catalog endpoint\n    1385dab5  set pe_serverversion in set_server_facts\n-- SERVER-2726 (Resolved)\n    1d232f6f  Fixup yardoc descriptions for Puppet::Server::Settings\n    a2f6e890  call RunMode directly\n    78ce733a  Implement thread aware Puppetserver settings\n-- SERVER-2734 (Resolved)\n    5b12cc87  Update clj-parent to 4.3.2\n** UNMARKED\n    9c929549  Version 6.9.0\n    de03d8d5  improve release note for TTL setting\n    08d00ab6  Version 6.8.1-SNAPSHOT\n    54a003d0  6.8.0 release notes\n    86d1bca3  6.3.3 release notes\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 6.9.0)\nPUP-10222\n\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n\n----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA\n\n----- Tickets missing release notes -----\nALL ISSUES CONTAIN RELEASE NOTES\n{code}\n", "created": "2020-02-12T11:31:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "{code:java}\nmolly.waggett@molly:~/puppet-projects/puppet(master\ud83d\udc4c ) $ ruby ../ticketmatch/ticketmatch.rb --from 6.12.0 --to 6.13.0 --project PUP --version \"PUP 6.13.0\" --team \"Froyo\"\n** MAINT\n    093becee2b  Add `spec_order.txt` to .gitignore\n    1dec079601  Update CI badge to point to travis-ci.com\n    47f115a24b  Bump to JRuby 9.2.8.0 in Travis\n    9952edaec9  update facter dependency\n    3040450c4a  simplify reading /opt/puppetlabs/server/pe_version\n    77fd38bd5b  Allow File.read calls\n    60073758fd  document the 'other' set_server_facts\n    9b0aaed016  Adjust OS X versions on acceptance tests\n    3808b005dd  Use memory terminus for facts indirection\n    0fbe127bf2  Reset ca_location between tests\n    98a6f98afe  Ignore X509 purpose during cert verification\n    d871c2d7c5  Lift x509 store's purpose\n    4b5d22d152  Disable tests not working on macOS 10.15\n    a53cb826b5  Delete sync requires\n    9f908ae620  Add flow chart for http client ca service\n    52fb51f8c7  Mark `findgroup` method as private\n    dfa8d6d902  Symbolize group keys and return a hash\n    add8070485  Remove extra whitespace\n    826e6d5690  Fix typo breaking reference chain\n    aa56afde40  remove references to master where we don't need them\n    567699995a  manage params for HTTP REST queries\n    1f056c92b2  Add the ability to (de)serialize multiple objects\n    a0b7f4e122  Update tests to actually not require a master host when running\n** PACKAGING\n    e4a6dc085e  Updating manpage file for master\n    1dd95dd193  Updating manpage file for 6.4.x\n    2b84935f87  Updating manpage file for master\n    da4bea2d26  Updating the puppet.pot file\n    7fb2bf52b5  Updating the puppet.pot file\n    4df9d37cbe  Updating the puppet.pot file\n    9e1892eb92  Updating manpage file for 6.4.x\n    0f0493e479  Updating manpage file for 5.5.x\n    3674d29b41  Updating manpage file for master\n    fc455c7baa  Updating the puppet.pot file\n    4ccb0ec9d0  Updating the puppet.pot file\n    e9294ecf11  Updating the puppet.pot file\n    66b63aebee  Updating manpage file for 6.4.x\n    ef456ef2ca  Updating manpage file for 5.5.x\n    fb0b267f70  Updating manpage file for master\n    0d51222914  Bump to version '6.13.0' [no-promote]\n    8a21558bf7  Updating manpage file for 6.4.x\n    71f8c3de0f  Bump to version '6.4.6' [no-promote]\n    84a838a50c  Updating manpage file for 5.5.x\n    da68897d07  Bump to version '5.5.19' [no-promote]\n-- PUP-10113 (Resolved)\n    f51bc3f441  Exercise chained syntax in type inference benchmark\n    455f08d71d  Speed up method calls and calls to []\n-- PUP-10117 (Resolved)\n    f7ebe313bf  Read passwd and group files once per resource\n-- PUP-10142 (Resolved)\n    a5ae3409bc  Add white space for #initialize_default_settings!\n R  be223e5867  Revert \"(PUP-10142) Add white space for #initialize_default_settings!\"\n    f6672fa8fa  Refactor settings default initialization\n    99c864f5aa  Add flag for global context initialization during settings configuration\n    de0d274515  Allow Puppet settings redefinition\n-- PUP-10145 (Resolved)\n    3485c83c6b  Add puppet service\n    6b9b548d73  Don't allow serialization errors to escape\n    1a1170c83d  Refactor accepted mime types\n-- PUP-10146 (Resolved)\n    b926541d7f  Stream file content response body\n    564f05ec2b  Pass environment to file_metadatas and content\n    c83b25df4b  Add File HTTP Service\n-- PUP-10169 (Resolved)\n    d5604609d7  Generalize forcelocal parameter for user/group\n-- PUP-10171 (Resolved)\n    7a5abec7a0  Add dnfmodule flavor acceptance test\n    8fe3b1f67d  Fix openbsd pkg_info flavor matching\n    575302b499  Support changing package flavors\n-- PUP-10177 (Resolved)\n    6def945eea  Fixes scan_options parsing with array of strings with yum provider\n-- PUP-10218 (Resolved)\n    3f9541c54f  Puppet incorrectly detecting stale pidfile\n-- PUP-10221 (Resolved)\n    d7093e2921  Add missing methods to PObjectTypeExtension\n-- PUP-10223 (Resolved)\n    e4cee83265  Allow node definitions in apply blocks\n-- PUP-10226 (Resolved)\n    48b99eb5b8  URL encode paths in http client\n-- PUP-10227 (Resolved)\n    9b8a2a2291  Preserve expectation for http.finish\n    dc7b92db82  Close the HTTP connection\n-- PUP-10231 (Resolved)\n    8a73d6cdd0  Use EvaluatingParser singleton in PopsBridge\n-- PUP-10232 (Resolved)\n    0021428430  Use HTTP client to resubmit facts\n    b365390ede  Use webmock to test resubmitting facts\n-- PUP-10234 (Resolved)\n    3d48e397a2  Add ppAuthCertExt to custom_extensions\n-- PUP-10236 (Resolved)\n    9d395a4e69  Tag untagged acceptance tests\n** PUP-10238\n    df826baa0e  Change default value of strict_hostname_checking to true\n-- PUP-10241 (Resolved)\n    0a05f66aff  Force UTF-8 encoding on XML plist data\n-- PUP-10246 (Resolved)\n    688779d43c  Use dsimport to set OS X user passwords\n-- PUP-10247 (Accepted)\n    b0b6410bc6  Only try to match strings in file log destination\n-- PUP-10255 (Resolved)\n    7b01ee7f64  Follow symlinks in environment path\n-- PUP-10256 (Resolved)\n    f8b03bab34  Add `versioned_environment_dirs` feature flag\n-- PUP-10263 (Resolved)\n    964d90a968  facter-ng available on all platforms\n-- PUP-10267 (Resolved)\n    69750d3e07  Ensure we've connected to the explicit route\n    1d88c8f90d  Allow routing to a service with an explicit host & port\n    94fba9ed84  Remove extra HEAD request from vcr cassette\n    77b8ba17e4  Require file server paths to be absolute\n    d84a1f7a44  Eliminate need to pass mount and path separately\n    2b15caacaf  Pass block to response read_body\n-- PUP-10287 (Resolved)\n    91fbc026c6  mailalias: comma inside commands fix\n-- PUP-1537 (Resolved)\n    b6ab1697af  add mark property for package\n-- PUP-2820 (Resolved)\n    6dad99e047  Print meaningful disable_warnings error message\n-- PUP-3721 (Resolved)\n    7a92874522  Include provider parameter in puppet resource output\n-- PUP-8900 (Resolved)\n    8075e7ca89  Use HTTP client to upload facts\n    1a00489e8a  Use webmock to test facts upload\n-- PUP-9465 (Resolved)\n    216a2678c1  Implement `manages_members` in groupadd\n-- PUP-9719 (Resolved)\n    2ec4c89073  Fix Administrators Group Windows Permissions\n-- PUP-9750 (Resolved)\n    97c22f175c  optionally add peserverversion to server_facts\n-- PUP-9966 (Resolved)\n    c43950d105  acceptance tests for package gem provider\n    bc282f4ccd  acceptance tests for package gem provider\n    79ccc6b97a  acceptance tests for package gem provider\n** REVERT\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF PUP 6.13.0)\nPUP-10238\nREVERT be223e5867\n\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n\n----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA\n\n----- Tickets missing release notes -----\nALL ISSUES CONTAIN RELEASE NOTES\n{code}\n", "created": "2020-02-13T12:19:00.000000"}], "components": [], "created": "2020-02-06T11:55:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ba0f3bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10274"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzz1z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_935_*|*_3_*:*_1_*:*_517913265_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_516045127"}], "description": "(Initial planned release date: 2020-02-18)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    ** (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2020-02-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.13.0 Release - 2020-02-18\n", "estimate": "PT0S", "externalId": "16882", "fixedVersions": ["None"], "id": "16882", "issueType": "Task", "key": "SERVER-2730", "labels": [], "originalEstimate": "PT0S", "parent": "25486", "parentSummary": "Puppet Platform 6.13.0 Release - 2020-02-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2020-02-18T11:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.9.0)", "timeSpent": "PT0S", "updated": "2020-02-18T11:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2020-02-04T22:08:00.000000", "creator": "5e172f67b540b70da8391f73", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ba84998"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzx53:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_23738877877_*|*_6_*:*_1_*:*_0"}], "description": "Add new os support on litmus modules\n\n*Before to start, make sure the new platform is provided by vmpooler and it's fully equipped*\n *an image with the new os is available from puppet agent team*\n\n[Here|https://confluence.puppetlabs.com/display/ECO/How+to+add+support+for+new+platforms] you can find a list with all the converted modules to use litmus\n\nStep1: Using pdksync, check/update metadata.json, ci-job-configs/jenkii/platform/projects/modules-unified.yaml\n\n*metadata.json file*\n - check for section: operatingsystem_support\n - add new version under the intended operatingsystem and save\n\n*[ci-job-configs/jenkii/platform/projects/modules-unified.yaml|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/modules-unified.yaml]*\n - check for the module and add new platform under smoke_platforms| pe_platforms (if this platform was released)\n\nStep2: Using pdksync, create PR with the changes on modules\n Step3: Create PR on [ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/modules-unified.yaml]\n Step4: Deploy experimental platform intended module\n Step5: Run ad-hoc tests using that experimental\n Step6: Check testing results\n Step7: If failures, fix them, re-execute all the testing part until they are green \n Step8: Ask for review/merge\n\n(-) check for vmpooler platform\n (-) pdksync: update metadata.json \n (-) pdksync: push changes, create commit\n (-) create PR on ci-job-configs\n (-) deploy experimental platform intended module\n (-) run tests through ad-hoc jenkins using that experimental\n (-) check testing report\n (-) if failures, fix them, re-execute ad-hoc until they are green\n (-) review/merge PR", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16587", "fixedVersions": [], "id": "16587", "issueType": "Task", "key": "SERVER-2729", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e172f67b540b70da8391f73", "resolution": "Won't Fix", "resolutionDate": "2020-11-05T16:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Module for memory increasing puppetserver", "timeSpent": "PT0S", "updated": "2020-11-05T16:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:5e172f67b540b70da8391f73] you'll have better luck joining the puppet slack community slack channel (https://slack.puppet.com/). There is a module for managing puppetserver, see https://github.com/voxpupuli/puppet-puppetserver.", "created": "2020-02-05T10:46:00.000000"}], "components": ["Puppet Server"], "created": "2020-02-04T21:58:00.000000", "creator": "5e172f67b540b70da8391f73", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@615bec6c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzx4v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_46106257_*|*_6_*:*_1_*:*_0"}], "description": "How to increase puppetserver memory size by using modules\n\nJAVA_ARG =\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16278", "fixedVersions": [], "id": "16278", "issueType": "Bug", "key": "SERVER-2728", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e172f67b540b70da8391f73", "resolution": "Incomplete", "resolutionDate": "2020-02-05T10:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "{brief summary of issue}", "timeSpent": "PT0S", "updated": "2020-02-05T10:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:5b6e0a49a6f4a82a0e7ed384] (or feel free to direct me to a better person to ask) I started looking into this, and the new Facter is currently spitting out a bunch of debug output in our tests.\n{code}\n[2020-02-14 14:04:22.809787 ] DEBUG Facter::FactLoader - Loading internal facts\n[2020-02-14 14:04:22.810567 ] DEBUG Facter::FactLoader - Loading all internal facts\n[2020-02-14 14:04:22.811832 ] DEBUG Facter::FactLoader - Loading external facts\n[2020-02-14 14:04:22.812574 ] DEBUG Facter::FactLoader - Loading custom facts\n[2020-02-14 14:04:22.813247 ] DEBUG Facter::FactLoader - Loading external facts\n[2020-02-14 14:04:22.813987 ] DEBUG Facter::QueryParser - User query is: [\"kernel\"]\n[2020-02-14 14:04:22.814519 ] DEBUG Facter::QueryParser - Query is kernel\n[2020-02-14 14:04:22.815159 ] DEBUG Facter::QueryParser - Checking query tokens kernel\n[2020-02-14 14:04:22.817800 ] DEBUG Facter::QueryParser - List of resolvable facts: [#<Facter::SearchedFact:0x442eaf4a @name=\"kernel\", @fact_class=Facter::Macosx::Kernel, @filter_tokens=[], @type=:core, @user_query=\"kernel\">]\n{code}\nDo you know what might be causing that? Overall we usually use {{warn}}. What is the right way to configure the logging level when using Facter 4 as a library?", "created": "2020-02-14T15:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "However, besides the logging issue, all our tests passed with the new Facter, both single- and multithreaded.", "created": "2020-02-14T16:19:00.000000"}, {"author": "5b6e0a49a6f4a82a0e7ed384", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] I've also noticed that logs were printed. I had a quick look when I ran the tests but could not find the problem quickly. However we are still working on the logging mechanism to make it 1-1 with Facter 3.x. I'll create a ticket\u00a0on our board so we can check it after we finish tasks that are related to logging.", "created": "2020-02-17T06:57:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This also appears to be having trouble with our Ruby spec tests:\n{code}\n2020-02-18 08:55:45,064 ERROR [main] [puppetserver] Puppet Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: key<resolver_lengths for %<name> not found\norg/jruby/RubyString.java:1247:in `%'\norg/jruby/RubyKernel.java:839:in `sprintf'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/custom_facts/util/fact.rb:176:in `announce_when_no_suitable_resolution'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/custom_facts/util/fact.rb:120:in `block in value'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/custom_facts/util/fact.rb:150:in `searching'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/custom_facts/util/fact.rb:116:in `value'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/custom_facts/util/collection.rb:141:in `value'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/custom_facts/core/legacy_facter.rb:116:in `value'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/framework/core/fact/external/external_fact_manager.rb:20:in `block in external_facts'\norg/jruby/RubyArray.java:1800:in `each'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/framework/core/fact/external/external_fact_manager.rb:19:in `external_facts'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/framework/core/fact/external/external_fact_manager.rb:7:in `resolve_facts'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/framework/core/fact_manager.rb:21:in `resolve_facts'\n/Users/aileen/code/server/puppetserver/ruby/facter/lib/facter.rb:134:in `value'\n/Users/aileen/code/server/puppetserver/ruby/puppet/lib/puppet/confine/variable.rb:21:in `facter_value'\n/Users/aileen/code/server/puppetserver/ruby/puppet/lib/puppet/confine/variable.rb:57:in `test_value'\n/Users/aileen/code/server/puppetserver/ruby/puppet/lib/puppet/confine/variable.rb:45:in `valid?'\n/Users/aileen/code/server/puppetserver/ruby/puppet/lib/puppet/confine_collection.rb:49:in `block in valid?'\norg/jruby/RubyEnumerable.java:634:in `detect'\n/Users/aileen/code/server/puppetserver/ruby/puppet/lib/puppet/confine_collection.rb:49:in `valid?'\n/Users/aileen/code/server/puppetserver/ruby/puppet/lib/puppet/confiner.rb:44:in `suitable?'\n/Users/aileen/code/server/puppetserver/ruby/puppet/lib/puppet/type.rb:2011:in `block in suitableprovider'\n{code}\n\nAlso:\n{code}\nUnable to add resolve nil for fact processors: Invalid aggregate options [:fact_type]\n[2020-02-18 08:55:29.130284 ] ERROR Module - --define_fact-- not implemented but required\nwith params: [:ec2_metadata]\nwith block: #<Proc:0x2e1c5d1f@/Users/aileen/code/server/puppetserver/vendor/test_bundle/jruby/2.5.0/gems/facter-2.5.7/lib/facter/ec2.rb:20>\n{code}\n\nThese are visible in the Travis output on the associated PR.", "created": "2020-02-18T10:05:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Now that Puppet has been updated to properly pull in Facter 4, we can try this again: https://github.com/puppetlabs/puppetserver/pull/2347", "created": "2020-05-26T09:59:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It was discovered in PDB integration testing that facts from environment variables do not work properly in Facter 4. So we have to revert this again until that is fixed, see https://puppet.atlassian.net/browse/FACT-2636.", "created": "2020-05-26T15:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The bug has been fixed and will be released shortly. We should update our Facter module to pick it up once its out.", "created": "2020-05-27T10:03:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Going to track the update of the submodule to pick up [https://github.com/puppetlabs/facter-ng/pull/537] with FACT-2636. Closing this as done, since we decided to not revert in the\u00a0 meantime.", "created": "2020-05-28T16:26:00.000000"}], "components": [], "created": "2020-02-04T09:36:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b6d5617"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zks"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_12344638_*|*_1_*:*_1_*:*_8852_*|*_10007_*:*_2_*:*_98133604_*|*_3_*:*_1_*:*_330258443_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_8052591868_*|*_10006_*:*_2_*:*_1377292862"}], "description": "Now that the development of the new Ruby implementation of Facter (Facter NG) is nearly complete, we should try testing it out in our Facter submodule, and get off Facter 2.\n\nThis will impact our testing and running the server from the REPL.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17154", "fixedVersions": ["SERVER 6.12.0"], "id": "17154", "issueType": "Improvement", "key": "SERVER-2727", "labels": ["ondeck1"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-05-28T16:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Start using Facter NG as Puppetserver Facter submodule", "timeSpent": "PT0S", "updated": "2020-05-28T16:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2020-02-03T17:06:00.000000", "creator": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72a0306b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzw2f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_415721133_*|*_1_*:*_1_*:*_71020994_*|*_10007_*:*_2_*:*_260637875_*|*_3_*:*_1_*:*_521774562_*|*_5_*:*_1_*:*_0"}], "description": "In the conversation for [this PR|https://github.com/puppetlabs/puppet/pull/7746] it was brought up that Puppet Server should consider having its own thread-aware settings class. This ticket is to track the Puppet Server changes necessary to make that dream come true.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "16277", "fixedVersions": ["SERVER 6.9.0"], "id": "16277", "issueType": "Improvement", "key": "SERVER-2726", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "resolution": "Done", "resolutionDate": "2020-02-18T09:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create thread-aware puppetserver puppet settings class", "timeSpent": "PT0S", "updated": "2020-02-18T09:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "One issue is this line in your puppet.conf:\n{code}\nssldir: $vardir/ssl\n{code}\nCurrently, we only support [certain settings|https://github.com/puppetlabs/puppetserver-ca-cli/blob/master/lib/puppetserver/ca/config/puppet.rb#L173-L181] for interpolation with the {{puppetserver ca}} CLI. Unfortunately, {{$vardir}} isn't currently one of them, because normally the SSL files are completely separate from the vardir.\n\nAs a workaround, you can spell out your vardir location in your {{ssldir}} setting. We would also consider accepting a patch to add this, but we're probably not going to fix this internally any time soon, since it's an unusual configuration.\n\nLet me know if that workaround helps!", "created": "2020-02-05T11:12:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing this due to inactivity, please reopen if you're still having issues.", "created": "2021-02-23T16:30:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2020-01-30T12:49:00.000000", "creator": "5f9a188662584c006bdfb65f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66c1f1c2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzslz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2321150260_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_31388124821"}], "description": "*Puppet Version: 6.12.0*\n *Puppet Server Version: 6.8.0*\n *OS Name/Version:\u00a0CentOS Linux release 7.7.1908*\n\nAfter a brand-new install of puppet server using the below steps:\n\n1.\u00a0rpm -Uvh [https://yum.puppet.com/puppet6-release-el-7.noarch.rpm]\n 2. yum install puppetserver glibc\n 3.\u00a0systemctl enable puppetserver\n 4. systemctl enable puppet\n 5. systemctl start puppetserver\n 6. systemctl start puppet\n\n\u00a0\n\nI sign the certificate for one client fine, but then i am unable to perform any action with certificates without getting an error message\n * puppetserver ca list\n * puppetserver ca list --all\n * puppetserver ca sign --certname <FQDN>\n\n\u00a0\n\nI tried deleting all certificates and re-installing puppetserver to no avail\n\n*Desired Behavior:*\n\n\u00a0Able to view/sign certificates\n\n*Actual Behavior:*\n\nCommand Error:\nh5. puppetserver ca list\n\n\nError:\nCould not parse $vardir in $vardir/ssl, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $vardir/ssl/ca, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $vardir/ssl/certs, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $vardir/ssl/private_keys, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $vardir/ssl/public_keys, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $cadir/ca_crt.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $cadir/ca_key.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $cadir/ca_pub.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $cadir/root_key.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $cadir/ca_crl.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $cadir/serial, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $cadir/inventory.txt, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $certdir/ca.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $ssldir/crl.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $certdir/$certname.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $privatekeydir/$certname.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $publickeydir/$certname.pem, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\nCould not parse $vardir in $cadir/signed, valid settings to be interpolated are $ssldir, $certdir, $cadir, $certname, $server, or $masterport\n\n\u00a0\nh5. puppetserver Log\nh5. journalctl -x -u puppetserver\n\n\n-- Logs begin at Thu 2020-01-30 11:14:58 MST, end at Thu 2020-01-30 12:35:19 MST. --\nJan 30 11:15:09 z11-admin systemd[1]: Starting puppetserver Service...\n-- Subject: Unit puppetserver.service has begun start-up\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n--\n-- Unit puppetserver.service has begun starting up.\nJan 30 11:15:37 z11-admin systemd[1]: Started puppetserver Service.\n-- Subject: Unit puppetserver.service has finished start-up\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n--\n-- Unit puppetserver.service has finished starting up.\n--\n-- The start-up result is done.\n\n\u00a0\nh5. puppet log\nh5. journalctl -x -u puppet\n\n-- Logs begin at Thu 2020-01-30 11:14:58 MST, end at Thu 2020-01-30 12:37:19 MST. --\nJan 30 11:15:09 <PUPPETSERVER> systemd[1]: Started Puppet agent.\n-- Subject: Unit puppet.service has finished start-up\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n--\n-- Unit puppet.service has finished starting up.\n--\n-- The start-up result is done.\nJan 30 11:15:13 <PUPPETSERVER> puppet-agent[1689]: Request to https://puppet:8140/puppet-ca/v1 failed after 0.005 seconds: Failed to open TCP connection to puppet:8140 (Connection refused - connect(2) for \"puppet\" port 8140)\nJan 30 11:15:13 <PUPPETSERVER> puppet-agent[1689]: Wrapped exception:\nJan 30 11:15:13 <PUPPETSERVER> puppet-agent[1689]: Failed to open TCP connection to puppet:8140 (Connection refused - connect(2) for \"puppet\" port 8140)\nJan 30 11:15:13 <PUPPETSERVER> puppet-agent[1689]: No more routes to ca\nJan 30 11:17:13 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:19:13 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:21:13 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:23:13 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:25:13 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:27:14 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:29:14 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:31:14 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:33:14 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:35:14 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:37:14 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:39:15 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:41:15 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:43:15 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:45:15 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:47:15 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:49:15 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:51:16 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:53:16 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:55:16 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:57:16 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 11:59:16 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:01:16 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:03:17 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:05:17 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:07:17 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:09:17 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:11:17 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:13:17 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:15:18 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:17:18 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:19:18 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:21:18 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:23:18 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:25:18 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:27:19 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:29:19 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:31:19 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:33:19 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:35:19 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed [unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\nJan 30 12:37:19 <PUPPETSERVER> puppet-agent[1689]: certificate verify failed\u00a0[unable to get local issuer certificate for CN=<PUPPETSERVER_FQDN>]\n\n\u00a0\nh5. cat /etc/puppetlabs/puppet/puppet.conf\n\n[main]\n server = puppet\n environment = production\n runinterval = 3h\n logdir = /var/log/puppet\n rundir = /var/run/puppet\n ssldir = $vardir/ssl\n[agent]\n classfile = $vardir/classes.txt\n localconfig = $vardir/localconfig\n\n\u00a0\nh5. /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf | sed '/^$/d'\n\n\njruby-puppet: {\n ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby]\n gem-home: /opt/puppetlabs/server/data/puppetserver/jruby-gems\n gem-path: [${jruby-puppet.gem-home}, \"/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_gems\"]\n master-conf-dir: /etc/puppetlabs/puppet\n master-code-dir: /etc/puppetlabs/code\n master-var-dir: /opt/puppetlabs/server/data/puppetserver\n master-run-dir: /var/run/puppetlabs/puppetserver\n master-log-dir: /var/log/puppetlabs/puppetserver\n}\nhttp-client: {\n}\nprofiler: {\n}\n\n\u00a0\nh5. grep -v \\# /etc/sysconfig/puppetserver | sed '/^$/d'\n\n\nJAVA_BIN=\"/usr/bin/java\"\nJAVA_ARGS=\"-Xms6g -Xmx6g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger\"\nJAVA_ARGS_CLI=\"${JAVA_ARGS_CLI:-}\"\nTK_ARGS=\"\"\nUSER=\"puppet\"\nGROUP=\"puppet\"\nINSTALL_DIR=\"/opt/puppetlabs/server/apps/puppetserver\"\nCONFIG=\"/etc/puppetlabs/puppetserver/conf.d\"\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/\"\nSERVICE_STOP_RETRIES=60\nSTART_TIMEOUT=300\nRELOAD_TIMEOUT=120", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17501", "fixedVersions": [], "id": "17501", "issueType": "Bug", "key": "SERVER-2725", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5f9a188662584c006bdfb65f", "resolution": "Won't Fix", "resolutionDate": "2021-02-23T16:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to View/Delete/Sign Certs", "timeSpent": "PT0S", "updated": "2021-02-23T16:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-01-29T11:15:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1591b619"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzrlj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_87378420_*|*_1_*:*_1_*:*_1212087623_*|*_10007_*:*_1_*:*_1055502_*|*_3_*:*_1_*:*_8791166_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_15004"}], "description": "We added ipaddress6 to the server facts hash in PUP-5109, but the same change needs to be made in the v4 catalog endpoint:\u00a0[https://github.com/puppetlabs/puppetserver/blob/master/src/ruby/puppetserver-lib/puppet/server/compiler.rb#L218-L244]\n\nWe're also adding a {{pe_serverversion}} fact in PUP-9750, so it'd be good to add that the v4 endpoint too.\n\n\u00a0\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17153", "fixedVersions": ["SERVER 6.9.0"], "id": "17153", "issueType": "Bug", "key": "SERVER-2724", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2020-02-13T14:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Catalog v4 endpoint is missing some server facts", "timeSpent": "PT0S", "updated": "2020-02-13T14:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-01-22T12:33:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e52e91f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl9g:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_13124296_*|*_1_*:*_1_*:*_12034_*|*_10007_*:*_1_*:*_74941759_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1574144851_*|*_10005_*:*_1_*:*_767850927"}], "description": "Since we maintain separate release notes for each active stream, it should be easy to resolve merge conflicts by maintaining the state of the target branch.\n\nScript lives here: https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/puppetserver-mergeup.sh", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15075", "fixedVersions": ["None"], "id": "15075", "issueType": "Task", "key": "SERVER-2723", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2020-02-19T15:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automate conflict resolution in release notes", "timeSpent": "PT0S", "updated": "2020-02-19T15:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2020-01-21T19:24:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f7d8aef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_76462486_*|*_1_*:*_1_*:*_574530675_*|*_10007_*:*_1_*:*_5464593_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_8364590"}], "description": "Puppetserver implements its own Certificate class, which needs to be updated to take into account the ppAuthCertExt extension. See PUP-10234 for the corresponding puppet change.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15433", "fixedVersions": ["SERVER 6.9.0"], "id": "15433", "issueType": "Bug", "key": "SERVER-2722", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2020-01-29T12:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add ppAuthCertExt to custom_extensions", "timeSpent": "PT0S", "updated": "2020-03-27T12:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "I'm not sure if the environment flushing test makes sense in multithreaded mode. Because there is only a single jruby instance, any environment context would be shared amongst all workers (threads in this case, since they share the jruby instance).\nAm I understanding this correctly? Is there something else we're testing here that warrants a separate test in multithreaded?", "created": "2020-01-22T12:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "That was kind of my thought too, but I hadn't yet investigated that assumption completely. You might want to take a look at what we did in https://puppet.atlassian.net/browse/PUP-10024 and see whether there's something worth testing, based on how that was implemented.", "created": "2020-01-22T14:00:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "hmm, we could maybe somehow test that things are appropriately locking when something gets cached? thought I'm not sure how to do that / if it makes sense in addition to https://github.com/puppetlabs/puppet/blob/master/spec/unit/concurrent/lock_spec.rb\n\n[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] maybe we could chat about it if there's something I'm missing?", "created": "2020-01-22T15:22:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Ah okay, if we didn't implement anything thread local, then yeah, I think this is tested elsewhere. Let's just add a comment to that test explaining how the behavior doesn't make sense in multithreaded mode.", "created": "2020-01-22T15:27:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "sounds good!", "created": "2020-01-22T15:34:00.000000"}], "components": [], "created": "2020-01-21T10:20:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f8254c1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykec7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_590737011_*|*_1_*:*_1_*:*_8520_*|*_10007_*:*_1_*:*_46582_*|*_3_*:*_1_*:*_16913695_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_88762222"}], "description": "Some tests are verifying behavior in a way that is specific to the JRuby instance pool implementation. These tests do not make sense in multithreaded mode, and need to be audited to either have new versions written or to be confined to single-threaded mode if the behavior they're testing doesn't exist in the new mode.\n\nThese tests are:\n[Environment flushing|https://github.com/puppetlabs/puppetserver/blob/02e20b86e82ec05f5055ccae11c11bfbb1aae5ea/test/integration/puppetlabs/services/jruby/puppet_environments_int_test.clj#L64]\n[Flush API|https://github.com/puppetlabs/puppetserver/blob/02e20b86e82ec05f5055ccae11c11bfbb1aae5ea/test/integration/puppetlabs/services/jruby/jruby_puppet_pool_int_test.clj#L152]\n\nThe metrics tests are being fixed as part of SERVER-2681.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "15754", "fixedVersions": ["SERVER 6.9.0"], "id": "15754", "issueType": "Task", "key": "SERVER-2721", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-01-29T11:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add multithreaded versions of certain tests", "timeSpent": "PT0S", "updated": "2020-01-29T11:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Technically, the barrier to doing this is that Puppet Server's request handling stack isn't set up to easily inject one bit of middleware into a specific route. The request queue limit has to come before the middleware that borrows a JRuby worker. Right now, the easiest way to handle the queue limit is to bundle it with the rest of the JRuby middleware.", "created": "2020-01-21T09:43:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Marking as blocked by PUP-9563 as we should get re-splay working properly and then re-evaluate the impact the queue limit has on agents.", "created": "2020-01-21T09:44:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "One issue with node vs catalog is they are both skipped when agents apply a cached catalog, so the first time the agent connects to the server is when sending the report. Another option might be for agents to always hit the server status endpoint first for both new catalog and cached catalog runs. Doing so would also help confirm that the server supports JSON and compressed content, enabling the agent to send the report compressed in the cached catalog case.", "created": "2020-01-21T10:55:00.000000"}], "components": [], "created": "2020-01-21T09:38:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@621bf552"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91ji"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jan/20"}], "description": "Right now, {{max-queued-requests}} has a chance to trigger on every API call that ends up borrowing an JRuby. This means a particularly unlucky agent can end up having it's run delayed multiple times.\n\nConsider applying the queue limit to a limited set of API endpoints, such as {{puppet/v3/node}} or {{puppet/v3/catalog}} and {{puppet/v4/catalog}}.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "15752", "fixedVersions": [], "id": "15752", "issueType": "Improvement", "key": "SERVER-2720", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Apply max-queued-requests to just one API endpoint", "timeSpent": "PT0S", "updated": "2023-03-05T13:03:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I can't see us doing this any time soon. If that assessment is wrong, or someone has a better idea of the impact and a plan for approaching it, please reopen.", "created": "2022-02-22T16:12:00.000000"}], "components": [], "created": "2020-01-20T15:19:00.000000", "creator": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46176b32"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzk2n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Feb/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25059758880_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_40952982413"}], "description": "*Puppet Version: 6.x*\n *Puppet Server Version: 6.x*\n *OS Name/Version: CentOS 7*\n\nBased on what I learned from talking to people about PUP-9577, ERB templates seem to have some unfixable performance issues when there are large numbers of facts/variables in scope.\u00a0 The best solution for that case seems to be to switch everything to EPP templates.\u00a0 We can do this, but we run the risk of someone reintroducing an ERB template and bringing back the performance problems.\n\nWhile we can fix this for our internal modules with some static analysis, it becomes very tricky to audit every third party module that gets used (and repeat the full audit for every version update).\n\nI'd like a puppetserver-side setting that will completely disable the `template` function and just throw an error if it's used.\u00a0 We'd much rather cause run failures then kill the performance of puppetserver (run failures are easy to troubleshoot, slow performance is not).\n\nPerhaps part of this would also be to update the docs ->\u00a0[https://puppet.com/docs/puppet/latest/lang_template_erb.html]\u00a0to suggest using EPP templates for any new code (is deprecating ERB templates a possibility?\u00a0 I know that would be massively disruptive to do)\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15074", "fixedVersions": [], "id": "15074", "issueType": "Improvement", "key": "SERVER-2719", "labels": ["ondeck1"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "resolution": "Won't Do", "resolutionDate": "2022-02-22T16:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add ability to disable ERB templates", "timeSpent": "PT0S", "updated": "2022-02-22T16:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm currently planning to limit this to returning extensions under our ppAuthCert OID arc, since those are the ones controlled by the setting. Would printing others be useful?\n\nThoughts on what form this info should take? Do we want the short name, OID, or both? Do we want to return the value of the extension? What information would be useful and meaningful to users deciding whether to sign the cert? [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] [~accountid:557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8]", "created": "2020-03-24T17:07:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Limiting to the extension for pp_auth_role makes sense.  \n\nI would just use the short name unless one doesn't exist then fall back to the OID.  I'm not sure about the rest of your questions.  ", "created": "2020-03-25T08:47:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] Do you have any docs describing the payload changes?  We currently prevent users from signing certs with alt-names, and it sounds like we would want to prevent something similar when the extensions are present. ", "created": "2020-03-25T09:51:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8] do you block that in the console regardless of how the server is configured? If we're going to do that, i.e. have a separate toggle, maybe console changes aren't needed at this time.", "created": "2020-03-25T09:54:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "We block if there are alt-names.  No logic beyond that currently.  There is messaging about alt-names and why we prevent it, so if there are additional criteria, we might want additional messaging.", "created": "2020-03-25T10:01:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Okay. This should probably look like things look for alt-names, in the console. So that sounds like signing prevented with a warning. Do you currently display the alt names themselves, or just the warning?\n\nRelated question: do we block that for a reason, or because it simply didn't use to be possible to sign certs with alt names via the API?\n\nThis is mostly in support of signing compiler certs, which are going to start having a special extension on them. Since those nodes already always have alt names, if I'm following, those already can't be signed from the console. So this won't interrupt current workflows. /cc [~accountid:5b50a69a2726b92cd5368cb3]", "created": "2020-03-25T10:14:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "I think it is legacy behavior because of the reason you mention. Currently it just links to \n\nhttps://puppet.com/docs/puppet/6.0/configuration.html#dnsaltnames\n\nwith some messaging.  We could expand it to allow these behaviors and display the alt-names.  [~accountid:5b50a69a2726b92cd5368cb3]  Thoughts?", "created": "2020-03-25T10:28:00.000000"}, {"author": "5b50a69a2726b92cd5368cb3", "body": "I think we should follow the legacy behavior that was mentioned above.\u00a0\n\n[~accountid:5c13fcdd55c77c50912350c8]\u00a0fyi - we will need to look at how this is displayed in the UI. I will create a separate ticket for that work. PE-28662", "created": "2020-03-25T16:24:00.000000"}], "components": [], "created": "2020-01-15T15:00:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48eb935e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwla7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The `GET /certificate_status` endpoint will now return a cert or CSR's authorization extensions in addition to the other info."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Mar/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_171152136_*|*_1_*:*_1_*:*_124151_*|*_10007_*:*_1_*:*_161778061_*|*_3_*:*_1_*:*_522414340_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4854676489_*|*_10005_*:*_1_*:*_1108637137"}], "description": "In order to give users more information about the CSRs they are signing, the {{certificate_status}} API should return the extensions on the CSRs (and certs for good measure) along with other info, similar to what we do with subject alt names.\n\nQuestions: do we want to report only [authorization extensions|https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L189-L191] since those are likely to most influence the decision to sign?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16878", "fixedVersions": ["SERVER 6.10.0"], "id": "16878", "issueType": "Task", "key": "SERVER-2718", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-04-03T14:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send extension information with the `certificate_status` response", "timeSpent": "PT0S", "updated": "2020-04-03T14:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I don't think we're going to get to this any time soon, sorry. I'm going to close it.\n\nBut we'll keep it in mind in case we hear of more demand for something like this. As always, we'll review PRs if someone is feeling adventurous :) ", "created": "2020-12-17T16:44:00.000000"}], "components": [], "created": "2020-01-10T02:54:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@697b9f82"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzec7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Nov/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_29598600415_*|*_6_*:*_1_*:*_0"}], "description": "Hi,\nmy usecase:\nThe puppetserver CA is used for authentication to a bunch of other services in our environment. One of the tasks that we are faced is to import new certificates to our Vault cluster and to remove revoked certs from it. Currently we check the puppetserver API from time to time for new/revoked certs. This would be easier and better if the puppetserver could notify systems after a certificate got signed/created/revoked.\n\nI could not find anything suitable in the documentation. It would be nice if we could define webhooks or scripts that are executed for the above mentioned actions.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16874", "fixedVersions": [], "id": "16874", "issueType": "Improvement", "key": "SERVER-2716", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "resolution": "Won't Do", "resolutionDate": "2020-12-17T16:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Hook support for puppetserver / Puppetserver CA", "timeSpent": "PT0S", "updated": "2020-12-17T16:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2020-01-08T15:49:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4783a00e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke7j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See notes on SERVER-2679."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_70885629_*|*_1_*:*_1_*:*_7646_*|*_10007_*:*_1_*:*_94028318_*|*_3_*:*_1_*:*_429647120_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_125466"}], "description": "In the current world (single threaded, instance pool), we add the jruby instance id to {{@borrowed-instances}} when the instance is borrowed from the pool: https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/jruby/jruby_metrics_core.clj#L255\n\nBecause the multithreaded pool only has a single jruby instance, {{@borrowed-instances}} always only has a single element in it.\nIn multithreaded world, we should track the thread id instead (or maybe additionally?). This will allow us to reason about usage similarly to how we do currently.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "17500", "fixedVersions": ["SERVER 6.8.1"], "id": "17500", "issueType": "Task", "key": "SERVER-2715", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2020-01-15T13:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Report thread id when borrowing from multithreaded pool", "timeSpent": "PT0S", "updated": "2020-01-19T06:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "body": "Just wanted to throw in my +1 for this feature request. Having a Prometheus compatible metrics endpoint would be very useful and make it easier for teams to start monitoring their Puppetserver stacks.\n\nFYI, here's the Prometheus docs page detailing the format it expects metrics to be in:\u00a0[https://prometheus.io/docs/instrumenting/exposition_formats/]", "created": "2020-01-17T14:43:00.000000"}, {"author": "623a4603761efb0069cd34da", "body": "We're also very interested in this as we're starting our migration from Zabbix to Prometheus.", "created": "2020-04-06T07:44:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Prometheus has a [graphite exporter|https://github.com/prometheus/graphite_exporter] which hypothetically would accept graphite directly from puppetserver or better yet from [puppet_metrics_collector|https://github.com/puppetlabs/puppetlabs-puppet_metrics_collector].\n\nI believe I tried this probably 2-3 years ago and it imported most of the metrics by my recollection.  I'd be interested to hear what the problems with that approach are.  ", "created": "2020-04-06T08:59:00.000000"}, {"author": "623a4603761efb0069cd34da", "body": "Hey [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], if we as a community plan to bring Puppet(server) into Kubernetes/cloud native environments it makes sense to have a direct Prometheus metrics endpoint in Puppetserver. That would drop the requirement of running Graphite and Graphite Exporter as a sidecar next to every Puppetserver pod.", "created": "2020-04-07T01:25:00.000000"}, {"author": "623a4d3ba9575800695a006d", "body": "Hi [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], yes it would be possible to use the graphite exporter, but it is some additional piece of software you have to maintain, update, configure. And a push based protocol like graphite is not what we want.\n\n\u00a0", "created": "2020-04-07T01:44:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:623a4603761efb0069cd34da] I don't think you need a graphite server to use graphite exporter.  I think you just setup each of your puppetservers to push graphite metrics to one instance of the graphite exporter and then prometheus would hit the graphite exporter for metrics.  \n\n[~accountid:623a4d3ba9575800695a006d] I agree having it directly in puppetserver would be better but it's not free to create and maintain.  :) \n\nWe don't have any plans to expand the metrics formats we support for puppetserver at this time.  So I was proposing graphite_exporter as a workaround for the mean time.  If someone thinks it's relatively easy to add the prometheus metrics to puppetserver we'll definitely look over a PR for an experimental endpoint serving up prometheus metrics.  \n\n", "created": "2020-04-07T08:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm going to close this, as it's unlikely we will get to it. If someone in the community would like to look into adding this functionality, we will definitely accept a PR. Feel free to reopen this in that case.", "created": "2020-11-09T15:15:00.000000"}], "components": [], "created": "2020-01-07T04:05:00.000000", "creator": "623a4d3ba9575800695a006d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6654b8b2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzc3j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26565016492_*|*_6_*:*_1_*:*_0"}], "description": "It would be very helpful if the Puppetserver would expose its metrics as an api endpoint for a Prometheus Server.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17152", "fixedVersions": [], "id": "17152", "issueType": "New Feature", "key": "SERVER-2713", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4d3ba9575800695a006d", "resolution": "Won't Do", "resolutionDate": "2020-11-09T15:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide a Prometheus compatible metrics endpoint", "timeSpent": "PT0S", "updated": "2020-11-09T15:15:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-01-02T10:07:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@692b85bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Improve CRL Management"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymq0k:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_68786510360_*|*_6_*:*_1_*:*_0"}], "description": "There are a number of issues around the way the CRL bundle is managed. Some of these are issues with the mechanics of updating it during revocation, some only come into play with an external CA.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16586", "fixedVersions": [], "id": "16586", "issueType": "Epic", "key": "SERVER-2712", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2022-03-08T13:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve CRL Management", "timeSpent": "PT0S", "updated": "2022-08-24T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "body": "I can force the openssl command by creating \"demoCA\" and creating \"index.txt\" and \"crlnumber\" files (I assume these are our \"inventory.txt\" and serial\" but the resulting CRL is missing a\u00a0CRL extensions:\u00a0X509v3 Authority Key Identifier.\n\n\u00a0", "created": "2019-12-20T17:11:00.000000"}, {"author": "5b590061a3f8512ca5eb3be7", "body": "[https://forge.puppet.com/m0dular/crl_truncate]", "created": "2020-07-20T19:32:00.000000"}], "components": ["Certificate Authority"], "created": "2019-12-20T16:52:00.000000", "creator": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e848ff3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:l"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jan/20"}], "description": "Users sometimes regenerate a corrupt CA CRL.\n\nThis procedure no longer works, even when replacing \"puppet cert\" with \"puppetserver ca\":\n{code:java}puppet resource service puppet ensure=stopped\npuppet resource service pe-puppetserver ensure=stopped\n\nmv /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem-bk\nmv /etc/puppetlabs/puppet/ssl/crl.pem /etc/puppetlabs/puppet/ssl/crl.pem-bk\n\npuppet cert generate test\npuppet cert clean test\n\npuppet resource service pe-puppetserver ensure=running\npuppet resource service puppet ensure=running\n\npuppet agent -t\n{code}\nNor this:\n{code}[root@pe-201921-masterca]# /opt/puppetlabs/puppet/bin/openssl ca -config /opt/puppetlabs/puppet/ssl/openssl.cnf -gencrl -keyfile /etc/puppetlabs/puppet/ssl/ca/ca_key.pem -cert /etc/puppetlabs/puppet/ssl/ca/ca_crt.pem -out crl.pem\nUsing configuration from /opt/puppetlabs/puppet/ssl/openssl.cnf\n140055043979072:error:02001002:system library:fopen:No such file or directory:crypto/bio/bss_file.c:69:fopen('./demoCA/index.txt','r')\n140055043979072:error:2006D080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:76:\n{code}\n:(", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "15430", "fixedVersions": [], "id": "15430", "issueType": "New Feature", "key": "SERVER-2710", "labels": [], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "implement puppetserver ca regenerate crl", "timeSpent": "PT0S", "updated": "2022-08-24T11:39:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "I opened SERVER-2850 without realizing I had already opened this \ud83d\ude05\nClosing this one, since the new one has some ideas for what to do.", "created": "2020-08-03T13:05:00.000000"}], "components": [], "created": "2019-12-20T10:27:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2859a830"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz7zr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19618690128_*|*_6_*:*_1_*:*_0"}], "description": "Currently, the puppetserver pipeline that kicks off whenever something is merged includes a job to run unit tests: https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_unit-clj_master/\n\nThese same unit tests are run by Travis when the PR is opened.\n\nWe should consider NOT running unit tests as part of the merge pipeline, since they will have already been run before merge. Perhaps only run unit tests on periodic pipelines?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15751", "fixedVersions": [], "id": "15751", "issueType": "Task", "key": "SERVER-2709", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Duplicate", "resolutionDate": "2020-08-03T13:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Evaluate the usefulness of post-merge unit tests", "timeSpent": "PT0S", "updated": "2020-08-03T13:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I would like to update Winston to delete the references to release branches for Puppetserver (we never use them) and instead add a task to disable PE promotions of the release is going to be shipped in a PE release.", "created": "2020-01-13T16:24:00.000000"}], "components": [], "created": "2019-12-19T12:25:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@156ebbf5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10199"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwlav:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_976_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3385428920"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-01-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.12.0 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "16064", "fixedVersions": [], "id": "16064", "issueType": "Task", "key": "SERVER-2708", "labels": [], "originalEstimate": "PT0S", "parent": "28637", "parentSummary": "Puppet Platform 6.12.0 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-27T16:49:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.7.2)", "timeSpent": "PT0S", "updated": "2020-01-27T16:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:25:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57ce1d48"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10199"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6wn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_958_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2174029305"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2020-01-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.12.0 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "15428", "fixedVersions": [], "id": "15428", "issueType": "Task", "key": "SERVER-2707", "labels": [], "originalEstimate": "PT0S", "parent": "28637", "parentSummary": "Puppet Platform 6.12.0 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-13T16:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.7.2)", "timeSpent": "PT0S", "updated": "2020-01-13T16:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:25:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@548f9169"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10199"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6wf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_957_*|*_3_*:*_1_*:*_47941_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2150572957"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2020-01-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.12.0 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "15073", "fixedVersions": [], "id": "15073", "issueType": "Task", "key": "SERVER-2706", "labels": [], "originalEstimate": "PT0S", "parent": "28637", "parentSummary": "Puppet Platform 6.12.0 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-13T09:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.7.2)", "timeSpent": "PT0S", "updated": "2020-01-13T09:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:25:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a8a45c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10199"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6w7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1006_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1886948240"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2020-01-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.12.0 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "14900", "fixedVersions": [], "id": "14900", "issueType": "Task", "key": "SERVER-2705", "labels": [], "originalEstimate": "PT0S", "parent": "28637", "parentSummary": "Puppet Platform 6.12.0 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-10T08:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.7.2)", "timeSpent": "PT0S", "updated": "2020-01-10T08:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:22:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46c5c36c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10189"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6pr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1100_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2150725738"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-01-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.5 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "15072", "fixedVersions": [], "id": "15072", "issueType": "Task", "key": "SERVER-2704", "labels": [], "originalEstimate": "PT0S", "parent": "25477", "parentSummary": "Puppet Platform 6.4.5 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-13T09:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.3.2)", "timeSpent": "PT0S", "updated": "2020-01-13T09:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:22:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47c98bfe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10189"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6pb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1094_*|*_3_*:*_1_*:*_262049512_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1886832121"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2020-01-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.5 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "17499", "fixedVersions": [], "id": "17499", "issueType": "Task", "key": "SERVER-2703", "labels": [], "originalEstimate": "PT0S", "parent": "25477", "parentSummary": "Puppet Platform 6.4.5 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-13T09:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.3.2)", "timeSpent": "PT0S", "updated": "2020-01-13T09:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:22:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ddaab82"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10189"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6p3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_953_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1886831086"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2020-01-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.5 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "17151", "fixedVersions": [], "id": "17151", "issueType": "Task", "key": "SERVER-2702", "labels": [], "originalEstimate": "PT0S", "parent": "25477", "parentSummary": "Puppet Platform 6.4.5 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-10T08:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.3.2)", "timeSpent": "PT0S", "updated": "2020-01-10T08:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:22:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@269e7002"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10189"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6ov:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_969_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1722106672"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2020-01-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.5 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "16870", "fixedVersions": [], "id": "16870", "issueType": "Task", "key": "SERVER-2701", "labels": [], "originalEstimate": "PT0S", "parent": "25477", "parentSummary": "Puppet Platform 6.4.5 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-08T10:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.3.2)", "timeSpent": "PT0S", "updated": "2020-01-08T10:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:19:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f9fa9af"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10179"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6if:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1016_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1805596867"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2020-01-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.18 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "17150", "fixedVersions": [], "id": "17150", "issueType": "Task", "key": "SERVER-2700", "labels": [], "originalEstimate": "PT0S", "parent": "22268", "parentSummary": "Puppet Platform 5.5.18 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-09T09:52:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.10)", "timeSpent": "PT0S", "updated": "2020-01-09T09:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:19:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@75d05397"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10179"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6hz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1030_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1805573584"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2020-01-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.18 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "16585", "fixedVersions": [], "id": "16585", "issueType": "Task", "key": "SERVER-2699", "labels": [], "originalEstimate": "PT0S", "parent": "22268", "parentSummary": "Puppet Platform 5.5.18 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-09T09:52:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.10)", "timeSpent": "PT0S", "updated": "2020-01-09T09:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:19:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2577f9f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10179"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6hr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1030_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1805570132"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2020-01-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.18 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "16275", "fixedVersions": [], "id": "16275", "issueType": "Task", "key": "SERVER-2698", "labels": [], "originalEstimate": "PT0S", "parent": "22268", "parentSummary": "Puppet Platform 5.5.18 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-09T09:52:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.10)", "timeSpent": "PT0S", "updated": "2020-01-09T09:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-12-19T12:19:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59543697"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10179"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz6hj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1060_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1722265872"}], "description": "(Initial planned release date: 2020-01-14)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2020-01-07T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.18 Release - 2020-01-14\n", "estimate": "PT0S", "externalId": "16062", "fixedVersions": [], "id": "16062", "issueType": "Task", "key": "SERVER-2697", "labels": [], "originalEstimate": "PT0S", "parent": "22268", "parentSummary": "Puppet Platform 5.5.18 Release - 2020-01-14\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2020-01-08T10:43:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.10)", "timeSpent": "PT0S", "updated": "2020-01-08T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2019-12-19T09:00:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d561e0d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz653:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_515492577_*|*_1_*:*_1_*:*_5609744_*|*_10007_*:*_1_*:*_1184167118_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_28350274"}], "description": "*Puppet Version:* 5.5.x, 6.x\n*Puppet Server Version:* 5.x, 6.x\n*OS Name/Version:* Any\n\nDescribe your issue in as much detail as possible\u2026\n\n  - Install Puppet Server along with a pool of agents\n\n  - Re-start the puppet service on the agents all at once so they form a thundering herd\n\n  - Configure puppetserver with max-queued-requests set less than the herd size\n\n  - Observe connection state via netstat when an agent receives a 503 response\n\n*Desired Behavior:*\n\nAgents close their connections in response to a 503 before sleeping and re-trying.\n\n*Actual Behavior:*\n\nAgents retain open TCP connections to the server while sleeping due to the default behavior being {{Connection: keep-alive}}.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17149", "fixedVersions": ["SERVER 5.3.11", "SERVER 6.3.3", "SERVER 6.8.0"], "id": "17149", "issueType": "Improvement", "key": "SERVER-2696", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Done", "resolutionDate": "2020-01-08T10:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "503 responses sent when the JRuby pool is overloaded should include Connection: close headers", "timeSpent": "PT0S", "updated": "2020-02-06T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Hmm, puppetserver packages include the hiera-eyaml gem. Also I wouldn't expect you'd have to install those into system ruby.\n\n{noformat}\n[root@motley-burst ~]# puppet --version\n6.11.1\n[root@motley-burst ~]# puppetserver --version\npuppetserver version: 6.7.2\n[root@motley-burst ~]# puppetserver gem list | grep eyaml\nhiera-eyaml (3.0.0)\n{noformat}", "created": "2019-12-16T11:22:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:623c152dee1b5a007029373b] Based on Josh's output we can't reproduce the issue.  Let us know if you have more information on the issue.  ", "created": "2020-09-03T12:00:00.000000"}], "components": ["Puppet Server"], "created": "2019-12-16T09:20:00.000000", "creator": "623c152dee1b5a007029373b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a6dacdb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz35j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22642804057_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:\u00a06.11.1*\n *Puppet Server Version: 6.7.2*\n *OS Name/Version: CentOS 8.0*\n\nThe hiera-eyaml gem is not installed by default which causes errors when building an new puppet master.\n\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, Function Load Error for function 'eyaml_lookup_key': Lookup using eyaml lookup_key function is only supported when the hiera_eyaml library is present\n\nAfter running `puppetserver gem install hiera-eyaml` the same error is repeated when the client attempts to apply a catalog.\n\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, Function Load Error for function 'eyaml_lookup_key': Lookup using eyaml lookup_key function is only supported when the hiera_eyaml library is present\n\nFixing this requires installing the rubygems package along with the hiera-eyaml gem.\n\ndnf install rubygems\n\ngem install hiera-eyaml\n\nAfter running these two commands the puppet agent works as expected.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16061", "fixedVersions": [], "id": "16061", "issueType": "Bug", "key": "SERVER-2693", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c152dee1b5a007029373b", "resolution": "Cannot Reproduce", "resolutionDate": "2020-09-03T12:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "eyaml gems missing on new installs", "timeSpent": "PT0S", "updated": "2020-09-03T12:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The puppetdb terminus is a separate package, and must be installed in order to use \"puppetdb\" as the place to store facts. I believe the fail-fast behavior is correct and intentional.", "created": "2019-12-16T11:24:00.000000"}], "components": ["Puppet Server"], "created": "2019-12-16T09:14:00.000000", "creator": "623c152dee1b5a007029373b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65c3aef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzz353:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7797946_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_37602416606"}], "description": "*Puppet Version:\u00a06.11.1*\n *Puppet Server Version: 6.7.2*\n\n*OS Name/Version: CentOS 8.0*\n\nThe puppetserver service fails to start when reports are configured to use puppetdb.\u00a0 Attempting to start the puppetserver service results in an error as follows.\n\npuppetserver[15841]: (ArgumentError) Could not find terminus puppetdb for indirection facts\n\n*Desired Behavior:*\n\n**puppetserver service should start without errors.\n\n*Actual Behavior:*\n\npuppetserver service fails to start.\n\nThis issue is corrected after installing the\u00a0puppetdb-termini package.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16273", "fixedVersions": [], "id": "16273", "issueType": "Bug", "key": "SERVER-2692", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c152dee1b5a007029373b", "resolution": "Won't Fix", "resolutionDate": "2021-02-23T16:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetdb terminus missing on new installs", "timeSpent": "PT0S", "updated": "2021-02-23T16:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623e76b0866b810069e575bf", "body": "[https://github.com/puppetlabs/puppetserver-ca-cli/blob/cefb453438bb53f35ca31bf37d359c5b1f1835b4/lib/puppetserver/ca/config/puppet.rb#L201]\n\nThis is the regex responsible for configuration parsing. As noted in the comment, it does not support spaces. At the very least this should support a quoted value.\n\nAdditionally, the root_ca_name should probably be exposed on the command line, just like ca_name is.", "created": "2019-12-13T15:14:00.000000"}, {"author": "623e76b0866b810069e575bf", "body": "I've been patching the regex linked in the above comment with:\n{noformat}\n/^\\s*(\\w+)\\s*=\\s*(.+?)\\s*(?=[{#]|$)/{noformat}", "created": "2021-07-06T10:06:00.000000"}], "components": ["Certificate Authority"], "created": "2019-12-13T15:10:00.000000", "creator": "623e76b0866b810069e575bf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2edc9bd2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:j"}], "description": "*Puppet Version: 5.5.17*\n *Puppet Server Version: 5.3.9*\n *OS Name/Version: CentOS 7*\n\nSetup ca using a custom ca_name and root_ca_name.\n\nFrom a clean install:\n add to puppet.conf:\n{noformat}[main]\nca_name=Totes Ma Goats CA\nroot_ca_name=Ma Goats Root CA{noformat}\nSetup CA\n{noformat}puppetserver ca setup\u00a0{noformat}\nReview CA Certificate:\n{noformat}openssl x509 -noout -text -in \\\n $(puppet agent --configprint ssldir)/ca/ca_crt.pem \\\n | grep -E '(Issuer|Subject):'\n{noformat}\n*Desired Behavior:*\u00a0\n{noformat}        Issuer: CN=Ma Goats Root CA\n        Subject: CN=Totes Ma Goats CA\n{noformat}\n*Actual Behavior:*\n{noformat}        Issuer: CN=Ma\n        Subject: CN=Totes\n{noformat}\n\u00a0", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "15426", "fixedVersions": [], "id": "15426", "issueType": "Bug", "key": "SERVER-2691", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e76b0866b810069e575bf", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Incorrect Custom CA Subject and Issuer", "timeSpent": "PT0S", "updated": "2022-09-21T12:00:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Running investigations we've seen two things that we think were contributing to this:\n1) When the queue limit was exceeded agents and the server were keeping their connection open. On some systems that could lead to having however many agents-that-were-resplayed number of extra connections open. [~accountid:623e754d94742a00683f7cf0] has a patch that should resolve this issue at https://github.com/puppetlabs/puppetserver/pull/2247 .\n\n2) In our PE customer's environment it appears that the TLSContexts/CRLs are being held by WebSocketServerConnections. This was found by going through the heap dump and noticing that the path to a garbage root for nearly all CRLs went through an IdleTimeout object per CRL that was a deferred task in thread local executor pool. It appears that the IdleTimeout only decrements its counter when the task is actually running (vs wall time waiting in the executor pool). I believe that means as the system becomes more loaded and the executor pool fills with more tasks, each task will get a smaller time slice in which to be idle and the connection will take longer to idle out. The IdleTimeout task also defers to the underlying connection as to whether it should be closed, each IdleTimeout task inspected wrapped an SSLConnection which defers to its \\_decryptedEndpoint connection, an instance (in all the cases inspected in Yourkit) of the WebSocketServerConnection class. I'm unclear on how many connections _should_ be open from a pcp-broker though there are 918 instances of WebSocketServerConnection in the most current heap dump analyzed. I'm only aware of pcp-broker/client creating websocket connections in a compile master. We're attempting to further validate that finding, but it is ultimately a PE specific component so I don't think it is the primary cause of the open source issue.", "created": "2020-01-02T11:52:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm closing this as \"DONE\" because I think the FOSS side of things will be taken care of by Charlies work (which is tracked/documented under a different ticket) and the PE triage/fixing will happen under a commercial (private) ticket.", "created": "2020-01-09T13:59:00.000000"}], "components": [], "created": "2019-12-09T12:23:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33484b84"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzyy33:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_612309625_*|*_1_*:*_1_*:*_1399286_*|*_3_*:*_1_*:*_2070414771_*|*_6_*:*_1_*:*_0"}], "description": "When debugging SERVER-2673 we counter intuitively saw out of memory errors surfacing when lowering the number of JRuby instances. When raising the number of JRuby instances the overall catalog times took longer (because of memory pressures) but the overall throughput of the system went up because of the additional workers. As soon as there were no more queue limit 503s being server there also no more out of memory issues.\n\nThis, in combination of some heap dumps from the internal PE-27722 ticket that showed 20+% of the heap being consumed by TLSContexts (when they were frequently seeing queue-limits exceeded) makes me suspicious that the \"TLS Contexts\" and their connections may be \"leaked\" by our queue-limit handling.\n\nI say \"leaked\" in quotes because it may be that the connection isn't being closed correctly and so they are defaulting to something like a 30 minute timeout which causes them to be promoted and look like a leak (if even in theory they'd eventually be cleaned up).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15071", "fixedVersions": [], "id": "15071", "issueType": "Improvement", "key": "SERVER-2689", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2020-01-09T13:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate potential \"leakage\" of TLS Contexts when queue limit is exceeded", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], I was working on this a bit today, but I don't really have the information or context I need to work on it. How would you feel about updating the doc with the relevant information, and then docs can review / edit the whole page? I think we can make some good improvements to it, but we don't know how everything is related and should be tied together.\n\nAlternatively, we would need some more details, such as  \"recommendations of 0.75-1.25 Gb per instance\" of what (heap? CodeCache?), what specific updates should be made in each section, etc.", "created": "2020-02-21T13:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey thanks. Sorry I forgot to respond to this.\n\nI do think this is still applicable and I'm happy to do the edits and get a docs review. I think John Duarte has the tests we need from SLV automated though some of the analysis is still manual. We might be able to get his help still. I think we'll wait to do this until after we ship the threadsafe work since it will have it's own perf implications and recommendations.\n\n/cc [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1]", "created": "2020-04-06T11:47:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "Thank you\u00a0[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]! I've moved this to the Server project for now. Let me know when you have something for me to review.\u00a0", "created": "2020-04-08T01:56:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I updated the description with more tuning recommendations. I would consider the content of the description to be a big improvement for FOSS users as-is, and I think just need to be worked into the content of the linked FOSS tuning guide. I have a feeling much of the existing guide can be edited down/out as either outdated by the info in the description, or just not coherently tied together.", "created": "2020-08-11T16:02:00.000000"}, {"author": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\u00a0Do you mind expanding on this statement about Metaspace a bit?\n\n{quote}\nor using a similar amount of Metaspace to CodeCache if being managed\n{quote}\n\nSay I have CodeCache set to the max of 2GB and max-requests-per-instance at 0, what should Metaspace be set to and what effect would that have vs. not managing it?\n\n----\nAdditionally, is there any guidance for FOSS users regarding JVM versions and GC algorithms?", "created": "2020-08-11T18:17:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "Thanks [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]! [~accountid:5b5a27ad106ec32d95ea277d]\u00a0are you able to take this on?", "created": "2020-08-12T04:37:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] as servers get bigger and bigger, multisocket systems are quite common. In my case I can choose between a few SKUs in our datacenter but the smallest box has  32 logical cores. This usually exceeds the recommendation of ~20 jruby instances / ~ 30GB of heap. Do you maybe have a suggestion here? Starting multiple puppetserver instances on those boxes? Can you explain why CodeCache has a limit of 2GB?", "created": "2020-08-12T14:26:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{quote}Say I have CodeCache set to the max of 2GB and max-requests-per-instance at 0, what should Metaspace be set to and what effect would that have vs. not managing it?\n{quote}\nMetaspace will naturally grow as needed by the JVM, my recommendation would be to never explicitly manage it. However I've seen some users who do explicitly manage it and in that case a user with 2GB of CodeCache should assume they will need ~2GB of Metaspace. Knowing this is primarily useful when looking at heap vs total memory usage of the service (I think most folks just think of heap).", "created": "2020-08-12T14:31:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{quote}Additionally, is there any guidance for FOSS users regarding JVM versions and GC algorithms?\n{quote}\nWe will be deprecating Java 8 support though it will exist for all of the 6.x series support (2-3 more years). 6.x Puppet Server supports Java 11 and is recommended (though you may see some warnings when starting because of third party libraries). PE also uses Java 11.\n\nIf using Java 8, do not use the G1GC, we've had several reports of it being unstable on that version of Java. The ParGC is the default GC for Java 8 and it is recommended.\n\nG1GC is greatly improved in Java 11 (and is the default for that version of Java), though for most users we recommend switching back to the legacy ParGC. G1GC trades a significant amount of throughput in the interest of providing good latency in large heaps. Those users that choose to go well above 32G of heap may find that G1GC is an acceptable tradeoff.\n\nBeyond switching between ParGC and G1GC, we don't provide general GC tuning tips. There _can_ be cases where it's valuable to tweak different settings. But it is very workload/hardware dependent and usually further tweaking results in worse performance than if the basic options were used.", "created": "2020-08-12T14:42:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{quote}Can you explain why CodeCache has a limit of 2GB?\n{quote}\nHonestly, I don't know. All I've heard is that it a hard limitation of the JVM implementation we use. I assume it's something with the implementation, like how 2G can be addressed by 31bits (the positive values in a Java int).\n\nThe default, iirc, is 48M, which goes to show how wildly out of the norm we are in the Java world. IIRC, the CodeCache that each JRuby contributes is largely unshared, which is why it has to increase per JRuby instance, why we are so out of line with most java applications, and why moving to a multithreaded model within a single JRuby has the potential to be so beneficial.", "created": "2020-08-12T14:52:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{quote}the smallest box has 32 logical cores. This usually exceeds the recommendation of ~20 jruby instances / ~ 30GB of heap. Do you maybe have a suggestion here?\n{quote}\nOne recommendation would be not to plan on having a single JRuby per logical core. JRuby's 1.7 runtime was a much simpler application which largely evaluated Ruby in a sequential manner. Each 9k instance is its own optimizing compiler and byte code interpreter and is implemented using multiple threads (iirc, a base JRuby instance will use at least 3 threads). So it may be better to plan on 1.5 or 2 logical cores per JRuby instance.\n\n\u00a0\n\nRunning multiple services on the same box can be problematic if you don't have completely different directory structures for each (ie you probably don't want them writing cache files overtop of each other). In theory you could run it as an unprivileged user to nest its filesystem in ~/.puppetlabs (assuming you're also running from source), but that's a huge pain, imo. VMs or containers are another option. You might want to check out the pupperware project (I don't know a ton about it) though running Java apps inside containers usually involves using newer JVMs and doings some manual JVM configuration.\u00a0 (see\u00a0[https://developers.redhat.com/blog/2017/03/14/java-inside-docker/])\n\n\u00a0\n\nHonestly, I hope that we'll be able to leverage multithreading to help folks scale vertically like you want to do. I would ask that you, if possible, try it out in a lab-like setting and give us feedback if you see issues so that we can get it rock solid as fast a possible. It can be enabled by setting {{jruby-puppet.multithreaded}} to {{true}} in {{puppetserver.conf}}. See\u00a0[https://puppet.com/docs/puppetserver/latest/config_file_puppetserver.html]", "created": "2020-08-12T15:12:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks for the questions! Keep them coming, this is great to help get the FOSS tuning docs as good as possible! I'll wait another day to see what other questions/clarifications there might be, and then, if [~accountid:5b5a27ad106ec32d95ea277d] wants, work them into the description.", "created": "2020-08-12T15:14:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "okay another one then :)\nlet's say I've a loadbalancer in front of multiple compile masters. do you have suggestions for distributing the agents? At the moment I spread all http requests equally across all servers. that means that during a single agent run, an agent can hit multiple puppetservers. This keeps the load equal, but might be bad from a caching point of view, especially if you've many file resources in the catalog (aka many http requests). Do you have suggestions here?\n\n(will keep the multithreading in mind and hopefully test it soon).", "created": "2020-08-12T15:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{quote}do you have suggestions for distributing the agents?\n{quote}\nI have very little knowledge about load balancing unfortunately. I don't think distributing all http requests across all servers should be too bad assuming you have relatively few environments and they are all usually loaded into memory on all your compilers.\n\nI would recommend using static catalogs (on by default when using code management in PE, see [https://puppet.com/docs/puppet/6.17/static_catalogs.html]\u00a0for foss docs). Which will inline file metadata into a catalog, reducing the number of http requests to the compilers significantly.\n\nActual load balancing strategy-wise, a quick search shows that ip affinity might be something you want to look at, but my knowledge of this is so lacking don't consider this a recommendation at all.", "created": "2020-08-12T15:52:00.000000"}, {"author": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "body": "We find that in our case leaving MetaSpace unmanaged (i.e. letting it grow as needed) sooner or later leads to OOM killings of the Puppetserver java process. We have four (virtual) machines with 22GB RAM and 15 vCPUs each, running Puppetserver 6.13.0 on Ubuntu 18.04. These Puppetservers are running behind a load balancer (HAProxy).\n\nI am currently experimenting with the recommendations in this ticket and have set {{max-active-instances: 9}} (= 1.5 cores per JRuby instance) and {{max-requests-per-instance: 0}} in /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf. The JVM is configured as follows, using OpenJDK 11:\n\n{code:java}\nJAVA_ARGS=\"-Xms19g -Xmx19g -XX:ReservedCodeCacheSize=2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger\"\n{code}\n\nSo 19GB of heap space and 2GB of CodeCache, no limit on MetaSpace. Does this mean something in our Puppet setup is leaking off-heap memory? \n\nEdit: these four Puppetservers serve about 600 machines running Puppet agent every half hour. Our catalogs are probably quite above average in complexity, and we make use of Hiera a lot, but it seems to me that 600 machines should not require four beefy Puppetservers that still die regularly because of memory resource issues.\n\nEdit 2: it should have been obvious to me that 19GB heap and 2GB CodeCache don't leave much remaining memory for MetaSpace or even OS usage so I have reduced the heap to 16GB. This should leave more breathing room and hopefully be more stable, but we'll see over the next day or two.", "created": "2020-09-28T12:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "bq. Does this mean something in our Puppet setup is leaking off-heap memory?\n\nProbably.\n\nbq. 600 machines should not require four beefy Puppetservers that still die regularly because of memory resource issues\n\nAbsolutely. We have users running 10x as many clients per server on similar sized hardware.\n\nTo break that down, there's 1800 seconds in your runinterval. 150 clients could each have 12 seconds of CPU time on the server per run. Catalog compilation takes up the majority of an agent's requirements on a server, so as long as you don't have hundreds of file requests. I would expect an average catalog compilation time of 10 seconds to be the upper limit that a server could handle. That assumes the server only uses only _ONE JRUBY_. With 9 jrubies I would expect a catalog could comfortably take over a 100 seconds. To put that in perspective I think 10-30 seconds is normal for catalog compilations, even complex ones. Put it another way, I would expect one server to handle your infrastructure. (let me know if those estimates are off)\n\n\nGoing back to the memory issues. Getting a heap dump is probably the best way to see if something's leaking. There's a JVM option to have it save a heap dump on OOM that would be helpful (See [-XX:+HeapDumpOnOutOfMemoryError|https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/clopts.html]. We also have looked into improving some memory usage lately, see SERVER-2874, those were two direct causes, I think there might be a similar issue with some of our warning messages causing catalog leaks but haven't found a reproducer. It's always good to see if you're causing lots of warnings during compilation because some of those can be very expensive.\n\nYou mention a complicated hiera usage. I was just working with a client who had two different issues, one where they were doing a remote API call for nearly every hiera lookup, the other where they had a hierarchy that caused the server to load nearly every file in their hieradata (but not find the key till the end of the hierarchy). Their hierarchy was almost 200 Mbs in memory (~20 on disk, iirc) and that was loaded, and then thrown away for every request.", "created": "2020-09-28T15:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{quote}don't leave much remaining memory for MetaSpace or even OS usage\n{quote}\nFor what it's worth, I would expect Metaspace to consume similar amounts of memory as CodeCache (eg. 2Gb in your setup).", "created": "2020-09-28T15:25:00.000000"}, {"author": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "body": "Thank you for the comment, very interesting!\n\nYour estimates sound quite good: when everything is running fine then most catalogs take about 15-20 seconds to compile in the production environment (it has about 280 modules). An exception are our Icinga master nodes which collect many, many exported resources and so their catalogs take between 50 and 80 seconds to compile. About ten of our modules that are in use on every node have multiple files in their {{files}} directory, so in the HAProxy logs I can see many requests to /puppet/v3/file_metadata for each catalog, but I don't know how much would be \"too much\" for a Puppetserver to comfortably handle. The modules in question are from the [Choria project|https://forge.puppet.com/choria] and together they provide about 200 files.\n\nWe do see quite a few warnings in puppetserver.log about deprecated functions, string to numerical value coercion, and yaml files that \"don't contain a valid yaml hash\" (i.e. are empty). Most of these warnings are about third-party modules we don't have much control over (any PRs we send often take months to get accepted, and sadly many modules seem to no longer be actively developed) but I am working on the ones we do control.\n\nRegarding Hiera: our Hiera data in the production environment is about 6MiB on disk, with 36 layers and some of them with sub-hierarchies. We use {{eyaml_lookup_key}} for 35 of those layers, and [{{file_eyaml_lookup_key}}|https://gist.github.com/antaflos/68bbca3b6dde0263e86ef9a35c3dfe3d] (a custom lookup function that looks up Eyaml-encrypted file data) for the 36th", "created": "2020-09-28T17:12:00.000000"}], "components": [], "created": "2019-12-05T13:40:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72c86db"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91ju"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Feb/20"}], "description": "It's been pointed out to me that we changed how we wanted to tune Server when we went from JRuby 1.7 to 9k (in Puppet 5.x to 6.x) and while we've gotten our support scripts and PE tuning guide updated (IIUC), we haven't _adequately_\u00a0updated our FOSS recommendations[1] (we added a net new section regarding CodeCache but we didn't update heap recommendations or tie all it all together meaningfully). There are a number of people upgrading and running into these issues.\n\nWe should have recommendations of\u00a00.75-1.25 Gb of memory per instance to start with depending on average catalog complexity (or at least 10% more than in 5.x). Though users may need more memory per JRuby, especially if they are using complicated hiera hierarchies. JRuby 9k also uses more threads per instance, so previous recommendations of one instance per logical core may no longer be sufficient.\n\nUsers should also budget around 100 Mbs of CodeCache per instance, and leaving Metaspace unmanaged (or using a similar amount of Metaspace to CodeCache if being managed). These two memory areas, CodeCache & Metaspace, are \"off heap\" and the lower the max-requests setting the more off-heap memory will be used. These recommendations are with at least a max-requests of 100k (which is our PE default). We encourage users to use a value of 0, which completely disables max-requests and is the default in FOSS (those who tuned for 4.x or 5.x and set max-requests-per-instance to a low number will especially see issues until they re-tune).\n\nWe should also recommend that most folks ensure heap memory does not use more than 32G, or else the JVM reconfigures how it handles pointers causing everything to consume more memory. Users who scale vertically to or above 32G of heap will need to increase their original per-JRuby memory requirements by up to 30% to account for the different way that the JVM manages pointers in large heaps. It should also be noted for those attempting to scale vertically that CodeCache has a hard limit of 2G, which will limit many users to around 20 JRuby instances.\n\nIn a last resort case it is possible for users to turn of JRuby's JIT, which is some edge cases may have a more stable performance profile.\n\nPuppet Enterprise uses Java 11 with the ParallelGC. G1GC allows for low GC pauses for much larger heaps than were previously possible, however, for most of our users we've found the throughput costs of the more complex G1GC outweighed improvements in latency. We recommend our users start from this configuration and then evaluate if they require switching to G1GC to scale.\n\nFinally, there is also an experimental multithreading feature that we are developing and would love to get feedback on. It should be extensively vetted by people in their test environments first, but when successful should reduce load and memory requirements by 25%-50% and remove the need to tune CodeCache and/or Metaspace (and thereby allowing easier vertical scaling). Users should do a full restart of the puppetserver service to ensure the committed memory is released properly when switching to multithreaded. Be advised that there are known issues with multithreading, max-requests-per-instance and/or environment-caching. See\u00a0SERVER-2860.\n\n1. [https://puppet.com/docs/puppetserver/latest/tuning_guide.html]", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16059", "fixedVersions": [], "id": "16059", "issueType": "Improvement", "key": "SERVER-2771", "labels": ["server"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "status": "Needs Information", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update FOSS 6.x tuning recommendations to reflect current PE tuning standards.", "timeSpent": "PT0S", "updated": "2022-08-30T08:51:00.000000", "votes": "6", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-12-05T12:47:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@15bbbcca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:b"}], "description": "The [test|https://github.com/puppetlabs/jruby-utils/blob/master/test/integration/puppetlabs/services/jruby_pool_manager/jruby_internal_test.clj#L91-L107] for the thread dump functions in jruby-utils fails periodically with the following:\n{code}\nFAIL in (jruby-thread-dump) (jruby_internal_test.clj:107)\n\nreturns a thread dump when jruby.management.enabled is set to true\n\nexpected: (re-find #\"naptime at jruby-thread-dump\\.rb\" (:thread-dump result))\n\n  actual: (not (re-find #\"naptime at jruby-thread-dump\\.rb\" \"All threads known to Ruby instance 1133381918\\n\\nThread: main\\nStack:\\n\\n\\nThread: Ruby-13-Thread-1: jruby-thread-dump.rb:5\\nStack:\\n    [no longer alive]\\n\\n\"))\n{code}\n\nWe should try to make this less flakey.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15070", "fixedVersions": [], "id": "15070", "issueType": "Bug", "key": "SERVER-2688", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Thread-dump test in jruby-utils fails transiently", "timeSpent": "PT0S", "updated": "2022-03-09T09:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-12-03T13:10:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@332d839e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10012"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzyswv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_170554656_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_71190105497"}], "description": "Puppet Server currently creates an implementation of Puppet's KeyRecorder for collecting and counting Hiera key lookups. We need something similar to collect and count function calls from Puppet code. The collected data will later be pulled out by PDB for storage and use by CD4PE's Impact Analysis.\n\nQuestion: Do we need to record 3x and 4x functions separately, or is considering them all just as homogeneous functions granular enough?\nAnswer: just functions is fine.\n\nNeed to make sure that this recorder is added in a backwards-compatible way, similar to https://github.com/puppetlabs/puppetserver/commit/ff4bd063283009d74b864aca690ab2db89042953.\n", "epicLinkSummary": "Impact Analysis: Functions and Templates", "estimate": "PT0S", "externalId": "16868", "fixedVersions": [], "id": "16868", "issueType": "Task", "key": "SERVER-2687", "labels": [], "originalEstimate": "PT0S", "parent": "29618", "parentSummary": "Impact Analysis: Functions and Templates", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add recorder for function calls", "timeSpent": "PT0S", "updated": "2022-03-08T11:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-12-03T12:44:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c611d5d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10012"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzysv3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_172112096_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_71197139885"}], "description": "Puppet Server currently creates an implementation of Puppet's KeyRecorder for collecting and counting Hiera key lookups. We need something similar to collect and count template invocations. The collected data will later be pulled out by PDB for storage and use by CD4PE's Impact Analysis.\n\nQuestion: Do we need to record ERB and EPP templates separately, or is considering them all just as homogeneous templates granular enough?\nAnswer: We don't care about the different types, they can all just be \"templates\".\n\nNeed to make sure that this recorder is added in a backwards-compatible way, similar to https://github.com/puppetlabs/puppetserver/commit/ff4bd063283009d74b864aca690ab2db89042953.", "epicLinkSummary": "Impact Analysis: Functions and Templates", "estimate": "PT0S", "externalId": "14824", "fixedVersions": [], "id": "14824", "issueType": "Task", "key": "SERVER-2686", "labels": [], "originalEstimate": "PT0S", "parent": "29618", "parentSummary": "Impact Analysis: Functions and Templates", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T13:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add recorder for template evaluations", "timeSpent": "PT0S", "updated": "2022-03-08T13:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "The code you linked seems to be the only place that `flush-timeout` is used and it doesn't seem to be related to flushing? so I'm a little confused about what exactly this setting is for and what we need it to do.\n", "created": "2019-12-10T17:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "{{borrow-all-jrubies}} is used to acquire references to all of the JRuby instances in the old implementation, which is the first step of flushing here:https://github.com/puppetlabs/jruby-utils/blob/master/src/clj/puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj#L193.\n\nIn the new pool, flushing is simpler, and we use the pool lock explicitly, here https://github.com/puppetlabs/jruby-utils/blob/master/src/clj/puppetlabs/services/jruby_pool_manager/impl/reference_pool.clj#L121. We might be able to just switch that {{lock}} call to use {{lock-with-timemout}} instead, and pass it that setting.\n\nThat would probably be needed for {{flush-pool}}, {{flush-if-at-max-borrows}} (maybe?), and {{shutdown}}.", "created": "2019-12-10T17:58:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "ahh okay, that makes sense.\nyeah, I was figuring we'd just be changing {{lock}} to {{lock-with-timeout}} in some places, just wasn't totally clear on what those places should be, since it was unclear to me where flushing came in. ", "created": "2019-12-10T18:07:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "okay, respecting this setting for {{flush-pool}} and {{flush-if-at-max-borrows}} makes sense to me, but not sure if it makes sense for {{shutdown}}. Is there any flushing involved in shutdown? I don't see any. so this setting would be confusing if it affected shutdown, imo.", "created": "2019-12-12T14:56:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[Cleaning up|https://github.com/puppetlabs/jruby-utils/blob/master/src/clj/puppetlabs/services/jruby_pool_manager/impl/reference_pool.clj#L76] the instance is the equivalent of flushing the pool for the ReferencePool. Also, we respect the timeout in the old implementation: {{flush-pool-for-shutdown}} calls the same {{borrow-all-jrubies}} that other flushes do (via [drain-and-refill-pool|https://github.com/puppetlabs/jruby-utils/blob/master/src/clj/puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj#L214]). So I think we want to keep parity with that.", "created": "2019-12-12T15:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We need to make sure that the pool can recover from a timeout exception being thrown. So if we throw inside a function called by the agent, we should probably just catch it and abort the flush attempt, without letting the timeout exception propagate. This is relevant for the event of a timeout while flushing due to MRPI.\n\nFor the admin flush and shutdown, no agents are involved, so things are okay.", "created": "2019-12-13T15:14:00.000000"}], "components": [], "created": "2019-12-03T09:58:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d84713e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykecf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Dec/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_86899783_*|*_1_*:*_1_*:*_9244_*|*_10007_*:*_1_*:*_511490715_*|*_3_*:*_1_*:*_269572440_*|*_5_*:*_2_*:*_88360_*|*_10006_*:*_1_*:*_620296072"}], "description": "The new JRuby pool model does not include a timeout on its flush operation. There is a {{jruby-puppet}} config setting that allows the user to configure the flush timeout that needs to be respected here.\n\nSimilar code in the instance pool implementation: https://github.com/puppetlabs/jruby-utils/blob/master/src/clj/puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj#L120-L130\n\nWe should also probably respect this timeout when locking the pool for shutdown.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "15749", "fixedVersions": ["SERVER 6.8.0"], "id": "15749", "issueType": "Bug", "key": "SERVER-2685", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-12-20T15:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "ReferencePool does not respect the flush-timeout setting", "timeSpent": "PT0S", "updated": "2019-12-20T15:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "For the time being, we are not going to roll jruby-utils 3.0.0 into clj-parent, but just override it manually in the puppetserver projects. This means that orchestrator won't take it up yet, which seems good while we're still verifying things.\n\nWe also need to update pe-puppet-server-extensions and pe-puppetserver similarly to get this override into PE.", "created": "2019-12-11T10:35:00.000000"}], "components": [], "created": "2019-12-02T12:31:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2591cda8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke67:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This work adds a new JRuby pool architecture that maintains a single a JRuby instance through which requests to Puppet Server will be run concurrently. This behavior can be toggled by setting the `jruby-puppet.multithreaded` setting to `true`. In this mode, the server's memory footprint will be significantly lighter due to no longer needing to run multiple JRuby instances.\n\nPlease note that the work to ensure that Puppet's Ruby code functions correctly in this environment is still underway. This mode is considered highly experimental at the moment."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_320854395_*|*_1_*:*_1_*:*_11359_*|*_10007_*:*_1_*:*_794919534_*|*_3_*:*_1_*:*_73541728_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_8245633"}], "description": "We recently implemented a new JRuby pool backend for use with running puppet multithreaded in a single JRuby instance. This needs to be integrated (behind a feature flag) into Puppet Server.\n\nThere are a couple minor internal API changes, but nothing about the existing functionality should change as part of this work.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "16271", "fixedVersions": ["SERVER 6.9.0"], "id": "16271", "issueType": "Task", "key": "SERVER-2684", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-12-16T09:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Integrate new JRuby reference pool", "timeSpent": "PT0S", "updated": "2020-01-21T14:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Puppet's {{stdinfile}} option was added in https://github.com/puppetlabs/puppet/commit/7de82c387b29b0c9202e35d680f109407c07faa7.\n\nTicket SERVER-74 was filed to support all of puppet's execution options, but was closed won't fix.\n\nPuppetserver's executor could [handle the {{stdinfile}} option|https://github.com/puppetlabs/puppetserver/blob/master/src/ruby/puppetserver-lib/puppet/server/execution.rb#L32] with something like:\n\n{code:ruby}\nexe_options = ShellUtils::ExecutionOptions.new\nexe_options.setStdin = File.open(options[:stdinfile], 'rb') if options[:stdinfile]\nbegin\n  ...\nensure\n  stdin = exe_options.getStdin\n  close.stdin if stdin\nend\n{code}\n\nThe clojure shell utils are in https://github.com/puppetlabs/clj-shell-utils/blob/bf95a25bcd8865c7770f26188b0f25ba9aee0b76/src/java/com/puppetlabs/puppetserver/ShellUtils.java#L18", "created": "2019-12-02T16:17:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this feature, for us to actively work on this feature.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T13:33:00.000000"}], "components": ["Puppet Server"], "created": "2019-12-02T00:25:00.000000", "creator": "6243b3c84fe01d006ba5c5e3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a7f8bf7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzyr1z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Dec/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_30283761339_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_41216305634"}], "description": "*Puppet Version: 6.11.1*\n *Puppet Server Version: 6.7.2*\n *OS Name/Version: Centos 7.7*\n\n*Desired Behavior:***\n\nPuppet::Util::Execution.execute should behave the same way, whether executed through puppet or through puppetserver.\n\n*Actual Behavior:*\n\nHaving the following code snippet in a function:\n{code:java}\npublic_key = Puppet::Util::Execution.execute(\n        ['/usr/bin/wg', 'pubkey'],\n        {:failonfail => true,\n         :stdinfile => private_key_path},\n      ) {code}\n\u00a0\n\nReference: [https://code.immerda.ch/immerda/puppet-modules/wireguard/blob/master/lib/puppet/functions/wireguard/genkey.rb#L33-37]\n\nWorks fine when executing via puppet:\n{code:java}\nmkdir /tmp/wg; puppet apply --debug --modulepath=. -e 'notice wireguard::genkey(\"bla\",\"/tmp/wg\")' {code}\nBut using it in manifests compiled by puppet server it always fails:\n{code:java}\n 2019-12-02T08:21:04.128+01:00 WARN  [qtp1118617827-32364] [c.p.p.ShellUtils] Executed an external process which logged to STDERR: /usr/bin/wg: Key is not the correct length or format2019-12-02T08:21:04.191+01:00 ERROR [qtp1118617827-32364] [puppetserver] Puppet Evaluation Error: Error while evaluating a Function Call, Execution of '/usr/bin/wg pubkey' returned 1:  (file: /srv/puppet/code/environments/production/modules/mymodule/manifests/vpn.pp, line: 10, column: 12) on node host.example.com\nuri:classloader:/puppetserver-lib/puppet/server/execution.rb:50:in `execute'\nuri:classloader:/puppetserver-lib/puppet/server/execution.rb:14:in `block in initialize_execution_stub'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/execution.rb:222:in `execute'\n/srv/puppet/code/environments/production/modules/wireguard/lib/puppet/functions/wireguard/genkey.rb:33:in `gen_pubkey'\n/srv/puppet/code/environments/production/modules/wireguard/lib/puppet/functions/wireguard/genkey.rb:54:in `genkey'{code}\nThe error message logged to stder from the wireguard (wg) binary indicates that the process cannot properly read stdin from the passed stdinfile.\n\nHowever, as the example above shows it works fine when using through puppet apply.\n\n\u00a0\n\nIt seems execute using stdinfile is broken on puppetserver.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16270", "fixedVersions": [], "id": "16270", "issueType": "Bug", "key": "SERVER-2683", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243b3c84fe01d006ba5c5e3", "resolution": "Won't Fix", "resolutionDate": "2022-03-08T13:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet::Util::Execution.execute using stdinfile does not work on puppetserver", "timeSpent": "PT0S", "updated": "2022-03-08T13:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "70121:d003824d-392f-493a-8486-54e1dec7a69e", "created": "2019-11-27T01:54:00.000000", "name": "puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11209"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Version 4 of Puppet and 2.8 of Puppet Server are no longer supported. If this problem persists with an up-to-date version of Puppet Server, please reopen this ticket.\n\nWe have done significant work around the way we pull in our Bouncy Castle dependency recently, so there is a good chance that a  more recent version of the Server will fix your issue.", "created": "2019-12-12T17:37:00.000000"}], "components": ["Puppet Server"], "created": "2019-11-27T01:55:00.000000", "creator": "70121:d003824d-392f-493a-8486-54e1dec7a69e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b741e42"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzyp6v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Dec/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1352513105_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:\u00a0 4.10.12*\n *Puppet Server Version: 2.8.1*\n *OS Name/Version: CentOS 7*\n\nAfer a restart of the VM we are unable to start puppetserver and are getting an error saying NoClassDefFoundError jopenSsl/load. Logs can be found below.\n\nPuppetserver was working as expected before we rebooted but it doesn't seem to want to start post reboot.\n\n*Desired Behavior:*\n\nPuppetserver should start\n\n*Actual Behavior:*\n\nDoes not start and errors out.\n\n\u00a0\n\n\u00a0\n\n*Logs:*\n\n**attached logs are below.\n\n[^puppetserver.log]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15747", "fixedVersions": [], "id": "15747", "issueType": "Bug", "key": "SERVER-2682", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:d003824d-392f-493a-8486-54e1dec7a69e", "resolution": "Won't Fix", "resolutionDate": "2019-12-12T17:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "NoClassDefFoundError - After reboot", "timeSpent": "PT0S", "updated": "2019-12-12T17:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2019-11-26T15:43:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@640b5738"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke7z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_610633851_*|*_1_*:*_1_*:*_17194_*|*_10007_*:*_1_*:*_828232_*|*_3_*:*_2_*:*_1780512291_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_3123519651"}], "description": "The metrics tests in puppetserver currently fail and/or error badly in many different ways with when {{multithreaded}} is enabled. In some cases, this seems to be just that some metrics have different values than the hard-coded expected values, but I think it would be good to do a more thorough review of the metrics that we're collecting and the names we're using for them, to make sure they still make sense in the multithreaded model.\n\nProbably if there are some that don't make sense, we should add new ones rather than changing existing names or implementations, to ensure backwards compatibility.\n\nRun tests with {{lein test :only puppetlabs.services.jruby.jruby-metrics-service-test}}", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "16866", "fixedVersions": ["SERVER 6.9.0"], "id": "16866", "issueType": "Task", "key": "SERVER-2681", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-01-29T11:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Review metrics semantics and collection for multithreaded JRuby pool", "timeSpent": "PT0S", "updated": "2020-01-29T11:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Draft PR with current approach: https://github.com/puppetlabs/puppetserver/pull/2251\n\nStill need to:\n* udpate Travis to add new cells for Java 8 and 11 running in multithreaded mode\n* filter out tests that are currently failing in multithreaded mode\n\nWriting new tests or updating some of those should be covered in a separate ticket.", "created": "2020-01-07T11:46:00.000000"}], "components": [], "created": "2019-11-26T14:20:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74e5d30c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke7r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_83828878_*|*_1_*:*_1_*:*_10676_*|*_10007_*:*_1_*:*_92924855_*|*_3_*:*_2_*:*_776649035_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_3376542069"}], "description": "In order to ensure that Puppet continues to work with both the traditional JRuby pool and the multithreaded one, we should test both varieties on PRs. This requires the multithreaded setting to be adjustable from the outside, most likely via an environment variable.\n\nCertain tests assume multiple JRubies (e.g. https://github.com/puppetlabs/puppetserver/blob/master/test/integration/puppetlabs/services/jruby/puppet_environments_int_test.clj#L64). Part of this work to is audit those and determine if they should simply be skipped when testing with {{multithreaded}}, if they can be reworked to pass in both implementations, or if a different version needs to be written for the {{multithreaded}} mode.\n\nOnce it is configurable in that way, we should update Travis to add a cell running multithreaded.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "14821", "fixedVersions": ["SERVER 6.9.0"], "id": "14821", "issueType": "Task", "key": "SERVER-2680", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-01-15T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Paramterize puppetserver tests to run them with multithreaded pool", "timeSpent": "PT0S", "updated": "2020-02-12T11:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] do you have an easy way to reproduce the bad logging you saw, besides running tests? ", "created": "2020-01-14T14:34:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yeah if you run Patrick's {{thread_test}} stuff, there should be some of this in the server logs, I think.", "created": "2020-01-14T15:09:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "I haven't added this to the 6.13.0 release notes, as Justin said\u00a0it was fixed before the release date.\u00a0", "created": "2020-02-17T04:32:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "I think that's fine, since we didn't actually ship the new architecture in 6.8.0. ", "created": "2020-02-18T11:34:00.000000"}], "components": [], "created": "2019-11-26T10:00:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6379834d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykecn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "In multithreaded mode, event logging will reference the active thread's ID, rather than the JRuby instance ID. "}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_670725218_*|*_1_*:*_1_*:*_10498_*|*_10007_*:*_1_*:*_342880116_*|*_3_*:*_2_*:*_442780652_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_4079696418"}], "description": "When running with the new ReferencePool inside of Puppet Server, it seems that not all borrow and return events are being registered properly, despite borrowing and returning seeming to work correctly. It is logging things like:\n{code}\n2019-11-25 15:34:23,033 WARN  [qtp1521024391-236] [p.s.j.jruby-metrics-core] JRuby instance '1' borrowed, but it appears to have already been in use!\n2019-11-25 15:34:23,132 WARN  [nRepl-session-df4fce2c-67d7-4a0b-b293-e5a68d71c767] [p.s.j.jruby-metrics-core] JRuby instance '1' returned, but no record of when it was borrowed!\n2019-11-25 15:34:24,063 WARN  [qtp1521024391-239] [p.s.j.jruby-metrics-core] JRuby instance '1' borrowed, but it appears to have already been in use!\n2019-11-25 15:34:24,155 WARN  [nRepl-session-df4fce2c-67d7-4a0b-b293-e5a68d71c767] [p.s.j.jruby-metrics-core] JRuby instance '1' returned, but no record of when it was borrowed!\n2019-11-25 15:34:24,955 WARN  [qtp1521024391-236] [p.s.j.jruby-metrics-core] JRuby instance '1' borrowed, but it appears to have already been in use!\n2019-11-25 15:34:25,034 WARN  [nRepl-session-df4fce2c-67d7-4a0b-b293-e5a68d71c767] [p.s.j.jruby-metrics-core] JRuby instance '1' returned, but no record of when it was borrowed!\n{code}\n\nThis occurs both when running the server normally and in tests (e.g. https://github.com/puppetlabs/puppetserver/blob/master/test/integration/puppetlabs/services/jruby/puppet_environments_int_test.clj).\n\nThis might be because we can now borrow an instance with the same ID multiple times, or it might be because some code paths do not correctly trigger the events.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "16269", "fixedVersions": ["SERVER 6.9.0"], "id": "16269", "issueType": "Bug", "key": "SERVER-2679", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-01-29T11:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix borrow and return event logging for ReferencePool", "timeSpent": "PT0S", "updated": "2020-02-18T11:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Job link: https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-master/1223/LAYOUT=redhat8-64ma-windows2008r2-64a,LDAP_TYPE=default,label=beaker/testReport/junit/(root)/acceptance_suites_pre_suite_foss/90_validate_sign_cert_rb/", "created": "2019-11-25T09:23:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Here's an example on a non-Windows machine:\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-master/1230/LAYOUT=redhat8-64ma-64a,LDAP_TYPE=default,label=beaker/testReport/junit/(root)/acceptance_suites_pre_suite_foss/90_validate_sign_cert_rb/", "created": "2019-12-10T16:43:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Again, twice this time, two redhat8 masters, and a windows agent. https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-master/1235/", "created": "2019-12-16T09:08:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Again on redhat8-windows2008 https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/967/LAYOUT=redhat8-64ma-windows2008r2-64a,LDAP_TYPE=default,label=beaker/testReport/junit/(root)/acceptance_suites_pre_suite_foss/90_validate_sign_cert_rb/\n\nMaybe redhat8 is the common denominator.", "created": "2019-12-18T10:12:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is still happening even with the retry logic. (Though it might be less frequent)\n\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/1014/LAYOUT=redhat8-64ma-windows2008r2-64a,LDAP_TYPE=default,label=beaker/testReport/junit/(root)/acceptance_suites_pre_suite_foss/90_validate_sign_cert_rb/", "created": "2020-03-13T09:53:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Happened again on redhat8:\n\n[https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_full-master/1071/LAYOUT=redhat8-64ma-64a,LDAP_TYPE=default,label=beaker/]", "created": "2020-06-15T15:40:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Tony tried to fix this by adding retry logic, but it didn't help. https://github.com/puppetlabs/puppetserver/blob/319fac1df276f862c7b4aa57f8f36380020e31f3/acceptance/lib/helper.rb#L119-L131", "created": "2020-08-03T16:16:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "This just happened twice in a row:\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-master/LAYOUT=redhat8-64ma-windows2008r2-64a,LDAP_TYPE=default,label=beaker/1404/\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-master/LAYOUT=redhat8-64ma-windows2008r2-64a,LDAP_TYPE=default,label=beaker/1405/", "created": "2020-08-04T21:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "In one full week of runs following the most recent fix, this has yet to appear again. Closing. We can always reopen if it shows up again.", "created": "2020-08-31T12:12:00.000000"}], "components": [], "created": "2019-11-25T09:22:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a0fb561"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwla1:z"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jun/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_525077778_*|*_1_*:*_1_*:*_6938961488_*|*_10007_*:*_1_*:*_321560597_*|*_3_*:*_2_*:*_86019854_*|*_4_*:*_1_*:*_5720737059_*|*_5_*:*_1_*:*_2067054408_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_8539204883"}], "description": "Sometimes in cells with a redhat8 master, the [90_validate_sign_cert|https://github.com/puppetlabs/puppetserver/blob/master/acceptance/lib/helper.rb#L121] pre-suite in puppetserver will fail to autosign a cert, like so:\n{code}\n# ...after setting autosign to true...\nvernal-bean.delivery.puppetlabs.net (redhat8-64-1) executed in 6.36 seconds\nRuntimeError: PuppetAcceptance::DSL::Helpers.with_puppet_running_on failed (check backtrace for location) because: Host 'jungian-emperor.delivery.puppetlabs.net' exited with 1 running:\n cmd.exe /c puppet agent --test --server vernal-bean.delivery.puppetlabs.net\nLast 10 lines of output were:\n\tInfo: Creating a new RSA SSL key for jungian-emperor.delivery.puppetlabs.net\n\tInfo: csr_attributes file loading from C:/ProgramData/PuppetLabs/puppet/etc/csr_attributes.yaml\n\tInfo: Creating a new SSL certificate request for jungian-emperor.delivery.puppetlabs.net\n\tInfo: Certificate Request fingerprint (SHA256): C4:2B:22:57:9C:7C:80:B2:2C:50:7C:EE:3C:23:FB:29:58:B3:1A:5F:84:00:90:EC:AF:61:97:B1:7C:AA:58:29\n\tInfo: Certificate for jungian-emperor.delivery.puppetlabs.net has not been signed yet\n\tCouldn't fetch certificate from CA server; you might still need to sign this agent's certificate (jungian-emperor.delivery.puppetlabs.net).\n\tExiting now because the waitforcert setting is set to 0.\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17498", "fixedVersions": ["SERVER 5.3.15", "SERVER 6.14.0"], "id": "17498", "issueType": "CI Blocker", "key": "SERVER-2677", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-08-31T12:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Transient: 90_validate_sign_cert fails to sign the cert", "timeSpent": "PT0S", "updated": "2020-08-31T12:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:8f1e0495-1d4a-4123-bbad-727b7f49f370", "body": "Puppet 6 re-implemented several stdlib functions as 4x functions, and they therefore now validate their inputs as such. This was an intentional change compared to the Puppet 5 implementations. ", "created": "2019-11-25T10:48:00.000000"}], "components": ["Puppet Server"], "created": "2019-11-25T05:45:00.000000", "creator": "623c091501f8660070b6fa06", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38b392ec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzynjz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Nov/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18240697_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: OS 6.11.1* el7\n *Puppet Server Version: OS 7.6.2 el7*\n *OS Name/Version: CentOS 7.7.1908*\n\n\u00a0\n\n*Desired Behavior:*\n\nsize(null) should return 0\n\n*Actual Behavior:*\n\n\u00a0\n\nLooks like puppet6 doen't handle undef values for the size() function as puppet5 did.\n\nIMHO, undef shouldn't be an issue for this function. Puppet 6.0.0 release notes state that \"the functions are generally backward compatible\" and point to PUP-8604.\n\nHowever :\n\n\u00a0\n{code:java}\n// puppet6 :\n# puppet apply -e 'notice(size(undef))'\nError: Evaluation Error: Error while evaluating a Function Call, 'size' parameter 'arg' expects a value of type Collection, String, or Binary, got Undef (line: 1, column: 8) on node node07.datagrid.cea.fr\n\n// puppet5 - puppet-agent-5.5.17-1.el7.x86_64 :\n# puppet apply -e 'notice(size(undef))'\nNotice: Scope(Class[main]): 0\nNotice: Compiled catalog for xxxx in environment production in 0.02 seconds\nNotice: Applied catalog in 0.59 seconds\n\n{code}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17497", "fixedVersions": [], "id": "17497", "issueType": "Bug", "key": "SERVER-2676", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c091501f8660070b6fa06", "resolution": "Won't Fix", "resolutionDate": "2019-11-25T10:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet6 size fails to handle Undef", "timeSpent": "PT0S", "updated": "2019-11-25T10:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-11-15T11:22:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6537dc6a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzyi2f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_88987676_*|*_1_*:*_1_*:*_19738_*|*_10007_*:*_1_*:*_231079682_*|*_3_*:*_1_*:*_21160651_*|*_5_*:*_1_*:*_0"}], "description": "See https://github.com/jruby/jruby/issues/5971. This is currently hitting us when trying to install gems for running Puppet's spec tests. It fails immediately after installing bundler:\n{code}\n09:48:40 + /usr/local/bin/lein-2.9.1 run -m org.jruby.Main -e 'load \"META-INF/jruby.home/bin/rake\"' spec\n09:48:50 Ignoring executable-hooks-1.6.0 because its extensions are not built. Try: gem pristine executable-hooks --version 1.6.0\n09:48:50 Ignoring gem-wrappers-1.4.0 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.4.0\n09:48:50 Error loading packaging rake tasks: no such file to load -- packaging\n09:48:50 /tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/Rakefile:156: warning: Dir.exists? is a deprecated name, use Dir.exist? instead\n09:48:50       GEM_HOME='/tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/vendor/test_gems' GEM_PATH='/tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/vendor/test_gems'       /usr/local/bin/lein-2.9.1 run -m org.jruby.Main       -e 'load \"META-INF/jruby.home/bin/gem\"' install -i '/tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/vendor/test_gems' bundler -v '< 2' --no-document --source 'https://artifactory.delivery.puppetlabs.net/artifactory/api/gems/rubygems/'\n09:48:50 WARNING: You have $CLASSPATH set, probably by accident.\n09:48:50 It is strongly recommended to unset this before proceeding.\n09:49:05 Successfully installed bundler-1.17.3\n09:49:05 1 gem installed\n09:49:05 rake aborted!\n09:49:05 Errno::ENOENT: No such file or directory - No such file or directory\n09:49:05 /tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/Rakefile:165:in `block in <main>'\n09:49:05 /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/gems/2.4.0/gems/rake-12.0.0/exe/rake:27:in `<main>'\n{code}\n\nWe need to downgrade back to 9.2.8 until this issue is fixed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16268", "fixedVersions": ["SERVER 6.7.2"], "id": "16268", "issueType": "Bug", "key": "SERVER-2674", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-11-19T10:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby 9.2.9.0 crashes when using `system()`", "timeSpent": "PT0S", "updated": "2019-11-19T10:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [{"attacher": "623a4a36a95758006959ff56", "created": "2019-11-15T02:03:00.000000", "name": "Screenshot 2019-11-15 at 09.32.35.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10815"}, {"attacher": "623a4a36a95758006959ff56", "created": "2019-11-15T02:03:00.000000", "name": "Screenshot 2019-11-15 at 09.32.40.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10746"}, {"attacher": "623a4a36a95758006959ff56", "created": "2019-11-15T02:03:00.000000", "name": "Screenshot 2019-11-15 at 09.32.49.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10674"}, {"attacher": "623a4a36a95758006959ff56", "created": "2019-11-15T02:17:00.000000", "name": "Screenshot 2019-11-15 at 10.17.18.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10590"}, {"attacher": "623a4a36a95758006959ff56", "created": "2019-11-29T06:33:00.000000", "name": "Screenshot 2019-11-29 at 14.33.13.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10747"}, {"attacher": "623a4a36a95758006959ff56", "created": "2019-11-29T06:51:00.000000", "name": "Screenshot 2019-11-29 at 14.49.39.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10816"}, {"attacher": "623a4a36a95758006959ff56", "created": "2020-01-09T02:28:00.000000", "name": "Screenshot 2020-01-09 at 10.27.59.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10818"}, {"attacher": "623a4a36a95758006959ff56", "created": "2020-01-08T10:54:00.000000", "name": "image-2020-01-08-18-54-39-953.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10817"}, {"attacher": "557058:6d9f4174-bf47-424d-a46a-6940b2255f29", "created": "2019-11-29T14:23:00.000000", "name": "puppetserver-cpu.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10968"}], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Somethings that would be helpful:\n\nWhat do the machines/vms that the servers are running on look like? (number of cpus, ram)\nHow is puppet server configured? (max-requests-per-instance, max-instances, ...)\nHow is the JVM configured? (Xms, Xmx, GC tuning, Metaspace, Codecache, ...)\n\nIn general, we've seen a small percent overall increase of heap usage, additional CPU usage after a new jruby worker is spun up (after max-requests has been hit), but followed by a decrease in CPU usage and higher throughput than 5.x after 50ish catalog runs. Unfortunately, we've also seen a rather large amount of additional off-heap usage in the upgrade - Metaspace and Codecache usage.\n", "created": "2019-11-15T10:21:00.000000"}, {"author": "623a4a36a95758006959ff56", "body": "The Physical hosts are using Intel E5-2643 @ 3.30GHz with 16 cores and have 256 GB RAM, storage is LVM (no thinpool) on RAID 6 made from 7 x Crucial SSDs.\n\nThe three VMs are all on different physical hosts and each has 8 CPU cores and 16GB of RAM.\n\nin /etc/default/puppserver we have\u00a0-Xms8172M -Xmx8172M (half the ram of the VM). Garbage collection and metaspace are not set so I assume they use some defaults.\n\nWe were initially with\u00a0openjdk-8-jre-headless, which was kept after the upgrade to puppetserver 6. We also tried the\u00a0openjdk-11-jre-headless, but there was no change in the performance.\n\nThe\u00a0max-requests-per-instance was a default of 0 on out puppet 5 environment, after the upgrade when we saw the drop in performance we tried to modify this value, setting it to 1000, 10000, 50000 but again there was no change in the performance.\n\nThe\u00a0max-active-instances setting we had set to 10 in puppetserver 5, which is our CPUs +2. We also experimented with CPUs - 2, as well as CPUs / 2, but the CPU utilization was still much higher than the one with puppetserver 5.", "created": "2019-11-18T01:58:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "I have the exact same issue after upgrading directly from 4.9 to 6.10.1, same performance penalty, 3-4x higher CPU load.\n\nFrom my observation, the agents become slower because the server takes a lot more time now to serve File resources data. this can be observed with --evaltrace --summarize. Catalog compilations are mostly between 1 and 5 seconds.\n\nMy master VM serves 300+ agents with runinterval 900 and splay on. I was running 4.9 with 8 vcpu's (ESXI 6.5, Xeon E5-3660 2.6Ghz) with < 33% CPU load, then 100% with 6.10.1. Now running with 12 vCPU's so other processes can breathe a bit, bringing load to ~75%. 32GB RAM total, puppetserver set to 8GB heap size and 1GB code cache size. max-active-instances: 10.\n\n\u00a0I use the RPM packages for EL7 (running CentOS 7.7).", "created": "2019-11-25T10:29:00.000000"}, {"author": "623a4a36a95758006959ff56", "body": "We were able to resolve the load issues and the servers are stable as before.\n\nWhat I changed was the\u00a0*max-active-instances*, reducing from (total CPUs 8 + 2 = 10) to 4. (I guess each jruby instance is much heavier than before)\n\nI also added to the /etc/default/puppetserver \"-XX:ReservedCodeCacheSize=1G\". (Not sure if it was needed but it works good with it)\n\n\"-Xms and -Xmx\" are still set to 8GB.\n\nIn our environment it seems to be enough with the above resources and the graphs seem much better.\n\nExcept for the fact that Java is using almost all of the 16GB of memory of the VM instead of the allowed 8GB and the fact that the VMs used to utilize ~10% of the CPU and now it is more like ~17% we are satisfied with the outcome.\n\n!Screenshot 2019-11-29 at 14.33.13.png|width=199,height=109!\n\n!Screenshot 2019-11-29 at 14.49.39.png|thumbnail!\n\n\u00a0", "created": "2019-11-29T06:52:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "\u00a0[~accountid:623a4a36a95758006959ff56], what about your agents, are they able to process the catalogs as fast as before also? Did you compare agent side with --evaltrace ?", "created": "2019-11-29T07:02:00.000000"}, {"author": "623a4a36a95758006959ff56", "body": "Unfortunately I have no data about the agents before, since the reports that we have in Foreman go for 7 days only. Visutally however I feel they run with the same speed \u00b1 5 sec from a total of ~60. I did the --evaltrace while testing but I did not spot a resource that slows down the whole run. After the catalog is compiled on the master and sent to the agent it runs pretty much the way it did before the upgrade.", "created": "2019-11-29T07:13:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "Ok, thanks. Good that you were able to mitigate, but I still think the situation with the jruby instances is not normal, it was a very dramatic increase in CPU usage. I hope this issue gets some attention from the dev team.", "created": "2019-11-29T07:28:00.000000"}, {"author": "557058:6d9f4174-bf47-424d-a46a-6940b2255f29", "body": "I can confirm that [~accountid:623a4a36a95758006959ff56]'s config change has had similar results in my test. A Puppetserver 6.7.2 (which until a few days ago was 6.6.0) was using excessive amounts of CPU, and would \"get stuck\" after a 2-6 hours. When stuck the process wouldn't terminate and had to be killed, and all agents would time out.\n\nAfter reducing \\{{max-active-instances}} and setting \\{{-XX:ReservedCodeCacheSize=1G}} I see much lower load, the server hasn't gotten stuck again, and the variance in load from average seems lower too:\n\n!puppetserver-cpu.png!\n\nIn the graph the server is \"stuck\" when utilization jumps to >40%. The times when load drops are caused by restarts. The config changes were made today around 16:00 \u2013 so far so good! Thanks [~accountid:623a4a36a95758006959ff56]!", "created": "2019-11-29T14:25:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "Not much result for me. In fact, restarting the service is something I really avoid, as for some reason things are extremely slow for some hours to the point most agent runs timeout.", "created": "2019-11-29T19:10:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "IIRC, our tuning recommendations for enterprise customers is 0.75-1.25 Gb per worker instance (JRuby) depending on users typical catalog complexity, with the update from JRuby 1.7 (Puppet 5.x or our LTS-1) to 9k (Puppet 6.x or our current LTS) requiring around 10% more heap (and some additional CPU when first warming up) but also slightly higher throughput once warm and meaningfully more off-heap memory.\n\nI think the recommendation for enterprise users is a little less than 100 Mb of CodeCache per instance (with MetaSpace being unmanaged & unlimited by default) plus some base amount. I believe most enterprise users have their CodeCache automatically managed for them by some supported modules and are in the 1-2 Gb range.\n\n`max-requests` of 0, iiuc, is equivalent to \"never\" and should have the smallest affect on non-heap memory save for a leak. The lower the `max-requests` setting is the more off-heap memory will be required.\n\nI'm glad to see you've somewhat resolved the current problem, and I apologize for not getting back to this sooner. We need to make the upgrade guides clearer about issues that may be encountered when upgrading. I would hope that if you were running with 8 vCPUs and 8G Xmx you'd be able to run with a `max-instances` of 6-10, and w/o having to reduce the number of instance more than 1 less than previous (assuming you still include the larger CodeCache).\n\nWe are also currently working on ways to lessen the issues Puppet has when using 9k. Which is a question I have, for the thread in general and [~accountid:557058:6d9f4174-bf47-424d-a46a-6940b2255f29]\u00a0in particular, did you see a particularly performance regression when moving between Puppet Server 6.6 and 6.7? We upgraded our JRuby version in that release and need to understand if this issue falls in the \"general improvements to 9k\" bucket, or is an issue with a specific version of 9k we bumped to in Puppet Server 6.7 (Puppet Platform 6.10, I think).", "created": "2019-12-02T12:57:00.000000"}, {"author": "557058:6d9f4174-bf47-424d-a46a-6940b2255f29", "body": "Hi [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]!\n\nSorry, I don't have have clear metrics on performance between 6.6 and 6.7. The Puppetserver in question was only upgraded recently and it was only upgraded after the performance degraded massively. Looking back on the load graphs it might have started all the way back before 6.4, but that's just a guess.\n\nWhen we upgraded from 6.5 to 6.6 in late September the load average seems to have risen about 5 percentage points, but our long term metrics for that period aren't detailed enough that I can say that it was caused by Puppetserver alone. This [Reddit thread|https://www.reddit.com/r/Puppet/comments/dto5rl/very_high_load_after_upgrade_from_49_to_610/] on November 9 was what prompted me to take a closer look, but this particular Puppetserver was acting up before then. I'm afraid that this anecdata is the best I can do, sorry.", "created": "2019-12-03T01:38:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "That's good to know.\n\nI was actually really hoping to see a performance improvement in the last release of the platform. JRuby 9.2.8 that we shipped in 6.7 is supposed to contain some memory improvements (with more to come in 2.9.2). And I overhauled PuppetStack in the very last release (so the deprecation, return, break, and next functions, along with many warnings should all be much faster). I also haven't been on Reddit, I'll have to check that out.\n\nThere's a couple of other issues mentioned in this ticket, if I'm reading it correctly.\n\nIt looks like [~accountid:623a4a36a95758006959ff56], was bit by the CodeCache increased requirements (can those who felt like that fixed their issue see if when after increasing CodeCache you can continue with the same number of JRuby instances (or maybe one less JRuby instance per host)?\n\nAnother issue I read about in here was non-heap memory expanding to take up most of 16 Gbs? I would expect with CodeCache set to 1G, Metaspace would take up a similar amount, leading a Server process with 8G of heap to use ~10G total. Note, lower max-requests will cause more off-heap memory. [~accountid:623a4a36a95758006959ff56], can you confirm that with a max-requests setting of 100,000 or higher the server continues to take up nearly as much off-heap as heap memory?\n\nFinally, I haven't heard the file resource problem before. I suspect it's a different category of problem. [~accountid:557058:cb2d2b33-d386-421f-b76d-c0528b64a800], can you tell me more about it? Is it file resource serving or file metadata, or directory metadata? Are there specific files that are taking longer than others? (like binary vs text, or do larger files take exponentially longer than short ones) Are you using static catalogs, or custom mount points? If so how are they configured?", "created": "2019-12-03T16:11:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I created\u00a0DOCUMENT-1069 to update our tuning guide. I linked a page that someone pointed out to me, if there's other pages that you've seen that need updating, or should mention this kind of thing (or link to it), please let me know (here or in the DOC ticket).", "created": "2019-12-05T13:42:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\u00a0thanks for all the info. It's metadata, and does not seem specific to some files or their size, it's noticeable even with the small stuff. It's all text, no custom mount points, and I'm not using static catalogs. I thought about disk IO contention, but it's not the case.\n\nThe only thing I haven't tried is to give more heap, and reduce max-active-instances from 10 to 8 (I tried with 4 and it was a disaster). For heap I'll try 12GB instead of 8GB and see if that also helps. Other than that, I think my settings are actually on par with what I've read. 8GB for 10 max-instances, and 1GB codecache.\u00a0", "created": "2019-12-05T20:45:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "I took a closer look at the evaltrace output. One run took 210 seconds, 175 of which spent on File. These are things like shell scripts, python scripts, certificates, service configuration files, very normal linux stuff. Total of 221 files.\n\nOne thing that seems odd in the evaltrace is that some files are apparently evaluated really quickly (\"Evaluated in 0.00 seconds\". But then comes some (that can be of the same type) that take 1,2,3,4 seconds, and it's just a small config file. So, for 87 small files, it takes 172 seconds if I sum them all, that's almost average of 2 seconds for each file. For the remaining 134 files, it registers 0.00.\n\nAnother agent run some minutes later (same machine) shows pretty much the same thing, just one second total of difference in the time spent on File. Also, it's again the *same* files, just different times between them. For example one that took almost 5 seconds before now took 0.78. But in the end, the sum is pretty much the same This I find very interesting. Any idea about this?\n\nUpdate: tested with another machine's agent, and the result is the same, same time, same files.\n\n\u00a0\n\n\u00a0\n\n\u00a0\n\n\u00a0\n\n\u00a0", "created": "2019-12-05T21:35:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Do those files live in a particular location (like a different filesystem, or in modules vs outside of modules on the file system, or in custom mounts)?\n\nIs it possible that the troublesome files are not valid UTF8? There are some character points that will cause Puppet to stop using JSON and fallback to much slower PSON.\n\nIs there a commonality between how these are represented in Puppet Code? Like are these all file resources that use templates? (there are other ways that template rendering could slow down).\n\nIs it possible for you to share the puppet code that manages one of these slow files (as well as the file source content, whether a file or template)?", "created": "2019-12-06T12:12:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "Regular local xfs partition, all within /etc/puppetlabs/code/environments/production/modules/*/files.\n\nI can check for UTF8 (I guess iconv would be good for that).\n\nTemplating not involved.\n\nI will take a look at snippets I can share.\n\n\u00a0", "created": "2019-12-06T12:49:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Also, are these file_content or file_metadata requests that are taking a long time? Are you using a non-English locale? (Someone just reminded me that there was a weird file_metadata issue a while back when using Norwegian, trying to find out more about that)", "created": "2019-12-06T12:50:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "A coworker also just pointed out PA-3024 to me, which could cause Puppet to pull down new files every time (including pluginsynced files, which can take a while). Can you confirm that is or isn't what you're seeing?", "created": "2019-12-06T13:16:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "Regarding PA-3024, I'm not retrieving files from a remote web server, so I don't think it applies.\n\nThe requests are for file_metadata.\n\nUsing English locale.\n\nI tried lowering my instances from 10 to 8, while also raising max heap from 8 to 12. This was 4 hours ago, and things are not yet stable.\n\nGetting a few of these: 2019-12-06T23:07:30.784Z ERROR [qtp496930519-273] [p.r.core] Internal Server Error: java.io.IOException: java.util.concurrent.TimeoutException: Idle timeout expired: 30001/30000 m.\u00a0\n\nAnd these:\u00a0\n\nuri:classloader:/puppetserver-lib/puppet/server/master.rb:51:in `handleRequest'\n2019-12-06T22:07:48.432Z ERROR [qtp496930519-180] [puppetserver] Puppet Report processor failed: Cannot allocate memory [...]\n\nGoing to raise instances back to 10.\n\nI did ran with profile for a while, until puppetserver stopped logging altogether, and I removed the setting and restarted. Was not running with root level=debug though.\n\nHere's an example:\n\n2019-12-06T18:55:36.098Z INFO [qtp1603990586-192837] [puppetserver] Puppet PROFILE [1060340954] 1.1 Rendered result in Puppet::Network::Format[json]: took 0.0003 seconds\n2019-12-06T18:55:36.099Z INFO [qtp1603990586-192837] [puppetserver] Puppet PROFILE [1060340954] 1.2 Sent response: took 0.0001 seconds\n2019-12-06T18:55:36.099Z INFO [qtp1603990586-192837] [puppetserver] Puppet PROFILE [1060340954] 1 Processed request GET /puppet/v3/file_metadata/modules/whatever/whatever.conf: took 5.7391 seconds\n2019-12-06T18:55:36.099Z INFO [qtp1603990586-192837] [puppetserver] Puppet AGGREGATE PROFILING RESULTS:\n2019-12-06T18:55:36.099Z INFO [qtp1603990586-192837] [puppetserver] Puppet ----------------------------\n2019-12-06T18:55:36.100Z INFO [qtp1603990586-192837] [puppetserver] Puppet http: 5.739481 s (3 calls)\n2019-12-06T18:55:36.100Z INFO [qtp1603990586-192837] [puppetserver] Puppet http -> GET: 5.739108 s (1 calls)\n2019-12-06T18:55:36.100Z INFO [qtp1603990586-192837] [puppetserver] Puppet http -> GET -> /puppet/v3/file_metadata/modules/whatever/whatever.conf: 5.739108 s (1 calls)\n2019-12-06T18:55:36.100Z INFO [qtp1603990586-192837] [puppetserver] Puppet http -> v3_render: 0.000282 s (1 calls)\n2019-12-06T18:55:36.100Z INFO [qtp1603990586-192837] [puppetserver] Puppet http -> v3_render -> Puppet::Network::Format[json]: 0.000282 s (1 calls)\n2019-12-06T18:55:36.101Z INFO [qtp1603990586-192837] [puppetserver] Puppet http -> v3_response: 9.1e-05 s (1 calls)\n2019-12-06T18:55:36.101Z INFO [qtp1603990586-192837] [puppetserver] Puppet ----------------------------\n\nFile whatever.conf is 18 bytes of text, and is good for UTF-8. Doesn't always take this long though.\u00a0", "created": "2019-12-06T16:27:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "By the way, even after a couple of restarts of puppetserver, the list of \"slow files\" remains the same.", "created": "2019-12-06T16:39:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "Ok, so I reviewed this a bit more closely, and the findings are:\n * Any file that is deployed with content => template is fine, it's evaluated quickly (0.00s)\n * Any file that is deployed with source => 'puppet:///' suffers the issue, except if it's part of a directory deployed with recurse => true. I picked a couple of files, created a dedicated file resource for each, and deployed on top of the recursive resource to confirm the difference. That was surprising, as I assume that checksum is checked for each individual file in a recursive file resource as well.", "created": "2019-12-07T23:08:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "I have meanwhile checked in the source code that for recursive directories, only ctime is checked, not md5sum as in a normal file. I was unaware of this.\n\nSo in a nutshell, my problem seems to be slow checksum calculation for non-recursive file resources using source attribute. Just to put in perspective, a single response to a file_metadata request can take longer than the catalog compilation itself. Usually, compilations oscillate between 2 and 6 seconds, while the cumulative file_metadata responses can take 150 seconds. Of course, checksum calculations may just be affected by other routines causing the CPU usage to be so high. However those don't seem to affect catalog compilation as much...", "created": "2019-12-09T07:25:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "That's great investigative work [~accountid:557058:cb2d2b33-d386-421f-b76d-c0528b64a800]! With that completed I'm going to close this ticket because I think we have actionable descriptions of everything encountered here.\n\nI'm going to say the original cause of this ticket was [~accountid:623a4a36a95758006959ff56] code cache issues, which is a big issue with our upgrade docs (and the upgrade process in general). For what I can do about now, I'm going to point others who come across this ticket based on the original description to the docs ticket DOCUMENT-1069. Hopefully, we can help make the new requirements and memory configuration as well known and painless as possible going forward.\n\nThen there's also [~accountid:557058:cb2d2b33-d386-421f-b76d-c0528b64a800]'s issues, of which I think there are two. The main source seems to be a regression in the performance of md5 summing for the metadata endpoint, which is causing a huge slow down for him. For that I've opened PUP-10167. In addition, it seems like we're causing a vicious cycle where our error handling code is causing a dramatic increase in memory pressure, rather than relieving it. To investigate that I've opened SERVER-2689. I'm going to work on SERVER-2689 right now, as I think it is currently affecting several other folks and will turn to PUP-10167 once I've resolved it.\n\nLet me know if that characterization of this ticket and the next steps doesn't seem accurate.", "created": "2019-12-09T12:35:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "Sounds good, thanks\u00a0[~accountid:557058:104b5720-714d-4539-b455-df472251ec89].", "created": "2019-12-10T10:40:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "Hi. I thought I'd update here with more recent troubleshooting.\n\nToday I've setup a new compile master in my infra, as the load really needs to be spread, given that there's been periods where agents spend 10 minutes, and I'd say that on everage 9 of those minutes are plainly waiting for files metadata. But, sometimes they take just two minutes, for some reason. Honestly, can't figure out the variation.\n\nUpdate 1) I've changed some file resources to use ctime as \"checksum\" method, and I did not see a variation in performance, still slow. This leads me to believe that while there seems to be a regression in routines around the checksum'ing, the checksum method itself does not seem to matter. I only tested between md5 and ctime though.\n\nUpdate 2) The new compile master, is a VM on another (beefy) ESXi currently with 4 vCPU's and 16GB RAM assigned. I've given it 8GB Xms/Xmx and 2GB code cache, and puppetserver config is default. It's creating 3 instances. I've assigned 20 (twenty) hosts to it. And with only those, load is already at 75%. Agents are still getting things done in total 30-40 seconds, with files averaging 10-15 seconds, which is the expected performance. But, given the current CPU usage already, I think that will start to degrade rather quickly.\n\nThanks.", "created": "2020-01-07T15:54:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks Rodrigo. Though we've been trying to wrap up some other pressing tasks these last few weeks, I appreciate you checking in and keeping us updated!", "created": "2020-01-07T16:22:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "HI again. Just to note that I now raised the agents on the new compile master from 20 to 32. Time elapsed handling files is now 2.5x to 4x more than with 20 agents.", "created": "2020-01-07T18:44:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "I have now tested on a bare-metal system. This one is a dual-socket 2x8 core Xeon\u00a0E5-2640v3 with HT enabled (32 CPU threads total), and 128GB RAM. No significant disk IO either. 10 jruby instances configured, 8GB RAM for Xms/Xmx, 2GB CodeCache. Only 10 agents assigned for now. CPU usage for the process already oscillating between 500% and 900%.\u00a0\n\nI'm going to try and explore about GC issues.\n\n\u00a0", "created": "2020-01-08T08:03:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "I'm wondering if you have issues in the puppet codebase.\n* Is it possible that you just assign a single agent to the physical puppetserver, run the agent once with --debug / --evaltrace and also enable profiling on the puppetserver? \n* Sorry if I missed it in the thread, but: Are there exported resources in the catalog?\n* do you heavily enforce the resource ordering? Could you provide a catalog graph?", "created": "2020-01-08T08:26:00.000000"}, {"author": "557058:cb2d2b33-d386-421f-b76d-c0528b64a800", "body": "[~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68]\u00a0I should note that catalog compilations remain reasonably fast. At least by looking at the numbers logged in puppetserver.log. I'd think issues in the codebase would reflect with a deterioration of the compilations time? But I don't think that's the case. The fact is that catalog compilation doesn't get much faster on an idle master. which is fine because on average they are below 5 seconds anyway. From the agent's perspective, what really starts taking a long time at the master is the processing\u00a0of requests for files metadata, that was observed consistently with evaltrace regardless of the complexity of the catalog processed by each agent. Degradation is proportional to the amount of file resources of type \"file\" and using source => puppet:/// attribute.\n * I can do that.\n * No exported resources\n * Can't say if it's used heavily. It's surely used. Will see about the graph.", "created": "2020-01-08T10:16:00.000000"}, {"author": "623a4a36a95758006959ff56", "body": "[~accountid:557058:cb2d2b33-d386-421f-b76d-c0528b64a800] Do you have an approximate number of those resources per agent. We have many agents with *file* and puppet:/// but since we did the changes on our puppetserver the issues stopped. Also what is the number of agents that you have and how often do they run.\n\nThe below graph is one of our puppet code servers for the last 90 days, you can clearly see when the upgrade from 5 to 6 was made and 2 weeks later when the issue was relatively resolved.\n\nLoad average has increased from ~0.7 to ~1.2\n CPU usage has increased from ~7% to ~15%\n Memory usage has increased from ~10.2GB to ~13.6GB\n Context switches have increased from ~950 to ~1.3k\n I see no changes in the I/O on neither the puppet code servers or the agents.\n Setting the max-requests-per-instance from 0 to 10000 or 100000 had no visible effect.\n\n!image-2020-01-08-18-54-39-953.png|width=866,height=326!\n\n\u00a0\n\nAs explained in my previous post, to resolve the issue we had to:\n # Reduce the number of instances per server\u00a0from (total CPUs 8 + 2 = 10) to (total CPUs 8 / 2 = 4). We also tested with 6 instances and the server is stable.\n # Setting\u00a0-XX:ReservedCodeCacheSize=1G in the /etc/default/puppetserver file.\n\nWe have 1 puppetdb server, 3 puppet code servers (also running foreman) and a total of ~250 agents, each running every 20 minutes.\n\nThe total puppet:/// resources we have are 330 but I can not tell how many agents apply how many of these resources.\n\nJust one more thing, from time to time the puppetserver service gets restarted (most likely OOM killed). We haven't had the time to investigate but we had no such issues before the upgrade.", "created": "2020-01-08T11:26:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't know if any of you have checked out the [puppet_metrics_collector|https://forge.puppet.com/puppetlabs/puppet_metrics_collector] or [puppet_metrics_dashboard|https://forge.puppet.com/puppetlabs/puppet_metrics_dashboard]. It's what we often recommend to PE customers and is kinda the standard base line for comparing an installation's metrics.\n\n\u00a0\n\n(I'd also love to see any data you have on the possible OOMs)", "created": "2020-01-08T16:15:00.000000"}, {"author": "623a4a36a95758006959ff56", "body": "Hi,\n\nWe do have puppet metrics pushed to graphite and we plot them with Grafana. This is our puppetboard for the last 90 days on one of our puppet compile masters, where you can see the non-heap usage increasing after the upgrade from ~300MB to ~1.35GB.\n\n!Screenshot 2020-01-09 at 10.27.59.png|width=967,height=506!", "created": "2020-01-09T02:34:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "fwiw, from that graph it looks like you still have a large portion of total jrubies as free jrubies. Unless you have a some very spike-y behavior that you need to keep around a lot of spare jrubies for, you can probably reduce your total max-instances further (which should hopefully also reduce non-heap usage).", "created": "2020-01-09T10:38:00.000000"}, {"author": "623c09d6a2f6400069eb76ca", "body": "I'm currently experiencing this exact same issue on a set of compile masters running puppetserver version 6.7.1.\u00a0 It is unclear from this thread if a resolution has been reached and if a patch has been issued.\u00a0 What is the current status of this issue?", "created": "2020-05-15T16:03:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I think things that we discovered here were:\n # Set max-requests-per-instance to a very high number or disable completely (this is a different tuning recommendation from 5.x)\n # Make sure you have plenty of ReservedCodeCache and Metaspace (newly important in 6.x)\n # Because of the heavyweight nature of newer JRuby instances making sure you only have the number of instances you need is very valuable.\n # Some additional improvements that can dramatically help performance went out in Puppet Platform 6.12 (Upgrading to the latest versions are highly recommended).\n\nSomeone else might want to chime in if I missed anything!", "created": "2020-05-15T16:31:00.000000"}], "components": ["Performance"], "created": "2019-11-15T02:18:00.000000", "creator": "623a4a36a95758006959ff56", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24aa6554"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Other"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzyhkn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Nov/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2110620913_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.10.1*\n *Puppet Server Version: 6.7.1*\n *OS Name/Version: Ubuntu Bionic*\n\nWe have a puppet environment of 3 masters and ~250 clients. One of the masters is also serving CA. We have a HA setup with srv records. When we push our puppet code to our internal git, it gets pushed to the puppet masters and there we have different environments depending on the branch.\n\nOnce we upgraded from puppetserver 5.3 to 6.7.1 the servers started to eat up all the server memory and occasionally die, thus we had to add more ram and CPUs to the VMs, where they are running. The CPU usage of the 3 masters also spiked a lot (see graphs). Also on the clients we noticed a signifficant slowdown in the *puppet agent -t*, which we assume is caused by the slow catalog compilation on the masters. The client's CPU usage, Memory usage and other stats except for the puppet run time seem unchanged. puppetserver.log does not contain any errors. On the attached images can be clearly seen when the upgrade was performed on 12.11.2019 ~ 11:00\n\n*Desired Behavior:*\n\nMake puppetserver run smooth again\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16864", "fixedVersions": [], "id": "16864", "issueType": "Bug", "key": "SERVER-2673", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4a36a95758006959ff56", "resolution": "Done", "resolutionDate": "2019-12-09T12:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver 3-4 times more overloaded after upgrade from 5.3 to 6.7.1", "timeSpent": "PT0S", "updated": "2020-05-15T16:31:00.000000", "votes": "7", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-11-11T14:51:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2389781d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10125"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzycdj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2267_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_787282493"}], "description": "(Initial planned release date: 2019-11-19)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-11-20T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.11.0 Release - 2019-11-19\n", "estimate": "PT0S", "externalId": "15069", "fixedVersions": [], "id": "15069", "issueType": "Task", "key": "SERVER-2672", "labels": [], "originalEstimate": "PT0S", "parent": "25434", "parentSummary": "Puppet Platform 6.11.0 Release - 2019-11-19\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-11-20T17:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.7.2)", "timeSpent": "PT0S", "updated": "2019-11-20T17:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-11-11T14:51:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@789ba72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10125"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzycd3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2355_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_787280126"}], "description": "(Initial planned release date: 2019-11-19)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-11-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.11.0 Release - 2019-11-19\n", "estimate": "PT0S", "externalId": "17496", "fixedVersions": [], "id": "17496", "issueType": "Task", "key": "SERVER-2671", "labels": [], "originalEstimate": "PT0S", "parent": "25434", "parentSummary": "Puppet Platform 6.11.0 Release - 2019-11-19\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-11-20T17:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.7.2)", "timeSpent": "PT0S", "updated": "2019-11-20T17:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-11-11T14:51:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b71bc64"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10125"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzyccv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2366_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_787278541"}], "description": "(Initial planned release date: 2019-11-19)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-11-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.11.0 Release - 2019-11-19\n", "estimate": "PT0S", "externalId": "17148", "fixedVersions": [], "id": "17148", "issueType": "Task", "key": "SERVER-2670", "labels": [], "originalEstimate": "PT0S", "parent": "25434", "parentSummary": "Puppet Platform 6.11.0 Release - 2019-11-19\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-11-20T17:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.7.2)", "timeSpent": "PT0S", "updated": "2019-11-20T17:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-11-11T14:51:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ed3e1f1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10125"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzyccn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2326_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_787273606"}], "description": "(Initial planned release date: 2019-11-19)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-11-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.11.0 Release - 2019-11-19\n", "estimate": "PT0S", "externalId": "16863", "fixedVersions": [], "id": "16863", "issueType": "Task", "key": "SERVER-2669", "labels": [], "originalEstimate": "PT0S", "parent": "25434", "parentSummary": "Puppet Platform 6.11.0 Release - 2019-11-19\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-11-20T17:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.7.2)", "timeSpent": "PT0S", "updated": "2019-11-20T17:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "I'm gonna close this until [~accountid:5aa6cd9bfe2b4b24ab21c2f7] has looked into the server team recommendations in ORCH-2397. We can re-open, if appropriate. Thank you!", "created": "2019-12-03T14:30:00.000000"}], "components": [], "created": "2019-11-04T09:13:00.000000", "creator": "5aa6cd9bfe2b4b24ab21c2f7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7465083b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzy6mf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Dec/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2524634395_*|*_6_*:*_2_*:*_37946"}], "description": "In irving, there is a mismatch between the versions of the jruby parts provided by jar-jar and those that are included as part of pcore.\n\npcore is a direct dependency of orchestrator.\njar-jar is a dev-dependency of orchestrator.\n{code:java}\n[puppetlabs/jar-jar \"1.1.1310\" :classifier \"test\" :exclusions [com.andrewmcveigh/cljs-time]] -> [puppetlabs/orchestrator \"2018.1.9.0\"] -> [com.puppet/pcore \"0.1.5\"] -> [org.jruby.joni/joni \"2.1.12\"] -> [org.jruby.jcodings/jcodings \"1.0.21\"]\n and\n[com.puppet/pcore \"0.1.6\"] -> [org.jruby.joni/joni \"2.1.28\"] -> [org.jruby.jcodings/jcodings \"1.0.43\"]{code}\nThis manifests itself as:\n{code:java}\n2019-11-01 10:02:54,274 ERROR [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyInstance to the pool.\n at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval66376$prime_pool_BANG___66381$fn__66385.invoke(jruby_agents.clj:75)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval66376$prime_pool_BANG___66381.invoke(jruby_agents.clj:48)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval66622$send_prime_pool_BANG___66627$fn__66628$fn__66629.invoke(jruby_agents.clj:233)\n at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:387)\n at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:362)\n at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:372)\n at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:362)\n at puppetlabs.trapperkeeper.internal$eval27230$shutdown_service__27235$fn$reify__27237$service_fnk__18047__auto___positional$reify__27242.shutdown_on_error(internal.clj:427)\n at puppetlabs.trapperkeeper.internal$eval27160$fn__27172$G__27152__27180.invoke(internal.clj:395)\n at puppetlabs.trapperkeeper.internal$eval27160$fn__27172$G__27151__27189.invoke(internal.clj:395)\n at clojure.core$partial$fn__4759.invoke(core.clj:2516)\n at clojure.core$partial$fn__4759.invoke(core.clj:2515)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval66351$send_agent__66356$fn__66357$agent_fn__66358.invoke(jruby_agents.clj:42)\n at clojure.core$binding_conveyor_fn$fn__4676.invoke(core.clj:1941)\n at clojure.lang.AFn.applyToHelper(AFn.java:154)\n at clojure.lang.RestFn.applyTo(RestFn.java:132)\n at clojure.lang.Agent$Action.doRun(Agent.java:114)\n at clojure.lang.Agent$Action.run(Agent.java:163)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at java.lang.Thread.run(Thread.java:748)\nCaused by: org.jcodings.exception.InternalException: encoding class <NonStrictUTF8> not found\n at org.jcodings.Encoding.load(Encoding.java:572)\n at org.jruby.util.KCode.getEncoding(KCode.java:99)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65664$set_config_encoding__65669$fn__65670.invoke(jruby_internal.clj:78)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65664$set_config_encoding__65669.invoke(jruby_internal.clj:73)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65689$set_ruby_encoding__65694$fn__65695.invoke(jruby_internal.clj:89)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65689$set_ruby_encoding__65694.invoke(jruby_internal.clj:84)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65713$init_jruby__65718$fn__65719.invoke(jruby_internal.clj:101)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65713$init_jruby__65718.invoke(jruby_internal.clj:91)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65739$empty_scripting_container__65744$fn__65745.invoke(jruby_internal.clj:111)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65739$empty_scripting_container__65744.invoke(jruby_internal.clj:107)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65762$create_scripting_container__65767$fn__65768.invoke(jruby_internal.clj:121)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65762$create_scripting_container__65767.invoke(jruby_internal.clj:113)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65950$create_pool_instance_BANG___65959$fn__65962.invoke(jruby_internal.clj:210)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval65950$create_pool_instance_BANG___65959.invoke(jruby_internal.clj:186)\n at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval66376$prime_pool_BANG___66381$fn__66385.invoke(jruby_agents.clj:65)\n ... 20 common frames omitted{code}\nThis can be addressed by syncing the versions of jruby bits in puppetserver and pcore.\n\n(direct crib from ORCH-2394 comment by [~accountid:623a49b4bef8a60068c6c973])", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15745", "fixedVersions": [], "id": "15745", "issueType": "Task", "key": "SERVER-2667", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5aa6cd9bfe2b4b24ab21c2f7", "resolution": "Won't Fix", "resolutionDate": "2019-12-03T14:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "mismatch between versions of jruby parts from jar-jar vs. pcore in irving fail orchestrator tests", "timeSpent": "PT0S", "updated": "2019-12-03T14:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Certificate Authority"], "created": "2019-11-01T07:20:00.000000", "creator": "623a4603761efb0069cd34da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@545f2dd2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzy5i7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_32941063905_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_41216138454"}], "description": "*Puppet Version:* 6.10.1\n *Puppet Server Version:* 6.7.1\n *OS Name/Version:* Ubuntu 16.04\n\nRequesting all certificates with \"GET /puppet-ca/v1/certificate_statuses/any_key\" may lead to an HTTP 500 error. Probably because the certificate got revoked/cleaned within the same time frame.\n\nThis bug and SERVER-2665 lead to the deactivation of all nodes in PuppetDB in our live setup.\n\n*Desired Behavior:*\n\n/puppet-ca/v1/certificate_statuses/any_key shouldn't fail with an HTTP 500\n\n*Actual Behavior:*\n Access Log\n{code:java}root@syseleven.managementbki1.puppet.ca:/var/log/puppetlabs/puppetserver# zcat puppetserver-access-2019-10-31.0.log.gz | grep -E \"15:50:0[45]\"\n127.0.0.1 - - [31/Oct/2019:15:50:04 +0100] \"PUT /puppet-ca/v1/certificate_status/syseleven.managementbki1.puppet.puppetdashboardplatform01?environment=production HTTP/1.1\" 204 0 \"-\" \"python-requests/2.18.4\" 690 28 -\n127.0.0.1 - - [31/Oct/2019:15:50:04 +0100] \"DELETE /puppet-ca/v1/certificate_status/syseleven.managementbki1.puppet.puppetdashboardplatform01?environment=production HTTP/1.1\" 204 202 \"-\" \"python-requests/2.18.4\" 83 0 -\n127.0.0.1 - - [31/Oct/2019:15:50:05 +0100] \"GET /puppet-ca/v1/certificate_statuses/any_key HTTP/1.1\" 500 182 \"-\" \"PuppetserverCaCli\" 1795 - -\n{code}\nPuppetserver.log\n{code:java}2019-10-31T15:50:04.338+01:00 INFO  [clojure-agent-send-off-pool-1] [o.e.j.u.s.SslContextFactory] x509=X509@10bfe19c(private key,h=[syseleven.managementbki1.puppet.ca],w=[]) for InternalSslContextFactory@53d89efe[provider=null,keyStore=null,trustStore=null]\n2019-10-31T15:50:04.502+01:00 WARN  [qtp1070759982-103] [p.p.certificate-authority] No certificate request for syseleven.managementbki1.puppet.puppetdashboardplatform01 at expected path /etc/puppetlabs/puppet/ssl/ca/requests/syseleven.managementbki1.puppet.puppetdashboardplatform01.pem\n2019-10-31T15:50:05.769+01:00 ERROR [qtp1070759982-130] [p.r.core] Internal Server Error: java.io.FileNotFoundException: /etc/puppetlabs/puppet/ssl/ca/requests/syseleven.managementbki1.puppet.puppetdashboardplatform01.pem (No such file or directory)\n\tat java.io.FileInputStream.open0(Native Method)\n\tat java.io.FileInputStream.open(FileInputStream.java:195)\n\tat java.io.FileInputStream.<init>(FileInputStream.java:138)\n\tat clojure.java.io$fn__11496.invokeStatic(io.clj:229)\n\tat clojure.java.io$fn__11496.invoke(io.clj:229)\n\tat clojure.java.io$fn__11409$G__11402__11416.invoke(io.clj:69)\n\tat clojure.java.io$fn__11508.invokeStatic(io.clj:258)\n\tat clojure.java.io$fn__11508.invoke(io.clj:254)\n\tat clojure.java.io$fn__11409$G__11402__11416.invoke(io.clj:69)\n\tat clojure.java.io$fn__11470.invokeStatic(io.clj:165)\n\tat clojure.java.io$fn__11470.invoke(io.clj:165)\n\tat clojure.java.io$fn__11422$G__11398__11429.invoke(io.clj:69)\n\tat clojure.java.io$reader.invokeStatic(io.clj:102)\n\tat clojure.java.io$reader.doInvoke(io.clj:86)\n\tat clojure.lang.RestFn.invoke(RestFn.java:410)\n\tat puppetlabs.ssl_utils.core$fn__21859$pem__GT_csr__21864$fn__21865.invoke(core.clj:583)\n\tat puppetlabs.ssl_utils.core$fn__21859$pem__GT_csr__21864.invoke(core.clj:577)\n\tat puppetlabs.puppetserver.certificate_authority$fn__37270$get_certificate_status_STAR___37275$fn__37276.invoke(certificate_authority.clj:1355)\n\tat puppetlabs.puppetserver.certificate_authority$fn__37270$get_certificate_status_STAR___37275.invoke(certificate_authority.clj:1347)\n\tat clojure.core$partial$fn__5843.invoke(core.clj:2638)\n\tat clojure.core$map$fn__5866.invoke(core.clj:2755)\n\tat clojure.lang.LazySeq.sval(LazySeq.java:42)\n\tat clojure.lang.LazySeq.seq(LazySeq.java:51)\n\tat clojure.lang.Cons.next(Cons.java:39)\n\tat clojure.lang.RT.next(RT.java:713)\n\tat clojure.core$next__5386.invokeStatic(core.clj:64)\n\tat clojure.core$next__5386.invoke(core.clj:64)\n\tat schema.spec.collection$element_transformer$fn__2392.invoke(collection.clj:26)\n\tat schema.spec.collection.CollectionSpec$fn__2432.invoke(collection.clj:79)\n\tat clojure.core$comp$fn__5807.invoke(core.clj:2569)\n\tat puppetlabs.puppetserver.certificate_authority$fn__37322$get_certificate_statuses__37327.invoke(certificate_authority.clj:1380)\n\tat puppetlabs.services.ca.certificate_authority_core$certificate_statuses$fn__38853$fn__38856.invoke(certificate_authority_core.clj:306)\n\tat liberator.core$run_handler.invokeStatic(core.clj:176)\n\tat liberator.core$run_handler.invoke(core.clj:131)\n\tat liberator.core$handle_ok.invokeStatic(core.clj:224)\n\tat liberator.core$handle_ok.invoke(core.clj:224)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$multiple_representations_QMARK_.invokeStatic(core.clj:232)\n\tat liberator.core$multiple_representations_QMARK_.invoke(core.clj:232)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$put_to_existing_QMARK_.invokeStatic(core.clj:305)\n\tat liberator.core$put_to_existing_QMARK_.invoke(core.clj:305)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$post_to_existing_QMARK_.invokeStatic(core.clj:308)\n\tat liberator.core$post_to_existing_QMARK_.invoke(core.clj:308)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$method_patch_QMARK_.invokeStatic(core.clj:315)\n\tat liberator.core$method_patch_QMARK_.invoke(core.clj:315)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$method_delete_QMARK_.invokeStatic(core.clj:317)\n\tat liberator.core$method_delete_QMARK_.invoke(core.clj:317)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$if_modified_since_exists_QMARK_.invokeStatic(core.clj:337)\n\tat liberator.core$if_modified_since_exists_QMARK_.invoke(core.clj:337)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$if_none_match_exists_QMARK_.invokeStatic(core.clj:355)\n\tat liberator.core$if_none_match_exists_QMARK_.invoke(core.clj:355)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$if_unmodified_since_exists_QMARK_.invokeStatic(core.clj:375)\n\tat liberator.core$if_unmodified_since_exists_QMARK_.invoke(core.clj:375)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$if_match_exists_QMARK_.invokeStatic(core.clj:389)\n\tat liberator.core$if_match_exists_QMARK_.invoke(core.clj:389)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$exists_QMARK_.invokeStatic(core.clj:392)\n\tat liberator.core$exists_QMARK_.invoke(core.clj:392)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$processable_QMARK_.invokeStatic(core.clj:395)\n\tat liberator.core$processable_QMARK_.invoke(core.clj:395)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$encoding_available_QMARK_.invokeStatic(core.clj:399)\n\tat liberator.core$encoding_available_QMARK_.invoke(core.clj:399)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$accept_encoding_exists_QMARK_.invokeStatic(core.clj:416)\n\tat liberator.core$accept_encoding_exists_QMARK_.invoke(core.clj:416)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$accept_charset_exists_QMARK_.invokeStatic(core.clj:429)\n\tat liberator.core$accept_charset_exists_QMARK_.invoke(core.clj:429)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$accept_language_exists_QMARK_.invokeStatic(core.clj:443)\n\tat liberator.core$accept_language_exists_QMARK_.invoke(core.clj:443)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$media_type_available_QMARK_.invokeStatic(core.clj:453)\n\tat liberator.core$media_type_available_QMARK_.invoke(core.clj:453)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$accept_exists_QMARK_.invokeStatic(core.clj:456)\n\tat liberator.core$accept_exists_QMARK_.invoke(core.clj:456)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$is_options_QMARK_.invokeStatic(core.clj:473)\n\tat liberator.core$is_options_QMARK_.invoke(core.clj:473)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$valid_entity_length_QMARK_.invokeStatic(core.clj:476)\n\tat liberator.core$valid_entity_length_QMARK_.invoke(core.clj:476)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$known_content_type_QMARK_.invokeStatic(core.clj:479)\n\tat liberator.core$known_content_type_QMARK_.invoke(core.clj:479)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$valid_content_header_QMARK_.invokeStatic(core.clj:481)\n\tat liberator.core$valid_content_header_QMARK_.invoke(core.clj:481)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$allowed_QMARK_.invokeStatic(core.clj:484)\n\tat liberator.core$allowed_QMARK_.invoke(core.clj:484)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$authorized_QMARK_.invokeStatic(core.clj:487)\n\tat liberator.core$authorized_QMARK_.invoke(core.clj:487)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$malformed_QMARK_.invokeStatic(core.clj:490)\n\tat liberator.core$malformed_QMARK_.invoke(core.clj:490)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$method_allowed_QMARK_.invokeStatic(core.clj:493)\n\tat liberator.core$method_allowed_QMARK_.invoke(core.clj:493)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$uri_too_long_QMARK_.invokeStatic(core.clj:496)\n\tat liberator.core$uri_too_long_QMARK_.invoke(core.clj:496)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$known_method_QMARK_.invokeStatic(core.clj:499)\n\tat liberator.core$known_method_QMARK_.invoke(core.clj:499)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$service_available_QMARK_.invokeStatic(core.clj:502)\n\tat liberator.core$service_available_QMARK_.invoke(core.clj:502)\n\tat liberator.core$decide.invokeStatic(core.clj:87)\n\tat liberator.core$decide.invoke(core.clj:74)\n\tat liberator.core$initialize_context.invokeStatic(core.clj:504)\n\tat liberator.core$initialize_context.invoke(core.clj:504)\n\tat liberator.core$run_resource.invokeStatic(core.clj:595)\n\tat liberator.core$run_resource.invoke(core.clj:593)\n\tat puppetlabs.services.ca.certificate_authority_core$certificate_statuses$fn__38853.invoke(certificate_authority_core.clj:293)\n\tat compojure.response$fn__17209.invokeStatic(response.clj:33)\n\tat compojure.response$fn__17209.invoke(response.clj:21)\n\tat compojure.response$fn__17182$G__17177__17189.invoke(response.clj:6)\n\tat puppetlabs.services.ca.certificate_authority_core$fn__38865$web_routes__38870$fn__38871$fn__38874.invoke(certificate_authority_core.clj:316)\n\tat bidi.ring$fn__16996.invokeStatic(ring.cljc:25)\n\tat bidi.ring$fn__16996.invoke(ring.cljc:21)\n\tat bidi.ring$fn__16981$G__16976__16990.invoke(ring.cljc:16)\n\tat puppetlabs.comidi$make_handler$fn__18912.invoke(comidi.clj:245)\n\tat puppetlabs.trapperkeeper.authorization.ring_middleware$fn__25398$wrap_authorization_check__25403$fn__25404$fn__25405.invoke(ring_middleware.clj:290)\n\tat puppetlabs.ring_middleware.core$fn__22991$wrap_bad_request__23000$fn__23003$fn__23009.invoke(core.clj:170)\n\tat puppetlabs.puppetserver.ringutils$fn__35537$wrap_with_trapperkeeper_or_client_whitelist_authorization__35542$fn__35543$fn__35547.invoke(ringutils.clj:124)\n\tat puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n\tat puppetlabs.ring_middleware.core$fn__23089$wrap_uncaught_errors__23098$fn__23101$fn__23106.invoke(core.clj:216)\n\tat puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__35526.invoke(ringutils.clj:83)\n\tat puppetlabs.ring_middleware.core$fn__22739$wrap_response_logging__22744$fn__22745$fn__22746.invoke(core.clj:53)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__28680.invoke(jetty9_core.clj:433)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n\tat sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$fn__28259$normalize_uri_handler__28264$fn__28265$fn__28266.invoke(normalized_uri_helpers.clj:74)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)\n\tat org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:753)\n\tat org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n\tat com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n\tat org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:174)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:505)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)\n\tat java.lang.Thread.run(Thread.java:748)\n{code}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15424", "fixedVersions": [], "id": "15424", "issueType": "Bug", "key": "SERVER-2666", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4603761efb0069cd34da", "resolution": "Won't Fix", "resolutionDate": "2022-03-08T13:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Internal Server Error on GET /puppet-ca/v1/certificate_statuses/any_key", "timeSpent": "PT0S", "updated": "2022-03-08T13:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for reporting this! We'll look into getting that fixed.", "created": "2020-10-26T17:34:00.000000"}], "components": ["CLI"], "created": "2019-11-01T03:13:00.000000", "creator": "623a4603761efb0069cd34da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27c1f92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:ji"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Oct/20"}], "description": "*Puppet Version:* 6.10.1\n *Puppet Server Version:* 6.7.1\n *puppetserver-ca gem Version*: 1.4.0\n *OS Name/Version:* Ubuntu 16.04\n\nPuppetserver::Ca::Action::List.get_all_certs returns an empty array on API errors\n\n*Desired Behavior:*\n Puppetserver::Ca::Action::List.get_all_certs should fail/return an exception if CA API doesn't return a HTTP 200.\n\n*Actual Behavior:*\n If the CA API returns a HTTP error, puppetserver-ca logs an error but returns an empty array.\n\n[https://github.com/puppetlabs/puppetserver-ca-cli/blob/112a52b2d132ff05fd7104cb1e04434eff24ef36/lib/puppetserver/ca/certificate_authority.rb#L214]\n\n[https://github.com/puppetlabs/puppetserver-ca-cli/blob/112a52b2d132ff05fd7104cb1e04434eff24ef36/lib/puppetserver/ca/action/list.rb#L145]\n\n*Context*: We use the puppetserver-ca in a script which ensure that revoked nodes get deactivated in PuppetDB. As we haven't check for an empty array as a result of Puppetserver::Ca::Action::List.get_all_certs we deactivated *all* our nodes in PuppetDB.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "16057", "fixedVersions": [], "id": "16057", "issueType": "Bug", "key": "SERVER-2665", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4603761efb0069cd34da", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver::Ca::Action::List.get_all_certs shouldn't return empy array on error", "timeSpent": "PT0S", "updated": "2022-03-09T09:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Also pe-puppet-server-extensions", "created": "2019-10-31T09:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Can we do this now?", "created": "2020-11-16T12:39:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "sure", "created": "2020-11-16T13:33:00.000000"}], "components": [], "created": "2019-10-30T12:25:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32c56ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzy3s7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33095569570_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_41216140234"}], "description": "Per [~accountid:63d40628f6e1b543161789a7]'s audit in [this comment|https://github.com/puppetlabs/puppetserver/pull/2212#issuecomment-548037758] we can remove almost all of our jruby specific gems can be remove as they are (or are about to be) in the gem path shared between client and server.\n\nWhen removing these from our packages we will still need them from testing and development. ie, the dev-setup and install-test-gems.sh scripts will need to continue to install them. We may just want to move the list from resources to dev-resources.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16584", "fixedVersions": [], "id": "16584", "issueType": "Improvement", "key": "SERVER-2664", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T13:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove duplicate gem installations", "timeSpent": "PT0S", "updated": "2022-03-08T13:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So we only want to make this work for actual {{sign}} requests ({{PUT /certificate-status}} with {{desired-state: signed}} in the body), which means this won't work with autosigning. I think the {{generate}} command should probably warn if the {{ttl}} flag is specified and autosign was enabled. I see that in the installer we have a whitelist for certs we want to autosign. The new console cert should NOT be on this list. It should be created using {{generate}} with the {{ttl}} flag (which will create a CSR and then sign it) and then placed where the console expects it to be.\n\nI think this is the right behavior: the only way to make it work with autosigning is for the client to send the TTL along with the PUT for the certificate request, but if autosigning is turned off, then the specified TTL will be thrown away (we don't have a way to store that metadata alongside the saved CSR, and CSRs can't specify their own TTLs). I think it is more clear cut to have this be only available as an option to an explicit {{sign}} request. /cc [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330]", "created": "2019-11-20T14:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We should update the documentation https://github.com/puppetlabs/puppetserver/blob/master/documentation/http_certificate_status.md in the 6.x branches of puppetserver. We agreed to not update the equivalent docs in Puppet in 5.x, because the Ruby implementation of the API does not support this feature.", "created": "2019-11-25T09:59:00.000000"}], "components": [], "created": "2019-10-28T08:47:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@417f5e04"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke7b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When requesting that a certificate be signed, the `certificate-status` API endpoint can now accept a TTL in its body under the key `cert_ttl`, which will determine the validity period of the cert being signed. The unit defaults to seconds but can be specified with the same unit markers Puppet's settings understand.\n\nThis note can probably be combined with the one on PE-27489, to indicate that a per-cert TTL can be set either via the HTTP API directly, or via these CLI commands. "}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Nov/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_866519132_*|*_1_*:*_1_*:*_350908260_*|*_10007_*:*_1_*:*_403000477_*|*_3_*:*_1_*:*_604357473_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1068587262"}], "description": "h1. Story\n\nAs a user, I would like to generate certificates with a specific TTL to meet my security standards.\u00a0\u00a0\nh1. Background\u00a0\n\nWe need to add a --ttl flag to the puppetserver cli and setting it via the API is a requirement of that.\u00a0 See this comment for more details.\n\nhttps://puppet.atlassian.net/browse/PE-27489?focusedCommentId=696116&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-696116", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16054", "fixedVersions": ["SERVER 5.3.11", "SERVER 6.3.3", "SERVER 6.8.0"], "id": "16054", "issueType": "New Feature", "key": "SERVER-2678", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Done", "resolutionDate": "2019-12-05T10:36:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server CA API should allow a per-cert TTL", "timeSpent": "PT0S", "updated": "2020-01-09T14:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:613151bd-b161-4bc3-9e32-335fdcef4d89] is there a way to query PuppetDB to get information like this?\n\n[~accountid:5bdb84d116f04e0f980e7970] [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] is there any desire to also include any counts in here, or is the other count data we're already collecting sufficient? Is there a different format you'd prefer the data to be in?", "created": "2019-10-25T16:47:00.000000"}], "components": [], "created": "2019-10-25T16:46:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f54a223"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzy0q7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33511981867_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_41216105955"}], "description": "We currently have metrics reporting what module classes are used in a deployment, along with how many hosts they're used on. We also have metrics for what agent OSes are present in what quantities.\n\nWe would like to start collecting data on which module classes are applied on which OSes, which would sort of correlate these two pieces of data.\n\nMaybe something like\n{code}\n{ agent_os1 : { class1, class2, class3...},\n  agent_os2 : { class5, class17, class100...} }\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15423", "fixedVersions": [], "id": "15423", "issueType": "Task", "key": "SERVER-2663", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T13:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Correlate module class usage with agent OS", "timeSpent": "PT0S", "updated": "2022-03-08T13:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The root cause of this behavior appears to be the {{revoke}} and {{sign}} methods of the jvm-ssl-utils:\n\n  - https://github.com/puppetlabs/jvm-ssl-utils/blob/3.0.4/src/clojure/puppetlabs/ssl_utils/core.clj#L517-L533\n  - https://github.com/puppetlabs/jvm-ssl-utils/blob/3.0.4/src/clojure/puppetlabs/ssl_utils/core.clj#L460-L490\n\nThese methods only take the PublicKey of the CA as an argument rather than the Certificate. The Authority Key Identifier is computed from the PublicKey by the revoke method, and is always type 1:\n\n  - https://github.com/puppetlabs/jvm-ssl-utils/blob/3.0.4/src/java/com/puppetlabs/ssl_utils/SSLUtils.java#L367-L368\n\nI'm not quite sure how the sign method is computing it, the logic appears to be down in the X509v3CertificateBuilder class:\n\nhttps://github.com/puppetlabs/jvm-ssl-utils/blob/3.0.4/src/java/com/puppetlabs/ssl_utils/SSLUtils.java#L225-L231", "created": "2019-10-21T10:56:00.000000"}, {"author": "70121:17943255-5ba0-4816-b375-a092f4b59509", "body": "I'm not 100% sure my issue is the same here, but here are my details.\u00a0 I am using a Private CA with AWS Certificate Manager.\u00a0 Centos 7 with Puppetserver 6.7.1 from Puppet's yum repo.\n\n*Generate private key, request cert, and get cert chain and root CA crl:*\n\n\u00a0\n{code:java}\nopenssl req -config certgen.cnf -nodes -new -newkey rsa:2048 -days 3650 -keyout key.pem -out csr.pem\n\ncert_arn=$(aws acm-pca issue-certificate --certificate-authority-arn \"$CA_ARN\" --template-arn arn:aws:acm-pca:::template/SubordinateCACertificate_PathLen0/V1 --csr \"file:///$(pwd)/csr.pem\" --signing-algorithm \"SHA256WITHRSA\" --validity Value=3650,Type=\"DAYS\" --idempotency-token \"$RANDOM\" --region \"$REGION\" | jq -r .CertificateArn)\n\naws acm-pca get-certificate --certificate-authority-arn \"$CA_ARN\" --certificate-arn \"$cert_arn\" --region \"$REGION\" --output text | tr '\\t' '\\n' > certchain.pem\n\nca_hash=$(cut -d':' -f6 <<<$CA_ARN | cut -d'/' -f2)\n\naws s3 cp \"s3://${CRL_BUCKET}/crl/${ca_hash}.crl\" raw.crl\n\nopenssl crl -inform DER -in raw.crl -outform PEM -out crl.pem{code}\n(I wasn't originally doing the template when issuing the cert.\u00a0 \u00a0That allows the server to successfully issue itself a cert.)\n\n\u00a0\n\n*Install the stuff generated above on the server*\n\n\u00a0\n{code:java}\npuppet# puppetserver ca import --private-key key.pem --cert-bundle certchain.pem --crl-chain crl.pem --certname puppet.us-west-1.mydomain\n{code}\n\u00a0\n\n*Test local agent against server*\n\n\u00a0\n{code:java}\n# puppet agent --test\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Caching catalog for puppet.us-west-1.mydomain\nInfo: Applying configuration version '1571752736'\nNotice: Applied catalog in 0.01 seconds\n{code}\n\u00a0\n\n*Test remote agent against server*\n\n\u00a0\n{code:java}\n# puppet agent --test\nInfo: Downloaded certificate for ca from puppet.us-west-1.mydomain\nInfo: Downloaded certificate revocation list for ca from puppet.us-west-1.mydomain\nInfo: Creating a new RSA SSL key for relay.us-west-1.mydomain\nInfo: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml\nInfo: Creating a new SSL certificate request for relay.us-west-1.mydomain\nInfo: Certificate Request fingerprint (SHA256): 05:4B:88:15:FD:A1:51:94:52:BA:DF:4C:D2:F4:AE:A5:F9:CD:53:2E:B0:C6:BD:02:08:AC:94:39:3D:02:AF:4F\nInfo: Certificate for relay.us-west-1.mydomain has not been signed yet\nCouldn't fetch certificate from CA server", "created": "2019-10-22T08:20:00.000000"}, {"author": "70121:64260ba9-b0ac-48da-a645-42085c6d8d09", "body": "There is easier way to issue intermediate CA key/cert pair using vault-only. It mostly based on this doc: [https://www.vaultproject.io/docs/secrets/pki/index.html#setting-up-intermediate-ca.]\u00a0The only difference is to use 'generate/external' endpoint. It's explained a bit better in HTTP API doc (type = external): [https://www.vaultproject.io/api/secret/pki/index.html#generate-intermediate.]\u00a0In that case vault write will return private key in reply. Below is quick and dirty example.\n\n1. Generate intermediate CA & export private key and CSR\n{code}\nvault write pki-ca-puppet/intermediate/generate/exported common_name=\"Puppet CA\" format=pem key_bits=4096 exclude_cn_from_sans=true\nKey                 Value\n---                 -----\ncsr                 -----BEGIN CERTIFICATE REQUEST-----\n[...]\n-----END CERTIFICATE REQUEST-----\nprivate_key         -----BEGIN RSA PRIVATE KEY-----\n[...]\n-----END RSA PRIVATE KEY-----\nprivate_key_type    rsa\n{code}\n\n2. Copy and store CSR & private keys to csr.pem and key.pem.\n\n3. Sign intermediate CA CSR by root CA (using @csr.pem to read from file)\n{code}\nvault write pki-ca-root/root/sign-intermediate csr=@csr.pem format=pem_bundle ttl=43800h\nKey              Value\n---              -----\ncertificate      -----BEGIN CERTIFICATE-----\n[...]\n-----END CERTIFICATE-----\nexpiration       1728205043\nissuing_ca       -----BEGIN CERTIFICATE-----\n[...]\n-----END CERTIFICATE-----\nserial_number    36:7c:84:76:90:51:de:ad:be:ef:c5:fb:65:83:c2:51:7c:4e:07:b8\n{code}\n\n4. Copy and store certificate into crt.pem\n\n5. Store signed intermediate CA certificate into PKI\n{code}\nvault write pki-ca-puppet/intermediate/set-signed certificate=@crt.pem\n{code}\n\n6. Configure URLs (not actually required within this task scope)\n{code}\nvault write pki-ca-puppet/config/urls issuing_certificates=\"https://vault.example.com/v1/pki-ca-puppet/ca\" crl_distribution_points=\"https://vault.example.com/v1/pki-ca-puppet/crl\"\n{code}\n\n7. Create agent & master PKI roles (not actually required within this task scope)\n{code}\nvault write pki-ca-puppet/roles/agent allowed_domains=example.com allow_subdomains=true max_ttl=43800h\nvault write pki-ca-puppet/roles/master allowed_domains=\"example.com,puppet.tld\" allow_subdomains=true max_ttl=43800h\n{code}\n\n8. Configure CRL expiration period. I did it via vault web UI. There is HTTP API https://www.vaultproject.io/api/secret/pki/index.html#set-crl-configuration. There should be a way to do it via CLI but I didn't tried. Default CRL expiration period is 72h which is not enough for Puppet CA as I see.\n\n9. Fetch root & intermediate CA CRLs. I did it by curl.\n{code}\n(curl -s https://vault.example.com/v1/pki-ca-root/crl/pem", "created": "2019-10-24T03:53:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "FWIW, I think this issue could be avoided if we created an Authority Key Identifier as a directoryName:\n\n{noformat}\nX509v3 Authority Key Identifier: \n  DirName:/CN=Puppet CA: slimmer-radii.xxx\n  serial:01\n{noformat}\n\nThis is what puppetserver does for its self-signed CA when it starts for the first time, but not when running {{puppetserver ca setup}} or for certs that the CA issues.\n\nThat said, I think using a keyid is preferred based on the [RFC5280|https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.1], \"The value of the keyIdentifier field SHOULD be derived from the public key used to verify the certificate's signature or a method that generates unique values.\"\n\nAlso heads up that [RFC7093|https://datatracker.ietf.org/doc/html/rfc7093] defines additional ways of generating key identifiers (beyond the 2 mentioned in this ticket)!", "created": "2021-11-01T18:38:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This isn't going to make this round of releases, but we're hoping to get it into the next set.", "created": "2022-01-11T11:10:00.000000"}, {"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "The next round of releases is 7.x only for March. This will be released in the 6.x branch also in April.", "created": "2022-03-10T13:24:00.000000"}], "components": ["Certificate Authority"], "created": "2019-10-21T10:45:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72c825a6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0u93"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously, puppetserver would always compute a type 1 key identifier based on the public key of the certificate authority; this is incompatible in situations where puppetserver imports pre-made certificates that use a type 2 key identifier, such as when using HashiCorp's Vault or AWS ACM.\n\nNow, Puppetserver will copy the subject key identifier from the ca certificate instead of computing a type 1 key identifier; this will allow for type 2 identifiers and future key types on the CA. With this change, Puppetserver can now use a intermediate certificate authority signed by Vault or AWS ACM."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "43882,45888"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_93790595_*|*_1_*:*_1_*:*_2744547_*|*_10007_*:*_1_*:*_580499311_*|*_3_*:*_1_*:*_701839994_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11502831721_*|*_10005_*:*_1_*:*_62382760335"}], "description": "Multiple types of key identifier exist, but Puppet server always uses type 1.\nThis behavior makes the CA unable to properly use intermediate CA certificates\nissued with type 2 identifiers --- such as those created by Vault PKI and\nAWS ACM.\n\nDuring validation of items signed by a CA, such as Certificates or CRLs,\nthe Authority Key Identifier field of the signed item is matched against the\nSubject Key Identifier field of the CA cert. These matches create the links\nin a chain along which validation will proceed to verify signatures, dates,\nauthorized uses, etc. If the key identifiers fail to match, most software\nwill throw errors like \"path building failed\" or \"issuer cannot be found\".\n\n[RFC 5280|[https://www.rfc-editor.org/rfc/rfc5280.html#section-4.2.1.2]] defines two types of key identifier:\n\n\u00a0- Type 1: A 160 bit SHA-1 hash of the subjectPublicKey of a certificate.\n\n\u00a0- Type 2: The four-bit string \\{{0100}} (which smells like a version number that\n\u00a0\u00a0\u00a0will increment in the future) followed by 60 bits of the SHA-1 hash of\n\u00a0\u00a0\u00a0the subjectPublicKey of a certificate.\n\nPuppet Server CA always computes a type 1 key identifier from the subjectPublicKey\nof its CA certificate when populating the Authority Key identifier field of any\ncertificate or CRL that it signs. This is incorrect behavior when the CA\noperates as an intermediate and will result in validation failures if the\nintermediate CA certificate was not issued with a type 1 identifier. Instead of\ncomputing a type 1 identifier for each operation, the CA should copy the value\nof the Subject Key Identifier field that was signed into it's certificate. This\nwould make the CA compatible with type 1, type 2, or other identifier types\nstandardized in the future.\n\n\nh2. Reproduction Case\n\n\u00a0\u00a0- Install Puppet Server 6 on CentOS 7:\n\n{code:bash}\nyum install -y\u00a0[http://yum.puppetlabs.com/puppet6-release-el-7.noarch.rpm]\nyum install -y puppetserver\n{code}\n\n\n\u00a0\u00a0- Install Vault and configure it to run in dev mode as a service:\n\n{code:bash}\nsource /etc/profile.d/puppet-agent.sh\npuppet module install puppet/archive --version 4.3.0\n\npuppet apply <<EOF\n# Quick and very dirty Vault installation.\n# Don't ever use this anywhere near production ;)\npackage { 'unzip':\n\u00a0\u00a0ensure => 'present',\n}\n\narchive { '/tmp/vault_1.2.3_linux_amd64.zip':\n\u00a0\u00a0source => '[https://releases.hashicorp.com/vault/1.2.3/vault_1.2.3_linux_amd64.zip&#39;,|https://releases.hashicorp.com/vault/1.2.3/vault_1.2.3_linux_amd64.zip',]\n\u00a0\u00a0extract => true,\n\u00a0\u00a0extract_path => '/usr/local/sbin',\n\u00a0\u00a0creates => '/usr/local/sbin/vault',\n\u00a0\u00a0require => Package['unzip']\n}\n\nfile { 'vault-dev.service':\n\u00a0\u00a0path => '/etc/systemd/system/vault-dev.service',\n\u00a0\u00a0content => @(EOC),\n\u00a0\u00a0[Unit]\n\u00a0\u00a0Description=Vault development server\n\u00a0\u00a0After=network.target\n\n\u00a0\u00a0[Service]\n\u00a0\u00a0Type=simple\n\u00a0\u00a0ExecStart=/usr/local/sbin/vault server -dev -dev-listen-address=0.0.0.0:8200\n\u00a0\u00a0| EOC\n}\n\nexec { 'refresh systemd':\n\u00a0\u00a0command => '/usr/bin/systemctl daemon-reload',\n\u00a0\u00a0refreshonly => true,\n\u00a0\u00a0subscribe => File['vault-dev.service'],\n}\n\nservice { 'vault-dev':\n\u00a0\u00a0ensure => running,\n\u00a0\u00a0subscribe => Exec['refresh systemd'],\n}\nEOF\n{code}\n\n\u00a0\u00a0- Configure Vault PKI with a root certificate:\n\n{code:bash}\nexport VAULT_ADDR='[http://127.0.0.1:8200&#39;|http://127.0.0.1:8200'/]\n\n# Ref:\u00a0[https://www.vaultproject.io/docs/secrets/pki/index.html]\nvault secrets enable pki\nvault secrets tune -max-lease-ttl=8760h pki\nvault write pki/root/generate/internal \\\n\u00a0\u00a0common_name=root-ca.puppet.test \\\n\u00a0\u00a0ttl=8760h\n{code}\n\n\u00a0\u00a0- Configure Puppet Server with an intermediate CA issued by Vault\n\n{code:bash}\nmkdir intermediate_ca && cd intermediate_ca\ncat <<EOF > openssl.cnf\n[ req ]\nprompt = no\n\ndistinguished_name = req_distinguished_name\nreq_extensions = v3_req\n\n[ req_distinguished_name ]\ncommonName = PuppetCA\n\n[ v3_req ]\nsubjectAltName = DNS:intermediate-ca.puppet.test\nEOF\n\n/opt/puppetlabs/puppet/bin/openssl req -config openssl.cnf \\\n\u00a0\u00a0-nodes -new -newkey rsa:4096 \\\n\u00a0\u00a0-keyout puppet_ca_key.pem \\\n\u00a0\u00a0-out puppet_ca_csr.pem\n\nexport VAULT_ADDR='[http://127.0.0.1:8200&#39;|http://127.0.0.1:8200'/]\nvault write pki/root/sign-intermediate \\\n\u00a0\u00a0csr=@puppet_ca_csr.pem \\\n\u00a0\u00a0format=pem_bundle \\\n\u00a0\u00a0ttl=4380h > ca-bundle.pem\n\nvault read /pki/cert/crl > crls.pem\n\npuppetserver ca import --cert-bundle ca-bundle.pem --crl-chain crls.pem --private-key puppet_ca_key.pem\n{code}\n\n\u00a0\u00a0- Start Puppet Server and run the agent to verify everything works:\n\n{code:bash}\npuppet config set server $(hostname -f)\nsystemctl start puppetserver\npuppet agent -t\n{code}\n\n\u00a0\u00a0- Print the Authority Key Identifier for the CRL and the Subject Key Identifier for the intermediate CA:\n\n{code:bash}\n/opt/puppetlabs/puppet/bin/openssl crl \\\n\u00a0\u00a0-in $(puppet config print hostcrl) \\\n\u00a0\u00a0-text -noout | grep --after 1 'Authority Key'\n\n/opt/puppetlabs/puppet/bin/openssl x509 \\\n\u00a0\u00a0-in $(puppet config print localcacert) \\\n\u00a0\u00a0-text -noout | grep --after 1 'Subject Key'\n{code}\n\n\u00a0\u00a0- Generate and revoke a test certificate:\n\n{code:bash}\npuppetserver ca generate --certname foo.puppet.test\npuppetserver ca clean --certname foo.puppet.test\n{code}\n\n\u00a0\u00a0- Check that agent still works and the Authority Key Identifier has\n\u00a0\u00a0\u00a0\u00a0not changed:\n\n{code:bash}\npuppet agent -t\n\n/opt/puppetlabs/puppet/bin/openssl crl \\\n\u00a0\u00a0-in $(puppet config print hostcrl) \\\n\u00a0\u00a0-text -noout | grep --after 1 'Authority Key'\n{code}\n\nh3. Outcome\n\nPuppet fails with a missing CRL error:\n\n{noformat}\n[[root@sx5txzicd4q58j6|mailto:root@sx5txzicd4q58j6]\u00a0intermediate_ca]# puppet agent -t\n\nError: The CRL issued by 'CN=PuppetCA' is missing\nError: Could not run: The CRL issued by 'CN=PuppetCA' is missing\n{noformat}\n\nThe Authority Key Identifier has changed from what it was before the run,\nwhich matched the Subject Key Identifier of the intermediate CA cert:\n\n{noformat}\n[[root@sx5txzicd4q58j6|mailto:root@sx5txzicd4q58j6]\u00a0intermediate_ca]# /opt/puppetlabs/puppet/bin/openssl crl -in $(puppet config print hostcrl) -text -noout | grep -A1 'Authority Key'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0X509v3 Authority Key Identifier:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0keyid:CC:25:BE:33:52:7A:65:53:56:AE:C3:F2:4E:5C:0B:91:90:18:3B:59\n\n[[root@sx5txzicd4q58j6|mailto:root@sx5txzicd4q58j6]\u00a0intermediate_ca]# /opt/puppetlabs/puppet/bin/openssl x509 -in $(puppet config print localcacert) -text -noout |grep -A1 'Subject Key'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0X509v3 Subject Key Identifier:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CC:25:BE:33:52:7A:65:53:56:AE:C3:F2:4E:5C:0B:91:90:18:3B:59\n{noformat}\n\nTo:\n\n{noformat}\n[[root@sx5txzicd4q58j6|mailto:root@sx5txzicd4q58j6]\u00a0intermediate_ca]# /opt/puppetlabs/puppet/bin/openssl crl -in $(puppet config print hostcrl) -text -noout | grep -A1 'Authority Key'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0X509v3 Authority Key Identifier:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0keyid:38:C9:63:F9:57:35:08:E7:99:44:07:B3:87:F5:9D:C4:03:CC:B4:03\n{noformat}\n\n\nh3. Expected Outcome\n\nAgent runs continue to work after revocation and the Authority Key Identifier\nin the updated CRL matches the \"PuppetCA\" intermediate certificate.\n\nh3. Additional Notes\n\nThe CRL makes an easy demonstration that uses only one node. However, any external agent node added to the server will fail with validation errors:\n\n{noformat}\n[[root@k9hjxz663xl96e1|mailto:root@k9hjxz663xl96e1]\u00a0~]# puppet agent -t\nInfo: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml\nInfo: Creating a new SSL certificate request for k9hjxz663xl96e1.delivery.puppetlabs.net\nInfo: Certificate Request fingerprint (SHA256): 26:D6:2B:33:1F:41:2F:6B:95:81:90:65:7C:A7:6E:99:9C:4F:0F:98:C0:AD:1C:61:53:80:04:81:56:BD:38:8D\nInfo: Downloaded certificate for k9hjxz663xl96e1.delivery.puppetlabs.net from dq4a9q8qcg1d68w.delivery.puppetlabs.net\nWarning: The issuer 'CN=PuppetCA' of certificate 'CN=k9hjxz663xl96e1.delivery.puppetlabs.net' cannot be found locally\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: SSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown\nInfo: Retrieving pluginfacts\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for\u00a0[puppet:///pluginfacts:]\u00a0SSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown\n...\n{noformat}", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "16267", "fixedVersions": ["SERVER 6.19.0", "SERVER 7.6.1"], "id": "16267", "issueType": "Bug", "key": "SERVER-2662", "labels": ["docs_reviewed", "jira_escalated"], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2022-03-10T12:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server CA always creates type 1 authority key identifiers", "timeSpent": "PT0S", "updated": "2022-03-28T16:02:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is a good point, eventually we were hoping to move agents to using this version of the endpoint, and we will need this ability then. \n\nAs of right now, we don't really support this workflow, and it's entirely untested. This endpoint is used by other services (not agents) for compiling catalogs, and these need to be able to request a catalog for any node, so it hasn't come up yet.", "created": "2020-11-16T12:41:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this feature, for us to actively work on this feature.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T13:34:00.000000"}], "components": [], "created": "2019-10-14T14:09:00.000000", "creator": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d748888"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2918"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxmm7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Nov/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_34471925308_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_41215994610"}], "description": "As far as I can tell it is not possible to enforce that the API endpoint /puppet/v4/catalog only allows nodes to request their own catalog, because the requested catalog (certname parameter) is configured in the request body which is not accessible from the authorization configuration in the auth.conf.\n\nAs I want every node to request the log messages generated on the puppetserver during their catalog generation, this is not securely possible without a way to enforce, that only their own catalog can be requested.", "epicLinkSummary": "V4 Catalog Endpoint Improvements", "estimate": "PT0S", "externalId": "16583", "fixedVersions": [], "id": "16583", "issueType": "Improvement", "key": "SERVER-2659", "labels": [], "originalEstimate": "PT0S", "parent": "14909", "parentSummary": "V4 Catalog Endpoint Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "resolution": "Won't Do", "resolutionDate": "2022-03-08T13:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Permit nodes to only access there own catalog via /puppet/v4/catalog", "timeSpent": "PT0S", "updated": "2022-03-08T13:34:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think this is expected behavior... Puppet's fact indirection relies on that file to determine where to get facts. Is there a reason you can't configure routes.yaml?", "created": "2020-11-16T12:43:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0will try to repro this failure mode and update with findings.", "created": "2020-11-24T12:23:00.000000"}, {"author": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "body": "The report is from over a year so my memory is not that good. But if I remember correctly it took me a long time to get it working and I thought that the v3 catalog api works without the pubbetdb configured in the routes.yaml file so it would be nice if the v4 catalog api works the same way. Now I think the reason for the routes.yaml configuration requirement of the v4 catalog api is that the v3 catalog api does not support a call without facts as parameter, but I could be mistaken.\n\nWhat should be improved in my opinion at least is the error message \"PuppetDB not configured\", because it confused me more than it did help me and a pointer to the routes.yaml configuration would be more helpful.{color:#000000}\n{color}", "created": "2020-11-24T15:00:00.000000"}], "components": [], "created": "2019-10-14T13:43:00.000000", "creator": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7943ca73"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxmjr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Nov/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37163398405_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_38526135083"}], "description": "*Puppet Version: 6.10*\n *Puppet Server Version: 6.7*\n *OS Name/Version: Ubuntu 18.04*\n\nThe API Endpoint /puppet/v4/catalog can not collect facts from puppetdb if no routes.yaml is present.\n\n*Desired Behavior:*****\n\nThe API Endpoint /puppet/v4/catalog should return the catalog without providing facts explicitly if the puppetdb is configured to store facts.\n\n*Actual Behavior:*\n\nThe API Endpoint /puppet/v4/catalog returns am error message, that the puppetdb is not configured:\n{noformat}\n> curl -s --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem --cert /etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem --key /etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem -X POST -H 'Content-Type:application/json' -d '{ \"certname\": \"'$(hostname -f)'\", \"persistence\": { \"facts\": false, \"catalog\": false }, \"environment\": \"production\", \"options\": { \"capture_logs\": true, \"log_level\": \"debug\" } }\"' https://puppet:8140/puppet/v4/catalog\n\nInternal Server Error: org.jruby.exceptions.RuntimeError: (Error) PuppetDB not configured, please provide facts with your catalog request.{noformat}\nIt works as expected if the routes.yaml is configured like this:\n{code:java}\n---\nmaster:\n  facts:\n    terminus: puppetdb\n{code}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14820", "fixedVersions": [], "id": "14820", "issueType": "Bug", "key": "SERVER-2658", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "resolution": "Won't Fix", "resolutionDate": "2022-03-08T13:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "API Endpoint /puppet/v4/catalog can not collect facts from puppetdb with no routes.yaml", "timeSpent": "PT0S", "updated": "2022-03-08T13:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for catching this!", "created": "2020-11-16T12:43:00.000000"}], "components": [], "created": "2019-10-14T12:07:00.000000", "creator": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d997d86"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2918"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:96"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Nov/20"}], "description": "The API Endpoint /puppet/v4/catalog can be configured to return log messages generated on the puppetserver. But this only works if a catalog is successfully generated. If the catalog generation fails only the error message regarding the failed catalog generation is returned and no log messages generated during the attempt to generate the catalog are returned.", "epicLinkSummary": "V4 Catalog Endpoint Improvements", "estimate": "PT0S", "externalId": "17495", "fixedVersions": [], "id": "17495", "issueType": "Bug", "key": "SERVER-2657", "labels": [], "originalEstimate": "PT0S", "parent": "14909", "parentSummary": "V4 Catalog Endpoint Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "/puppet/v4/catalog returns no log messages on catalog error", "timeSpent": "PT0S", "updated": "2022-03-09T09:24:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "This is breaking the \"Network Automation in PE\" feature and needs to get fixed for lovejoy.\n\ncc [~accountid:5c2ff2fd81c1261667adfa1d] [~accountid:557058:8db25e7a-4bdb-4fe2-af6b-f0a9bc714e12] [~accountid:557058:4786f794-5167-4041-b3c0-deb1e8ba3438]", "created": "2019-10-10T03:58:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] appreciate any thoughts here.", "created": "2019-10-10T08:36:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "IIUC, we don't support arbitrary Symbols as values from Ruby, though we do attempt to coerce any Symbols we find as the keys to Hashes, since that's a really common use case.\n\nIs this breaking that use case, or is some data that's not a Hash key coming in as a Symbol?", "created": "2019-10-10T09:10:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "from the error message, I assume that the {{:host}} symbol is coming from the value of {{connection_info_order}}, which is an array of values-that-were-hash-keys.\n\nWhat are the reasons not to transform every symbol that you find into a string when rendering to JSON? This is what ruby's json library does.", "created": "2019-10-10T09:18:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The Ruby->Clojure API isn't necessarily for objects going directly to JSON, they may be other objects that shouldn't be stringified before being handled by clojure code.\n\nPuppet Server also isn't a general purpose Ruby hosting service, it's built to handle specific interactions with Puppet and leverage Puppet's conventions (which I think has been a source of pain in this integration).\n\nWe're not going to write a serializer for {{RubySymbol}} Java objects and install it in JacksonXML at this point in the dev cycle. I think the solution at this point is to find whatever the offending values are and call {{to_s}} on them in Ruby. Should we do that in Puppet Server or the Resource API?", "created": "2019-10-10T09:31:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "The Resource API should remain consistent in having elements of the {{connection_info_order}} array be valid keys into the {{connection_info}} hash, which are (by convention) symbols. Therefore I would appreciate a solution local to puppetserver.", "created": "2019-10-10T09:38:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "In our testing, the PR attached to the ticket resolves the issues.", "created": "2019-10-11T12:20:00.000000"}, {"author": "557058:8db25e7a-4bdb-4fe2-af6b-f0a9bc714e12", "body": "This landed in PE build 2019.2.0-rc10-4-g95822f8", "created": "2019-10-11T15:30:00.000000"}], "components": [], "created": "2019-10-10T03:53:00.000000", "creator": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a4906cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxjqf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22292632_*|*_10007_*:*_1_*:*_215986333_*|*_3_*:*_1_*:*_5649076_*|*_5_*:*_1_*:*_0"}], "description": "{code}\n[root@az8ehyqxs1yg3pj ~]# puppet --version\n6.10.1\n[root@az8ehyqxs1yg3pj ~]# puppetserver --version\npuppetserver version: 2019.2.0.49\n[root@az8ehyqxs1yg3pj ~]# ls\npuppet-enterprise-2019.2.0-rc9-339-ge31ce0b-el-7-x86_64\n[root@az8ehyqxs1yg3pj ~]# \n{code}\n\n\nRepro:\n{code}\n[root@az8ehyqxs1yg3pj ~]# puppet module list\n/etc/puppetlabs/code/environments/production/modules\n\u251c\u2500\u2500 puppetlabs-cisco_ios (v1.1.0)\n[...]\n[root@az8ehyqxs1yg3pj ~]# curl -k    --cert $(puppet config print --section main hostcert)    --key $(puppet config print --section main hostprivkey)    --cacert $(puppet config print --section main localcacert)    \"https://$(hostname -f):8140/puppet/v3/environment_transports?environment=production\"; echo\nInternal Server Error: com.fasterxml.jackson.core.JsonGenerationException: Cannot JSON encode object of class: class org.jruby.RubySymbol: host\n[root@az8ehyqxs1yg3pj ~]# \n{code}\n\nstacktrace:\n{code}\n==> /var/log/puppetlabs/puppetserver/puppetserver.log <==\n2019-10-10T09:20:56.666Z ERROR [qtp1957007695-42] [p.r.core] Internal Server Error: com.fasterxml.jackson.core.JsonGenerationException: Cannot JSON encode object of class: class org.jruby.RubySymbol: host\n\tat cheshire.generate$generate.invokeStatic(generate.clj:152)\n\tat cheshire.generate$generate.invoke(generate.clj:116)\n\tat cheshire.generate$generate.invokeStatic(generate.clj:130)\n\tat cheshire.generate$generate.invoke(generate.clj:116)\n\tat cheshire.generate$generate.invokeStatic(generate.clj:122)\n\tat cheshire.generate$generate.invoke(generate.clj:116)\n\tat cheshire.generate$generate.invokeStatic(generate.clj:130)\n\tat cheshire.generate$generate.invoke(generate.clj:116)\n\tat cheshire.generate$generate.invokeStatic(generate.clj:122)\n\tat cheshire.generate$generate.invoke(generate.clj:116)\n\tat cheshire.core$generate_string.invokeStatic(core.clj:74)\n\tat cheshire.core$generate_string.invoke(core.clj:49)\n\tat cheshire.core$generate_string.invokeStatic(core.clj:55)\n\tat cheshire.core$generate_string.invoke(core.clj:49)\n\tat puppetlabs.ring_middleware.utils$fn__20504$json_response__20509$fn__20510.invoke(utils.clj:36)\n\tat puppetlabs.ring_middleware.utils$fn__20504$json_response__20509.invoke(utils.clj:29)\n\tat puppetlabs.services.master.master_core$fn__29540$make_cacheable_handler__29547$fn__29548$fn__29549.invoke(master_core.clj:767)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_jruby_instance$fn__28310.invoke(jruby_request.clj:48)\n\tat puppetlabs.services.master.master_core$fn__29456$wrap_with_cache_check__29463$fn__29464$fn__29465.invoke(master_core.clj:706)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_environment_validation$fn__28353.invoke(jruby_request.clj:119)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_error_handling$fn__28306.invoke(jruby_request.clj:33)\n\tat puppetlabs.services.master.master_core$fn__29944$v3_clojure_routes__29951$fn__29952$fn__29965.invoke(master_core.clj:1069)\n\tat ring.middleware.params$wrap_params$fn__16888.invoke(params.clj:64)\n\tat puppetlabs.trapperkeeper.authorization.ring_middleware$fn__50707$wrap_authorization_check__50712$fn__50713$fn__50714.invoke(ring_middleware.clj:290)\n\tat puppetlabs.ring_middleware.core$fn__23665$wrap_bad_request__23674$fn__23677$fn__23683.invoke(core.clj:170)\n\tat puppetlabs.ring_middleware.core$fn__23763$wrap_uncaught_errors__23772$fn__23775$fn__23780.invoke(core.clj:216)\n\tat puppetlabs.ring_middleware.core$fn__23384$wrap_request_logging__23389$fn__23390$fn__23392.invoke(core.clj:47)\n\tat puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n\tat puppetlabs.ring_middleware.core$fn__23413$wrap_response_logging__23418$fn__23419$fn__23420.invoke(core.clj:53)\n\tat puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__24681.invoke(ringutils.clj:83)\n\tat bidi.ring$fn__17670.invokeStatic(ring.cljc:25)\n\tat bidi.ring$fn__17670.invoke(ring.cljc:21)\n\tat bidi.ring$fn__17655$G__17650__17664.invoke(ring.cljc:16)\n\tat puppetlabs.comidi$make_handler$fn__19586.invoke(comidi.clj:245)\n\tat puppetlabs.metrics.http$fn__28701$wrap_with_request_metrics__28706$fn__28710$fn__28712$fn__28713$fn__28714.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$fn__28701$wrap_with_request_metrics__28706$fn__28710$fn__28712$fn__28713.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$fn__28701$wrap_with_request_metrics__28706$fn__28710$fn__28712.invoke(http.clj:148)\n\tat puppetlabs.comidi$fn__19651$wrap_with_route_metadata__19656$fn__19657$fn__19659.invoke(comidi.clj:332)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__44872.invoke(jetty9_core.clj:433)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$fn__44451$normalize_uri_handler__44456$fn__44457$fn__44458.invoke(normalized_uri_helpers.clj:74)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)\n\tat org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:753)\n\tat org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n\tat com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n\tat org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:174)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:505)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:427)\n\tat org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:321)\n\tat org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)\n\tat java.lang.Thread.run(Thread.java:748)\n{code}\n\n*Desired Behavior:*\n\nSerialise ruby symbols as strings.\n\n*Actual Behavior:*\n\nstacktrace.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16582", "fixedVersions": ["SERVER 6.7.1"], "id": "16582", "issueType": "Bug", "key": "SERVER-2656", "labels": ["impacts_content"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "resolution": "Fixed", "resolutionDate": "2019-10-12T23:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JSON serialisation error in /puppet/v3/environment_transports", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ba5ecb63-e127-4c90-834b-c71fdc004e8c", "body": "Maybe we do this in jvm-ssl-utils? It would stop any consumer of that library from doing known-bad things.", "created": "2019-10-07T15:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'd be happy to see the difference in exceptions happen there, though this made me realize that we should probably put some management of this into our ruby cli tool as well (so regardless, I think there's some more work for us to do here soon). ", "created": "2019-10-07T16:05:00.000000"}], "components": [], "created": "2019-10-07T15:47:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2599bf78"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxhq7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_264031397_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76022286859"}], "description": "In at least {{initialize-master-ssl!}} we create an x.509 KeyPair. When doing so we assume our underlying SSL library will check the validity of the key length for us. However that error handling changes between ways that we initialize the keys and is absolutely terrible when using FIPS. We should provide early keylength checking in our {{validate-settings!}} functionality as well as in the {{puppetserver-ca}} cli tool, and unify the kinds of error descriptions between those two tools.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16862", "fixedVersions": [], "id": "16862", "issueType": "Improvement", "key": "SERVER-2655", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T13:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tighten up keylength checking", "timeSpent": "PT0S", "updated": "2022-03-08T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "These were merged into Server and promoted into PE. We're currently iterating on getting the testing infrastructure up, however initial manual tests show Server working. Regardless the changes have been taken up.", "created": "2019-10-12T11:24:00.000000"}], "components": [], "created": "2019-10-07T12:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68836ff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxhkv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server may no longer be configured to accept SSLv3 traffic"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7824_*|*_10007_*:*_1_*:*_415120985_*|*_3_*:*_1_*:*_12176286_*|*_5_*:*_1_*:*_0"}], "description": "While iterating on FIPS testing changes in jvm-ssl-utils, clj-http-client, and tk-ws-jetty9 were required. We need to take these improvements up. Our original FIPS testing was lacking enforcement of a security policy. We need to be including this in FIPS testing as well.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15421", "fixedVersions": ["SERVER 6.7.1"], "id": "15421", "issueType": "Improvement", "key": "SERVER-2654", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2019-10-12T11:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade puppetserver#master to newest FIPS libraries/testing", "timeSpent": "PT0S", "updated": "2019-10-12T11:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "didn't do any release branch twizzles. the merge up from 6.3 will be done in the 6.3.2 ticket.", "created": "2019-10-15T22:06:00.000000"}], "components": [], "created": "2019-10-03T17:34:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e19bcb9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10081"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxgav:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2712_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1053134592"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-10-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.10.1 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "15742", "fixedVersions": [], "id": "15742", "issueType": "Task", "key": "SERVER-2653", "labels": [], "originalEstimate": "PT0S", "parent": "20146", "parentSummary": "Puppet Platform 6.10.1 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-15T22:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.7.1)", "timeSpent": "PT0S", "updated": "2019-10-15T22:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[http://builds.delivery.puppetlabs.net/puppetserver/6.7.1/]", "created": "2019-10-13T09:31:00.000000"}], "components": [], "created": "2019-10-03T17:34:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c44a6d0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10081"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxgaf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2565_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_835014930"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-10-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.10.1 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "15068", "fixedVersions": [], "id": "15068", "issueType": "Task", "key": "SERVER-2652", "labels": [], "originalEstimate": "PT0S", "parent": "20146", "parentSummary": "Puppet Platform 6.10.1 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-13T09:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.7.1)", "timeSpent": "PT0S", "updated": "2019-10-13T09:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We're releasing off of master for this release. Everyone's either working on other repos at the moment or actively committing to master to fix issues needed for this release.", "created": "2019-10-12T23:58:00.000000"}], "components": [], "created": "2019-10-03T17:34:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54cebc5f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10081"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxga7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2376_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_800686549"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-10-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.10.1 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "14818", "fixedVersions": [], "id": "14818", "issueType": "Task", "key": "SERVER-2651", "labels": [], "originalEstimate": "PT0S", "parent": "20146", "parentSummary": "Puppet Platform 6.10.1 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-12T23:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.7.1)", "timeSpent": "PT0S", "updated": "2019-10-12T23:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ticketmatch flagged\u00a0SERVER-115 for a merge up from the backport, however that issue was first released and documented in 6.7.0. Otherwise, looked good.", "created": "2019-10-12T23:57:00.000000"}], "components": [], "created": "2019-10-03T17:34:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13b657f7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10081"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxg9z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2364_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_800581584"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-10-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.10.1 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "17494", "fixedVersions": [], "id": "17494", "issueType": "Task", "key": "SERVER-2650", "labels": [], "originalEstimate": "PT0S", "parent": "20146", "parentSummary": "Puppet Platform 6.10.1 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-12T23:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.7.1)", "timeSpent": "PT0S", "updated": "2019-10-12T23:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2019-10-02T15:14:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@129f72c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10070"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxel3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2806_*|*_10007_*:*_1_*:*_644028925_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1157245862"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-10-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.4 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "15067", "fixedVersions": [], "id": "15067", "issueType": "Task", "key": "SERVER-2649", "labels": [], "originalEstimate": "PT0S", "parent": "24410", "parentSummary": "Puppet Platform 6.4.4 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-23T11:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.3.2)", "timeSpent": "PT0S", "updated": "2019-10-23T11:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[http://builds.delivery.puppetlabs.net/puppetserver/6.3.2/]", "created": "2019-10-12T23:54:00.000000"}], "components": [], "created": "2019-10-02T15:14:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5078e419"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10070"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxekn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3844_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_895202260"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-10-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.4 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "17493", "fixedVersions": [], "id": "17493", "issueType": "Task", "key": "SERVER-2648", "labels": [], "originalEstimate": "PT0S", "parent": "24410", "parentSummary": "Puppet Platform 6.4.4 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-12T23:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.3.2)", "timeSpent": "PT0S", "updated": "2019-10-12T23:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Relevant merge ups have already happened. The last code changes have gone through CI and are in PE. We're not actively developing on 6.3.x so we won't branch for this release.", "created": "2019-10-12T23:21:00.000000"}], "components": [], "created": "2019-10-02T15:13:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5401605a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10070"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxekf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3784_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_893289918"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-10-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.4 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "17147", "fixedVersions": [], "id": "17147", "issueType": "Task", "key": "SERVER-2647", "labels": [], "originalEstimate": "PT0S", "parent": "24410", "parentSummary": "Puppet Platform 6.4.4 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-12T23:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.3.2)", "timeSpent": "PT0S", "updated": "2019-10-12T23:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ran ticketmatch, resolved the same issues with 5.3.10 and merge the appropriate docs.", "created": "2019-10-12T23:15:00.000000"}], "components": [], "created": "2019-10-02T15:13:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@540ee78b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10070"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxek7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4008_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_892927650"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-10-06T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.4 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "16936", "fixedVersions": [], "id": "16936", "issueType": "Task", "key": "SERVER-2646", "labels": [], "originalEstimate": "PT0S", "parent": "24410", "parentSummary": "Puppet Platform 6.4.4 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-12T23:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.3.2)", "timeSpent": "PT0S", "updated": "2019-10-12T23:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2019-10-02T15:08:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12dd03eb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10060"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxec7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2464_*|*_10007_*:*_1_*:*_17418870_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1130847250"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-10-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.17 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "15065", "fixedVersions": [], "id": "15065", "issueType": "Task", "key": "SERVER-2645", "labels": [], "originalEstimate": "PT0S", "parent": "24408", "parentSummary": "Puppet Platform 5.5.17 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-15T22:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.10)", "timeSpent": "PT0S", "updated": "2019-10-15T22:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[http://builds.delivery.puppetlabs.net/puppetserver/5.3.10/]", "created": "2019-10-12T23:34:00.000000"}], "components": [], "created": "2019-10-02T15:08:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66ce8e0f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10060"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxebr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2428_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_894399213"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-10-04T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.17 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "17492", "fixedVersions": [], "id": "17492", "issueType": "Task", "key": "SERVER-2644", "labels": [], "originalEstimate": "PT0S", "parent": "24408", "parentSummary": "Puppet Platform 5.5.17 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-12T23:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.10)", "timeSpent": "PT0S", "updated": "2019-10-12T23:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Needed merge ups have already occurred (we've automated that). We aren't actively landing any work on 5.3.x so we are not branching for the release.The last code changes have been promoted into PE and passed.\u00a0", "created": "2019-10-12T23:18:00.000000"}], "components": [], "created": "2019-10-02T15:08:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44764ecb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10060"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxebj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2507_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_893433786"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-10-03T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.17 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "17142", "fixedVersions": [], "id": "17142", "issueType": "Task", "key": "SERVER-2643", "labels": [], "originalEstimate": "PT0S", "parent": "24408", "parentSummary": "Puppet Platform 5.5.17 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-12T23:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.10)", "timeSpent": "PT0S", "updated": "2019-10-12T23:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ran ticketmatch. Found a missing fix version on\u00a0SERVER-2641 and missing fix version & docs for SERVER-1975 and SERVER-2198.", "created": "2019-10-12T17:49:00.000000"}], "components": [], "created": "2019-10-02T15:07:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37e53a87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10060"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxebb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2693_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_873758056"}], "description": "(Initial planned release date: 2019-10-15)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-10-01T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.17 Release - 2019-10-15\n", "estimate": "PT0S", "externalId": "16935", "fixedVersions": [], "id": "16935", "issueType": "Task", "key": "SERVER-2642", "labels": [], "originalEstimate": "PT0S", "parent": "24408", "parentSummary": "Puppet Platform 5.5.17 Release - 2019-10-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-10-12T17:50:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.10)", "timeSpent": "PT0S", "updated": "2019-10-12T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "PR https://github.com/puppetlabs/puppetserver/pull/2191", "created": "2019-10-01T14:35:00.000000"}], "components": [], "created": "2019-10-01T11:17:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d5db5cb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxd13:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server's CA API now synchronizes write access to the CRL, so that each revoke request updates the CRL in succession, instead of concurrently. This prevents corruption of the CRL due to competing requests.\n\nNote that this does _not_ affect the {{puppet cert}} command. If {{puppet cert revoke}} is used at the same time as a revocation request via the API, the CRL will still be updated simultaneously and could be corrupted.\n\nWe recommend using the {{puppetserver ca}} command line tool -- which utilizes the CA API -- whenever possible to minimize this risk."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_245622652_*|*_1_*:*_1_*:*_8983_*|*_10007_*:*_1_*:*_17458063_*|*_3_*:*_1_*:*_1185987_*|*_5_*:*_1_*:*_0"}], "description": "For SERVER-115, we implemented a serialization of updates to the CRL from the Clojure CA. This ticket tracks backporting that work to Puppet Server 5 (the PE 2018.1 LTS).\n\nNote that the solution will be less effective in that stream, because users can still use {{puppet cert}} to update the CRL, and those updates are not subject to this locking. Users who experience frequent problems with CRL corruption due to concurrent updates should prefer using the API, either directly or via the {{puppetserver ca}} CLI.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17140", "fixedVersions": ["SERVER 5.3.10", "SERVER 6.3.2"], "id": "17140", "issueType": "Task", "key": "SERVER-2641", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-10-04T12:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Backport CRL API serialization", "timeSpent": "PT0S", "updated": "2019-10-09T12:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Unneeded for this release.", "created": "2019-09-27T16:45:00.000000"}], "components": [], "created": "2019-09-25T12:47:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7afa5a0d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10042"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzx8ef:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3601_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_187077691"}], "description": "(Initial planned release date: 2019-10-01)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-10-02T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.10.0 Release - 2019-10-01\n", "estimate": "PT0S", "externalId": "16052", "fixedVersions": [], "id": "16052", "issueType": "Task", "key": "SERVER-2639", "labels": [], "originalEstimate": "PT0S", "parent": "27596", "parentSummary": "Puppet Platform 6.10.0 Release - 2019-10-01\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-09-27T16:45:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.7.0)", "timeSpent": "PT0S", "updated": "2019-09-27T16:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "http://builds.delivery.puppetlabs.net/puppetserver/6.7.0/ is ready", "created": "2019-09-27T16:41:00.000000"}], "components": [], "created": "2019-09-25T12:46:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@350f7e6b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10042"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzx8dz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3804_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_186858416"}], "description": "(Initial planned release date: 2019-10-01)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-09-28T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.10.0 Release - 2019-10-01\n", "estimate": "PT0S", "externalId": "15419", "fixedVersions": [], "id": "15419", "issueType": "Task", "key": "SERVER-2638", "labels": [], "originalEstimate": "PT0S", "parent": "27596", "parentSummary": "Puppet Platform 6.10.0 Release - 2019-10-01\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-09-27T16:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.7.0)", "timeSpent": "PT0S", "updated": "2019-09-27T16:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We're not doing a release branch. Work has only targeted master, and that work has been in service of the bug fixes. Double checked the commit history since the last release and the content is correct.", "created": "2019-09-27T15:43:00.000000"}], "components": [], "created": "2019-09-25T12:46:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e474cfc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10042"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzx8dr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3481_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_183410516"}], "description": "(Initial planned release date: 2019-10-01)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-09-27T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.10.0 Release - 2019-10-01\n", "estimate": "PT0S", "externalId": "15063", "fixedVersions": [], "id": "15063", "issueType": "Task", "key": "SERVER-2637", "labels": [], "originalEstimate": "PT0S", "parent": "27596", "parentSummary": "Puppet Platform 6.10.0 Release - 2019-10-01\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-09-27T15:43:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.7.0)", "timeSpent": "PT0S", "updated": "2019-09-27T15:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Maggie's already groomed tickets, as far as I can tell. I've manually checked since there's only one piece of ticketed work that's landed since the last release: SERVER-2628.", "created": "2019-09-27T15:46:00.000000"}], "components": [], "created": "2019-09-25T12:46:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3645470b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10042"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzx8dj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3572_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_183582193"}], "description": "(Initial planned release date: 2019-10-01)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-09-25T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.10.0 Release - 2019-10-01\n", "estimate": "PT0S", "externalId": "14817", "fixedVersions": [], "id": "14817", "issueType": "Task", "key": "SERVER-2636", "labels": [], "originalEstimate": "PT0S", "parent": "27596", "parentSummary": "Puppet Platform 6.10.0 Release - 2019-10-01\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2019-09-27T15:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.7.0)", "timeSpent": "PT0S", "updated": "2019-09-27T15:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-09-24T17:47:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39560bdb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Task API Improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzx7an:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_77398864082_*|*_6_*:*_1_*:*_0"}], "description": "Collection of feature requests around improving the information provided by the tasks API. These are unlikely to be prioritized internally any time soon, but we welcome PRs!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16934", "fixedVersions": [], "id": "16934", "issueType": "Epic", "key": "SERVER-2635", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Task API Improvements", "timeSpent": "PT0S", "updated": "2022-03-08T12:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:64260ba9-b0ac-48da-a645-42085c6d8d09", "body": "\u00a0\n\nJFYI, this is how it looks when I'm trying to start puppetserver with puppet CA container running:\n{code:java}\u25cf puppetserver.service - puppetserver Service\n Loaded: loaded (/lib/systemd/system/puppetserver.service", "created": "2019-09-25T03:11:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "That's interesting. We can look at the general {{puppetserver foreground}} issue, but I wonder if [~accountid:557058:263afade-3e4f-46c6-b50a-cf2982192562] has any wisdom regarding this since he's been working on running Puppet Server in docker internally.", "created": "2019-09-27T11:46:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Closing due to inactivity. If you feel this issue is urgent, please feel free to comment on this ticket.\n\n\u00a0", "created": "2022-01-26T11:23:00.000000"}], "components": [], "created": "2019-09-24T04:30:00.000000", "creator": "70121:64260ba9-b0ac-48da-a645-42085c6d8d09", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45959ba"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Ubuntu 16.04 (amd64)"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzx62f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_36925326759_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_36975077027"}], "description": "*Puppet Version: 6.9.0*\n *Puppet Server Version: 6.6.0*\n *OS Name/Version: Ubuntu 16.04 LTS*\n\nToday I found running puppetserver in container (I have dedicated CA there) is preventing puppetserver to run on host because of the way systemd unit is operating (forking + killmode I guess). So I decided to create 'proper' systemd unit with {{Type=simple}}\u00a0and {{ExecStart}} using 'foreground' mode (note {{User=puppet}} there):\n{code}\n[Unit]\nDescription=puppetserver Service\nAfter=syslog.target network.target nss-lookup.target\n\n[Service]\nEnvironmentFile=/etc/default/puppetserver\nUser=puppet\nTimeoutStartSec=300\nTimeoutStopSec=60\nRestart=on-failure\nStartLimitBurst=5\nTasksMax=4915\nUMask=027\nExecReload=/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver reload\nExecStart=/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver foreground\nSuccessExitStatus=143\n\n[Install]\nWantedBy=multi-user.target\n{code}\n\nBut then I was unable to start puppetserver. It fails with message about missing sudo permissions. I started to investigate and it leads me to {{/opt/puppetlabs/server/apps/puppetserver/cli/apps/foreground}}. There I found following code:\n{code}\nif [ \"$EUID\" = \"0\" ] && command -v runuser &> /dev/null; then\n  runuser \"${USER}\" -s /bin/bash -c \"$COMMAND\"\nelif command -v sudo &> /dev/null; then\n  sudo -H -u \"${USER}\" $COMMAND\nelse\n  su \"${USER}\" -s /bin/bash -c \"$COMMAND\"\nfi\n{code}\n\nThere I see another issue.. When you start puppetserver as non-root ($EUID != 0) it will fall into {{elif}} block immediately.\n\nFrom same code I can say it was never expected someone will run puppetserver in foreground as non-root. I guess it was mainly introduced for running in docker.\n\nI'd say it's better to drop this block from {{foreground}} file and move {{runuser}} call directly to docker entrypoint script. Currently I just commented this part out to check and it works fine for me.\n\n*Desired Behavior:*\n\nTo be able to run puppetserver in foreground as non-root (because you can do this in background using {{puppetserver start}})\n\n*Actual Behavior:*\n\nIt's impossible to run {{puppetserver foreground}} as non-root user yet.\n\nThank you!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17565", "fixedVersions": [], "id": "17565", "issueType": "Bug", "key": "SERVER-2634", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:64260ba9-b0ac-48da-a645-42085c6d8d09", "resolution": "Won't Fix", "resolutionDate": "2022-01-26T11:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver foreground fails when started as non-root user without sudo permissions", "timeSpent": "PT0S", "updated": "2022-01-26T11:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c104c866b810069e436dd", "body": "I got the exact same error but on puppetserver 5.3.8 and puppet 5.5.17\n\nFor me the error was caused by my http-proxy (squid) somehow. Unsetting the environment variables http_proxy and https_proxy for the agent solved it for me.", "created": "2019-11-07T08:14:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "Closing due to inactivity please re-open if this is still a problem for you.\u00a0", "created": "2020-11-24T12:35:00.000000"}], "components": ["Puppet Server"], "created": "2019-09-18T04:56:00.000000", "creator": "557058:afeb4589-3a40-45a2-9d53-0c583b3bf015", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38035e5b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzx2on:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37442299496_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:\u00a06.4.2*\n *Puppet Server Version:\u00a06.3.0*\n *OS Name/Version: RHEL 7.7*\n\nAfter upgrading to Puppet Server to 6.3.0 got a lot of\u00a0\"ERROR [qtp1080887695-578] [p.r.core] Internal Server Error: java.io.IOException: java.util.concurrent.TimeoutException: Idle timeout expired: 30013/30000 ms\" errors in Puppet server log and some Puppet runs do fail.\n\n*Desired Behavior:*\n\nNo\u00a0java.io.IOException error and no failed puppet run.\n\n*Actual Behavior:*\n\n\u00a0puppetserver.log\n{code:java}\n2019-09-18T12:34:47.360+02:00 ERROR [qtp1080887695-578] [p.r.core] Internal Server Error: java.io.IOException: java.util.concurrent.TimeoutException: Idle timeout expired: 30013/30000 ms\n        at org.eclipse.jetty.server.HttpInput$ErrorState.noContent(HttpInput.java:1080)\n        at org.eclipse.jetty.server.HttpInput.read(HttpInput.java:313)\n        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)\n        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)\n        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)\n        at java.io.InputStreamReader.read(InputStreamReader.java:184)\n        at java.io.BufferedReader.fill(BufferedReader.java:161)\n        at java.io.BufferedReader.read1(BufferedReader.java:212)\n        at java.io.BufferedReader.read(BufferedReader.java:286)\n        at java.io.Reader.read(Reader.java:140)\n        at clojure.java.io$fn__11508.invokeStatic(io.clj:337)\n        at clojure.java.io$fn__11508.invoke(io.clj:334)\n        at clojure.lang.MultiFn.invoke(MultiFn.java:239)\n        at clojure.java.io$copy.invokeStatic(io.clj:406)\n        at clojure.java.io$copy.doInvoke(io.clj:391)\n        at clojure.lang.RestFn.invoke(RestFn.java:425)\n        at clojure.core$slurp.invokeStatic(core.clj:6951)\n        at clojure.core$slurp.doInvoke(core.clj:6942)\n        at clojure.lang.RestFn.invoke(RestFn.java:439)\n        at puppetlabs.services.request_handler.request_handler_core$body_for_jruby.invokeStatic(request_handler_core.clj:78)\n        at puppetlabs.services.request_handler.request_handler_core$body_for_jruby.invoke(request_handler_core.clj:54)\n        at puppetlabs.services.request_handler.request_handler_core$wrap_params_for_jruby.invokeStatic(request_handler_core.clj:86)\n        at puppetlabs.services.request_handler.request_handler_core$wrap_params_for_jruby.invoke(request_handler_core.clj:81)\n        at puppetlabs.services.request_handler.request_handler_core$jruby_request_handler$fn__38872.invoke(request_handler_core.clj:269)\n        at puppetlabs.puppetserver.jruby_request$wrap_with_jruby_instance$fn__34705.invoke(jruby_request.clj:48)\n        at puppetlabs.puppetserver.jruby_request$wrap_with_error_handling$fn__34701.invoke(jruby_request.clj:33)\n        at puppetlabs.services.request_handler.request_handler_service$reify__38897$service_fnk__4991__auto___positional$reify__38912.handle_request(request_handler_service.clj:47)\n        at puppetlabs.services.protocols.request_handler$fn__38810$G__38806__38813.invoke(request_handler.clj:3)\n        at puppetlabs.services.protocols.request_handler$fn__38810$G__38805__38817.invoke(request_handler.clj:3)\n        at clojure.core$partial$fn__5824.invoke(core.clj:2624)\n        at puppetlabs.trapperkeeper.authorization.ring_middleware$fn__25030$wrap_authorization_check__25035$fn__25036$fn__25037.invoke(ring_middleware.clj:290)\n        at puppetlabs.ring_middleware.core$fn__22623$wrap_bad_request__22632$fn__22635$fn__22641.invoke(core.clj:170)\n        at puppetlabs.ring_middleware.core$fn__22721$wrap_uncaught_errors__22730$fn__22733$fn__22738.invoke(core.clj:216)\n        at puppetlabs.ring_middleware.core$fn__22342$wrap_request_logging__22347$fn__22348$fn__22350.invoke(core.clj:47)\n        at puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n        at puppetlabs.ring_middleware.core$fn__22371$wrap_response_logging__22376$fn__22377$fn__22378.invoke(core.clj:53)\n        at puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__34948.invoke(ringutils.clj:83)\n        at puppetlabs.services.master.master_core$fn__40052$v3_ruby_routes__40057$fn__40058$fn__40075.invoke(master_core.clj:800)\n        at bidi.ring$fn__16628.invokeStatic(ring.cljc:25)\n        at bidi.ring$fn__16628.invoke(ring.cljc:21)\n        at bidi.ring$fn__16613$G__16608__16622.invoke(ring.cljc:16)\n        at puppetlabs.comidi$make_handler$fn__18544.invoke(comidi.clj:245)\n        at puppetlabs.metrics.http$fn__39165$wrap_with_request_metrics__39170$fn__39174$fn__39176$fn__39177$fn__39178.invoke(http.clj:152)\n        at puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n        at com.codahale.metrics.Timer.time(Timer.java:101)\n        at puppetlabs.metrics.http$fn__39165$wrap_with_request_metrics__39170$fn__39174$fn__39176$fn__39177.invoke(http.clj:152)\n        at puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n        at com.codahale.metrics.Timer.time(Timer.java:101)\n        at puppetlabs.metrics.http$fn__39165$wrap_with_request_metrics__39170$fn__39174$fn__39176.invoke(http.clj:148)\n        at puppetlabs.comidi$fn__18609$wrap_with_route_metadata__18614$fn__18615$fn__18617.invoke(comidi.clj:332)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__28207.invoke(jetty9_core.clj:434)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n        at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:498)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$fn__27785$normalize_uri_handler__27790$fn__27791$fn__27792.invoke(normalized_uri_helpers.clj:74)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205)\n        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)\n        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\n        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\n        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724)\n        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n        at com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.Server.handle(Server.java:531)\n        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)\n        at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:293)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)\n        at java.lang.Thread.run(Thread.java:748)\nCaused by: java.util.concurrent.TimeoutException: Idle timeout expired: 30013/30000 ms\n        at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:166)\n        at org.eclipse.jetty.io.IdleTimeout$1.run(IdleTimeout.java:50)\n        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n        at java.util.concurrent.FutureTask.run(FutureTask.java:266)\n        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)\n        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n        ... 1 more\n        Suppressed: java.lang.Throwable: HttpInput idle timeout\n                at org.eclipse.jetty.server.HttpInput.onIdleTimeout(HttpInput.java:797)\n                at org.eclipse.jetty.server.HttpChannelOverHttp.onIdleTimeout(HttpChannelOverHttp.java:407)\n                at org.eclipse.jetty.server.HttpConnection.onReadTimeout(HttpConnection.java:487)\n                at org.eclipse.jetty.io.AbstractConnection.onFillInterestedFailed(AbstractConnection.java:170)\n                at org.eclipse.jetty.server.HttpConnection.onFillInterestedFailed(HttpConnection.java:494)\n                at org.eclipse.jetty.io.AbstractConnection$ReadCallback.failed(AbstractConnection.java:287)\n                at org.eclipse.jetty.io.FillInterest.onFail(FillInterest.java:134)\n                at org.eclipse.jetty.io.ssl.SslConnection.onFillInterestedFailed(SslConnection.java:318)\n                at org.eclipse.jetty.io.ssl.SslConnection$3.failed(SslConnection.java:157)\n                at org.eclipse.jetty.io.FillInterest.onFail(FillInterest.java:134)\n                at org.eclipse.jetty.io.AbstractEndPoint.onIdleExpired(AbstractEndPoint.java:406)\n                ... 9 more\n\n\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17138", "fixedVersions": [], "id": "17138", "issueType": "Bug", "key": "SERVER-2632", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:afeb4589-3a40-45a2-9d53-0c583b3bf015", "resolution": "Cannot Reproduce", "resolutionDate": "2020-11-24T12:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "After upgrading to 6.3.0 got java.io.IOException errors", "timeSpent": "PT0S", "updated": "2020-11-24T12:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-09-13T13:24:00.000000", "creator": "5a5e592bec71fd29fa9a8628", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a503c24"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzx0n3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37844117576_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 2019.1.0*\n*Puppet Server Version: 2019.1.0.67*\n*OS Name/Version: centos-7-x86_64*\n\nDescribe your issue in as much detail as possible\u2026\n\nWhile running soak tests for 2019.1.0 we noticed that the JRuby average-borrow-time seemed to spike at the end of the test and then hover around 1k indefinitely after the test run with no agents checking in. A subsequent test reproduced the spike and higher than expected average after the test run. Another test confirmed that even when just running the pre-suite to set up the environment with PE without actually running a test the average-borrow-time stayed around 1k after the agent runs performed during setup. These test results are documented in SLV-470 (https://puppet.atlassian.net/browse/SLV-470).\n\nHowever, before writing this ticket I conducted additional tests and was not able to reproduce the issue. This subsequent testing showed that the average-borrow-time settled down to below 10 with no agents checking in.\n\nAt this point we are not able to explain or reproduce the issue of the ~1k average-borrow-time with no agents checking in, so this ticket is to report the issue we previously encountered.\n\nDescribe steps to reproduce\u2026\n\nPlease see SLV-470 (https://puppet.atlassian.net/browse/SLV-470) for testing details.\n\n*Desired Behavior:*\n\nThe reported average-borrow-time should be accurate and should not show unexpected activity when no agents are checking in. Although we're no longer able to reproduce the issue we would like to understand why it occurred and want to ensure that it is not a problem for the reliability of our tests or for our customers. \n\n*Actual Behavior:*\n\nThe reported average-borrow-time was higher than expected with no agents checking in during initial testing.\n\nPlease take a moment and attach any relevant log output and/or manifests. This will help us immensely when troubleshooting the issue.\n\nExamples:\nRun puppet agent with --test --trace --debug\n\nRelevant sections of {{/var/log/puppetlabs/puppetserver/puppetserver.log}} or any applicable logs from the same directory.\n\nFor more detailed information turn up the server logs by upping the log level in the server's logback.xml\n\nRelevant sections of configurations files (puppet.conf, hiera.conf, Server's conf.d, defaults/sysconfig)\n\nFor memory issues with server heap dumps are also helpful.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16933", "fixedVersions": [], "id": "16933", "issueType": "Bug", "key": "SERVER-2631", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a5e592bec71fd29fa9a8628", "resolution": "Cannot Reproduce", "resolutionDate": "2020-11-24T12:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Inconsistent JRuby average-borrow-time values with no agents checking in", "timeSpent": "PT0S", "updated": "2020-11-24T12:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-09-11T17:30:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a01994e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke6v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_492792394_*|*_1_*:*_1_*:*_15602_*|*_10007_*:*_1_*:*_115026119_*|*_3_*:*_1_*:*_1117875173_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4213054083"}], "description": "Right now we maintain a text domain per environment, and delete the domain when the environment is evicted from the cache. It's a significant amount of work to make this thread safe. For now we can make sure that the feature is turned off if the user enables multithreading.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "16050", "fixedVersions": ["SERVER 6.7.2"], "id": "16050", "issueType": "New Feature", "key": "SERVER-2630", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Done", "resolutionDate": "2019-11-19T10:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable i18n when running multithreaded", "timeSpent": "PT0S", "updated": "2019-11-19T10:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-09-06T10:32:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1979fe92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwvrb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_155309046_*|*_1_*:*_1_*:*_899221_*|*_10007_*:*_1_*:*_17954157_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1560272096"}], "description": "Add debian-10-x86_64 to [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml].\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16266", "fixedVersions": ["SERVER 6.7.0"], "id": "16266", "issueType": "Task", "key": "SERVER-2629", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-09-26T12:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable debian-10-x86_64 test pipeline for puppetserver", "timeSpent": "PT0S", "updated": "2019-09-26T12:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is pending an ezbake release, for the commit that makes the Debian 10 package require Java 11 on install rather than Java 8.", "created": "2019-09-17T16:07:00.000000"}], "components": [], "created": "2019-09-06T10:32:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1cf9179f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwvr3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_155320190_*|*_1_*:*_1_*:*_890309_*|*_10007_*:*_1_*:*_17959717_*|*_3_*:*_2_*:*_100596083_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_1459680691"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for debian-10-x86_64\n* Add debian-10-x86_64 to [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml#L84-L93]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16048", "fixedVersions": ["SERVER 6.7.0"], "id": "16048", "issueType": "Task", "key": "SERVER-2628", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-09-26T12:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable debian-10-x86_64 builds for puppetserver", "timeSpent": "PT0S", "updated": "2019-09-26T12:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [{"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "I'm on it :)\n\nHopefully will be able to figure it out and get a fix early next week. Until then would recommend pinning to 6.3.1 or 6.4.0", "created": "2019-09-06T17:35:00.000000"}, {"author": "70121:64b5cafe-0ab2-41ab-95b8-7d7e6e30d2be", "body": "Thanks, already pined to 6.4.0 after discovering the issue.", "created": "2019-09-07T01:34:00.000000"}, {"author": "62ccea594c909d6a57aaa58e", "body": "Any ETA on this fix? The last 6.5.0 docker build worked fine. Also, is there a reason why older builds are being overwritten instead of version number incremented?", "created": "2019-09-09T16:52:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:62ccea594c909d6a57aaa58e] will either have a fix up this evening or early tomorrow (pacific time).\n\nWe build from source on commit and version the containers based on the latest released version, though this is something we're looking into alternate solutions to currently.", "created": "2019-09-09T17:08:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[https://github.com/puppetlabs/puppetserver/pull/2168]\u00a0resolves the issue in my local testing. Once that's merged a new container will be published with the fix", "created": "2019-09-09T18:23:00.000000"}, {"author": "62ccea594c909d6a57aaa58e", "body": "Excellent. Thank you very much.", "created": "2019-09-10T08:51:00.000000"}, {"author": "623a4c75761efb0069cd36f3", "body": "We just got bit by this same bug.\n\nWhy on earth are you pushing changes to an image and reusing the same image tag?!\n\nThis is very bad form. If you change an image, change the tag.", "created": "2019-09-11T13:28:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:623a4c75761efb0069cd36f3] as I said above, we're looking into alternate tagging solutions that still allow us to build from source. We won't have any solutions for that immediately but work is in progress.", "created": "2019-09-11T13:49:00.000000"}, {"author": "623a4c75761efb0069cd36f3", "body": "Appending a commit hash is an option I've seen other teams use.", "created": "2019-09-11T14:32:00.000000"}, {"author": "62ccea594c909d6a57aaa58e", "body": "FYI, I pulled the latest docker image after\u00a0[https://github.com/puppetlabs/puppetserver/pull/2168]\u00a0was merged. The bug appears to be fixed.", "created": "2019-09-12T09:34:00.000000"}], "components": ["Puppet Server"], "created": "2019-09-06T00:21:00.000000", "creator": "70121:64b5cafe-0ab2-41ab-95b8-7d7e6e30d2be", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fb6887e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwvfb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_61065411_*|*_10007_*:*_1_*:*_171353109_*|*_3_*:*_1_*:*_325888046_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Server Version:* 6.5.0\n *OS Name/Version:*\n\nPuppetserver crashes on startup in docker\u00a019.03.2 on ubuntu 19.04 and 18.04\n\n*Desired Behavior:*\n\nVersion/Tag 6.4.0 works as always\n\n*Example:*\n Run docker puppet/puppetserver:6.5.0\n\n*Logs:*\n\n{{puppet | Caused by: org.jruby.exceptions.LoadError: (LoadError) no such file to load -- concurrent}}\n{{puppet | at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:987)}}\n{{puppet | at uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54)}}\n{{puppet | at RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:1)}}\n{{puppet | at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:987)}}\n{{puppet | at uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54)}}\n{{puppet | at RUBY.<module:(root)>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:1)}}\n{{puppet | at RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:41)}}\n{{puppet | at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:987)}}\n{{puppet | at RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:38)}}\n{{puppet | at RUBY.<main>(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1)}}\n{{puppet | at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:987)}}\n{{puppet | at RUBY.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54)}}\n{{puppet | at RUBY.<main>(uri:classloader:/puppetserver-lib/puppet/server.rb:1)}}\n{{puppet | at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:987)}}\n{{puppet | at RUBY.(root)(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1)}}\n{{puppet | at RUBY.<main>(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54)}}\n{{puppet | 2019-09-06 06:15:07,028 INFO [p.t.internal] Beginning shutdown sequence}}\n{{puppet | 2019-09-06 06:15:07,035 INFO [p.s.j.jruby-metrics-service] JRuby Metrics Service: stopping metrics sampler job}}\n{{puppet | 2019-09-06 06:15:07,036 INFO [p.s.j.jruby-metrics-service] JRuby Metrics Service: stopped metrics sampler job}}\n{{puppet | 2019-09-06 06:15:07,040 INFO [p.s.j.i.jruby-agents] Draining JRuby pool.}}\n{{puppet | 2019-09-06 06:15:07,043 ERROR [p.t.internal] Encountered error during shutdown sequence}}\n{{puppet | java.lang.InterruptedException: Lock can't be granted because a pill has been inserted}}\n{{puppet | at com.puppetlabs.jruby_utils.pool.JRubyPool.lockWithTimeout(JRubyPool.java:368)}}\n{{puppet | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)}}\n{{puppet | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}}\n{{puppet | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}}\n{{puppet | at java.lang.reflect.Method.invoke(Method.java:498)}}\n{{puppet | at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)}}\n{{puppet | at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102)}}\n{{puppet | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__33967$borrow_all_jrubies__33972$fn__33973$fn__33974.invoke(jruby_agents.clj:126)}}\n{{puppet | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__33967$borrow_all_jrubies__33972$fn__33973.invoke(jruby_agents.clj:125)}}\n{{puppet | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__33967$borrow_all_jrubies__33972.invoke(jruby_agents.clj:117)}}\n{{puppet | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34047$drain_and_refill_pool_BANG___34056$fn__34059.invoke(jruby_agents.clj:191)}}\n{{puppet | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34047$drain_and_refill_pool_BANG___34056.invoke(jruby_agents.clj:173)}}\n{{puppet | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34088$flush_pool_for_shutdown_BANG___34093$fn__34094.invoke(jruby_agents.clj:212)}}\n{{puppet | at puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__34088$flush_pool_for_shutdown_BANG___34093.invoke(jruby_agents.clj:200)}}\n{{puppet | at puppetlabs.services.jruby_pool_manager.jruby_core$fn__35141$flush_pool_for_shutdown_BANG___35146$fn__35147.invoke(jruby_core.clj:236)}}\n{{puppet | at puppetlabs.services.jruby_pool_manager.jruby_core$fn__35141$flush_pool_for_shutdown_BANG___35146.invoke(jruby_core.clj:231)}}\n{{puppet | at puppetlabs.services.jruby.jruby_puppet_service$reify__35930$service_fnk__5004__auto___positional$reify__35944.stop(jruby_puppet_service.clj:52)}}\n{{puppet | at puppetlabs.trapperkeeper.services$fn__4854$G__4824__4857.invoke(services.clj:9)}}\n{{puppet | at puppetlabs.trapperkeeper.services$fn__4854$G__4823__4861.invoke(services.clj:9)}}\n{{puppet | at puppetlabs.trapperkeeper.internal$fn__14571$run_lifecycle_fn_BANG___14578$fn__14579.invoke(internal.clj:196)}}\n{{puppet | at puppetlabs.trapperkeeper.internal$fn__14571$run_lifecycle_fn_BANG___14578.invoke(internal.clj:179)}}\n{{puppet | at puppetlabs.trapperkeeper.internal$fn__15080$shutdown_BANG___15085$fn__15086$shutdown_fn__15088$fn__15103.invoke(internal.clj:438)}}\n{{puppet | at puppetlabs.trapperkeeper.internal$fn__15080$shutdown_BANG___15085$fn__15086$shutdown_fn__15088.invoke(internal.clj:437)}}\n{{puppet | at puppetlabs.trapperkeeper.internal$fn__14645$initialize_lifecycle_worker__14656$fn__14657$fn__14807$state_machine__11803__auto____14832$fn__14835$fn__14849.invoke(internal.clj:274)}}\n{{puppet | at puppetlabs.trapperkeeper.internal$fn__14645$initialize_lifecycle_worker__14656$fn__14657$fn__14807$state_machine__11803__auto____14832$fn__14835.invoke(internal.clj:258)}}\n{{puppet | at puppetlabs.trapperkeeper.internal$fn__14645$initialize_lifecycle_worker__14656$fn__14657$fn__14807$state_machine__11803__auto____14832.invoke(internal.clj:249)}}\n{{puppet | at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:973)}}\n{{puppet | at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:972)}}\n{{puppet | at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:977)}}\n{{puppet | at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:975)}}\n{{puppet | at clojure.core.async$ioc_alts_BANG_$fn__12018.invoke(async.clj:384)}}\n{{puppet | at clojure.core.async$do_alts$fn__11958$fn__11961.invoke(async.clj:253)}}\n{{puppet | at clojure.core.async.impl.channels.ManyToManyChannel$fn__6638.invoke(channels.clj:135)}}\n{{puppet | at clojure.lang.AFn.run(AFn.java:22)}}\n{{puppet | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)}}\n{{puppet | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)}}\n{{puppet | at java.lang.Thread.run(Thread.java:748)}}\n{{puppet | 2019-09-06 06:15:07,050 INFO [p.t.s.w.jetty9-service] Shutting down web server(s).}}\n{{puppet | 2019-09-06 06:15:07,055 INFO [p.t.s.s.scheduler-service] Shutting down Scheduler Service}}\n{{puppet | 2019-09-06 06:15:07,056 INFO [o.q.c.QuartzScheduler] Scheduler f0e2e9b5-d3ee-473a-a7fd-c8bb64fcc01b_$_NON_CLUSTERED shutting down.}}\n{{puppet | 2019-09-06 06:15:07,056 INFO [o.q.c.QuartzScheduler] Scheduler f0e2e9b5-d3ee-473a-a7fd-c8bb64fcc01b_$_NON_CLUSTERED paused.}}\n{{puppet | 2019-09-06 06:15:07,239 INFO [o.q.c.QuartzScheduler] Scheduler f0e2e9b5-d3ee-473a-a7fd-c8bb64fcc01b_$_NON_CLUSTERED shutdown complete.}}\n{{puppet | 2019-09-06 06:15:07,239 INFO [p.t.s.s.scheduler-service] Scheduler Service shutdown complete.}}\n{{puppet | 2019-09-06 06:15:07,244 INFO [p.t.internal] Finished shutdown sequence}}\n{{puppet | Execution error (LoadError) at org.jruby.RubyKernel/require (org/jruby/RubyKernel.java:987).}}\n{{puppet | (LoadError) no such file to load -- concurrent}}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17564", "fixedVersions": [], "id": "17564", "issueType": "Bug", "key": "SERVER-2627", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:64b5cafe-0ab2-41ab-95b8-7d7e6e30d2be", "resolution": "Fixed", "resolutionDate": "2019-09-12T11:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver 6.5.0 crashes on startup", "timeSpent": "PT0S", "updated": "2019-09-12T11:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-09-05T17:57:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4711b4e4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10001"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwvcf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2566_*|*_3_*:*_1_*:*_23217812_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1006927613"}], "description": "(Initial planned release date: 2019-09-17)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-09-18T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.9.0 Release - 2019-09-17\n", "estimate": "PT0S", "externalId": "16265", "fixedVersions": [], "id": "16265", "issueType": "Task", "key": "SERVER-2626", "labels": [], "originalEstimate": "PT0S", "parent": "28592", "parentSummary": "Puppet Platform 6.9.0 Release - 2019-09-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-09-17T16:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.6.0)", "timeSpent": "PT0S", "updated": "2019-09-17T16:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-09-05T17:57:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11ca4ffa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10001"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwvbz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2757_*|*_3_*:*_1_*:*_72250242_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_929769609"}], "description": "(Initial planned release date: 2019-09-17)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-09-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.9.0 Release - 2019-09-17\n", "estimate": "PT0S", "externalId": "15741", "fixedVersions": [], "id": "15741", "issueType": "Task", "key": "SERVER-2625", "labels": [], "originalEstimate": "PT0S", "parent": "28592", "parentSummary": "Puppet Platform 6.9.0 Release - 2019-09-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-09-17T08:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.6.0)", "timeSpent": "PT0S", "updated": "2019-09-17T08:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-09-05T17:56:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@455bf7b3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10001"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwvbr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2544_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_929772984"}], "description": "(Initial planned release date: 2019-09-17)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-09-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.9.0 Release - 2019-09-17\n", "estimate": "PT0S", "externalId": "15417", "fixedVersions": [], "id": "15417", "issueType": "Task", "key": "SERVER-2624", "labels": [], "originalEstimate": "PT0S", "parent": "28592", "parentSummary": "Puppet Platform 6.9.0 Release - 2019-09-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-09-16T12:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.6.0)", "timeSpent": "PT0S", "updated": "2019-09-16T12:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-09-05T17:56:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6361cfa2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10001"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwvbj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2578_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_929770965"}], "description": "(Initial planned release date: 2019-09-17)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-09-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.9.0 Release - 2019-09-17\n", "estimate": "PT0S", "externalId": "15062", "fixedVersions": [], "id": "15062", "issueType": "Task", "key": "SERVER-2623", "labels": [], "originalEstimate": "PT0S", "parent": "28592", "parentSummary": "Puppet Platform 6.9.0 Release - 2019-09-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-09-16T12:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.6.0)", "timeSpent": "PT0S", "updated": "2019-09-16T12:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "636beee73867a77cb8d6d8e8", "created": "2019-09-04T02:12:00.000000", "name": "metrics.conf", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10745"}], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks for the bug report! We'll look into this in the next week or two. Unfortunately we're really heads down this next week, but should be able to try and reproduce the week after!", "created": "2019-09-08T20:49:00.000000"}, {"author": "636beee73867a77cb8d6d8e8", "body": "Have you had a change to look at this? We're getting serious spikes in our catalog compilation and would love to have these metrics.", "created": "2019-10-17T04:00:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "Were you able to come up with a configuration that works for this?\u00a0", "created": "2020-11-24T12:41:00.000000"}, {"author": "636beee73867a77cb8d6d8e8", "body": "No, still an open bug IMO (though I haven't worked with Puppet for 6 months)", "created": "2020-11-25T02:34:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "We could not reproduce this issue with the relevant puppet settings.\u00a0", "created": "2020-12-02T12:20:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "To reproduce, set profiler: enabled: false in puppetserver.conf.\n\nTo fix, remove this setting or explicitly set to true.\n\nIf you're using theforeman/puppet to configure puppetserver, also see https://github.com/theforeman/puppet-puppet/pull/825", "created": "2022-02-21T04:03:00.000000"}, {"author": "623c0ed8866b810069e43620", "body": "Finally got to the bottom of this. Puppetsever was being deployed via the {{ospuppet}} forge module, which defaults {{profiler}} setting to disabled. Updating this to be enabled has made the compiler metrics start flowing through to the tsdb. The comment in this file read \\{{enable or disable profiling for the Ruby code", "created": "2022-02-21T04:08:00.000000"}], "components": [], "created": "2019-09-04T02:22:00.000000", "creator": "636beee73867a77cb8d6d8e8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7337b268"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwszj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_39351318265_*|*_6_*:*_2_*:*_184821"}], "description": "*Puppet Version: 6.8.0*\n *Puppet Server Version: 6.5.0*\n *OS Name/Version: CentOS 6/7*\n\nI have configured 3 of my puppetservers to send metric to a Graphite server, as per the\u00a0 [docs|https://puppet.com/docs/puppetserver/6.5/puppet_server_metrics.html].\n\nHowever, I am only receiving a subset of the default metrics which should be being forward to me - e.g. I am getting http[-client],jruby,puppetdb metrics, but am not receiving compiler/functions metrics. I have confirmed that it is the Server not sending the metrics via a packet capture, and running the server with Debug logging does not shed any light on problems. I have tried manually enabling specific metrics via `metrics-allowed`, again per the docs, but no success.\n\n*Desired Behavior:*\n\nPuppetServer sends all metrics (as per the default, or if explicitly specified)\n\n*Actual Behavior:*\n\nPuppetServer does not send all metrics, even when explicitly specified.\n\nExample\u00a0[^metrics.conf]\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17563", "fixedVersions": [], "id": "17563", "issueType": "Bug", "key": "SERVER-2622", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "636beee73867a77cb8d6d8e8", "resolution": "Cannot Reproduce", "resolutionDate": "2020-12-02T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server only sends subset of default metrics", "timeSpent": "PT0S", "updated": "2022-02-21T04:08:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "This ticket needs to be scoped under the feature for \"orchestrator metrics.\"\u00a0 This may or may not be the right solution we should determine the correct implementation of orchestrator metrics and include this ticket or close it in favor of an alternate solution.\u00a0 [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\u00a0to talk to [~accountid:557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20]", "created": "2020-05-08T11:49:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "This isn't currently a priority for orchestrator metrics so this waiting for orchestrator metrics to become a priority.  ", "created": "2020-07-24T11:49:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Not a high enough priority", "created": "2022-01-26T11:25:00.000000"}], "components": [], "created": "2019-09-03T17:02:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c687aee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:i"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_4232920574_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_54261447956_*|*_10006_*:*_1_*:*_3619364097_*|*_10005_*:*_1_*:*_13556060197"}], "description": "The {{jruby-metrics-service}} provided by Puppet Server contains instrumentation around requests that use the JRuby pool. These metrics include:\n\n  - Status of the JRuby pool lock and metrics for lock wait and hold times\n  - List of borrowed instances\n  - List of pending requests\n  - Average free and requested JRuby instances\n  - Per-borrow metrics that give rates and times for each borrow reason\n\nWe should move this service from puppetserver to the jruby-utils project so that other services using JRuby can benefit from the metrics.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "16581", "fixedVersions": [], "id": "16581", "issueType": "Improvement", "key": "SERVER-2621", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Won't Do", "resolutionDate": "2022-01-26T11:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move jruby-metrics-service from puppetserver to jruby-utils", "timeSpent": "PT0S", "updated": "2022-01-26T11:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623a4ceda1d81f0069d8127c", "created": "2019-09-03T10:53:00.000000", "name": "agent.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11053"}, {"attacher": "623a4ceda1d81f0069d8127c", "created": "2019-09-04T10:27:00.000000", "name": "agent_new.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10589"}], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "You shouldn't set {{certname}} as you're forcing the server to generate an SSL certificate with common name \"localhost\" which doesn't match the host that the agent tried to connect to. Remove the {{certname}} setting in both server and agent configuration and regenerate the server certificate.", "created": "2019-09-03T11:12:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "Thank you [~accountid:63d40628f6e1b543161789a7]\n\n\u00a0\n\nAfter removing\u00a0{{certname from both server and agent configuration. starting the agent gets:}}\n{{\"}}\n\n{{.....}}\n{{Debug: Creating new connection for https://x161.fyre.ibm.com:8140\nDebug: Starting connection for https://x161.fyre.ibm.com:8140\nDebug: HTTP GET https://x161.fyre.ibm.com:8140/puppet-ca/v1/certificate/xu161.fyre.ibm.com returned 404 Not Found\nDebug: Closing connection for https://x161.fyre.ibm.com:8140\nInfo: Certificate for xu161.fyre.ibm.com has not been signed yet\nCouldn't fetch certificate from CA server", "created": "2019-09-03T11:47:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Hi [~accountid:623a4ceda1d81f0069d8127c], I recommend joining the #puppet channel in\u00a0[https://slack.puppet.com/]\u00a0and folks there can help you get started.", "created": "2019-09-03T11:52:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "Thanks for the replies on the Slack channel. But the problem is not solved.\nFollowing the example setting:\u00a0https://puppet.com/docs/puppet/6.7/config_file_main.html#examples\nI updated the server name of mine. It gets the same errors.\n\nIn addition, I installed puppetserver and puppet from the repository as mentioned by the document,\u00a0\n\nand set the configuration (/etc/puppetlabs/puppet/puppet.conf), and then start the puppetserver and agent.\nI got the almost the same errors.\u00a0 Please see the attachment \"agent_new.log\"\n\nI think the usage of running puppetserver and agent on the multiple VMs is a very normal and typical scenario.\nCould you please test and let me know how to config it?\n\nThanks,\n\n\n\n\u00a0", "created": "2019-09-04T10:30:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:623a4ceda1d81f0069d8127c] our ticket tracker isn't the right forum for getting started with puppet. I suggest you start with the [learning vm|https://puppet.com/download-learning-vm] and reaching out to folks on slack.", "created": "2019-09-04T10:42:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "[~accountid:63d40628f6e1b543161789a7]\nDo not you think it may be\u00a0 a bug or mismatch between the application and documentation?", "created": "2019-09-04T10:54:00.000000"}], "components": ["Puppet Server"], "created": "2019-09-03T10:53:00.000000", "creator": "623a4ceda1d81f0069d8127c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72ce1572"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwsf3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_2391399_*|*_6_*:*_2_*:*_83317502"}], "description": "*Puppet Version: 6.5.0*\n *Puppet Server Version: 6.5.0*\n *OS Name/Version: ubuntu 16.04*\n\nI can start `puppetserver` from source with the default configuration, and start the agent on the same host. But when I run the server and agent on the different hosts, I got\u00a0\n\nerrors.\n\nHere is the server config: \u00a0~/.puppetlabs/etc/puppet/puppet.conf :\n\n\u00a0 \u00a0\n\u00a0 \u00a0 [main]\n\u00a0 \u00a0\u00a0 certname = localhost\n\u00a0 \u00a0 [agent]\n\u00a0 \u00a0\u00a0 server = localhost\n\u00a0\nAnd the config of agent is\u00a0{color:#333333}~/.puppetlabs/etc/puppet/puppet.conf{color}{color:#333333} :{color}\n\u00a0 \u00a0 [main]\n\u00a0 \u00a0 \u00a0 certname = localhost\n\u00a0 \u00a0 [agent]\n\u00a0 \u00a0\u00a0 server = x161.fyre.ibm.com\n\u00a0\n\"{color:#333333}x161.fyre.ibm.com{color}\" is the host to run puppetserver by \"lein run -c dev/puppetserver.conf\"\nWhen run agent by \"puppet agent --confdir ~/.puppetlabs/etc/puppet -t --debug\", get:\n\n\u00a0 \u00a0 \u00a0\u00a0 ......\n\u00a0 \u00a0 \u00a0 \u00a0Debug: Creating new connection for https://x161.fyre.ibm.com:8140\n\u00a0 \u00a0 \u00a0\u00a0 Debug: Starting connection for https://x161.fyre.ibm.com:8140\n\u00a0 \u00a0 \u00a0\u00a0 Debug: HTTP GET https://x161.fyre.ibm.com:8140/puppet-ca/v1/certificate/ca returned 200 OK\n\u00a0 \u00a0 \u00a0\u00a0 Debug: Closing connection for https://x161.fyre.ibm.com:8140\n\u00a0 \u00a0 \u00a0\u00a0 Info: Downloaded certificate for ca from x161.fyre.ibm.com\n\u00a0 \u00a0 \u00a0\u00a0 Debug: Loading CRLs\n\u00a0 \u00a0 \u00a0\u00a0 Debug: Creating new connection for https://x161.fyre.ibm.com:8140\n\u00a0 \u00a0 \u00a0\u00a0 Debug: Starting connection for https://x161.fyre.ibm.com:8140\n\u00a0 \u00a0 \u00a0\u00a0 Error: Could not run: hostname \"x161.fyre.ibm.com\" does not match the server certificate\n\n\u00a0\nIs the configration not correct or missing something? How to config both server and agent?\n\nThanks,\n\u00a0\n\u00a0\n\n\u00a0", "environment": "x86_64 ubuntu-16.04", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14816", "fixedVersions": [], "id": "14816", "issueType": "Bug", "key": "SERVER-2620", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4ceda1d81f0069d8127c", "resolution": "Incomplete", "resolutionDate": "2019-09-04T10:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "How to run puppetserver and agent on different hosts?", "timeSpent": "PT0S", "updated": "2019-09-04T10:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "There were some mild security concerns raised in SERVER-1291. Naive benchmarking I did shows an order of magnitude improvement in repeated SSL requests to PuppetDB. Real-world usage at a site where catalog compilation made heavy use of PuppetDB queries showed a 10% benefit.\n\nI don't think the concerns expressed, subsequent compilations reusing the auth sessions of previous compilations, are serious enough to cancel the performance gains. Closing all established connections when a JRuby is returned to the pool might be a happy medium.\n\nOr, just relinquish control of the {{Connection}} header and let users add {{Connection: close}} for sessions they know are authenticated differently for different agents.", "created": "2022-01-13T17:24:00.000000"}], "components": [], "created": "2019-08-28T13:55:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40f79912"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwopr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_97810741_*|*_10007_*:*_1_*:*_77400472_*|*_3_*:*_2_*:*_1137559341_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_29187880439_*|*_10006_*:*_1_*:*_48307935039_*|*_10005_*:*_1_*:*_936783537"}], "description": "We currently force connections closed in Puppet Server's Ruby HTTP client by setting the Connection header on every request to \"close\".\n\n\u00a0\n\nLooking over why we did it turns out this was to maintain backwards compatibility, however Puppet's behavior changed shortly after this implementation without security issue. We should like-wise follow suite.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15416", "fixedVersions": [], "id": "15416", "issueType": "Improvement", "key": "SERVER-2616", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Re-use HTTP connections in Ruby code", "timeSpent": "PT0S", "updated": "2022-03-08T12:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4ceda1d81f0069d8127c", "body": "More info:\n\nTo run puppetserver and agent on different VMs, it needs commands\n\u00a0 \u00a0 puppetserver ca sign --all\n\n\u00a0 \u00a0 puppetserver ca list --all\n\nBut what is the similar subcommands if running from source? in which case there is no \"puppetserver\" but \"lein\".", "created": "2019-09-04T13:16:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "Is there any update on this issue? Thx.", "created": "2019-11-27T08:12:00.000000"}, {"author": "557058:6d9f4174-bf47-424d-a46a-6940b2255f29", "body": "That looks like an error in the documentation. For the command to work that way it has to be implemented as a Leiningen alias, which is done here [https://github.com/puppetlabs/puppetserver/blob/e3874b2360501a26518d2f904035a6b84f25b9d9/project.clj#L224-L227].\n\nSince the {{ca}} command is a {{puppetserver}} command I believe you need to do something like this:\n\n{{lein run -- -c dev/puppetserver.conf ca}}", "created": "2020-02-05T11:53:00.000000"}, {"author": "6243b1f045ece00069c8fe68", "body": "lein run \u2013 -c dev/puppetserver.conf ca run fine without any errors.", "created": "2020-03-27T05:14:00.000000"}, {"author": "6243b1f045ece00069c8fe68", "body": "lein run \u2013 -c dev/puppetserver.conf ca works fine", "created": "2020-03-27T05:15:00.000000"}], "components": ["Puppet Server"], "created": "2019-08-28T08:38:00.000000", "creator": "623a4ceda1d81f0069d8127c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@582bfb46"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwodb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_18304641872_*|*_6_*:*_1_*:*_0"}], "description": "According to document https://github.com/puppetlabs/puppetserver/blob/6.5.0/documentation/subcommands.markdown\n\n{color:#24292e}When running from source, the subcommand is :\n\u00a0 \u00a0{color:#24292e}lein {color}{color:#d73a49}<{color}{color:#24292e}subcommand{color}{color:#d73a49}>{color}{color:#24292e} -c /path/to/puppetserver.conf [--] [{color}{color:#d73a49}<{color}{color:#24292e}args{color}{color:#d73a49}>{color}{color:#24292e}]{color}\n{color}\n\n{color:#24292e}\nHowever \"lein ca ....\" does not work, it gets errors like:\n\n{color}\n{color:#006000}\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'ca' is not a task. See 'lein help'.{color}\n{color:#006000}\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Did you mean this?\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 jar\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 do\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 vcs\n\n`Lein help` also show no option of `ca`.\u00a0\nProbably the document does not match the actual usage of `lein`. {color}\n{color:#006000}Can you let me know how to run the similar subcommand of\u00a0 `{color:#24292e}puppetserver{color} ca ... ` when I run from source?\n\n\u00a0\n{color}", "environment": "x86_84-Linux , ubuntu 16.04", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15414", "fixedVersions": [], "id": "15414", "issueType": "Bug", "key": "SERVER-2615", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4ceda1d81f0069d8127c", "resolution": "Fixed", "resolutionDate": "2020-03-27T05:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "subcommands \"ca\" does not work", "timeSpent": "PT0S", "updated": "2020-03-27T05:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623a4ceda1d81f0069d8127c", "created": "2019-08-27T08:55:00.000000", "name": "spec.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10744"}, {"attacher": "623a4ceda1d81f0069d8127c", "created": "2019-08-27T09:04:00.000000", "name": "test.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10673"}], "comments": [{"author": "623a4ceda1d81f0069d8127c", "body": "Any update on this issue? Thx", "created": "2019-11-27T08:15:00.000000"}, {"author": "623e768c4a57610068e883dd", "body": "Any update on this issue?\u00a0 or is obsolete?\u00a0", "created": "2020-05-26T15:24:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "Did you run [https://github.com/puppetlabs/puppetserver/blob/6.x/dev-setup]\u00a0before running {{lein test}}?", "created": "2020-11-24T12:46:00.000000"}], "components": ["Puppet Server"], "created": "2019-08-27T09:06:00.000000", "creator": "623a4ceda1d81f0069d8127c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c172bbf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwmyf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/May/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_41327261215_*|*_6_*:*_1_*:*_0"}], "description": "1) Following instruction `[https://github.com/puppetlabs/puppetserver/blob/master/documentation/dev_running_from_source.markdown]`\n\nrun test \"lein spec\" and get errors as:\n\n\" ...\n\n...............2019-08-26 13:43:39,658 ERROR [main] [c.p.h.c.i.PersistentSyncHttpClient] Error executing http request\njava.net.ConnectException: Connection refused\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 at java.base/sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:779)\n\n\n\n\"\nThe complete log see the attachment.\nThe configuration is as the default, is there any special configuration that is not mentioned in the instruction?\n\n2) The test \"lein test\"\u00a0 shows :\n\"Ran 186 tests containing 2598 assertions.\n10 failures, 0 errors.\"\u00a0\n\n\nThese 10 failures are as follows:\n\"\nFAIL in (autosign-csr?-ruby-exe-test) (certificate_authority_test.clj:324)\nFAIL in (autosign-csr?-ruby-exe-test) (certificate_authority_test.clj:329)\nFAIL in (autosign-csr?-ruby-exe-test) (certificate_authority_test.clj:339)\nFAIL in (autosign-csr?-ruby-exe-test) (certificate_authority_test.clj:344)\nFAIL in (autosign-csr?-ruby-exe-test) (certificate_authority_test.clj:345)\nFAIL in (autosign-csr?-ruby-exe-test) (certificate_authority_test.clj:349)\nFAIL in (handle-put-certificate-request!-test) (certificate_authority_core_test.clj:242)\nFAIL in (handle-delete-certificate-request!-test) (certificate_authority_core_test.clj:217)\nFAIL in (handle-delete-certificate-request!-test) (certificate_authority_core_test.clj:218)\nFAIL in (handle-delete-certificate-request!-test) (certificate_authority_core_test.clj:220)\n\"\nIs there any special configuration on\u00a0 authority of SSL?", "environment": "x86-64 Linux, ubuntu 16.04", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16264", "fixedVersions": [], "id": "16264", "issueType": "Bug", "key": "SERVER-2614", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4ceda1d81f0069d8127c", "resolution": "Cannot Reproduce", "resolutionDate": "2020-12-17T15:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "{Running tests  gets errors of \"Connection refused\" on x86_64-linux}", "timeSpent": "PT0S", "updated": "2020-12-17T15:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We'll probably start working on this sometime in the next month or so, after we're finished with the work for our next PE release. In the future, I'd like to try to coordinate the server support for new Debians more closely with the agent support. Since Debian is the only FOSS-only master platform we support, the process around adding new ones is not well-established, and it fell through the cracks this time. But coming soon!", "created": "2019-09-06T10:10:00.000000"}, {"author": "623a4a598d8b9c0068b7e31a", "body": "Thanks. Also, it would be good to schedule the packaging work such that packages for the new OS are ready before the release of the OS, so that users can upgrade immediately.", "created": "2019-09-06T10:40:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yep, agreed. We did that for the recent RHEL 8 release, and I'm going to try to make sure we're tracking Debian more closely in the future. Thanks for filing this!", "created": "2019-09-06T10:43:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "These packages will be released next week with Puppet Server 6.7.0. Nightlies are available now from http://nightlies.puppet.com/apt/.\n\nPuppetDB packages will also be going out with that release, and their nightlies will be up shortly, if that is relevant to you.", "created": "2019-09-26T12:44:00.000000"}], "components": ["Puppet Server"], "created": "2019-08-24T11:13:00.000000", "creator": "623a4a598d8b9c0068b7e31a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6320ced8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwlgn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We are now shipping Debian 10 packages for Puppet Server. Note that these packages require Java 11 to be installed, rather than Java 8."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_156827839_*|*_1_*:*_1_*:*_870399603_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1829410615"}], "description": "Please build puppetserver packages for Debian 10 (buster).\n\nThey currently do not exist:\n* http://nightlies.puppetlabs.com/apt/pool/buster/puppet-nightly/p/\n* https://apt.puppetlabs.com/pool/buster/puppet/p/\n\nCompare with the available Debian 9 (stretch) packages:\n* https://apt.puppetlabs.com/pool/stretch/puppet/p/\n* http://nightlies.puppetlabs.com/apt/pool/stretch/puppet-nightly/p/\n\nThanks.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14815", "fixedVersions": ["SERVER 6.7.0"], "id": "14815", "issueType": "Bug", "key": "SERVER-2613", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4a598d8b9c0068b7e31a", "resolution": "Done", "resolutionDate": "2019-09-26T12:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Debian 10 (buster) packages of puppetserver", "timeSpent": "PT0S", "updated": "2019-09-27T14:51:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The puppetserver version of this update is included in https://github.com/puppetlabs/puppetserver/pull/2134.\n\nThe pe-puppetserver version is https://github.com/puppetlabs/pe-puppetserver/pull/373.", "created": "2019-08-23T09:22:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It appears that https://github.com/puppetlabs/ezbake/commit/fa844980a60e105270e0383ef1ddc4e8e3173d15 has broken ezbake builds for pe-puppetserver, need to get that sorted before this can go in. /cc [~accountid:70121:4c2994e4-73a9-4e99-971a-6d93d39be223]", "created": "2019-08-23T11:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've put up https://github.com/puppetlabs/ezbake/pull/551 which seems to fix the ezbake error. The build now succeeds. So we'll probably need another ezbake release.", "created": "2019-08-23T14:36:00.000000"}], "components": [], "created": "2019-08-22T17:38:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24b79e74"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2524"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke47:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_694422348_*|*_1_*:*_1_*:*_10110_*|*_3_*:*_2_*:*_260654056_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_63178321"}], "description": "This ezbake update contains support for new environment variables for setting the randomness source. This is used in FIPS builds to ensure a secure randomness sources. See SERVER-2602.", "epicLinkSummary": "FIPS-Enabled Puppet Server Side", "estimate": "PT0S", "externalId": "16932", "fixedVersions": ["SERVER 6.6.0"], "id": "16932", "issueType": "Task", "key": "SERVER-2612", "labels": [], "originalEstimate": "PT0S", "parent": "16326", "parentSummary": "FIPS-Enabled Puppet Server Side", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-09-03T12:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update Ezbake to 2.1.1 in all puppetserver and pe-puppetserver", "timeSpent": "PT0S", "updated": "2019-09-03T12:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We should wait to merge this, and see if JRuby needs to do any patch releases on top of this before we upgrade.", "created": "2019-08-22T17:13:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "New versions of lein (2.8+, we are now using 2.9.1 to release and deploy) do not include the {{project.clj}} at the root of the jar. This is used by ezbake when including JRuby as an additional jar when building pe-puppetserver. As a short term fix, I have put up https://github.com/puppetlabs/jruby-deps/pull/19 fixing this in jruby-deps, which ensures that this file will be present in the resulting jar. Once that is merged we will need to re-release jruby-deps to be able to continue building pe-puppetserver.", "created": "2019-08-29T16:30:00.000000"}], "components": [], "created": "2019-08-20T09:30:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7226dbdf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwhov:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_583861720_*|*_1_*:*_1_*:*_10853_*|*_10007_*:*_2_*:*_636150802_*|*_3_*:*_1_*:*_21956_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_314489"}], "description": "Shortly after we updated to JRuby 9.2.7.0, 9.2.8.0 was released. This update contains numerous performance and memory improvements, and also fixes a bug that currently makes SERVER-2193 less useful. We should update to 9.2.8.0.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16046", "fixedVersions": ["SERVER 6.6.0"], "id": "16046", "issueType": "Task", "key": "SERVER-2611", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-09-03T12:30:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update JRuby to 9.2.8.0", "timeSpent": "PT0S", "updated": "2019-09-03T12:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2019-08-20T08:36:00.000000", "creator": "5abd613dd4cf3c56be24b70d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c7a665b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-2854"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwhmv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1793979338_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_47898455162"}], "description": "Remove {{Ubuntu 14.04}} from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove Ubuntu 14.04 FOSS support", "estimate": "PT0S", "externalId": "15740", "fixedVersions": [], "id": "15740", "issueType": "Task", "key": "SERVER-2610", "labels": [], "originalEstimate": "PT0S", "parent": "58045", "parentSummary": "Remove Ubuntu 14.04 FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5abd613dd4cf3c56be24b70d", "resolution": "Done", "resolutionDate": "2021-03-17T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Ubuntu 14.04 from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2021-03-17T12:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Spoke with the Froyo team and this is non-trivial.  There's not an easy way to track how much space an environment is using in the cache and we foresee this as becoming less important with the introduction of multithreaded puppet.  ", "created": "2020-02-25T13:44:00.000000"}], "components": [], "created": "2019-08-09T18:07:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@363aa465"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Rank", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "10500.0"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwbqn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Nov/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6650891067_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_10616942571"}], "description": "A significant source of RAM usage in Puppet Server is the Puppet environment_cache:\n\nhttps://github.com/puppetlabs/puppet/blob/6.7.2/lib/puppet/environments.rb#L294\n\nThis cache is controlled by the {{environment_timeout}} settings allows users to trade off I/O and CPU time spent reading and parsing Puppet manifests by storing the results in RAM for use in multiple catalog compilations.\n\nPuppet Server should expose the RAM usage of each cached environment as a metric so that users can evaluate the cost of keeping their code cached in RAM and also plan for capacity increases as a result of adding new environments.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "16580", "fixedVersions": [], "id": "16580", "issueType": "New Feature", "key": "SERVER-2609", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Won't Do", "resolutionDate": "2020-02-25T13:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Expose RAM usage of the environment cache as a metric", "timeSpent": "PT0S", "updated": "2020-03-27T10:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're not releasing Server this time around.", "created": "2019-08-15T17:34:00.000000"}], "components": [], "created": "2019-08-08T16:00:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@739d9db7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9945"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwavz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Aug/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2720_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_610411599"}], "description": "(Initial planned release date: 2019-08-21)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-08-22T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.8.0 Release - 2019-08-21\n", "estimate": "PT0S", "externalId": "15060", "fixedVersions": [], "id": "15060", "issueType": "Task", "key": "SERVER-2608", "labels": [], "originalEstimate": "PT0S", "parent": "21262", "parentSummary": "Puppet Platform 6.8.0 Release - 2019-08-21\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Won't Do", "resolutionDate": "2019-08-15T17:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.6.0)", "timeSpent": "PT0S", "updated": "2019-08-15T17:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're not releasing Server this time around.", "created": "2019-08-15T17:34:00.000000"}], "components": [], "created": "2019-08-08T16:00:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7af12fbb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9945"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwavj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Aug/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2556_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_610428052"}], "description": "(Initial planned release date: 2019-08-21)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-08-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.8.0 Release - 2019-08-21\n", "estimate": "PT0S", "externalId": "17562", "fixedVersions": [], "id": "17562", "issueType": "Task", "key": "SERVER-2607", "labels": [], "originalEstimate": "PT0S", "parent": "21262", "parentSummary": "Puppet Platform 6.8.0 Release - 2019-08-21\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Won't Do", "resolutionDate": "2019-08-15T17:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.6.0)", "timeSpent": "PT0S", "updated": "2019-08-15T17:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're not releasing Server this time around.", "created": "2019-08-15T17:34:00.000000"}], "components": [], "created": "2019-08-08T16:00:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c23023f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9945"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwavb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Aug/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2536_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_610434701"}], "description": "(Initial planned release date: 2019-08-21)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-08-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.8.0 Release - 2019-08-21\n", "estimate": "PT0S", "externalId": "17136", "fixedVersions": [], "id": "17136", "issueType": "Task", "key": "SERVER-2606", "labels": [], "originalEstimate": "PT0S", "parent": "21262", "parentSummary": "Puppet Platform 6.8.0 Release - 2019-08-21\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Won't Do", "resolutionDate": "2019-08-15T17:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.6.0)", "timeSpent": "PT0S", "updated": "2019-08-15T17:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're not releasing Server this time around.", "created": "2019-08-15T17:34:00.000000"}], "components": [], "created": "2019-08-08T16:00:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fd98452"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9945"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwav3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Aug/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2786_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_610441272"}], "description": "(Initial planned release date: 2019-08-21)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-08-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.8.0 Release - 2019-08-21\n", "estimate": "PT0S", "externalId": "16931", "fixedVersions": [], "id": "16931", "issueType": "Task", "key": "SERVER-2605", "labels": [], "originalEstimate": "PT0S", "parent": "21262", "parentSummary": "Puppet Platform 6.8.0 Release - 2019-08-21\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Won't Do", "resolutionDate": "2019-08-15T17:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.6.0)", "timeSpent": "PT0S", "updated": "2019-08-15T17:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It sounds like all the information needed to catch this is already provided by the endpoint: If the same module appears multiple times, you're probably doing something odd with your workflow. If you know you have that workflow, you should watch out for this.\n\nWe're unlikely to do anything with this any time soon, so I'm going to close this. Please reopen if it becomes urgent.", "created": "2020-12-02T12:32:00.000000"}], "components": [], "created": "2019-08-06T19:31:00.000000", "creator": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The endpoint either reports concise output about installed modules, or reports a warning or error about the improper module installation."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60b6de3b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzw8af:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Aug/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_41796026161_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:* N/A\n*Puppet Server Version:* 6.3.1, 5.3.9 (PE 2018.1.9, PE 2019.1.1)\n*OS Name/Version:* CentOS 7\n\nIt is possible to copy, rename, or install modules within an environment's modules path to result in multiple copies of the same module. The {{environment_modules}} endpoint will then report the same module multiple times in the same environment.\n\n*Steps to reproduce*\n\n1. Install a module to an environment's modules path.\n2. Make a copy of that module within the same modules path. (ie. {{cp -r module_name module_name_2}})\n3. Confirm the endpoint's response.\n\n*Desired Behavior:*\n\nThe endpoint's report should align with the expected Puppet behavior when interpreting code in this scenario. For example, if that expected behavior is to use the first module found when interpreting Puppet code, then only the first\u00a0copy of the module found should be reported by the endpoint. (The expected behavior is unclear.)\n\nOR\n\nWarn or produce an error when the same module appears to be installed multiple times in an environment's modules path.\n\n*Actual Behavior:*\n\nThe endpoint reports the same module twice. It is unclear whether this negatively affects any other functionality or performance.\n\n{code}\n[root@pe-201911-master modules]# ls -la\ntotal 4\ndrwxr-xr-x. 3 pe-puppet pe-puppet   27 Aug  7 00:34 .\ndrwxr-xr-x. 6 pe-puppet pe-puppet  103 Aug  7 00:24 ..\ndrwxr-xr-x. 8 pe-puppet pe-puppet 4096 Aug  7 00:34 oracle_webgate\n[root@pe-201911-master modules]# curl --cert $(puppet config print hostcert) --key $(puppet config print hostprivkey) --insecure -X GET https://127.0.0.1:8140/puppet/v3/environment_modules | python -m json.tool | grep elibus\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n100   121  100   121    0     0    692      0 --:--:-- --:--:-- --:--:--   691\n                \"name\": \"elibus/oracle_webgate\",\n[root@pe-201911-master modules]#\n[root@pe-201911-master modules]# cp -r oracle_webgate/ oracle_webgate_2\n[root@pe-201911-master modules]# ls -la\ntotal 8\ndrwxr-xr-x. 4 pe-puppet pe-puppet   50 Aug  7 01:13 .\ndrwxr-xr-x. 6 pe-puppet pe-puppet  103 Aug  7 00:24 ..\ndrwxr-xr-x. 8 pe-puppet pe-puppet 4096 Aug  7 00:34 oracle_webgate\ndrwxr-xr-x. 8 root      root      4096 Aug  7 01:13 oracle_webgate_2\n[root@pe-201911-master modules]# curl --cert $(puppet config print hostcert) --key $(puppet config print hostprivkey) --insecure -X GET https://127.0.0.1:8140/puppet/v3/environment_modules | python -m json.tool | grep elibus\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   172  100   172    0     0   1113      0 --:--:-- --:--:-- --:--:--  1116\n                \"name\": \"elibus/oracle_webgate\",\n                \"name\": \"elibus/oracle_webgate\",\n[root@pe-201911-master modules]# curl --cert $(puppet config print hostcert) --key $(puppet config print hostprivkey) --insecure -X GET https://127.0.0.1:8140/puppet/v3/environment_modules | python -m json.tool\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   172  100   172    0     0   1144      0 --:--:-- --:--:-- --:--:--  1146\n[\n    {\n        \"modules\": [],\n        \"name\": \"enterprise\"\n    },\n    {\n        \"modules\": [\n            {\n                \"name\": \"elibus/oracle_webgate\",\n                \"version\": \"0.2.9\"\n            },\n            {\n                \"name\": \"elibus/oracle_webgate\",\n                \"version\": \"0.2.9\"\n            }\n        ],\n        \"name\": \"production\"\n    }\n]\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15058", "fixedVersions": [], "id": "15058", "issueType": "Bug", "key": "SERVER-2604", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "resolution": "Won't Fix", "resolutionDate": "2020-12-02T12:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Modules can be installed multiple times in a module dir, resulting in duplicate environment_modules entries", "timeSpent": "PT0S", "updated": "2020-12-02T12:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5e3375e183d74c0e821851f3", "body": "https://github.com/puppetlabs/puppetserver-ca-cli/pull/54 was opened for this issue. With the PR applied we get the following results.\n\n{code}\n[root@pe-201910-master ca]# echo '15C' > serial\n[root@pe-201910-master ca]# puppetserver ca generate --certname testing123 --ca-client\nSuccessfully saved certificate for testing123 to /etc/puppetlabs/puppet/ssl/certs/testing123.pem\nSuccessfully saved certificate for testing123 to /etc/puppetlabs/puppet/ssl/ca/signed/testing123.pem\nSuccessfully saved private key for testing123 to /etc/puppetlabs/puppet/ssl/private_keys/testing123.pem\nSuccessfully saved public key for testing123 to /etc/puppetlabs/puppet/ssl/public_keys/testing123.pem\n[root@pe-201910-master ca]# cat serial\n015D\n{code}", "created": "2019-08-06T16:31:00.000000"}], "components": ["CLI"], "created": "2019-08-06T13:48:00.000000", "creator": "5e3375e183d74c0e821851f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1349a961"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Priority"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzw82n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Puppet Server CA CLI now correctly uses hex serial numbers for certs."}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "4.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "35760,36174,38912,44506"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_411696569_*|*_1_*:*_1_*:*_623761547_*|*_10007_*:*_1_*:*_97716664_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.x*\n *Puppet Server Version: 6.x*\n *OS Name/Version: EL 7*\n\nPuppetserver cli 1.3.1 will convert the {{serial}} file from a hex number to an integer when running {{puppetserver ca generate --certname testing --ca-client}}. Unfortunately, this will cause duplicate serials to be used in new certificates. The issue we saw this with reverted {{0x686B}} to {{0x0678}}, so new certificates used already provisioned serials, some of which were revoked. Thousands of more would have been reused.\n\nThis looks to be caused by converting the hex to an int here: https://github.com/puppetlabs/puppetserver-ca-cli/blob/master/lib/puppetserver/ca/local_certificate_authority.rb#L96 instead of {{to_i(16)}} and then when it is written at https://github.com/puppetlabs/puppetserver-ca-cli/blob/master/lib/puppetserver/ca/local_certificate_authority.rb#L262 instead of {{serial.to_s(16)}}\n\n*Desired Behavior:*\n\nRunning {{puppetserver ca generate --certname testing --ca-client}} should increment the {{serial}} file.\n\n*Actual Behavior:*\n\nRunning {{puppetserver ca generate --certname testing --ca-client}} converts the hex serial file into a decimal which can be lower than the hex value, causing it to reuse serial numbers on future certificate generation.\n\nExamples:\n \n{code}\n[root@pe-201910-master ca]# cat serial \n014B\n[root@pe-201910-master ca]# puppetserver ca generate --certname testing --ca-client\nSuccessfully saved certificate for testing to /etc/puppetlabs/puppet/ssl/certs/testing.pem\nSuccessfully saved certificate for testing to /etc/puppetlabs/puppet/ssl/ca/signed/testing.pem\nSuccessfully saved private key for testing to /etc/puppetlabs/puppet/ssl/private_keys/testing.pem\nSuccessfully saved public key for testing to /etc/puppetlabs/puppet/ssl/public_keys/testing.pem\n[root@pe-201910-master ca]# cat serial \n15\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17134", "fixedVersions": ["SERVER 6.3.2"], "id": "17134", "issueType": "Bug", "key": "SERVER-2603", "labels": ["jira_escalated", "resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e3375e183d74c0e821851f3", "resolution": "Fixed", "resolutionDate": "2019-08-19T16:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver ca generate converts serial to decimal", "timeSpent": "PT0S", "updated": "2021-06-10T04:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] thanks for reminding me.\u00a0 probably not super well defined ticket, but hopefully this is enough.", "created": "2019-07-31T16:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've got PRs:\n * against puppetserver to stop managing egd in non-service cli subcommands that we provide (merged) [https://github.com/puppetlabs/puppetserver/pull/2147]\n * against ezbake to stop managing egd in service related cli subcommands that it provides (merged) [https://github.com/puppetlabs/ezbake/pull/548]\n * against puppet-enterprise-modules to manage egd for services with JAVA_ARGS and provide a CLI_TOOLS_EGD variable for non-service subcommands (merged)\u00a0[https://github.com/puppetlabs/puppet-enterprise-modules/pull/509]\n * against pe-puppet-server-extensions to honor the CLI_TOOLS_EGD in our non-service subcommands (merged) [https://github.com/puppetlabs/pe-puppet-server-extensions/pull/1089]\n\nOnce the rest of these are merged AND ezbake is released with my changes we'll need to take up the new ezbake everywhere.", "created": "2019-08-15T14:25:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "(wrt docs, this isn't so much a bug fix or improvement, just a lateral change that enables some other work that user's might be curious about)", "created": "2019-08-17T10:28:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ezbake change went out in 1.1.1, bump for puppetserver is in\u00a0[puppetserver#2134|https://github.com/puppetlabs/puppetserver/pull/2134]", "created": "2019-08-21T22:43:00.000000"}], "components": ["Puppet Server"], "created": "2019-07-31T16:31:00.000000", "creator": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "full entropy blocking /dev/random use for all security related random number gen"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17ff63cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2524"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzw3hb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server no longer hardcodes Java's egd parameter. Users may manage the value via JAVA_ARGS or JAVA_ARGS_CLI in the defaults file."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Aug/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_319621243_*|*_1_*:*_1_*:*_71085388_*|*_10007_*:*_1_*:*_613833306_*|*_3_*:*_2_*:*_900849356_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_316193734"}], "epicLinkSummary": "FIPS-Enabled Puppet Server Side", "estimate": "PT0S", "externalId": "17132", "fixedVersions": ["SERVER 6.6.0"], "id": "17132", "issueType": "New Feature", "key": "SERVER-2602", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": "16326", "parentSummary": "FIPS-Enabled Puppet Server Side", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "resolution": "Done", "resolutionDate": "2019-08-26T09:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server should use /dev/random for RNG in FIPS", "timeSpent": "PT0S", "updated": "2019-09-12T11:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've spoke with SLV about this, and written up a reference doc for their work and other internal testing: https://docs.google.com/document/d/18WLw5dqx1bLxMEmry9W-gI9-hgPYf-Fn8oZQWSCBfNs/edit?usp=sharing\n\nThe current goal is to have a baseline idea of the perf characteristics as compares to single-threaded mode for the January release, followed by more targeted scale testing in February and March.", "created": "2020-01-13T09:47:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We have the results of the initial smoke test: https://confluence.puppetlabs.com/pages/viewpage.action?spaceKey=SRE&title=Apples+2+Apples+with+Thread-Safe+Puppet\n\nResults look generally slightly better than single-threaded mode with no special tuning, notably lower CPU usage and slight improvement in compile times. The memory usage decrease was more obvious outside the Java heap, but we might be able to configure the heap lower now. That will need further experimentation.\n\nNext step, scale testing.", "created": "2020-01-21T10:23:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "While experimental testing of puppetserver on its own is good, I'd really encourage us to take this opportunity to update our performance test suites to rely less on testing only compiles. Agentless is a core part of the product now, and we need to ensure that our advertised \"nodes per GiB RAM\" numbers means not just compiles, but any mix of enforcement and ad-hoc.\n\nI'm going to work on a proposal for what that needs to look like and will follow up.", "created": "2020-02-03T14:53:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're unlikely to do any more with this any time soon.", "created": "2022-02-22T14:51:00.000000"}], "components": [], "created": "2019-07-30T15:45:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46313bd4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2823"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykecv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6514653_*|*_3_*:*_1_*:*_774693448_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_65164726413_*|*_10006_*:*_1_*:*_5850211358_*|*_10005_*:*_1_*:*_9247407936"}], "description": "We should use SLV's gatling setup to test the performance characteristics and resource requirements of Puppet Server set up to run with run JRuby instance and multiple threads.\n\nThis will enable us to give some tuning recommendations when multithreading is enabled.\n\nTo really exercise the thread safety changes we plan to make, we should ensure that multiple agents making requests for different catalogs in different environments are used to put load on the Server.", "epicLinkSummary": "Mutlithreaded Perfomance Evaluation", "estimate": "PT0S", "externalId": "14814", "fixedVersions": [], "id": "14814", "issueType": "Task", "key": "SERVER-2601", "labels": [], "originalEstimate": "PT0S", "parent": "16363", "parentSummary": "Mutlithreaded Perfomance Evaluation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2022-02-22T14:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Performance testing with single JRuby instance running multi-threaded", "timeSpent": "PT0S", "updated": "2022-02-22T14:51:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm doing some pretty significant work in the JRuby utils library right, I'm going to keep this in mind and see if it's feasible to provide any more information in those cases.", "created": "2019-10-25T17:30:00.000000"}], "components": [], "created": "2019-07-29T16:04:00.000000", "creator": "557058:03aedc5a-47b0-4c60-a13f-46427c87153e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@700de798"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzw007:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7608323710_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_73524655683"}], "description": "*Puppet Version: 5.5.14*\n *Puppet Server Version: 5.3.8*\n *OS Name/Version: RHEL 7.5*\n\n*Desired Behavior:*\u00a0Puppet Server should try to self-correct or output a more helpful error message with a summary of the types of things that could have caused the issue and how the system can be recovered.\u00a0 **\n\n*Actual Behavior:*\n\nUnder certain conditions, when Puppet server fails to start up, it will output the following message into the logs:\n\n[https://github.com/puppetlabs/jruby-utils/blob/c68cd44323aec3c0c708c285a9c7436ec379f49b/src/java/com/puppetlabs/jruby_utils/pool/JRubyPool.java#L321]\n\nAs most users aren't likely familiar with what a poison pill is or what to do about it, this should be changed in favor of a more helpful explanation of what has failed and possible reasons why.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15739", "fixedVersions": [], "id": "15739", "issueType": "Improvement", "key": "SERVER-2600", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:03aedc5a-47b0-4c60-a13f-46427c87153e", "resolution": "Won't Fix", "resolutionDate": "2022-02-22T16:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve \"a pill has been inserted\" error message to be more helpful in the event of a failure", "timeSpent": "PT0S", "updated": "2022-02-22T16:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is this something that is happening all the time for you? Or did it only happen once and then go away as the CA state changed? We've seen this kind of thing before when a cert gets signed (and therefore its certificate request disappears) while trying to list all the certs and CSRs.", "created": "2019-07-25T17:22:00.000000"}, {"author": "6243add27a3f9e006ab1849d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]: it happens all the time :)", "created": "2019-07-26T06:51:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "What is the state of the SSL dir on your master? ({{/etc/puppetlabs/puppet/ssl}}) Specifically, I'm curious if there are any files in the {{/ssl/ca/requests}} dir, since this is the dir that the tool is trying to parse pending requests from.\n\nDoes it work without the {{--all}} flag?", "created": "2019-08-02T11:17:00.000000"}, {"author": "6243add27a3f9e006ab1849d", "body": "Thank you Maggie, this was a great hint!\nThere were empty .pem files in the requests dir.\nAfter deleting them, everything works like expected.\n\nMaybe it's worth to improve the error message / handling here?", "created": "2019-08-03T07:00:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Great, glad we could fix it! We can definitely look into better error messaging. Do you mind if I add something to the description of this ticket and repurposed it to track that work?", "created": "2019-08-05T09:11:00.000000"}, {"author": "6243add27a3f9e006ab1849d", "body": "updated the ticket.", "created": "2019-08-05T11:03:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this feature, for us to actively work on this feature.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T13:22:00.000000"}], "components": ["Certificate Authority", "CLI"], "created": "2019-07-25T03:31:00.000000", "creator": "6243add27a3f9e006ab1849d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59539f99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvxyn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7998853809_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_74725042593"}], "description": "*Puppet Version: 6.7.0*\n *Puppet Server Version: 6.5.0*\n *OS Name/Version: Debian 9.9*\n\n\u00a0\n\n*Desired Behavior:*\n\nList all signed certificates of the authority. If there are incompatible files in some directories (e.g. empty certificate files), show an error message instead of a 500 with not very useful information\n\n*Actual Behavior:*\n\n\u00a0\n{code:java}/opt/puppetlabs/bin/puppetserver ca list --all\n2019-07-25 09:29:42.694368 WARN  puppetlabs.facter - locale environment variables were bad; continuing with LANG=C LC_ALL=C\nError:\n    code: 500\n    body: Internal Server Error: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0\nNo certificates to list\n\n{code}\nLogs says:\n{code:java}==> /var/log/puppetlabs/puppetserver/puppetserver.log <====> /var/log/puppetlabs/puppetserver/puppetserver.log <==2019-07-25T09:30:26.444Z ERROR [qtp116214013-34] [p.r.core] Internal Server Error: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:657) at java.util.ArrayList.get(ArrayList.java:433) at com.puppetlabs.ssl_utils.SSLUtils.pemToCertificateRequest(SSLUtils.java:417) at puppetlabs.ssl_utils.core$fn__21859$pem__GT_csr__21864$fn__21865.invoke(core.clj:584) at puppetlabs.ssl_utils.core$fn__21859$pem__GT_csr__21864.invoke(core.clj:577) at puppetlabs.puppetserver.certificate_authority$fn__37270$get_certificate_status_STAR___37275$fn__37276.invoke(certificate_authority.clj:1355) at puppetlabs.puppetserver.certificate_authority$fn__37270$get_certificate_status_STAR___37275.invoke(certificate_authority.clj:1347) at clojure.core$partial$fn__5843.invoke(core.clj:2638) at clojure.core$map$fn__5866.invoke(core.clj:2755) at clojure.lang.LazySeq.sval(LazySeq.java:42) at clojure.lang.LazySeq.seq(LazySeq.java:51) at clojure.lang.Cons.next(Cons.java:39) at clojure.lang.RT.next(RT.java:713) at clojure.core$next__5386.invokeStatic(core.clj:64) at clojure.core$next__5386.invoke(core.clj:64) at schema.spec.collection$element_transformer$fn__2392.invoke(collection.clj:26) at schema.spec.collection.CollectionSpec$fn__2432.invoke(collection.clj:79) at clojure.core$comp$fn__5807.invoke(core.clj:2569) at puppetlabs.puppetserver.certificate_authority$fn__37322$get_certificate_statuses__37327.invoke(certificate_authority.clj:1380) at puppetlabs.services.ca.certificate_authority_core$certificate_statuses$fn__38853$fn__38856.invoke(certificate_authority_core.clj:306) at liberator.core$run_handler.invokeStatic(core.clj:176) at liberator.core$run_handler.invoke(core.clj:131) at liberator.core$handle_ok.invokeStatic(core.clj:224) at liberator.core$handle_ok.invoke(core.clj:224) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$multiple_representations_QMARK_.invokeStatic(core.clj:232) at liberator.core$multiple_representations_QMARK_.invoke(core.clj:232) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$put_to_existing_QMARK_.invokeStatic(core.clj:305) at liberator.core$put_to_existing_QMARK_.invoke(core.clj:305) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$post_to_existing_QMARK_.invokeStatic(core.clj:308) at liberator.core$post_to_existing_QMARK_.invoke(core.clj:308) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$method_patch_QMARK_.invokeStatic(core.clj:315) at liberator.core$method_patch_QMARK_.invoke(core.clj:315) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$method_delete_QMARK_.invokeStatic(core.clj:317) at liberator.core$method_delete_QMARK_.invoke(core.clj:317) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$if_modified_since_exists_QMARK_.invokeStatic(core.clj:337) at liberator.core$if_modified_since_exists_QMARK_.invoke(core.clj:337) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$if_none_match_exists_QMARK_.invokeStatic(core.clj:355) at liberator.core$if_none_match_exists_QMARK_.invoke(core.clj:355) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$if_unmodified_since_exists_QMARK_.invokeStatic(core.clj:375) at liberator.core$if_unmodified_since_exists_QMARK_.invoke(core.clj:375) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$if_match_exists_QMARK_.invokeStatic(core.clj:389) at liberator.core$if_match_exists_QMARK_.invoke(core.clj:389) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$exists_QMARK_.invokeStatic(core.clj:392) at liberator.core$exists_QMARK_.invoke(core.clj:392) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$processable_QMARK_.invokeStatic(core.clj:395) at liberator.core$processable_QMARK_.invoke(core.clj:395) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$encoding_available_QMARK_.invokeStatic(core.clj:399) at liberator.core$encoding_available_QMARK_.invoke(core.clj:399) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$accept_encoding_exists_QMARK_.invokeStatic(core.clj:416) at liberator.core$accept_encoding_exists_QMARK_.invoke(core.clj:416) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$accept_charset_exists_QMARK_.invokeStatic(core.clj:429) at liberator.core$accept_charset_exists_QMARK_.invoke(core.clj:429) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$accept_language_exists_QMARK_.invokeStatic(core.clj:443) at liberator.core$accept_language_exists_QMARK_.invoke(core.clj:443) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$media_type_available_QMARK_.invokeStatic(core.clj:453) at liberator.core$media_type_available_QMARK_.invoke(core.clj:453) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$accept_exists_QMARK_.invokeStatic(core.clj:456) at liberator.core$accept_exists_QMARK_.invoke(core.clj:456) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$is_options_QMARK_.invokeStatic(core.clj:473) at liberator.core$is_options_QMARK_.invoke(core.clj:473) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$valid_entity_length_QMARK_.invokeStatic(core.clj:476) at liberator.core$valid_entity_length_QMARK_.invoke(core.clj:476) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$known_content_type_QMARK_.invokeStatic(core.clj:479) at liberator.core$known_content_type_QMARK_.invoke(core.clj:479) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$valid_content_header_QMARK_.invokeStatic(core.clj:481) at liberator.core$valid_content_header_QMARK_.invoke(core.clj:481) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$allowed_QMARK_.invokeStatic(core.clj:484) at liberator.core$allowed_QMARK_.invoke(core.clj:484) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$authorized_QMARK_.invokeStatic(core.clj:487) at liberator.core$authorized_QMARK_.invoke(core.clj:487) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$malformed_QMARK_.invokeStatic(core.clj:490) at liberator.core$malformed_QMARK_.invoke(core.clj:490) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$method_allowed_QMARK_.invokeStatic(core.clj:493) at liberator.core$method_allowed_QMARK_.invoke(core.clj:493) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$uri_too_long_QMARK_.invokeStatic(core.clj:496) at liberator.core$uri_too_long_QMARK_.invoke(core.clj:496) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$known_method_QMARK_.invokeStatic(core.clj:499) at liberator.core$known_method_QMARK_.invoke(core.clj:499) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$service_available_QMARK_.invokeStatic(core.clj:502) at liberator.core$service_available_QMARK_.invoke(core.clj:502) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$initialize_context.invokeStatic(core.clj:504) at liberator.core$initialize_context.invoke(core.clj:504) at liberator.core$run_resource.invokeStatic(core.clj:595) at liberator.core$run_resource.invoke(core.clj:593) at puppetlabs.services.ca.certificate_authority_core$certificate_statuses$fn__38853.invoke(certificate_authority_core.clj:293) at compojure.response$fn__17209.invokeStatic(response.clj:33) at compojure.response$fn__17209.invoke(response.clj:21) at compojure.response$fn__17182$G__17177__17189.invoke(response.clj:6) at puppetlabs.services.ca.certificate_authority_core$fn__38865$web_routes__38870$fn__38871$fn__38874.invoke(certificate_authority_core.clj:316) at bidi.ring$fn__16996.invokeStatic(ring.cljc:25) at bidi.ring$fn__16996.invoke(ring.cljc:21) at bidi.ring$fn__16981$G__16976__16990.invoke(ring.cljc:16) at puppetlabs.comidi$make_handler$fn__18912.invoke(comidi.clj:245) at puppetlabs.trapperkeeper.authorization.ring_middleware$fn__25398$wrap_authorization_check__25403$fn__25404$fn__25405.invoke(ring_middleware.clj:290) at puppetlabs.ring_middleware.core$fn__22991$wrap_bad_request__23000$fn__23003$fn__23009.invoke(core.clj:170) at puppetlabs.puppetserver.ringutils$fn__35537$wrap_with_trapperkeeper_or_client_whitelist_authorization__35542$fn__35543$fn__35547.invoke(ringutils.clj:124) at puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357) at puppetlabs.ring_middleware.core$fn__23089$wrap_uncaught_errors__23098$fn__23101$fn__23106.invoke(core.clj:216) at puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__35526.invoke(ringutils.clj:83) at puppetlabs.ring_middleware.core$fn__22739$wrap_response_logging__22744$fn__22745$fn__22746.invoke(core.clj:53) at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__28680.invoke(jetty9_core.clj:433) at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source) at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167) at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102) at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$fn__28259$normalize_uri_handler__28264$fn__28265$fn__28266.invoke(normalized_uri_helpers.clj:74) at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152) at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:753) at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56) at com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36) at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:174) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:505) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:427) at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:321) at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804) at java.lang.Thread.run(Thread.java:748)==> \n\n/var/log/puppetlabs/puppetserver/puppetserver-access.log <==10.156.0.4 - - [25/Jul/2019:09:30:26 +0000] \"GET /puppet-\nca/v1/certificate_statuses/any_key HTTP/1.1\" 500 77 \"-\" \"PuppetserverCaCli\" 24 - -\n{code}\n\u00a0edit:\n\nAfter cleaning up the requests directory, everything works like expected.\n\nBut it would very helpful to get a better error message / handling.\u00a0\n\n\u00a0", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "15475", "fixedVersions": [], "id": "15475", "issueType": "Improvement", "key": "SERVER-2599", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243add27a3f9e006ab1849d", "resolution": "Won't Do", "resolutionDate": "2022-03-08T13:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver ca list --all results in status 500", "timeSpent": "PT0S", "updated": "2022-03-08T13:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c100c4a57610068e74585", "attachments": [], "comments": [{"author": "623c100c4a57610068e74585", "body": "https://github.com/puppetlabs/puppetserver/pull/2125 has been merged but this is still set to ACCEPTED. Setting to RESOLVED with the next .y version since I don't know what's normal and this looks like the best thing.", "created": "2020-03-14T15:42:00.000000"}], "components": [], "created": "2019-07-19T06:57:00.000000", "creator": "623c100c4a57610068e74585", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@eaf780c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvt5z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_887670197_*|*_10007_*:*_1_*:*_12372177120_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3540_*|*_10005_*:*_1_*:*_7421197433"}], "description": "While Puppet::Server::HttpClient supports HTTP basic auth on POST, it doesn't on GET. This is unlike the Puppet::Network::HTTP::Connection implementation in Puppet Agent. This can give unexpected results when writing a Hiera lookup function.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15066", "fixedVersions": ["SERVER 6.y"], "id": "15066", "issueType": "Improvement", "key": "SERVER-2597", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c100c4a57610068e74585", "resolution": "Fixed", "resolutionDate": "2020-03-14T15:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet::Server::HttpClient doesn't support HTTP basic auth on GET", "timeSpent": "PT0S", "updated": "2020-03-14T15:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Huh, wonder if this works now.", "created": "2022-02-22T16:01:00.000000"}], "components": [], "created": "2019-07-18T09:17:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4650d168"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ry:f"}], "description": "Currently, {{puppet module install}} and some other {{puppet module}} subcommands do not work in FIPS mode. So in order to start testing on FIPS platforms, we are skipping these tests. When {{puppet module}} has been fixed to work in FIPS mode, we need to re-enable these tests.\n\nPR disabling the tests: https://github.com/puppetlabs/puppetserver/pull/2122", "duedate": "2022-06-30T00:00:00.000000", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16043", "fixedVersions": [], "id": "16043", "issueType": "Task", "key": "SERVER-2596", "labels": ["low-hanging-fruit", "needs_repro"], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Re-enable tests using `puppet module` in FIPS mode", "timeSpent": "PT0S", "updated": "2022-03-09T09:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-07-17T20:02:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@247dc4dd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9898"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvs6n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2404_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_764802948"}], "description": "(Initial planned release date: 2019-07-23)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-07-24T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.7.0 Release - 2019-07-23\n", "estimate": "PT0S", "externalId": "15472", "fixedVersions": [], "id": "15472", "issueType": "Task", "key": "SERVER-2595", "labels": [], "originalEstimate": "PT0S", "parent": "22194", "parentSummary": "Puppet Platform 6.7.0 Release - 2019-07-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-07-26T16:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.5.0)", "timeSpent": "PT0S", "updated": "2019-07-26T16:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-07-17T20:02:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24808f4b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9898"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvs67:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2399_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_764796794"}], "description": "(Initial planned release date: 2019-07-23)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-07-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.7.0 Release - 2019-07-23\n", "estimate": "PT0S", "externalId": "14813", "fixedVersions": [], "id": "14813", "issueType": "Task", "key": "SERVER-2594", "labels": [], "originalEstimate": "PT0S", "parent": "22194", "parentSummary": "Puppet Platform 6.7.0 Release - 2019-07-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-07-26T16:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.5.0)", "timeSpent": "PT0S", "updated": "2019-07-26T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-07-17T20:02:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@85f74d5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9898"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvs5z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2297_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_764780115"}], "description": "(Initial planned release date: 2019-07-23)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-07-18T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.7.0 Release - 2019-07-23\n", "estimate": "PT0S", "externalId": "17561", "fixedVersions": [], "id": "17561", "issueType": "Task", "key": "SERVER-2593", "labels": [], "originalEstimate": "PT0S", "parent": "22194", "parentSummary": "Puppet Platform 6.7.0 Release - 2019-07-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-07-26T16:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.5.0)", "timeSpent": "PT0S", "updated": "2019-07-26T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-07-17T20:01:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@621427fa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9898"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvs5r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2679_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_764479925"}], "description": "(Initial planned release date: 2019-07-23)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-07-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.7.0 Release - 2019-07-23\n", "estimate": "PT0S", "externalId": "17129", "fixedVersions": [], "id": "17129", "issueType": "Task", "key": "SERVER-2592", "labels": [], "originalEstimate": "PT0S", "parent": "22194", "parentSummary": "Puppet Platform 6.7.0 Release - 2019-07-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-07-26T16:23:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.5.0)", "timeSpent": "PT0S", "updated": "2019-07-26T16:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We do not currently return extension information via the {{certificate_status}} API, which is where {{list}} gets its info. So we'll need to add that before we can do this. https://puppet.atlassian.net/browse/SERVER-2718", "created": "2020-01-15T14:38:00.000000"}], "components": [], "created": "2019-07-16T14:41:00.000000", "creator": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b36c645"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwlan:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The `puppetserver ca list` command will now list any authorization extensions on a cert or CSR, in addition to its subject alt names."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_99943604_*|*_1_*:*_1_*:*_4391920477_*|*_10007_*:*_1_*:*_516495796_*|*_3_*:*_1_*:*_167044365_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5416870324_*|*_10005_*:*_1_*:*_12561991778"}], "description": "Right now `puppetserver ca list` will show the dns alt names in the certificate request so you can determine whether to sign based on the presence of the added SANs. A CSR may also have extension requests in it, which can also have security implications. The [ppAuthCert extensions|https://github.com/puppetlabs/puppet/blob/master/lib/puppet/ssl/oids.rb#L67] for example, specifically pp_auth_role, can be used to specify a compiler in lovejoy, and we'd like to be able to check whether or not a csr has extensions before signing it in PE automation tooling that signing certs, for example.\n\nSince use of pp_auth_role requires that allowed-authorized-extensions be set true in puppetserver's ca.conf, this would allow any cert with pp_auth_role set to be signed, and it would be important for the customer to see this information as well.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17560", "fixedVersions": ["SERVER 6.11.0"], "id": "17560", "issueType": "Improvement", "key": "SERVER-2591", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "resolution": "Done", "resolutionDate": "2020-04-09T14:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The puppetserver ca list should show extensions alongside SANs", "timeSpent": "PT0S", "updated": "2020-04-09T14:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey Jean, here's the ticket for \"maint\" work that warrants docs.", "created": "2019-07-10T16:34:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Cool, thank you!\n", "created": "2019-07-10T16:48:00.000000"}], "components": [], "created": "2019-07-10T16:32:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ab3b940"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvmzb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The way we were setting our source of randomness for CLI commands was silently broken. Consequently invocations of puppetserver gem, puppetserver irb, etc should be 15-30% faster to start up. Service starting and reloading should see similar improvements as well as some marginal improvements to top end performance, especially in environments with limited sources of entropy.\n\nIt should be easier to build puppetserver outside our network now (not 100% easy but slightly improved)\n\nWe used to ship an old deprecated version of facter with the puppetserver package (it should have been ignore and was completely unnecessary)"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_83556_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_495558872"}], "description": "There were several notable items that went into Puppet Server as maint work in the lead up to the July 2019 releases. This is a tracking ticket to get them into docs' backlog.\n\nThey are:\n\n* The way we were setting our source of randomness for CLI commands was silently broken. Consequently invocations of puppetserver gem, puppetserver irb, etc should be 15-30% faster to start up. Service starting and reloading should see similar improvements as well as some marginal improvements to top end performance, especially in environments with limited sources of entropy.\n\n^ this is the main thing\n\nBut also two minor fixups:\n\n* It should be easier to build puppetserver outside our network now (not 100% easy but slightly improved)\n* We used to ship an old deprecated version of facter with the puppetserver package (it should have been ignore and was completely unnecessary)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17559", "fixedVersions": ["SERVER 5.3.9", "SERVER 6.0.5", "SERVER 6.3.1", "SERVER 6.5.0"], "id": "17559", "issueType": "Task", "key": "SERVER-2590", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2019-07-16T10:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tracking ticket for maint release notes in July 2019", "timeSpent": "PT0S", "updated": "2019-07-16T10:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:97578a32-3955-4c5c-939e-58a878437b49", "attachments": [], "comments": [{"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Adding a PR at\u00a0[https://github.com/puppetlabs/puppetserver-ca-cli/pull/53]", "created": "2019-07-10T16:08:00.000000"}], "components": [], "created": "2019-07-10T16:05:00.000000", "creator": "557058:97578a32-3955-4c5c-939e-58a878437b49", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c34fde2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvmy7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "You can now specify a `--certname` flag with the `puppetserver ca list` command, which will limit the output to information about the requested cert, and log an error if the requested cert does not exist in any form."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_530089239_*|*_1_*:*_1_*:*_433235286_*|*_10007_*:*_1_*:*_61677821_*|*_5_*:*_1_*:*_0"}], "description": "The old {{puppet cert list}} command has been deprecated by {{puppetserver ca list}}.\n\nPreviously using {{puppet cert list}}, it was possible to query for, or list, a specified set of certificates. This functionality should be added to {{puppetserver ca list}} as well.\n\nSuggested implementation:\n\n{code}\npuppetserver ca list --certname NAME[,NAME]\n{code}\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16041", "fixedVersions": ["SERVER 5.3.10", "SERVER 6.0.6", "SERVER 6.3.2", "SERVER 6.5.0"], "id": "16041", "issueType": "Improvement", "key": "SERVER-2589", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:97578a32-3955-4c5c-939e-58a878437b49", "resolution": "Done", "resolutionDate": "2019-07-22T12:49:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support listing specific certificates via the CLI", "timeSpent": "PT0S", "updated": "2019-07-22T14:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Confirmed tag was merged up w/ applicable commits.\n\nDeleted release branch\n\nOpened PR to teardown release pipeline\n\n\u00a0\n\nWill keep this ticket open until after the retro to ensure any additional work for Winston is done.", "created": "2019-07-15T14:28:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "No actions for this from the retro.", "created": "2019-07-24T11:00:00.000000"}], "components": [], "created": "2019-07-10T07:15:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63c3f869"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9765"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvmh3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7228_*|*_10007_*:*_1_*:*_3870590_*|*_3_*:*_1_*:*_555716_*|*_10009_*:*_1_*:*_761279399_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_457406595"}], "description": "(Initial planned release date: 2019-07-16)\n * Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n * Delete release branch if created.\n * Remove Jenkins pipelines for release branch if created.\n * Update Winston and any relevant Confluence pages with any changes needed in the release process.", "duedate": "2019-07-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.10 Release - 2019-07-16\n", "estimate": "PT0S", "externalId": "17558", "fixedVersions": [], "id": "17558", "issueType": "Task", "key": "SERVER-2588", "labels": [], "originalEstimate": "PT0S", "parent": "27468", "parentSummary": "Puppet Platform 6.0.10 Release - 2019-07-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-24T11:00:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.0.5)", "timeSpent": "PT0S", "updated": "2019-07-24T11:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The agent release pipeline for some reason didn't trigger a server build when it was tagged. Consequently, I did a manual merge of the agent tag into our release branch and triggered the CI run. Once that clears CI I'll do our tag, sometime before Romania's Monday. (The diff between the sha we tested and the one I promoted was almost non-existent, I just want to see this t crossed correctly)", "created": "2019-07-12T16:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The build with the agent tag successfully passed our FOSS pipeline (and the same server code had previously had passed PE integration).\n\n[https://github.com/puppetlabs/puppetserver/commits/6.0.5]\n\n[http://builds.delivery.puppetlabs.net/puppetserver/6.0.5/]", "created": "2019-07-14T14:20:00.000000"}], "components": [], "created": "2019-07-10T07:11:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38eae71b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9765"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvmgv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_32966_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_371305544"}], "description": "(Initial planned release date: 2019-07-16)\n * Ensure the candidate SHA has passed all applicable testing\n * The candidate SHA that the release branch was branched from should pass CI,\n be promoted into PE if applicable, and if so, pass PE's CI. If there are\n failures resolve them or escalate to someone who can.\n * Run the release pipeline for the release or maintenance branch being released\n from. This pipeline currently starts with\n \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n build, stage and promote into PE.\n * Verify tagged release version is built, tested and artifacts exist at\n builds.delivery.puppetlabs.net.\n NOTE - Docker pipelines will fail between when a tag is pushed and\n that tag becomes publicly available for download!!", "duedate": "2019-07-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.10 Release - 2019-07-16\n", "estimate": "PT0S", "externalId": "17127", "fixedVersions": [], "id": "17127", "issueType": "Task", "key": "SERVER-2587", "labels": [], "originalEstimate": "PT0S", "parent": "27468", "parentSummary": "Puppet Platform 6.0.10 Release - 2019-07-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-14T14:20:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.0.5)", "timeSpent": "PT0S", "updated": "2019-07-14T14:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Merged up from 6.0.x into 6.3.x, created 6.0.5-release branch on server and have created the 6.0.5-release pipelines in CI.", "created": "2019-07-10T12:13:00.000000"}], "components": [], "created": "2019-07-10T07:05:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1272087e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9765"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvmgn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_60246_*|*_10007_*:*_1_*:*_81848_*|*_3_*:*_1_*:*_886325_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_17570826"}], "description": "(Initial planned release date: 2019-07-16)\n * Merge up and/or down as required.\n * Outstanding changes from z branches should be be merged up to master.\n Outstanding changes from \"older\" branches should be merged up through\n the branch to be released (2.x -> 5.1.x if applicable). Any changes\n that have been resolved in \"newer\" branches but need to be pulled down\n to the release branch should be cherry-picked (eg backports to an LTS\n branch).\n * Create release branch as needed.\n * If there is continuing work landing on the version series branch\n (5.1.x) while the release prep will be happening then create a\n release branch (5.1.3-release) so a branch may sit at a good known\n version (candidate SHA) while all of the remaining validation can be\n performed (eg promoted into PE and manually tested).\n * Create Jenkins pipeline for release branch/update promotions as needed\n * Update ci-job-configs so that the branch to be released off of has a\n Jenkins pipeline and is being promoted into applicable PE streams. This\n work may not be applicable if no release branch was created, the release\n will not go into a PE stream, or this work has already been done as part\n of normal maintenance.\n * Promote release candidate if needed.\n * Older branches may not have the ability to automatically promote into PE\n (2.x). If releasing off of one of these branches, create a VOOM build\n and manually promote it into PE.", "duedate": "2019-07-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.10 Release - 2019-07-16\n", "estimate": "PT0S", "externalId": "16930", "fixedVersions": [], "id": "16930", "issueType": "Task", "key": "SERVER-2586", "labels": [], "originalEstimate": "PT0S", "parent": "27468", "parentSummary": "Puppet Platform 6.0.10 Release - 2019-07-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-10T12:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.0.5)", "timeSpent": "PT0S", "updated": "2019-07-10T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{code}\n10:23:28 sellout:puppetserver justin (6.0.x<>) \u2016 ruby ../ticketmatch/ticketmatch.rb\nEnter Git From Rev: 6.0.4\nEnter Git To Rev: |master| 6.0.x\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: |SERVER 6.0.x| SERVER 6.0.5\n(Optional) Enter JIRA team name:\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100  1297    0  1128  100   169   4123    617 --:--:-- --:--:-- --:--:--  4131\n** DOC-4135\n    344bbcb  Update broken link\n** DOCS\n    16f3bc6  Add release notes for 6.0.4 release\n    1418329  Add Puppet Server 5.3.8 release notes\n** DOCUMENT-852\n    0ff9791  Clarify which puppet.conf sections puppetserver uses\n** MAINT\n    829dae1  update puppet submodule version and agent pin\n    d4e8530  update puppet submodule version and agent pin\n    f2c99ce  Extend server settings in puppet.conf to compat tests\n    e049ace  Don't override leiningen's default repositories by default\n    b7f7370  update puppet submodule version and agent pin\n    ec419cc  update puppet submodule version and agent pin\n    9a25e25  Extend `server` config changes to upgrades\n    1af0011  update puppet submodule version and agent pin\n    ca98c1b  update puppet submodule version and agent pin\n    2f3208c  update puppet submodule version and agent pin\n    0471273  update puppet submodule version and agent pin\n    ecbc6f9  Bump EZBake to 2.0.4 for egd source change\n    46f5e21  Remove usages of --server from acceptance suite\n    254c8e5  Improve x509 auth test\n    0b26a86  Update puppet.conf to specify server on all nodes\n    9d24290  Use protocol in egd java parameter\n    03c8e1c  update puppet submodule version and agent pin\n    a116ede  Specify `server` setting puppet.conf\n    959dc83  update puppet submodule version and agent pin\n    9b71b49  update puppet submodule version and agent pin\n    d9d7499  update puppet submodule version and agent pin\n    7ee8e81  update puppet submodule version and agent pin\n    a5fc893  update puppet submodule version and agent pin\n    0995838  update puppet submodule version and agent pin\n    f0dde38  Drop Java 10 testing\n    f811f83  Use xenial on travis\n    156ccda  update puppet submodule version and agent pin                                                                                                                           [68/9943]\n    283e798  update puppet submodule version and agent pin\n    a22cb0c  update puppet submodule version and agent pin\n    0b1315b  update puppet submodule version and agent pin\n    a039b65  update puppet submodule version and agent pin\n    8e6ab52  update puppet submodule version and agent pin\n    dea2ba4  update puppet submodule version and agent pin\n    8fce3bc  Only run docker travis tests on master\n    43d1743  update puppet submodule version and agent pin\n    82088ce  update puppet submodule version and agent pin\n    290846f  update puppet submodule version and agent pin\n    ea20ee7  update puppet submodule version and agent pin\n    e00efb5  update puppet submodule version and agent pin\n    83a4c1d  update puppet submodule version and agent pin\n    400e2e7  Inline PC1 repo installation\n    68b1905  update puppet submodule version and agent pin\n    0390417  update puppet submodule version and agent pin\n    cbe5616  update puppet submodule version and agent pin\n    460c84c  update puppet submodule version and agent pin\n    93ede1a  fixup puppet.conf section preference doc\n    89a6811  update puppet submodule version and agent pin\n    40748ac  update puppet submodule version and agent pin\n    732b48d  update puppet submodule version and agent pin\n    8609672  update puppet submodule version and agent pin\n    7a2c653  update puppet submodule version and agent pin\n    15bbe68  update puppet submodule version and agent pin\n    3310869  update puppet submodule version and agent pin\n    05d094b  update puppet submodule version and agent pin\n    fb9b97e  Update travis to use xenial image\n    a7269d6  update puppet submodule version and agent pin\n    ac6f52c  update puppet submodule version and agent pin\n    f532c7b  update puppet submodule version and agent pin\n    0d0e9cb  update puppet submodule version and agent pin\n    6eacaa6  update puppet submodule version and agent pin\n    2386170  update puppet submodule version and agent pin\n    b73c213  update puppet submodule version and agent pin\n    5e603e4  update puppet submodule version and agent pin\n    2d2a793  update puppet submodule version and agent pin\n    8bf2be6  update puppet submodule version and agent pin\n    102b62c  update puppet submodule version and agent pin\n    0193551  update puppet submodule version and agent pin\n    305a3d9  update puppet submodule version and agent pin\n    0c0ab45  Puppetserver shouldn't include facter 2\n    13e0ab6  update puppet submodule version and agent pin                                                                                                                           [25/9943]\n    887624f  update puppet submodule version and agent pin\n    a507d7c  update puppet submodule version and agent pin\n    15ae74d  update puppet submodule version and agent pin\n    bc0ab35  update puppet submodule version and agent pin\n    0fb8439  update puppet submodule version and agent pin\n    d521fa1  update puppet submodule version and agent pin\n    3f63949  update puppet submodule version and agent pin\n    ee15f0c  update puppet submodule version and agent pin\n    33716de  update puppet submodule version and agent pin\n    cb4932e  update puppet submodule version and agent pin\n    ea5fd69  update puppet submodule version and agent pin\n    c2ab11b  update puppet submodule version and agent pin\n    5348091  update puppet submodule version and agent pin\n    6b50f74  update puppet submodule version and agent pin\n    1de840a  update puppet submodule version and agent pin\n    42a7f40  Do not run code_commands test on Debian\n    e09bb74  update puppet submodule version and agent pin\n    1f4224f  update puppet submodule version and agent pin\n    6359a4b  update puppet submodule version and agent pin\n    84746d1  update puppet submodule version and agent pin\n    8d03ce5  Update supported PDB systems\n    116a844  Use artifactory now that Debian has died\n    edb9ec8  update puppet submodule version and agent pin\n    32823d2  update puppet submodule version and agent pin\n    b3d97af  update puppet submodule version and agent pin\n    d23855d  update puppet submodule version and agent pin\n    5c982fa  update puppet submodule version and agent pin\n    ed83a2e  update puppet submodule version and agent pin\n    73fcc3c  update puppet submodule version and agent pin\n    d4bf910  Use publicly available version of rbac-client\n    e2a80d6  Update to rspec 3 style\n    e7be59d  update puppet submodule version and agent pin\n    b7cfb67  Disable Azure Docker builds on 6.x branch\n    bfca102  update puppet submodule version and agent pin\n    72d7309  update puppet submodule version and agent pin\n    142b241  update puppet submodule version and agent pin\n    5d0ac82  update puppet submodule version and agent pin\n    fc2bf10  update puppet submodule version and agent pin\n    10d70ab  update puppet submodule version and agent pin\n    b4ea7b8  update puppet submodule version and agent pin\n    fc118a5  Don't use python in test\n    e083e6d  Use rspec expectations instead of mocha\n    3575f13  update puppet submodule version and agent pin\n    a15c1c3  update puppet submodule version and agent pin\n** RE-12490\n    0429303  sed zypper list when installing puppet-agent 1.x\n** REVERT\n    7fbe808  Revert \"(maint) Don't override leiningen's default repositories by default\"\n** SERVER-1914\n    4966b77  Update clj-parent to version with FIPS bouncy-castle\n-- SERVER-2465 (Ready for CI)\n    e994b8c  Allow ca certs and crl bundles to be in any order\n** UNMARKED\n    2a7c26f  Update configuration.markdown\n    1a1aab9  Update compatibility_with_puppet_agent.markdown\n    c4132c4  Update restarting.markdown\n    1181703  DOC-3964 Add note re. `systemctl restart puppet`\n    806c6c1  Version 6.0.5-SNAPSHOT\n    2f87636  Version 5.3.9-SNAPSHOT\n    17972ce  Version 5.3.8\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 6.0.5)\nDOC-4135\nDOCUMENT-852\nRE-12490\nREVERT 7fbe808\nSERVER-1914\n\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n\n----- Unresolved Jira tickets found in git commits -----\nUNRESOLVED ISSUES FOUND IN GIT\nSERVER-2465     Ready for CI           (Server)\n\n----- Tickets missing release notes -----\nALL ISSUES CONTAIN RELEASE NOTES\n{code}\n\nAnd to summarize/double check the above:\n* All the maint work from 5.3.x (SERVER-2566), the notable work being:\n** It should be easier to build puppetserver outside our network now (though still no guarantees)\n** We used to ship an old deprecated version of facter with the puppetserver package (it should have been ignore and was completely unnecessary)\n** The way we were setting our source of randomness for CLI commands was silently broken. Consequently invocations of puppetserver gem, puppetserver irb, etc should be 15-30% faster to start up. Service starting and reloading should see similar improvements as well as some marginal improvements to top end performance, especially in environments with limited sources of entropy.\n* Some additional DOCS/RE/maint work that doesn't line up with releases cleanly\n* SERVER-1914 - pre-work for FIPS enablement and should have no bearing on the release\n* SERVER-2465 - an improvement to allow users to order the CA/CRL chains in any order and autodetect which cert/crl we update when acting as a CA. It is currently in an \"integrating\" state because it's failed PE promotions from of a dependency conflict (non-code issue). It has passed all applicable FOSS testing however and PE problems are expected to be resolved in the next day or so.\n\n", "created": "2019-07-10T11:38:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Agent side:\n{code}\n10:46:00 sellout:puppet justin (6.0.x $%<>) \u2016 ruby ../ticketmatch/ticketmatch.rb\nEnter Git From Rev: 6.0.9\nEnter Git To Rev: |master| 6.0.x\nEnter JIRA project: |PUP| PUP\nEnter JIRA fix version: |PUP 6.0.x| PUP 6.0.10\n(Optional) Enter JIRA team name: Server\n\n...snip...\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF PUP 6.0.10 AND A TEAM OF Server)\nPUP-1082\nPUP-3905\nPUP-4930\nPUP-6488\nPUP-8664\nPUP-9495\nPUP-9564\nPUP-9587\nPUP-9639\nPUP-9642\nPUP-9649\nPUP-9688\nPUP-9689\nPUP-9691\nPUP-9697\nPUP-9698\nPUP-9706\nPUP-9724\nPUP-9746\nPUP-9790\nPUP-9794\n\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n\n----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA\n\n----- Tickets missing release notes -----\nALL ISSUES CONTAIN RELEASE NOTES\n{code}\n\nNothing actually pertinent, though it does list a lot of \"Puppet Romania\" tickets (as with the 5.5.x release).", "created": "2019-07-10T11:48:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've updated SERVER-1914 to SERVER 6.y since we haven't hammered which y version any FOSS side FIPS enablement will ship in.\n\nI think we're calling SERVER-2465 done on the FOSS side for now. The ticket should be closed once it's enabled in PE today or tomorrow.\n\nCI is green for the applicable jobs save for a single confirmed infrastructure transient.\n\nDouble checked Confluence versions page and it's up to date.", "created": "2019-07-10T11:52:00.000000"}], "components": [], "created": "2019-07-10T07:00:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@83b37c8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9765"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvmgf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_320856_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_17220526"}], "description": "(Initial planned release date: 2019-07-16)\n * Use the ticketmatch script at [https://github.com/puppetlabs/ticketmatch]\n to reconcile JIRA ticket states with commit messages since the last release.\n (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n Follow up with any reported problematic areas:\n * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n not targeted for the current release.\n * Issues in JIRA but not in git need to be retargeted for the appropriate\n release and stakeholders should be notified.\n * Once the scope of the release as been confirmed and the correct SemVer\n version known ensure the Versions and Dependencies page in Confluence\n is up to date [https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies]", "duedate": "2019-07-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.10 Release - 2019-07-16\n", "estimate": "PT0S", "externalId": "16579", "fixedVersions": [], "id": "16579", "issueType": "Task", "key": "SERVER-2585", "labels": [], "originalEstimate": "PT0S", "parent": "27468", "parentSummary": "Puppet Platform 6.0.10 Release - 2019-07-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-10T11:52:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.0.5)", "timeSpent": "PT0S", "updated": "2019-07-10T11:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-07-09T15:20:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1385963c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2538"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke33:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_342121398_*|*_1_*:*_1_*:*_13124_*|*_3_*:*_1_*:*_606101588_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2598631196"}], "description": "We need a setting to enable collection of key lookups during catalog compilation, assuming it is feasible to collect them on each and every compilation.\n\nIf this proves unfeasible, this ticket will most likely be replaced with a different way of triggering that collection.\n\nnote: this should probably be plumbed through the pe module to some degree ([~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] to file a separate ticket)", "epicLinkSummary": "Track Hiera lookups during compile", "estimate": "PT0S", "externalId": "17557", "fixedVersions": ["SERVER 6.6.0"], "id": "17557", "issueType": "Task", "key": "SERVER-2584", "labels": [], "originalEstimate": "PT0S", "parent": "17119", "parentSummary": "Track Hiera lookups during compile", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-08-19T16:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add setting to toggle lookup key recording", "timeSpent": "PT0S", "updated": "2019-08-19T16:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-07-09T15:08:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11b65dca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10012"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwklj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_250395_*|*_3_*:*_2_*:*_1731019607_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_4_*:*_7350911153_*|*_10005_*:*_3_*:*_74978801007"}], "description": "As part of collecting hiera keys for impact analysis, we should also collect some metrics about these lookups, for example\n* the total number of lookups during a given compile\n* the total number of distinct keys looked up\n\nThis could be reported as a histogram.\n\nWe need to decide whether to implement this the way current metrics are implemented, with a Java object and Ruby wrapper that gets injected, vs. having a Ruby implementation that Puppetserver queries.", "epicLinkSummary": "Impact Analysis: Functions and Templates", "estimate": "PT0S", "externalId": "16929", "fixedVersions": ["SERVER 6.y"], "id": "16929", "issueType": "Task", "key": "SERVER-2583", "labels": [], "originalEstimate": "PT0S", "parent": "29618", "parentSummary": "Impact Analysis: Functions and Templates", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Collect analytics on Hiera lookups", "timeSpent": "PT0S", "updated": "2022-03-08T12:25:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Depending on the data collection strategy we use (see SERVER-2582), the compile may result in a catalog that will never be applied to a node. In that case, does it make sense to still store the catalog in PDB too? Not sure what the semantics are here. /cc [~accountid:70121:4c2994e4-73a9-4e99-971a-6d93d39be223]", "created": "2019-07-08T17:05:00.000000"}, {"author": "70121:4c2994e4-73a9-4e99-971a-6d93d39be223", "body": "I *think* we've changed our plans in a way that may obviate the question?  i.e. we're now working on adding a separate submit_catalog_inputs command (or the like) which will probably look something like {\"producer_timestamp\": ... catalog_uuid: ... \"inputs\": [...]}.", "created": "2019-07-11T16:33:00.000000"}], "components": [], "created": "2019-07-08T16:57:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e0e7509"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2538"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke2n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_342253950_*|*_1_*:*_1_*:*_80151899_*|*_3_*:*_1_*:*_605995559_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2599050717"}], "description": "Once a compile has collected the Hiera keys that were looked up to produce the catalog, those keys need to be sent to PuppetDB along with the catalog. PuppetDB is updating its catalog submission protocol to allow the optional submission of this data, see PDB-4369.", "epicLinkSummary": "Track Hiera lookups during compile", "estimate": "PT0S", "externalId": "16928", "fixedVersions": ["SERVER 6.6.0"], "id": "16928", "issueType": "Task", "key": "SERVER-2581", "labels": [], "originalEstimate": "PT0S", "parent": "17119", "parentSummary": "Track Hiera lookups during compile", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-08-19T16:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send Hiera keys to PuppetDB along with compiled catalog", "timeSpent": "PT0S", "updated": "2019-08-19T16:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2019-07-08T16:52:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43146488"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2538"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke2f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See epic release notes."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_80452539_*|*_3_*:*_1_*:*_3377252971_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_170428287"}], "description": "PUP-9699 created an API in Puppet for injecting a recorder that is invoked when a Hiera key is looked up during compile. We need to implement one of these recorders that can keep track of which keys have been looked up, so that at the end of compilation, that list can be sent to PuppetDB.\n\n* Make sure that the recorder is reset properly for each compile (v3 and v4)", "epicLinkSummary": "Track Hiera lookups during compile", "estimate": "PT0S", "externalId": "16039", "fixedVersions": ["SERVER 6.6.0"], "id": "16039", "issueType": "Task", "key": "SERVER-2580", "labels": [], "originalEstimate": "PT0S", "parent": "17119", "parentSummary": "Track Hiera lookups during compile", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-08-19T16:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add Hiera data recorder for impact analysis data gathering", "timeSpent": "PT0S", "updated": "2019-09-12T09:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6710b319-779a-49c9-b66f-f584a24dab53", "body": "My vote is approach #3 and we have Code Manager set a flag for nodes that need a new baseline. As long as code deployments can take place outside of CD for PE, we shouldn't rely on an integration with CD for PE to know when to compile a new baseline.", "created": "2019-07-08T19:01:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Okay, yeah, if CD4PE is still using Code Manager behind the scenes, we can look into that. I see two approaches there:\n\n1) Have code manager trigger the new collection runs directly using the v4 catalog endpoint, passing a special param. If we're not going to leverage IA however, to only target the affected nodes, this means we'd probably have to run on all nodes (or at least all nodes in an environment), and which may or may not be feasible performance-wise.\n\n2) Keep track of which nodes have checked in after any given code deploy and make sure each one collects new data when it checks in. We'd have to figure out where to store this state, and this might result in some false negatives for IA, because some nodes might not check in before the next code change is submitted, and some keys added in the last deploy might not show up.\n\nThere might be ways to improve either of these. I'd love to hear other thoughts. We'll discuss it in our team meeting on this project today.", "created": "2019-07-09T09:29:00.000000"}, {"author": "557058:6710b319-779a-49c9-b66f-f584a24dab53", "body": "Approach #2 seems the most efficient. but I'm sensitive to false negatives. That could be dangerous. But compiling a new catalog for every node in an environment on every code deploy seems bonkers too.\n\nIt occurs to me that we could use Impact Analysis to solve this problem. We could use IA to know which nodes are affected by the new code deployment and compile fresh catalogs w/ collection mode on for just those nodes (and any new nodes that don't have an existing baseline). It would only increase efficiency on nodes that have an existing baseline. New catalogs would need to be compiled for new nodes that haven't done any data collection.\n\nAnother option is to do approach #2 and keep tabs of nodes that haven't checked in yet. Then return those nodes when Impact Analysis requests which nodes might be affected by a file change. Essentially, return a false positive so we don't have false negatives.", "created": "2019-07-09T11:01:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "I think it's worth validating that this is actually expensive and needs optimization.", "created": "2019-07-09T14:24:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "If it is not expensive for us to collect, we should make sure that there isn't a bottleneck in PDB storing this data repeatedly. /cc [~accountid:70121:4c2994e4-73a9-4e99-971a-6d93d39be223]", "created": "2019-07-09T14:53:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I filed SERVER-2582 to track the work of adding a setting to turn this on, that CD4PE can toggle when it gets installed, if it proves feasible to just do the collection all the time.", "created": "2019-07-09T15:23:00.000000"}, {"author": "70121:4c2994e4-73a9-4e99-971a-6d93d39be223", "body": "Our very first pass of the storage implementation may or may not be dumb, but assuming that most of the inputs won't change most of the time, we're already contemplating computing diffs to decrease the write load.  That will increase our read load a bit, but writes are typically much more expensive.\n\nWhether or not the cost is \"too high\" is something we should definitely test to the extent that we can come up with a reasonable arrangement and load (simulated or real).\n", "created": "2019-07-11T16:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The collection as we've implemented in the server is very lightweight, so currently we just allow it to be turned off or on. It should be enabled alongside CD4PE. Regular perf testing should reveal if we need to do anything else. Closing this, we can file a more specific ticket if problems arise.", "created": "2019-08-15T17:30:00.000000"}], "components": [], "created": "2019-07-08T16:46:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40d1cfc6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2538"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke2v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_80806030_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3205097042"}], "description": "In order for Impact Analysis to work with Hiera data, PDB is going to store the list of Hiera keys looked up while compiling that node's catalog. We don't want to do this collection every time, because it is more expensive and unlikely to be changing much most of the time.\n\nWe need to decide on a strategy for refreshing the collected data. Some ideas include:\n 1) On an interval. We would need to determine the frequency.\n 2) Based on heuristics (e.g. if the node has no data yet, facts have changed, or the code version has changed). We would need to determine what markers to watch.\n 3) On a change to the code for a node. We would need to integrate with CD4PE and have it trigger a collection compile on the affected node when it deploys code.\n\n\u00a0\n\nnote: this may not be required if we can just do this all the time and not affect performance.", "epicLinkSummary": "Track Hiera lookups during compile", "estimate": "PT0S", "externalId": "14812", "fixedVersions": [], "id": "14812", "issueType": "Task", "key": "SERVER-2582", "labels": [], "originalEstimate": "PT0S", "parent": "17119", "parentSummary": "Track Hiera lookups during compile", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2019-08-15T17:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Choose a strategy for re-collecting Hiera keys used during a compile", "timeSpent": "PT0S", "updated": "2019-08-15T17:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-07-08T10:20:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73f721aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ry:6"}], "description": "The Puppet repo allows you to trigger beaker tests on various platforms with a comment on a PR. Under the hood, this triggers a Jenkins pipeline and surfaces the result to PR validation section (similar to Travis). \n\nWe should look into enabling something like this on the puppetserver repo as well, with possibly the option to run either the smoke suite (the tests that live in puppetserver) and the full suite (the tests that live in the puppet repo). Not sure if we need to go through Jenkins or if it would be possible to do directly in GitHub CI integrations.", "duedate": "2022-06-30T00:00:00.000000", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15470", "fixedVersions": [], "id": "15470", "issueType": "Task", "key": "SERVER-2579", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable running beaker tests from a PR", "timeSpent": "PT0S", "updated": "2022-03-09T08:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "how does this not impact everything in jruby with a http(s) connection?", "created": "2019-07-10T16:02:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It doesn't affect normal server communications or things that will use Puppet's http client within the server because we already plumb that through with our own Java implementation which uses bouncycastle. This will effect nearly every third party gem that makes http(s) connections though (report processors and hiera backends).", "created": "2019-07-10T16:10:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "ok. does that mean we'll require changes to report processors, hiera backends (our own and otherwise), etc, just like it does here to `puppetserver gem`?", "created": "2019-07-10T16:18:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yeah, I would assume most custom report processors and hiera backends will have to change to work in FIPS.\nThe options for those users will be:\n# rewrite their code to use Puppet's http client\n# rewrite their code to use the Java Crypto Architecture\n# us re-write JRuby's OpenSSL implementation (I think this is prohibitively expensive)\n\nI think option one will be the least work for users and we may need to help the community with that work.\n\nThere's another option for {{puppetserver gem}} which is to use MRI's gem command but have it configured to install into JRuby's gempath, which is probably the easiest thing to do there.", "created": "2019-07-10T16:29:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I did a little investigation of this in my down time and I was able to monkey patch MRI's gem to think it was installing/running on JRuby, which allowed installing java versions of gems into JRuby's gempath. However, I wouldn't consider monkey patch rubygems internal state as I do here maintainable, and there are some unsightly warnings that are issued because I must mix mri & jruby gempaths to ensure all of the needed gems are available for rubygems itself to function.\n\n(the did_you_mean gem is included in the base installation, which jruby includes in its jar, which mri ruby can't read from, when adding mri's default gems we then see warnings for native gems whose extensions are no longer on the rest of the gempath).\n\nThat hack is here: https://github.com/puppetlabs/pe-puppet-server-extensions/compare/master...justinstoller:gemhack\n\nIt's possible that we could clean this up (prevent the warning from going to stderr) and ship a \"fips_gem_install\" script and point users to use that script/wrap it in a puppetserver_gem_fips provider, maybe? Those aren't \"good\" options, I'm just not seeing any better ones right now.\n\nI was unable to assess how much actual work would be required to fixup JRuby's OpenSSL implementation because of a lot of custom tooling around their build process.", "created": "2019-10-31T12:09:00.000000"}], "components": [], "created": "2019-07-01T09:40:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@171d8ba0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1jj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_714935674_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3632715913_*|*_10005_*:*_2_*:*_80423573834"}], "description": "JRuby's Openssl implementation is not FIPS compliant and it looks as if they have no intention to support it. Users that have JRuby extensions will need to write java wrappers that leverage JCA/JCE however third party libraries will probably just not work. One of those is rubygems, which renders the {{puppetserver gem}} command useless. We need to find a work around for our users, most likely by doubling down on recent changes to the {{puppetserver_gem}} provider that uses the agents {{gem}} command configured to the puppetserver's gem path. We should also survey how extensive not being able to use Openssl in JRuby will be to FIPS users.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16578", "fixedVersions": [], "id": "16578", "issueType": "Task", "key": "SERVER-2578", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create alternative for `puppetserver gem` in fips environment", "timeSpent": "PT0S", "updated": "2022-03-08T12:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The file needs to be in {{/etc/puppetlabs/code/modules/abc/files/test.txt}}. For issues like this please join #puppet in {{https://slack.puppet.com}}", "created": "2019-06-25T10:44:00.000000"}], "components": ["Puppet Server"], "created": "2019-06-25T04:39:00.000000", "creator": "623c0c731c7f6a007049e59b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@759303c7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvc1j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21945524_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:4.6.2*\n *Puppet Server Version:6.5*\n *OS Name/Version:centos 7*\n\nI have a question to say.\nI will copy puppetserver file to puppet agent.\nThis file is at /etc/puppetlabs/code/modules//files/abc/test.txt\nabc is myown folder(myfolder).\nwhen I execute \"puppet agent -t \"at puppet agent ,and wrong with the message below.\nCould not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/mymodule/abc/test1.txt\n\n*Desired Behavior:can get test1.txt at agent server*\n\n*Actual Behavior:error*\n\nPlease take a moment and attach any relevant log output and/or manifests. This will help us immensely when troubleshooting the issue.\n\nExamples:\n Run puppet agent with --test --trace --debug\n\nRelevant sections of {{/var/log/puppetlabs/puppetserver/puppetserver.log}} or any applicable logs from the same directory.\n\nFor more detailed information turn up the server logs by upping the log level in the server's logback.xml\n\nRelevant sections of configurations files (puppet.conf, hiera.conf, Server's conf.d, defaults/sysconfig)\n\nFor memory issues with server heap dumps are also helpful.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17556", "fixedVersions": [], "id": "17556", "issueType": "Story", "key": "SERVER-2577", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0c731c7f6a007049e59b", "resolution": "Incomplete", "resolutionDate": "2019-06-25T10:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "cannot  get file from master when the file is in mymoudle/myfolder/test.txt", "timeSpent": "PT0S", "updated": "2019-06-25T10:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The version of jetty with the API backwards compatibility updates has been released as 3.0.1, but it failed a couple tests when integrated with puppetserver.", "created": "2019-07-11T17:15:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "check to make sure we're not specifying this as a dep anywhere in server/etc, to ensure we don't have to bump the version", "created": "2019-07-18T17:09:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "pe-puppet-server-extensions and pe-puppetserver do not explicitly specify a version for this dependency. I know we were deliberately waiting to update this in clj-parent because of the cipher changes. Do we need to pin the versions in those projects to overwrite the older version that clj-parent brings in?", "created": "2019-07-22T11:38:00.000000"}], "components": [], "created": "2019-06-20T17:06:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c541e0b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke1z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We have upgraded to the latest release of Jetty's 9.4 series. In this update Jetty warns about several ciphers that previously defaulted to being enabled as being \"weak\".\n\nIn our upstream projects we've defaulted to using only FIPS compliant cipher suites that are not considered weak. In Puppet Server 7, these we be the default. However to maintain backwards compatibility we've explicitly enabled all of the cipher suites that were available starting in Puppet Server 6.0. This however impacts users upgrading to Puppet Server 6.5.0 in two ways. 1) there will be updates coming from the package to the `webserver.conf` file in Puppet Server's conf.d directory, 2) when Puppet Server starts or reloads Jetty will warn about weak cipher suites being enabled.\n\nAgain, these weak ciphers are the same ciphers that were enabled by default in the previous version of Puppet Server, and we've only enabled them to aid in the upgrade process. We strongly encourage all users to upgrade and then remove the cipher-suite configuration section from the webserver.conf, which will then use only the strong FIPS compliant cipher suites*.\n\nAdditionally, Jetty removed the upstream complement to our so-linger-seconds configuration setting. The setting will be ignored and a warning will be issued if it is set. See https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/3.0.1/doc/jetty-config.md#so-linger-seconds for more information.\n\n*On some older Operating Systems you may see additional warning that newer cipher suites are unavailable, in this case you should manage the contents of the webserver.cipher-suites configuration value to be those strong suites that available to you."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_412695863_*|*_1_*:*_1_*:*_37621_*|*_3_*:*_1_*:*_1814909989_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_604388020"}], "description": "We bumped the jetty version in tk-jetty9, and it broke some APIs that are used by puppetserver. We need to release tk-jetty9 and then do the work to update the way we're interacting with it in puppetserver.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16081", "fixedVersions": ["SERVER 6.5.0"], "id": "16081", "issueType": "Task", "key": "SERVER-2576", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-07-23T11:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Release and integrate tk-jetty9 3.0.0", "timeSpent": "PT0S", "updated": "2019-09-06T14:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-06-19T12:00:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a1c5a50"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1lr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_255711203_*|*_1_*:*_1_*:*_693186_*|*_3_*:*_1_*:*_1652445494_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_96803088"}], "description": "Extract the puppetlabs.puppetserver.shell-utils clojure namespace, it's java dependencies, and respective tests within puppetserver into a separate library.\nThe repo name should probably just be \"shell-utils\", though in the past we've also used \"jvm-\" or \"clj-\" prefixes for repositories that expose clojure and java apis.\nThe artifact's group-id should be \"puppetlabs\".\nThe project should have the same CI pipeline setup as other \"clojure libraries\".\nThe library should be released at 1.0.0\nPuppetserver should be updated to use it in master once it's been released.\npe-pse should be updated in Lovejoy to use this library once it's been released (around the same time the server is promoted into pe-pse)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17125", "fixedVersions": ["SERVER 6.5.0"], "id": "17125", "issueType": "Task", "key": "SERVER-2575", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2019-07-12T17:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Extract shell-utils as a library from puppetserver", "timeSpent": "PT0S", "updated": "2019-07-12T17:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for this feedback. We have some related issues with large CRLs, see https://puppet.atlassian.net/browse/TK-463 for example, and https://puppet.atlassian.net/browse/SERVER-2509 for a contributing factor. Unfortunately, there is no good way to clean the CRL up right now, apart from deleting it like you did. But we would like to mitigate things like this in other ways by improving the handling of large CRLs in general.", "created": "2019-10-25T17:23:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T12:13:00.000000"}], "components": [], "created": "2019-06-19T07:23:00.000000", "creator": "557058:afeb4589-3a40-45a2-9d53-0c583b3bf015", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4313304e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2712"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "RHEL 7 (x86_64)"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv8cv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11094996386_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_74721208726"}], "description": "*Puppet Version: 6.4.2*\n *Puppet Server Version:\u00a06.3.0*\n *OS Name/Version: RHEL 7.6 x86_64*\n\nI\u2019m facing a issue if running `puppet node clean someagent.test.com` or `puppetserver ca clean --certname someagent.test.com` and `puppetserver ca list --all` (on the same machine as root) at the same time. This only occurs if I'm running one of the clean commands and the list command concurrently.\n\n\u00a0\n\nUPDATE: This error only occurs on masters with a large CRL. After a re-setup of the entire SSL CA all works fine. Is there a way to cleanup the CRL?\n{code:java}\n# ls -la /etc/puppetlabs/puppet/sslmaster/crl.pem\n-rw-r--r--. 1 puppet puppet 2395546 Jun 24 13:30 /etc/puppetlabs/puppet/sslmaster/crl.pem\n{code}\n\u00a0\n{code:java}# puppet node clean someagent.test.com\nWARN: Unresolved specs during Gem::Specification.reset:\n      facter (< 4, >= 2.0.1)\nWARN: Clearing out unresolved specs.\nPlease report a bug if this causes problems.\nNotice: Revoked certificate for someagent.test.com\nNotice: Cleaned files related to someagent.test.com\nsomeagent.test.com{code}\n\u00a0\n{code:java}# puppetserver ca clean --certname someagent.test.net\nRevoked certificate for someagent.test.net\nCleaned files related to someagent.test.net\n{code}\n\u00a0\n{code:java}#\u00a0puppetserver ca list --all\nFatal error when running action 'list'\n  Error: Failed connecting to https://puppet1.test.com:8140/puppet-ca/v1/certificate_statuses/any_key\n  Root cause: SSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown\nFatal error when running action 'list'\n  Error: Failed connecting to https://puppet1.test.com:8140/puppet-ca/v1/certificate_statuses/any_key\n  Root cause: Net::OpenTimeout{code}\n\u00a0\n\nMy Puppet config\n{code:java}#\u00a0cat /etc/puppetlabs/puppet/puppet.conf\n[agent]\nserver=puppet0.test.com\nreport=true\nstringify_facts=falseruninterval=1800\n[master]\nstoreconfigs = true\nstoreconfigs_backend = puppetdb\nvardir = /opt/puppetlabs/server/data/puppetserver\nlogdir = /var/log/puppetlabs/puppetserver\nrundir = /var/run/puppetlabs/puppetserver\npidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid\ncodedir = /etc/puppetlabs/code\nssldir=/etc/puppetlabs/puppet/sslmaster\nreports=puppetdb\ncertname=puppet1.test.com\ndns_alt_names=puppet1.test.com,master1.test.com\nparser=future\nautosign=/usr/local/bin/autosign.sh\nca_server=puppet1.test.com\n[main]\nrundir=/var/run/puppetlabs\nhiera_config = /etc/puppetlabs/puppet/hiera.yaml\n{code}\n\u00a0\n\n*Desired Behavior:*\n\n`puppetserver ca list --all` should list certificates\u00a0\n\n*Actual Behavior:*\n\n\u00a0\n\n`puppetserver ca list --all` raises on errors\n{code:java}Fatal error when running action 'list' Error: Failed connecting to https://puppet1.test.com:8140/puppet-ca/v1/certificate_statuses/any_key Root cause: SSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown Fatal error when running action 'list' Error: Failed connecting to https://puppet1.test.com:8140/puppet-ca/v1/certificate_statuses/any_key Root cause: Net::OpenTimeout\n{code}\npuppetserver.log\n{code:java}2019-06-19T15:08:08.594+02:00 INFO [clojure-agent-send-off-pool-1] [o.e.j.u.s.SslContextFactory] x509=X509@1e21d885(private key,h=[master1.test.com, puppet1.test.com],w=[]) for InternalSslContextFactory@ 5352bca3[provider=null,keyStore=null,trustStore=null] \n2019-06-19T15:08:08.689+02:00 ERROR [qtp1989839493-311] [p.r.core] Internal Server Error: java.lang.IllegalArgumentException: The CRL reader must contain at least one CRL at puppetlabs.ssl_utils.core$fn__21465$pem__GT_ca_crl__21470$fn__21471.invoke(core.clj:567) at puppetlabs.ssl_utils.core$fn__21465$pem__GT_ca_crl__21470.invoke(core.clj:563) at puppetlabs.puppetserver.certificate_authority$fn__36744$get_certificate_statuses__36749$fn__36753.invoke(certificate_authority.clj:1382) at puppetlabs.puppetserver.certificate_authority$fn__36744$get_certificate_statuses__36749.invoke(certificate_authority.clj:1379) at puppetlabs.services.ca.certificate_authority_core$certificate_statuses$fn__38275$fn__38278.invoke(certificate_authority_core.clj:306) at liberator.core$run_handler.invokeStatic(core.clj:176) at liberator.core$run_handler.invoke(core.clj:131) at liberator.core$handle_ok.invokeStatic(core.clj:224) at liberator.core$handle_ok.invoke(core.clj:224) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$multiple_representations_QMARK_.invokeStatic(core.clj:232) at liberator.core$multiple_representations_QMARK_.invoke(core.clj:232) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$put_to_existing_QMARK_.invokeStatic(core.clj:305) at liberator.core$put_to_existing_QMARK_.invoke(core.clj:305) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$post_to_existing_QMARK_.invokeStatic(core.clj:308) at liberator.core$post_to_existing_QMARK_.invoke(core.clj:308) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$method_patch_QMARK_.invokeStatic(core.clj:315) at liberator.core$method_patch_QMARK_.invoke(core.clj:315) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$method_delete_QMARK_.invokeStatic(core.clj:317) at liberator.core$method_delete_QMARK_.invoke(core.clj:317) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$if_modified_since_exists_QMARK_.invokeStatic(core.clj:337) at liberator.core$if_modified_since_exists_QMARK_.invoke(core.clj:337) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$if_none_match_exists_QMARK_.invokeStatic(core.clj:355) at liberator.core$if_none_match_exists_QMARK_.invoke(core.clj:355) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$if_unmodified_since_exists_QMARK_.invokeStatic(core.clj:375) at liberator.core$if_unmodified_since_exists_QMARK_.invoke(core.clj:375) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$if_match_exists_QMARK_.invokeStatic(core.clj:389) at liberator.core$if_match_exists_QMARK_.invoke(core.clj:389) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$exists_QMARK_.invokeStatic(core.clj:392) at liberator.core$exists_QMARK_.invoke(core.clj:392) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$processable_QMARK_.invokeStatic(core.clj:395) at liberator.core$processable_QMARK_.invoke(core.clj:395) at liberator.core$decide.invokeStatic(core.clj:87)\nat liberator.core$decide.invoke(core.clj:74) at liberator.core$encoding_available_QMARK_.invokeStatic(core.clj:399) at liberator.core$encoding_available_QMARK_.invoke(core.clj:399) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$accept_encoding_exists_QMARK_.invokeStatic(core.clj:416) at liberator.core$accept_encoding_exists_QMARK_.invokeStatic(core.clj:416) [65/808] at liberator.core$accept_encoding_exists_QMARK_.invoke(core.clj:416) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$accept_charset_exists_QMARK_.invokeStatic(core.clj:429) at liberator.core$accept_charset_exists_QMARK_.invoke(core.clj:429) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$accept_language_exists_QMARK_.invokeStatic(core.clj:443) at liberator.core$accept_language_exists_QMARK_.invoke(core.clj:443) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$media_type_available_QMARK_.invokeStatic(core.clj:453) at liberator.core$media_type_available_QMARK_.invoke(core.clj:453) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$accept_exists_QMARK_.invokeStatic(core.clj:456) at liberator.core$accept_exists_QMARK_.invoke(core.clj:456) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$is_options_QMARK_.invokeStatic(core.clj:473) at liberator.core$is_options_QMARK_.invoke(core.clj:473) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$valid_entity_length_QMARK_.invokeStatic(core.clj:476) at liberator.core$valid_entity_length_QMARK_.invoke(core.clj:476) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$known_content_type_QMARK_.invokeStatic(core.clj:479) at liberator.core$known_content_type_QMARK_.invoke(core.clj:479) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$valid_content_header_QMARK_.invokeStatic(core.clj:481) at liberator.core$valid_content_header_QMARK_.invoke(core.clj:481) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$allowed_QMARK_.invokeStatic(core.clj:484) at liberator.core$allowed_QMARK_.invoke(core.clj:484) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$authorized_QMARK_.invokeStatic(core.clj:487) at liberator.core$authorized_QMARK_.invoke(core.clj:487) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$malformed_QMARK_.invokeStatic(core.clj:490) at liberator.core$malformed_QMARK_.invoke(core.clj:490) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$method_allowed_QMARK_.invokeStatic(core.clj:493) at liberator.core$method_allowed_QMARK_.invoke(core.clj:493) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$uri_too_long_QMARK_.invokeStatic(core.clj:496) at liberator.core$uri_too_long_QMARK_.invoke(core.clj:496) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$known_method_QMARK_.invokeStatic(core.clj:499) at liberator.core$known_method_QMARK_.invoke(core.clj:499) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$service_available_QMARK_.invokeStatic(core.clj:502)\nat liberator.core$service_available_QMARK_.invoke(core.clj:502) at liberator.core$decide.invokeStatic(core.clj:87) at liberator.core$decide.invoke(core.clj:74) at liberator.core$initialize_context.invokeStatic(core.clj:504) at liberator.core$initialize_context.invoke(core.clj:504) at liberator.core$run_resource.invokeStatic(core.clj:595) at liberator.core$run_resource.invoke(core.clj:593) at puppetlabs.services.ca.certificate_authority_core$certificate_statuses$fn__38275.invoke(certificate_authority_core.clj:293) at compojure.response$fn__16841.invokeStatic(response.clj:33) at compojure.response$fn__16841.invoke(response.clj:21) at compojure.response$fn__16814$G__16809__16821.invoke(response.clj:6) at puppetlabs.services.ca.certificate_authority_core$fn__38287$web_routes__38292$fn__38293$fn__38296.invoke(certificate_authority_core.clj:316) at bidi.ring$fn__16628.invokeStatic(ring.cljc:25) at bidi.ring$fn__16628.invoke(ring.cljc:21) at bidi.ring$fn__16613$G__16608__16622.invoke(ring.cljc:16) at puppetlabs.comidi$make_handler$fn__18544.invoke(comidi.clj:245) at puppetlabs.trapperkeeper.authorization.ring_middleware$fn__25030$wrap_authorization_check__25035$fn__25036$fn__25037.invoke(ring_middleware.clj:290) at puppetlabs.ring_middleware.core$fn__22623$wrap_bad_request__22632$fn__22635$fn__22641.invoke(core.clj:170) at puppetlabs.puppetserver.ringutils$fn__34959$wrap_with_trapperkeeper_or_client_whitelist_authorization__34964$fn__34965$fn__34969.invoke(ringutils.clj:124) at puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357) at puppetlabs.ring_middleware.core$fn__22721$wrap_uncaught_errors__22730$fn__22733$fn__22738.invoke(core.clj:216) at puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__34948.invoke(ringutils.clj:83) at puppetlabs.ring_middleware.core$fn__22371$wrap_response_logging__22376$fn__22377$fn__22378.invoke(core.clj:53) at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__28207.invoke(jetty9_core.clj:434) at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source) at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167) at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102) at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$fn__27785$normalize_uri_handler__27790$fn__27791$fn__27792.invoke(normalized_uri_helpers.clj:74) at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126) at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724) at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56) at com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36) at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:531) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:291) at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:151) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) at java.lang.Thread.run(Thread.java:748)\n2019-06-19T15:08:10.847+02:00 WARN [qtp1989839493-291] [p.p.certificate-authority] No certificate request for someagent.test.net at expected path /etc/puppetlabs/puppet/sslmaster/ca/requests/someagent.test.net .pem\n\u00a0\n{code}\n\u00a0", "epicLinkSummary": "Improve CRL Management", "estimate": "PT0S", "externalId": "15467", "fixedVersions": [], "id": "15467", "issueType": "Bug", "key": "SERVER-2574", "labels": [], "originalEstimate": "PT0S", "parent": "16586", "parentSummary": "Improve CRL Management", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:afeb4589-3a40-45a2-9d53-0c583b3bf015", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to connect puppetserver ca endpoints", "timeSpent": "PT0S", "updated": "2022-03-08T12:13:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Confirmed tag was merged up w/ applicable commits.\n\nDeleted release branch\n\nOpened PR to teardown release pipeline\n\n\u00a0\n\nWill keep this ticket open until after the retro to ensure any additional work for Winston is done.", "created": "2019-07-15T14:28:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "No actions for this from the retro.", "created": "2019-07-24T11:01:00.000000"}], "components": [], "created": "2019-06-16T17:37:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e738ed0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9775"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv6tr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2346_*|*_10007_*:*_1_*:*_3909117_*|*_3_*:*_1_*:*_514970_*|*_10009_*:*_1_*:*_761303321_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2493664718"}], "description": "(Initial planned release date: 2019-07-16)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-07-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.3 Release - 2019-07-16\n", "estimate": "PT0S", "externalId": "17555", "fixedVersions": [], "id": "17555", "issueType": "Task", "key": "SERVER-2573", "labels": [], "originalEstimate": "PT0S", "parent": "29662", "parentSummary": "Puppet Platform 6.4.3 Release - 2019-07-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-24T11:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.3.1)", "timeSpent": "PT0S", "updated": "2019-07-24T11:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't see a tag for puppet-agent 6.4.3, nor is their a \"last passing\" sha for puppet-agent on builds when I checked. I've manually bumped our release branch to the HEAD of puppet-agent's \"6.4.3_release\" branch, which I assume will be the sha that they tag. I've kicked off our pipeline and will tag when it's finished. Won't be end of day today but should before Romania's Monday.", "created": "2019-07-12T17:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The commit with latest puppet-agent code has passed FOSS pipelines for us. The previous build with the last of our server code has already passed PE integration.\n\n[https://github.com/puppetlabs/puppetserver/tree/6.3.1]\n\n[http://builds.delivery.puppetlabs.net/puppetserver/6.3.1/]", "created": "2019-07-14T14:29:00.000000"}], "components": [], "created": "2019-06-16T17:37:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@720b7953"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9775"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv6tb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2318_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2407934571"}], "description": "(Initial planned release date: 2019-07-16)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-07-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.3 Release - 2019-07-16\n", "estimate": "PT0S", "externalId": "16927", "fixedVersions": [], "id": "16927", "issueType": "Task", "key": "SERVER-2572", "labels": [], "originalEstimate": "PT0S", "parent": "29662", "parentSummary": "Puppet Platform 6.4.3 Release - 2019-07-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-14T14:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.3.1)", "timeSpent": "PT0S", "updated": "2019-07-14T14:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Release branch created and PRs up to merge 6.3.x into master and create our 6.3.1-release pipeline.", "created": "2019-07-10T13:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "PRs merged.\n\nNB: we merged this pipeline pointing to a non-existent 6.4.3_release branch on puppet-agent, assuming that when the time comes that will be created.", "created": "2019-07-10T14:47:00.000000"}], "components": [], "created": "2019-06-16T17:37:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a9d6398"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9775"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv6t3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2436_*|*_10007_*:*_1_*:*_4968184_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2058425802"}], "description": "(Initial planned release date: 2019-07-16)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-07-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.3 Release - 2019-07-16\n", "estimate": "PT0S", "externalId": "16577", "fixedVersions": [], "id": "16577", "issueType": "Task", "key": "SERVER-2571", "labels": [], "originalEstimate": "PT0S", "parent": "29662", "parentSummary": "Puppet Platform 6.4.3 Release - 2019-07-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-10T14:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.3.1)", "timeSpent": "PT0S", "updated": "2019-07-10T14:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We think there may be a regression in our planned work that recently landed for 6.3.1 (though it may be a dependency issue). It arose in PE so there is a fairly long feedback cycle on it. We are continuing to assess the issue.", "created": "2019-07-09T23:33:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It appears to be a dependency issue and the resolution is in flight. This also affected 6.0.z and likewise we're moving forward with the 6.3.z release prep.", "created": "2019-07-10T12:53:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "From ticketmatch:\n{code}11:56:08 sellout:puppetserver justin (6.3.x<>) \u2016 ruby ../ticketmatch/ticketmatch.rb\nEnter Git From Rev: 6.3.0\nEnter Git To Rev: |master| 6.3.x\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: |SERVER 6.3.x| SERVER 6.3.1\n(Optional) Enter JIRA team name:\n...snip...\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 6.3.1)\nDOC-4056\nDOC-4135\nDOCUMENT-852\nRE-12490\nREVERT 7fbe808\nSERVER-1914\n\n----- Unresolved Jira tickets not in git commits -----\nUNRESOLVED ISSUES NOT FOUND IN GIT\nSERVER-2388     Ready for Engineering  (Server)\nSERVER-2461     Accepted               (Server)\n\n----- Unresolved Jira tickets found in git commits -----\nUNRESOLVED ISSUES FOUND IN GIT\nSERVER-2465     Ready for CI           (Server)\n\n----- Tickets missing release notes -----\nISSUES MISSING RELEASE NOTES\nSERVER-2388     Ready for Engineering  (Server)\nSERVER-2461     Accepted               (Server)\n{code}\nThe \"Git commits in Jira\" section is n/a and contains the same as 6.0.5 (SERVER-2585) so I won't repeat myself here.\n In the remaining sections:\n * SERVER-2388 - misattributed to 6.3.1, moved to 6.3.z and 6.y. (note it is in two sections)\n * SERVER-2461 - companion to SERVER-2388, resolved in same way. (also in two sections above)\n * SERVER-2465 - again from 6.0.5, and the issue from previous comments, done for FOSS considerations, in integrating until some dependency resolution issues are resolved in PE.\n\nAlso like 6.0.5 and 5.3.9, there are a few notable maintenance items (re-arranged in order of importance to users):\n * The way we were setting our source of randomness for CLI commands was silently broken. Consequently invocations of puppetserver gem, puppetserver irb, etc should be 15-30% faster to start up. Service starting and reloading should see similar improvements as well as some marginal improvements to top end performance, especially in environments with limited sources of entropy.\n * We used to ship an old deprecated version of facter with the puppetserver package (it should have been ignore and was completely unnecessary)\n * It should be easier to build puppetserver outside our network now (though still no guarantees)", "created": "2019-07-10T13:06:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "From the agent side:\n{code}\n12:08:38 sellout:puppet justin (6.4.x $%<>) \u2016 ruby ../ticketmatch/ticketmatch.rb\nEnter Git From Rev: 6.4.2\nEnter Git To Rev: |master| 6.4.x\nEnter JIRA project: |PUP|\nEnter JIRA fix version: |PUP 6.4.x| PUP 6.4.3\n(Optional) Enter JIRA team name: Server\n...snip....\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF PUP 6.4.3 AND A TEAM OF Server)\nPUP-1082\nPUP-3905\nPUP-4930\nPUP-6488\nPUP-8664\nPUP-9495\nPUP-9564\nPUP-9587\nPUP-9639\nPUP-9642\nPUP-9649\nPUP-9688\nPUP-9689\nPUP-9691\nPUP-9697\nPUP-9698\nPUP-9706\nPUP-9717\nPUP-9720\nPUP-9724\nPUP-9746\nPUP-9790\nPUP-9794\n\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n\n----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA\n\n----- Tickets missing release notes -----\nALL ISSUES CONTAIN RELEASE NOTES\n{code}\n\nNothing for us, just some Puppet Romania tickets.", "created": "2019-07-10T13:10:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Confluence version is correct.", "created": "2019-07-10T13:11:00.000000"}], "components": [], "created": "2019-06-16T17:37:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42e1a201"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9775"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv6sv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2345_*|*_3_*:*_1_*:*_49098191_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2008549648"}], "description": "(Initial planned release date: 2019-07-16)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-07-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.3 Release - 2019-07-16\n", "estimate": "PT0S", "externalId": "16263", "fixedVersions": [], "id": "16263", "issueType": "Task", "key": "SERVER-2570", "labels": [], "originalEstimate": "PT0S", "parent": "29662", "parentSummary": "Puppet Platform 6.4.3 Release - 2019-07-16\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-10T13:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.3.1)", "timeSpent": "PT0S", "updated": "2019-07-10T13:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Confirmed tag was merged up w/ applicable commits.\n\nDeleted release branch\n\nOpened PR to teardown release pipeline\n\n\u00a0\n\nWill keep this ticket open until after the retro to ensure any additional work for Winston is done.", "created": "2019-07-15T14:29:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "No actions for this from the retro.", "created": "2019-07-24T11:01:00.000000"}], "components": [], "created": "2019-06-16T17:21:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38283bd6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9755"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv6ef:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2842_*|*_10007_*:*_1_*:*_3801211_*|*_3_*:*_1_*:*_622976_*|*_10009_*:*_1_*:*_761326425_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2494630580"}], "description": "(Initial planned release date: 2019-07-16)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-07-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.16 Release - 2019-07-16", "estimate": "PT0S", "externalId": "14811", "fixedVersions": [], "id": "14811", "issueType": "Task", "key": "SERVER-2569", "labels": [], "originalEstimate": "PT0S", "parent": "20108", "parentSummary": "Puppet Platform 5.5.16 Release - 2019-07-16", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-24T11:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.9)", "timeSpent": "PT0S", "updated": "2019-07-24T11:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This pipeline didn't run automatically for some reason when the agent sha was bumped with the tag.\n\nI went to double check everything and noticed that. Even though the pipeline has passed all of our own testing and successfully been promoted into PE and tested there, I'm going to wait until the CI pipeline finishes building against the agent's 5.5.10 tag. In waiting for that to happen we won't get our own tag done by end of business today. I'll kick off the tag/build though before Romania's Monday.", "created": "2019-07-12T16:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Tests passed in the FOSS pipelines against the agent tag\n\nRan the tag and promote pipeline against the 5.3.9-release branch aaaand:\n\n[https://github.com/puppetlabs/puppetserver/tree/5.3.9]\n\n[http://builds.delivery.puppetlabs.net/puppetserver/5.3.9/]\n\nTag is going through the promotion pipeline into PE now.", "created": "2019-07-14T14:08:00.000000"}], "components": [], "created": "2019-06-16T17:21:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6eb9996a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9755"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv6dz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2444_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2407610995"}], "description": "(Initial planned release date: 2019-07-16)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-07-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.16 Release - 2019-07-16", "estimate": "PT0S", "externalId": "17123", "fixedVersions": [], "id": "17123", "issueType": "Task", "key": "SERVER-2568", "labels": [], "originalEstimate": "PT0S", "parent": "20108", "parentSummary": "Puppet Platform 5.5.16 Release - 2019-07-16", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-14T14:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.9)", "timeSpent": "PT0S", "updated": "2019-07-14T14:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've created a\u00a0[https://github.com/puppetlabs/puppetserver/tree/5.3.9-release]\u00a0branch off of\u00a02e90743e337afdf1cd085e3c23e7db6066995906 and opened a PR to create the release pipeline at\u00a0[https://github.com/puppetlabs/ci-job-configs/pull/6064]", "created": "2019-07-09T23:19:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Double checked that commits had been merged up to 6.0.x.\nPipeline has been created in CI.", "created": "2019-07-10T12:15:00.000000"}], "components": [], "created": "2019-06-16T17:21:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@69aefd90"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9755"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv6dr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2457_*|*_10007_*:*_1_*:*_46597764_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2008680793"}], "description": "(Initial planned release date: 2019-07-16)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-07-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.16 Release - 2019-07-16", "estimate": "PT0S", "externalId": "16926", "fixedVersions": [], "id": "16926", "issueType": "Task", "key": "SERVER-2567", "labels": [], "originalEstimate": "PT0S", "parent": "20108", "parentSummary": "Puppet Platform 5.5.16 Release - 2019-07-16", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-10T12:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.9)", "timeSpent": "PT0S", "updated": "2019-07-10T12:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "From running ticketmatch:\n{code}21:19:53 sellout:puppetserver justin (5.3.x<>) \u2016 ruby ../ticketmatch/ticketmatch.rb\nEnter Git From Rev: 5.3.8\nEnter Git To Rev: |master| 5.3.x\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: |SERVER 5.3.x| SERVER 5.3.9\n(Optional) Enter JIRA team name:\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   244    0    53  100   191    167    604 --:--:-- --:--:-- --:--:--   604\nJIRA returned no results for project 'SERVER' and fix version 'SERVER 5.3.9'\n{code}\n_NB: I also ran this with several variations of 5.y.z - all of the ones in JIRA - to similar effect_\n\nSo, since 5.3.x is in hardcore maintenance mode, but there has been a number of things we've landed I did a git log from the last tag to see the view from git itself:\n{code}21:23:51 sellout:puppetserver justin (5.3.x<>) \u2016 git log 5.3.8...HEAD > 5.3.9-CHANGELOG                                                                                             [122/9213]\n21:24:06 sellout:puppetserver justin (5.3.x %<>) \u2016 cat 5.3.9-CHANGELOG\n2e90743 by Maggie Dreyer on Tue Jul 9 16:03:26 2019 -0700:\n      (maint) sed zypper list when installing puppet-agent 1.x (#2109)\n0429303 by Justin Stoller on Tue Jul 9 15:19:35 2019 -0700:\n      (RE-12490) sed zypper list when installing puppet-agent 1.x\n2672faa by Justin Stoller on Tue Jul 9 10:34:30 2019 -0700:\n      Revert \"(maint) Don't override leiningen's default repositories\u2026 (#2107)\nd4e8530 by Jenkins CI on Tue Jul 9 16:55:34 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n7fbe808 by Maggie Dreyer on Tue Jul 9 08:18:45 2019 -0700:\n      Revert \"(maint) Don't override leiningen's default repositories by default\"\n1cad601 by Justin Stoller on Mon Jul 8 15:34:40 2019 -0700:\n      Merge pull request #2101 from underscorgan/maint/5.3.x/default-to-public\ne049ace by Morgan Rhodes on Tue Jun 25 13:22:52 2019 -0700:\n      (maint) Don't override leiningen's default repositories by default\n39db11f by Maggie Dreyer on Mon Jul 8 10:19:33 2019 -0500:\n      Merge pull request #2100 from justinstoller/server-setting-in-upgrades\n262489e by Justin Stoller on Fri Jul 5 13:05:09 2019 -0700:\n      Merge pull request #2074 from pcarlisle/xenial-5.3\n9a25e25 by Justin Stoller on Fri Jul 5 10:28:10 2019 -0700:\n      (maint) Extend `server` config changes to upgrades\n1af0011 by Jenkins CI on Fri Jul 5 16:56:06 2019 +0000:\n      (maint) update puppet submodule version and agent pin\nca98c1b by Jenkins CI on Thu Jul 4 16:57:07 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n0471273 by Jenkins CI on Wed Jul 3 16:55:34 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n31980e3 by Maggie Dreyer on Wed Jul 3 10:45:48 2019 -0500:\n      (maint) Remove `--server` usage from tests (#2095)\nd341205 by Justin Stoller on Tue Jul 2 21:25:59 2019 -0700:\n      (maint) Bump EZBake to 2.0.4 for egd source change (#2096)\nea51588 by Maggie Dreyer on Tue Jul 2 20:11:16 2019 -0500:\n      (maint) Use protocol in egd java parameter (#2094)\necbc6f9 by Justin Stoller on Tue Jul 2 17:00:41 2019 -0700:\n      (maint) Bump EZBake to 2.0.4 for egd source change\n46f5e21 by Justin Stoller on Tue Jul 2 16:53:24 2019 -0700:\n      (maint) Remove usages of --server from acceptance suite\n254c8e5 by Justin Stoller on Tue Jul 2 16:52:08 2019 -0700:\n      (maint) Improve x509 auth test\n0b26a86 by Justin Stoller on Tue Jul 2 16:48:51 2019 -0700:\n      (maint) Update puppet.conf to specify server on all nodes\n9d24290 by Justin Stoller on Tue Jul 2 13:52:36 2019 -0700:\n      (maint) Use protocol in egd java parameter\n0faa3b7 by Maggie Dreyer on Mon Jul 1 15:07:09 2019 -0500:\n      (maint) Specify `server` setting puppet.conf (#2091)\na116ede by Justin Stoller on Tue Nov 20 13:19:37 2018 -0800:\n      (maint) Specify `server` setting puppet.conf\n9b71b49 by Jenkins CI on Sat Jun 29 16:55:35 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n7ee8e81 by Jenkins CI on Fri Jun 28 16:56:15 2019 +0000:                                                                                                                             [72/9213]\n      (maint) update puppet submodule version and agent pin\n0995838 by Jenkins CI on Thu Jun 27 16:56:03 2019 +0000:\n      (maint) update puppet submodule version and agent pin\na22cb0c by Jenkins CI on Tue Jun 25 16:55:32 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n8e6ab52 by Jenkins CI on Fri Jun 21 16:55:38 2019 +0000:\n      (maint) update puppet submodule version and agent pin\ndea2ba4 by Jenkins CI on Thu Jun 20 16:56:54 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n82088ce by Jenkins CI on Wed Jun 19 16:55:37 2019 +0000:\n      (maint) update puppet submodule version and agent pin\ne00efb5 by Jenkins CI on Mon Jun 17 16:55:50 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n37691e5 by Maggie Dreyer on Fri Jun 14 10:25:01 2019 -0500:\n      (maint) Inline PC1 repo installation (#2081)\n400e2e7 by Justin Stoller on Thu Jun 13 16:46:53 2019 -0700:\n      (maint) Inline PC1 repo installation\n0390417 by Jenkins CI on Wed Jun 12 15:59:04 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n460c84c by Jenkins CI on Tue Jun 11 16:55:37 2019 +0000:\n      (maint) update puppet submodule version and agent pin\ndc8fce6 by Justin Stoller on Mon Jun 10 19:47:24 2019 -0700:\n      (DOCUMENT-852) Clarify which puppet.conf sections puppetserver uses (#2079)\n93ede1a by Justin Stoller on Mon Jun 10 19:03:29 2019 -0700:\n      (maint) fixup puppet.conf section preference doc\n40748ac by Jenkins CI on Sat Jun 8 16:55:37 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n8609672 by Jenkins CI on Fri Jun 7 16:56:08 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n2a7c26f by clairecadman on Thu Jun 6 11:54:42 2019 +0100:\n      Update configuration.markdown\n15bbe68 by Jenkins CI on Wed Jun 5 16:55:38 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n0ff9791 by clairecadman on Wed Jun 5 17:50:35 2019 +0100:\n      (DOCUMENT-852) Clarify which puppet.conf sections puppetserver uses\n05d094b by Jenkins CI on Tue Jun 4 16:55:35 2019 +0000:\n      (maint) update puppet submodule version and agent pin\nfb9b97e by Patrick Carlisle on Fri May 31 13:45:41 2019 -0700:\n      (maint) Update travis to use xenial image\nf532c7b by Jenkins CI on Wed May 22 16:57:50 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n6eacaa6 by Jenkins CI on Wed May 15 16:56:46 2019 +0000:\n      (maint) update puppet submodule version and agent pin\nb73c213 by Jenkins CI on Sat May 11 16:56:01 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n2d2a793 by Jenkins CI on Thu May 9 16:55:37 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n102b62c by Jenkins CI on Mon May 6 16:55:33 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n305a3d9 by Jenkins CI on Fri May 3 16:55:35 2019 +0000:\n      (maint) update puppet submodule version and agent pin\nb6d8f16 by Justin Stoller on Tue Apr 30 11:58:03 2019 -0700:                                                                                                                         [20/9213]\n      Merge pull request #2056 from underscorgan/maint/5.3.x/too-many-facters\n0c0ab45 by Morgan Rhodes on Mon Apr 29 16:38:21 2019 -0700:\n      (maint) Puppetserver shouldn't include facter 2\n887624f by Jenkins CI on Sat Apr 27 16:55:34 2019 +0000:\n      (maint) update puppet submodule version and agent pin\na507d7c by Jenkins CI on Fri Apr 26 16:56:50 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n0fb8439 by Jenkins CI on Fri Apr 19 16:55:52 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n3f63949 by Jenkins CI on Wed Apr 17 16:55:34 2019 +0000:\n      (maint) update puppet submodule version and agent pin\ncb4932e by Jenkins CI on Sat Apr 13 16:55:38 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n5cb6c8a by Justin Stoller on Fri Apr 12 08:21:43 2019 -0700:\n      Merge pull request #2047 from puppetlabs/clairecadman-patch-2\nc4132c4 by clairecadman on Fri Apr 12 15:15:18 2019 +0100:\n      Update restarting.markdown\nc2ab11b by Jenkins CI on Thu Apr 11 16:55:34 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n1181703 by clairecadman on Thu Apr 11 13:04:28 2019 +0100:\n      DOC-3964 Add note re. `systemctl restart puppet`\n6b50f74 by Jenkins CI on Wed Apr 10 16:55:35 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n8fee13d by Maggie Dreyer on Mon Apr 8 13:03:32 2019 -0700:\n      Merge pull request #2046 from justinstoller/maint-more-debian\n42a7f40 by Justin Stoller on Mon Apr 8 11:44:57 2019 -0700:\n      (maint) Do not run code_commands test on Debian\ne09bb74 by Jenkins CI on Mon Apr 8 16:55:31 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n84746d1 by Jenkins CI on Fri Apr 5 16:56:00 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n61de4e4 by Maggie Dreyer on Wed Apr 3 15:08:14 2019 -0700:\n      Merge pull request #2042 from justinstoller/debian\n8d03ce5 by Justin Stoller on Wed Apr 3 13:36:30 2019 -0700:\n      (maint) Update supported PDB systems\n116a844 by Justin Stoller on Wed Apr 3 13:31:44 2019 -0700:\n      (maint) Use artifactory now that Debian has died\nedb9ec8 by Jenkins CI on Wed Apr 3 16:56:49 2019 +0000:\n      (maint) update puppet submodule version and agent pin\nb3d97af by Jenkins CI on Tue Apr 2 16:55:35 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n5c982fa by Jenkins CI on Sun Mar 31 16:55:35 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n73fcc3c by Jenkins CI on Sat Mar 30 16:55:33 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n09bfd16 by Maggie Dreyer on Fri Mar 29 08:38:41 2019 -0700:\n      Merge pull request #2037 from pcarlisle/transpec\n23dfba8 by Maggie Dreyer on Fri Mar 29 08:37:25 2019 -0700:\n      Merge pull request #2038 from pcarlisle/public-rbac-client\nd4bf910 by Patrick Carlisle on Thu Mar 28 11:51:56 2019 -0700:\n      (maint) Use publicly available version of rbac-client\ne2a80d6 by Patrick Carlisle on Wed Mar 27 16:07:56 2019 -0700:\n      (maint) Update to rspec 3 style\nc5d1f8d by Justin Stoller on Wed Mar 27 13:41:02 2019 -0700:\n      Merge pull request #2023 from pcarlisle/mocha-5.3.x\nbfca102 by Jenkins CI on Tue Mar 26 16:55:31 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n1f8d1e0 by Maggie Dreyer on Mon Mar 25 11:40:18 2019 -0700:\n      Merge pull request #2021 from puppetlabs/release_notes_538\n72d7309 by Jenkins CI on Mon Mar 25 16:55:38 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n5d0ac82 by Jenkins CI on Sat Mar 23 16:55:30 2019 +0000:\n      (maint) update puppet submodule version and agent pin\nb4ea7b8 by Jenkins CI on Wed Mar 20 16:55:32 2019 +0000:\n      (maint) update puppet submodule version and agent pin\n2f87636 by Jenkins CI on Wed Mar 20 16:41:28 2019 +0000:\n      Version 5.3.9-SNAPSHOT\nfc118a5 by Patrick Carlisle on Thu Feb 28 16:15:46 2019 -0800:\n      (maint) Don't use python in test\ne083e6d by Patrick Carlisle on Tue Mar 19 14:47:28 2019 -0700:\n      (maint) Use rspec expectations instead of mocha\n1418329 by clairecadman on Mon Mar 18 14:23:35 2019 +0000:\n      (DOCS) Add Puppet Server 5.3.8 release notes\n{code}\nTo summarize those amount to:\n * a lot of bumping puppet agent submodule, acceptance test fixups, some spec updates, and trivial dependency updates\n * a few packaging updates, which meaningfully amounts to\n ** It should be easier to build puppetserver outside our network now (though still no guarantees)\n ** We used to ship an old deprecated version of facter with the puppetserver package (it should have been ignore and was completely unnecessary)\n ** The way we were setting our source of randomness for CLI commands was silently broken. Consequently invocations of {{puppetserver gem}}, {{puppetserver irb}}, etc should be 15-30% faster to start up. Service starting and reloading should see similar improvements as well as some marginal improvements to top end performance, especially in environments with limited sources of entropy.\n\nThat last bullet is our highlight from the release and I'll work with them to get that in the release notes since we did not do any of this via ticketed work (it was all maintenance type work found while fixing other issues - usually CI).\n\n\u00a0\n\n\u00a0\n\nI should also note that following the above description and searching for PUP tickets assigned to the Server team returned a long list of tickets assigned to \"Puppet Romania\", we should probably investigate why that is.\n{code}\n21:40:08 sellout:puppet justin (5.5.x *$%<>) \u2016 ruby ../ticketmatch/ticketmatch.rb\nEnter Git From Rev: 5.5.14\nEnter Git To Rev: |master| 5.5.x\nEnter JIRA project: |PUP|\nEnter JIRA fix version: |PUP 5.5.x| PUP 5.5.16\n(Optional) Enter JIRA team name: Server\n...snip...\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF PUP 5.5.16 AND A TEAM OF Server)\nPUP-1082\nPUP-4930\nPUP-6488\nPUP-8664\nPUP-9495\nPUP-9564\nPUP-9587\nPUP-9639\nPUP-9642\nPUP-9649\nPUP-9688\nPUP-9689\nPUP-9691\nPUP-9697\nPUP-9698\nPUP-9706\nPUP-9790\nPUP-9794\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA\n----- Tickets missing release notes -----\nALL ISSUES CONTAIN RELEASE NOTES\n{code}", "created": "2019-07-09T22:46:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Someone has already updated the Confluence page with the appropriate Server version for some reason.", "created": "2019-07-09T22:48:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] the reason is there's a step earlier in the process (see PUP-9756) to update the version dependency information based on what's known at that time. We have a reminder to check and potentially update the information for each component later during reconciliation (as in this ticket) in case things have changed (which they sometimes do).", "created": "2019-07-10T06:54:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Okay, apologies for the snark. FWIW, I'd be happy updating Confluence and having PM skip that step, I think PM has lots to do and pushing version management to the teams is perfectly fine by me.", "created": "2019-07-10T09:48:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79], our notable work for Platform 5.5.16 release notes came in as unticketed maint work. They are:\n * The way we were setting our source of randomness for CLI commands was silently broken. Consequently invocations of puppetserver gem, puppetserver irb, etc should be 15-30% faster to start up. Service starting and reloading should see similar improvements as well as some marginal improvements to top end performance, especially in environments with limited sources of entropy.\n\n^ this is the main thing\n\nBut also two minor fixups:\n * It should be easier to build puppetserver outside our network now (not 100% easy but slightly improved)\n * We used to ship an old deprecated version of facter with the puppetserver package (it should have been ignore and was completely unnecessary)\n\n\u00a0\n\nWhat is the best way to get this info in the release notes for you? These changes will also be in all the later releases (6.0.10, 6.3.whatever, 6. ...5.0?) how can I best surface this info to you for those releases?", "created": "2019-07-10T11:44:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], how does a SERVER ticket with the relevant fix versions sound? Just add the roll up of unticketed work to the docs tab and mark it as \"bug fix\" (or really, anything except \"not needed\").\n\nThe fix versions can be whatever Server versions they apply to, since the Server release notes are versioned with Server, so you don't need to worry about what Puppet versions. We map the Server version to the Puppet version in our publishing pipeline.", "created": "2019-07-10T16:03:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79], I made\u00a0SERVER-2590 put the info in there and gave it the appropriate fix versions. Let me know if I can do anything else (or misconstrued anything you said)!", "created": "2019-07-10T16:36:00.000000"}], "components": [], "created": "2019-06-16T17:21:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@711f4fca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9755"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv6dj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2388_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2006848934"}], "description": "(Initial planned release date: 2019-07-16)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-07-09T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.16 Release - 2019-07-16", "estimate": "PT0S", "externalId": "16546", "fixedVersions": [], "id": "16546", "issueType": "Task", "key": "SERVER-2566", "labels": [], "originalEstimate": "PT0S", "parent": "20108", "parentSummary": "Puppet Platform 5.5.16 Release - 2019-07-16", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2019-07-09T22:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.9)", "timeSpent": "PT0S", "updated": "2019-07-10T16:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:adac4e58-01ac-4fce-8be9-94131c26c73d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] is this on your radar? could you estimate the size?", "created": "2019-10-31T12:53:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yes it's on my radar. It's probably not that big, the fix is conceptually straightforward. We'd just need to be careful to make sure we find all the spots that need to be updated.", "created": "2019-10-31T12:58:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Moved this up in the backlog for the team to review and get an estimate on how much work this is.  ", "created": "2020-02-18T14:21:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "Will this fix be released in a 5.x version as well?", "created": "2020-05-04T03:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Currently we are only releasing it for 6.x, since the patch does not apply cleanly to 5.x, so a backport is extra work. [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] what are your thoughts on backporting these changes?", "created": "2020-05-05T13:19:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "5.x will be end of life in ~9 months so I think the correct investment is to not backport.  \n\n[~accountid:557058:e0389099-cc54-4f97-bd2a-7fa4735554bd] will you be able to update to 6.x?  if not, why?  ", "created": "2020-05-05T15:02:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "6.x dropped MCollective which we have some investment in, so it's prevented us jumping to 6.x and beyond. I'll just have to dangle this as a carrot to force the upgrade.", "created": "2020-05-06T02:47:00.000000"}], "components": ["Certificate Authority"], "created": "2019-06-10T09:33:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@534ffa4a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Rank", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2000.0"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwlb9:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Puppet Server CA will now write all of its files atomically, preventing an issue where CRLs could be read partway through being written, resulting in a failed load and corruping CA state."}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "35116,38360"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_597188373_*|*_1_*:*_1_*:*_9848956126_*|*_10007_*:*_1_*:*_81054162_*|*_3_*:*_1_*:*_620655949_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5514068128_*|*_10005_*:*_1_*:*_12030916508"}], "description": "When issuing or revoking certificates, the Puppet Server must update files that hold the state of the certificate authority. Currently, this is done by opening the file as {{O_WRONLY|O_CREAT|O_TRUNC}} and re-writing the entire thing. This approach means that a sudden halt, such as an OutOfMemory kill or exhaustion of disk space, will interrupt the file write and leave incomplete, corrupted state behind. To mitigate this, Puppet Server should use atomic file operations when updating CA state files like the CRL, inventory, and serial number.\n\nIn addition, if another thread attempts to read these files while they are being written, an incomplete version will be read into memory, causing a local problem, even if the file ultimately writes to completion.\n\nh2. Suggested Approach\n\nWhen updating CA state files, Puppet Server should:\n\n  - Write the new content to a temporary file, then fsync it\n  - Move the temporary file into place, then fsync the directory containing the file\n\nIf the server is interrupted before step 2 completes, then the previously valid file will remain.", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "16080", "fixedVersions": ["SERVER 6.11.1"], "id": "16080", "issueType": "Improvement", "key": "SERVER-2565", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2020-05-07T11:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server should use atomic file operations when updating CA state", "timeSpent": "PT0S", "updated": "2020-05-07T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-06-07T16:32:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f99b192"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9734"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv12n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2267_*|*_3_*:*_1_*:*_16881_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1021148949"}], "description": "(Initial planned release date: 2019-06-18)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-06-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.5.0 Release - 2019-06-18\n", "estimate": "PT0S", "externalId": "15464", "fixedVersions": [], "id": "15464", "issueType": "Task", "key": "SERVER-2564", "labels": [], "originalEstimate": "PT0S", "parent": "22224", "parentSummary": "Puppet Platform 6.5.0 Release - 2019-06-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-06-19T12:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.4.0)", "timeSpent": "PT0S", "updated": "2019-06-19T12:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-06-07T16:32:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51c5978c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9734"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv127:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2298_*|*_3_*:*_1_*:*_184766087_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_836408299"}], "description": "(Initial planned release date: 2019-06-18)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-06-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.5.0 Release - 2019-06-18\n", "estimate": "PT0S", "externalId": "14810", "fixedVersions": [], "id": "14810", "issueType": "Task", "key": "SERVER-2563", "labels": [], "originalEstimate": "PT0S", "parent": "22224", "parentSummary": "Puppet Platform 6.5.0 Release - 2019-06-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-06-19T12:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.4.0)", "timeSpent": "PT0S", "updated": "2019-06-19T12:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The only commits that haven't been merged up are docs commits that can come later. Still waiting on green CI before we can move to tagging.", "created": "2019-06-14T09:13:00.000000"}], "components": [], "created": "2019-06-07T16:32:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a2ff361"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9734"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv11z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2390_*|*_3_*:*_1_*:*_258199033_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_578206882"}], "description": "(Initial planned release date: 2019-06-18)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-06-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.5.0 Release - 2019-06-18\n", "estimate": "PT0S", "externalId": "17554", "fixedVersions": [], "id": "17554", "issueType": "Task", "key": "SERVER-2562", "labels": [], "originalEstimate": "PT0S", "parent": "22224", "parentSummary": "Puppet Platform 6.5.0 Release - 2019-06-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-06-17T08:52:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.4.0)", "timeSpent": "PT0S", "updated": "2019-06-17T08:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-06-07T16:32:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@769ecfc4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9734"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv11r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2316_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_578204875"}], "description": "(Initial planned release date: 2019-06-18)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-06-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.5.0 Release - 2019-06-18\n", "estimate": "PT0S", "externalId": "17121", "fixedVersions": [], "id": "17121", "issueType": "Task", "key": "SERVER-2561", "labels": [], "originalEstimate": "PT0S", "parent": "22224", "parentSummary": "Puppet Platform 6.5.0 Release - 2019-06-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Done", "resolutionDate": "2019-06-14T09:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.4.0)", "timeSpent": "PT0S", "updated": "2019-06-14T09:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Filed as major as the upgrade to PE 2019.1 currently requires creation of the infrastructure CRL to succeed and the {{NoMethodError}} generated does not indicate what the issue is. A common situation resulting in this error is the upgrade of a pre-2019.0 installation that used an external CA or otherwise had a non-standard but functional CA configuration that does not satisfy all of the validation checks performed by the {{Puppetserver::Ca::X509Loader}} class.", "created": "2019-06-07T15:26:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] Looks like this one was shipped in version 1.3.2 of the {{puppetserver-ca}} gem, but puppetserver it's self still needs to pick up the new version.", "created": "2019-08-09T18:24:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We've updated the version in puppetserver 5.x, I'll make sure it gets merged up and added to the PE projects as well.", "created": "2019-08-16T12:14:00.000000"}], "components": ["Certificate Authority", "CLI"], "created": "2019-06-07T15:17:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d69b545"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv0un:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Aug/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5454369581_*|*_10009_*:*_1_*:*_857470656_*|*_5_*:*_1_*:*_0"}], "description": "The {{puppetserver ca enable --infracrl}} loads the local files that comprise the Puppet Certificate Authority and use them to initialize a revocation list for infrastructure nodes. However, error checking is performed after the CRL initialization attempt which means an issue encountered when loading the CA files causes the command to terminate early with a NoMethodError instead of a useful error message.\n\nh2. Reproduction Case\n\n  - Install Puppet Server 6.3.0 on CentOS 7\n\n{code:bash}\nrpm -Uvh http://yum.puppetlabs.com/puppet6/puppet6-release-el-7.noarch.rpm\nyum makecache fast\nyum install -y puppetserver-6.3.0\n\nsource /etc/profile.d/puppet-agent.sh\n{code}\n\n  - Initialize the Puppet CA\n\n{code:bash}\npuppetserver ca setup\n{code}\n\n  - Remove the existing infrastructure CRL and move a file required to validate the CA state\n\n{code:bash}\nrm -f /etc/puppetlabs/puppet/ssl/ca/infra_crl.pem\nmv /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem.hidden\ntouch /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\n{code}\n\n  - Enable the infrastructure CRL\n\n{code:bash}\npuppetserver ca enable --infracrl\n{code}\n\nh3. Outcome\n\nThe enable command fails with a NoMethodError:\n\n{noformat}\n# puppetserver ca enable --infracrl\nTraceback (most recent call last):\n\t5: from /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'\n\t4: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.3.1/lib/puppetserver/ca/cli.rb:94:in `run'\n\t3: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.3.1/lib/puppetserver/ca/action/enable.rb:53:in `run'\n\t2: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.3.1/lib/puppetserver/ca/action/enable.rb:75:in `enable_infra_crl'\n\t1: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.3.1/lib/puppetserver/ca/action/enable.rb:100:in `create_infra_crl_chain'\n/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.3.1/lib/puppetserver/ca/local_certificate_authority.rb:214:in `create_crl_for': undefined method `subject' for nil:NilClass (NoMethodError)\n{noformat}\n\n\nh3. Expected Outcome\n\nThe enable command fails with messages that indicate the issue with loading the CA:\n\n{noformat}\n# puppetserver ca enable --infracrl\nError:\nCould not parse /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\nCould not detect any crls within /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\nCA not initialized. Please set up your CA before attempting to generate certs offline.\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16079", "fixedVersions": ["SERVER 6.3.2"], "id": "16079", "issueType": "Bug", "key": "SERVER-2559", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2019-08-19T16:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver ca enable doesn't check for errors before creating infrastructure CRLs", "timeSpent": "PT0S", "updated": "2019-08-19T16:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Hello [~accountid:557058:3343297b-7399-4b70-9ed0-6ed592707b8c], are you still having an issue with this?", "created": "2019-10-25T17:19:00.000000"}, {"author": "623c1254a1d81f0069d8e190", "body": "I ran into the exact same issue and managed to get things running after many hours of searching the web for answers. I'd love to fix this on the master rather than on the client node but don't really know my way around the whole certificate thing. Any advice?", "created": "2020-06-05T03:23:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "Can you verify that the Puppet agent major version matches the master? This looks like it may be a platform 5 agent talking to a platform 6 master.", "created": "2020-12-02T12:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Going to close this, since it's been inactive for a while. Please reopen with more details if you're still having issues.", "created": "2021-03-31T11:07:00.000000"}], "components": [], "created": "2019-06-07T13:21:00.000000", "creator": "557058:3343297b-7399-4b70-9ed0-6ed592707b8c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7489f5a4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Console Browser", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Chrome"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Master Config", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Monolithic"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Other"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv0sn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_57275135649_*|*_6_*:*_1_*:*_0"}], "description": "Hi all, i have followed a repo install on Ubuntu.\n\nWhen testing the agent, i was getting the below:\u00a0\n\n{{C:\\Windows\\system32>puppet agent --test\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get issuer certificate for /CN=Puppet CA: puppet.mydomain.com]\nInfo: Retrieving pluginfacts\nError: /File[C:/ProgramData/PuppetLabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get issuer certificate for /CN=Puppet CA: puppet.mydomain.com]\nError: /File[C:/ProgramData/PuppetLabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get issuer certificate for /CN=Puppet CA: puppet.mydomain.com]\nInfo: Retrieving plugin\nError: /File[C:/ProgramData/PuppetLabs/puppet/cache/lib]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get issuer certificate for /CN=Puppet CA: puppet.mydomain.com]\nError: /File[C:/ProgramData/PuppetLabs/puppet/cache/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get issuer certificate for /CN=Puppet CA: puppet.mydomain.com]\nError: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get issuer certificate for /CN=Puppet CA: puppet.mydomain.com]\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\nError: Could not send report: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get issuer certificate for /CN=Puppet CA: puppet.mydomain.com]}}\n\nI have troubleshooted to the following:\n\n1) There is no CRL created in CA\n\n2) Auto-downloaded window agent has a ca.pem, but this contains one cert only... when downloading from the puppet master shows [https://puppet.mydomain.com:8140/puppet-ca/v1/certificate/ca|https://puppet.example.com:8140/puppet-ca/v1/certificate/ca]\u00a0two chained certificates in the same file.\n\n3) O the agent leaving everything as is (with the auto downloaded ca.pem that only contans the single cert), and testing the chain with openssl throws an error:\n\nC:\\ProgramData\\PuppetLabs\\puppet\\etc\\ssl\\certs>openssl verify -CAfile ca.pem home-hv1.pem\nhome-hv1.pem: CN = Puppet CA: puppet.mydomain.com\nerror 2 at 1 depth lookup:unable to get issuer certificate\n\n3) On the agent, replacing\u00a0C:\\ProgramData\\PuppetLabs\\puppet\\etc\\ssl\\certs with the downloaded (from step 2) and renaming to ca.pem, then allows openssl to pass:\n\nC:\\ProgramData\\PuppetLabs\\puppet\\etc\\ssl\\certs>openssl verify -CAfile ca.pem home-hv1.pem\nhome-hv1.pem: OK\u00a0\n\n4) Trying to run with the above causes a failure\n\n\u00a0\n\n{{C:\\ProgramData\\PuppetLabs\\puppet\\etc\\ssl\\certs>puppet agent --test\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get certificate CRL for /CN=Puppet CA: puppet.mydomain.com]}}\n\n5) Setting the agent config\n\n{{[main]\nserver=puppet.mydomain.com}}\n\n{{autoflush=true}}\n\n{{manage_internal_file_permissions=false}}\n\n{{certificate_revocation = false}}\n\n\u00a0\n\nThen allowed the agent test to run\n\n\u00a0\n\n{{Info: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Caching catalog for home-hv1\nInfo: Applying configuration version '1559933691'}}\n\n{{}}", "environment": "Ubuntu LTS 18.04\n\nWindows Agent x64 latest (as of 06/2019)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15738", "fixedVersions": [], "id": "15738", "issueType": "Bug", "key": "SERVER-2560", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3343297b-7399-4b70-9ed0-6ed592707b8c", "resolution": "Cannot Reproduce", "resolutionDate": "2021-03-31T11:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CRL not created in CA, auto-downloaded window agent ca missing chain", "timeSpent": "PT0S", "updated": "2021-03-31T11:07:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Even with the CA disabled, the webserver operated by the compiler needs a readable CRL in order to determine whether to accept or reject the certificates presented by Puppet agents.", "created": "2019-06-07T15:29:00.000000"}, {"author": "623c0ed8866b810069e43620", "body": "Seeing the same thing. {{/etc/puppetlabs/puppet/ssl/crl.pem}}\u00a0exists because the machine is managed by puppet, so the agent has installed this file from the CA master. {{/etc/puppetlabs/puppet/ssl/ca/}} does not exist because CA services have always been disabled on the additional compile master.\n\nI understand why the compile master needs to check a CRL, but why is it looking for one in the ca directory specifically? Puppetserver expects us to create the ca directory, even though the host is not running any ca services, and be responsible for keeping an up to date copy of the {{ca_crl}} in there?\n\nCould it not use the agent-installed CRL instead? Or at least fall back to this if the CA directory does not exist?", "created": "2019-07-19T07:57:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yeah this seems like a bug.", "created": "2019-10-25T17:16:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "PE uses {{ssl-crl-path: /etc/puppetlabs/puppet/ssl/crl.pem}} on both the Master and Compilers. Seems like we should just update the packages to use this as the default value.", "created": "2019-10-29T13:57:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think this comes from here: https://github.com/puppetlabs/puppetserver/blob/337370397ec566a9ac3f0e0458fc805f12942e12/src/clj/puppetlabs/services/config/puppet_server_config_core.clj#L118\n\nIn FOSS, the default config files do not specify {{ssl-crl-path}}, instead we set it in code there based on the value of {{cacrl}}. (Confusingly, if I'm reading that code right, those \"overrides\" only come into effect if there's nothing to override.) I think changing that to {{hostcrl}} would do the right thing, or at least adding that as a fallback.", "created": "2021-02-22T11:04:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "PR for this change is up at https://github.com/puppetlabs/puppetserver/pull/2495. Seeing as we already use this setting in PE, the change seems unlikely to cause trouble.", "created": "2021-02-22T12:59:00.000000"}], "components": [], "created": "2019-06-07T05:10:00.000000", "creator": "557058:88b7bd93-d432-4423-aaca-d0fdc06c4004", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53f31028"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2712"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzv0iv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Jetty webserver will now use the local copy of the CRL, from Puppet's SSL dir, rather than the CA's copy. This makes it easier to set up compilers, which have a disabled CA service and therefore no CRL at the CA path."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_82215634_*|*_1_*:*_1_*:*_12139551793_*|*_10007_*:*_1_*:*_73847019_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_41978611628"}], "description": "*Puppet Version:* 6.4.2\n*Puppet Server Version:* 6.3.0\n*OS Name/Version:* Debian 9 (stretch)\n\nI'm attempting to set up a Puppet compile master as described [in the docs|https://puppet.com/docs/puppetserver/6.3/scaling_puppet_server.html], using DNS SRV records for service discovery:\n\n{code}\n_x-puppet._tcp.dev-chrisb.zcode.net. 142 IN SRV\t0 50 8140 puppet.dev-chrisb.zcode.net.\n_x-puppet-ca._tcp.dev-chrisb.zcode.net.\t300 IN SRV 0 100 8140 puppet.dev-chrisb.zcode.net.\n{code}\n\nI have successfully managed to configure a primary puppet server which is providing the CA services, and I have deployed a separate PuppetDB server for all the masters to connect to.\n\nHowever when I then try to set up the secondary compile masters without the CA service, I get an error about {{ssl-crl-path}} being inaccessible:\n\n{code}\nError: Systemd start for puppetserver failed!\njournalctl log for puppetserver:\n-- Logs begin at Thu 2019-06-06 19:10:37 BST, end at Fri 2019-06-07 11:37:24 BST. --\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]: Exception in thread \"main\" java.lang.IllegalArgumentException: Non-readable path specified for ssl-crl-path option: /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.lang.Reflector.invokeConstructor(Reflector.java:305)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_config$fn__27083$get_ssl_crl_path_BANG___27088$fn__27089.invoke(jetty9_config.clj:326)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_config$fn__27083$get_ssl_crl_path_BANG___27088.invoke(jetty9_config.clj:319)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_config$fn__27257$maybe_get_https_connector__27262$fn__27263.invoke(jetty9_config.clj:399)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_config$fn__27257$maybe_get_https_connector__27262.invoke(jetty9_config.clj:386)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_config$fn__27308$maybe_add_https_connector__27313$fn__27314.invoke(jetty9_config.clj:415)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_config$fn__27308$maybe_add_https_connector__27313.invoke(jetty9_config.clj:411)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_config$fn__27334$process_config__27339$fn__27340.invoke(jetty9_config.clj:436)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_config$fn__27334$process_config__27339.invoke(jetty9_config.clj:431)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_core$fn__28437$create_webserver__28442$fn__28443.invoke(jetty9_core.clj:655)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_core$fn__28437$create_webserver__28442.invoke(jetty9_core.clj:613)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_core$fn__28466$start_webserver_BANG___28471$fn__28472.invoke(jetty9_core.clj:693)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_core$fn__28466$start_webserver_BANG___28471.invoke(jetty9_core.clj:688)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_core$start_server_single_default.invokeStatic(jetty9_core.clj:940)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_core$start_server_single_default.invoke(jetty9_core.clj:937)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_core$fn__28919$start_BANG___28924$fn__28925.invoke(jetty9_core.clj:1037)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_core$fn__28919$start_BANG___28924.invoke(jetty9_core.clj:1032)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services.webserver.jetty9_service$reify__29314$service_fnk__4991__auto___positional$reify__29321.start(jetty9_service.clj:53)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services$fn__4828$G__4809__4831.invoke(services.clj:9)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.services$fn__4828$G__4808__4835.invoke(services.clj:9)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__13553$run_lifecycle_fn_BANG___13560$fn__13561.invoke(internal.clj:198)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__13553$run_lifecycle_fn_BANG___13560.invoke(internal.clj:181)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__13582$run_lifecycle_fns__13587$fn__13588.invoke(internal.clj:231)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__13582$run_lifecycle_fns__13587.invoke(internal.clj:208)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__14155$build_app_STAR___14164$fn$reify__14176.start(internal.clj:586)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__14203$boot_services_for_app_STAR__STAR___14210$fn__14211$fn__14213.invoke(internal.clj:612)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__14203$boot_services_for_app_STAR__STAR___14210$fn__14211.invoke(internal.clj:610)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__14203$boot_services_for_app_STAR__STAR___14210.invoke(internal.clj:604)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.core$partial$fn__5826.invoke(core.clj:2630)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__13627$initialize_lifecycle_worker__13638$fn__13639$fn__13789$state_machine__10791__auto____13814$fn__13817.invoke(internal.clj:251)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at puppetlabs.trapperkeeper.internal$fn__13627$initialize_lifecycle_worker__13638$fn__13639$fn__13789$state_machine__10791__auto____13814.invoke(internal.clj:251)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:973)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:972)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:977)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:975)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.core.async$ioc_alts_BANG_$fn__11006.invoke(async.clj:384)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.core.async$do_alts$fn__10946$fn__10949.invoke(async.clj:253)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.core.async.impl.channels.ManyToManyChannel$fn__6246$fn__6247.invoke(channels.clj:95)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at clojure.lang.AFn.run(AFn.java:22)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\nJun 07 11:32:49 puppet2.dev-chrisb.zcode.net puppetserver[22791]:         at java.lang.Thread.run(Thread.java:748)\nJun 07 11:32:50 puppet2.dev-chrisb.zcode.net systemd[1]: puppetserver.service: Control process exited, code=exited status=1\nJun 07 11:32:50 puppet2.dev-chrisb.zcode.net systemd[1]: Failed to start puppetserver Service.\nJun 07 11:32:50 puppet2.dev-chrisb.zcode.net systemd[1]: puppetserver.service: Unit entered failed state.\n{code}\n\nI have disabled the CA service on this host as described [here|https://puppet.com/docs/puppetserver/6.3/configuration.html#service-bootstrapping]\n\nNote that {{ssl-crl-path}} is not defined anywhere in the Puppet server's configuration, so it looks like this is a default value? It looks like the default doesn't cope with the CA service being disabled and/or there's something vital missing from the documentation on how to set up compile masters (or I somehow missed it).\n\n\n*Edited to add:*\n\nI was able to get the server to work by specifying the paths to the SSL files downloaded by puppet-agent in {{/etc/puppetlabs/puppetserver/conf.d/webserver.conf}}\n\n{code}\nwebserver: {\n    access-log-config: /etc/puppetlabs/puppetserver/request-logging.xml\n    client-auth: want\n    ssl-host: 0.0.0.0\n    ssl-port: 8140\n    ssl-cert: /etc/puppetlabs/puppet/ssl/certs/puppet2.dev-chrisb.zcode.net.pem\n    ssl-ca-cert: /etc/puppetlabs/puppet/ssl/certs/ca.pem\n    ssl-key: /etc/puppetlabs/puppet/ssl/private_keys/puppet2.dev-chrisb.zcode.net.pem\n    ssl-crl-path: /etc/puppetlabs/puppet/ssl/crl.pem\n}\n{code}\n\nIf this is required when setting up compile masters it should probably be mentioned in the docs, although ideally the defaults would just work\u2026", "epicLinkSummary": "Improve CRL Management", "estimate": "PT0S", "externalId": "17553", "fixedVersions": ["SERVER 6.15.3", "SERVER 7.1.0"], "id": "17553", "issueType": "Bug", "key": "SERVER-2558", "labels": [], "originalEstimate": "PT0S", "parent": "16586", "parentSummary": "Improve CRL Management", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:88b7bd93-d432-4423-aaca-d0fdc06c4004", "resolution": "Fixed", "resolutionDate": "2021-02-24T08:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Attempting to start a compile master fails with CRL error", "timeSpent": "PT0S", "updated": "2021-02-24T08:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The puppet_metrics_dashboard module can configure Telegraf to collect metrics from Puppet Server and ship them to InfluxDB:\n\nhttps://forge.puppet.com/puppetlabs/puppet_metrics_dashboard", "created": "2019-06-07T15:32:00.000000"}, {"author": "61ba0348acc926006a06fc59", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]\u00a0Thx, this works for me", "created": "2019-06-11T02:29:00.000000"}], "components": ["Performance", "Puppet Server"], "created": "2019-06-05T15:09:00.000000", "creator": "61ba0348acc926006a06fc59", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6563884b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzuzbj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_472833427_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Version:* N/A\n *Puppet Server Version:* All Future Versions\n *OS Name/Version:* All\n\n*Desired Behavior:*\n\nCurrently Puppet Server metrics can only be send to Graphite, please add InfluxDB support\n\n\u00a0\n\nI discussed this with [~accountid:557058:68216498-c6bf-4e8f-92c1-ac84887b7c02] and [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] at Contributor Summit", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15737", "fixedVersions": [], "id": "15737", "issueType": "New Feature", "key": "SERVER-2557", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61ba0348acc926006a06fc59", "resolution": "Fixed", "resolutionDate": "2019-06-11T02:30:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send Puppet Server metrics to Influx DB", "timeSpent": "PT0S", "updated": "2019-06-11T02:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've never seen that error before. Are you still having issues with this?", "created": "2019-10-02T17:15:00.000000"}, {"author": "623c0af1562ab90069f8afaa", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\n\nI actually am seeing this issue on puppetserver 6.10 when using `curl` or Foreman API to do a `revoke", "created": "2019-11-08T17:05:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "That seems plausible. In Puppet Server 6.7.0 (which corresponds with Puppet 6.10), we added some code that syncronized writes to the CRL, so that corruption isn't permanent, but we still do not do atomic writes. https://puppet.atlassian.net/browse/SERVER-2565 tracks the work for fixing that.", "created": "2019-11-08T17:18:00.000000"}, {"author": "623c0af1562ab90069f8afaa", "body": "Ah you're right, my mistake.\u00a0 We're puppetserver 6.7.1 with puppet-agent 6.10.1.\n\nI figured it had a likelihood of being related to large CRL as we have almost 2000 nodes with another 768 on the way that will be attached to it early in the new year.\u00a0 ~94% of them are stateless(full reinstall every reboot), so when I started out I didn't have a method prepared to store their certs securely for being acquired and decrypted upon reboot which was causing us to revoke and re-issue certificates a lot(not ideal but limited timeframe)\n\nI'll keep a watch on that ticket in hopes that it might fix the issue.\n\n\u00a0\n\nThanks Maggie.", "created": "2019-11-08T17:37:00.000000"}], "components": ["API"], "created": "2019-05-24T16:53:00.000000", "creator": "623a46ab94742a00683d6f7b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29837ffd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzust3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_13306916258_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 5.5.0*\n *Puppet Server Version:**5.5.0***\n *OS Name/Version:*\n\nRed Hat Enterprise Linux Server release 6.10 \nWe upgraded to puppet 5.5.0 recently, so far it's working fine but we see lots of issue with SSL certs. Currently, we are using self-signed certs ( I know that's not the best way to handle certs and we do have plans to move away from self-signed certs)\u00a0\n\u00a0\nWe using below API's to delete/revoke certs.\u00a0\n[https://puppet.com/docs/puppet/5.5/http_api/http_certificate_status.html]\n\u00a0\n\u00a0\nI see that sometimes it fails with the following error.\u00a0Please note I am using below DELETE\u00a0 API.\u00a0\u00a0\n\u00a0\nDELETE /puppet-ca/v1/certificate_status/:hostname?environment=:environment\n\u00a0\n\u00a0\nError:\ndelete_host: libcurl error 35 (SSL connect error): SSL peer had some unspecified issue with the certificate it received.\"\n\u00a0\n\u00a0\nDoes anyone encounter this error?\u00a0 It looks like a bug to me. I hit it a few times and It's intermittent.\u00a0 Next time if I do , it works\n\u00a0\nThis is what defined in our\n\u00a0\n\ncat /etc/puppetlabs/puppetserver/conf.d/auth.conf \n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # Allow all nodes to access the certificate revocation list\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 match-request: {\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 path: \"/puppet-ca/v1/certificate_status\"\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 type: path\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 method: [get, put, delete]\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 allow: \"Puppetmastercert\"\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 sort-order: 500\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 name: \"puppetlabs certification status\"\n\n\u00a0 \u00a0 \u00a0 \u00a0 },\n\n*Desired Behavior:*\n\nIt should clear the client certs but sometimes it doesn't\n\n*Actual Behavior:*\n\nIt should clear the client certs but sometimes it doesn't. If I run the same curl Next time, it does.**\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14809", "fixedVersions": [], "id": "14809", "issueType": "Bug", "key": "SERVER-2553", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a46ab94742a00683d6f7b", "resolution": "Cannot Reproduce", "resolutionDate": "2019-10-25T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PUT/DELETE API ERROR", "timeSpent": "PT0S", "updated": "2019-11-08T17:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Certificate Authority"], "created": "2019-05-24T16:05:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@505b8b56"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2548"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsu9z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The {{puppetserver ca import}} command will now initialize an empty CRL for the intermediate CA if one is not provided in the {{crl-chain}} file."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_361006_*|*_10007_*:*_1_*:*_509858065_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4210646482_*|*_10005_*:*_1_*:*_2797931163"}], "description": "Setting Puppet Server up to operate an intermediate CA that is issued by an external CA requires supplying the {{puppetserver ca import}} command with a complete chain of certificates and certificate revocation lists for the intermediate CA and the external CA that signed it. The external CA can provide the certificates and some of the certificate revocation lists, but generating a revocation list for the intermediate CA operated by Puppet Server requires access to the private key used by Puppet Server. Most external CAs will be incapable of providing this revocation list as transporting the private key between nodes is against best practices.\n\nTherefore, the {{puppetserver ca import}} command should initialize an empty CRL for Puppet's intermediate CA if it detects one has not been provided in the crl chain from the external root.", "epicLinkSummary": "Improve CA Import", "estimate": "PT0S", "externalId": "17120", "fixedVersions": ["SERVER 5.3.10", "SERVER 6.3.2", "SERVER 6.6.0"], "id": "17120", "issueType": "Improvement", "key": "SERVER-2552", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": "15460", "parentSummary": "Improve CA Import", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Done", "resolutionDate": "2019-08-19T16:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The puppetserver ca import command should initialize a CRL for the intermediate CA", "timeSpent": "PT0S", "updated": "2019-09-12T12:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I definitely think the API should return the date in addition to any other flagging. Maybe we should start with just the date and add a flag later if we have a reason to (e.g. FOSS users want it to integrate against)?", "created": "2020-06-15T15:23:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Updated the description to reflect discussion with our Console folks.", "created": "2020-06-15T15:34:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm going to make a new endpoint for this under the {{puppet-ca}} URL. That gives us flexibility for authorization.", "created": "2020-07-20T14:18:00.000000"}], "components": ["Certificate Authority"], "created": "2019-05-24T15:32:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3cf08cc2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkbbi"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added a new endpoint `/puppet-ca/v1/expirations` that returns the \"not-after\" date for each certificate in the CA bundle, as well as the \"next-update\" date of each CRL in the chain, keyed by common name. The endpoint requires authentication."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_337139118_*|*_1_*:*_1_*:*_2377463_*|*_10007_*:*_1_*:*_97551929_*|*_3_*:*_1_*:*_687399111_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_3_*:*_14514388669_*|*_10005_*:*_2_*:*_21501369463"}], "description": "When running the Puppet CA as a subordinate of an external root, the revocation lists and certificates that make up the external CA chain must be kept up to date. Most external CAs operate with a short interval between CRL updates. For example, Active Directory Certificate Services defaults to publishing new CRLs on a one-week cadence. If an externally published CRL expires or CA certificate expires, then certificate validation within the Puppet infrastructure will fail.\n\nIn order to alert operators to the impending expiration of a CA certificate or CRL entry, the Puppet Server status API should include these dates in its output. Then consumers of the API can flag certs visibly to administrators. If there is demand, we can add a separate flag to warn users in the API output itself.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16078", "fixedVersions": ["SERVER 6.13.0"], "id": "16078", "issueType": "Improvement", "key": "SERVER-2551", "labels": ["ondeck1"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Done", "resolutionDate": "2020-07-27T12:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The Puppetser Server status endpoint should include CA and CRL expiration dates", "timeSpent": "PT0S", "updated": "2022-02-25T12:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I like this way of approaching the problem. We should try to get this in soonish.", "created": "2020-02-20T14:56:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The main advantage to doing this sort of update through an API update is that it can be serialized with respect to other CA activity that may be occurring concurrently. E.g. revoking Puppet agent certificates, which updates the intermediate CA CRL, concurrently with updating the CRL from an external root CA.", "created": "2020-02-20T15:42:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Will start a google doc with some background information as a place to start team discussion about this implementation. ", "created": "2021-01-22T12:56:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is the Google Doc with technical background: https://docs.google.com/document/d/1ips9HUcFwlLe_pDKRWPFSieCm6nYhgpc6hOeMkxQ5uo/edit", "created": "2021-01-29T12:33:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Will use this ticket as a story and create sub-tasks to individually groom and point next week.", "created": "2021-02-05T12:21:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "We should add a task to document this.", "created": "2021-02-19T12:16:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] do you think customers are going to want this exposed via the CLI too, or is an API endpoint sufficient?", "created": "2021-02-19T12:18:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I think the API would be sufficient for now. A CLI that accepted a CRL file and then submitted it to the API would be convenient --- however, I suspect most folks will be writing some sort of script that is fetching CRL updates in a manner dictated by their external CA infrastructure. At that point, the convenience is diminished because you've already got a script making the fetch that could turn around and make the POST to the API. ", "created": "2021-02-23T10:11:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Open question: What is the desired behavior when an incoming CRL revokes our intermediate CA cert?", "created": "2021-04-29T14:36:00.000000"}, {"author": "611123f06051c5006a3685ec", "body": "I would think if the CA cert was expired in the CRL you would cease operations.\u00a0 Obviously this would make puppet error everywhere until resolved, but that would be the behavior I would expect.\u00a0 If the CA cert is revoked all the certs it has signed should also be revoked.", "created": "2021-04-30T04:29:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "The desired behavior should be \"nothing magic\".\n\nIf an incoming CRL revokes the intermediate CA Puppet Server uses to sign certs, that should NOT result in any drastic triggered effects. X.509 PKI doesn't require additional cascading revocations in order for revocation semantics to work correctly. If an error was made, triggering additional SSL actions is only going to make it harder to unwind.\n\nAt most, it may be acceptable to disable the signing of new certificates using a revoked intermediate CA. This would be helpful to the user as it may make the error state more visible than receiving a useless \"signed\" cert.", "created": "2021-04-30T10:29:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I think the API should reject any update that causes the CA chain (external root to Puppet signing CA) to fail validation in order to guard against changes that would cause an outage of Puppet services.\n\nIf the primary Puppet server has been compromised in a way that requires its CA certificate to be revoked, then using the API is an improper way to go about it as a compromised service can not be relied upon to let the agents know it has been compromised. ", "created": "2021-04-30T14:41:00.000000"}], "components": ["Certificate Authority"], "created": "2019-05-24T15:24:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@119c8456"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Rank", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "7500.0"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2712"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o070dj:i"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added a new API endpoint `PUT /puppet-ca/v1/certificate_revocation_list` that accepts a list of CRL PEMs as a body, and updates the matching CRLs saved on disk if the submitted ones have a higher CRL number than their counterparts on disk. Cannot be used to update the CRL associated with the Puppet CA signing cert (just earlier ones in the cert chain). This is for use by customers treating the Puppet CA as an intermediate signing CA for their corporate PKI, whose CRLs require frequent updating."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_300810039_*|*_1_*:*_1_*:*_2845308_*|*_10007_*:*_1_*:*_108722105_*|*_3_*:*_2_*:*_5068795460_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_6553983802_*|*_10005_*:*_1_*:*_51326927168"}], "description": "When running the Puppet CA as a subordinate of an external root, the revocation lists published by the external CA chain must be kept up to date. Most upstream CAs operate with a short interval between CRL updates. For example, Active Directory Certificate Services defaults to publishing new CRLs on a one-week cadence. If an externally published CRL expires, then certificate validation within the Puppet infrastructure will fail.\n\nIn order to facilitate updates of external CRLs, the Puppet CA API should accept revocation list uploads and handle the details of adding them to the right ca_crl and infrastructure_crl files along with distribution to other Puppet components. Providing an API for this yields some important benefits:\n\n  - Locating and retrieving an updated CRL from a distribution point can involve several finicky details around protocols and credentials used to access the update. Adding a CRL update API allows this complextity to be delegated to an external script that runs as a scheduled task or cron job.\n\n  - Adding an API endpoint allows Puppet Server to appropriately serialize updates to its on-disk CRL files with respect to concurrent revocation activity around Puppet agent certificates. This addresses the potential for CRL file corruption that would occur if an external update process wrote directly to the files.\n\n  - Logging around CRL refresh activity is written to the Puppet Server access log in an easily parsed format.\n\n\n*Acceptance criteria:*\n* HTTPS endpoint in the [puppet-ca/v1|https://github.com/puppetlabs/puppetserver/blob/9cb1073394f22ad14487992d3af34ca33e0b3b5e/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L373] API that receives a POST to consume CRL updates on the /certificate_revocation_list resource.\n* Should use the same tk-auth rules as the existing CA admin endpoints.\n* Writes a new [CRL file|https://github.com/puppetlabs/puppetserver/blob/6.x/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L467] (given chain + local CA CRL) to be used by the server & CA. All uses should be satisfied by writing the CRLs to disk at the location the CA writes it during revocations.\n** Including the [infra-crl|https://github.com/puppetlabs/puppetserver/blob/6.x/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1521-L1533] pem.\n* Should not cause race conditions with existing revocations (utilizes existing CRL [write lock|https://github.com/puppetlabs/puppetserver/blob/6.x/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L346]).\n* Logs that it has received CRLs and updated the CRL file at INFO level.\n\n*Docs:* see DOC-4999\n* Add details based on the API decisions made in SERVER-2961. Docs for the existing {{certificate_revocation_list}} endpoint: https://github.com/puppetlabs/osp-docs/blob/latest-preview/server/http_certificate_revocation_list.md\n* Document how to use the new CRL update endpoint as part of the \"how to setup an intermediate CA\" documentation.  ", "epicLinkSummary": "Improve CRL Management", "estimate": "PT0S", "externalId": "15462", "fixedVersions": ["SERVER 6.16.0", "SERVER 7.2.0"], "id": "15462", "issueType": "New Feature", "key": "SERVER-2550", "labels": ["doc_reviewed", "DOCS"], "originalEstimate": "PT0S", "parent": "16586", "parentSummary": "Improve CRL Management", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Done", "resolutionDate": "2021-05-26T23:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The CA API should accept CRL updates", "timeSpent": "PT0S", "updated": "2021-06-22T10:25:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm not sure where this belongs. The [docs|https://github.com/puppetlabs/puppetserver-ca-cli/blob/master/lib/puppetserver/ca/action/generate.rb#L31-L46] for {{generate}} currently clearly state that it is for generating certs signed by the CA managed by the tool. We could make that more general (which might not be great given how long it's already been out in the world) or we could add a new action, but I'm not sure what we would call it, nor if there are other potential use cases (creating other artifacts and bits of the system, e.g. SERVER-2346) that it should also cover.", "created": "2019-06-12T11:25:00.000000"}, {"author": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "body": "It seems to me that extending {{generate}} to support this would be confusing because it's a pretty different use-case. If we wanted to extend an existing command, it might make more sense to extend {{setup}} instead. Otherwise, I think a separate command for issuing intermediate CA CSRs makes more sense. Then for SERVER-2346, we might want to use {{generate}} if we're generating a signed certificate or the new command if we're only issuing a CSR.", "created": "2019-06-12T11:55:00.000000"}], "components": ["Certificate Authority"], "created": "2019-05-24T12:54:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10a6d6d4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2548"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsu9j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_65771_*|*_3_*:*_1_*:*_3386336299_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1715721745_*|*_10005_*:*_2_*:*_82938282011"}], "description": "When users want to use the {{import}} command to set up their CA chaining back to their org's root CA, we ask them to create a key and CA cert for Puppet, as well as a CRL. We don't provide any detailed instruction for this due to platform differences. However, we should be able to provide a CLI that generates these artifacts for them in Ruby, since that is what we would be doing if we were setting up the whole CA for them.\n\nWe should add a command to the {{puppetserver ca}} CLI that generates and key and CSR for the Puppet CA, which can be signed by an org's CA. The resulting cert can be used with the {{import}} command as part of the cert bundle.", "epicLinkSummary": "Improve CA Import", "estimate": "PT0S", "externalId": "16262", "fixedVersions": [], "id": "16262", "issueType": "Task", "key": "SERVER-2549", "labels": [], "originalEstimate": "PT0S", "parent": "15460", "parentSummary": "Improve CA Import", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add command for creating a CSR for the Puppet CA", "timeSpent": "PT0S", "updated": "2022-03-08T11:34:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Certificate Authority"], "created": "2019-05-24T12:33:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@338843f8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-3"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Improve CA Import"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqvwc:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_88041644811_*|*_6_*:*_1_*:*_0"}], "description": "As customers have started to use our new tooling designed to facilitate setting up Puppet's CA as intermediate with an external root, a number of issues have cropped up, mostly quality of life, but also bugs. This epic tracks the work to clean it up.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15460", "fixedVersions": [], "id": "15460", "issueType": "Epic", "key": "SERVER-2548", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve CA Import", "timeSpent": "PT0S", "updated": "2022-08-24T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "First issue I'm hitting is that the PuppetDB module won't install under FIPS. I'm trying to figure out if beaker has a way of detecting that we're running in FIPS, because currently PDB install is skipped based on platform name, but we just use el7 for FIPS too, and make no distinction.", "created": "2019-07-12T15:07:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Three related PRs for this:\nBeaker: https://github.com/puppetlabs/beaker/pull/1592\nPuppet: https://github.com/puppetlabs/puppet/pull/7616\nPuppetserver: https://github.com/puppetlabs/puppetserver/pull/2122\n\nThe puppetserver should be merged last, and once all three are in and promoted, we can add the redhatfips target to ci-job-configs.", "created": "2019-07-17T17:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Filed https://puppet.atlassian.net/browse/SERVER-2596 about re-enabling the tests using {{puppet module}} once that tool is fixed.", "created": "2019-07-18T09:19:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The PR skipping tests has yet to be merged, but the PMT has already been fixed. I'll re-evaluate once that code becomes available to test against. We may not need the puppetserver PR.", "created": "2019-07-23T15:49:00.000000"}], "components": [], "created": "2019-05-23T16:30:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4355f245"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke1r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "RedHat 7 FIPS mode packages are now available for puppetserver."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_339247144_*|*_1_*:*_1_*:*_66298998_*|*_10007_*:*_1_*:*_1039200418_*|*_3_*:*_2_*:*_260342967_*|*_5_*:*_1_*:*_38525739442_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_4420566264"}], "description": "Add redhatfips-7-x86_64 to [puppetserver test matrices in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml].\nDisable {{puppetserver gem}} test(s) since they do not work in fips.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15736", "fixedVersions": ["SERVER 6.6.0"], "id": "15736", "issueType": "Task", "key": "SERVER-2555", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2019-08-02T14:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable redhatfips-7-x86_64 test pipeline for puppetserver", "timeSpent": "PT0S", "updated": "2020-11-13T16:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We already have the right versions of ezbake and beaker-hostgenerator in the puppetserver#master branch. The package build succeeded when triggering ezbake locally, package is http://builds.delivery.puppetlabs.net/puppetserver/6.4.1.SNAPSHOT.2019.07.12T1140/artifacts/redhatfips/7/puppet6/x86_64/.\n\nI've put up the ci-job-configs PR so we can start building this in our pipelines.", "created": "2019-07-12T14:09:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I didn't run into any issues with gem, do we expect that to start failing once we are actually pulling in bouncy-castle? /cc [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]", "created": "2019-07-12T14:10:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yes. gem will fail when using fips bc. In our build scripts where we pull down those gems we should probably create a non-fips profile to use.", "created": "2019-07-12T14:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think how we solve the gem issue will depend on how we end up switching in the bouncy-castle jar. We should be aware that this will start failing when we start using BC, but I don't think that should block starting to build packages for the platform (as this will help enable further PE testing).", "created": "2019-07-12T15:06:00.000000"}], "components": [], "created": "2019-05-23T16:30:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32b3fe54"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke13:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_231549962_*|*_1_*:*_1_*:*_66287106_*|*_10007_*:*_1_*:*_7107548_*|*_3_*:*_1_*:*_9348733_*|*_5_*:*_1_*:*_40097704709_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4239409755"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetserver for redhatfips-7-x86_64\n* Add redhatfips-7-x86_64 to [puppetserver's packaging settings in ci-job-configs|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml#L84-L93]\n* We will probably need to specify a foss bouncycastle based gem command during build time when building fips packages [here|https://github.com/puppetlabs/puppetserver/blob/master/resources/ext/build-scripts/install-vendored-gems.sh#L26] (gem doesn't work with fips).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15459", "fixedVersions": ["SERVER 6.5.0"], "id": "15459", "issueType": "Task", "key": "SERVER-2554", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Done", "resolutionDate": "2019-07-15T09:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable redhatfips-7-x86_64 builds for puppetserver", "timeSpent": "PT0S", "updated": "2020-11-13T16:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] just making sure this ticket is on your team's radar - if there's nothing you need to do for this feel free to close", "created": "2019-08-16T12:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It is, we still need to do something to turn this on, but I'm waiting for the resolution of SERVER-2019 before flipping this on, because until then the server won't start, so our pipelines will be blocked.", "created": "2019-08-16T12:52:00.000000"}, {"author": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "body": "(y)\u00a0sounds good!", "created": "2019-08-16T14:03:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is now also blocked until jar-jar is able to incorporate all the clj-parent bumps.", "created": "2019-08-27T16:52:00.000000"}], "components": [], "created": "2019-05-23T16:29:00.000000", "creator": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@728d24c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke5j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Aug/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_324476290_*|*_1_*:*_1_*:*_5443875512_*|*_10007_*:*_1_*:*_621360_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6560306982"}], "description": "Test pe-puppetserver for redhatfips-7-x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15735", "fixedVersions": ["None"], "id": "15735", "issueType": "Task", "key": "SERVER-2547", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "resolution": "Fixed", "resolutionDate": "2019-10-13T09:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Test pe-puppetserver for redhatfips-7-x86_64", "timeSpent": "PT0S", "updated": "2019-10-13T09:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623a4ceda1d81f0069d8127c", "created": "2019-08-12T13:37:00.000000", "name": "Justin Stoller.url", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11052"}, {"attacher": "rk:3ef31772-c969-47a2-abb6-18adce96ed12", "created": "2019-05-23T12:41:00.000000", "name": "error.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10887"}], "comments": [{"author": "623e768c4a57610068e883dd", "body": "More information:\n\nThe exception is invoked by following code in `ruby/puppet/lib/puppet/feature/base.rb:19`\n\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 .....\n\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0 10 # We can use POSIX user functions\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 11 Puppet.features.add(:posix) do\n\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 12 require 'etc'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 13 !Etc.getpwuid(0).nil? && Puppet.features.syslog?\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 14 end\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 15\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 16 # We can use Microsoft Windows functions\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 17 Puppet.features.add(:microsoft_windows) \\{ Puppet::Util::Platform.windows? }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 18\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 19 raise Puppet::Error,_(\"Cannot determine basic system flavour\") unless\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Puppet.features.posix? or Puppet.features.microsoft_windows?\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 20\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ....\n\nBy inserting `puts` into line #12 -14, I got the following values\n\nOn s390x:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"Etc.getpwuid(0)\" is empty, \"Etc.getpwuid(0).nil\" == true", "created": "2019-05-28T08:06:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Can you run an agent on this host?\n\nPuppet's Ruby runtime needs to be able to find the root user and load a syslog library. The {{Etc.getpwuid(0)}} call checks for the root user, you can do the equivalent of {{Puppet.features.syslog?}} by doing {{require 'syslog'}} in a Ruby REPL.\n\nIf you run {{/opt/puppetlabs/puppet/bin/irb}} it will open a Ruby REPL with the Ruby runtime that the agent uses. If you run {{/opt/puppetlabs/bin/puppetserver irb}} it will open a Ruby REPL with the Ruby runtime that the server uses (which is what is failing on you). From either of those you can run the two commands above: {{require 'etc'", "created": "2019-05-30T17:36:00.000000"}, {"author": "623e768c4a57610068e883dd", "body": "Thank [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\n\nI am in \"root\".\n After installing \"ruby\" , I can start \"irb\" and it outputs:\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # irb\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 irb(main):001:0> require 'etc'\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 => true\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 irb(main):002:0> Etc.getpwuid(0)\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 => #<struct Etc::Passwd name=\"root\", passwd=\"x\", uid=0, gid=0, gecos=\"root\", dir=\"/root\", shell=\"/bin/bash\">\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 irb(main):003:0> require 'syslog'\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 => true\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 irb(main):004:0>\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 root@csz25188:/home/puppetserver# irb -v\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 irb 0.9.6(09/06/30)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # ruby -v\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ruby 2.3.1p112 (2016-04-26)\u00a0[s390x-linux-gnu]\n\nIt seems that running \"irb\" separately, I get the same result as on the x86_64.\n\nBTW, note that I am running from the source code:\u00a0 https://github.com/puppetlabs/puppetserver/blob/master/documentation/dev_running_from_source.markdown,\n\nfor running agent, get the same output as x86_64:\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 root@csz25155:/home/puppetserver# export RUBYLIB=./ruby/puppet/lib:./ruby/facter/lib\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 root@csz25155:/home/puppetserver# export PATH=./ruby/puppet/bin:./ruby/facter/bin:$PATH\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 root@csz25155:/home/puppetserver# puppet agent -t\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cannot load such file \u2013 semantic_puppet\n\nSo even on x86_64, I cannot get \"agent\" to start", "created": "2019-05-31T10:33:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "So, we don't have plans to officially support s390x as a master platform anytime soon. Though, we'd be happy to work with you and help you get any patches you'd like to champion merged, if that's what's required.\n\n\u00a0\n\nHowever, I think this is less a targeted, single issue that's workable in a ticket, than it is some thing that would be useful talking through in a more synchronous format with folks that have similar experience bootstrapping Puppet on community supported platforms. I think that going to the #puppet channel in the Puppet Community Slack ([https://slack.puppet.com/]) and posting your issues there is going to be the best way to resolve your issues.\n\n\u00a0", "created": "2019-05-31T11:31:00.000000"}, {"author": "623e768c4a57610068e883dd", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] \nThank you for your help. \nWe would like to figure out a solution and need\u00a0 help on the problem scope and advice/hint on possible code patches.\u00a0\n\nI will move to slack. \nBTW, I tested on Power, on which the same issue happens.", "created": "2019-05-31T12:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey, Sam. I remember the conversation went to Slack, though I don't remember the outcome. Did you get want you needed? Is there something more that needs to be done here?", "created": "2019-08-12T12:35:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "For business request, we need to port PuppetServer to S390x.\n1) Tried the latest release version (v6.5.0) following the instruction ([https://github.com/puppetlabs/puppetserver/blob/master/documentation/dev_running_from_source.markdown])\nit is ok to build puppetserver\n(./dev-setup), but it gets an error/exception when starting it by $ `lein run -c\u00a0 dev/puppetserver.conf `, it gets the same error as the previous version:\n\"\n\u00a0 \u00a0 2019-08-06 11:24:53,313 DEBUG [clojure-agent-send-pool-0] [p.s.j.i.jruby-agents] Priming\u00a0 JRubyInstance 1 of 1\n\u00a0 \u00a0 2019-08-06 11:24:53,314 INFO\u00a0 [clojure-agent-send-pool-0] [p.s.j.i.jruby-internal] Creating JRubyInstance with id 1.\n\u00a0 \u00a0 Puppet::Error: Cannot determine basic system flavour\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <main> at /home/puppetserver/ruby/puppet/lib/puppet/feature/base.rb:19\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 require at org/jruby/RubyKernel.java:970\n\"\n2) As\u00a0\u00a0jruby (v9.2) is a dependent package of puppetserver, I already made jruby (v9.2.7.0) work\u00a0 on s390x by adding jffi lib \"libjffi-1.2.so\" of s390x into the jruby package.\nHowever, checking the\u00a0 downloaded jruby jars after running \"dev-setup\" (in /root/.m2/repository/org/jruby) , found a few jars :\n\n\u00a0 \u00a0\u00a0 /root/.m2/repository/org/jruby/extras/bytelist/1.0.15/bytelist-1.0.15.jar\n\u00a0 \u00a0\u00a0 /root/.m2/repository/org/jruby/jruby-stdlib/9.2.0.0/jruby-stdlib-9.2.0.0.jar\n\u00a0 \u00a0\u00a0 /root/.m2/repository/org/jruby/joni/joni/2.1.16/joni-2.1.16.jar\n\u00a0 \u00a0\u00a0 /root/.m2/repository/org/jruby/dirgra/0.3/dirgra-0.3.jar\n\u00a0 \u00a0\u00a0 /root/.m2/repository/org/jruby/jruby-core/9.2.0.0/jruby-core-9.2.0.0.jar\n\u00a0 \u00a0\u00a0 /root/.m2/repository/org/jruby/jcodings/jcodings/1.0.30/jcodings-1.0.30.jar\n\nThere are no jars that include\u00a0 \"libjffi-1.2.so\" for x86_64 or other platforms.\nBy the way, here the jars of jruby is totally different with the jars from the jruby official download site ({{[https://repo1.maven.org/maven2/org/jruby/jruby-complete/9.2.7.0/jruby-complete-9.2.7.0.jar]}})\n\n\n\n\nSo here are my questions:\n1) How to replace the download\u00a0 jars as the above with the jruby official website? and make sure the jruby of puppetserver is workable without\u00a0{color:#333333}\"libjffi-1.2.so\"{color}?\n2) If the above error of puppetserver on s390x is not related to jruby, how can I look into further?\nCan you give me guidance or advice\u00a0 on what part of code I need to check?\n\n\u00a0", "created": "2019-08-12T12:41:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\n Hi Justin, \u00a0\n\nI come back for this issue now. \n As you mentioned the jruby is necessary for PuppetServer, I have made it work on s390x.\u00a0 However I still get the same error/exception when starting it.\n see (\u00a0https://puppet.atlassian.net/browse/SERVER-2545?focusedCommentId=676846&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-676846),\u00a0 I observed new facts and sent my inquiry a week ago to the slack channel, however, no one responded.\u00a0\n So I tried to repost here to get you developers attention.\u00a0\n I appreciate it if you developers can review and give us some high level guidance .\n\n\u00a0\n\nBy the way, the slack puppet channel updates very quickly and I cannot retrieve the msgs that were posted around May and June.\n\n\u00a0\n\nThanks,", "created": "2019-08-12T13:38:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "If I recall correctly we don't pull in the whole JRuby bundle because we need to pull JRuby and its individual libraries in so we can selectively exclude a couple. Specifically JRuby vendors bouncycastle within it, which will conflict with the version of bouncycastle that we use. You may want to try [jruby-deps|https://github.com/puppetlabs/jruby-deps] which is our how we package up those JRuby bits.\n\nYou may also want to read through SERVER-14, which revolved around getting Server to work on OpenBSD. I don't really know how successful it ever was, but it did involve working with the jffi maintainers to add an OpenBSD build of jffi, you see the result of that in this [PR|https://github.com/jnr/jffi/pull/43]. It looks like there's a binary for Linux on s390x but it is also 8 years old, you may need to recompile it for yourself.", "created": "2019-08-13T23:27:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "Thank you Justin,\n\nI have build\u00a0{color:#333333}\"{color}{color:#333333}libjffi-1.2.so{color}{color:#333333}\"{color} for s390x.\u00a0\nAfter check the all download jars after building puppetserver (by .\\dev-setup), I found that a jar\u00a0\n\n\u00a0 \u00a0/root/.m2/repository/com/github/jnr/jffi/1.2.17/jffi-1.2.17-native.jar\nincludes \"libjffi-1.2.so\" for all platforms except s390x. So I add it of s390x into the jar, like:\n\n\u00a0 \u00a0Archive:\u00a0 /root/.m2/repository/com/github/jnr/jffi/1.2.17/jffi-1.2.17-native.jar\n\u00a0 Length\u00a0\u00a0\u00a0\u00a0\u00a0 Date\u00a0\u00a0\u00a0 Time\u00a0\u00a0\u00a0 Name\n---------\u00a0 ---------- -----\u00a0\u00a0 ----\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\u00a0 2019-08-14 12:10\u00a0\u00a0 jni/\n\u00a0\u00a0 169145\u00a0 2018-05-07 19:06\u00a0\u00a0 jni/ppc64-AIX/libjffi-1.2.a\n\u00a0\u00a0\u00a0 83762\u00a0 2012-08-04 04:16\u00a0\u00a0 jni/x86_64-FreeBSD/libjffi-1.2.so\n\u00a0\u00a0\u00a0 55724\u00a0 2012-09-13 21:44\u00a0\u00a0 jni/i386-SunOS/libjffi-1.2.so\n\u00a0\u00a0\u00a0 92947\u00a0 2017-05-16 13:29\u00a0\u00a0 jni/sparcv9-Linux/libjffi-1.2.so\n\u00a0\u00a0 117320\u00a0 2019-08-14 12:10\u00a0\u00a0 jni/s390x-Linux/libjffi-1.2.so \u00a0 \u00a0 \u00a0\u00a0 // for s390x\u00a0\n\u00a0\u00a0\u00a0 94386\u00a0 2016-09-22 09:15\u00a0\u00a0 jni/aarch64-Linux/libjffi-1.2.so\n\u00a0\u00a0 141178\u00a0 2012-09-13 22:02\u00a0\u00a0 jni/x86_64-Windows/jffi-1.2.dll\n\u00a0\u00a0\u00a0 80909\u00a0 2012-09-13 05:04\u00a0\u00a0 jni/i386-Linux/libjffi-1.2.so\n\u00a0\u00a0\u00a0 86363\u00a0 2012-08-13 16:36\u00a0\u00a0 jni/arm-Linux/libjffi-1.2.so\n\u00a0\u00a0 148624\u00a0 2012-09-13 22:43\u00a0\u00a0 jni/Darwin/libjffi-1.2.jnilib\n\u00a0\u00a0 146475\u00a0 2013-03-15 15:30\u00a0\u00a0 jni/ppc-AIX/libjffi-1.2.a\n\u00a0\u00a0 116997\u00a0 2012-09-12 08:41\u00a0\u00a0 jni/i386-Windows/jffi-1.2.dll\n\u00a0\u00a0 509169\u00a0 2016-11-23 08:29\u00a0\u00a0 jni/x86_64-OpenBSD/libjffi-1.2.so\n\u00a0\u00a0 132742\u00a0 2014-11-06 08:59\u00a0\u00a0 jni/ppc64-Linux/libjffi-1.2.so \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 // for powerPC\n\u00a0\u00a0\u00a0 63184\u00a0 2012-09-18 10:45\u00a0\u00a0 jni/sparcv9-SunOS/libjffi-1.2.so\n\u00a0\u00a0\u00a0 90382\u00a0 2012-09-13 05:38\u00a0\u00a0 jni/x86_64-Linux/libjffi-1.2.so\n\u00a0\u00a0 116541\u00a0 2014-11-06 06:41\u00a0\u00a0 jni/ppc64le-Linux/libjffi-1.2.so\n\u00a0\u00a0 138344\u00a0 2012-09-13 21:50\u00a0\u00a0 jni/x86_64-SunOS/libjffi-1.2.so\n\u00a0\u00a0\u00a0\u00a0\u00a0 560\u00a0 2018-05-16 10:08\u00a0\u00a0 META-INF/MANIFEST.MF\n---------\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -------\n\n\nHowever it still gets the error :\"Puppet::Error: Cannot determine basic system flavour\" from\u00a0\n\"/home/puppetserver/ruby/puppet/lib/puppet/feature/base.rb:19\".\u00a0\n\n\nNote the \".so\" of PowerPC\u00a0 is already in this jar, but I got the same error when starting pupperserver on PowerPC platform.\u00a0 \nWonder there is other code that causes this error. \n\n\u00a0As for\u00a0 [jruby-deps|https://github.com/puppetlabs/jruby-deps], there is no instruction to build. How to start build?\n\nAfter I added the s390x\u00a0{color:#333333}\"{color}{color:#333333}libjffi-1.2.so{color}{color:#333333}\"{color} into jruby, the \"irb\" works on s390x.\u00a0\nOn puppetserver, when\u00a0{color:#333333}\"{color}{color:#333333}/home/puppetserver/ruby/puppet/lib/puppet/feature/base.rb:19{color}{color:#333333}\" is running, what executable binary or command is running this code?\n\nThanks,{color}\n\n\u00a0", "created": "2019-08-14T12:17:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "bq. How to start build?\n\nYou'll need the leiningen tool. They have a pretty user friendly website that will help you download the tool. Then you can run `lein uberjar`, or just `lein jar` to create an uberjar/jar as needed.\n\nOnce you get the tests at the start of this ticket to run in irb, then you should be able to get it to run in Puppet Server by making sure Puppet Server's ruby load paths are configured correctly.", "created": "2019-08-14T12:51:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "Built\u00a0{color:#333333}\u00a0 {color}[jruby-deps|https://github.com/puppetlabs/jruby-deps] and get 2 jars:\n\n\u00a0 \u00a0 \u00a0 \u00a0 root root 21132496 Aug 14 15:58 jruby-9k.jar\n\u00a0 \u00a0 \u00a0 \u00a0 root root\u00a0\u00a0\u00a0\u00a0 3902 Aug 14 15:58 jruby-deps-9.2.7.0-1.jar\n\ncopied \"{color:#333333}jruby-deps-9.2.7.0-1.jar{color}\" to replace downloaded \"/root/.m2/repository/puppetlabs/jruby-deps/9.2.0.0-1/jruby-deps-9.2.0.0-1.jar\".\nAs for \"jruby-9k.jar\", did not find similar jar in the downloaded files, but find it contains some class files of platform like:\n\n\u00a0 \u00a0 \u00a0\u00a0jnr/constants/platform/windows/*.class\n\u00a0 \u00a0 \u00a0\u00a0jnr/constants/platform/solaris/*.class\n\n\u00a0 \u00a0 \u00a0\u00a0jnr/constants/platform/freebsd/*.class\n\u00a0 \u00a0 \u00a0\u00a0jnr/constants/platform/aix/*.class\n\n\u00a0 \u00a0 \u00a0\u00a0jnr/constants/platform/fake/*.class\n\n\u00a0 \u00a0 \u00a0\u00a0jnr/constants/platform/openbsd/*.class\n\n\u00a0 \u00a0 \u00a0\u00a0jnr/constants/platform/linux/*.class\n\nThere seems no difference of Linux between x64 and s390x.\nHow this\u00a0{color:#333333}jruby-9k.jar{color} is used?\n\n \u00a0 \u00a0 \u00a0\n\n\u00a0 \u00a0 \u00a0\u00a0\n\u00a0\u00a0", "created": "2019-08-14T14:44:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "jruby-9k.jar is used in our enterprise product to switch between JRuby versions on demand. It should be the contents of the jruby-deps project with all of its dependencies as puppetserver expects them and effectively our version of the \"jruby-complete.jar\" excluding the libraries that we bring in via puppet server like bouncycastle. It should be an example of what is being pulled in by JRuby and an example of how jffi does, or doesn't, make its way onto your box.", "created": "2019-08-14T15:29:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "Currently pupperserver is woking on x86_64, do you know any other platforms it works?\nDoes it works on\u00a0arm-linux,\u00a0mips-linux\u00a0 and\u00a0sparc-linux?\n\n\n\n\u00a0", "created": "2019-08-15T13:08:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "No, I'm not aware of another architecture it works on, x86 is the only architecture we target for masters. To the extent that I've been helping with this its been in my free time.\n\nThere may be agents that support some of those platforms, however.", "created": "2019-08-15T13:59:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "I try to use the debugging feature after installation by\u00a0[https://github.com/puppetlabs/puppetserver/blob/master/documentation/dev_debugging.markdown#ruby-debug]\n\nbut it gets errors as follows:\n\n\u00a0 \u00a0 $ lein gem -c dev/puppetserver.conf install ruby-debug\n\n\u00a0 \u00a0 .....\n\u00a0 \u00a0\u00a0 ERROR: Invalid option: -c. See 'gem --help'.\n \u00a0\n Is the document out of date or my usage is not correct?\n \u00a0\n Thanks,\n \u00a0\n\n\u00a0", "created": "2019-08-21T13:08:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yeah, it looks like the definition of \"lein gem\" changed since then. Here's where it's defined currently: https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L206\n\nSo calling\n{code}\nlein gem install ruby-debug\n{code}\nis the same as calling\n{code}\nlein trampoline run -m puppetlabs.puppetserver.cli.gem --config ./dev/puppetserver.conf --  install ruby-debug\n{code}\n\nAlso, the {{ruby-debug}} part is old as well. It doesn't work with JRuby 9k, so it should only be used when using JRuby 1.7 (Puppet 5.x). For 9k (Puppet 6.x) you should try [pry-nav|https://github.com/nixme/pry-nav]", "created": "2019-08-21T15:47:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "Thank you, Justin\n\nNew observation:\n\nAfter getting error, there is a error report like:\n\u00a0 \u00a0 \u00a0\u00a0Full report at:\n\u00a0 \u00a0 \u00a0 /tmp/clojure-448013101601342975.edn\n\n\nThe file has:\n\n\u00a0 \u00a0 \u00a0 ....\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0 [RUBY\n\u00a0 \u00a0 \u00a0 \u00a0 <main>\n\u00a0 \u00a0 \u00a0\u00a0 \"uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb\" \u00a0 59]],\n\u00a0\nNote \"{color:#333333}kernel_require.rb{color}\" is in the downloaded jar:\u00a0/root/.m2/repository/org/jruby/jruby-stdlib/9.2.0.0/jruby-stdlib-9.2.0.0.jar.\nI hacked it by adding\u00a0 a line \"59 \u00a0 puts \"++++\" + String(path)\"\n\u00a0 \u00a0 \u00a0 \u00a057\u00a0\u00a0\u00a0\u00a0 if Gem::Specification.unresolved_deps.empty? then\n\u00a0 \u00a0 \u00a0\u00a0 58\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 RUBYGEMS_ACTIVATION_MONITOR.exit\n\u00a0 \u00a0 \u00a0\u00a0 59\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 puts \"++++\" +String(path)\n\u00a0 \u00a0 \u00a0\u00a0 60\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return gem_original_require(path)\n\u00a0 \u00a0 \u00a0\u00a0 61\u00a0\u00a0\u00a0\u00a0 end\n\n\nThen re-run puppetserver \"lein run -c dev/puppetserver.conf\" and notice that there are many printouts of \"path\", however, one of them is\u00a0\n\"++++uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/ffi/platform/s390x-linux/syslog.rb\"\nThis does not exist.\nunder \"{color:#333333}platform/s390x-linux{color}\", there is only two files:\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0.jrubydir\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0types.conf\nUnder \"platform/x86_64-linux\", there are :\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0errno.rb \u00a0 etc.rb \u00a0 fcntl.rb\u00a0 platform.conf\u00a0 \n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 socket.rb\u00a0 stat.rb\u00a0 sysconf.rb\u00a0 syslog.rb\u00a0 types.conf\u00a0 zlib.rb\n\nEach file has the 1st line like:\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0# This file is generated by rake. Do not edit\nThey are generated by rake.\n\n\n1) To run puppetserver on s390x, the similar 10 files are required", "created": "2019-08-22T10:33:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey, sorry, for the delay. I don't believe we run that rake task when we package up JRuby. I would expect that to be ran by the JRuby devs and committed to the repo, or ran as part of their release process for the jar(s) that we pull in. It might have something to jffi that you were building. This is honestly pretty deep into building a dependency that we largely treat as a black box. I think the JRuby maintainers would be better folks, and if you can confirm you have building JRuby working then we can talk about how to map that to Puppetserver.", "created": "2019-08-26T13:17:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "\u00a0\n\nPuppetserver can be started on s390x-linux if we do :\n\n\n\n1) built \"libjffi-1.2.so\"\u00a0 of s390x and put into jffi-1.2.17-native.jar", "created": "2019-08-29T13:49:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't think so, but I honestly don't know.", "created": "2019-09-01T13:12:00.000000"}, {"author": "623a4ceda1d81f0069d8127c", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\nAs the root issue is in the Jruby,\u00a0 can you close this issue? Thanks,", "created": "2019-11-27T08:11:00.000000"}], "components": [], "created": "2019-05-23T12:42:00.000000", "creator": "623e768c4a57610068e883dd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9c9a24a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzurlb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16235602100_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: v6.5.0*\n *Puppet Server Version: v6.5.0*\n *OS Name/Version: Ubuntu 16.04 of s390x*\n\nFollowing the instruction:\u00a0[https://github.com/puppetlabs/puppetserver/blob/master/documentation/dev_running_from_source.markdown]\n\nIt is successful to build /setup puppetserver by \"./dev-setup\". But when start it by \"lein run\u00a0 -c dev/puppetserver.conf\" , it gets exception as follows:\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ...\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 2019-05-23 14:26:10,208 DEBUG [clojure-agent-send-pool-0] [p.s.j.i.jruby-agents] Priming JRubyInstance 1 of 1\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2019-05-23 14:26:10,210 INFO [clojure-agent-send-pool-0] [p.s.j.i.jruby-internal]\u00a0 Creating JRubyInstance with id 1.\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Puppet::Error: Cannot determine basic system flavour\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <main> at /home/puppetserver/ruby/puppet/lib/puppet/feature/base.rb:19\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 require at org/jruby/RubyKernel.java:970\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext /kernel_require.rb:59\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <module:(root)> at /home/puppetserver/ruby/puppet/lib/puppet.rb:1\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <main> at /home/puppetserver/ruby/puppet/lib/puppet.rb:86\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 require at org/jruby/RubyKernel.java:970\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (root) at /home/puppetserver/ruby/puppet/lib/puppet.rb:38\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ...\n\nIt is not the issue of\u00a0 `{{tmp}} directory mounted\u00a0 noexec\\{{`}} as `mount` shows `/tmp` as:\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 /dev/vda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)\n\nAnd it is ok to write to /execute\u00a0 from directory `/tmp`\n\nCan you let me know what the problem is and hint to fix it?\n\nOn x86_64 (Ubuntu 16.04), there is no such issue, it can start with \"lein run -c dev/puppetserver.conf\".\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15064", "fixedVersions": [], "id": "15064", "issueType": "Bug", "key": "SERVER-2545", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e768c4a57610068e883dd", "resolution": "Won't Do", "resolutionDate": "2019-11-27T09:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Start pupperserver from source gets error on linux of s390x", "timeSpent": "PT0S", "updated": "2019-11-27T09:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Certificate Authority"], "created": "2019-05-23T10:21:00.000000", "creator": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50b15a53"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzurdb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4081909465_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_84054025195"}], "description": "in SERVER-2523 [~accountid:63d40628f6e1b543161789a7] mentions:\n{quote}For the CA key, I'd assume we can use Java's PKCS#11 provider, which provides a generic interface for accessing private keys on hardware devices. Oracle's docs indicate it supports FIPS mode if the underlying NSS libraries are configured in FIPS mode, [\"if the NSS secmod.db has been set to FIPS-140 compliant mode\"|https://docs.oracle.com/javase/9/security/pkcs11-reference-guide1.htm#JSSEC-GUID-7989F8B4-7260-4908-8203-99056B2D060E]. BouncyCastle seems like another possibility.\n\nI am not sure about the agent's private key. For example, mozilla's NSS libraries support FIPS mode and they say, [\"A FIPS-140 compliant application must do ALL of its cryptography in a FIPS-140 certified \"device\"... It must generate or derive cryptographic keys and store them internally... Except for \"public keys\", it must not allow any keys to leave it (to get outside of it) unless they are encrypted (\"wrapped\") in a special way.|https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/FIPS_Mode_-_an_explanation#What_is_FIPS_Mode_all_about]. My interpretation is storing private keys in plaintext in the filesystem is not ok, but is ok if they are password protected. I assume \"wrapped in a special way\" is referring to using an approved password based key derivation function and cipher to generate a symmetric key. It is also possible to use an openssl-pkcs11 engine to access the HSM. The agent work for that is fairly easy, but not implemented yet.\n{quote}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14808", "fixedVersions": [], "id": "14808", "issueType": "Improvement", "key": "SERVER-2544", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "allow password/encrypted private key for CA", "timeSpent": "PT0S", "updated": "2022-03-08T11:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "attachments": [], "comments": [], "components": [], "created": "2019-05-22T15:01:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6add8734"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykgnr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server will now list plan content from your modules, just as it does task content."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_527747561_*|*_1_*:*_1_*:*_6130_*|*_10007_*:*_1_*:*_771658253_*|*_3_*:*_1_*:*_2850409155_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_1206577717_*|*_10005_*:*_2_*:*_3014526438"}], "description": "To mirror the functionality for tasks, we want to be able to list plans and return information about them from Puppetserver. This entails a few steps:\n\n* Extend the Puppet::Server::Master ruby code to query the info_service for plans (https://github.com/puppetlabs/puppetserver/blob/master/src/ruby/puppetserver-lib/puppet/server/master.rb#L113-L129)\n* Extend the JrubyPuppet interface to expose those methods to clj (https://github.com/puppetlabs/puppetserver/blob/master/src/java/com/puppetlabs/puppetserver/JRubyPuppet.java)\n* Extend the JrubyPuppetService protocol to expose the new functionality https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/protocols/jruby_puppet.clj\n* Extend the jruby-puppet-pooled-service to implement the new functions in the protocol https://github.com/puppetlabs/puppetserver/blob/2deb686496862e30272b9cf05f07f7419cbbfe7a/src/clj/puppetlabs/services/jruby/jruby_puppet_service.clj\n* Add the appropriate handlers and middleware functions to expose the HTTP endpoint - https://github.com/puppetlabs/puppetserver/blob/e30ae3295214ddb11156cb5fa62f3f8b8978e060/src/clj/puppetlabs/services/master/master_core.clj#L812 is the top of this, and goes through  couple of layers before hitting the TK service\n\nThese new endpoints should match those for tasks, within reason.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15458", "fixedVersions": ["SERVER 6.6.0"], "id": "15458", "issueType": "New Feature", "key": "SERVER-2543", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Done", "resolutionDate": "2019-08-27T12:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add endpoints for plans and plan_data", "timeSpent": "PT0S", "updated": "2019-09-12T11:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Makes sense though I think we'd want to fix that in {{puppetserver ca sign}}. On the agent side {{puppet agent --fingerprint}} will print something like:\n\n{noformat}\n# puppet agent --fingerprint\n(SHA256) 48:A2:82:E2:21:AD:3A:54:C2:D5:1A:75:48:00:3C:8F:91:8C:65:A2:D9:79:5D:B6:8B:11:57:5D:1C:3D:72:89 \n{noformat}\n\nthough it seems to be broken in 6.4.x. I'll file a separate issue for that.", "created": "2019-05-24T16:02:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Moved this to the SERVER project as this would be good addition to {{puppetserver ca sign}}", "created": "2020-07-30T10:58:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T12:14:00.000000"}], "components": ["CLI"], "created": "2019-05-22T03:22:00.000000", "creator": "557058:f2ee3fe1-33d7-4cc0-9468-a0aeab57eee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3461fb34"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzuq7j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_13528343817_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_74721584201"}], "description": "Hi,\n\non puppet master the client's public key needs to be signed with puppet cert sign clientname\n\n\u00a0\n\nThere's two ways to do it:\n\n1) the interactive way where the sha256 hash sum is shown and a human confirms to have checked this\n\n2) the --assume-yes way to blindly sign a key without verifying.\n\n\u00a0\n\nThat's insufficent /insecure if clients need to be registered automatically, e.g. with an external script\n\n\u00a0\n\nthere show be a command like\n\npuppet cert sign clientname hashsum\n\nor just\n\npuppet cert sign hashsum\n\n\u00a0\n\nwhich signs the client *only if* the hashsum is equal to the one given on command line (e.g. fetched directly from the client)\n\n\u00a0\n\n\u00a0\n\nAnd on the client side there should be some simple command to display the corresponding hash of the cert request, in order to automatically fetch the hash sum from the client and pass it to the master/server to sign that particular hash.\n\n\u00a0\n\nregards\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16545", "fixedVersions": [], "id": "16545", "issueType": "Improvement", "key": "SERVER-2847", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f2ee3fe1-33d7-4cc0-9468-a0aeab57eee5", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet cert sign lacks hashsum parameter", "timeSpent": "PT0S", "updated": "2022-03-08T12:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "My guess is an issue with garbage collection, have you played around with the JVM tuning options described here? https://puppet.com/docs/puppetserver/5.3/tuning_guide.html", "created": "2019-07-09T16:12:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "i inherited this machine and ended up installing a new puppetserver. we did mess around a little bit with the old one, but i returned all settings (as far as i know) to there standards.\n\nthanks for the tipp. :)\n\ni think we can close this one. all my new machines are working fine. ", "created": "2019-07-15T04:40:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Good to hear it, will do.", "created": "2019-07-15T09:16:00.000000"}], "components": ["Performance", "Puppet Server"], "created": "2019-05-21T04:16:00.000000", "creator": "61bbace0755091006a2b896a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b67056e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzupm7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4770000031_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 5.5.14*\n *Puppet Server Version: 5.3.8*\n *OS Name/Version: OEL 7.4*\n\nOn some occasions in the week, the puppetserver jumps to 100% cpu and generates a lot of load. The logfile has no errors on this time. strace shows a lot of\u00a0sched_yield. Requests are being processed, but slowly.\n\nWe cannot reproduce, because we do not know what is causing it. We have like 50module from git/forge in our Puppetfile and deploying via webhook with r10k.\n\nWhen we restart, everything seems to be fine again. Until next time....\n\u00a0\nhas anybody the same problems or know how to get this behavior to stop?\u00a0", "environment": "{code:java}root@puppetmaster02 [/var/log/puppetlabs/puppetserver] # rpm -qa| grep puppet\npuppetdb-termini-5.2.8-1.el7.noarch\npuppet-agent-5.5.14-1.el7.x86_64\npuppetserver-5.3.8-1.el7.noarch\nroot@puppetmaster02 [/var/log/puppetlabs/puppetserver] # facter os\n{\n architecture => \"x86_64\",\n family => \"RedHat\",\n hardware => \"x86_64\",\n name => \"OracleLinux\",\n release => {\n full => \"7.4\",\n major => \"7\",\n minor => \"4\"\n },\n selinux => {\n enabled => false\n }\n}\nroot@puppetmaster02 [/var/log/puppetlabs/puppetserver] # java -version\nopenjdk version \"1.8.0_151\"\nOpenJDK Runtime Environment (build 1.8.0_151-b12)\nOpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15734", "fixedVersions": [], "id": "15734", "issueType": "Bug", "key": "SERVER-2542", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61bbace0755091006a2b896a", "resolution": "Fixed", "resolutionDate": "2019-07-15T09:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver consumes 100% CPU", "timeSpent": "PT0S", "updated": "2019-07-15T09:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've got this working for all basic use cases except Hiera lookups. In addition to the code in puppetserver, I also had to make some changes in PAL itself, in a PR here: https://github.com/puppetlabs/puppet/pull/7599. There might be more needed to get the hiera lookups working, not sure yet.", "created": "2019-07-01T11:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "With the merge of the PAL updates in PUP-9818, this is now working for all basic use cases.", "created": "2019-07-12T10:14:00.000000"}], "components": [], "created": "2019-05-16T14:04:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@206c7f00"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsxb3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_1102739337_*|*_1_*:*_1_*:*_50977_*|*_10007_*:*_2_*:*_804172933_*|*_3_*:*_1_*:*_3609282430_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_522981807"}], "description": "We are adding a new endpoint to puppetserver that can accept JSON-encoded parsed Puppet AST, to be compiled along with other data in the request into a mini catalog that can be applied on a node. We need to figure out how to hook into Puppet's compiler to do this, and then call that code from the HTTP handler for the request.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15733", "fixedVersions": ["SERVER 6.5.0"], "id": "15733", "issueType": "Task", "key": "SERVER-2540", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-07-25T11:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Compile AST snippets and return mini catalogs", "timeSpent": "PT0S", "updated": "2019-07-25T11:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2019-05-16T12:36:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@254195c4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsxav:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_433486879_*|*_1_*:*_1_*:*_14819_*|*_10007_*:*_1_*:*_2327447481_*|*_3_*:*_1_*:*_13612222_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_607171579"}], "description": "Once we have decided on a schema for the input and output of the new Puppet AST parsing endpoint, we should write the Clojure skeleton for the request, with plumbing down into a stub at the Ruby level, that will eventually call into Puppet.\n\nSee similar work at https://github.com/puppetlabs/puppetserver/pull/1962/commits/988d4fc2b5dbaa91a4e6521cb6f4b3a8b1bdec62.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15061", "fixedVersions": ["SERVER 6.5.0"], "id": "15061", "issueType": "Task", "key": "SERVER-2541", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-06-24T15:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Clojure skeleton for AST parsing endpoint", "timeSpent": "PT0S", "updated": "2019-06-24T15:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This might relate to the work that is being done for pluginsync with apply blocks in plans. I'd like to wait and see what sort of solution they come up with and perhaps let that inform this work.", "created": "2019-10-03T17:33:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "We need to spend some time scoping this. More context on the priority of this would help us decide how/when to invest in scoping.\u00a0\n\nWe need to start with a google doc to lay out history and options around a solution for this. [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9]\u00a0will start this google doc and share with the team.\u00a0", "created": "2021-04-02T11:17:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "Was the feature added to PE because of performance issues?\n\nIs there any reason the plugins need to be downloaded before the frictionless installer runs, or would this be solved equally well by an efficient single connection download that happens at the normal pluginsync time?", "created": "2021-04-02T16:26:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "The perf impact is described in PUP-9707.  Short story is for the puppetlabs-windows module at the time, it would take 90 seconds for an agent run without bulk_pluginsync and would take 14 seconds with bulk_pluginsync.  \n\nThe more modules and the more plugins that are added the more it matters as regular pluginsync scales linearly and bulk_pluginsync is barely affected by the size of the tarball.  \n\nThere is no reason the plugins should be downloaded by the frictionless installer, that was just the easiest way to hack in the improvement.  An efficient single connection download for normal pluginsync seems like the correct long term solution.  In fact a requirement of this solution is that the agent and server can perform this function natively and not rely on a bash script to get it done.  ", "created": "2021-04-12T09:57:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Ideas doc: https://docs.google.com/document/d/1UYysy9cssWR5DpziA3wcgfx-eRrnCFMVKzXMf-MxOAY/edit?usp=sharing\n\nGoing to be fleshing that out and then hopefully filing other tickets once we decide on the implementation path.", "created": "2021-05-05T16:37:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "^that still needs to be done", "created": "2021-06-11T12:20:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "This has been deprioritized since Connect is only supporting apply blocks over ssh/winrm right now and there is already a bulk pluginsync solution for that.\nWe'll need to revisit this if/when we decide to support apply blocks using pxp-agent.", "created": "2021-07-14T17:37:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T11:02:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "Hi people,\n[~accountid:61af86343618cd006f430854] can you please explain why you mass closed valid tickets? Also you bulk text is wrong, this is not about a module. Why do we, the community, get asked to raise tickets for bugs and feature requests when you just close them? The bugs won't get fixed just by hiding the jira issue. You just made it more complicated for us users to find existing issues and now you might end up with multiple tickets for the same issue. What's the point of that? (I also think that mass reenabling GitHub issues + autoclosing them due to inactivity is a bad idea, especially without an anouncement in advance, but that's different topic).\n\nNow back to pluginsync:\nI think having the native puppetserver support for a .tar.gz would be really helpful. As a PE consultant I've a few environments where a usual pluginsync runs into timeouts due to the amount of modules. We've to rely on the .tar.gz here. Besides that, deferred functions currently do not support custom datatypes because they are not available on the agent. I think that if pluginsync will be used to get the custom datatypes on the agent, a speed improvement is a must have. I checked a few PE environments I'm responsible for and they contain 250 to 300 custom types.", "created": "2022-04-26T09:50:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "We discussed this on slack during the last office hours and had a few ideas:\n\nh3. Serving files from clojure\nThat was already evaluated in https://puppet.atlassian.net/browse/SERVER-2026 and there exists a PoC. [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] hacked it together at https://github.com/Sharpie/puppetserver-clj-file-server. I think that would be fast enough for most environments\n\nh3. Serving files via a webserver infront of puppetserver\nThis takes some time to configure for endusers, since puppetserver in FOSS doesn't ship any additonal webserver. But! PE already bundles an nginx. With a bit of lua nginx should be a perfect fit to serve static files + pluginsync + custom datatypes and FOSS users could switch to this approach if clojure is too slow for them\n\nh3. Improving current hashing logic\nI'm not sure if I understood [~accountid:63d40628f6e1b543161789a7] correctly. What I understood was 'for each requested file via pluginsync, puppetserver computes the checksum for every file that could be pluginsynced'. That sounds a bit odd to me. I didn't check the current implementation so I do not know how it actually works, but there might be some room for improvement.\n\nh3. serve files as tar.gz, created by an r10k/code-manager hook, and gunzip via exec on the agent\nWhile this probably wasn't a serious attempt, this could work well but would require at least two initial agent runs. Most people do that anyways because they do not want to deal with dependencies\n\nh3. Rethink how the agent checks if local files are up2date\nUnsafe approach: Agent fetches a Digest file / .r10k-deploy.json, if the version on the puppetserver is identical to the local one, do not do a pluginsync. That's fast, but won't work in situations where people modified files on the agent or on the puppetserver (after the deployment). Another idea: Do not work with checksums but with a last-modified header + optionally cache the files in a webserver.", "created": "2022-05-12T11:24:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "[~accountid:63d40628f6e1b543161789a7] [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] do you know if there are any planned improvements for the pluginsync in Puppetserver 8? Maybe the direct serving from clojure?", "created": "2022-12-14T06:11:00.000000"}], "components": [], "created": "2019-05-15T11:24:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d6688e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-11032"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000b"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Oct/19"}], "description": "h1. Stories\n\nAs a PE user, when I install a new agent and run the agent I do not want to wait minutes for plugins to download and cause a resource bottleneck on my Puppet Servers so that I can reliably run my PE infrastructure.\n\nAs a PE engineer, I'd like to use puppetserver bulk pluginsync for apply blocks over PCP so we can remove edge case bugs around how we implemented pluginsync over PCP.  \n\nh1.  Apply Blocks over SSH / WinRM\n\nThis isn't a problem for apply blocks over ssh/winrm because those receive their plugins from bolt-server which basically implements it's own form of bulk pluginsync.  \n\nh1.  Background\n\nIn PE we added the ability for the agent to bulk download plugins before installing the agent via the frictionless installation script.  \n\nOn the master, a tarball of the plugins is created and placed in a directory for jetty to serve so the frictionless agent install script can pull it down.  \n\nh1.  Suggested Improvement\n\nInstead of having a script outside of puppetserver create a tarball of the plugins that are currently synced to the agent on the master.  Puppetserver could be improved to make a tarball whenever code is deployed so it's always up-to-date and the tarball could be made from grabbing the plugins from each module instead of just using the plugins synced to the agent on the master.  \n\nAn even further improvement would be to make a tarball for each possible environment instead of just a single environment but the marginal return for this improvement is low for most users.\n\nh1.  Other notes\n\nThere are various other options for improving pluginsync but they may have lower marginal returns:\n - If we create tarballs for each environment then the agent logic could determine if any plugins needed to be synced and if so it should get a new tarball with all the plugins instead of doing individual downloads of each plugin.  This is not easy on bandwidth but is more performant.  Could be optional.  \n- An improvement on the above would be to determine just the files needed by the agent and then send a single artifact needed to get the agent insync with the master.  ", "epicLinkSummary": "Pluginsync Improvements", "estimate": "PT0S", "externalId": "14807", "fixedVersions": [], "id": "14807", "issueType": "Improvement", "key": "SERVER-2539", "labels": [], "originalEstimate": "PT0S", "parent": "20264", "parentSummary": "Pluginsync Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add bulk pluginsync ability to puppet server ", "timeSpent": "PT0S", "updated": "2022-12-14T06:11:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We should figure out whether this is ever going to be used for Impact Analysis for apply blocks in Plans.", "created": "2019-07-09T14:59:00.000000"}], "components": [], "created": "2019-05-13T11:34:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@525d1160"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Track Hiera Lookups"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hympvr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "You can now enable sending a list of all the Hiera keys looked up during compile to PuppetDB, via the `jruby-puppet.track-lookups` setting in `puppetserver.conf`. This is currently only used by CD4PE."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_57114_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_6149290834_*|*_10013_*:*_1_*:*_3794794245"}], "description": "We want to start optionally keeping track of what Hiera lookups are used to compile a catalog for a node. This information is useful for more accurately determining whether changes to Hiera data will change the compiled catalog for a given node, as CD4PE does with Impact Analysis.\n\nThis epic tracks the work of instrumenting Puppet to gather that data, and then sending it along to PuppetDB. Note that it should be possible to trigger this collection for a specific compilation (e.g. with a parameter on a catalog request) rather than have it always on or always off.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17119", "fixedVersions": ["SERVER 6.6.0"], "id": "17119", "issueType": "Epic", "key": "SERVER-2538", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-09-05T13:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Track Hiera lookups during compile", "timeSpent": "PT0S", "updated": "2021-08-23T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Transient networking failure on ubuntu18. Note we've seen one - two networking transients a day for a few days, no apparent affinity for host os so far. \n{code}\n00:35:43   * Performing a standard monolithic install with frictionless agents\n00:35:43   \n00:35:46   * Generate the /tmp/2019-05-10_07.35.44.itpXb9/pe.conf on h3y2zw2nidlq9ao.delivery.puppetlabs.net\n00:35:46     localhost $ scp /tmp/beaker20190510-16297-srqnpn ubuntu1804-64-1:/tmp/2019-05-10_07.35.44.itpXb9/pe.conf {:ignore => }\n00:35:46   \n00:35:46   * Install PE on master\n00:35:46   \n00:40:22   * Stop agent on master\n00:40:22   \n00:40:24   * Run puppet to setup mcollective and pxp-agent\n00:40:24     Warning: ssh channel on ubuntu1804-64-2 received exception post command execution Errno::ETIMEDOUT - Connection timed out - recvfrom(2)\n{code}", "created": "2019-05-10T12:12:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Had two ubuntu1804 hosts drop out from under us while installing PE during filesync tests today. Not enough of the installer output is logged to see if they both failed in the same place though.", "created": "2019-05-17T10:55:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Potentially another one here https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-master/1103/ Seeing autosign failures and server start issues.", "created": "2019-06-12T12:09:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "Failure on debian 8 [ https://jenkins-platform.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-master/1111/LAYOUT=debian8-64ma-centos6-64a,LDAP_TYPE=default,label=beaker/consoleText ]\n{code}\nRuntimeError: PuppetAcceptance::DSL::Helpers.with_puppet_running_on failed (check backtrace for location) because: Failed to open TCP connection to r3pgayn3r66452e.delivery.puppetlabs.net:8140 (getaddrinfo: Name or service not known)\n{code}\nThis is the debian vm, and the error seems to occur in beaker itself failing a dns query for the debian vm.\n\n\n\n", "created": "2019-06-19T15:55:00.000000"}], "components": [], "created": "2019-05-10T12:10:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13884c65"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzuj5z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21833_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_89254850714"}], "description": "We've anecdotally seen more transients with Debian 8/Ubuntu 1804 than other hosts, especially timeouts/server not starting.\n\nWe also had a meaningful regression with r10k when initially supporting Ubuntu 18 that came from how we were doing child process management with newer rubies on newer kernels. We also have a historically bad relation with Debian based systems vs our internal tooling/packaging/library management. This is a ticket to track various failures on those two platforms to see if there is some underlying issue.\n\nNote, if there is a kernel problem we may also see issues with RHEL8, so here we should mention failures in those two platforms and how they relate to other failures in CI.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "17118", "fixedVersions": [], "id": "17118", "issueType": "Task", "key": "SERVER-2536", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tracking ticket for Deb8/Ubuntu18 transients", "timeSpent": "PT0S", "updated": "2022-03-08T12:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for filing this. We have recently realized that this is a problem for people due to CRL expirations that are shorter than we anticipated. We'll look into the pros and cons of having redownloading built into the CA vs having a CLI tool to update.\n\nIt should be possible for you to update the CRL file manually. Maybe the tool you were using to edit it was messing with the text encoding?", "created": "2019-05-07T15:35:00.000000"}, {"author": "611123f06051c5006a3685ec", "body": "Maybe I was doing it wrong.  I just replaced the crl in the crl.pem file with the updated version.  I used vi since it was in pem format I figured this should work.", "created": "2019-05-07T15:41:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I definitely would expect that to work. If it was just the root that had expired, you'd only want to replace the last CRL in the file. Was there any sort of stack trace with the error?", "created": "2019-05-07T15:45:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "What sort of endpoint is the CRL published to? Is it a simple download over HTTPS, or does it require something heavier like an LDAP connection to access?", "created": "2019-05-24T09:32:00.000000"}, {"author": "623c0d1b94742a00683e3e96", "body": "Hi,\n\nsame issue here. Our CA is publishing CRLs via http.\n\nHere is a snippet from our ca_crt.pem\n{code}\n[...]\nX509v3 CRL Distribution Points:\nFull Name:\nURI:ldap:///...\nURI:http://our.pki.org/pki/CA.crl\n[...]\n{code}\n\n", "created": "2019-08-13T03:16:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "The work we plan to do for this issue is described in https://puppet.atlassian.net/browse/SERVER-2550", "created": "2021-01-29T11:30:00.000000"}], "components": ["Certificate Authority"], "created": "2019-05-07T05:52:00.000000", "creator": "611123f06051c5006a3685ec", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a96352a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Rank", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "7500.0"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2712"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:40900006go"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "37154"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_35180359_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4222414902_*|*_10005_*:*_2_*:*_50457467842"}], "description": "*Puppet Version: 6.4.1*\n *Puppet Server Version: 6.3.0*\n *OS Name/Version: RHEL 7.5*\n\nI have an external root ca, and the CRL is published to a known accessible endpoint.\u00a0 Puppet CA cert is signed by my root CA, and I followed the steps to create the files required to import into puppet when I started for the first time.\u00a0 Everything worked as expected until the CRL expiration time on my Root CA.\u00a0\n\n*Desired Behavior:*\n\nIt would be nice if puppet server could fetch the CRL on its own since it's published to a known and accessible location.\u00a0 Bar that, having an easy way to import the updated CRL which could be scripted would be acceptable.\n\n*Actual Behavior:*\n\nThe puppet master did not fetch the CRL as I expected, and when I run puppet I get the error \"Error: Could not run: The CRL issued by 'Name of Root CA here' has expired, verify time is synchronized.\"\n\nI attempted to manually copy the CRL into crl.pem but that gave error \"Error: Could not run: invalid byte sequence in UTF-8\"", "epicLinkSummary": "Improve CRL Management", "estimate": "PT0S", "externalId": "17552", "fixedVersions": [], "id": "17552", "issueType": "Bug", "key": "SERVER-2535", "labels": ["customer0", "jira_escalated", "ondeck1"], "originalEstimate": "PT0S", "parent": "16586", "parentSummary": "Improve CRL Management", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "611123f06051c5006a3685ec", "resolution": "Duplicate", "resolutionDate": "2021-01-29T11:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CRL issue with Intermediate CA setup", "timeSpent": "PT0S", "updated": "2021-01-29T11:30:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-05-02T17:40:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@568b0d5b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzudsf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_13216938122_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76705115352"}], "description": "We may be able to remove our special \"--gzip\" ending handling because of changes in Jetty 9.4, rendering the effort in SERVER-1153 moot. We should validate that this assumption is correct and if so remove our special handling and the tests for it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14869", "fixedVersions": [], "id": "14869", "issueType": "Improvement", "key": "SERVER-2534", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Evaluate --gzip handling with cacheable endpoints", "timeSpent": "PT0S", "updated": "2022-03-08T11:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "What are you interested in using these metrics for? Having a use case makes it easier for us to prioritize adding them.", "created": "2019-10-03T17:31:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "Closing due inactivity. If you have a use case for these metrics please share them.", "created": "2020-12-02T12:46:00.000000"}], "components": [], "created": "2019-05-02T13:16:00.000000", "creator": "557058:d83223a2-1c20-4245-a31c-95c8f44172b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ed48b5c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzudan:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_50113798299_*|*_6_*:*_1_*:*_0"}], "description": "I'd love to see additional metrics in Puppetserver, specifically the following:\n * *num-requested-jrubies* - under puppetlabs.master.jruby, there is both a num-free-jrubies (reporting the instantaneous count of jrubies that are free right now, always an integer) as well as free-jrubies-histo, a histogram with an exponential-decay rolling average of free jrubies over time. There's also requested-jrubies-histo, but no corresponding num-requested-jrubies, which is a shame.\n * *last-compile-duration*\u00a0- under puppetlabs.master.compiler.compile.<env>.<certname> you can get statistics with a exponentially-decaying rolling average of compile times for a particular catalog. It'd be nice to be able to get just the raw amount of time the most recent compile for that catalog took; at the moment I have to parse it out of logs and then emit it as a metric, which works but is a pain.\n * *is-currently-compiling* - Similarly under puppetlabs.master.compiler.compile.<env>.<certname> (or somewhere similar), it'd be nice to have a metric whose value is 1 if a catalog is currently being compiled for this node (or maybe, if a jruby is currently borrowed for this node, if that's easier to expose), and 0 if it is not. Again, this information can be parsed from logs and exported as a metric that way but it's a real pain (and unreliable since if puppetserver is restarted, a 'real' metric would get reset to 0 but the \"finished compiling catalog for <certname>\" log message never shows up so the 'fake' metric computed from the logs will get messed up).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17461", "fixedVersions": [], "id": "17461", "issueType": "New Feature", "key": "SERVER-2533", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d83223a2-1c20-4245-a31c-95c8f44172b7", "resolution": "Won't Do", "resolutionDate": "2020-12-02T12:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add additional compiler and jruby metrics", "timeSpent": "PT0S", "updated": "2020-12-02T12:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2019-05-01T16:32:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cfed0ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2467"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzucnr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1610543996_*|*_1_*:*_1_*:*_1756652_*|*_10007_*:*_1_*:*_777144663_*|*_3_*:*_1_*:*_715583380_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_436358027_*|*_10006_*:*_1_*:*_665542614"}], "epicLinkSummary": "Remote Transport API", "estimate": "PT0S", "externalId": "17114", "fixedVersions": ["SERVER 6.4.0"], "id": "17114", "issueType": "Improvement", "key": "SERVER-2532", "labels": [], "originalEstimate": "PT0S", "parent": "14857", "parentSummary": "Remote Transport API", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2019-06-19T09:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allowing caching transport data in addition to class data", "timeSpent": "PT0S", "updated": "2019-06-19T09:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Updating jruby-utils to provide both implementations will be slightly more invasive than originally thought. [This PR|https://github.com/puppetlabs/jruby-utils/pull/77] contains the initial implementation, but I think a new, more comprehensive abstraction is needed.", "created": "2019-10-02T16:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The new abstraction now passes all of the existing tests in jruby-utils and I've added a few for the multithreaded case. See [this PR|https://github.com/puppetlabs/jruby-utils/pull/78]. I'm working on testing it in puppetserver now.", "created": "2019-11-26T10:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Released as jruby-utils 3.0.0!", "created": "2019-12-10T16:39:00.000000"}], "components": [], "created": "2019-04-29T16:57:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@35c52893"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykedz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See SERVER-2684 for release notes."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_64682462_*|*_1_*:*_1_*:*_7950919349_*|*_10007_*:*_2_*:*_1296777718_*|*_3_*:*_2_*:*_9679999817_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_514767213"}], "description": "Allow Puppet Server to run with either a JRuby pool or a single JRuby instance. (With a single JRuby instance, each request will come in as its own thread from jetty.)\n\nThere should be a new setting to enable the pool, defaulting to pooled behavior for now.\n\n*UPDATE*\nThis is implemented in jruby-utils, as an alternative backing pool model that hands out references to a single instance, instead of individual different instances, following the same API as the current multi-instance implementation. They can be toggled between, using a setting currently called {{multithreaded}}.", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "16925", "fixedVersions": ["None"], "id": "16925", "issueType": "Improvement", "key": "SERVER-2529", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Done", "resolutionDate": "2019-12-11T10:36:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add single-instance JRuby pool", "timeSpent": "PT0S", "updated": "2019-12-11T10:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2019-04-29T16:42:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a2c437d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "thread-safe puppet"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzuawn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_407721_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16077", "fixedVersions": [], "id": "16077", "issueType": "Epic", "key": "SERVER-2527", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Duplicate", "resolutionDate": "2019-04-29T16:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "thread-safe puppet", "timeSpent": "PT0S", "updated": "2021-08-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2019-04-29T16:41:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19bd6cbf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2138"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyke73:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_82420320_*|*_1_*:*_1_*:*_7951834784_*|*_10007_*:*_1_*:*_451776867_*|*_3_*:*_1_*:*_6029514390_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5010453270"}], "description": "To test for thread safety in puppet we'll need to set up multiple environments where each component differs in ways that are easy to tell in a catalog (ie by parsing the json), then set up a client to request multiple nodes in different environments simultaneously and many times, and make sure everything is returned as expected.\n\nI would not expect this to be a part of the normal test suite but it should be possible to run in jenkins.\n\nThings that need to differ in catalogs:\n* indirections\n* types\n* providers\n* functions\n* files served by puppetserver\n(this needs to be verified/expanded)", "epicLinkSummary": "Threadsafe Puppet", "estimate": "PT0S", "externalId": "15732", "fixedVersions": ["SERVER 6.8.0"], "id": "15732", "issueType": "Task", "key": "SERVER-2526", "labels": [], "originalEstimate": "PT0S", "parent": "16739", "parentSummary": "Threadsafe Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Done", "resolutionDate": "2019-12-11T15:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Set up testing for thread safety", "timeSpent": "PT0S", "updated": "2020-01-10T08:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-04-22T17:31:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": " "}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5de768a6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzu5zj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_443503353_*|*_1_*:*_1_*:*_9332_*|*_10007_*:*_1_*:*_144863547_*|*_3_*:*_1_*:*_238579_*|*_5_*:*_1_*:*_0"}], "description": "Now that we have open-sourced the analytics client, we should start managing it in clj-parent, and then update at least pe-puppet-server-extensions to start pulling it in from there. Eventually we should do this for all components that are currently using it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15457", "fixedVersions": ["None"], "id": "15457", "issueType": "Task", "key": "SERVER-2522", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-04-29T13:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add the analytics-client to clj-parent", "timeSpent": "PT0S", "updated": "2019-04-29T13:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "attachments": [], "comments": [{"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "Tracked in\u00a0DOC-4074", "created": "2019-04-18T17:18:00.000000"}], "components": [], "created": "2019-04-18T12:06:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@82c668c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzu41z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18738085_*|*_6_*:*_1_*:*_0"}], "description": "Update 2019.1 version of\u00a0[https://puppet.com/docs/pe/2019.0/analytics_overview.html]\u00a0to reflect additional data that we are collecting", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16924", "fixedVersions": [], "id": "16924", "issueType": "Task", "key": "SERVER-2521", "labels": [], "originalEstimate": "PT0S", "parent": "16253", "parentSummary": "Module Metrics", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Won't Fix", "resolutionDate": "2019-04-18T17:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update PE data collection web page", "timeSpent": "PT0S", "updated": "2019-04-18T17:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-04-18T10:04:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@397b508d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzu3zb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The new catalog compilation endpoint can now accept a log level for the logs it collects during compilation."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1528233552_*|*_1_*:*_1_*:*_27083_*|*_10007_*:*_1_*:*_779842666_*|*_3_*:*_1_*:*_1037182579_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_3651461206"}], "description": "The v4 catalog endpoint allows the user to specify that the logs from the compile should be captured and returned with the request. We should look into allowing the user to specify what level of logging to capture during the compile, as an additional parameter to the request.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14867", "fixedVersions": ["SERVER 6.5.0"], "id": "14867", "issueType": "Improvement", "key": "SERVER-2520", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-07-08T09:36:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow the user to supply log level with v4 catalog requests", "timeSpent": "PT0S", "updated": "2022-02-22T13:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623e76b0866b810069e575bf", "body": "Currently blocked from upgrading to Puppet 6 in our environment as we make extensive use of the puppet built-in CA generated certs. Anything that uses nss/gnutls breaks.", "created": "2019-11-16T13:40:00.000000"}, {"author": "623e76b0866b810069e575bf", "body": "golang ssl verify breaks too.\nhttps://github.com/golang/go/issues/31440", "created": "2021-01-04T13:59:00.000000"}, {"author": "623e76b0866b810069e575bf", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] any chance this could be fixed in parallel with SERVER-2338 ?\nI'd love to upgrade to Puppet 7 :)", "created": "2021-01-06T19:43:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We'll take a look at this too. Thanks for the poke.", "created": "2021-01-07T09:58:00.000000"}], "components": ["Puppet Server"], "created": "2019-04-15T05:24:00.000000", "creator": "623e76e39b54ec0068b2837c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@149117f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:n"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Nov/19"}], "description": "*Puppet Version: 6.4.0*\n *Puppet Server Version: 6.3.0*\n *OS Name/Version: CentOS7 & 6*\n\nWhen running Puppet6 with an imported intermediate CA, the puppetserver will create host certs incorrectly by changing the ASN.1 string types in the host certs issuer field to \"UTF8STRING\" even though the Intermediate CA Cert CN has them as \"PRINTABLESTRING\".\n\nThe local puppetserver host cert seems to be the exception. I assume that it's created with a different mechanism during bootstrapping.\n\nThe different field types should not matter (according to the RFC Specs). However moznss (which curl is linked against on centos) as well as gnutls simply compare the issuer between CA and Host Cert bytewise and therefore complain about \"Unknown issuer\" / Invalid certificates even when given the correct CA Cert.\n\n\u00a0\n\nHere's a mozilla bug report (3 years old) for the issue in moznss:\n\nhttps://bugzilla.mozilla.org/show_bug.cgi?format=default&id=1239313\n\n*Desired Behavior:*\n\nEven though nss/gnutls are the ones violating the specs here, puppetserver ca should preserve the correct field types from the intermediate CA when signing certificates for hosts!\n\nOther CA Tools (e.g.: xca) will do exactly that.\n\n*Actual Behavior:*\n\n\u00a0\n\nHere some abbreviated samples (obtained using openssl asn1parse).\n\nOur intermediate CA CN:\n\n\u00a0\n\nSEQUENCE \n \u00a0SET \n \u00a0 SEQUENCE \n \u00a0 \u00a0OBJECT :countryName\n \u00a0 \u00a0PRINTABLESTRING :DE\n \u00a0SET \n \u00a0 SEQUENCE \n \u00a0 \u00a0OBJECT :stateOrProvinceName\n \u00a0 \u00a0PRINTABLESTRING :Hessen\n\n\u00a0\n\nThe isser in the puppetserver cert:\n\nSEQUENCE \n \u00a0SET \n \u00a0 SEQUENCE \n \u00a0 \u00a0OBJECT :countryName\n \u00a0 \u00a0PRINTABLESTRING :DE\n \u00a0SET \n \u00a0 SEQUENCE \n \u00a0 \u00a0OBJECT :stateOrProvinceName\n \u00a0 \u00a0PRINTABLESTRING :Hessen\n\n\u00a0\n\nThe issuer in a host cert signed by the puppetserver CA:\n\nSEQUENCE \n \u00a0SET \n \u00a0 SEQUENCE \n \u00a0 \u00a0OBJECT :countryName\n \u00a0 \u00a0PRINTABLESTRING :DE\n \u00a0SET \n \u00a0 SEQUENCE \n \u00a0 \u00a0OBJECT :stateOrProvinceName\n \u00a0 \u00a0UTF8STRING :Hessen", "environment": "centos7 puppetserver. latest upgrades", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "17191", "fixedVersions": [], "id": "17191", "issueType": "Bug", "key": "SERVER-2518", "labels": [], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e76e39b54ec0068b2837c", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver CA changes String types in Host certs (printablestring -> utf8) resulting in invalid cert validation", "timeSpent": "PT0S", "updated": "2023-11-06T09:55:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "created": "2019-04-10T17:19:00.000000", "name": "double.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10743"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Confirmed that this can still be repro'd on the latest version as well. Digging in a bit more now.", "created": "2019-04-10T17:40:00.000000"}, {"author": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "body": "This exists in 2016.4.x and 2017.3.x:\n{code}[root@pe-2016415-master ~]# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, Could not find class ::role::bad for pe-2016415-master.puppetdebug.vlan at /etc/puppetlabs/code/environments/production/manifests/site.pp:4:3 on node pe-2016415-master.puppetdebug.vlan\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog", "created": "2019-04-11T10:01:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "When running an apply, the error is only logged once:\n{code}\n$> puppet apply -e 'node default { include module::bad }'\nError: Evaluation Error: Error while evaluating a Function Call, Could not find class ::module::bad for localhost (line: 1, column: 16) on node localhost\n{code}\n\nThe compiler logs all errors and warnings (up to the max cap, default 10), and raises one exception from validation of the parsed source (the original error, or one stating that there were too many errors if there are more than one), then during evaluation, it logs exceptions and raises an error.\n\nI suspect the extra message comes from the terminus as it may not trust that a raised exception has been logged already. it may need to differentiate the behavior depending on what kind of error it is.", "created": "2019-04-12T03:26:00.000000"}], "components": ["Puppet Server"], "created": "2019-04-10T17:19:00.000000", "creator": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9a4da8b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hztypj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Apr/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15118624293_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_73164642957"}], "description": "*Puppet Version:* 5.5.10\n *Puppet Server Version:* 2018.1.0.109\n\n*Desired Behavior:*\n\npuppetserver logs the same error once\n\n*Actual Behavior:*\n\npuppetserver logs the same error twice, complicating the use of report processors like jamtur01/puppet-snmp\n\n*Reproduction:*\n\nDeclare non-existent class for an agent:\n{code}[root@pe-201817-master ~]# cat /etc/puppetlabs/code/environments/production/manifests/site.pp \nnode 'pe-201817-agent.puppetdebug.vlan' {\n  include role::bad\n}\n{code}\nRun puppet on the agent:\n{code}[root@pe-201817-agent ~]# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, Could not find class ::role::bad for pe-201817-agent.puppetdebug.vlan (file: /etc/puppetlabs/code/environments/production/manifests/site.pp, line: 4, column: 3) on node pe-201817-agent.puppetdebug.vlan\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n{code}\n\"Puppet Evaluation Error\" is logged twice (not including the \"Puppet Server Error\") identically:\n{code}[root@pe-201902-master ~]#  tail -f /var/log/puppetlabs/puppetserver/puppetserver.log | grep \"Error\"\n2019-04-10T22:36:14.180Z ERROR [qtp338004690-79] [puppetserver] Puppet Evaluation Error: Error while evaluating a Function Call, Could not find class ::role::bad ...\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:373:in `block in evaluate_classes'\n...\n2019-04-10T22:36:14.180Z ERROR [qtp338004690-79] [puppetserver] Puppet Evaluation Error: Error while evaluating a Function Call, Could not find class ::role::bad ...\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:373:in `block in evaluate_classes'\n...\n2019-04-10T22:36:14.181Z ERROR [qtp338004690-79] [puppetserver] Puppet Server Error: Evaluation Error: Error while evaluating a Function Call, Could not find class ::role::bad for pe-201902-agent.puppetdebug.vlan (file: /etc/puppetlabs/code/environments/production/manifests/site.pp, line: 4, column: 3) on node pe-201902-agent.puppetdebug.vlan\n{code}\nSee attached for the log with puppetserver with\u00a0{{loglevel=debug}}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16544", "fixedVersions": [], "id": "16544", "issueType": "Bug", "key": "SERVER-2517", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "resolution": "Won't Fix", "resolutionDate": "2022-01-26T11:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver logs the same error twice", "timeSpent": "PT0S", "updated": "2022-01-26T11:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This branch contains some spike work on this: https://github.com/thrnio/puppetserver/tree/module_class_use_metrics", "created": "2019-04-08T11:20:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The work for this wound up only being added to pe-puppet-server-extensions.", "created": "2019-04-17T16:54:00.000000"}], "components": [], "created": "2019-04-03T12:28:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppetserver has a Clojure function that returns all classes for an environment, grouped by module\n* This function is not unreasonably expensive in large environments"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23e346d8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7h3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_156420201_*|*_1_*:*_1_*:*_28792_*|*_3_*:*_2_*:*_502252067_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_715220403"}], "description": "The class data available from PuppetDB does not have module name or namespace associated with it. If we are going to accurately report metrics on module usage, we need to correlate the class data in PDB with which modules are installed on disk on the server. We already have methods for getting all the classes in an environment; we should look into writing something similar that would also let us group these classes by module, with namespace.\n\n[~accountid:557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f] has a spike for this here: https://github.com/thrnio/puppetserver/tree/module_class_use_metrics, that exposes this data via an API endpoint for convenience. Ultimately, this will probably only be used internally during metrics processing. \n\nFrom [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]: Because querying puppet's InfoService is expensive, we should look into ways to cache and use data that is already collected for other reasons (e.g. when the console updates, it needs to grab most of this), so that we don't end up overtaxing puppetserver for 30ish seconds multiple times a day.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14865", "fixedVersions": ["None"], "id": "14865", "issueType": "Task", "key": "SERVER-2512", "labels": [], "originalEstimate": "PT0S", "parent": "16253", "parentSummary": "Module Metrics", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-04-19T10:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Efficiently collect all installed module classes", "timeSpent": "PT0S", "updated": "2019-04-19T10:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5abd613dd4cf3c56be24b70d", "body": "[~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] not sure if this is a valid ticket. Please feel free to close if it's not.", "created": "2019-04-01T07:35:00.000000"}, {"author": "5abd613dd4cf3c56be24b70d", "body": "[~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] Friendly reminder. This is needed for the 5.5.13 release. Please close if the work has been done for this ticket.", "created": "2019-04-03T02:17:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "fyi [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "created": "2019-04-03T10:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This platform isn't in our pipelines, and probably hasn't been for some time, because it's not really feasibly to get Java 8 on Debian 7. Closing as done I guess.", "created": "2019-04-03T10:43:00.000000"}, {"author": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0not sure we need release notes here, can you update the ticket accordingly?", "created": "2019-04-03T13:12:00.000000"}], "components": [], "created": "2019-04-01T01:19:00.000000", "creator": "5abd613dd4cf3c56be24b70d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b427aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-2564"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzto7j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Apr/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2681_*|*_5_*:*_1_*:*_6831174812_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_206667870"}], "description": "Remove {{debian-7 x86_64/i386}} from the puppetserver pipelines defined in jenkii/platform/projects/puppetserver.yaml in [ci-job-configs|https://github.com/puppetlabs/ci-job-configs].\n", "epicLinkSummary": "Remove debian-7 x86_64/i386 FOSS support", "estimate": "PT0S", "externalId": "14863", "fixedVersions": [], "id": "14863", "issueType": "Task", "key": "SERVER-2511", "labels": [], "originalEstimate": "PT0S", "parent": "56642", "parentSummary": "Remove debian-7 x86_64/i386 FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5abd613dd4cf3c56be24b70d", "resolution": "Fixed", "resolutionDate": "2019-06-21T12:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove debian-7 x86_64/i386 from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2019-06-21T12:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "attachments": [], "comments": [{"author": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\n\nThe immediate difficulty here that comes to mind is that PDB doesn't explicitly have data on what module a resource came from, because the _catalog_ doesn't track that data. For classes and defined types, we can kind of guess for most things based on prefixing, but that's only part of it, and it also means we can't do the aggregation in PDB, which is almost certainly going to be a problem in larger environments.\n\nAlso, in the original ticket, there is a request for grouping based on platform/OS, which is _also_ not possible to do in PDB directly because there are no entities that contain all the data we need so we can't group on both fields at the same time, meaning to my understanding, we'd have to get a list of all platforms, then do a separate query for each platform to get the data, which is probably more reasonable than the first issue with detecting modules, since there's not likely to be more than a couple dozen platforms at all but the largest customers, and even they will be capped by the number of platforms we support in total, but it's still not great. ", "created": "2019-03-27T12:54:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I see what you mean. I wonder if in general the prefixing is reliable enough to still give us some useful data... [~accountid:557058:68216498-c6bf-4e8f-92c1-ac84887b7c02] [~accountid:557058:291cd4a1-794b-4442-93e6-929db39e48f7] do you have thoughts on whether class title is sufficient to key on for the data to be useful to you?\n\n I was assuming we'd do the aggregation in Puppetserver when we collect the analytics (generally once a day). I hadn't thought of doing it in PDB, what benefits do you see doing it that way? You mention larger environments, larger as in more nodes, more modules, or both?\n\nIt looks like we do not get namespace or supported information from that query either, which makes sense. Namespace info is available via {{puppet module list}} or the {{environment_modules}} endpoint (which I think is also mentioned in the other ticket", "created": "2019-03-27T15:05:00.000000"}, {"author": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "body": "{quote}\nI was assuming we'd do the aggregation in Puppetserver when we collect the analytics (generally once a day). I hadn't thought of doing it in PDB, what benefits do you see doing it that way? You mention larger environments, larger as in more nodes, more modules, or both?\n{quote}\n\nWell, in a 10k+ node deployment where they use puppet to any substantial degree, you could pretty easily end up with hundreds of thousands to millions of resources, so being able to do that aggregation at the DB level would probably be a lot faster than sending it over the wire and doing in it puppetserver. I mean, it's not like it's especially difficult to do, just a bit more complicated and probably slower.\n\nLike you said, overall, I think we can probably make pretty good guesses as to most of this stuff, which will probably handle most of what we need. We'll definitely need to pull namespace data and check environments to avoid custom modules named the same as public modules. We'll probably still miss data for modules that are used primarily for functions or types/providers, like stdlib, though.", "created": "2019-03-27T16:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "That makes sense about sending less data over the wire. We might be able to do the data rollup via some endpoints for aggregating data from PDB, then do filtering on the server-side based on the namespace of installed modules, and from there send the data via the analytics client.", "created": "2019-03-27T17:30:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "If we can grab installed modules+versions as well as used resource types (and titles for classes), we would be theoretically able to correlate the two datasets offline/upstream by foraging the forge for a module<->resource mapping and using that in a huge join. I do not understand our data processing pipeline enough to know if we could actually implement this in a sane way.\n\nI'll talk to the forge folks about the feasibility of the forager.\n\nAs a first iteration, just having the class titles and resource types will provide us at least some insights.", "created": "2019-03-28T04:56:00.000000"}, {"author": "557058:613151bd-b161-4bc3-9e32-335fdcef4d89", "body": "I imagine from what PuppetDB knows, we could figure out node counts per class, but module data would be a bit more difficult.\n\nHere's a Class resource example (these are also the fields known for all resources), just note that file and line parameters are allowed to be null. \n \n{code}\n  {\n    \"tags\": [\n      \"apache\",\n      \"127.0.0.1\",\n      \"class\",\n      \"host-1\",\n      \"service\",\n      \"apache::service\"\n    ],\n    \"file\": \"/home/wyatt/.puppet/modules/apache/manifests/init.pp\",\n    \"type\": \"Class\",\n    \"title\": \"Apache::Service\",\n    \"line\": 130,\n    \"resource\": \"c87dd544c31b2aa9aa289f83b2e6871aecc7f96c\",\n    \"environment\": \"production\",\n    \"certname\": \"host-99\",\n    \"parameters\": {\n      \"service_name\": \"apache2\",\n      \"service_enable\": true,\n      \"service_ensure\": \"running\"\n    },\n    \"exported\": false\n  },\n{code}\n\n", "created": "2019-03-28T12:00:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Extra thing to note, legal has determined that we need to hash the module and class names on the collection side, and compare these hashes against hashes of forge module names and classes, to avoid sending potentially sensitive data around.\n\nUpdate: definitely need some clarity on this one, because the metrics are only ultimately useful if we can read which class names they refer to. So at some point they do need to be in the clear. Maybe that is post-filtering?", "created": "2019-03-28T12:30:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "We have prior art that is running stats gathering on the forge corpus and extract the data set we need to reverse the hashes.", "created": "2019-03-29T13:05:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Proposal doc: https://docs.google.com/document/d/1GUNeWCeeUu4KmXgRqzxwoOp4353IuJ8sybpgIt3PE1Q/edit?usp=sharing Please comment with thoughts and additions.", "created": "2019-04-01T10:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Filed https://puppet.atlassian.net/browse/SERVER-2512 to track the work of getting the installed classes grouped by module, with namespace data.", "created": "2019-04-03T12:30:00.000000"}], "components": [], "created": "2019-03-27T11:34:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Write up (in a doc or ticket comments) about the details of this approach, including:\nA) is all the data we need in PDB or do we also need to talk to the forge?\nB) can the data be aggregated in such a way to get both class-specific and module-wide usage counts?"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@208cf716"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hztlzj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Mar/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_38762_*|*_3_*:*_2_*:*_510456882_*|*_10009_*:*_1_*:*_1381423470_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_357173"}], "description": "The first goal of the new module metrics is to collect counts of how many nodes are classified with various classes, and which modules they come from.\n\nIt has been suggested that the PDB resource API can provide this data, see https://puppet.com/docs/puppetdb/6.3/api/query/v4/resources.html. We should figure out if the data for this endpoint is sufficient to answer this question, assuming proper filtering of the data (to clear out any custom user class names that could be sensitive) and aggregation of it to show\n1. node counts per class\n2. node count per module\n\nFor the filtering, we should see if there's a way to at least get whether or not a module is supported from PDB. We also want to see if the module's namespace (e.g. 'puppetlabs') is included in the data. That may involve exploring other PDB APIs. If not, we may have to query the forge in addition for this data and cross-check the results from PDB.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16543", "fixedVersions": ["None"], "id": "16543", "issueType": "Task", "key": "SERVER-2508", "labels": [], "originalEstimate": "PT0S", "parent": "16253", "parentSummary": "Module Metrics", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-04-18T09:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate if PDB class resource data is sufficient for node classification metrics", "timeSpent": "PT0S", "updated": "2019-04-18T09:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61af86343618cd006f430854", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Also, if we're running PuppetDB on the same node, we may be able to write the processed report directly to the stockpile queue.", "created": "2019-03-19T16:07:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "is there really any safe way to put something into the pdb stockpile queue without going through the API?  ", "created": "2019-03-19T16:15:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Hmm, from the README, I guess not:\n\n{quote}\nStockpile's behavior given unexpected files inside its directory is undefined.\n{quote}\n\nIf we ever decided to combine Puppet Server and PuppetDB into the same JVM process, then we could probably do a direct handoff to the queue.", "created": "2019-03-19T16:45:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Given we're unlikely to rewrite the report processor extension point any time soon and we've written more report processors for PE integrations since this ticket was files (splunk, etc), I'm inclined to close won't do.", "created": "2022-01-12T21:00:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Sounds good to me. If we were to spend time Java-fying more of the Puppet server operations, then the file server, SERVER-2026, is probably the best place to start.\n\nFile requests are more frequent than report uploads, have a smaller scope due to not being fully programmable, and we can likely get a 10x performance boost by staying in Java combined with a 10x increase in available worker threads from not relying on JRuby.", "created": "2022-01-13T08:59:00.000000"}], "components": [], "created": "2019-03-19T15:55:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e37b4e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hztgyv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Mar/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_73313_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_89666088640"}], "description": "Right now the puppetdb report processor uses a jruby to run a small piece of ruby code to send the report to puppetdb.  \n\nWe should be able to implement that in clojure and free up that jruby resource for compiling catalogs which is the most important thing that puppetserver needs to do.  \n\nIf we move report processing out to clojure we'd still need a way to run ruby report processors because those are an integration point but we could rewrite the ones we control like puppetdb and store so that they don't require ruby.  \n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16920", "fixedVersions": [], "id": "16920", "issueType": "Improvement", "key": "SERVER-2507", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Won't Do", "resolutionDate": "2022-01-20T10:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move report processors to clojure ( so the puppetdb report processor doesn't use a jruby )", "timeSpent": "PT0S", "updated": "2022-01-20T10:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "#1 complete in https://github.com/puppetlabs/ci-job-configs/pull/5709", "created": "2019-04-03T12:20:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "wrt #4, I've opened a PR to remove 3.x and 4.x agents from our compatiblity matrix since they are both EOLed.\n\nw/ only one cell to test compat (5.x in 6.x branches) a matrix job seem unnecessary (#2 above)\n\nfinally, I don't think we need to track latest for a branch. I think the purpose of the tests are to make sure changes to server don't break compat with existing older agents. In that case, I think the older the agents in a matrix the better.", "created": "2019-04-23T13:40:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Works for me.", "created": "2019-04-23T14:01:00.000000"}], "components": [], "created": "2019-03-15T11:17:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26f2e87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2505"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hztcbr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Apr/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_317219748_*|*_1_*:*_1_*:*_18496_*|*_10007_*:*_2_*:*_11750254_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_444806482_*|*_10005_*:*_2_*:*_2771468466"}], "description": "We currently have a set of compatibility tests that install old versions of Puppet and test them against the server version under test. For Puppet Server 5 there are tests with 3 and 4, and for Puppet Server 6 there are 3, 4, and 5. These tests are each run on all platforms in their own job step as non-blocking steps run in parallel with the full beaker suite (tests from Puppet). In the last two years, they have never failed due to any actual incompatibility between agent and server.\n\nI can think of a couple of ways to improve this setup, assuming we think the tests still have value, and would love to hear other ideas:\n\n1) Run on a canary platform instead of all of them, given that even currently, we do not test on the full range of agent platforms. The tests are simple enough (basically just a single agent run), that the only way platform differences come into play is when a new platform is introduced and the complicated [exclude matrices|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml#L94-L96] have to updated to skip it on old versions.\n\n2) Run the jobs in a matrix instead of as three separate jobs, to make rekicking them easier in case of infrastructure failure.\n\n3) Investigate if there's a good way to track 5.x latest, and decide whether it's worth having 5.x behave differently than 3 and 4, because it's under active development.\n\n4) Remove 3.x job, because 3.x is super EOL at this point.", "epicLinkSummary": "Server CI Improvements 2019", "estimate": "PT0S", "externalId": "16542", "fixedVersions": [], "id": "16542", "issueType": "Improvement", "key": "SERVER-2506", "labels": [], "originalEstimate": "PT0S", "parent": "15731", "parentSummary": "Server CI Improvements 2019", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-04-25T12:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Revisit compat tests structure and utility", "timeSpent": "PT0S", "updated": "2019-04-25T12:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-03-15T11:04:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5bbb776d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Server CI Improvements 2019"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylkjz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_170066_*|*_6_*:*_1_*:*_0_*|*_10012_*:*_1_*:*_4161312403"}], "description": "Top ticket items for reducing time futzing around with CI and test suites maintained by the Server Team, for completion following the spring releases.\n\nThis epic should not be added to indefinitely and is not a holding bucket for \"future improvements.\" For those tickets, see SERVER-2117.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15731", "fixedVersions": [], "id": "15731", "issueType": "Epic", "key": "SERVER-2505", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-05-02T15:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server CI Improvements 2019", "timeSpent": "PT0S", "updated": "2021-08-27T17:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Notice that in your {{gem list}}, there are multiple versions of trollop listed. This causes the warning you're seeing. It probably doesn't actually cause an issue here because hiera-eyaml 2.1.0 can use any of them. The warning can be cleared up by removing unnecessary versions of the gem. We shipped trollop 2.1.2 with hiera-eyaml 2.1.0.\n\nMy guess is this started happening in puppet-agent 5.5.1, when we began shipping hiera-eyaml and trollop in the [agent|https://github.com/puppetlabs/puppet-runtime/pull/42/files]. See PA-1925. Since puppet-agent manages its gem dependencies directly, it likely installed an older version of trollop than your manual install had, leading to the conflict.", "created": "2019-10-01T17:29:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "In Puppet 6 (PE 2019+), we are now shipping heira-eyaml 3.0.0, so this should no longer be a problem.", "created": "2019-10-01T17:30:00.000000"}], "components": [], "created": "2019-03-14T20:48:00.000000", "creator": "557058:73641053-e19c-46a3-a060-6c9d43a6ed1a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58035049"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hztdxb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_17354539471_*|*_6_*:*_1_*:*_0"}], "description": "puppetserver-daemon.log returns following warning message on gem dependency `trollop`\u00a0\n{code:java}WARN: Unresolved specs during Gem::Specification.reset:\n      trollop (~> 2.0)\nWARN: Clearing out unresolved specs.\nPlease report a bug if this causes problems.\n{code}\nThe warning appears to be coming from hiera-eyaml 2.1.0 which depends on trollop gem. The issue persists even after we add trollop 2.0 gem.\u00a0\n{code:java}# puppetserver gem list*** LOCAL GEMS ***deep_merge (1.0.1)\nfacter (2.5.1)\nfast_gettext (1.1.2, 1.1.1)\ngettext (3.2.2)\nhiera-eyaml (2.1.0)\nhighline (1.6.21)\nhocon (1.2.5, 1.1.3)\njar-dependencies (0.2.6)\njruby-openssl (0.9.19 java)\njson (1.8.0 java)\nlocale (2.1.2)\nmulti_json (1.13.1)\noptimist (3.0.0)\npuppetserver-ca (1.1.2)\nrake (10.1.0)\nrdoc (4.1.2)\nsemantic_puppet (0.1.3, 0.1.2)\ntext (1.3.1)\ntrollop (2.9.9, 2.1.2, 2.0)\n{code}\n{code:java}# /opt/puppetlabs/puppet/bin/gem list*** LOCAL GEMS ***bigdecimal (default: 1.3.2) colored (1.2) cri (2.6.1) deep_merge (1.0.1) did_you_mean (1.1.0) ethon (0.9.0) facter (3.11.6, 2.5.1) faraday (0.9.1) faraday_middleware (0.9.1) faraday_middleware-multi_json (0.0.6) fast_gettext (1.1.2) ffi (1.9.10) gettext (3.2.2) gettext-setup (0.30) hiera (3.4.5) hiera-eyaml (2.1.0) highline (1.6.21) hocon (1.2.5) io-console (default: 0.4.6) json (default: 2.0.4) locale (2.1.2) log4r (1.1.10) minitar (0.6.1) minitest (5.10.1) multi_json (1.13.1, 1.11.0) multipart-post (2.0.0) net-ssh (4.2.0) net-telnet (0.1.1) openssl (default: 2.0.7) optimist (3.0.0) pe_backup_tools (1.0.2.7.g394df55) power_assert (0.4.1) psych (default: 2.2.2) puppet (5.5.8) puppet_forge (2.2.8) puppetserver-ca (1.1.2) r10k (2.6.5) rake (12.0.0) rdoc (default: 5.0.0) rugged (0.25.1.1) semantic_puppet (1.0.1, 0.1.2) stomp (1.4.4) test-unit (3.2.3) text (1.3.1) trollop (2.9.9, 2.1.2, 2.0) typhoeus (1.0.2) xmlrpc (0.2.1)\n{code}\nUpgrading hiera-eyaml to 3.0.0 does fix it as it no longer depends on trollop gem. But would like to get a clearer picture on why such odd behaviour. It is unknown on what's the impact of the warning message at the moment.\n\nNote that the issue is only observed after upgrading 2016.4.15 (with hiera-eyaml gem installed) to 2018.1.5 and on Centos 6.\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15730", "fixedVersions": [], "id": "15730", "issueType": "Bug", "key": "SERVER-2504", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:73641053-e19c-46a3-a060-6c9d43a6ed1a", "resolution": "Fixed", "resolutionDate": "2019-10-01T17:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Odd behaviour of gem dependency for hiera-eyaml ", "timeSpent": "PT0S", "updated": "2019-10-01T17:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], I'm following up on open tickets targeted at the platform 5.5.11 release - is there anything left to do before this is resolved?", "created": "2019-03-14T10:55:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Nope, it merged itself up and everything.", "created": "2019-03-14T11:14:00.000000"}], "components": [], "created": "2019-03-13T12:30:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ae7843d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hztcb3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Mar/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_75867478_*|*_1_*:*_1_*:*_1319170_*|*_10007_*:*_1_*:*_4600594_*|*_5_*:*_1_*:*_1062318277_*|*_6_*:*_1_*:*_0"}], "description": "One of Puppet Server's acceptance tests uses Python to pretty-print JSON, see https://github.com/puppetlabs/puppetserver/blob/master/acceptance/suites/tests/code_commands/code_scripts.rb#L220. This has caused us issues before, due to differences in which and whether python is installed across platforms. We should remove this usage of Python from our tests so we no longer have to mess with it every time a new OS changes their default Python installation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16916", "fixedVersions": ["SERVER 5.3.8", "SERVER 6.0.4", "SERVER 6.3.0"], "id": "16916", "issueType": "Task", "key": "SERVER-2501", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-26T18:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove python usage from puppetserver's acceptance tests", "timeSpent": "PT0S", "updated": "2019-03-26T18:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Tried re-enabling this today, and it looks like there are still issues with the upstream repos for postgres 9.6 on RHEL 8. The error from the module looks like this:\n{code}\nNotice: /Stage[main]/Postgresql::Repo::Yum_postgresql_org/Yumrepo[yum.postgresql.org]/ensure: created\n    Info: Yumrepo[yum.postgresql.org](provider=inifile): changing mode of /etc/yum.repos.d/yum.postgresql.org.repo from 600 to 644\n    Error: Execution of '/usr/bin/dnf -d 0 -e 1 -y install postgresql96-server' returned 1: Error: Unable to find a match\n    Error: /Stage[main]/Postgresql::Server::Install/Package[postgresql-server]/ensure: change from 'purged' to 'present' failed: Execution of '/usr/bin/dnf -d 0 -e 1 -y install postgresql96-server' returned 1: Error: Unable to find a match\n    Notice: /Stage[main]/Postgresql::Server::Initdb/File[/var/lib/pgsql/9.6/data]: Dependency Package[postgresql-server] has failures: true\n{code}", "created": "2019-08-20T15:31:00.000000"}, {"author": "70121:25951121-8efa-4d22-b5f1-b8ba0b6e8419", "body": "Hej, Whats up? I wounder if there is any progress after more then 1.5 years. As It seems still to be and issue on Centos 8. No progress in\u00a0 here. I realy wounder if I miss something as this is a puppetlab supported modules right", "created": "2020-12-01T01:49:00.000000"}, {"author": "5c48bceea1c91017b403122c", "body": "You can work around this problem with\n\n\u00a0 sudo\u00a0dnf module disable postgresql\n\n\u00a0\n\nOf course, you *shouldn't* need to work around it.\n\n\u00a0\n\nbump!", "created": "2021-01-28T16:10:00.000000"}, {"author": "5c48bceea1c91017b403122c", "body": "Also, to get puppetdb to work on CentOS 8 you have to reduce the SSL security level:\n\n\u00a0\n\n\"SSL_connect SYSCALL returned=5 errno=0 state=SSLv3/TLS write finished\"\n\n\u00a0\n\nTo \"fix\" this, reduce the quality of your security with:\n\n\u00a0\n\n\u00a0 sudo update-crypto-policies --set LEGACY\n\n\u00a0\n\nit would be *fantastic* if puppetdb could use a current crypto version.\n\n\u00a0\n\nnomad", "created": "2021-02-10T13:18:00.000000"}, {"author": "557058:3915718f-2673-45b3-a0a6-c7c03ef0754e", "body": "Looking into this a bit I found [puppetlabs-postgresql/pull/1239|https://github.com/puppetlabs/puppetlabs-postgresql/pull/1239] which has a fix for the issue described in this ticket. I was able to test the changes in the pr and they resolved the issue. I also left a comment on the pr and will make sure we update/release the puppetlabs-puppetdb module once the fix goes in. \n\nWith regards to the SSL security issue mentioned above, I was able to reproduce that. I'll continue looking into what we need to change to clear that up next week. We'll try to have a fix for both up in the next release. ", "created": "2021-02-26T17:07:00.000000"}, {"author": "557058:3915718f-2673-45b3-a0a6-c7c03ef0754e", "body": "The puppetlabs-postgresql module with the dnf update has been released. Closing this ticket but have linked PDB-5057 which covers the testing for the fix to allow crypto-policies to remain set at default. Also linked PDB-5060 which will be used to track the release of the PDB module. ", "created": "2021-03-10T14:07:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This needs some additional work to be usable in our acceptance testing, at least on the 6.x branch. I've put up https://github.com/puppetlabs/puppetlabs-puppetdb/pull/337 which I think might get us there.", "created": "2021-10-04T19:18:00.000000"}, {"author": "61af86343618cd006f430854", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] we would like to close this. if we don't support Postgres on RHEL8, I'd like to deal with that separately as a request from Product if/when its a priority for them\n\n\u00a0", "created": "2022-01-12T12:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We do support it, but apparently not installing it via the module. That could use a product decision, as I would consider it very much a bug right now, especially considering those tickets Zak mentioned make it sound like it _should_ work.", "created": "2022-01-12T12:50:00.000000"}], "components": [], "created": "2019-03-13T11:46:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@494dd93f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0674c:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Dec/20"}], "description": "The puppetdb module will not initially have support for RHEL 8, even after we start shipping packages for that platform, due to support lag in its dependent modules. So we have temporarily disabled PDB on RHEL 8 in our puppetserver FOSS tests, see https://github.com/puppetlabs/puppetserver/pull/2014. When the module is supported for that platform, we should re-enable testing with PDB on RHEL 8.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14862", "fixedVersions": [], "id": "14862", "issueType": "Task", "key": "SERVER-2500", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Ready for Merge", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable PDB on RHEL 8 in server presuite", "timeSpent": "PT0S", "updated": "2022-03-08T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-03-12T18:07:00.000000", "creator": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@510260d7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hztbkv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_160187381_*|*_6_*:*_1_*:*_0"}], "description": "* Update ezbake and beaker-hostgenerator version in puppetlabs/puppetserver for el-8\n * Add el-8 to puppetserver matrices in ci-job-configs\n * Add redhat8\u00a0 to pe-puppet-server-extensions in ci-job-configs", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17190", "fixedVersions": [], "id": "17190", "issueType": "Task", "key": "SERVER-2499", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad3ba12f-a09f-4f5e-9fff-8660ad829629", "resolution": "Duplicate", "resolutionDate": "2019-03-14T14:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Build and test Puppet Server for el-8", "timeSpent": "PT0S", "updated": "2019-03-14T16:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "/cc [~accountid:557058:68216498-c6bf-4e8f-92c1-ac84887b7c02] [~accountid:557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52] on any insight into how ACE intends to handle the {{job_id}} in the report and whether it has any bearing on this work. Specifically, making sure we don't need to be sending {{job_id}} back with the response for any reason.", "created": "2019-03-11T17:50:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "From my reading of https://github.com/puppetlabs/bolt/blob/master/developer-docs/bolt-api-servers.md the only place where bolt-server is interacting with job_id is the {{/plan/run}} endpoint. If necessary for catalog execution, it should be trivial to have ACE read the job_id from the orchestrator when instructed to run puppet for a node, and provide the job_id when retrieving the catalog and when posting the report back.\n\n[~accountid:557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52] does that sound sensible?", "created": "2019-03-12T03:54:00.000000"}, {"author": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "body": "{{job_id}} is also used during catalog runs which bolt server doesn't handle. It's used to link to reports from a job page so it's important that ACE sends job_id to puppet-server and puppet-server sends it to puppetdb. I don't think it's that important that puppet-server sends it back to ACE but it probably should behave the same way the regular endpoints do.", "created": "2019-03-12T09:12:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Sounds good, all of this matches up with what I understood of how Puppet currently works. The normal endpoints only send back the catalog itself, which doesn't contain {{job_id}}, so that's what we'll do here. Thanks for clarifying!", "created": "2019-03-12T09:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There appears to be a bit of a bug in the PuppetDB terminus, where it looks like the {{job_id}} can be sent along with the catalog to be saved (since it is not present _inside_ the catalog itself), but {{job_id}} is never actually extracted from that additional data. https://github.com/puppetlabs/puppetdb/blob/master/puppet/lib/puppet/indirector/catalog/puppetdb.rb#L23-L28 I'm going to fix that along with the changes to the puppetserver code.\n\nRelated, does orchestrator currently somehow add {{job_id}} to the catalog itself to avoid this bug? Because the compile code in Puppet does not...", "created": "2019-03-12T13:58:00.000000"}], "components": [], "created": "2019-03-11T17:49:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "{{job_id}} is saved along with the catalog compiled via the v4 endpoint"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3030f90f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hztai7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_449755973_*|*_1_*:*_1_*:*_69219_*|*_10007_*:*_2_*:*_135955405_*|*_3_*:*_1_*:*_79107213_*|*_5_*:*_1_*:*_633199729_*|*_6_*:*_1_*:*_0"}], "description": "Normally, when an agent run or a {{puppet apply}} is triggered, if a {{job_id}} accompanies the request, it is saved to PDB along with the catalog. When the catalog is later applied, this {{job_id}} is also included in the report.\n\nFor the v4 endpoint, we need to make sure that when a catalog save is requested, we are also saving the {{job_id}}. This is generally handled by the PDB terminus here https://github.com/puppetlabs/puppetdb/blob/master/puppet/lib/puppet/indirector/catalog/puppetdb.rb#L59, so this might be as simple as making sure to pass {{job_id}} along with the {{save}} request in the options here https://github.com/puppetlabs/puppetserver/blob/master/src/ruby/puppetserver-lib/puppet/server/compiler.rb#L50.\n\nHowever, this might not be sufficient for ACE to also include the {{job_id}} in the reports, because usually that part is handled by the same code that triggers the catalog request (see https://github.com/puppetlabs/puppet/commit/4e05e16306ec250555da43c33e5155bec0fd9346#diff-3bdc5fd6acc30b485dc30ba606c026d6). I think this might also be the responsibility of ACE here too: first to pass the {{job_id}} to the catalog request, then later include the same ID in the generated report. ", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "17189", "fixedVersions": ["SERVER 6.3.0"], "id": "17189", "issueType": "Task", "key": "SERVER-2497", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-26T18:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "v4 catalog endpoint needs to save job_id along with catalog", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Looks like the psych installation is failing because PATH and JAVA_HOME are not set correctly to allow maven to resolve dependencies for the Psych JAR. It seems odd that this process is occurring _after_ the gem skeleton has been written to it's final destination so that a broken library is left behind. Ideally RubyGems should be doing this in a temporary directory that can be cleaned up when the installation aborts.", "created": "2019-03-07T18:43:00.000000"}, {"author": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "body": "Let's add documentation: \"do not run {{puppetserver gem update}}\" or make that sub command harder to run.", "created": "2019-08-26T14:03:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I don't think we should make {{gem update}} harder to run. It's broken because we broke some assumption RubyGems is making and we should figure it out and fix it.", "created": "2019-09-03T19:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Do we know if there is a way to invoke {{puppetserver gem update}} so that it behaves appropriately? Seems more useful to document that.", "created": "2019-10-01T16:53:00.000000"}], "components": [], "created": "2019-03-07T18:37:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@75964a0e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8ri2402"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Mar/19"}], "description": "For Puppet Server versions the use JRuby 9k, running {{puppetserver gem update}} without any arguments will attempt to update the psych gem that Ruby uses to load YAML. This update will fail, leaving Puppet Server and the {{puppetserver gem}} non-functional as the YAML library is broken.\n\nh2. Reproduction Case\n\n  - Install PE 2018.1.7 on CentOS 7\n\n  - Run: {{/opt/puppetlabs/bin/puppetserver gem update}}\n\nh3. Outcome\n\nUpdate fails after attempting to install psych:\n\n{noformat}\n[root@e310mnsiy2vq9j7 puppet-enterprise-2018.1.7-el-7-x86_64]# /opt/puppetlabs/bin/puppetserver gem update\nUpdating installed gems\nUpdating deep_merge\nFetching: deep_merge-1.2.1.gem (100%)\nSuccessfully installed deep_merge-1.2.1\nUpdating did_you_mean\nFetching: did_you_mean-1.3.0.gem (100%)\nERROR:  Error installing did_you_mean:\n\tdid_you_mean requires Ruby version >= 2.5.0.\nUpdating fast_gettext\nFetching: fast_gettext-2.0.0.gem (100%)\nSuccessfully installed fast_gettext-2.0.0\nUpdating gettext\nFetching: gettext-3.2.9.gem (100%)\nSuccessfully installed gettext-3.2.9\nUpdating hiera-eyaml\nFetching: optimist-3.0.0.gem (100%)\nSuccessfully installed optimist-3.0.0\nFetching: hiera-eyaml-3.0.0.gem (100%)\nSuccessfully installed hiera-eyaml-3.0.0\nUpdating highline\nFetching: highline-2.0.1.gem (100%)\nSuccessfully installed highline-2.0.1\nUpdating jar-dependencies\nFetching: jar-dependencies-0.4.0.gem (100%)\n\nif you want to use the executable lock_jars then install ruby-maven gem before using lock_jars\n\n  $ gem install ruby-maven -v '~> 3.3.11'\n\nor add it as a development dependency to your Gemfile\n\n   gem 'ruby-maven', '~> 3.3.11'\n\nSuccessfully installed jar-dependencies-0.4.0\nUpdating jruby-openssl\nFetching: jruby-openssl-0.10.2-java.gem (100%)\nSuccessfully installed jruby-openssl-0.10.2-java\nUpdating json\nFetching: json-2.2.0-java.gem (100%)\nSuccessfully installed json-2.2.0-java\nUpdating minitest\nFetching: minitest-5.11.3.gem (100%)\nSuccessfully installed minitest-5.11.3\nUpdating net-telnet\nFetching: net-telnet-0.2.0.gem (100%)\nSuccessfully installed net-telnet-0.2.0\nUpdating power_assert\nFetching: power_assert-1.1.3.gem (100%)\nSuccessfully installed power_assert-1.1.3\nUpdating psych\nFetching: psych-3.1.0-java.gem (100%)\n  jar dependencies for psych-3.1.0-java.gemspec . . .\nInstalling gem 'ruby-maven' . . .\nFetching: ruby-maven-libs-3.3.9.gem (100%)\nSuccessfully installed ruby-maven-libs-3.3.9\nFetching: ruby-maven-3.3.12.gem (100%)\nSuccessfully installed ruby-maven-3.3.12\n\nusing maven for the first time results in maven\ndownloading all its default plugin and can take time.\nas those plugins get cached on disk and further execution\nof maven is much faster then the first time.\n\nwhich: no javac in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)\nwhich: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)\nError: JAVA_HOME is not defined correctly.\n  We cannot execute\nERROR:  While executing gem ... (Errno::ENOENT)\n    No such file or directory - /opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/psych-3.1.0-java/deps.lst\n{noformat}\n\nAfterwards, {{puppetserver gem uninstall}} is broken:\n\n{noformat}\n[root@e310mnsiy2vq9j7 puppet-enterprise-2018.1.7-el-7-x86_64]# /opt/puppetlabs/bin/puppetserver gem uninstall psych\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/psych-3.1.0-java/lib/psych.rb:10: warning: already initialized constant SNAKEYAML_VERSION\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/psych-3.1.0-java/lib/psych.rb:10: warning: already initialized constant ANY\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/psych-3.1.0-java/lib/psych.rb:10: warning: already initialized constant UTF8\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/psych-3.1.0-java/lib/psych.rb:10: warning: already initialized constant UTF16LE\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/psych-3.1.0-java/lib/psych.rb:10: warning: already initialized constant UTF16BE\nuri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1:in `require':\n\n\u25bd\nIt seems your ruby installation is missing psych (for YAML output).\nTo eliminate this warning, please install libyaml and reinstall your ruby.\nLoadError: load error: psych -- java.lang.NoClassDefFoundError: Could not initialize class org.jruby.ext.psych.PsychEmitter\n           require at org/jruby/RubyKernel.java:956\n           require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55\n            <main> at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/yaml.rb:6\n           require at org/jruby/RubyKernel.java:956\n            (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1\n           require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55\n         load_yaml at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems.rb:701\n         load_file at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/config_file.rb:340\n        initialize at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/config_file.rb:202\n  do_configuration at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/gem_runner.rb:75\n            <main> at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/gem_runner.rb:40\n              load at org/jruby/RubyKernel.java:974\n            <main> at /opt/puppetlabs/server/apps/puppetserver/jruby-9k.jar!/META-INF/jruby.home/bin/jgem:21\n              load at org/jruby/RubyKernel.java:974\n            <main> at -e:1\n{noformat}\n\n\nh3. Expected Outcome\n\nAttempting to upgrade {{psych}} does not break Puppet Server.\n\nh3. Reccomended workaround\n\nManually remove the files related to the broken Psych gem using a {{find -delete}} operation:\n\n{code:bash}\nfind /opt/puppetlabs/server/data/puppetserver/jruby-gems/ -name 'psych*' -exec rm -rf {} +\n{code}", "environment": "PE 2018.1 or Puppetserver 5.x with JRuby 9k enabled\n\nPE 2019.0 and Puppetserver 6.x", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14861", "fixedVersions": [], "id": "14861", "issueType": "Bug", "key": "SERVER-2495", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver gem update breaks YAML loading on JRuby 9k", "timeSpent": "PT0S", "updated": "2022-03-09T09:34:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:59:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70d4556a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9543"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt87j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2624_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1522495368"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-03-27T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.0 Release - 2019-03-26\n", "estimate": "PT0S", "externalId": "15059", "fixedVersions": [], "id": "15059", "issueType": "Task", "key": "SERVER-2494", "labels": [], "originalEstimate": "PT0S", "parent": "20064", "parentSummary": "Puppet Platform 6.4.0 Release - 2019-03-26\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-03-25T09:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.3.0)", "timeSpent": "PT0S", "updated": "2019-03-25T09:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] is this done?", "created": "2019-03-25T07:16:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yep!", "created": "2019-03-25T08:55:00.000000"}], "components": [], "created": "2019-03-07T17:59:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@471b22fe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9543"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt873:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Mar/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2489_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1518952144"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-03-22T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.0 Release - 2019-03-26\n", "estimate": "PT0S", "externalId": "17460", "fixedVersions": [], "id": "17460", "issueType": "Task", "key": "SERVER-2493", "labels": [], "originalEstimate": "PT0S", "parent": "20064", "parentSummary": "Puppet Platform 6.4.0 Release - 2019-03-26\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-03-25T08:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.3.0)", "timeSpent": "PT0S", "updated": "2019-03-25T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:59:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ad629"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9543"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt86v:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2388_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1203969764"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-03-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.0 Release - 2019-03-26\n", "estimate": "PT0S", "externalId": "17188", "fixedVersions": [], "id": "17188", "issueType": "Task", "key": "SERVER-2492", "labels": [], "originalEstimate": "PT0S", "parent": "20064", "parentSummary": "Puppet Platform 6.4.0 Release - 2019-03-26\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-03-21T17:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.3.0)", "timeSpent": "PT0S", "updated": "2019-03-21T17:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:59:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@747ae41f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9543"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt86n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2385_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_658747926"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-03-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.4.0 Release - 2019-03-26\n", "estimate": "PT0S", "externalId": "16921", "fixedVersions": [], "id": "16921", "issueType": "Task", "key": "SERVER-2491", "labels": [], "originalEstimate": "PT0S", "parent": "20064", "parentSummary": "Puppet Platform 6.4.0 Release - 2019-03-26\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-03-15T09:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.3.0)", "timeSpent": "PT0S", "updated": "2019-03-15T09:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:48:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5740176"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9533"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7uf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2500_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1204611740"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-03-27T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.7 Release - 2019-03-26", "estimate": "PT0S", "externalId": "15729", "fixedVersions": [], "id": "15729", "issueType": "Task", "key": "SERVER-2490", "labels": [], "originalEstimate": "PT0S", "parent": "24342", "parentSummary": "Puppet Platform 6.0.7 Release - 2019-03-26", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-03-21T17:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.0.4)", "timeSpent": "PT0S", "updated": "2019-03-21T17:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:48:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@154bc886"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9533"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7tz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2532_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1204029885"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-03-22T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.7 Release - 2019-03-26", "estimate": "PT0S", "externalId": "15057", "fixedVersions": [], "id": "15057", "issueType": "Task", "key": "SERVER-2489", "labels": [], "originalEstimate": "PT0S", "parent": "24342", "parentSummary": "Puppet Platform 6.0.7 Release - 2019-03-26", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-03-21T17:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.0.4)", "timeSpent": "PT0S", "updated": "2019-03-21T17:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:48:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5bfcd699"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9533"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7tr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2808_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1204011562"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-03-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.7 Release - 2019-03-26", "estimate": "PT0S", "externalId": "14860", "fixedVersions": [], "id": "14860", "issueType": "Task", "key": "SERVER-2488", "labels": [], "originalEstimate": "PT0S", "parent": "24342", "parentSummary": "Puppet Platform 6.0.7 Release - 2019-03-26", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-03-21T17:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.0.4)", "timeSpent": "PT0S", "updated": "2019-03-21T17:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:47:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49d44e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9533"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7tj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2277_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_658060229"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-03-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.7 Release - 2019-03-26", "estimate": "PT0S", "externalId": "17459", "fixedVersions": [], "id": "17459", "issueType": "Task", "key": "SERVER-2487", "labels": [], "originalEstimate": "PT0S", "parent": "24342", "parentSummary": "Puppet Platform 6.0.7 Release - 2019-03-26", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-03-15T09:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.0.4)", "timeSpent": "PT0S", "updated": "2019-03-15T09:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:38:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4fd9a304"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9523"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7nb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2428_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1204392079"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-03-27T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.12 Release - 2019-03-26", "estimate": "PT0S", "externalId": "16541", "fixedVersions": [], "id": "16541", "issueType": "Task", "key": "SERVER-2486", "labels": [], "originalEstimate": "PT0S", "parent": "26336", "parentSummary": "Puppet Platform 5.5.12 Release - 2019-03-26", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-03-21T17:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.8)", "timeSpent": "PT0S", "updated": "2019-03-21T17:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:38:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72acec78"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9523"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7mv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2400_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1204398532"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-03-22T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.12 Release - 2019-03-26", "estimate": "PT0S", "externalId": "16075", "fixedVersions": [], "id": "16075", "issueType": "Task", "key": "SERVER-2485", "labels": [], "originalEstimate": "PT0S", "parent": "26336", "parentSummary": "Puppet Platform 5.5.12 Release - 2019-03-26", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-03-21T17:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.8)", "timeSpent": "PT0S", "updated": "2019-03-21T17:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:38:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b42c08"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9523"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7mn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2509_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1204395440"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-03-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.12 Release - 2019-03-26", "estimate": "PT0S", "externalId": "15728", "fixedVersions": [], "id": "15728", "issueType": "Task", "key": "SERVER-2484", "labels": [], "originalEstimate": "PT0S", "parent": "26336", "parentSummary": "Puppet Platform 5.5.12 Release - 2019-03-26", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-03-21T17:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.8)", "timeSpent": "PT0S", "updated": "2019-03-21T17:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:38:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b609a5b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9523"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7mf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2333_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_504951557"}], "description": "(Initial planned release date: 2019-03-26)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-03-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.12 Release - 2019-03-26", "estimate": "PT0S", "externalId": "15456", "fixedVersions": [], "id": "15456", "issueType": "Task", "key": "SERVER-2483", "labels": [], "originalEstimate": "PT0S", "parent": "26336", "parentSummary": "Puppet Platform 5.5.12 Release - 2019-03-26", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2019-03-13T14:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.8)", "timeSpent": "PT0S", "updated": "2019-03-13T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-03-07T17:26:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7cf93bd0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7hj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_86638780_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3511362183_*|*_10005_*:*_1_*:*_58089026091"}], "description": "Once the analytics service has been open-sourced, we should move the generic server-side code from pe-pse in puppetserver, which gives us the option of adding metrics for FOSS, notably metrics about module usage.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16261", "fixedVersions": [], "id": "16261", "issueType": "Task", "key": "SERVER-2482", "labels": [], "originalEstimate": "PT0S", "parent": "16076", "parentSummary": "Add metrics to open source Puppet Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2021-02-18T16:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move analytics service server code from pe-pse to puppetserver", "timeSpent": "PT0S", "updated": "2021-02-18T16:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The client has been open-sourced, and a public artifact published: https://clojars.org/puppetlabs/analytics-client", "created": "2019-04-22T12:19:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The service has been open-sourced and a public artifact published: https://clojars.org/puppetlabs/analytics", "created": "2019-04-22T16:29:00.000000"}], "components": [], "created": "2019-03-07T17:25:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Analytics service is open-source\n* Analytics client is open-source"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58899c2b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt7hb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_86707009_*|*_10007_*:*_1_*:*_282116694_*|*_3_*:*_2_*:*_74872844_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_6713528_*|*_10006_*:*_1_*:*_3511361891_*|*_10005_*:*_1_*:*_5668962"}], "description": "Once the PE metrics have been pulled out of the analytics service, we can open-source the generic core of the service. This should include any necessary docs updates. We should also open source the analytics client, so it can be used by contributors.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16074", "fixedVersions": [], "id": "16074", "issueType": "Task", "key": "SERVER-2481", "labels": [], "originalEstimate": "PT0S", "parent": "16253", "parentSummary": "Module Metrics", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-04-22T16:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Open-source the analytics service", "timeSpent": "PT0S", "updated": "2019-04-22T17:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-03-06T17:09:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@75ae6c3a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt6dr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_520757539_*|*_1_*:*_1_*:*_41226_*|*_10007_*:*_1_*:*_80938394_*|*_3_*:*_1_*:*_493978000_*|*_5_*:*_1_*:*_633213815_*|*_6_*:*_1_*:*_0"}], "description": "The current code passes {{job_id}} into Puppet's {{compile}} method, where {{code_id}} is expected. We should fix this and find the proper way to thread {{code_id}} through instead, so it can be used in the compile to support static catalogs.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "15455", "fixedVersions": ["SERVER 6.3.0"], "id": "15455", "issueType": "Task", "key": "SERVER-2479", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-26T18:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Correctly plumb through `code_id`", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-03-06T11:29:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppet Server no longer requires the {{infra_serials}} file to be present on startup\n* The CA CLI gem no longer requires the {{infra_serials}} file to be absent, nor creates it."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5902608"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzt5jb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_506851494_*|*_1_*:*_1_*:*_10167_*|*_10007_*:*_1_*:*_178230855_*|*_3_*:*_1_*:*_3664244_*|*_5_*:*_1_*:*_1060430035_*|*_6_*:*_1_*:*_0"}], "description": "When we introduced the Infrastructure CRL, we required all three of its component files to be present at startup when the feature is enabled. However, the {{infra_serials}} file is always updated by Puppet Server on startup, to contain the serials of the certs listed in {{infra_inventory}}. So when first toggling this setting on, it doesn't really make sense to require this file to be there, and this requirement was complicating workflows.\n\nThis ticket tracks the work to remove this requirement, both in Puppet Server and the CA CLI gem's {{enable --infra-crl}} command.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16073", "fixedVersions": ["SERVER 6.0.4", "SERVER 6.3.0"], "id": "16073", "issueType": "Improvement", "key": "SERVER-2478", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-14T11:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make infra_serials file not required to start puppetserver", "timeSpent": "PT0S", "updated": "2019-03-26T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2019-02-27T16:24:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ac7bce6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsxmn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_503522139_*|*_1_*:*_1_*:*_19651_*|*_3_*:*_1_*:*_594005082_*|*_5_*:*_1_*:*_633150821_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_605735549"}], "description": "The requests that currently go through JRuby are wrapped with a special handler that will tell the requesters to try again later if too many requests are queued up against the server. See https://github.com/puppetlabs/puppetserver/pull/1365. \n\nWe should use this for the new v4 catalog endpoint so that requests don't queue up indefinitely against the resource constraint of the JRuby pool, which it shares with the v3 endpoints, even though it doesn't use their other request handling.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "14859", "fixedVersions": ["SERVER 6.3.0"], "id": "14859", "issueType": "Task", "key": "SERVER-2477", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-26T18:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add request queue handler to v4 catalog endpoint", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2019-02-25T16:35:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53e7c409"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2mv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_178877997_*|*_1_*:*_1_*:*_9782_*|*_10007_*:*_1_*:*_509829722_*|*_3_*:*_1_*:*_116395440_*|*_5_*:*_1_*:*_1642576638_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_60862426"}], "description": "The catalog endpoint implemented in the CD4PE module attaches the logs generated during compilation to the JSON body of the response that returns the catalog. See https://github.com/puppetlabs/puppetlabs-cd4pe/blob/master/lib/puppet_x/puppetlabs/cd4pe_api/compile_handler.rb#L65-L71. This allows warnings that happen during compile to be surfaced more easily to the user, which is especially important in the case of deprecation warnings, because it allows the code writers to get ahead of incoming changes. We should also add these logs to the response of our new v4 catalog API.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "16918", "fixedVersions": ["SERVER 6.3.0"], "id": "16918", "issueType": "Task", "key": "SERVER-2475", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-26T18:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add compilation logs to v4 catalog response", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I have put up a PR for this that still has some open questions on it.", "created": "2019-02-25T17:59:00.000000"}], "components": [], "created": "2019-02-21T17:38:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76e1ce8a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsxmf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_12009_*|*_10007_*:*_1_*:*_1284773741_*|*_3_*:*_1_*:*_282535741_*|*_5_*:*_1_*:*_1218792883_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_64235548"}], "description": "The new catalog endpoint takes a somewhat complex JSON body with many optional params. We should document all the ways in which the new endpoint can be used, and describe what all the defaults are if not all params are used.\n\nThe docs for our existing endpoints are in two parts:\n1) text description of the request and response structures (ex. https://github.com/puppetlabs/puppetserver/blob/master/documentation/puppet-api/v3/tasks.markdown)\n2) JSON schema of the response (ex. https://github.com/puppetlabs/puppetserver/blob/master/documentation/puppet-api/v3/tasks.json)\n\nWe should send this along to the consuming teams when we give it to them with a test run, and update the docs with the results of their experiments with the endpoint, to make sure we've covered as many pitfalls as possible.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "15056", "fixedVersions": ["SERVER 6.3.0"], "id": "15056", "issueType": "Task", "key": "SERVER-2474", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-26T18:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Write docs for new catalog endpoint", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We'll keep the code around for this and use it for testing any major changes we make to the v4 endpoint in the future.", "created": "2019-03-14T17:06:00.000000"}], "components": [], "created": "2019-02-21T12:23:00.000000", "creator": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5403fb99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsxbz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Mar/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9826_*|*_3_*:*_1_*:*_1827788149_*|*_5_*:*_1_*:*_0"}], "description": "This is not code that will end up actually being merged.\n\nIn order to increase the test coverage of the v4 endpoint, we should route the v3 requests through the v4 logic to see any gaps in our implementation for the new catalog compilation.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "16072", "fixedVersions": [], "id": "16072", "issueType": "Task", "key": "SERVER-2473", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "resolution": "Done", "resolutionDate": "2019-03-14T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Route the v3 endpoint to v4 to increase test coverage", "timeSpent": "PT0S", "updated": "2019-03-14T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is completed to the extent that it can be currently in the PR for SERVER-2532 (https://github.com/puppetlabs/puppetserver/pull/2066). To finish this we are currently blocked on some rework that needs to happen in the Transports loading, see FM-8092 for that.", "created": "2019-05-22T17:57:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm going to mark this as done, since we have a separate ticket for tracking the remaining work.", "created": "2019-08-06T12:24:00.000000"}], "components": [], "created": "2019-02-21T11:54:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23841b8c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2467"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsx9z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9371_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_6546591266_*|*_10006_*:*_1_*:*_2354086217_*|*_10005_*:*_1_*:*_5439886253"}], "description": "*Note:* this ticket is a placeholder that should be broken up, either into subtasks or whole separate tickets.\n\nThe business logic of the remote transport API endpoint is to query the Resource API for its available transports. \n\nThese transports come from modules and so are environment-specific. This means we will need to make sure we load only those pertinent to the requested environment. This loading might be done for us by the Resource API, not sure yet. \n\nWe should also look into storing the data in the environment cache (I'm unclear on what this entails at this point).\n\n The resulting data hash then need to be surfaced up to the Clojure layer as the response for the request.", "epicLinkSummary": "Remote Transport API", "estimate": "PT0S", "externalId": "14858", "fixedVersions": ["SERVER 6.4.0"], "id": "14858", "issueType": "Task", "key": "SERVER-2472", "labels": [], "originalEstimate": "PT0S", "parent": "14857", "parentSummary": "Remote Transport API", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-08-06T12:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Query Resource API for available remote transports", "timeSpent": "PT0S", "updated": "2019-08-06T12:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2019-02-21T11:44:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b6914e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2467"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsx73:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1610744962_*|*_1_*:*_1_*:*_13999_*|*_10007_*:*_2_*:*_1492598677_*|*_3_*:*_1_*:*_859931502_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_436350056_*|*_10006_*:*_1_*:*_342062837_*|*_10005_*:*_1_*:*_5440493098"}], "description": "We can begin working on the Clojure scaffolding and unit testing for the remote transport endpoint, even before the relevant Ruby code has been added to the Resource API. This work is likely similar to what was done in SERVER-2437 (https://github.com/puppetlabs/puppetserver/commit/2deb686496862e30272b9cf05f07f7419cbbfe7a), and should be based on the API schema determined in SERVER-2470.", "epicLinkSummary": "Remote Transport API", "estimate": "PT0S", "externalId": "17458", "fixedVersions": ["SERVER 6.4.0"], "id": "17458", "issueType": "Task", "key": "SERVER-2471", "labels": [], "originalEstimate": "PT0S", "parent": "14857", "parentSummary": "Remote Transport API", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-06-19T09:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add clojure skeleton for remote transport endpoint", "timeSpent": "PT0S", "updated": "2019-06-19T09:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "emailed dumpling", "created": "2019-04-25T17:47:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is what I hashed out with the dumpling team:\n{code}\nGET /puppet/v3/environment-transports?environment=<environment-name>\n\nWith the same errors and e-tag handling as environment-classes\nAccepts only json\n\nReturns json:\n{\n  \"name\": \"<environment-name>\",\n  \"transports\": [ TransportSchema* ]\n}\n\nWhere * means 0 or more, and TransportSchema is:\n{\n  \"name\": \"<user-friendly-name>\",\n  \"desc\": \"<user-friendly-description>\",\n  ***\"id\": \"<machine-friendly-id>\",\n  \"connection_info\": ConnectionInfo\n}\n\nAnd ConnectionInfo is a mandatory object with string keys that do double duty as the name of the connection param and the value is an object that contains type, description, and sensitivity ie:\n{\n  \"<connection-param-name>\": {\n    \"type\": \"pcore-type-name>\",\n    \"desc\": \"<param-description>\",\n    ***\"sensitive\": true | false\n  }\n}\n\nAnd *** marks fields that I'll investigate further with the Network Automation team.\n{code}\n\nI need to email the Network Automation team to resolve the semantics around the \"name\" field as well as the possible inclusion of \"sensitive\" and \"id\" fields. I don't think that will block beginning on the next ticket though.\n\nAlso, reading through the Ruby code that implements list I didn't see how the compiler would automatically discover existing transports (they seem like an autoloaded extension like types and providers which aren't loaded on the server), but that may be from my lack of familiarity with the Resource API.\n\nNote: the console will only request & show information from the production environment.", "created": "2019-04-29T11:00:00.000000"}], "components": [], "created": "2019-02-21T11:40:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f8df0c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2467"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsx6n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Apr/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_17994_*|*_3_*:*_1_*:*_5261185_*|*_10009_*:*_1_*:*_281941584_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_321191766_*|*_10006_*:*_1_*:*_15578609_*|*_10005_*:*_1_*:*_5440739405"}], "description": "The remote transport endpoint needs to query the Resource API about available transports for managing remote resources on agentless nodes. We need to specify where this endpoint belongs, its inputs, and the structure of the data it returns.\n\nWe know that the Ruby method for listing the transports will return a Hash of metadata about the available transports, see https://github.com/puppetlabs/puppet-resource_api/commit/bd3a21e0abd825f55ef928189d5ebb8a256b7c6c for the current basic implementation.\n\nWe should then validate this schema with the expectations of the PE Console, which will be the main consumer of the endpoint.", "epicLinkSummary": "Remote Transport API", "estimate": "PT0S", "externalId": "16915", "fixedVersions": [], "id": "16915", "issueType": "Task", "key": "SERVER-2470", "labels": [], "originalEstimate": "PT0S", "parent": "14857", "parentSummary": "Remote Transport API", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-05-02T17:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Define API schema for remote transport API", "timeSpent": "PT0S", "updated": "2019-05-22T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "There are a few different parameters to this endpoint that could also come from classification. Should we fill in exactly the ones that are not supplied? Have one control the whole thing? Separate flag?", "created": "2019-02-25T15:49:00.000000"}], "components": [], "created": "2019-02-20T15:38:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e384333"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2mf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_520786580_*|*_1_*:*_1_*:*_11141_*|*_10007_*:*_1_*:*_78687768_*|*_3_*:*_1_*:*_1203596143_*|*_5_*:*_1_*:*_633180585_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_507676421"}], "description": "We can already support the case where environment and classes are passed along with the catalog request, but we also need to support fetching that information from the classifier when it is not supplied. This feature is almost certainly needed for ACE proxy compilation (see PE-25621) and possibly also for CD4PE Impact analysis (see PE-25714), where the environment will be supplied but not the classes for the node.\n\nExample of existing CD4PE endpoint doing this: https://github.com/puppetlabs/puppetlabs-cd4pe/blob/master/lib/puppet/indirector/node/cdpe.rb#L132-L169", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "16260", "fixedVersions": ["SERVER 6.3.0"], "id": "16260", "issueType": "Task", "key": "SERVER-2468", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-26T18:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Retrieve environment and classification from the classifier", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-02-19T10:22:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@db29ec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-3"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Remote Transport API"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hympw7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added a new API endpoint to at {{/puppet/v3/environment_transports}}, to list all of the available network transports from modules, for use with the Agentless Catalog Executor."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_177747300_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_7685307537_*|*_10013_*:*_1_*:*_6655897640"}], "description": "Puppetserver needs to surface data about available transports for remote resources. The resource API will provide the data via the {{ResourceAPI::Transport}} type. The transports are loaded from network modules, so the available transports can differ per environment. The endpoint needs to surface which transports have been loaded for a given environment. The main consumer is the PE console.\n\nThe relevant code in the Resource API is currently on a branch here: https://github.com/puppetlabs/puppet-resource_api/tree/transport. It will need to be available in puppet-agent before it can be used by puppetserver.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14857", "fixedVersions": ["SERVER 6.4.0"], "id": "14857", "issueType": "Epic", "key": "SERVER-2467", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-08-06T12:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remote Transport API", "timeSpent": "PT0S", "updated": "2021-08-23T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623a47dc94742a00683d6fdd", "created": "2019-02-18T09:04:00.000000", "name": "etc-sysconfig-puppetserver.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10672"}, {"attacher": "623a47dc94742a00683d6fdd", "created": "2019-02-18T08:58:00.000000", "name": "puppet.conf", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10886"}, {"attacher": "623a47dc94742a00683d6fdd", "created": "2019-02-18T08:58:00.000000", "name": "puppetserver.conf", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10814"}, {"attacher": "623a47dc94742a00683d6fdd", "created": "2019-02-18T08:58:00.000000", "name": "puppetserver.log.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10742"}], "comments": [{"author": "623a47dc94742a00683d6fdd", "body": "Solved. Config issue. changed 'localhost' to FQDN of my puppet master. Also it seems that I uncommented a line that was meant to be a comment.", "created": "2019-02-18T09:39:00.000000"}, {"author": "623a47dc94742a00683d6fdd", "body": "Configuration issue. please ignore.", "created": "2019-02-18T09:42:00.000000"}], "components": ["Puppet Server"], "created": "2019-02-18T09:05:00.000000", "creator": "623a47dc94742a00683d6fdd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@510bc8b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsumn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_2185067_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 5.5.10*\n *Puppet Server Version: 5.3.7*\n *OS Name/Version: RHEL 7.6*\n\nDescribe your issue in as much detail as possible\u2026\n\nWhen enabling the graphite metrics in /etc/puppetlabs/puppetserver/conf.d/metrics.conf :\n\n\u00a0\n{code:java}\nmetrics: {\n    # a server id that will be used as part of the namespace for metrics produced\n    # by this server\n    server-id: localhost\n    registries: {\n        puppetserver: {\n            # specify metrics to allow in addition to those in the default list\n            #metrics-allowed: [\"compiler.compile.production\"]            reporters: {\n                # enable or disable JMX metrics reporter\n                jmx: {\n                    enabled: true\n                }\n                 enable or disable Graphite metrics reporter\n                graphite: {\n                    enabled: true\n                }\n            }        }\n    }    # this section is used to configure settings for reporters that will send\n    # the metrics to various destinations for external viewing\n    reporters: {\n        graphite: {\n            # graphite host\n            host: \"tice-rhel7prod.jhuapl.edu\"\n            # graphite metrics port\n            port: 3000\n            # how often to send metrics to graphite\n            update-interval-seconds: 5\n        }\n    }\n\n{code}\nThe puppetserver fails to restart. Here are the errors I noticed in the logs:\n{code:java}\n2019-02-18 10:41:38,886 ERROR [qtp1501096310-66] [p.r.core] Internal Server Error: java.lang.InterruptedException\n        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)\n        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2088)\n        at com.puppetlabs.jruby_utils.pool.JRubyPool.borrowItemWithTimeout(JRubyPool.java:194)\n        at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:498)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n        at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval30528$borrow_with_timeout_fn__30533$fn__30534.invoke(jruby_internal.clj:133)\n        at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval30528$borrow_with_timeout_fn__30533.invoke(jruby_internal.clj:130)\n        at clojure.core$partial$fn__4759.invoke(core.clj:2515)\n        at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval30891$borrow_from_pool_BANG__STAR___30896$fn__30897.invoke(jruby_internal.clj:271)\n        at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval30891$borrow_from_pool_BANG__STAR___30896.invoke(jruby_internal.clj:264)\n        at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval30938$borrow_from_pool_with_timeout__30943$fn__30944.invoke(jruby_internal.clj:312)\n        at puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval30938$borrow_from_pool_with_timeout__30943.invoke(jruby_internal.clj:301)\n        at puppetlabs.services.jruby_pool_manager.jruby_core$eval32153$borrow_from_pool_with_timeout__32158$fn__32159.invoke(jruby_core.clj:212)\n        at puppetlabs.services.jruby_pool_manager.jruby_core$eval32153$borrow_from_pool_with_timeout__32158.invoke(jruby_core.clj:199)\n        at puppetlabs.puppetserver.jruby_request$wrap_with_jruby_instance$fn__33241.invoke(jruby_request.clj:46)\n        at puppetlabs.puppetserver.jruby_request$wrap_with_error_handling$fn__33237.invoke(jruby_request.clj:33)\n        at puppetlabs.services.request_handler.request_handler_service$reify__33338$service_fnk__5266__auto___positional$reify__33353.handle_request(request_handler_service.clj:47)\n        at puppetlabs.services.protocols.request_handler$eval29051$fn__29052$G__29043__29055.invoke(request_handler.clj:3)\n        at puppetlabs.services.protocols.request_handler$eval29051$fn__29052$G__29042__29059.invoke(request_handler.clj:3)\n        at clojure.core$partial$fn__4759.invoke(core.clj:2515)\n        at puppetlabs.trapperkeeper.authorization.ring_middleware$eval40038$wrap_authorization_check__40047$fn__40050$fn__40051.invoke(ring_middleware.clj:284)\n        at puppetlabs.ring_middleware.core$eval22014$wrap_bad_request__22023$fn__22026$fn__22032.invoke(core.clj:170)\n        at puppetlabs.ring_middleware.core$eval22112$wrap_uncaught_errors__22121$fn__22124$fn__22129.invoke(core.clj:216)\n        at puppetlabs.ring_middleware.core$eval21739$wrap_request_logging__21744$fn__21745$fn__21747.invoke(core.clj:47)\n        at puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n        at puppetlabs.ring_middleware.core$eval21768$wrap_response_logging__21773$fn__21774$fn__21775.invoke(core.clj:53)\n        at puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__17457.invoke(ringutils.clj:83)\n        at puppetlabs.services.master.master_core$eval38344$v3_ruby_routes__38349$fn__38350$fn__38357.invoke(master_core.clj:727)\n        at bidi.ring$eval23056$fn__23057.invoke(ring.cljc:25)\n        at bidi.ring$eval23035$fn__23036$G__23026__23045.invoke(ring.cljc:16)\n        at puppetlabs.comidi$make_handler$fn__25166.invoke(comidi.clj:245)\n        at puppetlabs.metrics.http$eval37522$wrap_with_request_metrics__37527$fn__37531$fn__37533$fn__37534$fn__37535.invoke(http.clj:152)\nat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n        at com.codahale.metrics.Timer.time(Timer.java:101)\n        at puppetlabs.metrics.http$eval37522$wrap_with_request_metrics__37527$fn__37531$fn__37533$fn__37534.invoke(http.clj:152)\n        at puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n        at com.codahale.metrics.Timer.time(Timer.java:101)\n        at puppetlabs.metrics.http$eval37522$wrap_with_request_metrics__37527$fn__37531$fn__37533.invoke(http.clj:148)\n        at puppetlabs.comidi$eval25227$wrap_with_route_metadata__25232$fn__25233$fn__25235.invoke(comidi.clj:332)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__35409.invoke(jetty9_core.clj:434)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n        at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:498)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$eval34985$normalize_uri_handler__34990$fn__34991$fn__34992.invoke(normalized_uri_helpers.clj:74)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205)\n        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)\n        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\n        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\n        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724)\n        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n        at com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.Server.handle(Server.java:531)\n        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)\n        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)\n        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)\n        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:291)\n        at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:151)\n        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\n        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)\n        at java.lang.Thread.run(Thread.java:748)\n{code}\nand\n{code:java}\n2019-02-18 10:41:38,893 ERROR [async-dispatch-3] [p.t.s.w.jetty9-core] Web server failed to shut down gracefully in configured timeout period (30,000); cancelling remaining requests.\njava.util.concurrent.TimeoutException: null\n        at org.eclipse.jetty.util.FutureCallback.get(FutureCallback.java:128)\n        at org.eclipse.jetty.util.FutureCallback.get(FutureCallback.java:30)\n        at org.eclipse.jetty.server.Server.doStop(Server.java:460)\n        at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:498)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n        at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:313)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval35603$shutdown__35608$fn__35612$fn__35614.invoke(jetty9_core.clj:607)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval35603$shutdown__35608$fn__35612.invoke(jetty9_core.clj:606)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval35603$shutdown__35608.invoke(jetty9_core.clj:598)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_service$reify__36516$service_fnk__5266__auto___positional$reify__36523.stop(jetty9_service.clj:71)\n        at puppetlabs.trapperkeeper.services$eval5068$fn__5095$G__5060__5098.invoke(services.clj:9)\n        at puppetlabs.trapperkeeper.services$eval5068$fn__5095$G__5059__5102.invoke(services.clj:9)\n        at puppetlabs.trapperkeeper.internal$eval13835$run_lifecycle_fn_BANG___13842$fn__13843.invoke(internal.clj:198)\n        at puppetlabs.trapperkeeper.internal$eval13835$run_lifecycle_fn_BANG___13842.invoke(internal.clj:181)\n        at puppetlabs.trapperkeeper.internal$eval14258$shutdown_BANG___14263$fn__14264$shutdown_fn__14266$fn__14277.invoke(internal.clj:440)\n        at puppetlabs.trapperkeeper.internal$eval14258$shutdown_BANG___14263$fn__14264$shutdown_fn__14266.invoke(internal.clj:439)\n        at puppetlabs.trapperkeeper.internal$eval13905$initialize_lifecycle_worker__13916$fn__13917$fn__14013$state_machine__11875__auto____14014$fn__14016$fn__14029.invoke(internal.clj:276)\n        at puppetlabs.trapperkeeper.internal$eval13905$initialize_lifecycle_worker__13916$fn__13917$fn__14013$state_machine__11875__auto____14014$fn__14016.invoke(internal.clj:260)\n        at puppetlabs.trapperkeeper.internal$eval13905$initialize_lifecycle_worker__13916$fn__13917$fn__14013$state_machine__11875__auto____14014.invoke(internal.clj:251)\n        at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:1012)\n        at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:1011)\n        at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:1016)\n        at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:1014)\n        at clojure.core.async$ioc_alts_BANG_$fn__12043.invoke(async.clj:383)\n        at clojure.core.async$do_alts$fn__11989$fn__11992.invoke(async.clj:252)\n        at clojure.core.async.impl.channels.ManyToManyChannel$fn__6813.invoke(channels.clj:135)\n        at clojure.lang.AFn.run(AFn.java:22)\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n        at java.lang.Thread.run(Thread.java:748)\n{code}\n\n\n\n\n\u00a0\n\n*Desired Behavior:*\n\nAfter configuring the puppetserver to enable / send graphite metrics, the puppetserver should restart without errors.\n\n*Actual Behavior:*\n\n[root@puppet ~]# systemctl restart puppetserver\nJob for puppetserver.service failed because the control process exited with error code. See \"systemctl status puppetserver.service\" and \"journalctl -xe\" for details.\n\n\u00a0\n\nI originally tried this in server 5.3.6 but then upgraded to 5.3.7 to see if that would help; no luck.\n\nTo reproduce:\n # Uncomment the necessary lines to enable graphite metrics in metrics.conf\n # # systemctl restart puppetserver\n # the command should fail.\n\n\u00a0\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16071", "fixedVersions": [], "id": "16071", "issueType": "Bug", "key": "SERVER-2466", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a47dc94742a00683d6fdd", "resolution": "Fixed", "resolutionDate": "2019-02-18T09:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver fails to restart when enabling graphite metrics", "timeSpent": "PT0S", "updated": "2019-02-18T09:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "The Puppet Server team will have the necessary info for this", "created": "2019-02-26T12:49:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks Claire and Jean. I can help. I think it would make sense for me to open a PR to update those docs myself, right?\n\nIIRC, the metrics he's looking are transformations of those primarily listed\u00a0 here:\u00a0[https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/master/master_service.clj]\u00a0and here:\u00a0[https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/jruby/jruby_metrics_core.clj]\u00a0but I need to double check those, and it will take a bit to circle back around to this.", "created": "2020-04-15T21:49:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "Yes that would be great, thanks Justin! And then I can review the PR when it's ready.\u00a0", "created": "2020-04-16T01:52:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Okay, so it looks like _most_ of the metrics that are supplied via jolokia are documented under the general metrics page. That is here:\u00a0[https://github.com/puppetlabs/puppetserver/blob/master/documentation/puppet_server_metrics.markdown#available-graphite-metrics]\n\n\u00a0\n\nThose metrics are also exposed from the status service when queried at the debug level so it might be valuable to split the metrics I linked to above out into their own page and then with a huge flashing banner link to that new metrics list from the metrics exporter page, the metrics v2 api page (what initiated this ticket) and the status api page here:\u00a0[https://github.com/puppetlabs/puppetserver/blob/master/documentation/status-api/v1/services.markdown#example-request-and-response-for-a-debug-level-get-request].\n\nNote that the v1 metrics endpoint is deprecated.\n\n\u00a0\n\nI'm sure that section to-be-page could use some clean up. I can see a couple content bits that could be improved:\n\nThe \"p75\", \"p90\", lower case metric names under the \"**Statistical metrics\" subsection are only used for the graphite exporter, and an even smaller subset is used for the status endpoint. The v2 metrics endpoint will include a larger number of metrics and they will be spelled out and camel cased. Here's an example reply for one of these \"statistical metrics\" from the v2 endpoint:\n{code:java}\n$ curl -k 'https://localhost:8140/metrics/v2/read/puppetserver:name=\"puppetlabs.localhost.http.puppet-v3-catalog-*-requests\"' --output - | jq .\n\n{\n  \"request\": {\n    \"mbean\": \"puppetserver:name=\\\"puppetlabs.localhost.http.puppet-v3-catalog-*-requests\\\"\",    \"type\": \"read\"\n  },\n  \"value\": {\n    \"puppetserver:name=\\\"puppetlabs.localhost.http.puppet-v3-catalog-/\\\\*/-requests\\\"\": {\n      \"Mean\": 717.941152,\n      \"StdDev\": 0,\n      \"75thPercentile\": 717.941152,\n      \"98thPercentile\": 717.941152,\n      \"RateUnit\": \"events/second\",\n      \"95thPercentile\": 717.941152,\n      \"99thPercentile\": 717.941152,\n      \"Max\": 717.941152,\n      \"Count\": 1,\n      \"FiveMinuteRate\": 0.0028452503068887463,\n      \"50thPercentile\": 717.941152,\n      \"MeanRate\": 0.0006308748561215546,\n      \"Min\": 717.941152,\n      \"OneMinuteRate\": 0.007553668846787294,\n      \"DurationUnit\": \"milliseconds\",\n      \"999thPercentile\": 717.941152,\n      \"FifteenMinuteRate\": 0.001053991118789713\n    }\n  },\n  \"timestamp\": 1597169095,\n  \"status\": 200\n}{code}\nAnd here's the equivalent data from the status service:\n{code:java}\n$ curl -k 'https://localhost:8140/status/v1/services/master?level=debug' | jq '.\"status\".\"experimental\".\"http-metrics\" | map(select(.\"route-id\" == \"puppet-v3-catalog-/*/\"))'\n\n[\n  {\n    \"route-id\": \"puppet-v3-catalog-/*/\",\n    \"count\": 1,\n    \"mean\": 717,\n    \"aggregate\": 717\n  }\n] {code}\n\u00a0\n\nOne critique of the current page is that I found splitting the metrics sections out into three lists (statistical metrics, counters only, other) harder to follow and find what I wanted than if they were listed logically with notes about what time each metric was (or a table).\n\n\u00a0\n\nFinally, there are some metrics that are importantly different between these apis. Specifically, the borrowed-instance, requested-instances, borrow-timers. The v2 representation of borrow-timers looks like:\n\n{{puppetserver:name=puppetlabs.localhost.jruby.borrow-timer.<reason>}}\u00a0\n\neg.\n{code:java}\n{\n  \"request\": {\n    \"mbean\": \"puppetserver:name=puppetlabs.localhost.jruby.borrow-timer.puppet-v3-catalog\",\n    \"type\": \"read\"\n  },\n  \"value\": {\n    \"Mean\": 116.74613452321924,\n    \"StdDev\": 15.500502224919208,\n    \"75thPercentile\": 111,\n    \"98thPercentile\": 155,\n    \"RateUnit\": \"events/second\",\n    \"95thPercentile\": 155,\n    \"99thPercentile\": 175,\n    \"Max\": 712,\n    \"Count\": 5,\n    \"FiveMinuteRate\": 6.162480376138712e-05,\n    \"50thPercentile\": 111,\n    \"MeanRate\": 0.0008199957172447686,\n    \"Min\": 111,\n    \"OneMinuteRate\": 1.0155867867294054e-12,\n    \"DurationUnit\": \"milliseconds\",\n    \"999thPercentile\": 175,\n    \"FifteenMinuteRate\": 0.0009094685751304663\n  },\n  \"timestamp\": 1597180828,\n  \"status\": 200\n} {code}\nAnd is closely matched by the existing metrics pushed to graphite and the existing page.\n\nHowever the status endpoint returns\n{code:java}\n$ curl -k 'https://localhost:8140/status/v1/services/jruby-metrics?level=debug' | jq '.\"status\".\"experimental\".\"metrics\".\"borrow-timer\ns\"' \n\n{\n  \"puppet-v3-file_metadatas\": {                                                                                                                                 \n    \"count\": 15,                                                                                                                                                \n    \"mean\": 52,                                                                 \n    \"max\": 129,                                                                 \n    \"rate\": 0.0047506933614506665                                               \n  },\n  ...\n}{code}\nAnd {{borrowed-instances}}, {{requested-instances}} are not in the v2 metrics or metrics pushed to graphite but are present in the status endpoint. They include a list of borrows or requests, the reason while the duration that they've been borrowed or requested (where \"requested\" means enqueued for borrowing).\n{code:java}\n[\n  {\n    \"time\": 1597178463132,\n    \"reason\": {\n      \"request\": {\n        \"uri\": \"/puppet/v3/file_metadatas/plugins\",\n        \"request-method\": \"get\",\n        \"route-id\": \"puppet-v3-file_metadatas-/*/\"\n      }\n    },\n    \"duration-millis\": 59\n  }\n] {code}\nMaybe it would be valuable in this new page to note the difference between the metrics pushed to graphite and the v2 representation and that equivalent data takes a very different form in the status endpoint. And then put the fuller information in the status page itself.\n\n\u00a0\n\nI don't know how helpful that is, or if this ticket warrants that much work? I think the summary is: extract the metrics summaries from the existing page, reformat them with a couple of additional notes. Link to this new page from three other pages. Add an additional note on the status page about a few things it has that the others don't.", "created": "2020-08-11T15:37:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "Thanks [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]! [~accountid:5b5a27ad106ec32d95ea277d]\u00a0are you able to take this on?\u00a0", "created": "2020-08-12T04:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This page lives at https://puppet.com/docs/puppet/7/server/metrics-api/v2/metrics_api.html now and appears to have good examples. Closing this.", "created": "2022-02-22T18:21:00.000000"}], "components": [], "created": "2019-02-15T15:02:00.000000", "creator": "557058:0a2bfc9c-1912-49b1-9776-665ef20c8769", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46d2150f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsudr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_328190493_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_58701001388_*|*_10006_*:*_1_*:*_35667721516_*|*_10005_*:*_1_*:*_614263497"}], "description": "Url: /docs/puppetserver/6.2/metrics-api/v2/metrics_api.html\nRank: 1/5\nEmail:\u00a0[alan@airpost.net|mailto:alan@airpost.net]\nMessage:\nThe `puppetserver:*` metrics from jolokia have a very different format than\nthe `java.lang:*` metrics. This page, nor any other I can find, describes the\nkeys/values in a sample `puppetserver:*` result.\n\n\u00a0\n\nReply email sent 15 February\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15055", "fixedVersions": [], "id": "15055", "issueType": "Task", "key": "SERVER-2779", "labels": ["feedback-form-docs-site", "server"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0a2bfc9c-1912-49b1-9776-665ef20c8769", "resolution": "Done", "resolutionDate": "2022-02-22T18:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add keys/values for sample `puppetserver:*` result", "timeSpent": "PT0S", "updated": "2022-02-22T18:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Seems like we could do this by:\n\n  - Pulling the public key from the private key.\n\n  - Looping through the cert bundle to find which certificate contains that public key.\n\n  - Looping through the crl bundle to find which CRL has an Issuer field matching the certificate.", "created": "2019-05-21T16:34:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "This would also be a great usability improvement as the certificate and CRL input formats do not have any human readble fields that can be used to directly verify things are in the right order. You can get this info using the {{openssl}} CLI, but there is a bit of a learning curve there and it also only prints the first entry in a concatenated file.", "created": "2019-05-21T16:39:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This assumption, iirc, is in both the ca cli and the ca itself. Does this ticket handle both of those cases or just the ca cli?", "created": "2019-06-11T17:06:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "Ah, well I've only done the cli so far, I could do both here I suppose.", "created": "2019-06-11T17:14:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There are also some docs that will need to be updated around this, e.g. https://github.com/puppetlabs/puppetserver/blob/master/documentation/intermediate_ca.md#set-up-puppet-as-an-intermediate-ca-with-an-external-root", "created": "2019-06-12T10:42:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Also, it would be great if the CA changes could land in Kearney as well as Lovejoy, if we don't think that's too risky/out of scope.", "created": "2019-06-12T11:02:00.000000"}], "components": [], "created": "2019-02-15T13:31:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d2326e2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2548"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsu93:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Cert and CRL bundles now no longer need to be in any specific order. By default, the leaf instances will still come first, descending to the root, which will be last."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_347256055_*|*_1_*:*_1_*:*_8460182382_*|*_10007_*:*_1_*:*_2305978151_*|*_3_*:*_1_*:*_22513583_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1548847469_*|*_10005_*:*_1_*:*_6822"}], "description": "We currently require cert and crl chains to be in a pem file with the signing cert/crl listed first. We should instead read in all certs/crls and determine signing cert/crl by another rubric (privatekey, issuer, or ca_name...) and then write the file back out in the same order we read them from disk.", "epicLinkSummary": "Improve CA Import", "estimate": "PT0S", "externalId": "17187", "fixedVersions": ["SERVER 6.0.5", "SERVER 6.3.1", "SERVER 6.5.0"], "id": "17187", "issueType": "Improvement", "key": "SERVER-2465", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": "15460", "parentSummary": "Improve CA Import", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2019-07-12T10:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Detect correct signing cert/crl by other means than order in respective files", "timeSpent": "PT0S", "updated": "2019-07-15T12:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I think the minimal set of extensions for a Certificate Signing Request may be:\n\n{code}\n# Some orgs may want to consider adding pathlen:0 so that the PE intermediate CA\n# cannot issue further sub-CAs\nbasicConstraints=critical,CA:TRUE\nkeyUsage=critical,keyCertSign,cRLSign\n{code}\n\nRFC 5280 appears to indicate that the [Authority Key Identifier|https://tools.ietf.org/html/rfc5280#section-4.2.1.1] is used for path building and may be omitted in the case of a self-signed certificate. However, {{openssl req}} refuses to add it to a signing request --- which makes me suspect that it is up to the signing authority to add this.", "created": "2019-05-21T16:47:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've linked the ticket where we wanted to make a command that generates that CSR. That might not be a substitute for documenting this, but it seems like it might ultimately be better/easier.\n\nMost of the work for that is done, but there were some open UX questions we never resolved. Hopefully we'll circle back around.", "created": "2019-10-01T16:20:00.000000"}], "components": [], "created": "2019-02-15T13:21:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b2fd6a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:h"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/May/19"}], "description": "Now that we fully support intermediate CAs users have been trying to create intermediate CAs between corporate roots and the signing CA's cert. I believe these are [here in code|https://github.com/puppetlabs/puppetserver-ca-cli/blob/0417e765671716eba72df51dbc8a6b258be8d6fc/lib/puppetserver/ca/local_certificate_authority.rb#L23-L38]. We should have a page that documents our expectations on certs and link it to the main CA docs.\n\n\u00a0\n\nOne extension we have that few users in the wild seem to have is the AuthorityKeyIdentifier (AKI). We should also investigate if this a necessary extension for CAs/Masters.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "16913", "fixedVersions": [], "id": "16913", "issueType": "Improvement", "key": "SERVER-2464", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document the necessary cert extensions required to be in a CA/Master", "timeSpent": "PT0S", "updated": "2022-03-09T09:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-02-15T13:16:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6cf70e34"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsu87:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19706352864_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76798465022"}], "description": "Is this possible when agents will be set to leaf CRL checking? We've gotten feedback that users have tried to import CRL chains that did not include the root CRL with the intention of turning on leaf CRL checking. There may be an issue in the agent with OpenSSL requiring CRLs for all certs it has in a chain?? (this sounds familiar but not we should investigate when doing the ticket). If partial CRL chains are not possible we should look into better documenting that.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "16259", "fixedVersions": [], "id": "16259", "issueType": "Improvement", "key": "SERVER-2463", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow importing CRL chains that do not contain all CRLs", "timeSpent": "PT0S", "updated": "2022-03-08T12:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This failed in CI on platforms without PuppetDB:\n{code}\ni43plkbi9h931cs.delivery.puppetlabs.net (debian9-64-1) 20:04:22$ su -l compile-node-one -c '/opt/puppetlabs/bin/puppet agent -t'\n      Info: Creating a new SSL key for compile-node-one\n      Info: Downloaded certificate for ca from i43plkbi9h931cs.delivery.puppetlabs.net\n      Info: csr_attributes file loading from /home/compile-node-one/.puppetlabs/etc/puppet/csr_attributes.yaml\n      Info: Creating a new SSL certificate request for compile-node-one\n      Info: Certificate Request fingerprint (SHA256): 1A:85:D7:86:AC:35:47:E6:06:CF:E9:65:C2:AF:B1:39:CE:B6:EF:45:29:91:43:F7:1D:C5:64:60:FA:5E:F7:2D\n      Info: Downloaded certificate for compile-node-one from i43plkbi9h931cs.delivery.puppetlabs.net\n      Info: Using configured environment 'production'\n      Info: Retrieving pluginfacts\n      Info: Retrieving plugin\n      Info: Retrieving locales\n      Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Could not find terminus puppetdb for indirection facts\n      Warning: Not using cache on failed catalog\n      Error: Could not retrieve catalog", "created": "2019-03-08T09:58:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This has gone green (master is now red for other reasons)", "created": "2019-03-08T17:19:00.000000"}], "components": [], "created": "2019-02-15T10:24:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1817317e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2mn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_92634975_*|*_1_*:*_1_*:*_14759_*|*_10007_*:*_2_*:*_74853181_*|*_3_*:*_3_*:*_696759454_*|*_5_*:*_1_*:*_1555520137_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_975006333"}], "description": "In addition to the basic unit test added as part of SERVER-2437, we should have integration testing for this new endpoint that actually exercises the Ruby code for compiling the catalog, and tests at least the following cases:\n1) Facts supplied in request vs. fetch from PDB\n2) Storing facts and catalogs vs. not saving them\n3) Environment supplied in the request vs. gleaned from the Classifier\n\nThese cover the differences between what our two known use cases for the endpoint need.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "16540", "fixedVersions": ["SERVER 6.3.0"], "id": "16540", "issueType": "Task", "key": "SERVER-2462", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-26T18:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add integration testing for new catalog endpoint", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This isn't showing up on any of our vulnerability scanners anymore, so I'm going to resolve it.", "created": "2022-02-22T18:15:00.000000"}], "components": [], "created": "2019-02-14T16:37:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b0d1561"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzst6n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15403_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_95391421155"}], "description": "Because a security vulnerability, jline needs to be updated to at least 2.12. This requires us to update JRuby, since it is shipped with JRuby. That update is tracked in SERVER-2388.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16911", "fixedVersions": ["SERVER 6.0.z", "SERVER 6.3.z", "SERVER 6.y"], "id": "16911", "issueType": "Task", "key": "SERVER-2461", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2022-02-22T18:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update jline to 2.12 or greater", "timeSpent": "PT0S", "updated": "2022-02-22T18:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-02-13T13:58:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ed25264"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzss5j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2454696_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_96668435829"}], "description": "To let the CA be more configurable in docker environments, I was attempting to set `allow-subject-alt-names: ${PUPPETSERVER_ALLOW_SUBJECT_ALT_NAMES}` in ca.conf.\n\nThis fails with\n{code}\nclojure.lang.ExceptionInfo: Output of config->ca-settings does not match schema:\npuppet_1    |\npuppet_1    |      {:allow-subject-alt-names (not (instance? java.lang.Boolean \"true\"))}\npuppet_1    |\npuppet_1    |\npuppet_1    |   at puppetlabs.puppetserver.certificate_authority$fn__36077$config__GT_ca_settings__36082.invoke(certificate_authority.clj:999)\npuppet_1    |   at puppetlabs.services.ca.certificate_authority_service$reify__40876$service_fnk__4991__auto___positional$reify__40891.init(certificate_authority_service.clj:24)\npuppet_1    |   at puppetlabs.trapperkeeper.services$fn__4815$G__4807__4818.invoke(services.clj:9)\npuppet_1    |   at puppetlabs.trapperkeeper.services$fn__4815$G__4806__4822.invoke(services.clj:9)\n{code}\n\n[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] found: \u201cenvironment variables always become a string value, though if an app asks for another type automatic type conversion would kick in\u201d\n\nThis will also be the case for allow-authorization-extensions and enable-infra-crl.\n\nFrom discussions in Slack, it sounds like we want to update the schema at https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L134-L145 to coerce those variables into booleans.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16070", "fixedVersions": [], "id": "16070", "issueType": "Task", "key": "SERVER-2460", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to set CA configuration using environment variables", "timeSpent": "PT0S", "updated": "2022-03-08T10:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "This should just work if the ace cert is added to the tk-auth rule (allow value can be an array and can mix backreference and literal certname). The report processing in puppet just accepts the passed report instance and doesn't look at where it really comes from.", "created": "2019-02-25T15:21:00.000000"}], "components": [], "created": "2019-02-12T09:58:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e86156"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2m7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11730_*|*_3_*:*_1_*:*_447919306_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_694713649"}], "description": "In addition to compiling catalogs for nodes other than the one making the request, Network Automation ACE compilation also needs to be able to submit reports on behalf of the network devices. Enabling this might be as simple as updating the tk-auth rules around the report endpoint to also allow submissions from the proxy node, but we should verify this, and make any code changes needed to support this if more work is required.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "16258", "fixedVersions": [], "id": "16258", "issueType": "Task", "key": "SERVER-2458", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-02-25T15:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Proxy report submission", "timeSpent": "PT0S", "updated": "2019-02-25T15:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Put my WIP in a gist here: [https://gist.github.com/justinstoller/db1b9b761aa43e55615d787a49b7f9e7]\n\nWill update an actual checkout/branch once [https://github.com/puppetlabs/puppetserver/pull/1979]\u00a0is merged/rebased.", "created": "2019-02-21T14:31:00.000000"}], "components": [], "created": "2019-02-12T09:55:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76cf0cbd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2lz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Subsumed under general docs from the linked epic"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_157789139_*|*_1_*:*_1_*:*_11026_*|*_10007_*:*_1_*:*_688212876_*|*_3_*:*_1_*:*_623108346_*|*_5_*:*_1_*:*_1573781736_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_612855401"}], "description": "The the catalog endpoint accepts a {{persistence}} hash (name possibly TBD) that specifies whether (and how?) to save facts and catalogs after a compile. We need to use the data in this hash to conditionally trigger saving these artifacts. The only specified use case so far is to save them to PuppetDB, needed by the ACE compilation, but not by CD4PE.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "16069", "fixedVersions": ["SERVER 6.3.0"], "id": "16069", "issueType": "Task", "key": "SERVER-2457", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-03-08T12:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Save catalogs and facts based on persistence hash", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-02-11T12:13:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11cb23ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9483"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsqp3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2450_*|*_10009_*:*_1_*:*_48516_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_862849840"}], "description": "(Initial planned release date: 2019-02-20)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-02-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.3.0 Release - 2019-02-20\n", "estimate": "PT0S", "externalId": "16068", "fixedVersions": [], "id": "16068", "issueType": "Task", "key": "SERVER-2456", "labels": [], "originalEstimate": "PT0S", "parent": "24333", "parentSummary": "Puppet Platform 6.3.0 Release - 2019-02-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-02-21T11:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.2.1)", "timeSpent": "PT0S", "updated": "2019-02-21T11:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-02-11T12:13:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@542a7f46"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9483"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsqon:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_27176_*|*_1_*:*_1_*:*_2370_*|*_3_*:*_1_*:*_555984_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_344225235"}], "description": "(Initial planned release date: 2019-02-20)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-02-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.3.0 Release - 2019-02-20\n", "estimate": "PT0S", "externalId": "15454", "fixedVersions": [], "id": "15454", "issueType": "Task", "key": "SERVER-2455", "labels": [], "originalEstimate": "PT0S", "parent": "24333", "parentSummary": "Puppet Platform 6.3.0 Release - 2019-02-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-02-15T11:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.2.1)", "timeSpent": "PT0S", "updated": "2019-02-15T11:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c] has this been done?", "created": "2019-02-14T16:31:00.000000"}, {"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "This one is not necessary, as we will just tag directly from master. I plan on doing that Friday morning, 2/15.", "created": "2019-02-14T17:42:00.000000"}], "components": [], "created": "2019-02-11T12:12:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@160a5644"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9483"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsqof:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2438_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_278953192"}], "description": "(Initial planned release date: 2019-02-20)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-02-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.3.0 Release - 2019-02-20\n", "estimate": "PT0S", "externalId": "15054", "fixedVersions": [], "id": "15054", "issueType": "Task", "key": "SERVER-2454", "labels": [], "originalEstimate": "PT0S", "parent": "24333", "parentSummary": "Puppet Platform 6.3.0 Release - 2019-02-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-02-14T17:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.2.1)", "timeSpent": "PT0S", "updated": "2019-02-14T17:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c] has this been done?", "created": "2019-02-14T16:30:00.000000"}, {"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "Yup! Just now.", "created": "2019-02-14T17:40:00.000000"}], "components": [], "created": "2019-02-11T12:12:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57671120"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9483"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsqo7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2412_*|*_3_*:*_1_*:*_2532038_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_276355526"}], "description": "(Initial planned release date: 2019-02-20)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    (Run ticketmatch in the puppetserver repo WITHOUT the team value specified\n    and in the puppet repo WITH the team \"Server\" to find all applicable tickets)\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-02-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.3.0 Release - 2019-02-20\n", "estimate": "PT0S", "externalId": "14854", "fixedVersions": [], "id": "14854", "issueType": "Task", "key": "SERVER-2453", "labels": [], "originalEstimate": "PT0S", "parent": "24333", "parentSummary": "Puppet Platform 6.3.0 Release - 2019-02-20\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-02-14T17:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.2.1)", "timeSpent": "PT0S", "updated": "2019-02-14T17:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We decided this is actually the correct behavior, since the master should have the full CRL.", "created": "2019-02-12T12:36:00.000000"}], "components": [], "created": "2019-02-07T15:43:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f4ea709"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Inspection"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsoen:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15791_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_420777395"}], "description": "On the CA host, we have a file watcher that syncs the CA's copy of the CRL to the host CRL when it updates (i.e. when something is revoked). However, we are not doing this for the infra CRL, so when that is enabled and something gets revoked, the file watcher service will sync the full CRL instead, overwriting the host's copy of the infra CRL with the full one.\n\nThis isn't terrible, but should be fixed to do the right thing, syncing the infra CRL instead when that feature is enabled.", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "15453", "fixedVersions": [], "id": "15453", "issueType": "Bug", "key": "SERVER-2452", "labels": [], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Fix", "resolutionDate": "2019-02-12T12:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Infra CRL is not properly synced to the hostcrl on revocation", "timeSpent": "PT0S", "updated": "2019-02-12T12:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It would be nice if we make use of https://github.com/puppetlabs/puppet/blob/fdb8a6013e12870eea6c277b20ee1ae74430ebd4/lib/puppet/network/resolver.rb to avoid duplication here, but one of the key design pieces of this new CLI was to avoid loading Puppet (to make it significantly faster). So even if we can't use that directly, something similar is probably what we'll need to make this work. See how the lookup is actually performed in Puppet here: https://github.com/puppetlabs/puppet/blob/fdb8a6013e12870eea6c277b20ee1ae74430ebd4/lib/puppet/rest/route.rb#L52-L66", "created": "2019-03-13T15:18:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Even better you could do, and it will resolve based on srv or settings, and soon server_list.\n\n{code:ruby}\nrequire 'puppet'\nclient = Puppet::HTTP::Client.new(..)\nsession = client.create_session\nca = session.route_to(:ca)\ncert = ca.get_certificate('ca')\n{code}", "created": "2019-11-21T17:32:00.000000"}], "components": ["CLI"], "created": "2019-02-06T06:36:00.000000", "creator": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@db6c413"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:i"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Mar/19"}], "description": "*Puppet Version: 6.2.0*\n*Puppet Server Version: 6.2.0*\n*OS Name/Version:Debian Stretch/9*\n\npuppetserver ca cli does not use the srv records to determine the puppet ca\nDefine use_srv_records = true in the config, do not specify the puppet_ca\n\n*Desired Behavior:*\nConnect to the correct puppetca server using dns SRV records\n\n*Actual Behavior:*\nTries to connect to puppet:8140 ignoring SRV records and using default (unconfigured) ca server.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "17186", "fixedVersions": [], "id": "17186", "issueType": "Bug", "key": "SERVER-2451", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver ca subcommands do not use srv_records", "timeSpent": "PT0S", "updated": "2022-03-09T09:09:00.000000", "votes": "7", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Note that the Ruby implementation of type system allows a Variant to be defined with an Array of types.", "created": "2019-02-05T10:45:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I think this is the Java implementation of type parsing that does not support this quirk. Ping [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d].", "created": "2019-02-05T11:03:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], even if the Variant would accept being defined with an array of types (which I have a hard time understanding the motivation behind), that's not what's going on here. {{Variant[String,[Array[String]]]}} actually uses a mix of types and array of types. Why that would be accepted is beyond me. What's the significance of having the second argument in an array?\n\nThe fact that putting things in arrays actually have meaningful significance in other places (like Callable) makes this lenience worse.", "created": "2019-02-05T14:40:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Well, allowed or not - it should be the same in puppet and in the Java impl. If we decide to change it in the Ruby impl, we need to deprecate it and wait until a major version boundary. Meanwhile, the Java impl should not crash.\n\nI think this comes from {{Variant[X, Variant[T, V]]}} being allowed, and supporting an array of types and taking that as the equivalence of a Variant is not really that strange.\n\n", "created": "2019-02-05T14:48:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "The {{Variant[X, Variant[T, V]]}} is not strange (although somewhat redundant). It's the mix of elements and array of elements that's strange. I consider that a bug in the Ruby implementation and I'm reluctant to introduce the same bug on other platforms, just because. It would mean that more errors will sneak in and that we then need to deprecate it there too. To what avail? IIRC, this bug it's not documented behavior.\n\nHow about deprecating it in Ruby and just leave Java as is? That way we don't acknowledge that this is correct.", "created": "2019-02-05T14:58:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "Also, as I said before. Consider places where we actually allow mixes of elements and array of elements and do that for a purpose:\n{code:java}\nCallable[[String, Integer],Integer] \n{code}\nversus\n{code}\nCallable[String,Integer,Integer]\n{code}\nThe first one denotes a callable that takes a String and an Integer parameter and returns an Integer. The second takes String, Integer, and Integer parameters and returns Any.\n", "created": "2019-02-05T15:02:00.000000"}, {"author": "557058:e6726ff0-7a50-486d-b5db-41043ba64e4d", "body": "I am honestly not sure how I ended up with that extraneous set of square brackets. I could certainly side with deprecating this otherwise \"bad\" behavior.", "created": "2019-02-05T22:42:00.000000"}, {"author": "5e3375e183d74c0e821851f3", "body": "This error comes up and can be difficult to diagnose. An initial step may be to introduce some better error message that points at the offending code. \n\nThis can be reproduced with the following.\n\n{code}\nOptional[Hash[String[1]]] $options = undef,\n{code}\n\nThe above is not valid since `Hash` expect either no parameters or at least two. The puppet parser did not catch this either.", "created": "2020-12-21T13:04:00.000000"}, {"author": "5caf5082c75c532928c11f7b", "body": "I think the acceptance criteria should be updated to the following:\n\nAny code that causes Puppetserver's parser to fail should also:\n* Generate a user-visible error message pointing to the offending code, or\n* Also fail a standard code-checker such as [puppet parser validate|https://puppet.com/docs/puppet/latest/man/parser.html] or [puppet-lint|https://puppet-lint.com].", "created": "2020-12-21T13:20:00.000000"}], "components": [], "created": "2019-02-05T07:51:00.000000", "creator": "557058:e6726ff0-7a50-486d-b5db-41043ba64e4d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Code that passes puppet parser validate, and is otherwise correct should not cause PuppetServer's parser to fail."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@761d6263"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91ic"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "40532,42498,44133,48430,51105"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Feb/19"}], "description": "*Puppet Version: 2018.1.5*\n *Puppet Server Version:\u00a0pe-puppetserver-2018.1.0.88-1.el7.noarch*\n *OS Name/Version: RHEL 7.6*\n\nDescribe your issue in as much detail as possible\u2026\n\nPuppet Code with a parameter like:\n{code:java} Variant[String,[Array[String]]] $provisioning_api_certs = [],{code}\n\u00a0\n\nWill cause an API call to /puppet/v3/environment_classes to give a 500 error.\n\nDescribe steps to reproduce\u2026\n\nHave puppet code containing a parameter like the one above deployed, try API call.\n\n*Desired Behavior: correct response from API*\n\n*Actual Behavior: Error 500*\n\n\u00a0\n\n\u00a0\n{code:java}HTTP ERROR 500Problem accessing /puppet/v3/environment_classes.Reason:    Server ErrorCaused by:clojure.lang.ExceptionInfo: Output of manifest-info-from-jruby->manifest-info-for-json does not match schema: {:classes [{:params [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil {:type (not (instance? java.lang.String nil))}]}]} {:type :schema.core/error, :schema (conditional puppetlabs.services.master.master-core/fn--50248 {:path Str, :error Str} puppetlabs.services.master.master-core/fn--50250 {:path Str, :classes [{:name Str, :params [{:name Str, (optional-key :type) Str, (optional-key :default_source) Str, (optional-key :default_literal) Any}]}]}), :value {:classes ({:name \"profile::puppet::master\", :params ({:default_literal \"https://artifactory.company.com/artifactory/api/gems/RubyGems/\", :default_source \"'https://artifactory.company.com/artifactory/api/gems/RubyGems/'\", :name \"artifactory_gem_proxy\", :type \"String\"} {:default_literal \"puppet:///modules/profile/license.key\", :default_source \"'puppet:///modules/profile/license.key'\", :name \"key_source\", :type \"String\"} {:default_literal \"DefaultPassword\", :default_source \"'DefaultPassword'\", :name \"puppet_autosign_secret\", :type \"String\"} {:default_source \"undef\", :name \"console_sslcert_content\", :type \"Optional[String]\"} {:default_source \"undef\", :name \"console_sslkey_content\", :type \"Optional[String]\"} {:default_literal \"/backup\", :default_source \"'/backup'\", :name \"backup_root\", :type \"Optional[String]\"} {:default_literal 14, :default_source \"14\", :name \"backup_keep_days\", :type \"Integer[1, 99]\"} {:default_literal (8140 8142), :default_source \"[8140, 8142]\", :name \"puppet_ports\", :type \"Array[Integer]\"} {:default_literal (\"0.0.0.0/0\"), :default_source \"['0.0.0.0/0']\", :name \"puppet_access\", :type \"Array[String]\"} {:default_literal (80 443), :default_source \"[80, 443]\", :name \"console_ports\", :type \"Array[Integer]\"} {:default_literal (\"0.0.0.0/0\"), :default_source \"['0.0.0.0/0']\", :name \"console_access\", :type \"Array[String]\"} {:default_literal (4433 8081 8143 8170), :default_source \"[4433, 8081, 8143, 8170]\", :name \"backend_ports\", :type \"Array[Integer]\"} {:default_literal (\"0.0.0.0/0\"), :default_source \"['0.0.0.0/0']\", :name \"backend_access\", :type \"Array[String]\"} {:default_literal (\"bitbucket.company.com\"), :default_source \"['bitbucket.company.com']\", :name \"git_sources\", :type \"Array[String]\"} {:default_literal (\"artifactory.company.com\"), :default_source \"['artifactory.company.com']\", :name \"forge_sources\", :type \"Array[String]\"} {:default_source \"lookup('puppet_enterprise::profile::master::metrics_graphite_host')\", :name \"graphite_host\", :type \"Optional[String]\"} {:default_source \"lookup('puppet_enterprise::profile::master::metrics_graphite_port', Integer, 'first', 2003)\", :name \"graphite_port\", :type \"Optional[Integer]\"} {:default_literal \"10.9.46.0/24\", :default_source \"'10.9.46.0/24'\", :name \"nfs_host\", :type \"Optional[String]\"} {:default_literal (), :default_source \"[]\", :name \"provisioning_api_certs\", :type nil})}), :path \"/etc/puppetlabs/code/environments/logging_dev/site/profile/manifests/puppet/master.pp\"}, :error {:classes [{:params [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil {:type (not (instance? java.lang.String nil))}]}]}}\n\tat puppetlabs.services.master.master_core$eval50325$manifest_info_from_jruby__GT_manifest_info_for_json__50330.invoke(master_core.clj:250)\n\tat clojure.core$map$fn__4785.invoke(core.clj:2644)\n\tat clojure.lang.LazySeq.sval(LazySeq.java:40)\n\tat clojure.lang.LazySeq.seq(LazySeq.java:49)\n\tat clojure.lang.ChunkedCons.chunkedNext(ChunkedCons.java:59)\n\tat clojure.lang.ChunkedCons.next(ChunkedCons.java:43)\n\tat clojure.lang.RT.length(RT.java:1741)\n\tat clojure.lang.RT.seqToArray(RT.java:1682)\n\tat clojure.lang.LazySeq.toArray(LazySeq.java:130)\n\tat clojure.lang.RT.toArray(RT.java:1655)\n\tat clojure.core$to_array.invokeStatic(core.clj:344)\n\tat clojure.core$sort.invokeStatic(core.clj:3004)\n\tat clojure.core$sort_by.invokeStatic(core.clj:3010)\n\tat clojure.core$sort_by.invokeStatic(core.clj:3010)\n\tat clojure.core$sort_by.invoke(core.clj:3010)\n\tat puppetlabs.services.master.master_core$eval50349$class_info_from_jruby__GT_class_info_for_json__50354$fn__50355.invoke(master_core.clj:276)\n\tat puppetlabs.services.master.master_core$eval50349$class_info_from_jruby__GT_class_info_for_json__50354.invoke(master_core.clj:262)\n\tat puppetlabs.services.master.master_core$eval50424$environment_class_response_BANG___50431$fn__50432.invoke(master_core.clj:325)\n\tat puppetlabs.services.master.master_core$eval50424$environment_class_response_BANG___50431.invoke(master_core.clj:299)\n\tat puppetlabs.services.master.master_core$eval50585$environment_class_info_fn__50592$fn__50593$fn__50594.invoke(master_core.clj:443)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_jruby_instance$fn__50023.invoke(jruby_request.clj:48)\n\tat puppetlabs.services.master.master_core$eval50826$wrap_with_etag_check__50833$fn__50834$fn__50835.invoke(master_core.clj:609)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_environment_validation$fn__50063.invoke(jruby_request.clj:111)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_error_handling$fn__50019.invoke(jruby_request.clj:33)\n\tat puppetlabs.services.master.master_core$eval51064$v3_clojure_routes__51071$fn__51072$fn__51073.invoke(master_core.clj:774)\n\tat ring.middleware.params$wrap_params$fn__24923.invoke(params.clj:64)\n\tat puppetlabs.trapperkeeper.authorization.ring_middleware$eval26181$wrap_authorization_check__26190$fn__26193$fn__26194.invoke(ring_middleware.clj:284)\n\tat puppetlabs.ring_middleware.core$eval24756$wrap_bad_request__24765$fn__24768$fn__24774.invoke(core.clj:170)\n\tat puppetlabs.ring_middleware.core$eval24854$wrap_uncaught_errors__24863$fn__24866$fn__24871.invoke(core.clj:216)\n\tat puppetlabs.ring_middleware.core$eval24481$wrap_request_logging__24486$fn__24487$fn__24489.invoke(core.clj:47)\n\tat puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n\tat puppetlabs.ring_middleware.core$eval24510$wrap_response_logging__24515$fn__24516$fn__24517.invoke(core.clj:53)\n\tat puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__26712.invoke(ringutils.clj:83)\n\tat bidi.ring$eval20017$fn__20018.invoke(ring.cljc:25)\n\tat bidi.ring$eval19996$fn__19997$G__19987__20006.invoke(ring.cljc:16)\n\tat puppetlabs.comidi$make_handler$fn__22127.invoke(comidi.clj:245)\n\tat puppetlabs.metrics.http$eval50188$wrap_with_request_metrics__50193$fn__50197$fn__50199$fn__50200$fn__50201.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$eval50188$wrap_with_request_metrics__50193$fn__50197$fn__50199$fn__50200.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$eval50188$wrap_with_request_metrics__50193$fn__50197$fn__50199.invoke(http.clj:148)\n\tat puppetlabs.comidi$eval22188$wrap_with_route_metadata__22193$fn__22194$fn__22196.invoke(comidi.clj:332)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__47739.invoke(jetty9_core.clj:433)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n\tat sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$eval47315$normalize_uri_handler__47320$fn__47321$fn__47322.invoke(normalized_uri_helpers.clj:74)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\n\tat org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724)\n\tat org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n\tat com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n\tat org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:531)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n\tat org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:291)\n\tat org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:151)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)\n\tat java.lang.Thread.run(Thread.java:748) {code}\n\u00a0\nh2. Workaround:\n\nA simple workaround is to reformat the type to not have the extra set of square brackets. Such as:\n{code:java} Variant[String,Array[String]] $provisioning_api_certs = [], {code}\n\u00a0\n\nThis may be related to PDK-1176.\n\n\u00a0", "environment": "RHEL 7.6, PE 2018.1.5", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "17185", "fixedVersions": [], "id": "17185", "issueType": "Bug", "key": "SERVER-2450", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e6726ff0-7a50-486d-b5db-41043ba64e4d", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Error 500 parsing certain parameters on /puppet/v3/environment_classes", "timeSpent": "PT0S", "updated": "2023-02-16T03:06:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Not sure yet if we actually want to merge this back in anywhere, as opposed to just doing this logic as part of facts handling. We can see once SERVER-2444 is more complete what refactor makes sense.", "created": "2019-02-12T10:00:00.000000"}, {"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "As long as we avoid using the {{find}} for this new endpoint, I think we don't need to do this work.", "created": "2019-02-21T12:17:00.000000"}], "components": [], "created": "2019-01-30T13:08:00.000000", "creator": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fb71a8b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2lr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_790368972_*|*_3_*:*_1_*:*_178646387_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_928697580"}], "description": "The Cdpe class has some functionality to use puppetdb trusted facts; this should be merged back into classifier, possibly back into the irving branch.\n\nRelevant code block not utilized in CD4PE: https://github.com/puppetlabs/puppetlabs-cd4pe/blob/master/lib/puppet/indirector/node/cdpe.rb#L70-L78\n\nThe ^^ file has a link to the classifier class it copies from.\n\nThat code block will probably need to read a parameter on the request object to determine whether or not to read in trusted facts from puppetdb.\n", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "15452", "fixedVersions": [], "id": "15452", "issueType": "Task", "key": "SERVER-2448", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "resolution": "Won't Do", "resolutionDate": "2019-02-21T12:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge Puppet::Node::Cdpe trusted_fact behavior back into Puppet::Node::Classifier ", "timeSpent": "PT0S", "updated": "2019-02-21T12:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "As stated in the description, our default and recommended MRPI is much higher than the pathological case described here, and it's unlikely we'll get to this investigation any time soon. Closing, can reopen if this comes up again.", "created": "2022-02-22T14:55:00.000000"}], "components": [], "created": "2019-01-29T14:48:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b6fe9c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsg67:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Feb/22"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21168797428_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_75599597136"}], "description": "Users have seen pathalogical memory consumption when compile-mode is set to JIT and MRPI is 400. Potential memory leak. Broken out as a separate ticket because there's docs work we should do immediately but this ticket may take some time and is lower priority since our recommendation is an MRPI of 100k and we'd love to get rid of MRPI completely in the future.\n\nSee full discussion in\u00a0SERVER-2307, this ticket should have the description updated when we actually are ready to work on this.", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "16539", "fixedVersions": [], "id": "16539", "issueType": "Improvement", "key": "SERVER-2447", "labels": [], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Fix", "resolutionDate": "2022-02-22T14:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate potential memory leak in JRuby when MRPI is low", "timeSpent": "PT0S", "updated": "2022-02-22T14:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Did we ever do this?", "created": "2019-10-01T16:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't think so.", "created": "2019-10-01T17:01:00.000000"}], "components": ["DOCS"], "created": "2019-01-29T14:43:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@97eb903"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsg5z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21169050590_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76797495306"}], "description": "In Puppet Server 5.3.x we upgrade 9k's default compile-mode to be just-in-time (JIT) - per JRuby best practices. However, for users with a low max-requests-per-instance (MRPI) configured this can cause serious problems.\n\nIt is currently unknown if this is a memory leak when destroying instances that are still compiling/optimizing (either because of how we're shutting down instances, or in JRuby itself), or some way these are interacting.\n\nHowever users who have an MRPI that is lower than enough requests for a 100 (W.A.G.) agent runs (where an agent run produces at least 6 requests + 1 to 3 requests per file resource) may have performance and/or memory problems that would be alleviated by turning compile-mode to off ({{jruby-puppet.compile-mode: off}}). Note: recommended MRPI is 100k.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16067", "fixedVersions": [], "id": "16067", "issueType": "Improvement", "key": "SERVER-2446", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document issues between JIT and low MRPI.", "timeSpent": "PT0S", "updated": "2022-03-08T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This seems fairly straightforward for the case where all info comes in with the request. The work for this is included on https://github.com/puppetlabs/puppetserver/pull/1968.\n\nI think it makes sense to file a separate ticket for figuring out the best way to fetch information from the Classifier, and we already have SERVER-2444 for figuring out the details of getting facts.", "created": "2019-02-12T09:41:00.000000"}], "components": [], "created": "2019-01-28T19:07:00.000000", "creator": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e68118d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1nb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_159890643_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1102213215"}], "description": "Given the proposed inputs for the for the catalog endpoint, Puppet should be able to create a node object directly, and not rely on {{Node.indirection.find}}. This is to allow {{Puppet::Parser::Compile.compile}} to be called directly, without relying on a Catalog.indirection.find to call it.\n\n", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "15053", "fixedVersions": [], "id": "15053", "issueType": "Task", "key": "SERVER-2445", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "resolution": "Done", "resolutionDate": "2019-02-12T09:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Directly generate a Puppet::Node object for compilation", "timeSpent": "PT0S", "updated": "2019-02-12T09:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Constructing a Facts object from the data in the request, munging its contents, and passing it along to a Node object for use in catalog compilation seems to be straightforward.\n\nThere is a lot of code in the PuppetDB terminus around finding the right URL for PuppetDB and doing data manipulation. Specifically for querying facts, we might be able to replicate the simplest parts of this, but do avoid code duplication, it might make more sense to try to instantiate the terminus directly, so that we still avoid the global state of the indirector configuration, but still use the code that is already written and tested.", "created": "2019-02-12T09:39:00.000000"}], "components": [], "created": "2019-01-28T18:51:00.000000", "creator": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a7ddc72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1n3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_8034_*|*_1_*:*_1_*:*_160757821_*|*_10007_*:*_1_*:*_282545425_*|*_3_*:*_1_*:*_1883379793_*|*_5_*:*_1_*:*_2503552726_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_89338965_*|*_10005_*:*_1_*:*_4004"}], "description": "CD4PE's implementation utilized the {{indirector}} to set a facts terminus to :{{puppetdb}} for a {{Catalog.find}}. In an effort to minimize use of the {{indirector}}, facts should be collected in a single method and then passed to further execution as necessary.\n\nIf facts are supplied in the body, process those facts so they can be passed as an option for Puppet::Node.new. Otherwise, request facts for the certname required from puppetdb...or maybe just whatever the backend is defined for facts by Puppet?", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "17457", "fixedVersions": ["SERVER 6.3.0"], "id": "17457", "issueType": "Task", "key": "SERVER-2444", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "resolution": "Fixed", "resolutionDate": "2019-03-26T18:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Process facts from request body or request from puppetdb", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It does seem to be possible to supply a node object directly to Puppet::Parser::Compiler. I'm working now on figuring out how to correctly plumb the compiled catalog back up through to the Clojure to be returned in the request response.", "created": "2019-02-12T09:36:00.000000"}, {"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "This work has been defined in SERVER-2437 and SERVER-2444. Closing as not needed.", "created": "2019-02-14T12:52:00.000000"}], "components": [], "created": "2019-01-28T18:38:00.000000", "creator": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30f7cce0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1mv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_162256630_*|*_3_*:*_1_*:*_1279939041_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5834491"}], "description": "The JRubyHandler class in CD4PE includes the {{Puppet::Server::Network::HTTP::Handler}} module to call {{process}} on a request hash that comes from TK. This code path is unnecessary because TK has already processed the request, and so processing the request again through the ruby network stack can be avoided.\n\nThe {{master.rb}} file defines a handleRequest method that also include {{Puppet::Server::Network::HTTP::Handler}}, so it is possible that we will need to define a new method and/or class to skip the network stack from the Puppet::Server::Master class.\n\nAnother element of the solution might be to require the compiler in the master class, so that Puppet::Parser::Compiler class could be called directly.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "17184", "fixedVersions": [], "id": "17184", "issueType": "Task", "key": "SERVER-2443", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "resolution": "Duplicate", "resolutionDate": "2019-02-14T12:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Define method for entry into the puppet ruby code", "timeSpent": "PT0S", "updated": "2019-02-14T12:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:e0389099-cc54-4f97-bd2a-7fa4735554bd] does this sound like something that would help this situation? https://puppet.atlassian.net/browse/PUP-8014", "created": "2019-10-04T09:16:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Going to close this, as I think we're unlikely to do it. Recommend using {{environment_ttl}} to get the best of both flushing little-used envs and caching frequently used ones indefinitely.", "created": "2022-02-22T18:04:00.000000"}], "components": ["Puppet Server"], "created": "2019-01-28T04:51:00.000000", "creator": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c3ddd5c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzselj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_35184928931_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_61717009828"}], "description": "In our setup, rather than just having a single Puppet environment \"production\" we have multiple environments that ultimately correspond to VCS tags, and machines are moved from environment to environment to promote them to the desired version. Old environments are deleted to leave the latest N available.\n\nBecause an environment derived from a tag should never (rarely) change, we have historically set the `environment_timeout` setting to `unlimited` for any such environment, leaving it with a default of `0` for development-type environments that change frequently.\n\nWe have noticed that Puppet doesn't seem to bound the environment cache in any way or expire anything such that if you create many environments all with unlimited caching, Puppet uses all of the heap trying to satisfy that, the symptom is the GC log contains nothing but \"Full GC\" messages and the performance drops to a crawl.\n\nHistorically before I figured out the cause, restarting the Puppet server would restore performance (as it was clearing the cache out) and now I have verified that using the `https://puppet:8140/puppet-admin-api/v1/environment-cache` API endpoint has the same effect.\n\nCan the environment cache size be visualized somehow with current metrics?\n\nThat would be useful in some respects, however IMO the environment cache should also be bounded to prevent it growing too big WRT the heap and maybe also operate some sort of LRU expiry such that space can be reclaimed by dropping the least-used environment(s) regardless of the timeout setting. Having extra metrics available to indicate the cache is either too small or is being thrashed by constant purging (f.ex. the cache can fit five environments but you have six live, etc.) would help here.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15946", "fixedVersions": [], "id": "15946", "issueType": "Bug", "key": "SERVER-2442", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "resolution": "Won't Do", "resolutionDate": "2022-02-22T18:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Environment cache grows unbounded", "timeSpent": "PT0S", "updated": "2022-02-22T18:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:63d40628f6e1b543161789a7] what branches would you like us to target for this? And does this need to be done urgently (as in, is it blocking other work?) or just \"for the next release\"?", "created": "2019-01-25T10:38:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I think next release is fine", "created": "2019-01-25T12:51:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "From [~accountid:623e754d94742a00683f7cf0], \"Should we return fingerprints in the error message to indicate which CSRs are involved in the conflict?\"", "created": "2019-01-25T14:06:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Feel free to close this if you want, or file it away for future improvement. We ended up not needing it for 6.4.", "created": "2019-03-21T16:15:00.000000"}], "components": [], "created": "2019-01-25T10:34:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Server returns 200 when it receives an agent CSR request that exactly matches the CSR it already has saved for that certname."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6277492f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-6828"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1mn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14937_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1213688828_*|*_10005_*:*_1_*:*_3897750115"}], "description": "Currently, if a server has a CSR on file for a given certname, and the agent submits a second one, the server will respond with a 400, regardless of whether the two CSRs are the same or different. This means that the agent can't tell whether the CSR the server has matches its current private keys or not, and therefore doesn't know whether it should continue waiting for a cert matching its keys, or clear state and start over, as it should if the server has a CSR that doesn't match the current state (because in this case the cert the server would sign would not be valid for the agent).\n\nWe should update the way the server responds to CSR requests to distinguish these two cases:\n1) if the CSRs match exactly, return 200 as a no-op server-side, and the agent can just proceed as if no previous CSR had been submitted.\n2) if the CSRs do not match, return 409 Conflict, to allow the agent to tell the user that the server has an invalid CSR that needs to be cleaned out before cert bootstrapping can continue.\n\nThis change should be backwards compatible, because the agent currently proceeds on a 200 and raises the server's error on anything else. This change would essentially mean we are just returning 200 in more cases than previously.", "epicLinkSummary": "Simplify agent SSL initialization", "estimate": "PT0S", "externalId": "17183", "fixedVersions": ["SERVER 6.y"], "id": "17183", "issueType": "Improvement", "key": "SERVER-2441", "labels": [], "originalEstimate": "PT0S", "parent": "20715", "parentSummary": "Simplify agent SSL initialization", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2019-03-25T15:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Return 200 when server already has agent's CSR", "timeSpent": "PT0S", "updated": "2019-03-25T15:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Sorry there is not enough information here to understand the problem.\n\nAlso Puppet 3.8 is 3 years past its End of Life date. Please try upgrading to the latest version.", "created": "2019-01-22T15:37:00.000000"}], "components": [], "created": "2019-01-22T07:48:00.000000", "creator": "623c0e91d32a94006a6496c0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "should apply my class."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13b56216"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsb3r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_28160021_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:*\u00a03.8.7-1.el7.noarch\n\n***Puppet Server Version:*\u00a03.8.4-1.el7.noarch\n\n**\n *OS Name/Version: Centos*\u00a07 \u2013 3.10.0-862.el7.x86_64\n\nI am getting below error message in puppet agent .\n\n\"Collect\" method undefined Centos 7 client.\n\nDebug: Failed to load library 'msgpack' for feature 'msgpack'\n\nDebug: Puppet::Network::Format[msgpack]: feature msgpack is missing\n\nDebug: catalog supports formats: pson b64_zlib_yaml yaml dot raw\n\nDebug: Using cached connection for [https://test.example.com:8140|https://devops2.lab3.bitgravity.com:8140/]\n\nDebug: Caching connection for [https://test.example.com:8140|https://devops2.lab3.bitgravity.com:8140/]\n\n*Error: Could not retrieve catalog from remote server: Error 400 on SERVER: undefined method `collect' for \"class_baseng\":String on node test.example.com*\n\n*/usr/share/ruby/vendor_ruby/puppet/indirector/rest.rb:207:in `is_http_200?'*\n\n*/usr/share/ruby/vendor_ruby/puppet/indirector/rest.rb:100:in `find'*\n\n*/usr/share/ruby/vendor_ruby/puppet/indirector/indirection.rb:201:in `find'*\n\n*/usr/share/ruby/vendor_ruby/puppet/configurer.rb:294:in `block in retrieve_new_catalog'*\n\n*/usr/share/ruby/vendor_ruby/puppet/util.rb:335:in `block in thinmark'*\n\n*/usr/share/ruby/benchmark.rb:296:in `realtime'*\n\n*/usr/share/ruby/vendor_ruby/puppet/util.rb:334:in `thinmark'*\n\n*/usr/share/ruby/vendor_ruby/puppet/configurer.rb:293:in `retrieve_new_catalog'*\n\n*/usr/share/ruby/vendor_ruby/puppet/configurer.rb:61:in `retrieve_catalog'*\n\n*/usr/share/ruby/vendor_ruby/puppet/configurer.rb:106:in `prepare_and_retrieve_catalog'*\n\n*/usr/share/ruby/vendor_ruby/puppet/configurer.rb:202:in `run_internal'*\n\n*/usr/share/ruby/vendor_ruby/puppet/configurer.rb:134:in `block in run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/context.rb:64:in `override'*\n\n*/usr/share/ruby/vendor_ruby/puppet.rb:246:in `override'*\n\n*/usr/share/ruby/vendor_ruby/puppet/configurer.rb:133:in `run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/agent.rb:47:in `block (4 levels) in run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/agent/locker.rb:20:in `lock'*\n\n*/usr/share/ruby/vendor_ruby/puppet/agent.rb:47:in `block (3 levels) in run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/agent.rb:117:in `with_client'*\n\n*/usr/share/ruby/vendor_ruby/puppet/agent.rb:44:in `block (2 levels) in run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/agent.rb:82:in `run_in_fork'*\n\n*/usr/share/ruby/vendor_ruby/puppet/agent.rb:43:in `block in run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/application.rb:179:in `call'*\n\n*/usr/share/ruby/vendor_ruby/puppet/application.rb:179:in `controlled_run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/agent.rb:41:in `run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/application/agent.rb:361:in `onetime'*\n\n*/usr/share/ruby/vendor_ruby/puppet/application/agent.rb:327:in `run_command'*\n\n*/usr/share/ruby/vendor_ruby/puppet/application.rb:381:in `block (2 levels) in run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/application.rb:507:in `plugin_hook'*\n\n*/usr/share/ruby/vendor_ruby/puppet/application.rb:381:in `block in run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/util.rb:496:in `exit_on_fail'*\n\n*/usr/share/ruby/vendor_ruby/puppet/application.rb:381:in `run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:146:in `run'*\n\n*/usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:92:in `execute'*\n\n*/usr/bin/puppet:8:in `<main>'*\n\n*Warning: Not using cache on failed catalog*\n\n*Error: Could not retrieve catalog; skipping run*\n\n*ruby version :*\u00a02.0.0.648-34.el7_6.x86_64\n\n*Desired Behavior: should apply my class*\n\n*Actual Behavior: above error message appear like method undefine \"collect\"*\n\nExamples:\n Run puppet agent with --test --trace --debug\n\n/var/log/messages\u00a0\n\nJan 22 05:26:24 test puppet-master[32162]: undefined method `collect' for \"class_base\":String on node test.example.com\n\n\u00a0\n\nClassfier script execution output:\n\n*classes: class_baseng*\n\n*environment: production*\n\n*parameters:*\n\n\u00a0 *bg_param1:*\n\n\u00a0 \u00a0 *clusters: {}*", "environment": "production", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16538", "fixedVersions": [], "id": "16538", "issueType": "Bug", "key": "SERVER-2439", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0e91d32a94006a6496c0", "resolution": "Cannot Reproduce", "resolutionDate": "2019-01-22T15:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "undefined method 'collect' error", "timeSpent": "PT0S", "updated": "2019-01-22T15:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The skeleton is mostly done at this point, but needs tests before this ticket can be resolved.", "created": "2019-02-12T09:35:00.000000"}], "components": [], "created": "2019-01-18T11:59:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* A working catalog endpoint in puppetserver that accepts a certname different from the authenticating certificate and returns dummy data for that certname"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73728069"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1gv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_93052266_*|*_1_*:*_1_*:*_10337_*|*_10007_*:*_1_*:*_79177270_*|*_3_*:*_1_*:*_1817541634_*|*_5_*:*_1_*:*_436931171_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_427599511"}], "description": "While we are finding out what Ruby code to call and the details of the API schema, we should build out the trapperkeeper skeleton of the new catalog compilation endpoint and have it return some dummy data, so that we can start playing with it and making sure it meets people's criteria. This will probably also give us a better idea of where the boundary between Ruby and Clojure should be.\n\nAs part of this, we should make a first pass at the tk-auth rules around it and make sure the authentication model makes sense and works.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "17182", "fixedVersions": ["SERVER 6.2.1"], "id": "17182", "issueType": "Task", "key": "SERVER-2437", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-02-20T12:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Build TK skeleton for new catalog endpoint", "timeSpent": "PT0S", "updated": "2019-02-20T12:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Email drafted. Once it has been approved by the consumers, I'll look into updating docs around this. Readme driven development :)", "created": "2019-01-29T12:56:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "For now, we have settled on:\n\nPOST /puppet/v4/catalog\nBody:\n{ certname: \"<name of catalog to be compiled>\",\n  persistence: { facts: <true/false>, catalogs: <true/false> }\n  [trusted_facts: { values: { ... } }],\n  [facts: { values: { ... } }],\n  [environment: { name: \"<environment name>\" }],\n  [classes: [ ... ]],\n  [parameters: { ... }],\n}\n\nThe idea here is to introduce a new version of the \"catalog\" API. For the proxy requests needed for these use cases, no certname is provided is part of the route, and all the data is instead supplied in the body. Since we intend to trigger the compilation in a new, cleaner way than the existing \"/v3/catalog\" endpoint, we would like the ability to move that one to \"/v4\" in the future, and keeping \"node requesting its own catalog\" as the only one that provides the certname in the URL gives us the ability to secure the two versions differently in tk-auth (which checks only the URL itself to find matching rules).", "created": "2019-01-31T09:54:00.000000"}], "components": [], "created": "2019-01-18T11:55:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7037401b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1h3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10815_*|*_10007_*:*_1_*:*_42683_*|*_3_*:*_2_*:*_507291545_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_608566377"}], "description": "We need to check in with CD4PE and Network Automation and see if they have any hard requirements around the format of the catalog endpoint they need, to make sure that we design something they can use, and also that they can use something similar, because ideally we would like to ship just one endpoint that they both can use.\n\nThis definition should include:\n1) URL format\n2) Query params\n3) Required headers\n4) Repsonse format", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "16907", "fixedVersions": [], "id": "16907", "issueType": "Task", "key": "SERVER-2436", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-01-31T09:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Define API schema for new catalog endpoint", "timeSpent": "PT0S", "updated": "2019-02-22T12:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "Tickets have been created outlining the general strategy for this. Instead of using {{Catalog.find}}, use the compiler class method directly to circumvent the indirection workflow, and generate node and fact objects independently. All the tickets are in the [flexible catalog compilation|https://puppet.atlassian.net/browse/SERVER-2434] epic.", "created": "2019-01-31T10:39:00.000000"}], "components": [], "created": "2019-01-18T11:27:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Write up on how catalog compilation may be invoked in Ruby code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5aaea78f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2434"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1gn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1544751_*|*_3_*:*_1_*:*_687832724_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_430943108"}], "description": "In order to make an informed decision about how much of the indirector we need to use to effect a catalog compilation, we need to do some spelunking in the Ruby code to find out what the entry points to the compiler are and how various options can be passed to them. This will help us decide where to put the boundary between Ruby and Clojure code for the new endpoints.\n\nSince ultimately we would all like to be able to stop using the indirector in Puppet, the main goal here is figuring out entry points _other_ than {{Catalog.find}}.", "epicLinkSummary": "Flexible catalog compilation", "estimate": "PT0S", "externalId": "16257", "fixedVersions": [], "id": "16257", "issueType": "Task", "key": "SERVER-2435", "labels": [], "originalEstimate": "PT0S", "parent": "15727", "parentSummary": "Flexible catalog compilation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-01-31T10:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate ways to trigger a compile in Puppet code", "timeSpent": "PT0S", "updated": "2019-01-31T10:39:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5f9905b462584c006bd65363", "body": "Hey folks - not sure if this is the right place for this, but it'd be great if [https://forge.puppet.com/puppetlabs/catalog_preview]\u00a0could be updated to use these new endpoints, since its purpose is also to generate and inspect catalogs for arbitrary nodes and it's currently broken due to deprecations in 5.5 and 6.0.\u00a0 We're stretching to find a tool that actually works current versions to replicate functionality that was readily available for our upgrade from 3 to 4.\u00a0:(", "created": "2019-02-07T17:16:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think that this will probably give you what you need! We're shipping this endpoint in open source, so it should be available for you. It'd be great if we could solve even more problems with this work :)", "created": "2019-02-07T17:24:00.000000"}, {"author": "5f9905b462584c006bd65363", "body": "Great, thanks [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]! Just to clarify, the catalog_preview module is a project on here, I've opened a couple issues at https://puppet.atlassian.net/browse/PRE-144\u00a0and https://puppet.atlassian.net/browse/PRE-146\u00a0with the compatibility issues I've run into on newer versions in the hopes that it can be brought back to functional, but it's beyond my skills to dig quite that deep in the ruby indirectors. In any case, I'm excited for this endpoint to enable some really useful tools - being able to override the trusted hash for compilation testing is going to solve a problem we've run into - thanks a lot!", "created": "2019-02-07T17:44:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This endpoint worked with minimal difficulty for both consuming teams.", "created": "2019-04-29T10:53:00.000000"}], "components": [], "created": "2019-01-18T10:41:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See details in PE-25621 and PE-25714."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@446155ea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Flexible catalog compilation"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hympt3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now has a new endpoint for catalog retrieval that allows many more options than the previous endpoint. This endpoint is controlled by tk-auth, and by default is not generally accessible. It is intended for use by other puppet services (like CD4PE). For details on the API, see https://github.com/puppetlabs/puppetserver/blob/master/documentation/puppet-api/v4/catalog.markdown."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_104176_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_1752088336_*|*_10013_*:*_1_*:*_3427673673_*|*_10014_*:*_1_*:*_3543686327"}], "description": "Puppet Server currently only has one endpoint for requesting a catalog. This endpoint requires that the requester be requesting their own catalog, i.e. that the name on cert used to authenticate the request match the name of the node for which the catalog is being compiled. It also does not allow the caller to specify what happens with reports or facts.\n\nAs we expand our portfolio, the need has arisen for an endpoint that allows requesting catalogs for _other_ nodes. For example, CD4PE needs to request catalogs for arbitrary node names as part of Impact Analysis, and managing network devices requires a \"proxy agent\" to make catalog requests on the behalf of the devices being managed.\n\nWe want to create a new catalog endpoint that allows certain entities to request catalogs for arbitrary nodes. In the case of CD4PE, this would probably be controlled via an RBAC permission (see PE-25566), which for device management it would be locked down to the proxy agent's cert.\n\nIn order to service both of these use cases, this endpoint needs to be able to control whether or not reports and facts are saved to PuppetDB (CD4PE does not want this, Network Automation does), and under what name to save them. It also needs the ability to allow environments to be specified as part of the request, as an alternative to going through the classifier.\n\nThis endpoint might also enable us to create a CLI tool satisfying PUP-9055, that calls this endpoint on the backend. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15727", "fixedVersions": ["SERVER 6.3.0"], "id": "15727", "issueType": "Epic", "key": "SERVER-2434", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2019-04-29T10:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Flexible catalog compilation", "timeSpent": "PT0S", "updated": "2021-08-23T10:41:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We no longer vendor hiera-eyaml in puppetserver, instead relying on the version shipped with the agent, see SERVER-2187. However, it looks like we forgot to remove it from pe-puppet-server-extensions. I'll put up something to fix that.", "created": "2019-10-01T15:46:00.000000"}], "components": ["Puppet Server"], "created": "2019-01-18T03:00:00.000000", "creator": "5e3375e183d74c0e821851f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53b8000b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsa1j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22160770720_*|*_6_*:*_1_*:*_0"}], "description": "Hiera-eyaml\u00a03.0.0 has been released with some new features and bug fixes. We should upgrade the vendored\u00a0hiera-eyaml gem in Puppet server\u00a0from 2.1.0 to 3.0.0.\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16904", "fixedVersions": [], "id": "16904", "issueType": "Bug", "key": "SERVER-2433", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e3375e183d74c0e821851f3", "resolution": "Won't Do", "resolutionDate": "2019-10-01T15:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade vendored hiera-eyaml to version 3.0.0", "timeSpent": "PT0S", "updated": "2019-10-01T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:6d9f4174-bf47-424d-a46a-6940b2255f29", "body": "I've opened a pull request for this issue at https://github.com/puppetlabs/jvm-ssl-utils/pull/86", "created": "2019-02-15T15:53:00.000000"}], "components": [], "created": "2019-01-18T01:02:00.000000", "creator": "623c11727910a200718b93db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "byte arrays can be passed where Readerable is demanded with activated schema validation.\u00a0"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58c3c1a8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs9zz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Feb/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1115123486_*|*_1_*:*_1_*:*_13794891872_*|*_5_*:*_1_*:*_0"}], "description": "When using the\u00a0jvm-ssl-utils library\u00a0with activated schema validations in tests we stumbled upon a strange behavior. Although passing a byte array as a Readerable we get schema violations. Further investigations led us to the schema definition [1]. `byte[]` may be valid clojure, but certainly not what was intended:\n\n{{\n user=> byte[]\n #object[clojure.core$byte 0x78ed3c5f \"clojure.core$byte@78ed3c5f\"]\n []\n}}\n\nThis gets parsed in two objects first `byte` and an empty vector. Same for `char[]`. The proper schema to use here would be `schema.core/bytes` and `schema.core/chars`.\u00a0\n\n\u00a0[1] [https://github.com/puppetlabs/jvm-ssl-utils/blob/master/src/clojure/puppetlabs/ssl_utils/core.clj#L131]\n\n\u00a0\n----\nOff-Topic:\u00a0 You should certainly think about activating issues in gitlab. We really appreciate that you create open source software and ourselves are keen to contribute whenever possible. However, I'm a little annoyed by the overhead of this issue report. Not only, that I had to create an account, storing my mail in this platform (which I didn't find a way to delete after this issue being closed), I feel very inconvenient posting here: After 20 minutes of exploring your Jira (which I'm luckily used to, others aren't), I'm not very sure that I created that ticket in the right project. Thus, please enable the issue tracker on gitlab if you don't want to miss valuable feedback on your projects in the future.\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17181", "fixedVersions": ["None"], "id": "17181", "issueType": "Bug", "key": "SERVER-2440", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c11727910a200718b93db", "resolution": "Fixed", "resolutionDate": "2019-07-09T15:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "jvm-ssl-utils schema bug for schema 'Readerable'", "timeSpent": "PT0S", "updated": "2019-07-09T15:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey, thanks for the bug report! I think this is an issue with documentation vs implementation.\n\nThe intermediate CA support (and using it form the get-go) is a feature of Puppet[Server] 6.0 and later.\n\nHowever, we ship the CA command line tool in Puppet 5 (and continue to update it) so that users can get comfortable/update scripts with the interface for other CA related actions (listing, signing, cleaning) prior to upgrading.\n\n\u00a0\n\nAnecdotally, I think users have had quite a bit of trouble finding Puppet 5 docs when they're using Puppet 6 and vice versa. [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], if I'm correct here should we use this ticket to try to improve documentation in both 5 & 6, or maybe even try to put some kind of version checking into the CLI tool to warn/stop if setup is being ran for a Puppet 5 install?", "created": "2019-01-17T14:57:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yeah I like the idea of outputting a warning if you try to use the {{setup}} command. I feel like the Puppet 6 documentation is already fine, but it might be good to have slightly modified CA CLI docs for Puppet 5.", "created": "2019-01-17T15:02:00.000000"}, {"author": "623c12a0562ab90069f8b338", "body": "I ran into this very issue when trying to regenerate certificates in my environment. I'm currently running puppetserver 5.3.14 and a mix of puppet agents 5.5.22 and 6.22.1. The second option works fine.", "created": "2021-06-20T10:12:00.000000"}], "components": ["Puppet Server"], "created": "2019-01-16T14:22:00.000000", "creator": "557058:e98c02c6-46ab-41b0-b16b-1d92396d164c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Correct output should be along the lines of:\n\n{code}\nroot@puppetmaster:~# puppetserver ca list --all\nSigned Certificates:\n puppet.example.com (SHA256) 8D:97:A4:0C:8C:B8:C4:BE:3C:92:5B:13:2A:57:AB:03:5A:82:3D:F3:29:AD:6A:E1:86:6F:7B:01:29:DA:99:B0 alt names: [\"DNS:puppet\"]\n{code}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1945b5ff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs8jr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_92822658_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_99004030213"}], "description": "Hi Folks,\n\nOn a brand new installation of puppetserver, I'm unable to get puppetserver ca cert to work out of the box as suggested in some docs.\n\nHere's my steps to reproduce:\n\n{code}\n#!/bin/bash\n\nsystemctl stop puppetserver\nrm -Rf /etc/puppetlabs/puppet/ssl\n/opt/puppetlabs/server/bin/puppetserver ca setup\necho \"\"\nfind /etc/puppetlabs/puppet/ssl/\necho \"\"\nsystemctl start puppetserver\npuppetserver ca list --all\n{code}\n\nGets us:\n\n{code}\nroot@puppetmaster:~# puppetserver ca list --all\nError:\n code: 500\n body: Internal Server Error: java.lang.IllegalArgumentException: \n    The PEM stream contains more than one object\n{code}\n\nDid some digging and narrowed this down to [https://github.com/puppetlabs/jvm-ssl-utils/blob/master/src/java/com/puppetlabs/ssl_utils/SSLUtils.java#L375]\u00a0which is the exact error.\n\nThe following works without issue:\n\n{code:shell}\n#!/bin/bash\n\n  systemctl stop puppetserver\n  rm -Rf /etc/puppetlabs/puppet/ssl\n\n  mkdir /etc/puppetlabs/puppet/ssl\n  chown puppet:puppet /etc/puppetlabs/puppet/ssl\n\n  systemctl start puppetserver\n\n  echo \"\"\n  find /etc/puppetlabs/puppet/ssl/\n  echo \"\"\n  puppetserver ca list --all\n{code}\n\nThe only discernable difference I could see between the two approaches is that ca setup generates CA certs, CRL etc with two certificate blocks, which is valid but something can't handle it.\n\nI'm happy working around this by using my second solution but this definitely feels like something should be handling this circumstance and isn't.\n\nThanks, Ian.", "environment": "Ubuntu 18.04 64 bit basic installation specifically for testing this issue as follows:\n\n{{wget https://apt.puppetlabs.com/puppet5-release-bionic.deb}}\n{{dpkg -i puppet5-release-bionic.deb}}\n{{apt-get update}}\n{{apt-get install puppetserver}}\n{{update-alternatives --install /usr/bin/puppet puppet /opt/puppetlabs/puppet/bin/puppet 1}}\n{{update-alternatives --install /usr/bin/puppetserver puppetserver /opt/puppetlabs/server/bin/puppetserver 1}}\n\n{{vim /etc/default/puppetserver to change 2g to 1g... (testing)}}\n\n{{systemctl start puppetserver}}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16256", "fixedVersions": [], "id": "16256", "issueType": "Bug", "key": "SERVER-2432", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e98c02c6-46ab-41b0-b16b-1d92396d164c", "resolution": "Won't Do", "resolutionDate": "2022-03-08T13:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server ca setup fails with multiple CRL", "timeSpent": "PT0S", "updated": "2022-03-08T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [{"attacher": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "created": "2019-01-14T17:36:00.000000", "name": "rpm_puppetserver-6.1.1.0.1SNAPSHOT.2019.01.10T1717.el6_Security_Export.pdf", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10587"}], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Merged the bouncycastle update, where does the jline thing go?", "created": "2019-01-16T15:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've been trying to figure that one out\u00a0 \u00a0(\u00a0:\n\nIt looks like it's vendored by JRuby in their stdlib and is used by them to provide readline like behavior. I'm still unsure how to update it.", "created": "2019-01-16T16:31:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This ticket was used to track the bouncycastle update, I have filed SERVER-2461 to track the more complicated jline update.", "created": "2019-02-14T16:39:00.000000"}], "components": [], "created": "2019-01-14T17:41:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36f8fb87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": ["Impediment"]}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1mf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Security Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Updated bouncy-castle to 1.60 to fix some security issues."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_143647661_*|*_3_*:*_1_*:*_109462850_*|*_5_*:*_2_*:*_503510133_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_2417177835_*|*_10006_*:*_1_*:*_5585998"}], "description": "{quote}\nSummary,Severity,Type,Provider,Component,Infected Version,Fix Version,Edited\n{quote}\n{quote}\nLegion of the Bouncy Castle Legion of the Bouncy Castle Java Cryptography APIs version prior to version 1.60 contains a CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') vulnerability in XMSS/XMSS^MT private key deserialization that can result in Deserializing an XMSS/XMSS^MT private key can result in the execution of unexpected code.. This attack appear to be exploitable via A handcrafted private key can include references to unexpected classes which will be picked up from the class path for the executing application.. This vulnerability appears to have been fixed in 1.60 and later.,High,security,JFrog,org.bouncycastle:bcpkix-jdk15on,< 1.60,1.60,2019-01-03T22:35:55Z\n{quote}\n{quote}\n\"Bouncy Castle BKS version 1 keystore (BKS-V1) files use an HMAC that is only 16 bits long, which can allow an attacker to compromise the integrity of a BKS-V1 keystore. All BKS-V1 keystores are vulnerable. Bouncy Castle release 1.47 introduces BKS version 2, which uses a 160-bit MAC.\",High,security,JFrog,org.bouncycastle:bcprov-jdk15on,\"\u2264 1.46,\u2265 1.49\",,2018-10-09T18:20:51Z\n{quote}\n{quote}\nArbitrary Code Injection,Medium,security,Snyk,jline:jline,\u2264 2.11,,2018-11-24T22:35:55Z\n{quote}\n{quote}\n\"Bouncy Castle BC 1.54 - 1.59, BC-FJA 1.0.0, BC-FJA 1.0.1 and earlier have a flaw in the Low-level interface to RSA key pair generator, specifically RSA Key Pairs generated in low-level API with added certainty may have less M-R tests than expected. This appears to be fixed in versions BC 1.60 beta 4 and later, BC-FJA 1.0.2 and later.\",Medium,security,JFrog,org.bouncycastle:bcprov-jdk15on,1.54 \u2264 Version \u2264 1.59,,2019-01-03T22:35:55Z\n{quote}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16537", "fixedVersions": ["SERVER 5.3.8", "SERVER 6.0.4", "SERVER 6.2.1"], "id": "16537", "issueType": "Task", "key": "SERVER-2431", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Fixed", "resolutionDate": "2019-02-20T12:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update bouncycastle and jline dependencies for security issues", "timeSpent": "PT0S", "updated": "2019-03-15T09:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-01-14T12:40:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@787836b7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9438"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs6av:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3123_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_872718645"}], "description": "(Initial planned release date: 2019-01-23)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-01-24T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.2.0 Release - 2019-01-23\n", "estimate": "PT0S", "externalId": "15726", "fixedVersions": [], "id": "15726", "issueType": "Task", "key": "SERVER-2430", "labels": [], "originalEstimate": "PT0S", "parent": "23233", "parentSummary": "Puppet Platform 6.2.0 Release - 2019-01-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-24T15:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.2.0)", "timeSpent": "PT0S", "updated": "2019-01-24T15:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-01-14T12:39:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@241d86e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9438"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs6af:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2727_*|*_3_*:*_1_*:*_11426975_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_691161022"}], "description": "(Initial planned release date: 2019-01-23)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\nNOTE - Docker pipelines will fail between when a tag is pushed and\n       that tag becomes publicly available for download!!\n", "duedate": "2019-01-18T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.2.0 Release - 2019-01-23\n", "estimate": "PT0S", "externalId": "15052", "fixedVersions": [], "id": "15052", "issueType": "Task", "key": "SERVER-2429", "labels": [], "originalEstimate": "PT0S", "parent": "23233", "parentSummary": "Puppet Platform 6.2.0 Release - 2019-01-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-22T15:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.2.0)", "timeSpent": "PT0S", "updated": "2019-01-22T15:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2019-01-14T12:39:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2651ac8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9438"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs6a7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2975_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_691052063"}], "description": "(Initial planned release date: 2019-01-23)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-01-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.2.0 Release - 2019-01-23\n", "estimate": "PT0S", "externalId": "14852", "fixedVersions": [], "id": "14852", "issueType": "Task", "key": "SERVER-2428", "labels": [], "originalEstimate": "PT0S", "parent": "23233", "parentSummary": "Puppet Platform 6.2.0 Release - 2019-01-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Won't Do", "resolutionDate": "2019-01-22T12:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.2.0)", "timeSpent": "PT0S", "updated": "2019-01-22T12:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "Only SERVER-2404 will need to be moved to closed once the release is out.", "created": "2019-01-22T12:35:00.000000"}], "components": [], "created": "2019-01-14T12:39:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1191e818"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9438"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs69z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2511_*|*_3_*:*_1_*:*_155872_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_690818924"}], "description": "(Initial planned release date: 2019-01-23)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-01-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.2.0 Release - 2019-01-23\n", "estimate": "PT0S", "externalId": "17456", "fixedVersions": [], "id": "17456", "issueType": "Task", "key": "SERVER-2427", "labels": [], "originalEstimate": "PT0S", "parent": "23233", "parentSummary": "Puppet Platform 6.2.0 Release - 2019-01-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-22T12:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.2.0)", "timeSpent": "PT0S", "updated": "2019-01-22T12:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b66bf049-e2fd-4068-9289-01c01c2b2b3b", "body": "I had the same issue. I found that uninstalling\u00a0openjdk-11-jre-headless and ensuring only openjdk-8-jre-headless is installed fixed this issue and therefore the puppetserver was able to start. I guess alternatively you could update-alternatives too to fix this.", "created": "2019-01-22T04:15:00.000000"}, {"author": "557058:a1e12f63-8e73-4de3-8319-ab98bd644a16", "body": "Perhaps, proper JAVA_BIN can be supplied in the environment file. + Startup script can check if java version is supported for extra safety.\n", "created": "2019-03-30T15:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think this has been fixed. We now officially support Java 11 in Puppet Server, and I know part of that work involved fixing some issues with liberator. Please reopen if you're still having an issue.", "created": "2019-10-01T15:34:00.000000"}], "components": ["Puppet Server"], "created": "2019-01-12T03:57:00.000000", "creator": "557058:fcc412ba-8765-4d1d-9afa-ec13b58fc9ed", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3855e37e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs5dz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22675060305_*|*_6_*:*_1_*:*_0"}], "description": "I am unable to start puppetserver. It is failing with this error:\u00a0\n{noformat}\nJan 12 10:25:25 nodename.company.com puppetserver[27862]: Exception in thread \"main\" java.lang.ClassNotFoundException: javax.xml.ws.ProtocolException, compiling:(liberator/conneg.clj:1:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.load(Compiler.java:7391) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.loadResourceScript(RT.java:372) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.loadResourceScript(RT.java:363) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.load(RT.java:453) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.load(RT.java:419) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load$fn__5677.invoke(core.clj:5893) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load.invokeStatic(core.clj:5892) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load.doInvoke(core.clj:5876) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:408) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_one.invokeStatic(core.clj:5697) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_one.invoke(core.clj:5692) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib$fn__5626.invoke(core.clj:5737) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib.invokeStatic(core.clj:5736) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib.doInvoke(core.clj:5717) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.applyTo(RestFn.java:142) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:648) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_libs.invokeStatic(core.clj:5774) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_libs.doInvoke(core.clj:5758) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:648) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$require.invokeStatic(core.clj:5796) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$require.doInvoke(core.clj:5796) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:408) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at liberator.core$eval37324$loading__5569__auto____37325.invoke(core.clj:9) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at liberator.core$eval37324.invokeStatic(core.clj:9) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at liberator.core$eval37324.invoke(core.clj:9) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.eval(Compiler.java:6927) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.eval(Compiler.java:6916) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.load(Compiler.java:7379) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.loadResourceScript(RT.java:372) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.loadResourceScript(RT.java:363) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.load(RT.java:453) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.load(RT.java:419) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load$fn__5677.invoke(core.clj:5893) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load.invokeStatic(core.clj:5892) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load.doInvoke(core.clj:5876) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:408) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_one.invokeStatic(core.clj:5697) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_one.invoke(core.clj:5692) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib$fn__5626.invoke(core.clj:5737) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib.invokeStatic(core.clj:5736) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib.doInvoke(core.clj:5717) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.applyTo(RestFn.java:142) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:648) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_libs.invokeStatic(core.clj:5774) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_libs.doInvoke(core.clj:5758) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:648) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$require.invokeStatic(core.clj:5796) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$require.doInvoke(core.clj:5796) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:1096) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.services.puppet_admin.puppet_admin_core$eval37307$loading__5569__auto____37308.invoke(puppet_admin_core.clj:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.services.puppet_admin.puppet_admin_core$eval37307.invokeStatic(puppet_admin_core.clj:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.services.puppet_admin.puppet_admin_core$eval37307.invoke(puppet_admin_core.clj:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.eval(Compiler.java:6927) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.eval(Compiler.java:6916) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.load(Compiler.java:7379) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.loadResourceScript(RT.java:372) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.loadResourceScript(RT.java:363) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.load(RT.java:453) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.load(RT.java:419) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load$fn__5677.invoke(core.clj:5893) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load.invokeStatic(core.clj:5892) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load.doInvoke(core.clj:5876) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:408) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_one.invokeStatic(core.clj:5697) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_one.invoke(core.clj:5692) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib$fn__5626.invoke(core.clj:5737) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib.invokeStatic(core.clj:5736) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib.doInvoke(core.clj:5717) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.applyTo(RestFn.java:142) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:648) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_libs.invokeStatic(core.clj:5774) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_libs.doInvoke(core.clj:5758) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:648) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$require.invokeStatic(core.clj:5796) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$require.doInvoke(core.clj:5796) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:482) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.services.puppet_admin.puppet_admin_service$eval37301$loading__5569__auto____37302.invoke(puppet_admin_service.clj:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.services.puppet_admin.puppet_admin_service$eval37301.invokeStatic(puppet_admin_service.clj:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.services.puppet_admin.puppet_admin_service$eval37301.invoke(puppet_admin_service.clj:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.eval(Compiler.java:6927) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.eval(Compiler.java:6916) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.load(Compiler.java:7379) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.loadResourceScript(RT.java:372) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.loadResourceScript(RT.java:363) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.load(RT.java:453) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.load(RT.java:419) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load$fn__5677.invoke(core.clj:5893) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load.invokeStatic(core.clj:5892) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load.doInvoke(core.clj:5876) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:408) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_one.invokeStatic(core.clj:5697) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_one.invoke(core.clj:5692) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib$fn__5626.invoke(core.clj:5737) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib.invokeStatic(core.clj:5736) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_lib.doInvoke(core.clj:5717) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.applyTo(RestFn.java:142) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:648) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_libs.invokeStatic(core.clj:5774) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$load_libs.doInvoke(core.clj:5758) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:648) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$require.invokeStatic(core.clj:5796) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$require.doInvoke(core.clj:5796) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:408) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.bootstrap$eval14848$resolve_service_BANG___14855$fn__14856$fn__14857.invoke(bootstrap.clj:210) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.bootstrap$eval14848$resolve_service_BANG___14855$fn__14856.invoke(bootstrap.clj:210) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.bootstrap$eval14848$resolve_service_BANG___14855.invoke(bootstrap.clj:203) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.bootstrap$eval14902$resolve_and_handle_errors_BANG___14909$fn__14913.invoke(bootstrap.clj:241) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.bootstrap$eval14902$resolve_and_handle_errors_BANG___14909.invoke(bootstrap.clj:232) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$map$fn__4785.invoke(core.clj:2644) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.LazySeq.sval(LazySeq.java:40) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.LazySeq.seq(LazySeq.java:49) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.seq(RT.java:521) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$seq__4357.invokeStatic(core.clj:137) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$filter$fn__4812.invoke(core.clj:2700) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.LazySeq.sval(LazySeq.java:40) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.LazySeq.seq(LazySeq.java:49) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.seq(RT.java:521) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$seq__4357.invokeStatic(core.clj:137) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$zipmap.invokeStatic(core.clj:2962) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$zipmap.invoke(core.clj:2962) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.bootstrap$eval14822$check_duplicate_service_implementations_BANG___14829$fn__14830.invoke(bootstrap.clj:196) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.bootstrap$eval14822$check_duplicate_service_implementations_BANG___14829.invoke(bootstrap.clj:189) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.bootstrap$eval14988$parse_bootstrap_configs_BANG___14995$fn__14996.invoke(bootstrap.clj:306) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.bootstrap$eval14988$parse_bootstrap_configs_BANG___14995.invoke(bootstrap.clj:290) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.core$eval15279$boot_with_cli_data__15286$fn__15287.invoke(core.clj:130) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.core$eval15279$boot_with_cli_data__15286.invoke(core.clj:96) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.core$eval15308$run__15313$fn__15314.invoke(core.clj:152) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.core$eval15308$run__15313.invoke(core.clj:146) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.core$main.invokeStatic(core.clj:174) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:160) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:512) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Var.invoke(Var.java:409) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.AFn.applyToHelper(AFn.java:178) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Var.applyTo(Var.java:700) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:646) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invoke(core.clj:641) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.main$_main.invokeStatic(main.clj:7) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:4) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:512) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Var.invoke(Var.java:409) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.AFn.applyToHelper(AFn.java:178) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Var.applyTo(Var.java:700) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.core$apply.invokeStatic(core.clj:646) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.main$main_opt.invokeStatic(main.clj:314) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.main$main_opt.invoke(main.clj:310) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.main$main.invokeStatic(main.clj:421) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.main$main.doInvoke(main.clj:384) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RestFn.invoke(RestFn.java:619) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Var.invoke(Var.java:430) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.AFn.applyToHelper(AFn.java:195) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Var.applyTo(Var.java:700) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.main.main(main.java:37) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: Caused by: java.lang.ClassNotFoundException: javax.xml.ws.ProtocolException Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:69) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.DynamicClassLoader.loadClass(DynamicClassLoader.java:77) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at java.base/java.lang.Class.forName0(Native Method) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at java.base/java.lang.Class.forName(Class.java:374) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.classForName(RT.java:2168) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.RT.classForNameNonLoading(RT.java:2181) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at liberator.conneg$eval37330$loading__5569__auto____37331.invoke(conneg.clj:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at liberator.conneg$eval37330.invokeStatic(conneg.clj:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at liberator.conneg$eval37330.invoke(conneg.clj:1) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.eval(Compiler.java:6927) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.eval(Compiler.java:6916) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011at clojure.lang.Compiler.load(Compiler.java:7379) Jan 12 10:25:25 nodename.company.com puppetserver[27862]: #011... 155 more Jan 12 10:25:25 nodename.company.com puppetserver[27862]: Background process 27881 exited before start had completed Jan 12 10:25:25 nodename.company.com systemd[1]: puppetserver.service: Control process exited, code=exited status=1 Jan 12 10:25:25 nodename.company.com systemd[1]: puppetserver.service: Failed with result 'exit-code'. Jan 12 10:25:25 nodename.company.com systemd[1]: Failed to start puppetserver Service. Jan 12 10:25:26 nodename.company.com systemd[1]: puppetserver.service: Service hold-off time over, scheduling restart. Jan 12 10:25:26 nodename.company.com systemd[1]: puppetserver.service: Scheduled restart job, restart counter is at 5. Jan 12 10:25:26 nodename.company.com systemd[1]: Stopped puppetserver Service. Jan 12 10:25:26 nodename.company.com systemd[1]: Starting puppetserver Service... ^C root@nodename.company.com:~#\n{noformat}\nEverything was working fine till I faced this error.", "environment": "Kernel: 4.15.0-1031-aws\n\nUbuntu: 18.04.1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17455", "fixedVersions": [], "id": "17455", "issueType": "Bug", "key": "SERVER-2426", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fcc412ba-8765-4d1d-9afa-ec13b58fc9ed", "resolution": "Fixed", "resolutionDate": "2019-10-01T15:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver crashes with the error message \"Exception in thread \"main\" java.lang.ClassNotFoundException: javax.xml.ws.ProtocolException, compiling:(liberator/conneg.clj:1:1)\"", "timeSpent": "PT0S", "updated": "2019-10-01T15:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "There are methods for basic file serving that people already use, but to handle all cases (including pluginsync) we need some code level logic so it makes sense to just write a small jetty thing.", "created": "2019-01-23T10:48:00.000000"}], "components": ["Puppet Server"], "created": "2019-01-09T17:25:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ccf7d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2nb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_109404_*|*_3_*:*_2_*:*_758503562_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_427164819"}], "description": "Before fully implementing file serving in clojure, figure out how much could be handled by an off the shelf webserver and how much actually requires custom code.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17454", "fixedVersions": [], "id": "17454", "issueType": "Task", "key": "SERVER-2425", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Fixed", "resolutionDate": "2019-01-23T10:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "spike how much file serving could be handled by other software", "timeSpent": "PT0S", "updated": "2019-01-23T10:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This has been merged and released in the gem. Getting into pe-puppetserver now to unblock PE-25662.", "created": "2019-01-16T16:14:00.000000"}], "components": [], "created": "2019-01-09T16:17:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27bf76ed"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs2a7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_81788384_*|*_1_*:*_1_*:*_18844_*|*_10007_*:*_1_*:*_108419122_*|*_3_*:*_1_*:*_496191973_*|*_5_*:*_1_*:*_13378889776_*|*_6_*:*_1_*:*_0"}], "description": "When enabling the infra-crl functionality, puppetserver expects three additional files to be present in order for the server to start: and inventory of the certnames of nodes considered to be \"infrastructure\", a map of those names to their serial numbers, and a CRL containing only the revocations from that list of nodes. These files will be generated automatically in call cases by {{puppetserver ca setup}} and {{puppetserver ca import}}, but in Puppet Server's bootstrapping code, only if the setting is enabled the first time the server is started (it generates them along with the rest of the CA). Likewise, pre-6 versions of Puppet Server will not generate them at all, in FOSS or PE.\n\nThis means that enabling this setting by default in PE will cause Puppet Server to fail to start either when upgrading from 2018.1 to 2019.0+, because the expected files do not exist. Likewise, a FOSS user toggling the setting to \"on\" would have to manually generate all three files before starting the server, not just the inventory file as [documented|https://puppet.com/docs/puppetserver/6.0/infrastructure_crl.html].\n\nIn PE, we manage the creation of the inventory file. In FOSS, we expect users to populate it themselves. We should add an action the CA CLI that generates the other two files based on it, creating the mapping of certnames to serial numbers, and generating a new, empty CRL based on the chain of the existing full CRL.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15485", "fixedVersions": ["SERVER 6.0.z", "SERVER 6.y"], "id": "15485", "issueType": "Task", "key": "SERVER-2424", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-01-17T14:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA CLI tool action for bootstrapping infra-crl", "timeSpent": "PT0S", "updated": "2019-06-21T12:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [{"attacher": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "created": "2019-09-23T11:27:00.000000", "name": "6.6.0-error.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11278"}], "comments": [{"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "I think we probably need to explore a different method of loading facter. The dynamic stuff we're doing is all being removed and I'm not aware of any replacement. I'm not sure if that's actually related to this error, but it might solve both problems.", "created": "2019-01-09T17:29:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "IIRC, we use Facter to look up \"server_facts\" which are _fqdn_, _ipaddress_, (and does not need Facter, _serverversion_). If _fqdn_ does not return a valid value then _hostname_ and _domain_ from Facter are joined with a \".\".\n\n\u00a0\n\nCould we be able to get those values from Jetty/Java and skip using Facter completely?", "created": "2019-02-14T16:01:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "We should definitely do that if we can, it would help more than just this issue.", "created": "2019-02-14T16:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've gone spelunking in this today and I can pretty directly port how facter 2 resolves the fqdn/ipaddress values with relatively little code.\n\nI think the next step is to figure out how to update the Puppet code base to allow us to load the portions of Puppet we require w/o Facter being available (including no longer applying a settings catalog).\n\nThat's seems like a much bigger lift, and I'm unsure if it is really in scope for this ticket. Is anyone opposed to me spending tomorrow attempting that?", "created": "2019-04-23T17:00:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Sounds great!", "created": "2019-04-23T17:02:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Two updates:\n # facter 2 & facter 3 resolve domain names slightly differently, I'm unsure which a Java implementation would be most similar two\n # That java implementation that I got working yesterday involved enumerating interfaces from java.net.NetworkInterface, and choosing the interface with the lowest index that wasn't loopback and then attempting to get the canonical host name for it from InetAddress, falling back to parsing the resolv.conf (as both versions of facter do).\n\nTo continue on this work of removing facter from the server we'd need to:\n # require and refactor Puppet's initialization to not require Facter PUP-9686\n # disable applying the Settings catalog on init (types and providers legitimately require Facter)\u00a0PUP-8682\n # refactor Puppet to set the facts that we would otherwise call out to facter to use during init (eg. put server_facts in the context?)\u00a0PUP-9685\n # ensure the subsystems we load require everything they need (do not depend on a `require \"puppet\"` to load implicit dependencies)\n ## Currently we load:\n ### puppet\n ### puppet/info_service\n ### puppet/node/facts\n ### puppet/network/http*\n ### puppet/environment\n ### puppet/ssl/*", "created": "2019-04-25T15:09:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Now that this is scoped a bit better (and we understand that this isn't a small thing) we're going to put it back into the backlog until we have more time/Java 11 is a higher priority.", "created": "2019-04-25T15:37:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I had a shower thought the other day:\n\nIf we created a new tk lifecycle stage for per-process allocations that isn't called on HUP and moved our classpath modifying there, it might solve this problem for now.\n\nIt might be a clean, though somewhat round about way to fix this, and be less risky work, so we could start Java 11 testing earlier.\n\nI think the previously scoped work is probably large enough that we won't start on it until we absolutely need Java 11 support and might want to wait until Puppet 7 for some of the changes (I think there's some concern with backwards compatibility in changing how/where serverfacts are resolved).", "created": "2019-06-26T15:19:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This also blocks adding support for Debian 10 \"Buster\".", "created": "2019-08-05T15:36:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "From a PE install. start/stop/restart all work, reload explodes and the resulting log, if it's helpful:\n\n{code}\n[root@iz6zmoxk62u6pia ~]# cat /opt/puppetlabs/server/apps/puppetserver/tmp/clojure-15526313326041835248.edn\n{:clojure.main/message\n \"Execution error (ClassNotFoundException) at java.lang.Class/forName0 (Class.java:-2).\\norg/quartz/impl/StdSchedulerFactory\\n\",\n :clojure.main/triage\n {:clojure.error/class java.lang.ClassNotFoundException,\n  :clojure.error/line -2,\n  :clojure.error/cause \"org/quartz/impl/StdSchedulerFactory\",\n  :clojure.error/symbol java.lang.Class/forName0,\n  :clojure.error/source \"Class.java\",\n  :clojure.error/phase :execution},\n :clojure.main/trace\n {:via\n  [{:type java.lang.ClassNotFoundException,\n    :message \"org/quartz/impl/StdSchedulerFactory\",\n    :at [java.lang.Class forName0 \"Class.java\" -2]}],\n  :trace\n  [[java.lang.Class forName0 \"Class.java\" -2]\n   [java.lang.Class forName \"Class.java\" 398]\n   [clojure.lang.RT classForName \"RT.java\" 2211]\n   [clojure.lang.RT classForName \"RT.java\" 2220]\n   [puppetlabs.trapperkeeper.services.scheduler.scheduler_core$create_scheduler\n    invokeStatic\n    \"scheduler_core.clj\"\n    22]\n   [puppetlabs.trapperkeeper.services.scheduler.scheduler_core$create_scheduler\n    invoke\n    \"scheduler_core.clj\"\n    14]\n   [puppetlabs.trapperkeeper.services.scheduler.scheduler_service$reify__53506$service_fnk__5026__auto___positional$reify__53513\n    init\n    \"scheduler_service.clj\"\n    43]\n   [puppetlabs.trapperkeeper.services$fn__4850$G__4842__4853\n    invoke\n    \"services.clj\"\n    9]\n   [puppetlabs.trapperkeeper.services$fn__4850$G__4841__4857\n    invoke\n    \"services.clj\"\n    9]\n   [puppetlabs.trapperkeeper.internal$fn__14593$run_lifecycle_fn_BANG___14600$fn__14601\n    invoke\n    \"internal.clj\"\n    196]\n   [puppetlabs.trapperkeeper.internal$fn__14593$run_lifecycle_fn_BANG___14600\n    invoke\n    \"internal.clj\"\n    179]\n   [puppetlabs.trapperkeeper.internal$fn__14622$run_lifecycle_fns__14627$fn__14628\n    invoke\n    \"internal.clj\"\n    229]\n   [puppetlabs.trapperkeeper.internal$fn__14622$run_lifecycle_fns__14627\n    invoke\n    \"internal.clj\"\n    206]\n   [puppetlabs.trapperkeeper.internal$fn__15197$build_app_STAR___15206$fn$reify__15218\n    restart\n    \"internal.clj\"\n    594]\n   [puppetlabs.trapperkeeper.internal$restart_tk_apps$restart_fn__14956\n    invoke\n    \"internal.clj\"\n    306]\n   [puppetlabs.trapperkeeper.internal$fn__14667$initialize_lifecycle_worker__14678$fn__14679$fn__14829$state_machine__11825__auto____14854$fn__14857\n    invoke\n    \"internal.clj\"\n    249]\n   [puppetlabs.trapperkeeper.internal$fn__14667$initialize_lifecycle_worker__14678$fn__14679$fn__14829$state_machine__11825__auto____14854\n    invoke\n    \"internal.clj\"\n    249]\n   [clojure.core.async.impl.ioc_macros$run_state_machine\n    invokeStatic\n    \"ioc_macros.clj\"\n    973]\n   [clojure.core.async.impl.ioc_macros$run_state_machine\n    invoke\n    \"ioc_macros.clj\"\n    972]\n   [clojure.core.async.impl.ioc_macros$run_state_machine_wrapped\n    invokeStatic\n    \"ioc_macros.clj\"\n    977]\n   [clojure.core.async.impl.ioc_macros$run_state_machine_wrapped\n    invoke\n    \"ioc_macros.clj\"\n    975]\n   [clojure.core.async$ioc_alts_BANG_$fn__12040 invoke \"async.clj\" 384]\n   [clojure.core.async$do_alts$fn__11980$fn__11983\n    invoke\n    \"async.clj\"\n    253]\n   [clojure.core.async.impl.channels.ManyToManyChannel$fn__6644$fn__6645\n    invoke\n    \"channels.clj\"\n    95]\n   [clojure.lang.AFn run \"AFn.java\" 22]\n   [java.util.concurrent.ThreadPoolExecutor\n    runWorker\n    \"ThreadPoolExecutor.java\"\n    1128]\n   [java.util.concurrent.ThreadPoolExecutor$Worker\n    run\n    \"ThreadPoolExecutor.java\"\n    628]\n   [java.lang.Thread run \"Thread.java\" 834]],\n  :cause \"org/quartz/impl/StdSchedulerFactory\"}}\n{code}", "created": "2019-09-04T15:16:00.000000"}, {"author": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "body": "This error is still occuring on startup for me with 6.6.0\n\n\n{noformat}\n{:clojure.main/message\n \"Execution error (NameError) at (REPL:1).\\n(NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 alread\ny loaded in another classloader)\\ncannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 already loaded in another classloader)\\n\",\n :clojure.main/triage\n {:clojure.error/class org.jruby.exceptions.NameError,\n  :clojure.error/cause\n  \"(NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 already loaded in another classloader)\\ncannot\nlink Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 already loaded in another classloader)\",\n  :clojure.error/phase :execution},\n :clojure.main/trace\n {:via\n  [{:type java.lang.IllegalStateException,\n    :message \"There was a problem adding a JRubyInstance to the pool.\",\n    :at\n    [puppetlabs.services.jruby_pool_manager.impl.jruby_agents$fn__33998$prime_pool_BANG___34003$fn__34007\n     invoke\n     \"jruby_agents.clj\"\n     75]}\n   {:type org.jruby.embed.InvokeFailedException,\n    :message\n    \"(NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 already loaded in another classloader)\\ncanno\nt link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 already loaded in another classloader)\",\n    :at\n    [org.jruby.embed.internal.EmbedRubyObjectAdapterImpl\n     call\n     \"EmbedRubyObjectAdapterImpl.java\"\n     320]}\n   {:type org.jruby.exceptions.NameError,\n    :message\n    \"(NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 already loaded in another classloader)\\ncanno\nt link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 already loaded in another classloader)\"}],\n  :trace [],\n  :cause\n  \"(NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 already loaded in another classloader)\\ncannot\nlink Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.14.4 already loaded in another classloader)\"}}\n\n{noformat}\n", "created": "2019-09-21T16:09:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks for the bug report, [~accountid:557058:bff845c1-08a9-44e6-9a36-115b25b2e2de]!\n\nSorry to hear this still isn't working.\n\ni'm curious about this message:\n{quote}\n\"Execution error (NameError) at (REPL:1)\n{quote}\n\nDoes that error come from the puppetserver.log or syslog, or is that from running a command like {{pupetserver foreground}} or from a source install using the lein repl?\n\nYou say on startup, do you mean like actually when starting the server? Have you tweaked the number of JRuby instances you're running with? Do you know how many JRuby instances you have?", "created": "2019-09-23T10:21:00.000000"}, {"author": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "body": "3 jruby instances, I'll attach the full log (puppetserver log) now.  The install is based on the tarball from https://downloads.puppetlabs.com/puppet/ with the following link being the 'instructions' for how we install puppetserver https://github.com/gentoo/gentoo/blob/cb680a5e45d6569f2bc6017a19f36f4d187f56a3/app-admin/puppetserver/puppetserver-6.6.0.ebuild", "created": "2019-09-23T11:24:00.000000"}, {"author": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "body": "It seems similiar to https://puppet.atlassian.net/browse/SERVER-2421 but I'm using jdk-8 /opt/puppetlabs/server/apps/puppetserver/ezbake.manifest shows dynapath-0.2.5 as well.  I did test jdk-11 and had the same results.", "created": "2019-09-23T11:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm not really following the ebuild terminology, however I can tell you that the way fixed this was to stop loading Facter within Puppet Server's source code and instead add it to the classpath when we invoke Java.\n\nImplementation-wise we updated our cli-defaults.sh to add the facter.jar to our classpath variable here[1] which our scripts to start the service source here[2]. To fix this I think however you start the service needs to update the classpath that is given to the java command with the location of the facter.jar on disk.\n\nCan you verify if that works for you? If so we'll update our running from source docs to contain that info.\n\n\u00a0\n\n1.\u00a0[https://github.com/puppetlabs/puppetserver/pull/2166/files#diff-f14c271b13cf3880c7ea7b48c11fdedaR7]\n\n2.\u00a0[https://github.com/puppetlabs/ezbake/blob/master/resources/puppetlabs/lein-ezbake/template/global/ext/cli/start.erb#L52-L57]", "created": "2019-09-23T12:48:00.000000"}, {"author": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "body": "yep, looks like I missed that in packaging the update going from\n\n/usr/bin/java -Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger -Djava.security.egd=/dev/urandom -XX:OnOutOfMemoryError=\"kill -9 %p\" -cp /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar:/opt/puppetlabs/server/apps/puppetserver/jruby-1_7.jar clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetlabs/puppetserver/conf.d --bootstrap-config /etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/ --restart-file /opt/puppetlabs/server/data/puppetserver/restartcounter\n\nto\n\n\u00a0/usr/bin/java -Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger -Djava.security.egd=/dev/urandom -XX:OnOutOfMemoryError=\"kill -9 %p\" -cp /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar:/opt/puppetlabs/server/apps/puppetserver/jruby-1_7.jar:/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.jar clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetlabs/puppetserver/conf.d --bootstrap-config /etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/ --restart-file /opt/puppetlabs/server/data/puppetserver/restartcounter\n\nI probably don't need to jruby include anymore but it's not hurting anything.", "created": "2019-09-23T13:20:00.000000"}, {"author": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "body": "As a side note, I wonder if there's a way to subscribe to this as a rss feed https://github.com/puppetlabs/puppetserver/commits/master/resources/ext  would be useful as a packager.", "created": "2019-09-23T13:23:00.000000"}], "components": [], "created": "2019-01-09T12:55:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@213440e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1jr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server can now be reloaded and run with multiple JRuby instances when running under Java 11."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_426734224_*|*_1_*:*_1_*:*_2936608493_*|*_10007_*:*_1_*:*_224892163_*|*_3_*:*_2_*:*_439144252_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_9159794945_*|*_10006_*:*_2_*:*_4583917454_*|*_10005_*:*_1_*:*_3814538665"}], "description": "Reloading Puppet Server fails in Java 11 with:\n{code}\n$ journalctl -xe\n...\nJan 08 00:29:50 k3vztg6tn4y2stv puppetserver[21913]: NameError: Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: c\nJan 08 00:29:50 k3vztg6tn4y2stv puppetserver[21913]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter\n...\n{code}\n{code}\n$ cat /var/log/puppetlabs/puppetserver/puppetserver.log\n...\nCaused by: org.jruby.embed.InvokeFailedException: (NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.3 already loaded in another classloader)\ncannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.3 already loaded in another classloader)\n...\n{code}\n\nReloading Puppet Server 6.0.2 also fails in Java 11 but with an error to call a reflection API when finding Puppet Server's version.\n\nUnknown if these two kinds of failures are related but since Server seems to have never reloaded properly in Java 9+. This ticket should be considered a blocker to official support of those versions.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15725", "fixedVersions": ["SERVER 6.6.0"], "id": "15725", "issueType": "Improvement", "key": "SERVER-2423", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2019-09-16T09:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix failure to reload Server in Java 11", "timeSpent": "PT0S", "updated": "2019-09-23T13:23:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Thanks for the report [~accountid:557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83], I've moved this to the SERVER project. I assume it's related to the new JRuby version in puppetserver 6.x.", "created": "2019-01-08T10:48:00.000000"}, {"author": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "body": "i found an jruby bug, indicating that there are indeed performance problems with the newer jrubs version:\n\n[https://github.com/jruby/jruby/issues/3735]\n\n\u00a0\n\ni currently have increased the number of puppet server instances from 3 to 6, but the resource usage is still pretty high.\n\ni guess i would have to add another 3 instances, to have the same overall idle time then before.", "created": "2019-01-09T10:18:00.000000"}, {"author": "557058:88b7bd93-d432-4423-aaca-d0fdc06c4004", "body": "I've just upgraded our dev environment from Puppet 4 to 6 and the CPU usage of the puppet server has gone up so much that the server is unable to cope with more than about 4 nodes hitting it at the same time. Is there anything that can be done to fix this CPU usage issue?\n\n*edit:* sorry, please disregard! Turns out my custom heap size settings weren't being applied so it was actually the GC going crazy and eating all the CPU.", "created": "2019-08-01T09:28:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Are you still having issues with this?", "created": "2019-10-01T15:33:00.000000"}], "components": ["Puppet Server"], "created": "2019-01-08T10:12:00.000000", "creator": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@610b0c1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs0x3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25077606089_*|*_6_*:*_1_*:*_0"}], "description": "The CPU utilization has dramatically increased after switching to Puppet 6.\n\nin one location we have 3 puppet server instances, 8 cores, 16GB memory each, behind a loadbalancer, serving ~2k nodes\n\nmax-active-instances is set to 8\n\nthese 3 instances now use between 90% to 100% of the cpu, with version 5 the cpu usage was below 50%.\n\nalso the time a puppet agent run takes has increase, from average ~30 seconds to ~2 minutes.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16255", "fixedVersions": [], "id": "16255", "issueType": "Bug", "key": "SERVER-2422", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:eba61c8c-c6d8-4bf7-b2ce-768471972b83", "resolution": "Fixed", "resolutionDate": "2019-10-25T17:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PuppetServer 6, much higher CPU usage then with V5", "timeSpent": "PT0S", "updated": "2019-10-25T17:12:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Okay, I was able to confirm that downgrading to 0.2.5 fixes this (and resolves the AOT issues with Java 11).\n\nJava 11 still is affected by this issue when reloading. I also installed 6.0.2 and it fails differently when reloading - I don't know if those two reloading issues have the same cause - but it looks like reloading has always been broken on Java 11.\n\nI think we should create a ticket to fix the service reloading in Java 11 (it will need more discovery, I won't try to root cause it here) and document it as a known issue in release notes.", "created": "2019-01-09T12:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Works for me. So for this release, we want to go to 0.2.5?", "created": "2019-01-09T12:37:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yeah", "created": "2019-01-09T12:57:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] please provide release notes for this release if needed, thanks!", "created": "2019-01-10T07:27:00.000000"}, {"author": "5b5a1e20cffc7f2ca3b5ba02", "body": "I just upgraded my puppet server to 18.04, and i'm running into this same issue with Java 10 and Puppet Server 6.2.0\n\n$ java --version\nopenjdk 10.0.2 2018-07-17\nOpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)\nOpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)\n\n$ puppetserver --version\npuppetserver version: 6.2.0\n\n\u00a0\n\nI don't see any package installed called \"dynapath\"\u00a0 can someone provide me a quick hint how to downgrade \"dynapath\"?", "created": "2019-02-15T12:53:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "If you're on 6.2.0, you should already have the downgraded version. Is initial load failing for you, or only reload?", "created": "2019-02-15T13:02:00.000000"}, {"author": "5b5a1e20cffc7f2ca3b5ba02", "body": "It crashes on startup due to the error.\u00a0\u00a0\n\nIf i start it as \"puppetserver foreground\" the 75th line of output is:\n\n\u00a0\n\n2019-02-15T12:26:54.081-08:00 INFO [clojure-agent-send-pool-0] [puppetserver] Puppet Puppet settings initialized", "created": "2019-02-15T13:56:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm not sure we'd ever tried the {{foreground}} case. It may be suffering the same issue as {{reload}}. We have SERVER-2423 to track the work for fixing that. In the meantime, it seems likely that {{foreground}} simply doesn't work on JDK10 (and probably not on 11 either) until we're able to resolve the issue with Facter.\n\nIs it possible for you to install and use JDK8 instead? That is the only version we officially support currently.\n\nIf it is acceptable for you to run puppetserver in background, that _does_ work on JDK10 as far as I know (minus the {{reload}} issue), and you can start and stop the server using your OS's service framework.\n\nIf the latter doesn't work, please let me know so that I can add it to the list of issues with newer Java versions, as we work to get official support for those in the coming months.", "created": "2019-02-15T14:58:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "FWIW, {{puppetserver foreground}} worked for me on Ubuntu 18.04 with Java 10 and Puppetserver 6.2.0. However, {{puppetserver reload}} did not.", "created": "2019-02-15T16:53:00.000000"}, {"author": "5b5a1e20cffc7f2ca3b5ba02", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] thanks for confirming.\u00a0 I was able to get 6.2 running on OpenJDK8, specifically\u00a0openjdk version \"1.8.0_191\"\n\n\u00a0\n\n\u00a0", "created": "2019-02-18T10:52:00.000000"}], "components": [], "created": "2019-01-08T10:09:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@199058e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl23b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_7079434_*|*_1_*:*_1_*:*_12676_*|*_10007_*:*_1_*:*_66067668_*|*_3_*:*_1_*:*_91244913_*|*_5_*:*_1_*:*_450124904_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5253011"}], "description": "In attempt to fix AOT compilation across Java versions, we updated dynapath from 0.2.4 to 1.0.0, because of the way it uses Java 8 vs Java 9+ APIs differently. However, this seems to have broken reloading the puppetserver service in a package install.\n\nFrom journalctl following a reload command:\n{code}\nJan 08 00:29:50 k3vztg6tn4y2stv puppetserver[21913]: NameError: Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: c\nJan 08 00:29:50 k3vztg6tn4y2stv puppetserver[21913]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter\n{code}\n\nFrom {{puppetserver.log}}:\n{code}\nCaused by: org.jruby.embed.InvokeFailedException: (NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.3 already loaded in another classloader)\ncannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.3 already loaded in another classloader)\n{code}\n\nRolling dynapath back to 0.2.4 fixes this. I haven't tried it on Java 11 or with dynapath 0.2.5.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15945", "fixedVersions": ["SERVER 6.0.3", "SERVER 6.2.0"], "id": "15945", "issueType": "Bug", "key": "SERVER-2421", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2019-01-10T09:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver fails to reload with dynapath 1.0", "timeSpent": "PT0S", "updated": "2020-08-21T13:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "This seems like it should be easy to do by updating our SSL handlers in Jetty to add the certificate CN to the MDC every time a SSL request comes in that uses a client certificate. TK-470 would also make it easy to add to the access logs as well.", "created": "2019-08-23T11:06:00.000000"}], "components": ["Puppet Server"], "created": "2019-01-07T18:29:00.000000", "creator": "557058:d83223a2-1c20-4245-a31c-95c8f44172b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dcd134e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91k"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Aug/19"}], "description": "*Puppet Version: 5.5.8*\n *Puppet Server Version: 5.3.6*\n *OS Name/Version: Centos 7*\n\nI'd like it if the Puppetserver process were capable of including the certname of the relevant node in log output when a compilation error occurs (or really, when every any log message is emitted from the puppetserver in the process of working on a specific node).\n\nI don't need this to be included by default in the log messages. If the Certname was added to SLF4J's Mapped Diagnostic Context I'd be perfectly happy to adjust our logback configuration to take advantage of that (in fact, I'd be _happier_\u00a0that way than with it in the message body, since we're already using logback-gelf to have puppetserver send structured log messages and this way I won't need to parse the certname out of the message body).\n\n*Desired Behavior:*\n\n**Certname of node being processed is available to logback for association with log messages.\n\n*Actual Behavior:*\n\n\u00a0\n\nCertname of node being processed does not appear to be available to logback in MDC (or in any other manner that I can figure out).\n\n\u00a0\n\nNote that the certificate name _does_ appear to be available to the request/access logger, but I'm more interested in the puppetserver's actually logs than the request logs.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "17180", "fixedVersions": [], "id": "17180", "issueType": "Improvement", "key": "SERVER-2420", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d83223a2-1c20-4245-a31c-95c8f44172b7", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow including certname in logs for compilation errors", "timeSpent": "PT0S", "updated": "2022-03-09T09:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Both branches of clj-parent have been released, as 1.17.19 and 2.5.0 respectively. Puppetserver updates incoming.", "created": "2019-01-03T17:26:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think this is in the 5 series everywhere now (Server and PDB at least).", "created": "2019-01-07T15:04:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please provide release notes for this issue if needed, thanks!", "created": "2019-01-08T08:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yes this can be moved now that orchestrator updates also finished. It hasn't cleared CI on the 6.x branches because of an issue with something else in that clj-parent release (new dynapath for SERVER-2404), but 5.3.x is good to go.", "created": "2019-01-08T09:08:00.000000"}], "components": [], "created": "2019-01-02T15:41:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@760ee767"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrx33:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_173242592_*|*_1_*:*_1_*:*_365101_*|*_10007_*:*_1_*:*_494506191_*|*_5_*:*_1_*:*_448799039_*|*_6_*:*_1_*:*_0"}], "description": "This resolves several security issues: https://github.com/FasterXML/jackson-databind/issues/2186\n\n(all active branches)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16254", "fixedVersions": ["SERVER 5.3.7", "SERVER 6.0.3", "SERVER 6.2.0"], "id": "16254", "issueType": "Task", "key": "SERVER-2418", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2019-01-15T13:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update jackson-databind to 2.9.8 in clj-parent", "timeSpent": "PT0S", "updated": "2019-01-15T13:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Going to wait on the update for JAVA_CLI_ARGS to land before doing this update.", "created": "2019-01-08T11:22:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please provide release notes for this issue if needed, thanks!", "created": "2019-01-10T07:27:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] Looking at your release notes - even though the JAVA_ARGS_CLI change got pulled in with the ezbake bump, that is not the issue that this ticket was opened for. PE-25574 has the details.", "created": "2019-01-10T10:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Oh, derp, sorry. I'll move those.", "created": "2019-01-10T10:41:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] or [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] did this get through CI yet?", "created": "2019-01-11T07:43:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It went through FOSS fine. Having issues in PE, but that's not a blocker for the FOSS releases. Resolving this.", "created": "2019-01-11T09:04:00.000000"}], "components": [], "created": "2019-01-02T11:20:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f43e204"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl23j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_172399181_*|*_1_*:*_1_*:*_518497004_*|*_10007_*:*_1_*:*_59761976_*|*_5_*:*_2_*:*_363097664_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_18777098"}], "description": "ezbake 1.9.1 sets TasksMax to 4915", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15051", "fixedVersions": ["SERVER 5.3.7", "SERVER 6.0.3", "SERVER 6.2.0"], "id": "15051", "issueType": "Task", "key": "SERVER-2416", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2019-01-15T13:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump puppetserver to ezbake >= 1.9.1 to pull in TasksMax", "timeSpent": "PT0S", "updated": "2019-01-15T13:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2018-12-21T12:16:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47c0f7fa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrvlb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1658908001_*|*_10007_*:*_1_*:*_675170366_*|*_3_*:*_1_*:*_85195226_*|*_5_*:*_1_*:*_0"}], "description": "When I run ticketmatch as a server release lead I want to see a section of the output that calls out the tickets in PUP (or elsewhere) that are assigned to the Server team and have an equivalent release version so I can triage them at the same time as with other tickets the Server team manages (the ones in the SERVER project) for the release.\n\nWhen I run ticketmatch as an agent release lead I want to see the tickets in PUP broken down by team responsible, so that I know who's responsible for each.", "duedate": "2019-01-16T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15724", "fixedVersions": [], "id": "15724", "issueType": "Improvement", "key": "SERVER-2415", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2019-01-18T12:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update ticketmatch to show tickets from other projects that are assigned to team X", "timeSpent": "PT0S", "updated": "2019-01-18T12:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There were no release branches or pipelines to clean up.", "created": "2019-01-14T16:34:00.000000"}], "components": [], "created": "2018-12-21T07:23:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c8f8398"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9381"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrvbb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2390_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2106668633"}], "description": "(Initial planned release date: 2019-01-15)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-01-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.5 Release - 2019-01-15\n", "estimate": "PT0S", "externalId": "15483", "fixedVersions": [], "id": "15483", "issueType": "Task", "key": "SERVER-2414", "labels": [], "originalEstimate": "PT0S", "parent": "22209", "parentSummary": "Puppet Platform 6.0.5 Release - 2019-01-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-14T16:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.0.3)", "timeSpent": "PT0S", "updated": "2019-01-14T16:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-12-21T07:23:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6db68a00"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9381"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrvav:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2487_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1833461468"}], "description": "(Initial planned release date: 2019-01-15)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\n", "duedate": "2019-01-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.5 Release - 2019-01-15\n", "estimate": "PT0S", "externalId": "14849", "fixedVersions": [], "id": "14849", "issueType": "Task", "key": "SERVER-2413", "labels": [], "originalEstimate": "PT0S", "parent": "22209", "parentSummary": "Puppet Platform 6.0.5 Release - 2019-01-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-11T12:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.0.3)", "timeSpent": "PT0S", "updated": "2019-01-11T12:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Not creating a release branch unless necessary.", "created": "2019-01-10T09:17:00.000000"}], "components": [], "created": "2018-12-21T07:23:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e8e03a3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9381"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrvan:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2488_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1734880239"}], "description": "(Initial planned release date: 2019-01-15)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-01-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.5 Release - 2019-01-15\n", "estimate": "PT0S", "externalId": "17453", "fixedVersions": [], "id": "17453", "issueType": "Task", "key": "SERVER-2412", "labels": [], "originalEstimate": "PT0S", "parent": "22209", "parentSummary": "Puppet Platform 6.0.5 Release - 2019-01-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-10T09:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.0.3)", "timeSpent": "PT0S", "updated": "2019-01-10T09:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-12-21T07:23:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50ab766e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9381"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrvaf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2883_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1734856720"}], "description": "(Initial planned release date: 2019-01-15)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-01-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.5 Release - 2019-01-15\n", "estimate": "PT0S", "externalId": "17179", "fixedVersions": [], "id": "17179", "issueType": "Task", "key": "SERVER-2411", "labels": [], "originalEstimate": "PT0S", "parent": "22209", "parentSummary": "Puppet Platform 6.0.5 Release - 2019-01-15\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-10T09:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.0.3)", "timeSpent": "PT0S", "updated": "2019-01-10T09:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There were no release branches or pipelines to clean up.", "created": "2019-01-14T16:34:00.000000"}], "components": [], "created": "2018-12-21T07:14:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10f8aca0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9373"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrv2v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2566_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2107190038"}], "description": "(Initial planned release date: 2019-01-15)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2019-01-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.10 Release - 2019-01-15", "estimate": "PT0S", "externalId": "15723", "fixedVersions": [], "id": "15723", "issueType": "Task", "key": "SERVER-2410", "labels": [], "originalEstimate": "PT0S", "parent": "23220", "parentSummary": "Puppet Platform 5.5.10 Release - 2019-01-15", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-14T16:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.7)", "timeSpent": "PT0S", "updated": "2019-01-14T16:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-12-21T07:14:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d61a6ca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9373"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrv2f:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3520_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1833985229"}], "description": "(Initial planned release date: 2019-01-15)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\n", "duedate": "2019-01-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.10 Release - 2019-01-15", "estimate": "PT0S", "externalId": "15050", "fixedVersions": [], "id": "15050", "issueType": "Task", "key": "SERVER-2409", "labels": [], "originalEstimate": "PT0S", "parent": "23220", "parentSummary": "Puppet Platform 5.5.10 Release - 2019-01-15", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-11T12:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.7)", "timeSpent": "PT0S", "updated": "2019-01-11T12:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Merge ups are all up to date, going to not create a release branch unless something comes up and we need to.", "created": "2019-01-08T11:18:00.000000"}], "components": [], "created": "2018-12-21T07:14:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@500027e2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9373"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrv27:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2875_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1569831993"}], "description": "(Initial planned release date: 2019-01-15)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2019-01-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.10 Release - 2019-01-15", "estimate": "PT0S", "externalId": "14846", "fixedVersions": [], "id": "14846", "issueType": "Task", "key": "SERVER-2408", "labels": [], "originalEstimate": "PT0S", "parent": "23220", "parentSummary": "Puppet Platform 5.5.10 Release - 2019-01-15", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-08T11:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.7)", "timeSpent": "PT0S", "updated": "2019-01-08T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-12-21T07:14:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@470e784e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9373"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrv1z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2727_*|*_3_*:*_1_*:*_2688416_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1566983704"}], "description": "(Initial planned release date: 2019-01-15)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2019-01-08T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.10 Release - 2019-01-15", "estimate": "PT0S", "externalId": "17452", "fixedVersions": [], "id": "17452", "issueType": "Task", "key": "SERVER-2407", "labels": [], "originalEstimate": "PT0S", "parent": "23220", "parentSummary": "Puppet Platform 5.5.10 Release - 2019-01-15", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-08T11:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.7)", "timeSpent": "PT0S", "updated": "2019-01-08T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] something to consider for upcoming releases.  We think this has a pretty high ROI/ low cost.  ", "created": "2019-04-09T11:27:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Is this already happening in PE? Does your ROI calculation include SERVER-2405?", "created": "2019-04-09T14:38:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So there's a chance that this could break backwards compatibility against agents that don't correctly handle the 503 (Puppet < 5.3.0). Where would you imagine this landing?", "created": "2019-04-09T14:45:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I think the assumption is that SERVER-2405 is implemented before this.  So it shouldn't break anything.  ", "created": "2019-04-09T14:47:00.000000"}, {"author": "5e3375e183d74c0e821851f3", "body": "It sounds like we would want to add PUP-9563 as a prerequisite as well.", "created": "2019-04-11T17:00:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Does PE enforce that agents must be of a certain version (like only supporting the agents as old as the LTS)? If PE enforces that say 2019.1 will only talk to agents as old as 2018.1 then this becomes a simple configuration change in PE.", "created": "2019-04-11T21:42:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "There's no enforcement of agent versions in PE.  ", "created": "2019-04-12T09:55:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "PE enforces a cutoff for the core infrastructure, i.e. nodes hosting masters and compilers, but agents are allowed to float wherever they please. This allows the upgrade of 1000s of agents to be decoupled from the upgrade of the core infrastructure and also facilitates migrating agents from older installations to newer ones.", "created": "2019-04-12T16:10:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Bummer, this is a two resource change in the puppet enterprise module for Kearney if you can assume agents are at least as new as Irving.", "created": "2019-04-12T16:31:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] Is this good to go after your other PR?", "created": "2020-02-06T14:54:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think that's true, this should be possible now with https://github.com/puppetlabs/puppetserver/pull/2247.", "created": "2021-02-23T17:58:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Yeah, SERVER-2405 added version checking that exempts ancient or non-puppet traffic from the limit. However, we may want to consider SERVER-2720 before flipping it on by default in order to limit the impact on a single agent run.", "created": "2021-02-24T12:48:00.000000"}], "components": [], "created": "2018-12-19T12:36:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61bdc287"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ru:91j6"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/19"}], "description": "Puppet server 5.1.0 added a {{max-queued-requests}} setting that will terminate agent requests early when the number of requests waiting for a JRuby instance exceeded a limit imposed by the setting (SERVER-1767). The requests are failed with a HTTP 503 error that includes a Retry-After header set to a randomized number of seconds that the agent should sleep before retrying the request. This randomized sleep allows the server to \"re-splay\" thundering herds by spacing the agents out without requiring the intervention of human operators.\n\nCurrently, {{max-queued-requests}} is off by default. But, we should consider changing the default to enabled as the setting not only re-splays agent runs but ensures that some Jetty workers are free to handle requests that do not require a Ruby interpreter --- such as performance metric snapsots.\n\nThe \"ideal\" default for this limit is likely some multiple of {{max-active-jrubies}} with a hard cap that ensures 25% -- 33% of the Jetty worker pool is available to serve non-Ruby requests. We should also consider lowering the default for {{max-retry-delay}} from 30 minutes to 5 or 10 minutes so that agent runs are not overly delayed.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16536", "fixedVersions": [], "id": "16536", "issueType": "Improvement", "key": "SERVER-2406", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable max-queued-requests by default", "timeSpent": "PT0S", "updated": "2023-03-05T13:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Marked as a blocker to enabling max-queued-requests by default (SERVER-2406). This may also solve PCP-855 in passing as pxp-agent likely doesn't set an X-Puppet-Version header field and there is currently little to gain by throttling and splaying pxp-agent requests as the requests are mostly file downloads, which should complete quickly.", "created": "2018-12-19T12:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Since we had a docs ticket about the issue with older agents, we should probably have a release note here. I'll give it a shot, but please update it if needed!", "created": "2020-01-02T11:39:00.000000"}], "components": [], "created": "2018-12-19T12:27:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@299f0eff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrt8v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server will no longer issue 503 responses to older agents that can't handle it, which allows the {{max-queued-requests}} setting to safely be used with older agents (though it still won't cause them to retry)."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_515476523_*|*_1_*:*_1_*:*_7579702_*|*_10007_*:*_1_*:*_1184239468_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_31549924626"}], "description": "Puppet server 5.1.0 added a {{max-queued-requests}} setting that will terminate agent requests early when the number of requests waiting for a JRuby instance exceeded a limit imposed by the setting (SERVER-1767). The requests are failed with a HTTP 503 error that includes a Retry-After header set to a randomized number of seconds that the agent should sleep before retrying the request. This randomized sleep allows the server to \"re-splay\" thundering herds by spacing the agents out without requiring the intervention of human operators.\n\nThe issue is that agents older than Puppet 5.3 don't have logic for reacting to the presence of a Retry-After header. As a result these older agents will \"fail fast\" and reach the end of their runs very quickly. When an agent reaches the end of a run, it schedules the next run --- which means older agents will end up scheduling at the same time and thus create a thundering herd.\n\nDue to this limitation, documentation on the {{max-queued-requests}} setting advises against using it unless the agent population is fully on 5.3 or newer (DOC-3845). We can improve this situation by updating [the logic that enforces max-queued-requests|https://github.com/puppetlabs/puppetserver/blob/5.3.6/src/clj/puppetlabs/puppetserver/jruby_request.clj#L66] to not impose the request limit if the X-Puppet-Version header indicates an older agent or is missing. This change would allow {{max-queued-requests}} to be used safely in populations that include older agents.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14836", "fixedVersions": ["SERVER 5.3.11", "SERVER 6.3.3", "SERVER 6.8.0"], "id": "14836", "issueType": "Improvement", "key": "SERVER-2405", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2020-01-08T10:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Skip enforcement of max-queued-requests if agent version is too old", "timeSpent": "PT0S", "updated": "2020-01-09T14:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Minor correction: we announced \"experimental\" support for Java 11.\n\nPrior to 6.1.0 we had no automated testing of Java 11, if it passed it was purely accidental, we now have unit style tests for Java 11 and they are all currently passing. We have not made it to package level testing, hence the \"experimental\" nature of the support.", "created": "2018-12-18T16:12:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "I just tested Puppet Server 6.1.0 on CentOS 7 with OpenJDK 11, and it crashes with a similar (if not identical) stack trace.\n\nSo the fact that I initially encountered this problem on Fedora 29 isn't relevant. The problem is with Puppet Server 6.1.0.", "created": "2018-12-18T16:17:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], I understand your point.\n\nBut my point is that from a user perspective, this \"enhancement\" from the release notes:\n\n{quote}\nPuppet Server now has experimental support for Java 11. This has been tested with low level tests but has not gone through high level packaged acceptance tests. Consequently, we consider this support \u201cexperimental\u201d, with full support coming later in 2019 for the latest long term supported version of Java.\n{quote}\n\n\u2026_is an utter lie_. From a user perspective, there is no possible sense that you can claim even experimental support for Java 11 in 6.1, when 6.1 _outright crashes_ if you attempt to use Java 11. This is especially egregious considering that 6.0 _did_ work with Java 11, even if that was only by accident.\n\nDocumentation of enhancements versus regressions in a new release must always be from the user's perspective. Or, to put it more colorfully: don't pee on the users' heads and tell them it's raining.\n\nI suggest deleting the above bullet point from the release notes, and adding either of the below bullet points to the known issues:\n\n{quote}\nFor those of you who were batsh\\*t crazy enough to try using 6.0 with Java 11 and realized that it actually worked, you'll notice that 6.1 _doesn't_ work with Java 11. So, 1) we admire your bravery/stupidity, and 2) sorry about that. But we had to break Java 11 support temporarily in order to work on Official\u2122 support for Java 11 done right, which will land later in 2019. So quit your whining", "created": "2018-12-18T17:36:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "What do you think the portion of users are who will use the package, vs running from source, when testing out Java 11?", "created": "2018-12-18T18:13:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I appreciate you opening this ticket, btw, we love to hear first hand the good and the bad of how working with Puppet Server is going.\n\nI'm still curious about what you think the portion of users who would try out experimental Java 11 support would do so from the packaged artifacts vs running from source or compiling it themselves? You might have inferred from the \"this is passing low level tests\" that we have a high confidence in this code from source but aren't testing packaged artifacts of it (I don't think we'd mark it as experimental support if we were).\n\nI'll look into updating the release notes to call out that the experimental support is only for those who want to try it out from source/compile it themselves.\n\nI looked through the stacktrace and have built Puppet Server on a CentOS 7 box several times to confirm why this is happening and it looks like this was caused with our move across the projects to AOTing clojure code (with the hopes improved start up times).\n\nWhile the code works if you compile Puppet Server's using JDK 11, it looks like there's a dependency of a dependency (dynapath) that is doing some \"if running in Java 8 try this api and if running in Java 9 or above use this api\". It looks like in this commit ([38fae3f|https://github.com/tobias/dynapath/commit/38fae3fd7ffeeff3d0ec435c02f5f4a36f0d46e9]) they fixed the bug where they were doing that at compile time and now properly do it at run time.\n\nI'll bump that dependency soon and it should come out in the next release of Puppet Server, though I still can't say if every will be perfect (it started in my test but I definitely didn't run our full acceptance suite against it).", "created": "2018-12-19T15:01:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], I don't understand your question.\n\nI suspect you are under the assumption that because the RHEL7 puppetserver package contains an explicit dependency on {{java-1.8.0-openjdk-headless}}:\n\n{noformat}\n$ rpm -q --requires puppetserver | grep java\njava-1.8.0-openjdk-headless\n{noformat}\n\n\u2026that puppetserver will always launch with OpenJDK 8.\n\nThis is _not_ the case, due to this excerpt from {{/etc/sysconfig/puppetserver}}:\n\n{noformat}\n# Location of your Java binary (version 7 or higher)\nJAVA_BIN=\"/usr/bin/java\"\n{noformat}\n\nOn Red Hat / CentOS / Fedora systems, {{/usr/bin/java}} is controlled through the alternatives(8) system:\n\n{noformat}\n$ ls -lsa /usr/bin/java\n4 lrwxrwxrwx. 1 root root 22 Dec 19 11:43 /usr/bin/java -> /etc/alternatives/java*\n{noformat}\n\nThis means that the puppetserver process will be launched with whatever JDK the system prefers, which will not necessarily be OpenJDK 8.\n\nIn my case, I installed the OpenJDK 11 packages as soon as they were available:\n\n{noformat}\n$ yum install java-11-openjdk-headless\n{noformat}\n\nIf both OpenJDK 8 and OpenJDK 11 are installed, and alternatives(8) is permitted to choose the \"best\" Java automatically, OpenJDK 8 will win:\n\n{noformat}\n$ alternatives --display java | grep -v slave\njava - status is auto.\n link currently points to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-11.fc29.x86_64/jre/bin/java\n/usr/lib/jvm/java-11-openjdk-11.0.1.13-4.fc29.x86_64/bin/java - family java-11-openjdk.x86_64 priority 1\n/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-11.fc29.x86_64/jre/bin/java - family java-1.8.0-openjdk.x86_64 priority 1800191\nCurrent `best' version is /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-11.fc29.x86_64/jre/bin/java.\n{noformat}\n\nBut because I explicitly wanted to test to see what Java applications would break with OpenJDK 11, I explicitly set OpenJDK 11 to be the default:\n\n{noformat}\n$ alternatives --set java java-11-openjdk.x86_64\n\n$ alternatives --display java | grep -v slave\njava - status is manual.\n link currently points to /usr/lib/jvm/java-11-openjdk-11.0.1.13-4.fc29.x86_64/bin/java\n/usr/lib/jvm/java-11-openjdk-11.0.1.13-4.fc29.x86_64/bin/java - family java-11-openjdk.x86_64 priority 1\n/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-11.fc29.x86_64/jre/bin/java - family java-1.8.0-openjdk.x86_64 priority 1800191\nCurrent `best' version is /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-11.fc29.x86_64/jre/bin/java.\n\n$ /usr/bin/java -version\nopenjdk version \"11.0.1\" 2018-10-16\nOpenJDK Runtime Environment 18.9 (build 11.0.1+13)\nOpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode, sharing)\n{noformat}\n\nIf it is the case that puppetserver should be launched _only_ using OpenJDK 8, then {{/etc/sysconfig/puppetserver}} is wrong. It should instead use the alternatives(8) paths to ensure it launches with its desired JDK:\n\n{noformat}\n# Currently only OpenJDK 8 is guaranteed to work.  Other Java JDKs (e.g.,\n# OpenJDK 11) may or may not work, so change this at your own risk!\nJAVA_BIN=\"/etc/alternatives/jre_1.8.0_openjdk/bin/java\"\n{noformat}\n\nOtherwise, all that is required for a system administrator to configure Puppet Server to launch with OpenJDK 11 is to run:\n\n{noformat}\n$ yum install java-11-openjdk-headless\n$ alternatives --set java java-11-openjdk.x86_64\n{noformat}\n\n\u2026and boom, Puppet Server is broken, using the official Puppet Server RPM packages, without touching a single Puppet Server configuration file. Running from source or manually compiling Puppet Server is _not_ necessary.\n\nI would argue that forward-thinking sysadmins will configure development/beta/test systems to use OpenJDK 11 as the default JDK, for the exact same reasons I did (to find incompatibilities in advance).", "created": "2018-12-20T14:30:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm aware of how alternatives work.\n\nWe also have FOSS users who run releases from source and other users that build their own packages.\n\nMy assumption was that the population of users who would be most likely to try Java 11 would include a higher percentage of those who also run from source or build their own packages than one typically sees. I assume those using packages are the majority, but I don't know if there's a meaningful portion of those trying out Java 11 using non official package based installation methods, or if it's just like three BSD dudes running from source and a government guy building his own packages, ya know?", "created": "2018-12-20T15:02:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "I'm not sure the assumption that the population of users who would be most likely to try Java 11 would include a higher percentage of those who also run Puppet Server from source or build their own packages is a valid one.\n\nRed Hat pushed {{java-11-openjdk}} RPMs to RHEL7 at the end of October. Red Hat fully supports OpenJDK 11. And while Red Hat and the OpenJDK folks have promised to continue security updates for OpenJDK 8, the writing is on the wall: OpenJDK 8 is legacy, and all sites should be preparing to transition to OpenJDK 11.\n\nThat's why I configured my test/development systems to use OpenJDK 11 by default. I wasn't specifically trying to break Puppet Server", "created": "2018-12-20T15:58:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "For background we did have some company sponsored work to prepare for, and potentially support Java 11 sooner rather than later, with Redhat announcing support for Java 8 until 2023 (only a year less than Java 11) the steam ran out of that endeavor last summer. While we'll probably have official Java 11 support sometime next year there's no commitments as to when exactly and the work necessary for us to build and test packages with Java 11 is currently unscheduled (assuming backwards compatibility in a minor releases we run the oldest minor that we can so we don't accidentally depend on a library that is only available in newer releases, consequently we run EL 7.2 in our infra).\n\nTo the extent we have \"experimental\" support is to the degree some of us developers have \"seen the writing on the wall\" and want to engage with the community and make the inevitable transition as easy as possible for everyone. We've done what we've can and tested this in our dev environments and in travis and have high confidence from a low level source perspective and hoped that that degree of confidence would be welcomed by the community. I'm sorry, that it worked before based on our earlier 9+ support work and that it doesn't work when installed from packages with this release, none of us were intending to \"pee on the [your]\u00a0head and tell [you]\u00a0it's raining\".\n\nI've opened PRs to update the release notes and fix the dependency that's causing this issue.", "created": "2018-12-21T17:09:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The PR bumping that dependency in puppetserver is https://github.com/puppetlabs/puppetserver/pull/1935.", "created": "2019-01-07T14:32:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] should this be moved to 'Ready for CI' (since it appears that the associated PR has been merged)?", "created": "2019-01-08T08:34:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We ran into an issue with the dynapath update, will need to keep investigating.", "created": "2019-01-08T09:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "With the fix in SERVER-2421, puppetserver should now once again be able to start on Java 11. Note that reloading is still broken, and seems to have always been, see SERVER-2423.", "created": "2019-01-09T17:37:00.000000"}], "components": ["Puppet Server"], "created": "2018-12-18T16:06:00.000000", "creator": "62438a418678e9007059bcca", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12c19f5b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrstz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This fixes a dependency issue, allowing Puppet Server packages to be started under Java 11."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_262978054_*|*_10007_*:*_1_*:*_1643268704_*|*_5_*:*_1_*:*_1352083572_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:* 6.1.0\n*Puppet Server Version:* 6.1.0\n*OS Name/Version:* Fedora 29 (using RHEL7 packages)\n\nI run Puppet Server on a Fedora 29 host, by using the Puppet packages in the RHEL7 yum repository.\n\nFor the last month or so, I have been testing running Puppet Server 6.0.x using OpenJDK 11. As far as I can tell, this worked perfectly. The only artifact I noticed was this start-up message:\n\n{noformat}\n2018-12-17T11:38:50.020003-05:00 myhost puppetserver[1878]: WARNING: An illegal reflective access operation has occurred\n2018-12-17T11:38:50.020003-05:00 myhost puppetserver[1878]: WARNING: Illegal reflective access by org.jruby.ext.openssl.SecurityHelper (file:/tmp/jruby-1894/jruby15087714324251502022jopenssl.jar) to constructor java.security.cert.CertificateFactory(java.security.cert.CertificateFactorySpi,java.security.Provider,java.lang.String)\n2018-12-17T11:38:50.020003-05:00 myhost puppetserver[1878]: WARNING: Please consider reporting this to the maintainers of org.jruby.ext.openssl.SecurityHelper\n2018-12-17T11:38:50.020003-05:00 myhost puppetserver[1878]: WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\n2018-12-17T11:38:50.021000-05:00 myhost puppetserver[1878]: WARNING: All illegal access operations will be denied in a future release\n{noformat}\n\nSo I was excited to see the Puppet Server 6.1.0 release, with \"official\" support for OpenJDK 11.\n\nBut, irony of ironies, if I attempt to start Puppet Server 6.1.0 with OpenJDK 11, it outright dies. Here's the stack backtrace:\n\n{noformat}\nDec 18 17:59:54 myhost systemd[1]: Starting puppetserver Service...\nDec 18 18:00:05 myhost puppetserver[4700]: Exception in thread \"main\" java.lang.ExceptionInInitializerError\nDec 18 18:00:05 myhost puppetserver[4700]: #011at dynapath.defaults__init.load(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at dynapath.defaults__init.<clinit>(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName0(Native Method)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName(Class.java:398)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2204)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2213)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.loadClassForName(RT.java:2232)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:450)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:426)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load$fn__6548.invoke(core.clj:6046)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.invokeStatic(core.clj:6045)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.doInvoke(core.clj:6029)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:408)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invokeStatic(core.clj:5848)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invoke(core.clj:5843)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.invokeStatic(core.clj:5887)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.doInvoke(core.clj:5868)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:142)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.invokeStatic(core.clj:5925)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.doInvoke(core.clj:5909)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.invokeStatic(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.doInvoke(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:421)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at dynapath.util$loading__6434__auto____14850.invoke(util.clj:1)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at dynapath.util__init.load(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at dynapath.util__init.<clinit>(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName0(Native Method)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName(Class.java:398)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2204)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2213)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.loadClassForName(RT.java:2232)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:450)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:426)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load$fn__6548.invoke(core.clj:6046)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.invokeStatic(core.clj:6045)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.doInvoke(core.clj:6029)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:408)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invokeStatic(core.clj:5848)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invoke(core.clj:5843)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.invokeStatic(core.clj:5887)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.doInvoke(core.clj:5868)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:142)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.invokeStatic(core.clj:5925)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.doInvoke(core.clj:5909)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.invokeStatic(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.doInvoke(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:421)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.kitchensink.classpath$loading__6434__auto____14848.invoke(classpath.clj:1)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.kitchensink.classpath__init.load(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.kitchensink.classpath__init.<clinit>(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName0(Native Method)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName(Class.java:398)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2204)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2213)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.loadClassForName(RT.java:2232)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:450)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:426)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load$fn__6548.invoke(core.clj:6046)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.invokeStatic(core.clj:6045)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.doInvoke(core.clj:6029)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:408)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invokeStatic(core.clj:5848)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invoke(core.clj:5843)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.invokeStatic(core.clj:5887)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.doInvoke(core.clj:5868)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:142)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.invokeStatic(core.clj:5925)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.doInvoke(core.clj:5909)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.invokeStatic(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.doInvoke(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:457)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.trapperkeeper.plugins$loading__6434__auto____14846.invoke(plugins.clj:1)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.trapperkeeper.plugins__init.load(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.trapperkeeper.plugins__init.<clinit>(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName0(Native Method)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName(Class.java:398)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2204)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2213)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.loadClassForName(RT.java:2232)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:450)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:426)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load$fn__6548.invoke(core.clj:6046)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.invokeStatic(core.clj:6045)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.doInvoke(core.clj:6029)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:408)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invokeStatic(core.clj:5848)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invoke(core.clj:5843)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.invokeStatic(core.clj:5887)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.doInvoke(core.clj:5868)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:142)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.invokeStatic(core.clj:5925)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.doInvoke(core.clj:5909)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.invokeStatic(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.doInvoke(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:1096)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.trapperkeeper.core$loading__6434__auto____199.invoke(core.clj:1)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.trapperkeeper.core__init.load(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.trapperkeeper.core__init.<clinit>(Unknown Source)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName0(Native Method)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName(Class.java:398)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2204)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2213)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.loadClassForName(RT.java:2232)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:450)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.load(RT.java:426)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load$fn__6548.invoke(core.clj:6046)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.invokeStatic(core.clj:6045)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load.doInvoke(core.clj:6029)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:408)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invokeStatic(core.clj:5848)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_one.invoke(core.clj:5843)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.invokeStatic(core.clj:5887)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_lib.doInvoke(core.clj:5868)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:142)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.invokeStatic(core.clj:5925)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$load_libs.doInvoke(core.clj:5909)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:659)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.invokeStatic(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$require.doInvoke(core.clj:5947)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.invoke(RestFn.java:408)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.trapperkeeper.main$_main.invokeStatic(main.clj:6)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:4)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.Var.applyTo(Var.java:702)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.core$apply.invokeStatic(core.clj:657)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.main$main_opt.invokeStatic(main.clj:317)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.main$main_opt.invoke(main.clj:313)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.main$main.invokeStatic(main.clj:424)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.main$main.doInvoke(main.clj:387)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RestFn.applyTo(RestFn.java:137)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.Var.applyTo(Var.java:702)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.main.main(main.java:37)\nDec 18 18:00:05 myhost puppetserver[4700]: Caused by: java.lang.ClassNotFoundException: sun.misc.Launcher$ExtClassLoader\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName0(Native Method)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at java.base/java.lang.Class.forName(Class.java:398)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2204)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at clojure.lang.RT.classForName(RT.java:2213)\nDec 18 18:00:05 myhost puppetserver[4700]: #011at dynapath.defaults$fn__14921.<clinit>(defaults.clj:14)\nDec 18 18:00:05 myhost puppetserver[4700]: #011... 151 more\nDec 18 18:00:05 myhost puppetserver[4700]: Background process 4707 exited before start had completed\nDec 18 18:00:05 myhost systemd[1]: puppetserver.service: Control process exited, code=exited status=1\nDec 18 18:00:05 myhost systemd[1]: puppetserver.service: Failed with result 'exit-code'.\nDec 18 18:00:05 myhost systemd[1]: Failed to start puppetserver Service.\n{noformat}\n\nIf I switch the default JDK back to OpenJDK 8, then Puppet Server starts normally.\n\n*Desired Behavior:*\n\nPuppet Server 6.1.x should not die with OpenJDK 11\u2014especially since Puppet Server 6.0.x worked just fine with OpenJDK 11!\n\n*Actual Behavior:*\n\nPuppet Server 6.1.x dies with OpenJDK 11.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15722", "fixedVersions": ["SERVER 6.2.0"], "id": "15722", "issueType": "Bug", "key": "SERVER-2404", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "62438a418678e9007059bcca", "resolution": "Fixed", "resolutionDate": "2019-01-09T17:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 6.1.0 dies with OpenJDK 11, but 6.0.2 worked", "timeSpent": "PT0S", "updated": "2019-01-25T09:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] do you know if anyone from the installer team ever looked into this as part of regen workflows? Is this module used in PE?", "created": "2019-09-27T17:18:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "It is not shipped with PE.  \n\nI don't think it was ever looked at.  I believe this module is mostly for CA expiration which is much less common than \"I messed up my certs and need to regenerate them.\" ", "created": "2019-09-30T10:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This module appears to be unmaintained. If anyone wants to use it and is having trouble with the modern CA, we can revisit this.", "created": "2021-02-25T10:56:00.000000"}], "components": [], "created": "2018-12-17T17:46:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6bc12b99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrrzz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24870846730_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_44310938087"}], "description": "There exists a module for regenerating the certs of a puppet infrastructure: https://github.com/puppetlabs/puppetlabs-certregen. This has not yet been evaluated for compatibility with Puppet 6. We should test it out and see if it works, and if it doesn't, file the tickets necessary to fix it.", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "15482", "fixedVersions": [], "id": "15482", "issueType": "Improvement", "key": "SERVER-2403", "labels": [], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2021-02-25T10:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate certregen module's puppet 6 compatibility", "timeSpent": "PT0S", "updated": "2021-02-25T10:56:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:0605a129-ce49-46e3-912d-378334931850", "created": "2018-12-16T18:35:00.000000", "name": "puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10967"}], "comments": [{"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": "Note the 'unknown' file type.", "created": "2018-12-16T18:39:00.000000"}, {"author": "623a4a338d8b9c0068b7e30f", "body": "It's actually a jruby/jnr-posix bug.\n\n[https://github.com/jruby/jruby/issues/5521]\n [https://github.com/jnr/jnr-posix/issues/126]\n{code}root@puppet:~ # jirb\n irb(main):001:0> File.stat(\"/usr/local/etc/puppet\").ftype()\n => \"blockSpecial\"\n irb(main):002:0> File.stat(\"/usr/local/etc/puppet/puppet.conf\").ftype()\n => \"unknown\"\n{code}\n{code}root@puppet:~ # irb\n irb(main):001:0> File.stat(\"/usr/local/etc/puppet\").ftype()\n => \"directory\"\n irb(main):002:0> File.stat(\"/usr/local/etc/puppet/puppet.conf\").ftype()\n => \"file\"\n{code}", "created": "2018-12-29T21:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing, since it sounds like this is a bug outside of our software. Please reopen if you think there's something for Puppet to do here.", "created": "2019-09-27T17:16:00.000000"}], "components": ["Puppet Server"], "created": "2018-12-16T18:35:00.000000", "creator": "557058:0605a129-ce49-46e3-912d-378334931850", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46170cf9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrqjr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24615604110_*|*_6_*:*_1_*:*_0"}], "description": "Good day,\n\n\u00a0\n\nOn FreeBSD 12.0-RELEASE, puppetserver 6.0.2 is unable to start correctly for what appears to be a file detection issue, or perhaps a permission issue, though all the permissions look to be in order, from what I can tell.\n\n\u00a0\n\nWhere is the manifest that is run when puppetserver starts for the first time?\u00a0 Is there a way to see what exactly the failure is?\u00a0 Perhaps I'm missing it in the attached logs.\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17451", "fixedVersions": [], "id": "17451", "issueType": "Bug", "key": "SERVER-2402", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0605a129-ce49-46e3-912d-378334931850", "resolution": "Fixed", "resolutionDate": "2019-09-27T17:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver6 unable to start on FreeBSD 12.0-RELEASE", "timeSpent": "PT0S", "updated": "2019-09-27T17:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This has been merged everywhere in FOSS and the necessary PE projects, I will leave this open until its finished promoting and running in the Kearney HA tests (should happen ~6pm PT today).", "created": "2018-12-14T14:57:00.000000"}], "components": [], "created": "2018-12-13T12:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66d8fb1d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": ["Impediment"]}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzroxz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_256895466_*|*_1_*:*_1_*:*_26217_*|*_10007_*:*_1_*:*_70710558_*|*_3_*:*_1_*:*_10290327_*|*_5_*:*_1_*:*_161260325_*|*_6_*:*_1_*:*_0"}], "description": "Previously the ca cli tool would check to see if the CA was down before it would offline generate certs for ca clients. This depended on catching a connection refused exception when trying to connect to the status endpoint for the CA.\n\nWith our new error handling for connection issues we catch all connection errors at lower level and raise a custom error handling. This causes the offline check to fail as it's trying to catch a different exception.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14835", "fixedVersions": ["SERVER 5.3.7", "SERVER 6.0.3", "SERVER 6.1.0"], "id": "14835", "issueType": "Bug", "key": "SERVER-2401", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-12-17T10:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Regression in error CA availability checking", "timeSpent": "PT0S", "updated": "2019-01-10T09:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-12-13T11:36:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d5f8117"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrorb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24899866047_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_77138658644"}], "description": "The CA CLI has a number of assumptions about when it can and cannot connect to a CA and how it can do so:\n # It should be able to connect to a CA for all normal maintenance operations.\n # It should not be able to connect to a CA for running its setup, import, or the generation/revocation of authorized certs.\n # It should honor server_list and and server in the same ways that the puppet agent does.\n\n\u00a0\n\nFailures to be able to do any of the above should result in helpful error messages.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "17450", "fixedVersions": [], "id": "17450", "issueType": "Improvement", "key": "SERVER-2400", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T11:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Write acceptance tests around ca-cli -> ca connectivity behaviors", "timeSpent": "PT0S", "updated": "2022-03-08T11:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks for the report, we'll try and update the defaults and docs!", "created": "2018-12-19T11:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Docs should have already been updated, all of our new point releases will include JAVA_ARGS_CLI in the defaults/sysconfig files.", "created": "2019-01-10T10:07:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The PE fix was merged Friday but didn't run this weekend for some reason. Triggered them this morning and they've recently passed.", "created": "2019-01-14T15:12:00.000000"}], "components": ["Puppet Server"], "created": "2018-12-13T05:25:00.000000", "creator": "557058:9a232d75-226a-48ff-9050-4ce1be3217aa", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70f1198f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrofr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The EZBake configs now allow you to specify JAVA_ARGS_CLI, which is used when using puppetserver subcommands to configure Java differently from what is needed for the service. Note that this was used by the CLI before, but just as an environment variable, not as an EZBake config option."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_540405560_*|*_10007_*:*_3_*:*_1973684640_*|*_3_*:*_1_*:*_76004056_*|*_5_*:*_2_*:*_171974748_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_119806965"}], "description": "*Puppet Server Version: 6.0.2-1bionic*\n\n*OS Name/Version: Ubuntu 18.04*\n\nAs [https://puppet.com/docs/puppetserver/6.0/known_issues.html] mentions\n\nediting /etc/default/puppetserver JAVA_ARGS with {{-Djava.io.tmpdir=/some/other/temporary/directory}} enables puppetserver to start successfully.\n\n\u00a0\n\nHowever the sub commands (puppetserver gem install ...) use JAVA_ARGS_CLI and there is no mention of it in the puppetserver default file and Google is not cooperating thus taking a long time to troubleshoot.\n\n\u00a0\n\n*Desired Behavior:*\n\n/etc/default/puppetserver to have an example for JAVA_ARGS_CLI\n\n*Actual Behavior:*\n\nIn 18.04 if there is a security requirement to have noexec for /tmp mount\n\npuppetserver gem install 'ANY_GEM' fails with the following stack trace\n\npuppetserver gem install vault --no-ri --no-rdoc \n io/console on JRuby shells out to stty for most operations \n NotImplementedError: flock unsupported or native support failed to load; see [http://wiki.jruby.org/Native-Libraries] \n flock at org/jruby/RubyFile.java:314 \n block in read_binary at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems.rb:851 \n open at org/jruby/RubyIO.java:1171 \n open at org/jruby/RubyKernel.java:307 \n read_binary at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems.rb:850\n fetch_spec at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/source.rb:146 \n spec at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/resolver/api_specification.rb:77\n add_always_install at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/resolver/installer_set.rb:78\n resolve_dependencies at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/dependency_installer.rb:474\n install_gem at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:194 \n block in install_gems at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:255\n each at org/jruby/RubyArray.java:1735 \n install_gems at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:251 \n execute at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/commands/install_command.rb:158 \n invoke_with_build_args at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command.rb:310 \n process_args at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command_manager.rb:169 \n run at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/command_manager.rb:139 \n run at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/gem_runner.rb:55 \n <main> at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/jgem:21\n load at org/jruby/RubyKernel.java:974 \n <main> at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/gem:1\n load at org/jruby/RubyKernel.java:974 \n <main> at -e:1\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16901", "fixedVersions": ["SERVER 5.3.7", "SERVER 6.0.3", "SERVER 6.2.0"], "id": "16901", "issueType": "Improvement", "key": "SERVER-2399", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a232d75-226a-48ff-9050-4ce1be3217aa", "resolution": "Fixed", "resolutionDate": "2019-01-14T15:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Include JAVA_ARGS_CLI example into /etc/default/puppetserver for Debian based systems", "timeSpent": "PT0S", "updated": "2019-01-15T23:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c107b761efb0069ce0479", "created": "2018-12-13T01:03:00.000000", "name": "image-2018-12-13-13-32-06-283.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10813"}], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:623c107b761efb0069ce0479] what does {{journalctl -xe}} show? Note {{puppetmaster}} is not a valid service name. See https://puppet.com/docs/puppetserver/6.0/restarting.html for more details. Please join the #puppet slack channel in https://slack.puppet.com/ to get help with this issue. I'm going to close this ticket.", "created": "2018-12-13T12:20:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2018-12-13T01:03:00.000000", "creator": "623c107b761efb0069ce0479", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a63d22d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzroef:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_40622674_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_7448"}], "description": "!image-2018-12-13-13-32-06-283.png!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14834", "fixedVersions": [], "id": "14834", "issueType": "Bug", "key": "SERVER-2398", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c107b761efb0069ce0479", "resolution": "Incomplete", "resolutionDate": "2018-12-13T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Not able to restart puppetserver to apply certificate changes", "timeSpent": "PT0S", "updated": "2018-12-13T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The pipelines have been removed from cjc and the mergeup of the tag into master is approved and pending merge. Once that's done I'll delete the branch.\n\nI don't have anything to note from the tickets this release, so I'm not expecting anything to do to update Winston.\n\nI'll leave this ticket open and in progress until after the retro in case there's anything that comes out of it that warrants updating Winston.", "created": "2018-12-17T16:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "PRs, merged. Deleting the branch.\n\nHowever, we'll need to at least update Winston somewhere to warn that between tag and ship the docker CI builds will fail.", "created": "2018-12-17T17:46:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Thanks [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], has that been done (and can we therefore resolve this issue)?", "created": "2018-12-20T12:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The winston update hasn't been done, was going to wait until after the release retro for that.", "created": "2018-12-20T12:02:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Nothing came out of the retro that I needed to add to winston. Opened [winston#214|https://github.com/puppetlabs/winston/pull/214/files]\u00a0for the previously noted docker issue.", "created": "2018-12-21T12:29:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This PR was just merged [https://github.com/puppetlabs/winston/pull/214#event-2061579279]\u00a0I don't believe it made it into the notes for the 5.3.x/6.0.x release tickets. /cc [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69].", "created": "2019-01-08T16:26:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for the reminder, I'll keep my eye out for that.", "created": "2019-01-08T16:37:00.000000"}], "components": [], "created": "2018-12-10T09:14:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71a11327"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9347"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl233:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2922_*|*_10007_*:*_1_*:*_1031371355_*|*_3_*:*_1_*:*_331059896_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_630967016"}], "description": "(Initial planned release date: 2018-12-18)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update [Winston|https://github.com/puppetlabs/winston] and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2018-12-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.1.0 Release - 2018-12-18\n", "estimate": "PT0S", "externalId": "16535", "fixedVersions": [], "id": "16535", "issueType": "Task", "key": "SERVER-2397", "labels": [], "originalEstimate": "PT0S", "parent": "27435", "parentSummary": "Puppet Platform 6.1.0 Release - 2018-12-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2019-01-02T10:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.1.0)", "timeSpent": "PT0S", "updated": "2019-01-08T16:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Our sole remaining blocker was\u00a0SERVER-2401 which was a regression caused when we fixed SERVER-2392, which was needed to continute support for HA after we completed\u00a0SERVER-2354.\n\nIt passed CI for HA on Friday night and no new regressions were found in our pipelines.\n\nWe will begin the release pipeline that will tag, build the tagged package, and stage it for release.", "created": "2018-12-17T10:42:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Tagged and staged", "created": "2018-12-17T11:40:00.000000"}], "components": [], "created": "2018-12-10T09:13:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@234be454"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9347"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl22v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2650_*|*_3_*:*_1_*:*_3497784_*|*_5_*:*_1_*:*_356507939_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_610097234"}], "description": "(Initial planned release date: 2018-12-18)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\n", "duedate": "2018-12-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.1.0 Release - 2018-12-18\n", "estimate": "PT0S", "externalId": "15944", "fixedVersions": [], "id": "15944", "issueType": "Task", "key": "SERVER-2396", "labels": [], "originalEstimate": "PT0S", "parent": "27435", "parentSummary": "Puppet Platform 6.1.0 Release - 2018-12-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-12-17T11:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.1.0)", "timeSpent": "PT0S", "updated": "2018-12-21T14:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I checked the github compare of 2.6.x, 2.x, 5.1.x, 5.3.x, and 6.0.x to master. 5.1.x has some docs changes that were never merged up. I've opened a PR to merge them into 5.3.x.\n\nI've created a 6.1.0-release branch and opened ci-job-configs PR to create a pipeline for it that promotes into kearney/nightlies and disabled master from doing those same promotions.\n\nI'm going to merge the missing docs changes into 5.3.x, then to 6.0.x and then open a PR against 6.1.0-release with the docs changes plus updating our rake task to pull latest updated agents from their release branch.\n\nSean says that branch will most likely be cut tomorrow morning afterwards we can merge that PR and then merge 6.1.0-release into master, that merge into 6.1.0-release should trigger a build that will be our release candidate and eventually promote it into PE, which will complete this ticket.", "created": "2018-12-12T16:57:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We cut the branch before the agent pipeline was stood up (it was running behind) and promoted into PE Friday afternoon.", "created": "2018-12-17T10:36:00.000000"}], "components": [], "created": "2018-12-10T09:13:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a6aa2f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9347"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl22n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2956_*|*_3_*:*_1_*:*_409082302_*|*_5_*:*_1_*:*_360342210_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_200691270"}], "description": "(Initial planned release date: 2018-12-18)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2018-12-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.1.0 Release - 2018-12-18\n", "estimate": "PT0S", "externalId": "15715", "fixedVersions": [], "id": "15715", "issueType": "Task", "key": "SERVER-2395", "labels": [], "originalEstimate": "PT0S", "parent": "27435", "parentSummary": "Puppet Platform 6.1.0 Release - 2018-12-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-12-17T10:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.1.0)", "timeSpent": "PT0S", "updated": "2018-12-21T14:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "With master as of:\n{code}\n15:01:52 puppetserver justin (master $%<>) \u2016 git rev-parse HEAD\nca4c01d42daf2a3911f073c541cae811321f247d\n{code}\nTicketmatch output:\n{code}\n15:01:10 sellout:puppetserver justin (master $%<>) \u2016 ruby ../ticketmatch/ticketmatch.rb\nEnter Git From Rev: 6.0.2\nEnter Git To Rev: |master|\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: |SERVER master| SERVER 6.1.0\n....\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 6.1.0)\nCPR-591\nCPR-650\nDOC-3180\nDOC-3822\nDOC-3825\nDOCUMENT-936\nDOCUMENT-951\nRE-11577\nSERVER-2315\nSERVER-2374\nTK-473\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA\n{code}", "created": "2018-12-12T16:04:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The SERVER tickets were test fixes that are targeted at 6.0.z or 6.y.\n\nThe remaining tickets are from supporting projects that don't necessary correspond to Server releases (ie the docs are built from source, the tk change went out in tk-jetty9 2.3.1 and will go out in all actively maintained components and their versions.\n\n\u00a0\n\nI've updated most of the tickets to include SERVER 6.1.0, though that only removes the SERVER tickets, the additional projects still are reported by ticketmatch despite me adding versions...", "created": "2018-12-12T16:15:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We updated the version in confluence last week when we were assigning roles for this release. Confirmed that everything is correct.", "created": "2018-12-12T16:16:00.000000"}], "components": [], "created": "2018-12-10T09:13:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@232bbab7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9347"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl22f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2733_*|*_5_*:*_1_*:*_771934756_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_198184636"}], "description": "(Initial planned release date: 2018-12-18)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2018-12-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.1.0 Release - 2018-12-18\n", "estimate": "PT0S", "externalId": "15480", "fixedVersions": [], "id": "15480", "issueType": "Task", "key": "SERVER-2394", "labels": [], "originalEstimate": "PT0S", "parent": "27435", "parentSummary": "Puppet Platform 6.1.0 Release - 2018-12-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-12-12T16:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.1.0)", "timeSpent": "PT0S", "updated": "2018-12-21T14:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This went through and failed CI. This \"feature\" works however it created a regression in a different feature. I'm going to close this completed as I've opened\u00a0SERVER-2401 for the regression itself.", "created": "2018-12-13T16:10:00.000000"}], "components": [], "created": "2018-12-04T10:36:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* CA CLI contacts the right server when {{server_list}} is in use"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c1f3023"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl227:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The `puppetserver ca` tool will now respect the `server_list` setting in puppet.conf for those users that have created their own high availability configuration using that feature."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_177482138_*|*_1_*:*_1_*:*_14319_*|*_3_*:*_1_*:*_423741160_*|*_5_*:*_1_*:*_486656083_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_196440811"}], "description": "Currently the CA CLI gem will only check the {{server}} setting for the name of the CA server. In an HA configuration, {{server_list}} is configured instead of {{server}}, so the gem does not connect to the right master (it attempts to contact the default \"puppet\"). When making requests, the gem should instead prefer {{server_list}} if it is set, and {{server}} otherwise, just like Puppet does.\n\nBecause the CA is always on the primary master, and the primary master is always first in the list (during failover and promotion the order is updated to reflect the new primary), it should be safe for us to just check the first element, and not do any fallback checking.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17449", "fixedVersions": ["SERVER 5.3.7", "SERVER 6.0.3", "SERVER 6.1.0"], "id": "17449", "issueType": "Bug", "key": "SERVER-2392", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-12-13T16:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA CLI does not respect server_list", "timeSpent": "PT0S", "updated": "2018-12-19T07:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I think the intention there was to honor an Accepts header of one of json, pson, or plain are specified, defaulting to if unspecified (and preferring if multiple are) JSON.", "created": "2018-12-03T10:07:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I'd expect {{Content-Type: text/plain}} in this case since the response body is text. Is this a case where we're setting the content-type header, but Jetty is generating the response body message?", "created": "2018-12-03T11:16:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Not 100% sure, we tell the framework we use the allowed [media types|https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L136], and the [logic|https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L221-L225] to determine if the resource exists, and expect it to do the right thing. Need to see if we're overriding that somewhere or if there's a bug in that framework (iirc, there were some other issues around content negotiation when we upgraded to a version compatible with jdk-9).", "created": "2018-12-03T11:39:00.000000"}, {"author": "5eb01b1f021ae30ba81b49e3", "body": "Do we have any work-around or hotfix for this issue. I do have the same issue and have to provide an solution for this.\u00a0", "created": "2020-09-04T09:10:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is a [bug|https://github.com/clojure-liberator/liberator/issues/300] in the library we use. The library author suggests a workaround that we could implement, but has not prioritized implementing a fix. I don't know where this sits on our priorities to fix - so may be some time.\n\nThe workaround would be handle the case client side when a 404 says it's json but returns plain text, as it will always do so for the \"certificate_status\" and \"certificate_statuses\" endpoints (the ones we use that library for). Specifically how would depend on the client.", "created": "2020-09-04T11:21:00.000000"}], "components": ["API", "Certificate Authority"], "created": "2018-12-03T05:45:00.000000", "creator": "623c12399b54ec0068b143b3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The content-type in API error resonses must match the acctual type of the content."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@100a00b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrglz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25784812586_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_75944829651"}], "description": "I noticed the following error when parsing responses from Puppet CA API.\n When the certificate-status endpoint for a non-existing certificate is accessed:\n\n{{GET /puppet-ca/v1/certificate_status/puppet-test-client.example.net?environment=production}}\n\nThe the response {{Content-Type}} is {{application/json;charset=utf-8}}, but the response is not in JSON format:\n\n{code}\n.HTTP/1.1 404 Not Found\nDate: Mon, 03 Dec 2018 12:02:07 GMT\nContent-Type: application/json;charset=utf-8\nVary: Accept\nX-Puppet-Version: 6.0.4\nContent-Length: 19\nServer: Jetty(9.4.z-SNAPSHOT)\n\nResource not found.\n{code}\n\nThe Content-Type must be text or the body should be in JSON format.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15943", "fixedVersions": [], "id": "15943", "issueType": "Bug", "key": "SERVER-2391", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12399b54ec0068b143b3", "resolution": "Won't Fix", "resolutionDate": "2022-02-22T15:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet CA API returns wrong content type on 404", "timeSpent": "PT0S", "updated": "2022-02-22T15:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We have already made this update, see https://github.com/puppetlabs/puppetserver/commit/6f01592bed7f0bd8cb679fddf04754313dd47be5 and the associated SERVER-2381. We currently are having issues upgrading to the latest point release of the 9.2 stream, but I think even 9.2.0 is enough to get the Ruby 2.5 support.\n\n[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] are there plans to update the [JRuby 9k version|https://github.com/puppetlabs/puppetserver/blob/5.3.x/project.clj#L3] we use in 5.x as well?", "created": "2018-11-29T15:58:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yeah, it should be in the next release of Puppet Server 6 (6.1). I'd defer to support for the 5.x as it would automatically go into PE LTS, consequently I'd wait until it has shipped in 6.1 to see if anything super weird falls out (nothing's happened in our testing).", "created": "2018-11-29T17:07:00.000000"}], "components": ["Puppet Server"], "created": "2018-11-29T15:54:00.000000", "creator": "557058:c6e00d75-91d2-45e1-9aaa-3b73d3418ffe", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f787d55"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1iv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Nov/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5721315_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_8897491843"}], "description": "*Puppet Version: 5 or 6*\n *Puppet Server Version: 5.x or 6.x*\n *OS Name/Version: N/A*\n\n*Desired Behavior:*\n\nLatest Puppet Server 5.x or 6.x release uses JRuby 9.2, which is Ruby 2.5.\u00a0 This also matches the Ruby that ships with Puppet and will be a supported version for quite a while.\n\n*Current Behavior:*\n\nPuppet Server 5.x or 6.x uses JRuby 9.1, which is Ruby 2.3.\u00a0 Ruby 2.3 is EOL in March of 2019.\u00a0 \n\nI presume there are already plans for a minor point release around that time to bump the jruby version but opening this just in case\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17448", "fixedVersions": ["SERVER 6.y"], "id": "17448", "issueType": "New Feature", "key": "SERVER-2390", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c6e00d75-91d2-45e1-9aaa-3b73d3418ffe", "resolution": "Fixed", "resolutionDate": "2019-03-12T18:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use JRuby 9.2 by March 2019", "timeSpent": "PT0S", "updated": "2019-03-12T18:01:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-11-28T15:10:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@459c525"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzreqn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26182832201_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_77141268244"}], "description": "We should check to see if cert we're revoking is the same as the cert we're connecting to to do the revoking and warn/maybe require an additional \"force\" kind of flag.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "16534", "fixedVersions": [], "id": "16534", "issueType": "Improvement", "key": "SERVER-2389", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Warn when attempting the revoke CA w/ `puppetserver ca`", "timeSpent": "PT0S", "updated": "2022-03-08T12:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This might be needed in order to do the jline update for SERVER-2431.", "created": "2019-01-17T17:18:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Just tried this out with jruby-9.2.6.0 and it seems to work (my local {{lein test :all}} passed). Building a package to try acceptance tests against (here: builds.delivery.puppetlabs.net/puppetserver/6.3.2.SNAPSHOT.2019.03.12T1655). Note, locally trying the puppet benchmarks showed slower results than our current 9.2.0.0. Assuming the package passes acceptance I'll look into higher level performance tests.", "created": "2019-03-12T18:00:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Spent some time with the scale environment before shelving the last round of work.", "created": "2019-08-06T16:53:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've tried out 9.2.7.0 and its also shown a slower catalog performance in the Puppet benchmarks, but the integration tests w/ {{lein test :all}} seem comparable. I think we want to move forward with the version upgrade regardless and see how it performs once we've packaged it (may revert the commit if needed later).", "created": "2019-08-06T17:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This was merged into master. We need to get it promoted everywhere for more testing and then evaluate backporting.", "created": "2019-08-17T10:23:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'll file a separate ticket for the backport. Looks like 5.x is still on 9.1, do we want to upgrade it that far back, or just 6.x?", "created": "2019-08-19T16:37:00.000000"}], "components": [], "created": "2018-11-26T14:41:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34fd5e5b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1kf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now runs with JRuby 9.2.8.0."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Jan/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_195145727_*|*_1_*:*_1_*:*_80797_*|*_10007_*:*_1_*:*_155083520_*|*_3_*:*_4_*:*_3361314174_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_163661_*|*_10006_*:*_3_*:*_19273879221_*|*_10005_*:*_1_*:*_15263"}], "description": "When upgrading to JRuby 9.2.4 our {{./dev-setup}} script no longer competes because of a failure to find libyaml. After running the dev-setup script with an older JRuby and attempting to run our tests with 9.2.4 we have many failures failing to load a JRuby container with Puppet (usually indicative of something causing Puppet to stacktrace).\n\nWhen running Puppet's benchmarks with JRuby 9.2.4 installed with {{ruby-install}} it fails to find the environment to run in and cannot run.\n\nThese issues affect JRuby 9.2.1 - 9.2.4.\n\nThere's a number of bizarre version conflicts as well when install 9.2.4. I've resolved them using all of the latest versions of libraries.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16897", "fixedVersions": ["SERVER 6.6.0"], "id": "16897", "issueType": "Task", "key": "SERVER-2388", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2019-08-19T16:36:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update JRuby to latest version -- check performance", "timeSpent": "PT0S", "updated": "2019-09-12T11:51:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] didn't you come across this? Did you ever get to the bottom of it?", "created": "2018-11-21T16:07:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is a similar stacktrace that we saw when reloading development builds of Server. See SERVER-2421. If you have any info on that it'd be great to put it in that ticket.", "created": "2019-01-09T15:27:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I was firmly under them impression that we were explicit in only supporting Java 8 in Puppet Server 5 & 6. If not, that's a bug. We've had additional tickets to explore support for Java 9+ and work on issues that have arisen, I believe SERVER-2421 above is the only known issue for Java 11 in what will be 6.2.0 or 6.1.1 (whichever comes out first).", "created": "2019-01-09T15:31:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This should be addressed in the fix for SERVER-2423.", "created": "2019-09-08T20:54:00.000000"}], "components": ["Puppet Server"], "created": "2018-11-21T16:05:00.000000", "creator": "5bfc81a3a424561a8ea5de2d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@393c0c9e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrbi7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See release notes on SERVER-2423."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Nov/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_350608762_*|*_1_*:*_1_*:*_25457220974_*|*_5_*:*_1_*:*_0"}], "description": "*Puppet Version: 6.0.2*\n *Puppet Server Version: 6.0.2*\n *OS Name/Version: Ubuntu 18.04 (bionic)*\n\nThe default JRE on Ubuntu Bionic is\u00a0openjdk-11-jre, which is actually jdk10:\n{noformat}\nroot@p6:~# java --version\nopenjdk 10.0.2 2018-07-17\nOpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)\nOpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3, mixed mode){noformat}\nUsing this JRE version with\u00a0max-active-instances > 1 (either explicitly set or because you have more than 2 CPUs) makes puppetserver crash on startup wth:\n{noformat}\n 2018-11-21T22:05:59.225Z ERROR [clojure-agent-send-pool-0] [puppetserver] Puppet Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\n{noformat}\nyou can work around this either by setting\u00a0max-active-instances to 1 or by switching to JDK8.\u00a0\n\n*Desired Behavior:*\n\n\u00a0**\u00a0Per the docs, any JDK 1.7 or greater should work.\u00a0 Puppetserver should either be fixed or the docs should state compatible JDKs.\n\n*Actual Behavior:*\n{noformat}\nroot@p6:~# lsb_release -a\nNo LSB modules are available.\nDistributor ID:\tUbuntu\nDescription:\tUbuntu 18.04.1 LTS\nRelease:\t18.04\nCodename:\tbionic\n\nroot@p6:~# java --version\nopenjdk 10.0.2 2018-07-17\nOpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)\nOpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3, mixed mode)\nroot@p6:~# dpkg -l |grep default-jre\nii  default-jre                   2:1.10-63ubuntu1~02               amd64        Standard Java or Java compatible Runtime\nii  default-jre-headless          2:1.10-63ubuntu1~02               amd64        Standard Java or Java compatible Runtime (headless)\n\nroot@p6:~# dpkg -l |grep openjdk-11\nii  openjdk-11-jre:amd64          10.0.2+13-1ubuntu0.18.04.3        amd64        OpenJDK Java runtime, using Hotspot JIT\nii  openjdk-11-jre-headless:amd64 10.0.2+13-1ubuntu0.18.04.3        amd64        OpenJDK Java runtime, using Hotspot JIT (headless)\nroot@p6:~# dpkg -l |grep puppetserver\nii  puppetserver                  6.0.2-1bionic                     all          Puppet Labs puppetserver. Contains: Puppet Server (puppetlabs/puppetserver 6.0.2,org.clojure/clojure 1.9.0,org.clojure/clojurescript 1.10.238,puppetlabs/puppetserver 6.0.2,puppetlabs/trapperkeeper-webserver-jetty9 2.3.0)\nroot@p6:~# grep max-active-instances /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf \n    max-active-instances: 2\n\nroot@p6:~# puppetserver foreground\n2018-11-21T23:03:22.064Z INFO  [main] [o.e.j.u.log] Logging initialized @25392ms to org.eclipse.jetty.util.log.Slf4jLog\n2018-11-21T23:03:22.321Z INFO  [main] [p.t.s.w.jetty9-core] Removing buggy security provider SunPKCS11 version 10\n2018-11-21T23:03:24.332Z INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Initializing web server(s).\n2018-11-21T23:03:24.376Z INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'puppet-profiler', version 6.0.2\n2018-11-21T23:03:24.379Z INFO  [async-dispatch-2] [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2018-11-21T23:03:24.397Z INFO  [async-dispatch-2] [p.s.j.jruby-pool-manager-service] Initializing the JRuby service\n2018-11-21T23:03:24.406Z INFO  [async-dispatch-2] [p.s.j.jruby-puppet-service] JRuby version info: jruby 9.1.16.0 (2.3.3) 2018-02-21 8f3f95a OpenJDK 64-Bit Server VM 10.0.2+13-Ubuntu-1ubuntu0.18.04.3 on 10.0.2+13-Ubuntu-1ubuntu0.18.04.3 +jit [linux-x86_64]\n2018-11-21T23:03:24.430Z INFO  [clojure-agent-send-pool-0] [p.s.j.i.jruby-internal] Creating JRubyInstance with id 1.\n2018-11-21T23:03:24.449Z INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'jruby-metrics', version 6.0.2\nWARNING: An illegal reflective access operation has occurred\nWARNING: Illegal reflective access by org.jruby.ext.zlib.RubyZlib (file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar) to field java.util.zip.CRC32.crc\nWARNING: Please consider reporting this to the maintainers of org.jruby.ext.zlib.RubyZlib\nWARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\nWARNING: All illegal access operations will be denied in a future release\n2018-11-21T23:03:31.694Z INFO  [clojure-agent-send-pool-0] [puppetserver] Puppet Puppet settings initialized; run mode: master\n2018-11-21T23:03:36.282Z INFO  [clojure-agent-send-pool-0] [p.s.j.i.jruby-agents] Finished creating JRubyInstance 1 of 2\n2018-11-21T23:03:36.283Z INFO  [clojure-agent-send-pool-0] [p.s.j.i.jruby-internal] Creating JRubyInstance with id 2.\n2018-11-21T23:03:36.286Z INFO  [async-dispatch-2] [p.s.c.puppet-server-config-core] Initializing webserver settings from core Puppet\n2018-11-21T23:03:36.319Z INFO  [async-dispatch-2] [p.p.certificate-authority] CA already initialized for SSL\n2018-11-21T23:03:36.322Z INFO  [async-dispatch-2] [p.s.c.certificate-authority-service] CA Service adding a ring handler\n2018-11-21T23:03:36.379Z INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'ca', version 6.0.2\n2018-11-21T23:03:36.383Z INFO  [async-dispatch-2] [p.s.p.puppet-admin-service] Starting Puppet Admin web app\n2018-11-21T23:03:36.422Z INFO  [async-dispatch-2] [p.s.v.versioned-code-service] No code-id-command set for versioned-code-service. Code-id will be nil.\n2018-11-21T23:03:36.424Z INFO  [async-dispatch-2] [p.s.v.versioned-code-service] No code-content-command set for versioned-code-service. Attempting to fetch code content will fail.\n2018-11-21T23:03:36.633Z INFO  [async-dispatch-2] [p.p.certificate-authority] Master already initialized for SSL\n2018-11-21T23:03:36.639Z INFO  [async-dispatch-2] [p.s.m.master-service] Master Service adding ring handlers\n2018-11-21T23:03:36.640Z INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'master', version 6.0.2\n2018-11-21T23:03:36.712Z WARN  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Empty contextPath\n2018-11-21T23:03:36.720Z INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Starting web server(s).\n2018-11-21T23:03:36.735Z INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-cert'\n2018-11-21T23:03:36.735Z INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-key'\n2018-11-21T23:03:36.736Z INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-ca-cert'\n2018-11-21T23:03:36.736Z INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-crl-path'\n2018-11-21T23:03:36.953Z INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] Starting web server.\n2018-11-21T23:03:36.956Z INFO  [async-dispatch-2] [o.e.j.s.Server] jetty-9.4.z-SNAPSHOT; built: 2018-06-05T18:24:03.829Z; git: d5fc0523cfa96bfebfbda19606cad384d772f04c; jvm 10.0.2+13-Ubuntu-1ubuntu0.18.04.3\n2018-11-21T23:03:37.046Z INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@235c4bc0{/puppet-ca,null,AVAILABLE}\n2018-11-21T23:03:37.048Z INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@7d1a78bf{/puppet-admin-api,null,AVAILABLE}\n2018-11-21T23:03:37.049Z INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@5591294a{/metrics,null,AVAILABLE}\n2018-11-21T23:03:37.067Z INFO  [async-dispatch-2] [o.e.j.s.session] DefaultSessionIdManager workerName=node0\n2018-11-21T23:03:37.067Z INFO  [async-dispatch-2] [o.e.j.s.session] No SessionScavenger set, using defaults\n2018-11-21T23:03:37.069Z INFO  [async-dispatch-2] [o.e.j.s.session] node0 Scavenging every 660000ms\n2018-11-21T23:03:37.114Z INFO  [async-dispatch-2] [p.t.s.m.jolokia] Using policy access restrictor classpath:/jolokia-access.xml\n2018-11-21T23:03:37.211Z INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.ServletContextHandler@78f39b3c{/metrics/v2,null,AVAILABLE}\n2018-11-21T23:03:37.213Z INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@5682cb1d{/puppet,null,AVAILABLE}\n2018-11-21T23:03:37.219Z INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@a0573fe{/,null,AVAILABLE}\n2018-11-21T23:03:37.270Z INFO  [async-dispatch-2] [o.e.j.u.s.SslContextFactory] x509=X509@52b084c9(private key,h=[puppet, puppetca, puppet-ca, puppet],w=[]) for InternalSslContextFactory@7921349c[provider=null,keyStore=null,trustStore=null]\n2018-11-21T23:03:37.401Z INFO  [async-dispatch-2] [o.e.j.s.AbstractConnector] Started ServerConnector@478a9f97{SSL,[ssl, http/1.1]}{0.0.0.0:8140}\n2018-11-21T23:03:37.401Z INFO  [async-dispatch-2] [o.e.j.s.Server] Started @40731ms\n2018-11-21T23:03:37.428Z INFO  [async-dispatch-2] [p.t.s.s.status-core] Starting background monitoring of cpu usage metrics\n2018-11-21T23:03:37.441Z INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'status-service', version 1.1.0\n2018-11-21T23:03:37.443Z INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status service HTTP API at /status\n2018-11-21T23:03:37.453Z INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@57a40b24{/status,null,AVAILABLE}\n2018-11-21T23:03:37.500Z INFO  [async-dispatch-2] [p.s.m.master-service] Puppet Server has successfully started and is now ready to handle requests\n2018-11-21T23:03:37.501Z INFO  [async-dispatch-2] [p.s.l.legacy-routes-service] The legacy routing service has successfully started and is now ready to handle requests\n2018-11-21T23:03:37.530Z INFO  [async-dispatch-2] [p.s.a.analytics-service] Puppet Server Update Service has successfully started and will run in the background\n2018-11-21T23:03:39.656Z INFO  [clojure-agent-send-pool-0] [puppetserver] Puppet Puppet settings initialized; run mode: master\n2018-11-21T23:03:40.006Z ERROR [clojure-agent-send-pool-0] [puppetserver] Puppet Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\norg/jruby/javasupport/JavaPackage.java:127:in `const_missing'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.rb:12:in `value'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine/variable.rb:21:in `facter_value'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine/variable.rb:57:in `test_value'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine/variable.rb:45:in `valid?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine_collection.rb:48:in `block in valid?'\norg/jruby/RubyEnumerable.java:624:in `detect'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine_collection.rb:48:in `valid?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confiner.rb:44:in `suitable?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:1971:in `block in suitableprovider'\norg/jruby/RubyHash.java:1350:in `each'\norg/jruby/RubyEnumerable.java:788:in `find_all'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:1970:in `suitableprovider'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:1760:in `defaultprovider'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:1923:in `block in default'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:835:in `set_default'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:2394:in `initialize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file.rb:490:in `initialize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource.rb:478:in `to_ral'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:633:in `block in to_catalog'\norg/jruby/RubyArray.java:1735:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:625:in `to_catalog'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:515:in `to_ral'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:1005:in `use'\nuri:classloader:/puppetserver-lib/puppet/server/puppet_config.rb:45:in `initialize_puppet'\nuri:classloader:/puppetserver-lib/puppet/server/master.rb:29:in `initialize'\nNameError: Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\ncannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\n2018-11-21T23:03:40.011Z ERROR [clojure-agent-send-pool-0] [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyInstance to the pool.\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33476$prime_pool_BANG___33481$fn__33485.invoke(jruby_agents.clj:75)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33476$prime_pool_BANG___33481.invoke(jruby_agents.clj:48)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33726$send_prime_pool_BANG___33731$fn__33732$fn__33733.invoke(jruby_agents.clj:233)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:389)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:364)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:374)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:364)\n\tat puppetlabs.trapperkeeper.internal$eval16091$shutdown_service__16096$fn$reify__16098$service_fnk__5906__auto___positional$reify__16103.shutdown_on_error(internal.clj:429)\n\tat puppetlabs.trapperkeeper.internal$eval16021$fn__16033$G__16013__16041.invoke(internal.clj:397)\n\tat puppetlabs.trapperkeeper.internal$eval16021$fn__16033$G__16012__16050.invoke(internal.clj:397)\n\tat clojure.core$partial$fn__5561.invoke(core.clj:2617)\n\tat clojure.core$partial$fn__5561.invoke(core.clj:2616)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33451$send_agent__33456$fn__33457$agent_fn__33458.invoke(jruby_agents.clj:42)\n\tat clojure.core$binding_conveyor_fn$fn__5476.invoke(core.clj:2025)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114)\n\tat clojure.lang.Agent$Action.run(Agent.java:163)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\n\tat java.base/java.lang.Thread.run(Thread.java:844)\nCaused by: org.jruby.embed.InvokeFailedException: (NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\ncannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(EmbedRubyObjectAdapterImpl.java:320)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(EmbedRubyObjectAdapterImpl.java:170)\n\tat org.jruby.embed.ScriptingContainer.callMethod(ScriptingContainer.java:1475)\n\tat com.puppetlabs.jruby_utils.jruby.InternalScriptingContainer.callMethodWithArgArray(InternalScriptingContainer.java:180)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:564)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval35004$get_initialize_pool_instance_fn__35009$fn__35010$fn__35011.invoke(jruby_puppet_core.clj:151)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval33050$create_pool_instance_BANG___33059$fn__33062.invoke(jruby_internal.clj:211)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval33050$create_pool_instance_BANG___33059.invoke(jruby_internal.clj:177)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33476$prime_pool_BANG___33481$fn__33485.invoke(jruby_agents.clj:65)\n\t... 20 common frames omitted\nCaused by: org.jruby.exceptions.RaiseException: (NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\ncannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\n2018-11-21T23:03:40.013Z INFO  [main] [p.t.internal] Beginning shutdown sequence\n2018-11-21T23:03:40.028Z INFO  [async-dispatch-3] [p.s.j.jruby-metrics-service] JRuby Metrics Service: stopping metrics sampler job\n2018-11-21T23:03:40.032Z INFO  [async-dispatch-3] [p.s.j.jruby-metrics-service] JRuby Metrics Service: stopped metrics sampler job\n2018-11-21T23:03:40.039Z INFO  [async-dispatch-3] [p.s.j.i.jruby-agents] Draining JRuby pool.\n2018-11-21T23:03:40.041Z ERROR [async-dispatch-3] [p.t.internal] Encountered error during shutdown sequence\njava.lang.InterruptedException: Lock can't be granted because a pill has been inserted\n\tat com.puppetlabs.jruby_utils.pool.JRubyPool.lockWithTimeout(JRubyPool.java:368)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:564)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33557$borrow_all_jrubies__33562$fn__33563$fn__33564.invoke(jruby_agents.clj:126)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33557$borrow_all_jrubies__33562$fn__33563.invoke(jruby_agents.clj:125)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33557$borrow_all_jrubies__33562.invoke(jruby_agents.clj:117)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33637$drain_and_refill_pool_BANG___33646$fn__33649.invoke(jruby_agents.clj:191)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33637$drain_and_refill_pool_BANG___33646.invoke(jruby_agents.clj:173)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33678$flush_pool_for_shutdown_BANG___33683$fn__33684.invoke(jruby_agents.clj:212)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33678$flush_pool_for_shutdown_BANG___33683.invoke(jruby_agents.clj:200)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval34587$flush_pool_for_shutdown_BANG___34592$fn__34593.invoke(jruby_core.clj:236)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval34587$flush_pool_for_shutdown_BANG___34592.invoke(jruby_core.clj:231)\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__35531$service_fnk__5906__auto___positional$reify__35545.stop(jruby_puppet_service.clj:52)\n\tat puppetlabs.trapperkeeper.services$eval5704$fn__5731$G__5696__5734.invoke(services.clj:9)\n\tat puppetlabs.trapperkeeper.services$eval5704$fn__5731$G__5695__5738.invoke(services.clj:9)\n\tat puppetlabs.trapperkeeper.internal$eval15624$run_lifecycle_fn_BANG___15631$fn__15632.invoke(internal.clj:198)\n\tat puppetlabs.trapperkeeper.internal$eval15624$run_lifecycle_fn_BANG___15631.invoke(internal.clj:181)\n\tat puppetlabs.trapperkeeper.internal$eval16148$shutdown_BANG___16153$fn__16154$shutdown_fn__16156$fn__16171.invoke(internal.clj:440)\n\tat puppetlabs.trapperkeeper.internal$eval16148$shutdown_BANG___16153$fn__16154$shutdown_fn__16156.invoke(internal.clj:439)\n\tat puppetlabs.trapperkeeper.internal$eval15698$initialize_lifecycle_worker__15709$fn__15710$fn__15860$state_machine__12806__auto____15885$fn__15888$fn__15902.invoke(internal.clj:276)\n\tat puppetlabs.trapperkeeper.internal$eval15698$initialize_lifecycle_worker__15709$fn__15710$fn__15860$state_machine__12806__auto____15885$fn__15888.invoke(internal.clj:260)\n\tat puppetlabs.trapperkeeper.internal$eval15698$initialize_lifecycle_worker__15709$fn__15710$fn__15860$state_machine__12806__auto____15885.invoke(internal.clj:251)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:973)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:972)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:977)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:975)\n\tat clojure.core.async$ioc_alts_BANG_$fn__13035.invoke(async.clj:383)\n\tat clojure.core.async$do_alts$fn__12967$fn__12970.invoke(async.clj:252)\n\tat clojure.core.async.impl.channels.ManyToManyChannel$fn__7535.invoke(channels.clj:135)\n\tat clojure.lang.AFn.run(AFn.java:22)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\n\tat java.base/java.lang.Thread.run(Thread.java:844)\n2018-11-21T23:03:40.055Z INFO  [async-dispatch-3] [p.t.s.w.jetty9-service] Shutting down web server(s).\n2018-11-21T23:03:40.059Z INFO  [async-dispatch-3] [p.t.s.w.jetty9-core] Shutting down web server.\n2018-11-21T23:03:40.062Z INFO  [async-dispatch-3] [o.e.j.s.AbstractConnector] Stopped ServerConnector@478a9f97{SSL,[ssl, http/1.1]}{0.0.0.0:8140}\n2018-11-21T23:03:40.062Z INFO  [async-dispatch-3] [o.e.j.s.session] node0 Stopped scavenging\n2018-11-21T23:03:40.062Z INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@57a40b24{/status,null,UNAVAILABLE}\n2018-11-21T23:03:40.062Z INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@a0573fe{/,null,UNAVAILABLE}\n2018-11-21T23:03:40.063Z INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@5682cb1d{/puppet,null,UNAVAILABLE}\n2018-11-21T23:03:40.064Z INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.ServletContextHandler@78f39b3c{/metrics/v2,null,UNAVAILABLE}\n2018-11-21T23:03:40.065Z INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@5591294a{/metrics,null,UNAVAILABLE}\n2018-11-21T23:03:40.065Z INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@7d1a78bf{/puppet-admin-api,null,UNAVAILABLE}\n2018-11-21T23:03:40.065Z INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@235c4bc0{/puppet-ca,null,UNAVAILABLE}\n2018-11-21T23:03:40.070Z INFO  [async-dispatch-3] [p.t.s.w.jetty9-core] Web server shutdown\n2018-11-21T23:03:40.078Z INFO  [clojure-agent-send-off-pool-1] [p.t.s.w.filesystem-watch-core] Closing watcher puppetlabs.trapperkeeper.services.watcher.filesystem_watch_core.WatcherImpl@5cc928ea\n2018-11-21T23:03:40.078Z INFO  [clojure-agent-send-off-pool-0] [p.t.s.w.filesystem-watch-core] Closing watcher puppetlabs.trapperkeeper.services.watcher.filesystem_watch_core.WatcherImpl@5146ec72\n2018-11-21T23:03:40.084Z INFO  [main] [p.t.internal] Finished shutdown sequence\nException in thread \"main\" java.lang.IllegalStateException: There was a problem adding a JRubyInstance to the pool.\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33476$prime_pool_BANG___33481$fn__33485.invoke(jruby_agents.clj:75)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33476$prime_pool_BANG___33481.invoke(jruby_agents.clj:48)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33726$send_prime_pool_BANG___33731$fn__33732$fn__33733.invoke(jruby_agents.clj:233)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:389)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:364)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:374)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:364)\n\tat puppetlabs.trapperkeeper.internal$eval16091$shutdown_service__16096$fn$reify__16098$service_fnk__5906__auto___positional$reify__16103.shutdown_on_error(internal.clj:429)\n\tat puppetlabs.trapperkeeper.internal$eval16021$fn__16033$G__16013__16041.invoke(internal.clj:397)\n\tat puppetlabs.trapperkeeper.internal$eval16021$fn__16033$G__16012__16050.invoke(internal.clj:397)\n\tat clojure.core$partial$fn__5561.invoke(core.clj:2617)\n\tat clojure.core$partial$fn__5561.invoke(core.clj:2616)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33451$send_agent__33456$fn__33457$agent_fn__33458.invoke(jruby_agents.clj:42)\n\tat clojure.core$binding_conveyor_fn$fn__5476.invoke(core.clj:2025)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114)\n\tat clojure.lang.Agent$Action.run(Agent.java:163)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\n\tat java.base/java.lang.Thread.run(Thread.java:844)\nCaused by: org.jruby.embed.InvokeFailedException: (NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\ncannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(EmbedRubyObjectAdapterImpl.java:320)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(EmbedRubyObjectAdapterImpl.java:170)\n\tat org.jruby.embed.ScriptingContainer.callMethod(ScriptingContainer.java:1475)\n\tat com.puppetlabs.jruby_utils.jruby.InternalScriptingContainer.callMethodWithArgArray(InternalScriptingContainer.java:180)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:564)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval35004$get_initialize_pool_instance_fn__35009$fn__35010$fn__35011.invoke(jruby_puppet_core.clj:151)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval33050$create_pool_instance_BANG___33059$fn__33062.invoke(jruby_internal.clj:211)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval33050$create_pool_instance_BANG___33059.invoke(jruby_internal.clj:177)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33476$prime_pool_BANG___33481$fn__33485.invoke(jruby_agents.clj:65)\n\t... 20 more\nCaused by: org.jruby.exceptions.RaiseException: (NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\ncannot link Java class com.puppetlabs.Facter (java.lang.UnsatisfiedLinkError: Native Library /opt/puppetlabs/puppet/lib/libfacter.so.3.12.0 already loaded in another classloader)\nroot@p6:~# \n\u00a0\n\n{noformat}\n\u00a0**\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16892", "fixedVersions": ["SERVER 6.6.0"], "id": "16892", "issueType": "Bug", "key": "SERVER-2387", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5bfc81a3a424561a8ea5de2d", "resolution": "Fixed", "resolutionDate": "2019-09-16T09:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver crashes on startup because it can't start multiple jruby instances on JRE 10", "timeSpent": "PT0S", "updated": "2019-09-16T09:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-11-21T14:46:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5aec479a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrbgf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_43178_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2401402700_*|*_10005_*:*_1_*:*_101528937693"}], "description": "We want to rename the special extension used to grant access to the CA endpoints from the CA CLI to `pp_auth_ca_cli`, in order to establish a better naming convention. Once this change has been made, the code in the puppet_enterprise module that manages the auth.conf rules for those endpoints should be updated to use the new name.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14832", "fixedVersions": [], "id": "14832", "issueType": "Sub-task", "key": "SERVER-2386", "labels": [], "originalEstimate": "PT0S", "parent": "16531", "parentSummary": "Rename CLI auth extension to follow naming conventions", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update PE's managed auth.conf to reference new CLI auth extension name", "timeSpent": "PT0S", "updated": "2022-03-08T12:19:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-11-21T14:44:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32f32031"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrbg7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_171299_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2401403069_*|*_10005_*:*_1_*:*_101528961987"}], "description": "In order to better establish a naming convention for Puppet-specific auth extensions, we want to rename the new reserved extension for the CA CLI from `pp_cli_auth` to `pp_auth_ca_cli`. However, because we have already shipped stuff referring to the old name, when updating it we need to make sure that both names are supported.\n\nThis ticket is to add code for this backwards-compatible change, and to update the shipped default auth.conf file to use the new name. These are both changes to FOSS puppetserver.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17447", "fixedVersions": ["SERVER 6.0.z"], "id": "17447", "issueType": "Sub-task", "key": "SERVER-2385", "labels": [], "originalEstimate": "PT0S", "parent": "16531", "parentSummary": "Rename CLI auth extension to follow naming conventions", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA CLI OID referenced with both `pp_cli_auth` and `pp_auth_ca_cli`", "timeSpent": "PT0S", "updated": "2022-03-08T12:20:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "4) Will it work well on all of our supported master platforms?\nAccording to the quickstart guide, they currently only support Fedora and RHEL (including centos), but there are packages for Debian on the downloads page.", "created": "2018-11-26T09:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Update: I was working to get FreeIPA installed and running on a Platform 9 instance. Getting the hostnames and DNS configured correctly took some work, as I had to learn a lot in that area to understand the errors I was seeing. Got the install to complete, but haven't had a chance to test it with a client yet, or to check out how to get from a single node install to a master-replica setup. Another avenue to check out might be https://github.com/tiran/pki-vagans, but I haven't tried using that yet.", "created": "2018-11-29T11:51:00.000000"}], "components": [], "created": "2018-11-19T15:08:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ed75ab2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2nr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11353_*|*_3_*:*_1_*:*_256867718_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_7160912337_*|*_10005_*:*_1_*:*_96677568908"}], "description": "As one avenue to support HA for the Puppet CA, we should investigate integrating with/delegating to FreeIPA/dogtog, which supports multi-master replication out of the box.\n\nFreeIPA PKI: https://www.freeipa.org/page/PKI\nDogtag: https://www.dogtagpki.org/wiki/PKI_Main_Page\n\nSome questions to answer:\n1) How easy is it to set up an HA instance of FreeIPA? This is relevant whether we intend to vendor it in some fashion or expect customers to set it up.\n2) What does delegation of requests entail? How clean is the mapping between our CA API and FreeIPA's?\n3) Does FreeIPA's HA meet all of our HA criteria if configured correctly?\n4) Will it work well on all of our supported master platforms?\n5) Do we need all of FreeIPA or could we use dogtag standalone?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17177", "fixedVersions": [], "id": "17177", "issueType": "Task", "key": "SERVER-2384", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SPIKE integrating puppetserver with FreeIPA", "timeSpent": "PT0S", "updated": "2022-03-08T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0dad761efb0069ce0304", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Are you sure you installed the puppetserver package? Most operating systems \"puppet\" package only contains the agent and you must install a separate \"puppetserver\" package. You may want to try out our repositories at http://yum.puppet.com/ and http://apt.puppet.com/ if you're running an operating system that uses rpm or apt resp.", "created": "2018-11-13T09:14:00.000000"}, {"author": "623c0dad761efb0069ce0304", "body": "yes i used\u00a0\n|[puppetlabs-release-el-7.noarch.rpm|https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm]\u00a0file from\u00a0 [http://yum.puppet.com/]\u00a0to install puppet.|", "created": "2018-11-13T22:03:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "what does {{puppetserver --version}} return?\nwhat does {{rpm -qa | grep puppet}} return?", "created": "2018-11-14T10:32:00.000000"}, {"author": "623c0dad761efb0069ce0304", "body": "(UAT) root@devecpvm003943# rpm -qa | grep puppet\npuppetlabs-release-22.0-2.noarch\n\n\u00a0\n\n(UAT) root@devecpvm003943# puppetserver -version\n-bash: puppetserver: command not found\n(UAT) root@devecpvm003943# puppetserver -v\n-bash: puppetserver: command not found\n(UAT) root@devecpvm003943# puppet -v\n-bash: puppet: command not found\n(UAT) root@devecpvm003943#", "created": "2018-11-14T21:07:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "That says you only have the \"puppetlabs-release\" package installed, it only contains the information from our repositories. Once you've installed it, as you've done, you can install our actual software from our repositories rather than from your distro. You should be able to run {{yum install}} puppetserver if you want to run puppet server, or {{yum install}} puppet if you want to run puppet.", "created": "2018-11-15T08:38:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "This seems to be user error and we haven't heard back from the user in years.", "created": "2022-02-09T11:45:00.000000"}], "components": ["Puppet Server"], "created": "2018-11-13T00:00:00.000000", "creator": "623c0dad761efb0069ce0304", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17d6f70a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0uag"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Nov/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33248258_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_102306606279"}], "description": "hi all,\n\n\u00a0\n\nI installed puppet server (3.7.2\u00a0 version) on linux( 3.10.0-693.11.6.el7.x86_64).\n\nAfter installation when i tried to start puppet master i am getting following error:\n\n\u00a0\n\n(UAT) root@devecpvm003943# systemctl start puppetserver\nFailed to start puppetserver.service: Unit not found.\n\n\u00a0\n\nCould you please help me what could be the issue?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15478", "fixedVersions": [], "id": "15478", "issueType": "Bug", "key": "SERVER-2383", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0dad761efb0069ce0304", "resolution": "Cannot Reproduce", "resolutionDate": "2022-02-09T11:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "cant start puppet master on linux server", "timeSpent": "PT0S", "updated": "2022-02-09T11:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The pupperware team is looking into this.", "created": "2019-09-27T17:10:00.000000"}, {"author": "61af86343618cd006f430854", "body": "SERVER-2945", "created": "2022-03-08T13:45:00.000000"}], "components": ["Puppet Server"], "created": "2018-11-05T09:51:00.000000", "creator": "60f9f67b33876e0068f19378", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fbeb2fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqyyn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_28189137624_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_77146537637"}], "description": "*Puppet Version: n/a*\n *Puppet Server Version: 6.0.2*\n *OS Name/Version: Docker Container*\n\nThe default memory allocation is too low.\n\n*Desired Behavior:*\n\nDefault memory should be 1G or more to match the recommended memory allocation from the tuning guide. (https://puppet.com/docs/puppetserver/6.0/tuning_guide.html)\n\n*Actual Behavior:*\n\nRun the container.\n\ndocker run --name puppet --hostname puppet puppet/puppetserver-standalone:6.0.2\n\nThe default java allocation 512M. You can see it allocation below.\n\nroot@puppet:/# ps ax | grep java\n 88 ? S 0:00 runuser puppet -s /bin/bash -c /usr/bin/java -Xms512m -Xmx512m -Dlogappender=STDOUT -Djava.security.egd=/dev/urandom -cp /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar:/opt/puppetlabs/server/data/puppetserver/jars/* clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetlabs/puppetserver/conf.d --bootstrap-config /etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/ --restart-file /opt/puppetlabs/server/data/puppetserver/restartcounter\n\n89 ? Ssl 1:25 /usr/bin/java -Xms512m -Xmx512m -Dlogappender=STDOUT -Djava.security.egd=/dev/urandom -cp /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar:/opt/puppetlabs/server/data/puppetserver/jars/* clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetlabs/puppetserver/conf.d --bootstrap-config /etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/ --restart-file /opt/puppetlabs/server/data/puppetserver/restartcounter \n 294 pts/0 S+ 0:00 grep --color=auto java\n\n\u00a0\n\nThe documentation for the container should also mention the $PUPPETSERVER_JAVA_ARGS environment variable and how to use it set the memory allocation and increase the number of max-active-instances.\n\n\u00a0", "epicLinkSummary": "Puppet Server Docker Improvements", "estimate": "PT0S", "externalId": "15477", "fixedVersions": [], "id": "15477", "issueType": "Bug", "key": "SERVER-2382", "labels": ["docker", "low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "16299", "parentSummary": "Puppet Server Docker Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "60f9f67b33876e0068f19378", "resolution": "Duplicate", "resolutionDate": "2022-03-08T13:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Default memory settings in the Puppet Server Docker images are too low", "timeSpent": "PT0S", "updated": "2022-03-08T13:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I upgraded FOSS to 9.2.0.0 without issue (though not PE yet). They JRuby team released 9.2.1 and in quick succession released 9.2.2, 9.2.3, and 9.2.4. They've seemed to settle down the releases so I tried 9.2.4 and Puppetserver will not load, nor will Puppet run correctly when using the standalone (not hosted within Puppetserver) jruby.\n\nThese issues may be related and seem to happen starting in 9.2.1. I think it will probably take some time to figure out what exactly is happening and potentially wait for/work with the JRuby team on fixes.\n\n\u00a0\n\nIn the mean time I think this ticket should be for continuing the 9.2.0 upgrade through PE.", "created": "2018-11-26T14:26:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Ran into some issues trying to do the upgrade to 9.2.0+, see SERVER-2388", "created": "2018-11-26T14:45:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] note that this needs to land before EOD on Wednesday in order to make the cut for Server 6.1.", "created": "2018-12-10T08:26:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Oh this is in. The updated scope was merged weeks ago. I'll update.", "created": "2018-12-10T09:32:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Thanks, [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], did SERVER-2388 get sorted as well, then?", "created": "2018-12-10T10:00:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "No. Like it says in the updated description, we are only shipping 9.2.0.0 for this release. That appears to be sufficient to get us experimental Java 11 support, which was the goal.", "created": "2018-12-10T10:04:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] please add release notes for this issue if needed, thanks!", "created": "2018-12-12T14:04:00.000000"}], "components": [], "created": "2018-11-02T09:28:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e7fd93"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqy1z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server 6.1.0 upgrades to a new version of JRuby, 9.2.0.0. This version implements the Ruby 2.5 interface (we previously shipping a JRuby that implemented the Ruby 2.3 interface). It is, in all of our testing, backwards compatible, but will issue warning for Ruby language features that have been deprecated[1]. Upgrading to this version of JRuby brings the Ruby interface inline with that of the Puppet Agent so both are running under the same interface version. This version of JRuby may also be slightly faster under some conditions than previous versions.\n\n1. The major warning that users will most likely see is \"warning: constant ::Fixnum is deprecated\"."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Nov/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2611869_*|*_10007_*:*_1_*:*_1147960_*|*_3_*:*_1_*:*_2092401798_*|*_5_*:*_1_*:*_769742281_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_86425_*|*_10005_*:*_1_*:*_1190816936"}], "description": "This ticket was to originally upgrade JRuby to 9.2.1 however there were complications and we've created a new ticket to further investigate those complications. This ticket was repurposed to do the JRuby 9.2.0 upgrade instead.\n\n\u00a0\n\n----\n\nOriginal description:\n\n\u00a0\n\nJRuby 9.2.1.0 is being released soon. First we should upgrade to JRuby 9.2.0.0 and make sure everything is good with that. Then test the SNAPTSHOT of 9.2.1 and then upgrade to 9.2.1 when released.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17176", "fixedVersions": ["SERVER 6.1.0"], "id": "17176", "issueType": "Improvement", "key": "SERVER-2381", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-12-19T07:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade JRuby to 9.2.0.0", "timeSpent": "PT0S", "updated": "2018-12-19T07:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "PR for the optional exception raising: https://github.com/voxpupuli/puppet-vault_lookup/pull/12\n\nI've opened an issue associated with that PR: https://github.com/voxpupuli/puppet-vault_lookup/issues/13. Since we're still looking for feedback, I think this ticket can be closed without that PR being merged.", "created": "2018-11-28T17:25:00.000000"}, {"author": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "body": "This PR is also ready for merge: [https://github.com/voxpupuli/puppet-vault_lookup/pull/11]\n\n\u00a0", "created": "2018-11-29T14:59:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The PR for the improved error handling is still open, but I've filed a separate issue in the module's github project to track that.", "created": "2018-11-30T14:11:00.000000"}], "components": [], "created": "2018-11-01T17:25:00.000000", "creator": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70113577"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2of:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Nov/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_426747314_*|*_3_*:*_1_*:*_183679869_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_1727191275_*|*_10005_*:*_1_*:*_159991978"}], "description": "This ticket is to just track some of the small tasks for the puppet-vault_lookup gem in the vox_pupuli repo.\u00a0\n * Allow for the user to specify insecure connections\u00a0\n * Get docker acceptance testing running in travis\n * Add ability to control exception flow from the lookup definition\n * [Add support for VAULT_ADDR, similar to the gem|https://github.com/voxpupuli/puppet-vault_lookup/issues/8]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17175", "fixedVersions": [], "id": "17175", "issueType": "Improvement", "key": "SERVER-2380", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "resolution": "Done", "resolutionDate": "2018-11-30T14:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Hodgepodge of small tasks for puppet-vault_lookup", "timeSpent": "PT0S", "updated": "2018-11-30T14:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Haven't seen this in a while.", "created": "2019-09-25T17:54:00.000000"}], "components": [], "created": "2018-10-30T14:23:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8f160d9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkhtb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_28524669272_*|*_6_*:*_1_*:*_0"}], "description": "Seen a new failure a couple times recently, that registers as a sort of aborted/incomplete with Jenkins. Both times have been on Debian 9. All tests pass, metrics collection post suite passes, and then this:\n{code}\n01:43:02 failure in XML output: \n01:43:02 malformed XML: missing tag start\n01:43:02 Line: 51437\n01:43:02 Position: 3248439\n01:43:02 Last 80 unconsumed characters:\n01:43:02 <b\\t\\v{fg\\xD6K\\xAD\\x15N\\xDE\\xAF\\f\\xF1\\x8Ax\\xEA\\xDA\\xA5)l\\xDB\\xF7%\\v\\xA5-5m\\v9\\xF2/usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/rexml/parsers/baseparser.rb:375:in `pull_event'\n01:43:02 /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/rexml/parsers/baseparser.rb:185:in `pull'\n01:43:02 /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/rexml/parsers/treeparser.rb:23:in `parse'\n01:43:02 /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/rexml/document.rb:288:in `build'\n01:43:02 /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/rexml/document.rb:45:in `initialize'\n01:43:02 /tmp/jenkins/workspace/platform_puppetserver_integration-system_no-conditional_full-6.0.x/LAYOUT/debian9-64ma-centos7-64a/LDAP_TYPE/default/label/beaker/vendor/bundler/ruby/2.4.0/gems/beaker-3.37.0/lib/beaker/logger_junit.rb:108:in `new'\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17416", "fixedVersions": [], "id": "17416", "issueType": "CI Blocker", "key": "SERVER-2379", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Cannot Reproduce", "resolutionDate": "2019-09-25T17:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Malformed XML in Puppetserver test report on Debian 9", "timeSpent": "PT0S", "updated": "2019-09-25T17:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "14400", "aggregatetimeoriginalestimate": "14400", "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-10-30T12:41:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d494a64"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Future CA Improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqvw7:"}], "description": "Tickets leftover from other CA work, that mainly represent stand-alone improvements, bug fixes, and feature requests.\n\nFor work contributing to CA HA, see PE-25445.\nFor work toward finalizing the separation of the CA from Ruby, see PUP-8918.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15942", "fixedVersions": [], "id": "15942", "issueType": "Epic", "key": "SERVER-2378", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Future CA Improvements", "timeSpent": "PT0S", "updated": "2022-08-24T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "ha, I digged more through the logfile, those are the initial exceptions I can find, afterwards follows what I posted in the initial issue description:\n{code}\n2018-10-27 00:00:03,536 INFO  [qtp349904914-783] [puppetserver] Puppet Compiled catalog for anawesomeserver.local in environment production in 63.72 seconds\n2018-10-27 00:00:03,599 INFO  [async-dispatch-3] [o.e.j.s.AbstractConnector] Stopped ServerConnector@2674d1f1{HTTP/1.1,[http/1.1]}{127.0.0.1:8139}\n2018-10-27 00:00:03,629 INFO  [qtp349904914-783] [puppetserver] Puppet Caching catalog for anawesomeserver.local\n2018-10-27 00:00:03,632 INFO  [async-dispatch-3] [o.e.j.s.AbstractConnector] Stopped ServerConnector@48c207fa{SSL,[ssl, http/1.1]}{127.0.0.1:8141}\n2018-10-27 00:00:03,632 INFO  [async-dispatch-3] [o.e.j.s.session] node0 Stopped scavenging\n2018-10-27 00:00:03,638 INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@4606a3dd{/status,null,UNAVAILABLE}\n2018-10-27 00:00:03,729 INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.ServletContextHandler@11005351{/metrics/v2,null,UNAVAILABLE}\n2018-10-27 00:00:03,730 INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@4045af7e{/metrics,null,UNAVAILABLE}\n2018-10-27 00:00:03,731 INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@23c8ad8f{/,null,UNAVAILABLE}\n2018-10-27 00:00:03,731 INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@67d6c857{/puppet,null,UNAVAILABLE}\n2018-10-27 00:00:03,731 INFO  [async-dispatch-3] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@16a9d19{/puppet-admin-api,null,UNAVAILABLE}\n2018-10-27 00:00:04,814 INFO  [qtp349904914-783] [puppetserver] Puppet 'replace_catalog' command for anawesomeserver.local submitted to PuppetDB with UUID 57b5543c-b39a-435d-a6c3-7bee34262a35\n2018-10-27 00:00:05,206 ERROR [qtp349904914-684] [p.r.core] Internal Server Error: java.lang.IllegalStateException: Unable to borrow JRubyInstance from pool\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22333$borrow_from_pool_BANG__STAR___22338$fn__22339.invoke(jruby_internal.clj:277)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22333$borrow_from_pool_BANG__STAR___22338.invoke(jruby_internal.clj:264)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22380$borrow_from_pool_with_timeout__22385$fn__22386.invoke(jruby_internal.clj:312)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22380$borrow_from_pool_with_timeout__22385.invoke(jruby_internal.clj:301)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval23595$borrow_from_pool_with_timeout__23600$fn__23601.invoke(jruby_core.clj:212)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval23595$borrow_from_pool_with_timeout__23600.invoke(jruby_core.clj:199)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_jruby_instance$fn__24683.invoke(jruby_request.clj:46)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_error_handling$fn__24679.invoke(jruby_request.clj:33)\n\tat puppetlabs.services.request_handler.request_handler_service$reify__24780$service_fnk__5266__auto___positional$reify__24795.handle_request(request_handler_service.clj:47)\n\tat puppetlabs.services.protocols.request_handler$eval15873$fn__15874$G__15865__15877.invoke(request_handler.clj:3)\n\tat puppetlabs.services.protocols.request_handler$eval15873$fn__15874$G__15864__15881.invoke(request_handler.clj:3)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2515)\n\tat puppetlabs.trapperkeeper.authorization.ring_middleware$eval40055$wrap_authorization_check__40064$fn__40067$fn__40068.invoke(ring_middleware.clj:284)\n\tat puppetlabs.ring_middleware.core$eval21163$wrap_bad_request__21172$fn__21175$fn__21181.invoke(core.clj:170)\n\tat puppetlabs.ring_middleware.core$eval21261$wrap_uncaught_errors__21270$fn__21273$fn__21278.invoke(core.clj:216)\n\tat puppetlabs.ring_middleware.core$eval20888$wrap_request_logging__20893$fn__20894$fn__20896.invoke(core.clj:47)\n\tat puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n\tat puppetlabs.ring_middleware.core$eval20917$wrap_response_logging__20922$fn__20923$fn__20924.invoke(core.clj:53)\n\tat puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__33541.invoke(ringutils.clj:83)\n\tat puppetlabs.services.master.master_core$eval34520$v3_ruby_routes__34525$fn__34526$fn__34533.invoke(master_core.clj:727)\n\tat bidi.ring$eval26407$fn__26408.invoke(ring.cljc:25)\n\tat bidi.ring$eval26386$fn__26387$G__26377__26396.invoke(ring.cljc:16)\n\tat puppetlabs.comidi$make_handler$fn__28517.invoke(comidi.clj:245)\n\tat puppetlabs.metrics.http$eval33698$wrap_with_request_metrics__33703$fn__33707$fn__33709$fn__33710$fn__33711.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$eval33698$wrap_with_request_metrics__33703$fn__33707$fn__33709$fn__33710.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$eval33698$wrap_with_request_metrics__33703$fn__33707$fn__33709.invoke(http.clj:148)\n\tat puppetlabs.comidi$eval28578$wrap_with_route_metadata__28583$fn__28584$fn__28586.invoke(comidi.clj:332)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__31484.invoke(jetty9_core.clj:433)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n\tat sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$eval31060$normalize_uri_handler__31065$fn__31066$fn__31067.invoke(normalized_uri_helpers.clj:74)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\n\tat org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724)\n\tat org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n\tat com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n\tat org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:531)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) no such file to load -- puppet/confiner\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:131)\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1307)\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1300)\n\tat sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval24079$get_initialize_pool_instance_fn__24084$fn__24085$fn__24086.invoke(jruby_puppet_core.clj:138)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22133$create_pool_instance_BANG___22142$fn__22145.invoke(jruby_internal.clj:220)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22133$create_pool_instance_BANG___22142.invoke(jruby_internal.clj:186)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval22559$prime_pool_BANG___22564$fn__22568.invoke(jruby_agents.clj:65)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval22559$prime_pool_BANG___22564.invoke(jruby_agents.clj:48)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval22805$send_prime_pool_BANG___22810$fn__22811$fn__22812.invoke(jruby_agents.clj:233)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:389)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:364)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:374)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:364)\n\tat puppetlabs.trapperkeeper.internal$eval14201$shutdown_service__14206$fn$reify__14208$service_fnk__5266__auto___positional$reify__14213.shutdown_on_error(internal.clj:429)\n\tat puppetlabs.trapperkeeper.internal$eval14131$fn__14143$G__14123__14151.invoke(internal.clj:397)\n\tat puppetlabs.trapperkeeper.internal$eval14131$fn__14143$G__14122__14160.invoke(internal.clj:397)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2516)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2515)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval22534$send_agent__22539$fn__22540$agent_fn__22541.invoke(jruby_agents.clj:42)\n\tat clojure.core$binding_conveyor_fn$fn__4676.invoke(core.clj:1941)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114)\n\tat clojure.lang.Agent$Action.run(Agent.java:163)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\t... 1 more\nCaused by: org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- puppet/confiner\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/format.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/format_handler.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/format_handler.rb:3)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/format_support.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/format_support.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/tag_set.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/tag_set.rb:2)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat uri_3a_classloader_3a_.META_minus_INF.jruby_dot_home.lib.ruby.stdlib.rubygems.core_ext.kernel_require.require(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/tagging.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat RUBY.(root)(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/tagging.rb:1)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat RUBY.(root)(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:1)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/logging.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat RUBY.(root)(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/logging.rb:2)\n\tat RUBY.<main>(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:956)\n\tat RUBY.(root)(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:704)\n\tat RUBY.<main>(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1)\n{code}", "created": "2018-10-27T06:35:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "I had a discussion on IRC with [~accountid:557058:054fa98a-5e29-48e7-aeca-d5542926f8ba] and we thought that this might be related to https://puppet.atlassian.net/browse/PUP-9268. I downgraded the agent from 5.5.7 to 5.5.6 on the puppetserver to see if I can still reproduce the error. Also another config file that might be related:\n\n{code}\n# grep -v '#\\|^$' /etc/sysconfig/puppetserver \nJAVA_BIN=/usr/bin/java\nJAVA_ARGS=\"-Xms32G -Xmx64G -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger\"\nTK_ARGS=\"\"\nUSER=\"puppet\"\nGROUP=\"puppet\"\nINSTALL_DIR=\"/opt/puppetlabs/server/apps/puppetserver\"\nCONFIG=\"/etc/puppetlabs/puppetserver/conf.d\"\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/\"\nSERVICE_STOP_RETRIES=60\nSTART_TIMEOUT=300\nRELOAD_TIMEOUT=120\nJRUBY_JAR=\"/opt/puppetlabs/server/apps/puppetserver/jruby-9k.jar\"\n{code}", "created": "2018-10-27T07:08:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Let me know if downgrading fixes this for you. It will help narrow the scope of the investigation. From what we can tell, this is not related to PUP-9268.\n\nWhat modules do you have installed?", "created": "2018-10-29T09:47:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This has been inactive for quite some time. Please reopen if this is still an issue for you.", "created": "2019-09-27T17:05:00.000000"}], "components": ["Puppet Server"], "created": "2018-10-27T06:31:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66227405"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqtt3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_28982090234_*|*_6_*:*_1_*:*_0"}], "description": "Hi people, I see the following in my /var/log/puppetlabs/puppetserver/puppetserver.log:\n{code}\n2018-10-27 00:00:18,854 ERROR [qtp349904914-573] [p.r.core] Internal Server Error: java.lang.InterruptedException\n\tat java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)\n\tat java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2088)\n\tat com.puppetlabs.jruby_utils.pool.JRubyPool.borrowItemWithTimeout(JRubyPool.java:194)\n\tat sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval21970$borrow_with_timeout_fn__21975$fn__21976.invoke(jruby_internal.clj:133)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval21970$borrow_with_timeout_fn__21975.invoke(jruby_internal.clj:130)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2515)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22333$borrow_from_pool_BANG__STAR___22338$fn__22339.invoke(jruby_internal.clj:271)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22333$borrow_from_pool_BANG__STAR___22338.invoke(jruby_internal.clj:264)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22380$borrow_from_pool_with_timeout__22385$fn__22386.invoke(jruby_internal.clj:312)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval22380$borrow_from_pool_with_timeout__22385.invoke(jruby_internal.clj:301)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval23595$borrow_from_pool_with_timeout__23600$fn__23601.invoke(jruby_core.clj:212)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval23595$borrow_from_pool_with_timeout__23600.invoke(jruby_core.clj:199)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_jruby_instance$fn__24683.invoke(jruby_request.clj:46)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_error_handling$fn__24679.invoke(jruby_request.clj:33)\n\tat puppetlabs.services.request_handler.request_handler_service$reify__24780$service_fnk__5266__auto___positional$reify__24795.handle_request(request_handler_service.clj:47)\n\tat puppetlabs.services.protocols.request_handler$eval15873$fn__15874$G__15865__15877.invoke(request_handler.clj:3)\n\tat puppetlabs.services.protocols.request_handler$eval15873$fn__15874$G__15864__15881.invoke(request_handler.clj:3)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2515)\n\tat puppetlabs.trapperkeeper.authorization.ring_middleware$eval40055$wrap_authorization_check__40064$fn__40067$fn__40068.invoke(ring_middleware.clj:284)\n\tat puppetlabs.ring_middleware.core$eval21163$wrap_bad_request__21172$fn__21175$fn__21181.invoke(core.clj:170)\n\tat puppetlabs.ring_middleware.core$eval21261$wrap_uncaught_errors__21270$fn__21273$fn__21278.invoke(core.clj:216)\n\tat puppetlabs.ring_middleware.core$eval20888$wrap_request_logging__20893$fn__20894$fn__20896.invoke(core.clj:47)\n\tat puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n\tat puppetlabs.ring_middleware.core$eval20917$wrap_response_logging__20922$fn__20923$fn__20924.invoke(core.clj:53)\n\tat puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__33541.invoke(ringutils.clj:83)\n\tat puppetlabs.services.master.master_core$eval34520$v3_ruby_routes__34525$fn__34526$fn__34533.invoke(master_core.clj:727)\n\tat bidi.ring$eval26407$fn__26408.invoke(ring.cljc:25)\n\tat bidi.ring$eval26386$fn__26387$G__26377__26396.invoke(ring.cljc:16)\n\tat puppetlabs.comidi$make_handler$fn__28517.invoke(comidi.clj:245)\n\tat puppetlabs.metrics.http$eval33698$wrap_with_request_metrics__33703$fn__33707$fn__33709$fn__33710$fn__33711.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$eval33698$wrap_with_request_metrics__33703$fn__33707$fn__33709$fn__33710.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$eval33698$wrap_with_request_metrics__33703$fn__33707$fn__33709.invoke(http.clj:148)\n\tat puppetlabs.comidi$eval28578$wrap_with_route_metadata__28583$fn__28584$fn__28586.invoke(comidi.clj:332)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__31484.invoke(jetty9_core.clj:433)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n\tat sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$eval31060$normalize_uri_handler__31065$fn__31066$fn__31067.invoke(normalized_uri_helpers.clj:74)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\n\tat org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724)\n\tat org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n\tat com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n\tat org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:531)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)\n\tat java.lang.Thread.run(Thread.java:748)\n\n2018-10-27 00:00:19,078 ERROR [async-dispatch-3] [p.t.s.w.jetty9-core] Web server failed to shut down gracefully in configured timeout period (30,000); cancelling remaining requests.\njava.util.concurrent.TimeoutException: null\n\tat org.eclipse.jetty.util.FutureCallback.get(FutureCallback.java:128)\n\tat org.eclipse.jetty.util.FutureCallback.get(FutureCallback.java:30)\n\tat org.eclipse.jetty.server.Server.doStop(Server.java:460)\n\tat org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:313)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval31678$shutdown__31683$fn__31687$fn__31689.invoke(jetty9_core.clj:606)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval31678$shutdown__31683$fn__31687.invoke(jetty9_core.clj:605)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval31678$shutdown__31683.invoke(jetty9_core.clj:597)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_service$reify__32591$service_fnk__5266__auto___positional$reify__32598.stop(jetty9_service.clj:71)\n\tat puppetlabs.trapperkeeper.services$eval5068$fn__5095$G__5060__5098.invoke(services.clj:9)\n\tat puppetlabs.trapperkeeper.services$eval5068$fn__5095$G__5059__5102.invoke(services.clj:9)\n\tat puppetlabs.trapperkeeper.internal$eval13835$run_lifecycle_fn_BANG___13842$fn__13843.invoke(internal.clj:198)\n\tat puppetlabs.trapperkeeper.internal$eval13835$run_lifecycle_fn_BANG___13842.invoke(internal.clj:181)\n\tat puppetlabs.trapperkeeper.internal$eval14258$shutdown_BANG___14263$fn__14264$shutdown_fn__14266$fn__14277.invoke(internal.clj:440)\n\tat puppetlabs.trapperkeeper.internal$eval14258$shutdown_BANG___14263$fn__14264$shutdown_fn__14266.invoke(internal.clj:439)\n\tat puppetlabs.trapperkeeper.internal$eval13905$initialize_lifecycle_worker__13916$fn__13917$fn__14013$state_machine__11875__auto____14014$fn__14016$fn__14029.invoke(internal.clj:276)\n\tat puppetlabs.trapperkeeper.internal$eval13905$initialize_lifecycle_worker__13916$fn__13917$fn__14013$state_machine__11875__auto____14014$fn__14016.invoke(internal.clj:260)\n\tat puppetlabs.trapperkeeper.internal$eval13905$initialize_lifecycle_worker__13916$fn__13917$fn__14013$state_machine__11875__auto____14014.invoke(internal.clj:251)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:1012)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:1011)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:1016)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:1014)\n\tat clojure.core.async$ioc_alts_BANG_$fn__12043.invoke(async.clj:383)\n\tat clojure.core.async$do_alts$fn__11989$fn__11992.invoke(async.clj:252)\n\tat clojure.core.async.impl.channels.ManyToManyChannel$fn__6813.invoke(channels.clj:135)\n\tat clojure.lang.AFn.run(AFn.java:22)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\n2018-10-27 00:00:19,079 INFO  [async-dispatch-3] [p.t.s.w.jetty9-core] Web server shutdown\n2018-10-27 00:00:19,297 INFO  [clojure-agent-send-off-pool-0] [p.t.s.w.filesystem-watch-core] Closing watcher puppetlabs.trapperkeeper.services.watcher.filesystem_watch_core.WatcherImpl@159ba7c7\n2018-10-27 00:00:19,618 INFO  [main] [p.t.internal] Finished shutdown sequence\n2018-10-27 00:00:29,909 WARN  [clojure-agent-send-pool-1] [puppetserver] Puppet Setting ca is deprecated. \n   (location: /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:1169:in `issue_deprecation_warning')\n2018-10-27 00:00:30,012 INFO  [clojure-agent-send-pool-1] [puppetserver] Puppet Puppet settings initialized; run mode: master\n{code}\n\nMy puppetserver is configured to listen for http requests on localhost (I've an nginx in front to terminate TLS):\n{code}\n# /etc/puppetlabs/puppetserver/conf.d/webserver.conf\nwebserver: {\n    access-log-config: /etc/puppetlabs/puppetserver/request-logging.xml\n    client-auth: none\n    ssl-host: \"127.0.0.1\"\n    ssl-port: 8141\n    ssl-cert: \"/etc/puppetlabs/puppet/ssl/certs/puppet.local.pem\"\n    ssl-key: \"/etc/puppetlabs/puppet/ssl/private_keys/puppet.local.pem\"\n    ssl-ca-cert: \"/etc/puppetlabs/puppet/ssl/certs/ca.pem\"\n    idle-timeout-milliseconds: 30000\n    ssl-protocols: \"TLSv1.2\"\n    cipher-suites: [\n        \"TLS_RSA_WITH_AES_256_CBC_SHA256\",\n        \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n        \"TLS_RSA_WITH_AES_128_CBC_SHA256\",\n        \"TLS_RSA_WITH_AES_128_CBC_SHA\"\n    ]\n    host: \"127.0.0.1\"\n    port: 8139\n    acceptor-threads: 4\n    selector-threads: 16\n    ssl-acceptor-threads: 4\n    ssl-selector-threads: 4\n    max-threads: 300\n}\n{code}\n\nAfter the exception the puppetserver isn't listening anymore on port 8139 nor 8141. My installed packages:\n{code}\nrpm -qa | grep puppet\npuppet-agent-oauth-0.5.1-3.el7.noarch\npuppetdb-termini-5.2.6-1.el7.noarch\npuppet-release-1.0.0-3.el7.noarch\npuppet-agent-5.5.7-1.el7.x86_64\npuppetserver-5.3.6-1.el7.noarch\n{code}\n\n{code}\ngrep -v '#\\|^$' /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf\njruby-puppet: {\n    ruby-load-path: [\n        /opt/puppetlabs/puppet/lib/ruby/vendor_ruby,\n        /opt/puppetlabs/puppet/cache/lib,\n    ]\n    gem-home: /opt/puppetlabs/server/data/puppetserver/jruby-gems\n    gem-path: [${jruby-puppet.gem-home}, \"/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems\"]\n    master-conf-dir: /etc/puppetlabs/puppet\n    master-code-dir: /etc/puppetlabs/code\n    master-var-dir: /opt/puppetlabs/server/data/puppetserver\n    master-run-dir: /var/run/puppetlabs/puppetserver\n    master-log-dir: /var/log/puppetlabs/puppetserver\n    max-active-instances: 32\n    max-requests-per-instance: 2048\n    max-queued-requests: 0\n    max-retry-delay: 1800\n    use-legacy-auth-conf: false\n    environment-class-cache-enabled: true\n}\nhttp-client: {\n    ssl-protocols: [\n        TLSv1.2,\n    ]\n    cipher-suites: [\n        TLS_RSA_WITH_AES_256_CBC_SHA256,\n        TLS_RSA_WITH_AES_256_CBC_SHA,\n        TLS_RSA_WITH_AES_128_CBC_SHA256,\n        TLS_RSA_WITH_AES_128_CBC_SHA,\n    ]\n    metrics-enabled: true\n    idle-timeout-milliseconds: 1200000\n    connect-timeout-milliseconds: 120000\n}\nprofiler: {\n    enabled: true\n}\n\n{code}\n\n\nI can restart the service and it works for a few hours. I noticed this behavior 4 times today. I am not sure if it is triggered by a certain action or just be the amount of load hitting the server. It seems to be overloaded at the moment but I assume it still should not fail with such an exception. Let me know if you need further information.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15474", "fixedVersions": [], "id": "15474", "issueType": "Task", "key": "SERVER-2375", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "resolution": "Cannot Reproduce", "resolutionDate": "2019-09-27T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver fails with Internal Server Error: java.lang.InterruptedException", "timeSpent": "PT0S", "updated": "2019-09-27T17:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've updated the agent install step as part of this, since our custom helper methods were no longer working for Windows installs. That step now calls stuff directly from beaker-puppet.\n\nI've left server installation as is, since we seem to have more custom code around choosing JRuby version, that isn't currently supported in beaker-puppet.", "created": "2018-11-09T14:49:00.000000"}], "components": [], "created": "2018-10-25T16:26:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* puppetserver smoke tests are run with beaker 4 and beaker-puppet 1"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43b12c48"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2g7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_4919691_*|*_1_*:*_1_*:*_20010_*|*_10007_*:*_1_*:*_239652770_*|*_3_*:*_1_*:*_361569694_*|*_5_*:*_1_*:*_3184552153_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_932201600"}], "description": "We should update Puppet Server's acceptance tests to work with Beaker 4. Depending on what this looks like, it might also make sense to migrate some of our pre-suites to rely more heavily on beaker-puppet, instead of re-implementing similar steps in our own repo.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "17174", "fixedVersions": ["SERVER 5.3.7", "SERVER 6.0.3", "SERVER 6.1.0"], "id": "17174", "issueType": "Task", "key": "SERVER-2374", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-12-19T07:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Migrate puppetserver acceptance tests to Beaker 4/beaker-puppet 1", "timeSpent": "PT0S", "updated": "2019-01-08T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I think this is probably a duplicate of SERVER-2345. Can you try installing version 1.1.2 of the puppetserver-ca gem using /opt/puppetlabs/puppet/bin/gem and then trying again?", "created": "2018-10-25T11:21:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "To make sure the gem gets installed in the shared gem dir and overwrites the old version, you should specify {{-i /opt/puppetlabs/puppet/lib/ruby/vendor_gems}} as part of that command, see https://puppet.com/docs/puppetserver/6.0/subcommands.html#available-actions.", "created": "2018-10-25T11:28:00.000000"}, {"author": "557058:cf9507a2-54bf-4dec-90af-b6ff0ddd3f65", "body": "On a test instance with 2019.0.0 installed, ran into this issue. Running the command that Maggie suggested as root fixed it.", "created": "2018-11-06T11:47:00.000000"}, {"author": "623c0d9e8d8b9c0068b8af74", "body": "I encountered this while running the puppetserver-standalone docker container (v6.1.0) from dockerhub, but I eventually got it to work.\n\nI had to exec in to the puppetserver and run\n\n{{/opt/puppetlabs/puppet/bin/gem install -i /opt/puppetlabs/puppet/lib/ruby/vendor_gems puppetserver-ca}}\n\nthen I had to thrash around a bit on the agent (a staging machine running puppet agent v5.5.1)\n\n{{rm -rf /etc/puppetlabs/puppet/ssl}}\n{{ rm -f /opt/puppetlabs/puppet/cache/client_data/catalog/<MY-AGENT-CERTNAME>.json}}\n{{ reboot # \u00a0because starting stopping the service didn't seem to be sufficient for some reason...}}\n\nIt felt strange to me that agents got certs signed fine in my test environment against a v4.10.12 agent (which was also running in docker container) but not on the staging machine.\n\n\u00a0\n\n\u00a0", "created": "2019-02-06T11:11:00.000000"}], "components": ["Puppet Server"], "created": "2018-10-25T10:07:00.000000", "creator": "70121:e940524a-f90d-4a13-a105-8d082115d7ea", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ed4e06c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqs8v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1046407224_*|*_5_*:*_1_*:*_0"}], "description": "Hi,\n\n\u00a0\n\nI'm trying to add the Impact Analysis for CD4PE. In order to enable it I need to generate a certificate in PE. That's where I have my issue:\n\n\u00a0\n\n[root@master vagrant]# puppetserver ca generate --certname cd4pe-impact-analysis\nSuccessfully submitted certificate request for cd4pe-impact-analysis\nError:\n When attempting to sign certificate request 'cd4pe-impact-analysis', received\n code: 409\n body: Cannot sign certificate for host cd4pe-impact-analysis without a certificate request\n\nLet me know which log you need.\n\n\u00a0\n\nRegard,\n\nPierre\n\n\u00a0\n\n\u00a0", "environment": "[root@master vagrant]# puppet --version\n6.0.2\n\n[root@master vagrant]# uname -r\n3.10.0-327.el7.x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16887", "fixedVersions": [], "id": "16887", "issueType": "Improvement", "key": "SERVER-2372", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:e940524a-f90d-4a13-a105-8d082115d7ea", "resolution": "Fixed", "resolutionDate": "2018-11-06T11:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Cannot generate certificate with PE 2019", "timeSpent": "PT0S", "updated": "2019-02-06T11:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-10-24T11:46:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* A simple Jenkins job that updates the MRI gem lists in puppetserver and pe-pse with a new CA CLI gem version"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ff5919f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ry:c"}], "description": "Currently whenever we release a new version of the CA CLI gem, we have to manually update simple files in both puppetserver and pe-pse for any branches that need the update (5.3.x and beyond). This can involve up to 6 PRs currently. We should have a jenkins job that automatically updates both projects for a given stream. For the time being, this should probably be relatively unmagical: the job should accept a gem version, a FOSS branch, and a PE branch, and update https://github.com/puppetlabs/puppetserver/blob/master/resources/ext/build-scripts/mri-gem-list.txt and https://github.com/puppetlabs/pe-puppet-server-extensions/blob/johnson/resources/ext/build-scripts/mri-gem-list.txt with the new version. If we ultimately want to chain these units together to update multiple streams on a gem release (right now we are shipping the same version to all branches), we can do that, but the job shouldn't do it automatically.\n\n*Open Question:* should this work for an arbitrary gem?", "duedate": "2022-06-30T00:00:00.000000", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15941", "fixedVersions": [], "id": "15941", "issueType": "Task", "key": "SERVER-2371", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create promotion job for the puppetserver-ca-cli gem", "timeSpent": "PT0S", "updated": "2022-03-09T08:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6d9f4174-bf47-424d-a46a-6940b2255f29", "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Moved to the SERVER project as the CA REST API is implemented in clojure.", "created": "2018-10-17T09:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is related to\u00a0SERVER-2342", "created": "2018-12-17T15:03:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Moving it into that epic.", "created": "2018-12-17T15:10:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "PR up: https://github.com/puppetlabs/puppetserver/pull/1967", "created": "2019-02-06T08:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Looks like [~accountid:557058:6d9f4174-bf47-424d-a46a-6940b2255f29] (let me know if that Jira handle doesn't correspond to the github user of the same name) just about has this. I've put this ticket into \"In Progress\" for our internal tracking.", "created": "2019-02-06T16:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] I know you helped with review on this, would you mind adding release notes?", "created": "2019-03-15T09:37:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Maybe also mention that the Puppet 5 and earlier CLI used to display these values. It no longer does so this is the only way to get these values (AFAIK).", "created": "2019-03-15T10:01:00.000000"}], "components": [], "created": "2018-10-17T07:46:00.000000", "creator": "623c100c4a57610068e74585", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a825038"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2342"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqlbb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The CA's certificate_status endpoint now returns additional information for those doing custom scripting/integration with it.\n\nThe additional information is:\n* serial number\n* not_before (effectively a certificate's creation date)\n* not_after (expiration date)"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_337861580_*|*_1_*:*_1_*:*_5300639869_*|*_10007_*:*_1_*:*_77752070_*|*_3_*:*_1_*:*_691232699_*|*_5_*:*_1_*:*_3044926958_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_4409906833"}], "description": "In Puppet before version 6 puppet cert list would show serial/not_before/not_after. Within our tool we used to wrap the command line tools and used this information. We're now moving to the HTTP API (as we should have some time ago).\n\nCould these fields be added to the HTTP API?\n\nNote that Puppet 6 on the command also doens't list the fields.", "epicLinkSummary": "CA API Improvements", "estimate": "PT0S", "externalId": "17415", "fixedVersions": ["SERVER 6.3.0"], "id": "17415", "issueType": "Improvement", "key": "SERVER-2370", "labels": [], "originalEstimate": "PT0S", "parent": "15164", "parentSummary": "CA API Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c100c4a57610068e74585", "resolution": "Fixed", "resolutionDate": "2019-02-19T11:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet CA HTTP API does not include serial/not_before/not_after", "timeSpent": "PT0S", "updated": "2019-03-26T18:24:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] do you have any insight here? The question was raised: are we currently skirting this limit of 2 by having one HTTP client per JRuby? If so, multithreaded mode would put us down to just one client, and the limit could become problematic. But I'm not sure if that's how it works or not...", "created": "2020-01-22T15:02:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Good catch. Yes, we currently create a Sync client for each JRuby ([in JRuby here|https://github.com/puppetlabs/puppetserver/blob/master/src/ruby/puppetserver-lib/puppet/server/http_client.rb#L188-L195] we call [this java factory|https://github.com/puppetlabs/clj-http-client/blob/master/src/java/com/puppetlabs/http/client/Sync.java#L89]).\n\nIn this work ([PR|https://github.com/puppetlabs/clj-http-client/pull/78]) Jonathan also made these settings configurable. We might want to default them (either in server or puppet_enterprise) to be multiples of max-instances (workers).", "created": "2020-01-27T11:20:00.000000"}], "components": [], "created": "2018-10-15T21:55:00.000000", "creator": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e26f272"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See ORCH-2256 for review"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2823"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqjon:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1509156040_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_63492008527_*|*_10006_*:*_1_*:*_14060_*|*_10005_*:*_2_*:*_38558723294"}], "description": "All teams that use\u00a0clj-http-client should review the impact of the changes described in\u00a0PE-25106. The\u00a0clj-http-client previously defaulted to a maximum of 2 connection per route (host & port combination) and was not configurable. This led to many performance bottlenecks and is likely the root cause of many unsolved issues at large customers. Any code that uses this library should:\n * Define a default that is appropriate for the use case\n * Expose the values in config\n * Make appropriate changes to the {{puppet_enterprise}} module to allow customers to make changes", "epicLinkSummary": "Mutlithreaded Perfomance Evaluation", "estimate": "PT0S", "externalId": "15049", "fixedVersions": [], "id": "15049", "issueType": "Improvement", "key": "SERVER-2368", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": "16363", "parentSummary": "Mutlithreaded Perfomance Evaluation", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "resolution": "Won't Do", "resolutionDate": "2022-01-26T11:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Review impact of connection limits in clj-http-client", "timeSpent": "PT0S", "updated": "2022-01-26T11:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Let me know if you need anything else [~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1]!", "created": "2018-10-15T16:15:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\u00a0I've made a start on this here:\n\n[https://docs.google.com/document/d/1LSXmK3SKIF-Pw_mnFixs5FRscQhYtppY-ifPTTr8oMI/edit?usp=sharing]\n\nCould you please review and expand? Including best practices etc.\u00a0", "created": "2018-10-16T09:24:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "Thanks\u00a0[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0for drafting this! I have added it to the following google doc where we can continue to edit:\n\n\u00a0\n\n[https://docs.google.com/document/d/1jLEnaeMDraWRHzIrgpf_3irRE0QLrIua0htzXXtU76U/edit#|https://docs.google.com/document/d/1jLEnaeMDraWRHzIrgpf_3irRE0QLrIua0htzXXtU76U/edit]\n\n\u00a0\n\n\u00a0", "created": "2018-10-23T09:34:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Hey Claire, I see that the docs have been published, looks great! Can this ticket be resolved now?", "created": "2018-11-01T17:08:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "Yes all done! Thank you both [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] and [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]! Let me know if you notice any more issues or when things change, so we can keep these up-to-date moving forward.\u00a0", "created": "2018-11-02T03:18:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "New docs:\u00a0https://puppet.com/docs/puppet/6.0/ssl_certificates.html", "created": "2018-11-02T03:19:00.000000"}], "components": ["Puppet Server"], "created": "2018-10-15T16:14:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@566d9282"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "DOCUMENT-925"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqjl3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_61945011_*|*_10007_*:*_1_*:*_749857736_*|*_3_*:*_1_*:*_696898523_*|*_5_*:*_1_*:*_0"}], "description": "We have thematic sections to our docs like \"cli tools\", \"ssl and certificates\", \"http apis\", \"puppet language\", as well as component sections like \"puppet server\", \"hiera\", and \"facter\".\n\nUntil recently our CA was a subsystem implemented, separately, in two different components and jointly were responsible for a large share of the http apis, a fifth of the cli tools, and most (but not quite all) of the ssl and certificates section.\n\nNow that we've removed one of our implementation and updated a lot of the content in the cli tools and ssl/certs sections it feels like we need a landing page that introduces those changes and gives a high level picture of the state of the art/best practices in Puppet 6.", "epicLinkSummary": "Overhaul Puppet Server CA docs", "estimate": "PT0S", "externalId": "16533", "fixedVersions": [], "id": "16533", "issueType": "Task", "key": "SERVER-2367", "labels": [], "originalEstimate": "PT0S", "parent": "54654", "parentSummary": "Overhaul Puppet Server CA docs", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-11-02T03:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create CA intro/landing page", "timeSpent": "PT0S", "updated": "2018-11-02T03:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2018-10-12T11:18:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6740cb91"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9226"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1x3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5364_*|*_5_*:*_1_*:*_361917100_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1124231665"}], "description": "(Initial planned release date: 2018-10-25)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update Winston and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2018-10-26T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.3 Release - 2018-10-25\n", "estimate": "PT0S", "externalId": "15713", "fixedVersions": [], "id": "15713", "issueType": "Task", "key": "SERVER-2366", "labels": [], "originalEstimate": "PT0S", "parent": "23322", "parentSummary": "Puppet Platform 6.0.3 Release - 2018-10-25\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-10-25T11:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.0.2)", "timeSpent": "PT0S", "updated": "2018-10-29T16:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2018-10-12T11:18:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cc27f0f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9226"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1wv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3163_*|*_5_*:*_1_*:*_519232905_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_966945193"}], "description": "(Initial planned release date: 2018-10-25)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\n", "duedate": "2018-10-23T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.3 Release - 2018-10-25\n", "estimate": "PT0S", "externalId": "15048", "fixedVersions": [], "id": "15048", "issueType": "Task", "key": "SERVER-2365", "labels": [], "originalEstimate": "PT0S", "parent": "23322", "parentSummary": "Puppet Platform 6.0.3 Release - 2018-10-25\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-10-29T16:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.0.2)", "timeSpent": "PT0S", "updated": "2018-10-29T16:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] can this be resolved now?", "created": "2018-10-24T12:59:00.000000"}], "components": [], "created": "2018-10-12T11:18:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76011d97"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9226"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1wn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4845_*|*_5_*:*_1_*:*_426656764_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1059530331"}], "description": "(Initial planned release date: 2018-10-25)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2018-10-22T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.3 Release - 2018-10-25\n", "estimate": "PT0S", "externalId": "14831", "fixedVersions": [], "id": "14831", "issueType": "Task", "key": "SERVER-2364", "labels": [], "originalEstimate": "PT0S", "parent": "23322", "parentSummary": "Puppet Platform 6.0.3 Release - 2018-10-25\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-10-29T16:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.0.2)", "timeSpent": "PT0S", "updated": "2018-10-29T16:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Ticketmatch for 6.0.2 is weird because we had to cherry-pick some changes back to 5.3.x, and when they got merged up they're showing as being part of this release, even though they were already released in this stream as part of 6.0.0 and 6.0.1. I think all of the fix versions are as they should be now.", "created": "2018-10-23T11:04:00.000000"}], "components": [], "created": "2018-10-12T11:18:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@177c5c85"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9226"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1wf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5659_*|*_5_*:*_1_*:*_519869493_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_966318448"}], "description": "(Initial planned release date: 2018-10-25)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Check project.clj and clj-parent for any library updates since the last\n    release (e.g. {{git diff 2.3.2 \u2013 project.clj}})\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2018-10-18T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.3 Release - 2018-10-25\n", "estimate": "PT0S", "externalId": "17414", "fixedVersions": [], "id": "17414", "issueType": "Task", "key": "SERVER-2363", "labels": [], "originalEstimate": "PT0S", "parent": "23322", "parentSummary": "Puppet Platform 6.0.3 Release - 2018-10-25\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-10-23T15:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.0.2)", "timeSpent": "PT0S", "updated": "2018-10-29T16:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2018-10-12T11:09:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37a7077a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1w7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4958_*|*_5_*:*_1_*:*_516516164_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_970074627"}], "description": "(Initial planned release date: 2018-10-23)\n\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update Winston and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2018-10-24T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.7 Release - 2018-10-23\n", "estimate": "PT0S", "externalId": "15940", "fixedVersions": [], "id": "15940", "issueType": "Task", "key": "SERVER-2362", "labels": [], "originalEstimate": "PT0S", "parent": "26436", "parentSummary": "Puppet Platform 5.5.7 Release - 2018-10-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-10-29T16:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.6)", "timeSpent": "PT0S", "updated": "2018-10-29T16:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-10-12T11:08:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68422c86"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1vz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2811_*|*_3_*:*_1_*:*_10465581_*|*_5_*:*_1_*:*_529854815_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_946278564"}], "description": "(Initial planned release date: 2018-10-23)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Run the release pipeline for the release or maintenance branch being released\n    from. This pipeline currently starts with\n    \"puppetserver (<branch>) Release 01: Tag & Deploy\" and will automatically\n    build, stage and promote into PE.\n* Verify tagged release version is built, tested and artifacts exist at\n    builds.delivery.puppetlabs.net.\n", "duedate": "2018-10-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.7 Release - 2018-10-23\n", "estimate": "PT0S", "externalId": "15473", "fixedVersions": [], "id": "15473", "issueType": "Task", "key": "SERVER-2361", "labels": [], "originalEstimate": "PT0S", "parent": "26436", "parentSummary": "Puppet Platform 5.5.7 Release - 2018-10-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-10-23T12:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.6)", "timeSpent": "PT0S", "updated": "2018-10-29T16:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2018-10-12T11:08:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@165169bc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1vr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5208_*|*_5_*:*_1_*:*_540359278_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_946257012"}], "description": "(Initial planned release date: 2018-10-23)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2018-10-18T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.7 Release - 2018-10-23\n", "estimate": "PT0S", "externalId": "15047", "fixedVersions": [], "id": "15047", "issueType": "Task", "key": "SERVER-2360", "labels": [], "originalEstimate": "PT0S", "parent": "26436", "parentSummary": "Puppet Platform 5.5.7 Release - 2018-10-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-10-29T16:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.6)", "timeSpent": "PT0S", "updated": "2018-10-29T16:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "5a8ddd3e21870439aa9195e5", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] is this still on the radar? Please update the ticket with the status.\u00a0\n\nThank you!", "created": "2018-10-18T17:19:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Patrick was out Friday. I ran the ticketmatch for this as part of reviewing the release notes PR: https://github.com/puppetlabs/puppetserver/pull/1856 Things look good after I updated a few of the tickets that went out in 6.0.0 to include this new 5.3.6 fix version.", "created": "2018-10-22T10:33:00.000000"}], "components": [], "created": "2018-10-12T11:08:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23f207a3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1vj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4717_*|*_5_*:*_1_*:*_617312725_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_869317727"}], "description": "(Initial planned release date: 2018-10-23)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Check project.clj and clj-parent for any library updates since the last\n    release (e.g. {{git diff 2.3.2 \u2013 project.clj}})\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2018-10-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.7 Release - 2018-10-23\n", "estimate": "PT0S", "externalId": "14830", "fixedVersions": [], "id": "14830", "issueType": "Task", "key": "SERVER-2359", "labels": [], "originalEstimate": "PT0S", "parent": "26436", "parentSummary": "Puppet Platform 5.5.7 Release - 2018-10-23\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-10-22T12:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.6)", "timeSpent": "PT0S", "updated": "2018-10-29T16:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Filed TK-474 as a high-level ticket describing the main work that needs to be done in tk-auth. That ticket will most likely be subtasked later, and then accompanied by tickets to track the work of testing and possibly adding some built-in rules to ship with PE.", "created": "2018-11-27T16:33:00.000000"}], "components": [], "created": "2018-10-11T17:46:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52acc1b9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2gn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11811_*|*_3_*:*_1_*:*_2144804653_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_1915154893"}], "description": "We've had some people ask for tk-auth to respect RBAC tokens. We should look into the use cases for this, think about how we might implement it, and create a proposal.\n\nWe think this might be useful for doing arbitrary catalog compilations (CD4PE), gated access to the CA, and possibly device management.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15471", "fixedVersions": [], "id": "15471", "issueType": "Task", "key": "SERVER-2358", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-11-27T16:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Research RBAC tk-auth integration", "timeSpent": "PT0S", "updated": "2018-11-27T16:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-10-11T15:46:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the CA CLI OID can be referenced either with {{pp_cli_auth}} or {{pp_auth_ca_cli}}\n* PE's management of this auth.conf setting is updated to use the new name\n* puppetserver's default auth.conf is updated to use the new name"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@cb22c99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqgn3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3353702676_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2590168388_*|*_10005_*:*_1_*:*_97983868025"}], "description": "We recently added a special auth extension to the puppet master's cert, which enables access to the {{certificate_status}} endpoints for signing and revoking certs. This extension is currently referenced in {{auth.conf}} as {{pp_cli_auth}}, but we want to establish a convention of prefixing all auth extensions with {{pp_auth*}}. We should add an alias to the extension with the correct prefix and only document that version, to encourage users to expect that naming convention.\n\nBecause we have already shipped some auth.conf files with the old name, in both FOSS and PE, it is necessary for the time being to still allow puppetserver to recognize the old name. Eventually the old version should be removed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16531", "fixedVersions": ["SERVER 6.0.z"], "id": "16531", "issueType": "Improvement", "key": "SERVER-2357", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Fix", "resolutionDate": "2022-01-26T11:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Rename CLI auth extension to follow naming conventions", "timeSpent": "PT0S", "updated": "2022-01-26T11:35:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Marking as a duplicate of SERVER-2324.", "created": "2018-11-14T16:40:00.000000"}], "components": [], "created": "2018-10-11T12:45:00.000000", "creator": "557058:45fa3568-deb5-4da5-b894-a1ec07f1c138", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27294e85"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqg8v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Nov/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2955330030_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:* 2019.0.0\n*Puppet Server Version:* 2019.0.0.29\n*OS Name/Version:* centos7\n\n***This AWS server is only up temporarily, and is running a 10 day soak test, so don't do anything that would impact perf***\nGoto this URL https://ip-10-227-1-80.amz-dev.puppet.net:8140/puppet/experimental/dashboard.html\n\n*Desired Behavior:*\nDeveloper dashboard should show some stats\n\n*Actual Behavior:*\nAll I get is a page with the title \"Puppet Server Developer Dashboard\" and two odd small boxes.\n\nDocs here imply no setup should be needed to make this work.\nhttps://puppet.com/docs/puppetserver/6.0/puppet_server_metrics.html\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15166", "fixedVersions": [], "id": "15166", "issueType": "Bug", "key": "SERVER-2356", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:45fa3568-deb5-4da5-b894-a1ec07f1c138", "resolution": "Duplicate", "resolutionDate": "2018-11-14T16:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Developer dashboard not working on 2019.0.0", "timeSpent": "PT0S", "updated": "2018-11-14T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2018-10-10T12:38:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20c030f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1xj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously the `puppetserver ca` tool would default to $certname for connecting to the server (as this is the most common workflow). However the agent defaults to connecting to \"puppet\" as its server and some environments configured to have the CA reachable by the name puppet, rather than the certname experienced connectivity issues with the tool. This was especially troublesome in our pupperware docker environment.\n\nThe `puppetserver ca` tool now has the same default for $server as the agent, \"puppet\". It also will honor the settings within the agent section of the puppet.conf to help ease the transition for users who have only set custom $server values in the agent section (in testing this bug fix we realized that most workflows involved setting the $server value in the agent section to $certname, which breaks with this fix without the additional step of also reading the agent section)."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2147459645_*|*_1_*:*_1_*:*_105077234_*|*_10007_*:*_1_*:*_319304_*|*_3_*:*_1_*:*_222610_*|*_5_*:*_1_*:*_2577106311_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1202425587"}], "description": "Current:\n\nThe puppetserver-ca gem will resolve $ca_server -> $server -> $certname when attempting to connect, however puppet proper resolves it like $ca_server -> $server -> \"puppet\". This works in our PE and the server team's dev environments where we explicitly manage the $server setting, but will not necessarily work in other production or development environments.\n\n-----\n\nOriginal and Updates:\n\n*Puppet Version:* 6.0.2\n*Puppet Server Version:* 6.0.1\n*OS Name/Version:* centos 7\n\nWhen a puppetserver's fqdn is set to 'puppet', running `puppet agent` on that host succeeds but running `puppetserver ca` on that host fails with an authorization issue. However, if you run `puppet config set server puppet`, `puppetserver ca` succeeds.\n\nIf the puppetserver's fqdn is set to any other hostname without domain (ie, 'puppetize'), running both `puppet agent` and `puppetserver ca` fail with certificate verify failed.\n\n*examples:*\nhostname = puppet\n{noformat}\n[root@q7i6xv8dbok5p3f ~]# hostnamectl set-hostname puppet\n[root@q7i6xv8dbok5p3f ~]# vim /etc/hosts\n[root@q7i6xv8dbok5p3f ~]# hostname -f\npuppet\n[root@q7i6xv8dbok5p3f ~]# grep puppet /etc/hosts\n10.16.115.103 puppet\n[root@q7i6xv8dbok5p3f ~]# service puppetserver start\nRedirecting to /bin/systemctl start  puppetserver.service\n[root@q7i6xv8dbok5p3f ~]# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Caching catalog for puppet.delivery.puppetlabs.net\nInfo: Applying configuration version '1539196342'\nNotice: Applied catalog in 0.01 seconds\n[root@q7i6xv8dbok5p3f ~]# puppetserver ca list\nTraceback (most recent call last):\n        12: from /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'\n        11: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/cli.rb:89:in `run'\n        10: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:60:in `run'\n         9: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:117:in `get_all_certs'\n         8: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/certificate_authority.rb:215:in `get_certificate_statuses'\n         7: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/certificate_authority.rb:253:in `get'\n         6: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/utils/http_client.rb:41:in `with_connection'\n         5: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:609:in `start'\n         4: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:909:in `start'\n         3: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:920:in `do_start'\n         2: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:981:in `connect'\n         1: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/protocol.rb:44:in `ssl_socket_connect'\n/opt/puppetlabs/puppet/lib/ruby/2.5.0/net/protocol.rb:44:in `connect_nonblock': SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate) (OpenSSL::SSL::SSLError)\n[root@q7i6xv8dbok5p3f ~]# puppet config set server puppet\n[root@q7i6xv8dbok5p3f ~]# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Caching catalog for puppet.delivery.puppetlabs.net\nInfo: Applying configuration version '1539196364'\nNotice: Applied catalog in 0.01 seconds\n[root@q7i6xv8dbok5p3f ~]# puppetserver ca list --all\nSigned Certificates:\n    puppet.delivery.puppetlabs.net   (SHA256)  ED:3F:AE:F8:6C:3D:C1:07:8A:EE:99:84:3F:90:E6:D2:3A:44:1B:25:44:9E:37:91:66:D6:DB:1E:C4:E5:0C:14  alt names: [\"DNS:puppet\", \"DNS:puppet.delivery.puppetlabs.net\"]\n{noformat}\n\nhostname = puppetize\n{noformat}\n[root@q7i6xv8dbok5p3f ~]# hostnamectl set-hostname puppetize\n[root@q7i6xv8dbok5p3f ~]# vim /etc/hosts\n[root@q7i6xv8dbok5p3f ~]# service puppetserver start\nRedirecting to /bin/systemctl start  puppetserver.service\n[root@q7i6xv8dbok5p3f ~]# hostname -f\npuppetize\n[root@q7i6xv8dbok5p3f ~]# puppet config set server puppetize\n[root@q7i6xv8dbok5p3f ~]# puppet agent -t\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppetize.delivery.puppetlabs.net]\nInfo: Retrieving pluginfacts\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppetize.delivery.puppetlabs.net]\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppetize.delivery.puppetlabs.net]\nInfo: Retrieving plugin\nError: /File[/opt/puppetlabs/puppet/cache/lib]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppetize.delivery.puppetlabs.net]\nError: /File[/opt/puppetlabs/puppet/cache/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppetize.delivery.puppetlabs.net]\nError: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppetize.delivery.puppetlabs.net]\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\nError: Could not send report: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate rejected): [ok for /CN=puppetize.delivery.puppetlabs.net]\n[root@q7i6xv8dbok5p3f ~]# puppetserver ca list\nTraceback (most recent call last):\n        12: from /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'\n        11: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/cli.rb:89:in `run'\n        10: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:60:in `run'\n         9: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:117:in `get_all_certs'\n         8: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/certificate_authority.rb:215:in `get_certificate_statuses'\n         7: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/certificate_authority.rb:253:in `get'\n         6: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/utils/http_client.rb:41:in `with_connection'\n         5: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:609:in `start'\n         4: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:909:in `start'\n         3: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:920:in `do_start'\n         2: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:981:in `connect'\n         1: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/protocol.rb:44:in `ssl_socket_connect'\n/opt/puppetlabs/puppet/lib/ruby/2.5.0/net/protocol.rb:44:in `connect_nonblock': SSL_connect returned=1 errno=0 state=error: certificate verify failed (unspecified certificate verification error) (OpenSSL::SSL::SSLError)\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14829", "fixedVersions": ["SERVER 6.1.0"], "id": "14829", "issueType": "Bug", "key": "SERVER-2354", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2018-11-19T11:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "`puppetserver ca` has wrong default value for server setting", "timeSpent": "PT0S", "updated": "2018-12-19T07:21:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This works for me. Maybe you were on an old version of the gem?", "created": "2018-10-22T10:43:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Must have been. Working fine for me.", "created": "2019-01-28T22:04:00.000000"}], "components": [], "created": "2018-10-09T13:54:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d8b0693"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqea7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9623362447_*|*_6_*:*_1_*:*_0"}], "description": "This is the same issue as PUP-1916, but with {{puppetserver ca clean}}. If an agent has submitted a CSR, but it hasn't been signed yet, then {{puppetserver ca clean --certname <name>}} will fail trying to revoke the cert first.\n\n{noformat}\n$ puppetserver ca clean --certname agent\nError:\n    When attempting to revoke certificate 'agent', received:\n      code: 409\n      body: Cannot revoke certificate for host agent without a signed certificate\n{noformat}\n\nThe {{clean}} action should only try to revoke the client cert if one has been issued.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17173", "fixedVersions": [], "id": "17173", "issueType": "Bug", "key": "SERVER-2353", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Cannot Reproduce", "resolutionDate": "2019-01-28T22:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver ca clean cannot remove signing requests", "timeSpent": "PT0S", "updated": "2019-01-28T22:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "CC [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "created": "2018-10-09T13:34:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "We should add {{pp_cli_auth}} to the ppAuthCertExt table of registered Puppet auth extensions:\n\nhttps://puppet.com/docs/puppet/6.0/ssl_attributes_extensions.html#reference-5482\n\nAlso, we should describe {{pp_cli_auth}} in a CA-specific context, perhaps in the {{puppetserver ca}} docs alongside the example of authorization by certname:\n\nhttps://puppet.com/docs/puppetserver/6.0/subcommands.html#ca", "created": "2018-10-09T14:43:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "The {{pp_cli_auth}} OID name does not follow the {{pp_auth_*}} pattern established in this OID range. We haven't documented it yet though, which means that if we value consistency in naming we have an opportunity to rename {{pp_cli_auth}} to {{pp_auth_cli}} as a bugfix before we're locked into painful change constraints.\n\n\u00a0Was there any intentionality behind not naming this OID consistently with the other in the range? Can we fix this?\n\nUsing the {{pp_auth_*}} prefix communicates in the name the difference between an OID in the ppAuthCertExt range vs. an OID in the ppRegCertExt range. The difference is important because CSRs containing ppAuthCertExt OIDs, like {{dns_alt_names}}, are protected from accidental signing. If we don't stick to this convention then there's no way to know if a given {{pp_\\*}} trusted fact is a ppAuthCertExt or a ppRegCertExt short of remembering or looking it up.", "created": "2018-10-09T14:46:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] - as discussed, please work on this one.", "created": "2018-10-11T09:57:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] any comment on the OID name issue described above?", "created": "2018-10-11T10:31:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "[~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49] - we didn't discuss this when we met about the ticket (it was more about how to get the content in this epic written), but [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] is the person who would be able to answer your question.\u00a0", "created": "2018-10-11T10:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So honestly I picked the name kind of naively. However, unlike the other extensions you mention, we explicitly disallow signing this with Puppet Server in ALL cases: setting {{allow-authorization-extensions}} to true will not allow you to sign CSRs with this particular extension. It is locked down this tightly because any cert with this extension gains access to the CA signing and revoking API endpoints (which used to be entirely locked down with a deny-all rule).\n\nI'm happy to rename it if you think that's still more appropriate given these differences.", "created": "2018-10-11T11:00:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Interesting to know that this one is \"especially special\".\n\nI do think we should rename it to preserve the \"{{pp_auth_*}} is special\" name-memory trigger, especially-specialness notwithstanding, while we have the opportunity before it's documented.", "created": "2018-10-11T11:03:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yeah, this one is definitely a little \"especially special\" since we don't define hard requirements for the semantics of other OIDs, they are more like helpful examples that users can assigning meaning to in their signing policies.\n\nThis OID cannot be part of a signing policy (which, yes, is a bit janky but was a compromise that allowed us to loosen the restrictions on policy based signing of other extensions) and represents the fact that a node in a deployment has a specific role in relation to the CA regardless of other user defined roles.", "created": "2018-10-11T12:01:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] do you need a separate ticket wrt the name of this OID?\n\nMy main concern is communicating _in the name of the extension_ that it is special. The main differentiation that's important is special vs. un-special. {{pp_auth_*}} as a prefix would accomplish that.", "created": "2018-10-11T12:07:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So looking into this more, we only have two of these specified right now, looks like, {{pp_authorization}} and {{pp_auth_role}} https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L215-L216. That doesn't seem like a particularly strong pattern to me. The existing docs also don't recommend any particular naming conventions: https://puppet.com/docs/puppet/5.4/ssl_attributes_extensions.html#recommended-oids-for-extensions.\n\nAnd we're actually already not in a great spot in terms of lock-in: we have already shipped auth.conf files in FOSS (in both 5 and 6) that reference this name. So we would probably have to maintain both names for at least the lifetime of Puppet 6, which seems... less than ideal to me.", "created": "2018-10-11T12:13:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] to the end user, what we document will be what defines the UX.\n\nIs it fair to paraphrase\n{quote}That doesn't seem like a particularly strong pattern to me.{quote}\nas,\n{quote}The precedent is weak", "created": "2018-10-11T12:58:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Fair enough. I didn't realize we were trying to establish this as a pattern when I was originally trying to figure out what to call it. Do you think people are going to find it misleading when setting {{allow-authorization-extensions}} to true doesn't allow them to use this extension? Maybe it's sufficient to document that caveat?", "created": "2018-10-11T15:21:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Yeah, it would definitely make sense when documenting this one (whatever it's called) that it be singled out that way, and those constraints mentioned. Per your and Justin's explanation of how it's extra-special. ", "created": "2018-10-11T15:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Cool, will do. Filed SERVER-2357 for that work.", "created": "2018-10-11T15:46:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Please make sure to update https://github.com/puppetlabs/puppet/blob/master/lib/puppet/ssl/oids.rb also so that the agent can display meaningful oids in the future, e.g. {{puppet ssl print}}", "created": "2019-02-08T00:03:00.000000"}, {"author": "557058:bb372eb8-0089-49ba-8b22-213d5bf560f6", "body": "[~accountid:61af86343618cd006f430854] Why was this ticket closed? There has not been a resolution, and the {{pp_cli_auth}} extension requirement in auth.conf is still not documented any where that I can find in the publics docs.\n\nI know that Puppet 6 has been out for a while now, but there are still cases of people coming across this default rule in auth.conf via an upgrade, and they don't know how to get around it because it's not at all documented:\n{code}\nallow: {\n  extensions: {\n     pp_cli_auth: \"true\"\n  }\n}\n{code}\n\nFor example: https://puppetcommunity.slack.com/archives/C0W298S9G/p1657229472576189\n\nThe best advice I've been able to find is [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]'s comment here:\n* https://groups.google.com/g/puppet-users/c/Tm9-Q_HIieg/m/sUFsbIiPDAAJ\n\n{quote}\n1) whitelist the master's certname (which is more secure than allow-unauthenticated anyway). See the example at the bottom of [this section|https://puppet.com/docs/puppetserver/6.0/subcommands.html#ca] in the docs\n2) Another community member also created https://github.com/smortex/puppet-add-cli-auth-to-certificate yesterday, which adds the auth extension to your master cert.\n\nFor all of these things, it's important to remember to restart your server. The auth.conf file in particular won't be reloaded until you restart the server.\n{quote}\n\nThe open questions that I think should be answered somewhere in the Puppetserver docs:\n* What does the {{pp_cli_auth}} extension mean?\n* Where does it come from?\n* How do you add it to an existing Puppetserver's certificate?\n* What are the recommended alternate options instead of {{pp_cli_auth}}, if any?", "created": "2022-07-07T18:42:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:619528076d002b006b1c1e8d] we may want to re-evaluate this one that was closed. I'm not sure how it fits in with your current roadmap. [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da] may have info on it.", "created": "2022-07-11T10:20:00.000000"}, {"author": "619528076d002b006b1c1e8d", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da] do you have an idea about this one? Is this specifically for adding documentation for the earlier change, or is there more to it?", "created": "2022-07-11T10:26:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Reading through this ticket, it looks like this is just for documenting the {{pp_cli_auth}} extension - the open questions in [~accountid:557058:bb372eb8-0089-49ba-8b22-213d5bf560f6]'s comment seem like the right things to document. No idea what the priority should be.", "created": "2022-07-11T11:13:00.000000"}], "components": ["Puppet Server"], "created": "2018-10-09T13:31:00.000000", "creator": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The pp_cli_auth setting for Server's auth.conf is documented."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14d58adc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "DOCUMENT-925"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqe9r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Oct/18"}], "description": "SERVER-2287 / [puppetlabs/puppetserver commit d8f9ef9|https://github.com/puppetlabs/puppetserver/commit/d8f9ef90b6425291e2ff49e996c741e4680494a0] added a {{pp_cli_auth}} setting to rules in Server's auth.conf file, to allow access to the /puppet-ca/v1/certificate_status and certificate_statuses endpoints. This setting is not described in the [auth.conf documentation|https://puppet.com/docs/puppetserver/6.0/config_file_auth.html].\n\nSee also [https://groups.google.com/forum/#!topic/puppet-users/Tm9-Q_HIieg] and [Puppet Community Slack|https://puppetcommunity.slack.com/archives/C0W298S9G/p1539104904000100].", "epicLinkSummary": "Overhaul Puppet Server CA docs", "estimate": "PT0S", "externalId": "15165", "fixedVersions": [], "id": "15165", "issueType": "Bug", "key": "SERVER-2355", "labels": [], "originalEstimate": "PT0S", "parent": "54654", "parentSummary": "Overhaul Puppet Server CA docs", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document Puppet Server's pp_cli_auth setting in auth.conf", "timeSpent": "PT0S", "updated": "2022-07-26T12:58:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Weird, some of the links contain 5.3. I think that means some of our 6.0 docs are hard coded to go to 5.3 server docs rather than latest (or latest redirects incorrectly in some situations).\n\nUpdated the links in the description, the issues with the pages are still applicable.", "created": "2018-10-09T12:32:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Is there any value for the Rack/Passenger/Ruby master content in the context of upgrading from an older Puppet master to current versions of Server? If so, it should probably move to docs for relevant older versions of Puppet instead of being deprecated or deleted. The \"notable differences\" page in particular seems like it would be useful in that context.", "created": "2018-10-09T12:45:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] I created a PR for the last three bullet points in your list\u00a0[https://github.com/puppetlabs/puppetserver/pull/1845.]\u00a0If you could please review when you get a chance. One of these changes will also need to change in the navigation, which I think is in the docs repo. I didn't see where it mentioned that ca.conf is deprecated? I could just see that is says master.conf is deprecated. Also,\u00a0will these changes just affect the Puppet 6 docs, or all previous versions? The docs repo is split up into different version numbers, but the docs in your repo are not, so I wasn't sure. As it makes sense what Garrett said that these features should still be in older versions of the docs.\u00a0\n\nThe first two bullet points in your list are docs in either the Puppet repo or EasyDITA, so I will do these separately. But just to double check, the paragraph titled \"Classic Rack-based Puppet master\" (page [https://puppet.com/docs/puppet/6.0/services_commands.html#classic-rack-based-puppet-master)]\u00a0can be completely removed from the 6.0 docs? And so can these three pages?:\n * [https://puppet.com/docs/puppet/6.0/services_master_rack.html]\n * [https://puppet.com/docs/puppet/6.0/services_master_webrick.html]\n * [https://puppet.com/docs/puppet/6.0/man/master.html]\n\nThanks!\n\n\u00a0", "created": "2018-10-12T08:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] is probably the person that knows the most about how different versions of our in repo docs get on the website.\n\nI had the very magical thinking impression that the docs should match up with the code at any given version and that docs machinery pulled the latest docs for a given support stream. eg. the 6.0 docs were generated from our 6.0.x branch, our 5.3 docs generated from our 5.3.x branch...\n\nBased on that, probably completely inaccurate daydream, I would target any missing deprecation notices at our 5.3.x branch and rip out any mentions of passenger and `puppet master` in our 6.0.x branch. And, regardless of where the docs site pulls from, I think it would best to have our docs match the respective code they're next to.", "created": "2018-10-12T10:53:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yep, those four pages can be completely removed from any 6.0 documentation.", "created": "2018-10-12T10:54:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] The Server docs are published based on the settings in [{{source/_config.yml}} on the {{master}} branch of the {{puppetlabs/puppet-docs}} Github repo|https://github.com/puppetlabs/puppet-docs/blob/master/source/_config.yml].\n\nRight now, those settings for Server are:\n{code}  /puppetserver/6.0:\n    ...\n    external_source:\n      repo: git://github.com/puppetlabs/puppetserver.git\n      commit: origin/6.0.x\n      subdirectory: documentation{code}\nThis means changes made to docs in the {{6.0.x}} branch of the {{puppetlabs/puppetserver}} Github repo will be published to the {{/puppetserver/6.0/}} part of the docs website on the next github-to-s3 Jenkins job run.\n\nFor the Puppet Server 5.3 docs, those settings are:\n{code}  /puppetserver/5.3:\n    ...\n    external_source:\n      repo: git://github.com/puppetlabs/puppetserver.git\n      commit: origin/5.3.x\n      subdirectory: documentation{code}\nThis means changes made to docs in the {{5.3.x}} branch of the {{puppetlabs/puppetserver}} Github repo will be published to the {{/puppetserver/5.3/}} part of the docs website on the next github-to-s3 Jenkins job run.", "created": "2018-10-12T13:26:00.000000"}], "components": [], "created": "2018-10-09T12:21:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@503b2ac1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "DOCUMENT-925"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqe67:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_164018426_*|*_3_*:*_1_*:*_343879729_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_77742742"}], "description": "We on the team, and users, keep finding references to the `puppet master` application throughout our docs. We should sit down and purge all of it.\n\nI running list of references found:\n* https://puppet.com/docs/puppet/6.0/services_commands.html#classic-rack-based-puppet-master  (and bit in the above section on Puppet Server)\n* Links from the above section:\n** https://puppet.com/docs/puppet/6.0/services_master_rack.html\n** https://puppet.com/docs/puppet/6.0/services_master_webrick.html\n** https://puppet.com/docs/puppet/6.0/man/master.html\n* References to the rack master on the puppet server page, specifically this section: https://puppet.com/docs/puppetserver/6.0/services_master_puppetserver.html#puppet-master-service (note further down the page we also mention that the ca.conf is deprecate, which is no longer true in 6)\n* We should deprecate this page as there is no longer a passenger version to be \"vs\" https://puppet.com/docs/puppetserver/6.0/puppetserver_vs_passenger.html\n* The wording of this page should change as these are \"how Puppet Server uses the values in puppet.conf\" rather than \"how it differs from a Ruby Master in its usage of puppet.conf\" https://puppet.com/docs/puppetserver/6.0/puppet_conf_setting_diffs.html\n*  ", "epicLinkSummary": "Overhaul Puppet Server CA docs", "estimate": "PT0S", "externalId": "17413", "fixedVersions": [], "id": "17413", "issueType": "Task", "key": "SERVER-2352", "labels": [], "originalEstimate": "PT0S", "parent": "54654", "parentSummary": "Overhaul Puppet Server CA docs", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-10-16T07:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "(DOCS) Purge references to `puppet master` application", "timeSpent": "PT0S", "updated": "2018-10-16T07:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-10-09T11:56:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* {{puppetserver ca generate --ca-client}} does not work while Puppet Server's CA service is running"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6880c970"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqe53:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_18977169_*|*_1_*:*_1_*:*_29225_*|*_10007_*:*_1_*:*_85382301_*|*_3_*:*_1_*:*_9167224_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_683503348"}], "description": "We want to ensure that the user can't generate certs offline with the CA CLI tool, while the server is running, since this could cause race conditions. The {{generate}} action should check that the server is offline before generating certs with the {{--ca-client}} flag.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17412", "fixedVersions": [], "id": "17412", "issueType": "Sub-task", "key": "SERVER-2351", "labels": [], "originalEstimate": "PT0S", "parent": "15163", "parentSummary": "Make CA CLI check that server is offline before generating offline certs", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-10-18T17:20:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Query status endpoint for CA status before generating offline certs", "timeSpent": "PT0S", "updated": "2018-10-18T17:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Example of registering a service: https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/master/master_service.clj#L171-L178", "created": "2018-10-09T13:09:00.000000"}], "components": [], "created": "2018-10-09T11:53:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppet Server's CA service is registered with the status service\n* The disabled CA service is not registered with the status service\n* The proxy CA service is registered with the status service under its own ID"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49e60316"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqe4v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The CA service and the CA proxy service (in PE) now have their own entries in the status endpoint output and can be queried as \"ca\" and \"ca-proxy\" respectively."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_523037338_*|*_1_*:*_1_*:*_16980_*|*_10007_*:*_1_*:*_2221472_*|*_3_*:*_1_*:*_82278437_*|*_5_*:*_1_*:*_580973662_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_105380492"}], "description": "Puppet Server has a status endpoint that reports the statuses of all its various services. Currently the CA service is not registered here, but since now we are interested in checking its status for the purpose of making sure it is NOT running, we should register it and use that information to gate the ability to generate offline certs with the CA CLI.\n\nThe disabled CA service should not be registered, and the proxy CA service should be registered separate from the main CA service.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17172", "fixedVersions": ["SERVER 5.3.6", "SERVER 6.0.2"], "id": "17172", "issueType": "Sub-task", "key": "SERVER-2350", "labels": [], "originalEstimate": "PT0S", "parent": "15163", "parentSummary": "Make CA CLI check that server is offline before generating offline certs", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-10-24T11:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Register the CA service with the status service", "timeSpent": "PT0S", "updated": "2018-10-24T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This does make sense for us to do, given that we recommend that FOSS users use r10k and then transition to Code Manager as part of upgrading to PE. So it makes sense to include r10k in our FOSS packages. If we do this, we have to make sure however we install the gem doesn't conflict with the way we are shipping it in PE. Will need a little investigation, but should be doable.", "created": "2018-10-09T13:02:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "[~accountid:62438a418678e9007059bcca] as a workaround for the \"download every dependent rubygem\" part: use bundler.\n\nwhat i'm doing on an internet-connected host with same OS/Ruby as your target system:\n\n*  create a simple Gemfile \n\n{noformat}\nsource \"https://rubygems.org\"\ngem \"r10k\"\n{noformat}\n\n* run {{bundle install --standalone --binstubs}}\n* all required dependencies will be included in the folder - create a tar.gz of it or a simple RPM/deb with ruby fpm\n* ship this all-in-one file to your target\n", "created": "2018-10-10T02:18:00.000000"}, {"author": "61af86343618cd006f430854", "body": "workaround available in comments", "created": "2021-12-01T09:45:00.000000"}], "components": [], "created": "2018-10-08T12:00:00.000000", "creator": "62438a418678e9007059bcca", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fee9bd9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqd8v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_89882622_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_99265572305"}], "description": "r10k is one of the most common mechanisms for managing Puppet modules and Puppet environments on Puppet servers, but using r10k requires installing the r10k gem via {{/opt/puppetlabs/puppet/bin/gem install --no-document r10k}}, because it is not included in the puppetserver packaging.\n\nWe run Puppet on air-gapped hosts that are not connected to the Internet, and thus {{/opt/puppetlabs/puppet/bin/gem install --no-document r10k}} is not an option for us. In order to install r10k, we have to manually download the r10k gem _and_ every dependent Ruby gem from rubygems.org, burn them onto CD/DVD media, carry them across the air-gap, and then install them on our air-gapped Puppet server. This is a tedious, error-prone process.\n\nPlease consider simply bundling the r10k gem in the open source puppetserver package. This would greatly the reduce the burden on sites that cannot simply {{gem install}} the r10k gem, and given how overwhelmingly common r10k, it simply makes sense to ensure it works out-of-the-box.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16884", "fixedVersions": [], "id": "16884", "issueType": "Improvement", "key": "SERVER-2349", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "62438a418678e9007059bcca", "resolution": "Declined", "resolutionDate": "2021-12-01T09:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver package should include r10k gem", "timeSpent": "PT0S", "updated": "2021-12-01T09:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Heads up, [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]. This is the follow on to the tk-scheduler update that I've been reviewing.", "created": "2018-10-09T15:26:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We updated this in clj-parent, and all of the projects are at or near the newest version now.", "created": "2019-09-27T16:58:00.000000"}], "components": [], "created": "2018-10-08T11:51:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a27e122"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqd8n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_30604028762_*|*_5_*:*_1_*:*_0"}], "description": "tk-scheduler 1.0.0 is coming out soon and will substantially change the internals of the service. The interface will largely remain the same but we will require changes in at least puppetserver and file-sync tests where we mock out the service. Its also a change that we want to have a large amount of soak time in internal builds so getting it in as soon as possible is ideal.\n\nThis ticket should entail upgrading puppetserver, file-sync, pe-puppet-server-extentions and pe-puppetserver to use the version of clj-parent that includes tk-scheduler 1.0. As part of upgrading it will involve updating test mocks in at least two of those repos. If there are any issues found in integration, acceptance, or performance testing they should be ticketed and worked through with the Direct Change team (who wrote this update).\n\nThis is available in clj-parent 2.3.4 and will block uptake of that and later versions of clj-parent.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16576", "fixedVersions": [], "id": "16576", "issueType": "Task", "key": "SERVER-2348", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2019-09-27T16:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use tk-scheduler 1.0.0", "timeSpent": "PT0S", "updated": "2019-09-27T16:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6a02e3ba-ecc1-4eed-9254-b2931eed22ba", "body": "After uninstalling and reinstalling several times, trying to fix this, it _appears_ as if the certificate is auto-generated. However, I'm not sure if that was just left over from a previous attempt.\n\nIt would be nice if someone who actually knew a bit more about this could go through the installation instructions and fix any errors.", "created": "2018-10-07T20:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yeah those docs are definitely a bit funky on several levels, I'll get that cleaned up. Thanks for pointing this out!\n\nI think the main issue here is that the command for setting up the intermediate CA is *{{puppetserver ca setup}}* (it was briefly called {{generate}} before release, which may have caused the confusion when these were written). Starting Puppet Server will also generate CA files if none yet exist, but with the old self-signed root architecture, which exists only for backwards compatibility and is not recommended for use on new installs. That may have been what you saw.\n\nFor more details on the intermediate CA, see https://puppet.com/docs/puppetserver/6.0/intermediate_ca.html, and for more information on the {{puppetserver ca}} command line tool, see https://puppet.com/docs/puppetserver/6.0/subcommands.html#ca.", "created": "2018-10-08T09:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] do changes like this get picked up automatically each time the docs get built?", "created": "2018-10-08T15:25:00.000000"}, {"author": "557058:6a02e3ba-ecc1-4eed-9254-b2931eed22ba", "body": "Thanks [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] - I'll be waiting with baited breath for the updated docs.\u00a0 \u00a0The only thing that SLIGHTLY concerned me is that how did it know what the correct FQDN was?\u00a0\n\nI am lucky enough that I was able to provide a valid RDNS, so when the machine did a lookup of itself, it was able to get the correct CN, but I'm sure other people won't be as lucky.\u00a0 Is there any chance you can document how to regenerate the puppet master cert with the 'correct' CN on its certificate? That's actually what sent me down this spiral, because it seemed un-intuitive that puppet would just guess what the cert should be.", "created": "2018-10-08T16:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So if you are generating the master cert as part of generating the whole CA (e.g. with the {{setup}} command), it will use the {{certname}} setting from {{puppet.conf}}. The default value for this is the FQDN as detected by Facter. The code in the puppetserver CLI gem that supplies this default is here: https://github.com/puppetlabs/puppetserver-ca-cli/blob/master/lib/puppetserver/ca/config/puppet.rb#L76-L86. This is the same behavior that puppetserver has always used for generating the master cert. So if you want something other than the FQDN detected by Facter, you should configure {{certname}} in the {{master}} section in {{puppet.conf}}.\n\nIf you are trying to regenerate your master cert _without_ regenerating the CA, you should stop puppetserver, and use {{puppetserver ca generate --ca-client --certname <name> --subject-alt-names <SANs>}}. This command will create a certificate with the right auth extensions to contact Puppet Server's CA API, required for using the {{puppetserver ca}} CLI. It requires you to specify both the certname and any subject alt names manually. Depending on why you are regenerating the cert, one good way to do this is to inspect the values from the old master cert (assuming you still have it) and supply those before deleting the old cert. If you are regenerating the cert because they were wrong the first time, it would be a good idea to also configure your desired values in the master section of {{puppet.conf}}. If you have already configured them, and are regenerating because something bad happened to your old master cert (accidental deletion, it got corrupted or compromised), you can use {{puppet config print certname --section master}} and {{puppet config print dns_alt_names --section master}} (the FQDN will always be added to whatever the latter returns) to retrieve the configured values.\n\nDoes this clear things up? Do you have any further questions?\n\nI have a note to update the docs at https://puppet.com/docs/puppet/6.0/ssl_regenerate_certificates.html for Puppet 6 (they still reference the old {{puppet cert}} CLI, as well as several other deprecated workflows). Do you think some of this more detailed info should also get added there, or was this more than you needed? (Note: the old process was \"simpler\" because it was frighteningly magical. In what world should running `puppet cert list` regenerate your whole CA??)", "created": "2018-10-08T16:33:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "It appears that these changes are in the docs [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] - but I'll kick off the build to be sure.", "created": "2018-10-08T17:14:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks, I just noticed a formatting error now that they've been published, I put up https://github.com/puppetlabs/puppetserver/pull/1842 to fix it. It should be fine for that to go out whenever, it's minor.", "created": "2018-10-08T17:26:00.000000"}], "components": [], "created": "2018-10-07T20:34:00.000000", "creator": "557058:3532fc49-9a37-49ef-bddf-417bf6bba5fe", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70adffcf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykl73:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_4293043_*|*_1_*:*_1_*:*_45081889_*|*_10007_*:*_1_*:*_14946937_*|*_5_*:*_1_*:*_1787245967_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3410146"}], "description": "Hello! There seems to be a typo in this doc https://puppet.com/docs/puppetserver/6.0/install_from_packages.html#quick-start - one command says to run {{service puppetserver ca generate}}, when I think it should read puppetserver ca generate.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15711", "fixedVersions": ["SERVER 6.0.2"], "id": "15711", "issueType": "Task", "key": "SERVER-2347", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3532fc49-9a37-49ef-bddf-417bf6bba5fe", "resolution": "Fixed", "resolutionDate": "2018-10-08T15:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "(DOCS) 'service puppetserver ca generate' typo", "timeSpent": "PT0S", "updated": "2018-10-29T07:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-10-03T17:43:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64c96fab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:g"}], "description": "If we are going to start supporting an architecture where users have multiple intermediate signing CAs that all chain back to the same root, we should have some tooling around making the setup easier. The first thing is the ability to create a new CA certificate from a box's root via the {{puppetserver ca}} CLI.\n\nI'm thinking maybe add another option to the {{generate}} action, similar to the {{--ca-client}} flag, that will cause an intermediate CA cert to be created from the box's existing root.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "17411", "fixedVersions": [], "id": "17411", "issueType": "New Feature", "key": "SERVER-2346", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add ability to generate additional intermediate CA certs from a root", "timeSpent": "PT0S", "updated": "2022-03-09T09:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We probably want to save the key pair if the CSR submission is successful. \nDon't know if we want to check to see if the cert was signed by the master before trying to sign it? Or try to sign it and then, if a 409, continue and try to download it?", "created": "2018-10-02T16:37:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is a problem for our default docker images.", "created": "2018-10-02T16:37:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This needs a release of the gem and subsequent bumps in puppetserver.", "created": "2018-10-11T17:06:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Was released in puppetserver-ca gem 1.1.2 and will go out in the 5.5.7, 6.0.3, and the Irving and Johnson builds that use them.", "created": "2018-10-25T11:20:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] is there a meaningful fix version for this?", "created": "2018-10-30T09:43:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I don't think we tagged the commits used to bump the gem with this ticket, but I added the fix version anyway.", "created": "2018-10-30T09:49:00.000000"}], "components": [], "created": "2018-10-02T16:34:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14b1d683"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1tz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_521480303_*|*_1_*:*_1_*:*_559693_*|*_10007_*:*_1_*:*_275842140_*|*_5_*:*_1_*:*_1709028778_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_413963740_*|*_10005_*:*_1_*:*_89017713"}], "description": "The {{puppetserver ca generate}} action attempts to submit a CSR, sign a corresponding cert, download it the signed cert, and after downloading the signed cert write out the relevant files to disk. When autosign on the master is true the second call, the one that signs the cert will fail (the server will have already signed the cert and remove the CSR). Consequently there will be a signed cert on the CA but it will not be downloaded, the command will fail, and the keypair will not have been saved.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "15469", "fixedVersions": ["SERVER 5.3.6", "SERVER 6.0.2"], "id": "15469", "issueType": "Improvement", "key": "SERVER-2345", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-10-17T17:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver-ca generate does not work when autosign is true", "timeSpent": "PT0S", "updated": "2018-11-06T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Code's been merged, assigning back to myself to release the library into clj-parent and on into puppetserver.", "created": "2018-10-03T09:54:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], don't forget to update PE as well!", "created": "2018-10-04T17:05:00.000000"}], "components": [], "created": "2018-10-02T11:16:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@41ca1bc6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzq93r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_504067921_*|*_1_*:*_1_*:*_19253_*|*_10007_*:*_1_*:*_13724661_*|*_3_*:*_1_*:*_5746804_*|*_5_*:*_1_*:*_1377360057_*|*_6_*:*_1_*:*_0"}], "description": "We have middleware that catches otherwise uncaught exceptions and returns a 500 with the Exception message or kind. We do not want to return a stacktrace over the wire, however we should log the stacktrace locally at an error level. We currently only log the Exception message which is not helpful. See: https://github.com/puppetlabs/ring-middleware/blob/master/src/puppetlabs/ring_middleware/core.clj#L205", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15710", "fixedVersions": ["SERVER 5.3.6", "SERVER 6.0.2"], "id": "15710", "issueType": "Improvement", "key": "SERVER-2344", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-10-08T12:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Log stack traces for uncaught exceptions in ring-middleware", "timeSpent": "PT0S", "updated": "2018-10-24T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-10-02T10:27:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the `certificate_status` endpoint returns the cert's serial along with its other info"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e86d7b7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2342"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:d"}], "description": "Currently the info returned by the {{certificate_status}} endpoint does not contain the cert's serial number. This blocks being able to do anything to a cert by serial number instead of cert name, like revoking.\n\nThe main use case that I know of for this is correctly revoking certs when {{allow-duplicate-certs}} is turned on, particularly in combination with a fix to make duplicate revocations illegal, see [ticket to be filed]. We should look into what our support for duplicate certs actually is (or should be, it seems a little broken right now), and make sure that however we implement this behaves correctly in that context.", "epicLinkSummary": "CA API Improvements", "estimate": "PT0S", "externalId": "15468", "fixedVersions": [], "id": "15468", "issueType": "New Feature", "key": "SERVER-2343", "labels": [], "originalEstimate": "PT0S", "parent": "15164", "parentSummary": "CA API Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The certificate_status endpoint should return the cert's serial number", "timeSpent": "PT0S", "updated": "2022-03-09T09:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-10-02T10:27:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@711d4ffb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "CA API Improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzq91j:"}], "description": "A group of improvements to be made to Puppet Server's CA API. These mostly concern extending support for serial numbers.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15164", "fixedVersions": ["SERVER 6.y"], "id": "15164", "issueType": "Epic", "key": "SERVER-2342", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA API Improvements", "timeSpent": "PT0S", "updated": "2022-03-08T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "6243affffd5e450070435046", "body": "{{Meanwhile, work around, since this issue is apparenlty rare, and solutions rarer. Renew the cert on the server. On the _node_ do:}}\n\n{{rm\u00a0/var/lib/puppet/ssl/certs/ca.pem}}", "created": "2018-11-13T08:01:00.000000"}], "components": [], "created": "2018-10-02T10:02:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b029a95"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Improve Certificate Regen Workflow"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzq90f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Nov/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_90640427286_*|*_6_*:*_1_*:*_0_*|*_10012_*:*_1_*:*_17628943576"}], "description": "This is an epic containing work necessary to improve the workflow for regenerating CA certificates, host certificates, and CRLs.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15939", "fixedVersions": [], "id": "15939", "issueType": "Epic", "key": "SERVER-2341", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2022-03-08T11:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve Certificate Regen Workflow", "timeSpent": "PT0S", "updated": "2022-03-08T11:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So it turns out this command is actually pretty much working as expected. We don't get an SSL verification error after revoking the master cert because we are reusing the connection used to revoke to then make the delete request. While this is a little bit odd, we think the trade off is worth it for being able to reuse the connection when cleaning multiple certs at once. Furthermore, the server is correctly reporting that it cleans up the _CA's_ record of the named certificate. In the case of the master cert, a user would still need to delete that agent-side artifacts (things outside of the {{ssl/ca}} dir), either manually, or with the {{puppet ssl clean}} command from PUP-9156, in addition to running {{puppetserver ca clean}}.", "created": "2018-10-02T11:37:00.000000"}], "components": [], "created": "2018-09-28T11:48:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a87b818"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1tr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20999_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_344949226"}], "description": "It should not be possible to use `puppetserver ca clean` on the master's host cert, because the first step of this command revokes the cert, then the second attempts to make a second request, which should then fail SSL validation. We are not getting that failure, instead the command is exiting 0, even though it does not successfully get any files to be cleaned up. We should find out why we're not getting a verification error. Short of that, we should potentially check to make sure the files are actually deleted from disk and exit accordingly.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "16575", "fixedVersions": [], "id": "16575", "issueType": "Bug", "key": "SERVER-2340", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Cannot Reproduce", "resolutionDate": "2018-10-02T11:37:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "`puppetserver ca clean` fails to clean up master cert files but exits 0", "timeSpent": "PT0S", "updated": "2018-10-02T11:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:f93dabe2-c430-43db-affe-674f18d664f9", "body": "I could reproduce this issue on brand new set-up.\n\n\n{noformat}\nroot@puppet:~# puppetserver ca list\nTraceback (most recent call last):\n\t9: from /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'\n\t8: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/cli.rb:89:in `run'\n\t7: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:60:in `run'\n\t6: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:117:in `get_all_certs'\n\t5: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:117:in `new'\n\t4: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/certificate_authority.rb:16:in `initialize'\n\t3: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/certificate_authority.rb:16:in `new'\n\t2: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/utils/http_client.rb:19:in `initialize'\n\t1: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/utils/http_client.rb:108:in `make_store'\n/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/utils/http_client.rb:108:in `add_file': system lib (OpenSSL::X509::StoreError)\nroot@puppet:~# puppetserver ca list --all\nTraceback (most recent call last):\n\t9: from /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'\n\t8: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/cli.rb:89:in `run'\n\t7: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:60:in `run'\n\t6: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:117:in `get_all_certs'\n\t5: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/action/list.rb:117:in `new'\n\t4: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/certificate_authority.rb:16:in `initialize'\n\t3: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/certificate_authority.rb:16:in `new'\n\t2: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/utils/http_client.rb:19:in `initialize'\n\t1: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/utils/http_client.rb:108:in `make_store'\n/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.1.1/lib/puppetserver/ca/utils/http_client.rb:108:in `add_file': system lib (OpenSSL::X509::StoreError)\nroot@puppet:~# puppetserver --version\npuppetserver version: 6.0.1\nroot@puppet:~# puppet --version\n6.0.2\n{noformat}\n", "created": "2018-10-13T17:36:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Okay, so I think there's two issues here. One, we require you to run {{puppetserver ca setup}} if you want to take advantage of the new intermediate CA functionality. That wasn't well documented at the time of launch, though hopefully it now is. If not we should work on that in this ticket.\n\nThe second issue, the ugly exceptions when there's a connection problem, I think, are more clearly called out in SERVER-2317, and should be fixed in Server 6.1.0 or the puppetserver-ca gem 1.1.4 both coming out in the next couple of weeks.", "created": "2018-12-10T16:46:00.000000"}], "components": [], "created": "2018-09-26T19:30:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@dd6a5bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzq573:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_31613194428_*|*_5_*:*_1_*:*_0"}], "description": "Install puppetserver, but don't start it, then run:\n\n{noformat}\nroot@av9vudb50vvp25c:~# /opt/puppetlabs/bin/puppetserver ca list --all\nTraceback (most recent call last):\n\t9: from /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'\n\t8: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/cli.rb:89:in `run'\n\t7: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/action/list.rb:60:in `run'\n\t6: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/action/list.rb:113:in `get_all_certs'\n\t5: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/action/list.rb:113:in `new'\n\t4: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/certificate_authority.rb:16:in `initialize'\n\t3: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/certificate_authority.rb:16:in `new'\n\t2: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/utils/http_client.rb:19:in `initialize'\n\t1: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/utils/http_client.rb:108:in `make_store'\n/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/utils/http_client.rb:108:in `add_file': system lib (OpenSSL::X509::StoreError)\n{noformat}\n\nPresumably it's trying to add the trusted ca bundle, but there isn't one yet.\n\nIf you run {{puppetserver ca setup}} but don't start the server, then there's another ugly exception, because the server isn't running:\n\n{noformat}\nroot@av9vudb50vvp25c:~# /opt/puppetlabs/bin/puppetserver ca list --all\nTraceback (most recent call last):\n\t14: from /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'\n\t13: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/cli.rb:89:in `run'\n\t12: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/action/list.rb:60:in `run'\n\t11: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/action/list.rb:113:in `get_all_certs'\n\t10: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/certificate_authority.rb:215:in `get_certificate_statuses'\n\t 9: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/certificate_authority.rb:253:in `get'\n\t 8: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/utils/http_client.rb:41:in `with_connection'\n\t 7: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:609:in `start'\n\t 6: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:909:in `start'\n\t 5: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:920:in `do_start'\n\t 4: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:935:in `connect'\n\t 3: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/timeout.rb:103:in `timeout'\n\t 2: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/timeout.rb:93:in `block in timeout'\n\t 1: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:936:in `block in connect'\n/opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:939:in `rescue in block in connect': Failed to open TCP connection to av9vudb50vvp25c.delivery.puppetlabs.net:8140 (Connection refused - connect(2) for \"av9vudb50vvp25c.delivery.puppetlabs.net\" port 8140) (Errno::ECONNREFUSED)\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17410", "fixedVersions": [], "id": "17410", "issueType": "Bug", "key": "SERVER-2337", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2019-09-27T16:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver ca list throws an exception if run after install", "timeSpent": "PT0S", "updated": "2019-09-27T16:56:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] I think this is related to the format negotiation exception you noticed.", "created": "2018-09-26T17:10:00.000000"}, {"author": "557058:2deef474-47df-419f-8123-bbd42806cf68", "body": "I have tested customer case, just want to share here for understanding. Looks like the upgrade (2019.0.0)\u00a0 is not installing new gems are introduced\u00a0{{puppetserver gem}}\n\nPlease find below reproduce steps on my test machine\n\n[root@pe-201814-master puppet-enterprise-2019.0.0-el-7-x86_64]# /opt/puppetlabs/server/bin/puppetserver gem install multi_json\n Fetching: multi_json-1.13.1.gem (100%)\n Successfully installed multi_json-1.13.1\n 1 gem installed\n [root@pe-201814-master puppet-enterprise-2019.0.0-el-7-x86_64]#\n\n2018.1.4 version output (before upgrade)\n\n[root@pe-201814-master ~]# /opt/puppetlabs/server/bin/puppetserver gem list\n * \n ** \n *** LOCAL GEMS ***\n\ndid_you_mean (default: 1.0.1)\n fast_gettext (1.1.1)\n gettext (3.2.2)\n hiera-eyaml (2.1.0)\n highline (1.6.21)\n hocon (1.1.3)\n jar-dependencies (default: 0.3.12)\n jruby-openssl (0.9.21 java)\n jruby-readline (1.2.2 java)\n json (1.8.3 java)\n locale (2.1.2)\n minitest (default: 5.4.1)\n net-telnet (default: 0.1.1)\n power_assert (default: 0.2.3)\n psych (2.2.4 java)\n rake (default: 10.4.2)\n rdoc (default: 4.2.0)\n semantic_puppet (0.1.3)\n test-unit (default: 3.1.1)\n text (1.3.1)\n trollop (2.1.3)\n [root@pe-201814-master ~]#\n\n*2019.0.0*\u00a0I installed the fresh machine\n\n[root@pe-201910-master bin]# /opt/puppetlabs/server/bin/puppetserver gem list\n * \n ** \n *** LOCAL GEMS ***\n\ndeep_merge (1.0.1)\n did_you_mean (default: 1.0.1)\n facter (2.5.1)\n fast_gettext (1.1.2)\n gettext (3.2.2)\n hiera-eyaml (2.1.0)\n highline (1.6.21)\n hocon (1.2.5)\n jar-dependencies (default: 0.3.12)\n jruby-openssl (0.9.21 java)\n jruby-readline (1.2.2 java)\n json (1.8.3 java)\n locale (2.1.2)\n minitest (default: 5.4.1)\n multi_json (1.13.1)\n net-telnet (default: 0.1.1)\n power_assert (default: 0.2.3)\n psych (2.2.4 java)\n puppet-resource_api (1.6.0)\n puppetserver-ca (1.1.1)\n rake (default: 10.4.2)\n rdoc (default: 4.2.0)\n semantic_puppet (1.0.2)\n test-unit (default: 3.1.1)\n text (1.3.1)\n trollop (2.9.9, 2.1.2)\n [root@pe-201910-master bin]#\n\nI believe the upgrade is not updating the gems.\n\nAfter upgrade 2019.0.0 from 2018.1.4 I have seen the gems are not updated.\n\n[root@pe-201814-master puppet-enterprise-2019.0.0-el-7-x86_64]# /opt/puppetlabs/puppet/bin/gem list\n * \n ** \n *** LOCAL GEMS ***\n\nbigdecimal (default: 1.3.4)\n cmath (default: 1.0.0)\n colored (1.2)\n cri (2.15.1)\n csv (default: 1.0.0)\n date (default: 1.0.0)\n deep_merge (1.0.1)\n did_you_mean (1.2.0)\n etc (default: 1.0.0)\n ethon (0.9.0)\n facter (3.12.0, 2.5.1)\n faraday (0.9.1)\n faraday_middleware (0.9.1)\n faraday_middleware-multi_json (0.0.6)\n fast_gettext (1.1.2)\n fcntl (default: 1.0.0)\n ffi (1.9.10)\n fiddle (default: 1.0.0)\n fileutils (default: 1.0.2)\n gettext (3.2.2)\n gettext-setup (0.28)\n hiera (3.4.5)\n hiera-eyaml (2.1.0)\n highline (1.6.21)\n hocon (1.2.5)\n httpclient (2.8.3)\n io-console (default: 0.4.6)\n ipaddr (default: 1.2.0)\n json (default: 2.1.0)\n locale (2.1.2)\n log4r (1.1.10)\n minitar (0.6.1)\n minitest (5.10.3)\n multi_json (1.13.1, 1.11.0)\n multipart-post (2.0.0)\n net-ssh (4.2.0)\n net-telnet (0.1.1)\n openssl (default: 2.1.0)\n pe_backup_tools (1.0.2.9.ge843f43)\n power_assert (1.1.1)\n psych (default: 3.0.2)\n puppet (6.0.2)\n puppet-resource_api (1.6.0)\n puppet_forge (2.2.8)\n puppetserver-ca (1.1.1)\n r10k (3.0.2)\n rake (12.3.0)\n rdoc (default: 6.0.1)\n rugged (0.25.1.1)\n scanf (default: 1.0.0)\n sdbm (default: 1.0.0)\n semantic_puppet (1.0.2, 1.0.1)\n stringio (default: 0.0.1)\n strscan (default: 1.0.0)\n test-unit (3.2.7)\n text (1.3.1)\n trollop (2.1.2)\n typhoeus (1.0.2)\n webrick (default: 1.4.2)\n xmlrpc (0.3.0)\n zlib (default: 1.0.0)\n [root@pe-201814-master puppet-enterprise-2019.0.0-el-7-x86_64]# /opt/puppetlabs/server/bin/puppetserver gem list\n * \n ** \n *** LOCAL GEMS ***\n\ndid_you_mean (default: 1.0.1)\n fast_gettext (1.1.2)\n gettext (3.2.2)\n hiera-eyaml (2.1.0)\n highline (1.6.21)\n hocon (1.2.5)\n jar-dependencies (default: 0.3.12)\n jruby-openssl (0.9.21 java)\n jruby-readline (1.2.2 java)\n json (1.8.3 java)\n locale (2.1.2)\n minitest (default: 5.4.1)\n net-telnet (default: 0.1.1)\n power_assert (default: 0.2.3)\n psych (2.2.4 java)\n rake (default: 10.4.2)\n rdoc (default: 4.2.0)\n semantic_puppet (1.0.2)\n test-unit (default: 3.1.1)\n text (1.3.1)\n trollop (2.9.9)\n [root@pe-201814-master puppet-enterprise-2019.0.0-el-7-x86_64]# puppet --version\n 2018-10-09 20:29:04.486015 WARN puppetlabs.facter - locale environment variables were bad", "created": "2018-10-09T21:38:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I think we discovered this issue is specific to PE because the shared gem directory containing {{multi_json}} and others, wasn't included in puppetserver's gem path. It was fixed in https://github.com/puppetlabs/pe-puppet-server-extensions/commit/c27f9a9432c853b121d2e61884f89a9b434a1e6f, which should land in the next 2019.0.x release. /cc [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]", "created": "2018-10-09T23:13:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yeah that sounds right.", "created": "2018-10-10T09:04:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ahh, yes. I looked over the customer's issue and, while we shipped that configuration update in 2019.0.0, we don't manage the setting via Puppet itself. Consequently during an upgrade the configuration file was not updated if the user has customized any other parts of the file.\n\nSo new installs should be fine but upgrades will most likely not get the new gempath. Our own upgrade testing probably didn't catch it because the default values that we manage in server's configuration files matches the defaults we ship with.\n\nThis will probably affect most users upgrading PE to 2019.0.0. The work around is to manage the setting to be the correct value if not manually. (I assume we'll need to bring this under managed asap). In Puppet code it would look something like:\n{code}\nhocon_setting { \"correct gempath\":\n  ensure  => present,\n  path    => '/etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf',\n  setting => 'jruby-puppet.gem-path',\n  value   => [\n    '${jruby-puppet.gem-home}',\n    '/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems',\n    '/opt/puppetlabs/puppet/lib/ruby/vendor_gems'],\n}\n{code}\n\nI'll file a PE ticket for the issue.", "created": "2018-10-10T09:05:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Unfortunately, using the hocon_setting or pe_hocon_setting resources won't work due to the HOCON substitution, \"${jruby-puppet.gem-home}\":\n\n{noformat}\n# puppet apply <<EOF\npe_hocon_setting { \"correct gempath\":\n  ensure  => present,\n  path    => '/etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf',\n  setting => 'jruby-puppet.gem-path',\n  value   => [\n    '${jruby-puppet.gem-home}',\n    '/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems',\n    '/opt/puppetlabs/puppet/lib/ruby/vendor_gems'],\n}\nEOF\n\nNotice: Compiled catalog for pe-201814-master.puppetdebug.vlan in environment production in 0.18 seconds\nError: /Stage[main]/Main/Pe_hocon_setting[correct gempath]: Could not evaluate: need to Config#resolve, see the API docs for Config#resolve", "created": "2018-10-11T16:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing this in favor of the PE ticket. Planning to look into what's going on with the pe-hocon types, seems like they may be buggy.", "created": "2018-10-11T17:15:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm able to get the hocon substitution to work fine for me. Going to move forward with adding this to the PE installer and see if it behaves correctly.", "created": "2018-10-19T09:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:7e524d50-cfa9-44c1-9d72-f30ab841ddf9], you set the zendesk ticket count to 1. I'm curious how that's possible as we thought this was only an issue when running the server from source (given the fix last year in PE). Do we have customers that run from source now or are still on affected versions?", "created": "2019-10-28T12:38:00.000000"}, {"author": "557058:7e524d50-cfa9-44c1-9d72-f30ab841ddf9", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] the zendesk plugin uses my account currently to make those updates, someone must have connected this ticket in Jira to a zendesk ticket, and then removed it, since there is no connected\u00a0 zendesk ticket anymore.\u00a0", "created": "2019-10-28T15:55:00.000000"}], "components": [], "created": "2018-09-26T17:08:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5409d32a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1u7:"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "32322,32432"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_87623409_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2407048_*|*_10005_*:*_1_*:*_1206423538"}], "description": "If the {{multi_json}} gem is missing or loading fails, such as when running puppetserver from source, puppetserver will fall back to using the java based [{{json}} gem|https://github.com/flori/json/tree/master/java/src/json/ext]. When the agent makes file metadata search requests, the server will fail to serialize the array of FileMetadata objects as JSON:\n\n{noformat}\n2018-09-26 15:13:23,401 ERROR [qtp2057041754-28] [puppetserver] Puppet Could not render_multiple to Puppet::Network::Format[json]: undefined method `delete' for #<JSON::Ext::Generator::State:0x2a1c8b21>\n/Users/josh/work/puppet/lib/puppet/util/json.rb:67:in `dump'\n/Users/josh/work/puppet/lib/puppet/network/format_support.rb:105:in `to_json'\njson/ext/GeneratorMethods.java:80:in `to_json'\n/Users/josh/work/puppet/lib/puppet/util/json.rb:68:in `dump'\n/Users/josh/work/puppet/lib/puppet/network/formats.rb:130:in `render_multiple'\n/Users/josh/work/puppet/lib/puppet/network/format_support.rb:26:in `render_multiple'\n/Users/josh/work/puppet/lib/puppet/network/http/api/indirected_routes.rb:168:in `block in do_search'\n/Users/josh/work/puppet/lib/puppet/network/http/api/indirected_routes.rb:199:in `block in first_response_formatter_for'\norg/jruby/RubyEnumerable.java:643:in `find'\n/Users/josh/work/puppet/lib/puppet/network/http/api/indirected_routes.rb:197:in `first_response_formatter_for'\n/Users/josh/work/puppet/lib/puppet/network/http/api/indirected_routes.rb:167:in `do_search'\n{noformat}\n\nAnd then the server will fallback to PSON.\n\nFor reasons I don't understand, the call to {{Array#to_json}} calls into {{GeneratorMethods.java:80}} and that *somehow* calls back into {{FormatSupport#to_json:105}} passing in {{JSON::Ext::Generator::State}} as the {{options}}, instead of a {{Hash}}.\n\nThis issue doesn't occur when installing puppetserver from packages, since it uses the {{multi_json}} gem from the puppet-agent package.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15938", "fixedVersions": [], "id": "15938", "issueType": "Bug", "key": "SERVER-2336", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Duplicate", "resolutionDate": "2018-10-11T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet::Util::Json.dump of an array fails when multi-json is missing", "timeSpent": "PT0S", "updated": "2021-09-03T10:28:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2018-09-26T09:28:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34c4169f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1xb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15611_*|*_10007_*:*_1_*:*_1181679480_*|*_3_*:*_2_*:*_1112748201_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_2381979746_*|*_10005_*:*_1_*:*_38159"}], "description": "Currently the {{LocalCertificateAuthority}} class of the puppetserver-ca gem is an awkward hybrid of a class and a collection of functions. Although it's supposed to represent a CA capable of creating certs offline, it doesn't load or store any CA state. This made sense when we were mostly using it to generate CA files, but with the new use case of loading existing CA files and using them to do further CA tasks, it's more awkward. We should refactor the class to store CA certs and keys for use between its methods.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "16574", "fixedVersions": [], "id": "16574", "issueType": "Improvement", "key": "SERVER-2335", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-11-19T11:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Refactor LocalCertificateAuthority of puppetserver-ca to load its own CA state", "timeSpent": "PT0S", "updated": "2018-11-19T11:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-09-25T20:06:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the {{generate --ca-client}} command makes sure the server isn't running before generating certs"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52645d8c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1uv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_18964275_*|*_1_*:*_1_*:*_16200_*|*_10007_*:*_1_*:*_85393793_*|*_3_*:*_1_*:*_767631541_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1105237125"}], "description": "We recently added a flag to the {{generate}} command that allows a user to generate a CA client cert offline. We should update this flag to check that the server is not running before generating the certs, to ensure that we can't accidentally wind up with a race condition where the server signs a cert at the same time we do, and a serial number gets lost.\n\nIt might be that this work will also enable us to fail more gracefully in general when the server isn't running. We should look for a general-purpose way of improving both these cases.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "15163", "fixedVersions": [], "id": "15163", "issueType": "Improvement", "key": "SERVER-2334", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-10-18T17:20:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make CA CLI check that server is offline before generating offline certs", "timeSpent": "PT0S", "updated": "2018-10-25T10:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't know who would do this work or if this is even advisable taking into account DOCs roadmap. Hopefully [~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] can weigh in on whether this should be done, and if so, who should do it.", "created": "2018-09-25T12:18:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "I do think this is a very important. I'll work with my team to find a writer to take it on. It's going to have to be after Tuesday though, when the z release goes out.\u00a0\u00a0", "created": "2018-09-25T17:27:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "[~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1]\u00a0- this is the bigger picture issue that I mentioned. Can you work with Justin, and I can help you on the docs side with how things work with generated content (if it comes up) and generally working with server docs.", "created": "2018-10-01T12:05:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] and [~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1], we were reviewing some of the docs today that the community was finding during the excitement around Puppetize live and were wondering if we could, pull the pages of the \"SSL and Certificates\" section in the left hand nav under ownership of the puppetserver repo.\n\nMost of the information there is still technically correct but lists things that are possible but not necessarily recommended alongside, without differentiation, things that are strongly encouraged. We'd love to have the ability to sit down and re-align those docs with the current best practices going forward. We also want a landing page that ties together the disparate docs for CA workflows, currently to understand how the CA works you need to jump between the HTTP API, the SSL and Certificates' pages, and several Puppet Server specific pages.", "created": "2018-10-09T12:08:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] - As mentioned, I would love to improve the docs as you describe, whether we do that where they are now, or move them to the puppetserver repo. Let's have a quick chat about this. I'll set up some time for the three of us.\u00a0", "created": "2018-10-09T17:56:00.000000"}, {"author": "557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1", "body": "[~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] - as we discussed, if you could help with the following:\n * Move the CA v1 API\u00a0endpoint docs to the server repo ([https://puppet.com/docs/puppet/5.5/http_api/http_certificate.html]), but have them remain in the HTTP API\u00a0nav as links. And for these to also be linked from the Server docs index/nav.\u00a0\n * Have the metrics, status, admin, and server-only API endpoints docs (all located in the Puppet Server docs ([https://puppet.com/docs/puppetserver/6.0/index.html]) to\u00a0also be linked in the HTTP API section nav as well.\n\nThanks!", "created": "2018-10-15T09:47:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] - the\u00a0CA v1 API\u00a0endpoint docs are autogenerated from Puppet code. So, diverting the pages to the server repo would take some work and might not really be appropriate.\u00a0\n\nDo you want to add them to the Server docs TOC? That I can do in a fairly straightforward way. But moving the content will be tricky.\n\n\u00a0\n\n\u00a0\n\n\u00a0", "created": "2018-10-17T16:24:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think linking to these both from the Puppet Server TOC, in the APIs section, and from our new section \"Certificate Authority and SSL\", might be good. I am a little curious how that autogeneration is still working in Puppet 6, since all of the code lives in Clojure now... do you know what mechanism is generating those?", "created": "2018-11-02T09:19:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Looks like those pages are actually created manually, sourced from pages like https://github.com/puppetlabs/puppet/blob/master/api/docs/http_certificate.md in the puppet repo. So I think they can be pretty easily moved into Puppet Server, and should be since none of that code lives in Puppet anymore. I'll look into doing that.\n\nThat should involve deleting them from Puppet, adding them to Puppetserver repo, and maybe editing something here: https://github.com/puppetlabs/puppet-docs/blob/master/lib/puppet_references/puppet/http.rb, according to Garrett (maybe deleting that file?).", "created": "2018-11-02T10:57:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "This page appears to be one of the pages that we pull into the docs:\u00a0[https://github.com/puppetlabs/puppet/blob/master/api/docs/http_certificate.md]\u00a0(not one of the sources, but the source) About 30 generated reference pages get pulled into the puppet-docs repo via rake command (that we run) and then we manually copy them where they go in the docs hierarchy. So if you are moving the handful of pages that are now managed by Puppet Server, which makes sense to do:\n * Like you said, remove the Puppet versions, so we don't run the risk of accidentally pulling them into the docs.\n * Make sure we know when there are changes, so we update the published docs. An option is that we could try to generate this page out of puppet server, I just don't know the ins and outs of setting that up.\n\nI'll make a PR to add them to the Puppet Strings documents area.\n\n\u00a0", "created": "2018-11-06T14:59:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "The four pages in the HTTP CA pages are now in the Puppet Server git repo. Documentation area.\u00a0", "created": "2018-11-14T18:05:00.000000"}], "components": [], "created": "2018-09-25T12:16:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c6418ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "DOCUMENT-925"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2gf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_84001_*|*_3_*:*_1_*:*_1928898337_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1712756441_*|*_10006_*:*_1_*:*_702771414"}], "description": "I don't see the {{puppet-ca}} endpoint documented in {{puppetserver/documentation/}} where Puppet Server specific documentation lives, though I see a bunch of CA specific improvements and caveats that are not probably on the main path users go through our documentation. Now that we've consolidated our CA implementations into the one that lives within Puppet Server should we move the puppet-ca endpoint docs into the Puppet Server repo and work its caveats and features into the main docs?", "epicLinkSummary": "Overhaul Puppet Server CA docs", "estimate": "PT0S", "externalId": "16573", "fixedVersions": [], "id": "16573", "issueType": "Task", "key": "SERVER-2333", "labels": [], "originalEstimate": "PT0S", "parent": "54654", "parentSummary": "Overhaul Puppet Server CA docs", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-11-14T18:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Take on puppet-ca endpoint docs", "timeSpent": "PT0S", "updated": "2018-11-14T18:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We are no longer translating officially, so adding more tooling now seems low priority.", "created": "2019-05-21T11:01:00.000000"}], "components": [], "created": "2018-09-24T11:15:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f887624"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzq1z3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25996_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_20648745252"}], "description": "We should look into adding i18n tooling and translation to the puppetserver-ca gem. Because it runs in its own process, we probably won't have to worry about weird interactions with Puppet, so it may be appropriate to just use the gettext-setup gem. We should see what our other standalone Ruby libraries are doing these days. We might be able to reuse some of their tooling and automation.\n\nThen we should talk to the i18n folks about getting it hooked up to Transifex and in the translation rotation.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "16571", "fixedVersions": [], "id": "16571", "issueType": "Task", "key": "SERVER-2332", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2019-05-21T11:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add i18n to the CA CLI gem", "timeSpent": "PT0S", "updated": "2019-05-21T11:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Linking SERVER-2321 because if we ship ca.conf in OSP for settings like subject-alt-names, that error message should be updated.", "created": "2018-09-21T17:57:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please provide release notes for this issue if needed, thanks!", "created": "2018-09-27T08:40:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "release note added.", "created": "2018-10-01T22:23:00.000000"}], "components": [], "created": "2018-09-21T17:29:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* puppetserver FOSS installs have a default ca.conf"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@31def6d8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzq16f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server will now create a default `ca.conf` file when installed, both in FOSS and PE. CA settings (e.g. `allow-subject-alt-names`) should be configured in the `certificate-authority` section of this file."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_242369946_*|*_1_*:*_1_*:*_59769_*|*_10007_*:*_1_*:*_8749659_*|*_3_*:*_1_*:*_237091676_*|*_5_*:*_1_*:*_448651778_*|*_6_*:*_1_*:*_0"}], "description": "Puppet 6 added several settings to the {{certificate-authority}} section of Puppet Server's config. Previously in FOSS we were not creating a {{ca.conf}} file, even though the documentation referenced one. We should add one to be shipped in FOSS (one is already created when installing PE) that has the important settings commented out with their defaults.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17170", "fixedVersions": ["SERVER 5.3.6", "SERVER 6.0.1"], "id": "17170", "issueType": "Task", "key": "SERVER-2327", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-27T09:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Start shipping a ca.conf file in FOSS", "timeSpent": "PT0S", "updated": "2018-10-22T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think this may actually be a very simple bug, where we are updating the {{ps-version}} to the tag in pe-pse, but never committing the change. So when we kick the pe-pse pipeline, it just pulls in whatever version of Puppet Server it was using before (pretty much always a voom build), instead of the new tag.", "created": "2018-10-08T11:39:00.000000"}], "components": [], "created": "2018-09-20T17:04:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Server release pipeline promotes the tag into PE instead of a voom build"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ae31c3a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1z3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_269803957_*|*_1_*:*_1_*:*_38098_*|*_10007_*:*_1_*:*_8658847_*|*_3_*:*_1_*:*_748003_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_353836817_*|*_10005_*:*_1_*:*_1181586724"}], "description": "Currently the release pipeline will correctly tag and build the tagged version, but it then does a voom build of that and promotes that voom ref into PE instead of the tag. We should make it promote the tag instead.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "14828", "fixedVersions": [], "id": "14828", "issueType": "Task", "key": "SERVER-2326", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-10-11T17:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make the release pipeline promote the tag instead of a voom build", "timeSpent": "PT0S", "updated": "2018-10-11T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "created": "2018-09-20T02:47:00.000000", "name": "2018-09-20-104536_1552x779_scrot.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10670"}], "comments": [{"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49] any input on whether we should fix this thing or rip it out?", "created": "2018-10-12T11:36:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "Oh please please please don't rip it out :(", "created": "2018-10-12T11:56:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "I think that's a product prioritization call.\n\nI don't believe the experimental dashboard heavily used, and for customers I've worked with who run at a scale where digging deep into Puppet Server performance becomes necessary we recommend https://github.com/puppetlabs/best-practices/blob/master/puppet-enterprise-metrics-collection.md. That is, gathering and visualizing much more than the experimental dashboard presents.\n\nThe potential product value is in providing _some_ information out-of-the-box.\n\n[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] or [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] might provide more CS context. At the end of the day it's probably an investment call for a Product owner/manager.", "created": "2018-10-12T12:41:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "uhm, but the suggestions in that file are all for PE only, the experimental dashboard is opensource... I'm not aware of any working ad hoc solution to display at least a few metrics from open source puppetserver besides the dashboard. The graphite output is IMO not easy to use and JMX is slow.", "created": "2018-10-12T12:48:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The Puppet Server dashboard was an experimental feature that was never fully finished, and has been slowly bitrotting for a while now. The main barrier I see to investing in it is that the work is expended to re-invent a wheel that has been pretty well nailed by Grafana.\n\n[~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68] Would a module that configures Grafana to display these metrics, such as https://github.com/puppetlabs/puppet_metrics_dashboard , fill the need? Or does having this functionality in-process provide benefits that make a strong case for the re-creation of functionality covered by external tools?", "created": "2018-10-12T12:49:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "IMO the dashboard is of very limited use because it doesn't store any historical data.  When debugging we care about trends and this dashboard doesn't provide a long enough timeline to identify trends.  \n\n[~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68] I highly recommend you try out the best-practice Reid pointed to and let us know if you still think this dashboard needs to exist.  ", "created": "2018-10-12T12:49:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Yup, access to historical metrics is also hugely important. Opening the dashboard and seeing that you are out of free JRubies may explain why Puppet Server is unresponsive, but it's nothing like looking back in time and seeing that catalog compilation times jumped 10x at 8:30 in the morning allowing you to zero in on a code change that had very bad performance.", "created": "2018-10-12T12:59:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68] the document I linked does say Puppet Enterprise in it, but the modules it references, especially puppet_metrics_collector, work just as well with open source Puppet Server and PuppetDB.", "created": "2018-10-12T13:43:00.000000"}, {"author": "5a8ddd3e21870439aa9195e5", "body": "[~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68] is this still on your radar to do or what's the status of it? Thank you.", "created": "2018-10-16T15:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Sounds like we might not need to fix it, and maybe should file a ticket to remove all of this. For now going to at least remove the fix version.", "created": "2018-10-17T11:17:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "quick CC [~accountid:557058:c9b48d3b-3b16-4fba-80cb-daf19743b953] [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1]", "created": "2018-11-14T17:10:00.000000"}, {"author": "557058:c9b48d3b-3b16-4fba-80cb-daf19743b953", "body": "Please file a docs ticket or subtask to remove developer dashboard info from docs if we decide to pull this feature. ", "created": "2018-11-15T08:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We removed this dashboard recently.", "created": "2019-01-17T17:41:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Filed DOC-4223 to remove the docs. CC [~accountid:557058:c9b48d3b-3b16-4fba-80cb-daf19743b953]", "created": "2019-08-19T11:57:00.000000"}], "components": ["Puppet Server"], "created": "2018-09-20T02:52:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b9149aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1vb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24654041_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_7975430085_*|*_10006_*:*_1_*:*_2338453613"}], "description": "Hi,\nmost of the time my dashboard doesn't show any data, only questionmarks. There are agents hitting the server and that is working fine, just no metrics :(. I'm not sure how I should debug this, any help is appreciated. I've got 6 puppetservers running and all show this behaviour. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17169", "fixedVersions": [], "id": "17169", "issueType": "Bug", "key": "SERVER-2324", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "resolution": "Won't Fix", "resolutionDate": "2019-01-17T17:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver 5.3.5 doesn't show data in the experimental dashboard", "timeSpent": "PT0S", "updated": "2019-08-19T11:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-09-19T14:38:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Add auth rules for {{certificate_status}} and {{certificate_statuses}} allowing access to them via a speical auth extension\n* Add said auth extension to master cert generated by the server"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a137e06"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1zz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_146090200_*|*_1_*:*_1_*:*_68295_*|*_10007_*:*_1_*:*_15550153_*|*_3_*:*_1_*:*_1475478_*|*_5_*:*_1_*:*_1735340468_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1113499203"}], "description": "The new CA CLI needs access to the {{certificate_status(es)}} endpoint. In Puppet Server 5, this endpoint is currently blocked under a deny-all rule in tk-auth. In Puppet 6 we made it accessible to a certificate with a special auth extension, then adding this extension to the master cert that is generated by Puppet Server. We should backport these improvements to Puppet Server 5 so that the gem is fully usable out of the box.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15161", "fixedVersions": ["SERVER 5.3.6"], "id": "15161", "issueType": "Improvement", "key": "SERVER-2323", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-10-24T11:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Backport CA CLI auth extension for master cert", "timeSpent": "PT0S", "updated": "2018-10-24T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-09-19T14:30:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server 5 has\n* an {{allow-subject-alt-names}} setting\n* an {{allow-authorization-extensions}} setting"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2aaf5445"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1zr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We have added two settings to Puppet Server's CA configuration: `allow-subject-alt-names` and `allow-autorization-extensions`. These are false by default. When set to true, they allow CSR with subject alt names or special auth extensions to be signed by the puppetserver CA API. These flags are needed to sign such certs via `puppetserver ca sign` command, which replaces `puppet cert` in Puppet 6, because the new command signs certs via the CA API."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_339620269_*|*_1_*:*_1_*:*_12049_*|*_10007_*:*_1_*:*_88560381_*|*_3_*:*_1_*:*_22985885_*|*_5_*:*_1_*:*_1368658099_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1192627947"}], "description": "We are including the puppetserver CA CLI gem in Server 5 builds so people can migrate away from the deprecated {{puppet cert}}. However, the puppetserver cert signing code doesn't currently support signing certs with SANs or auth extensions in Server 5. In Server 6 we introduced two settings, {{allow-subject-alt-names}} and {{allow-authorization-extensions}} to the {{certificate-authority}} section of the server config. We should backport these settings to Server 5 to fully enable signing certs with the new CA CLI. Both should be false by default.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16876", "fixedVersions": ["SERVER 5.3.6"], "id": "16876", "issueType": "Improvement", "key": "SERVER-2322", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-10-24T11:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Backport advanced cert signing settings to Server 5", "timeSpent": "PT0S", "updated": "2018-10-24T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We ship a {{ca.conf}} in FOSS now too, so it's appropriate to just update this file path everywhere.", "created": "2021-02-22T13:03:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm not sure how I feel about returning a link in the error body from an HTTP request... Is that a thing we/people do?", "created": "2021-02-22T13:04:00.000000"}], "components": [], "created": "2018-09-19T12:55:00.000000", "creator": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1fe73b68"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpyyf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Feb/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1354768666_*|*_1_*:*_1_*:*_32241533875_*|*_10007_*:*_1_*:*_38119521_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_44400506332"}], "description": "*Puppet Version: 6.0.0*\n *Puppet Server Version:\u00a02019.0.0.16*\n *OS Name/Version: Centos 7.2*\n\nAs a PE user, I execute \"puppetserver ca generate --certname test.com --subject-alt-names test2.com\" I get an error about signing the certificate (expected), however the error points me to a FOSS configuration file which doesn't exist in PE.\n\n*Desired Behavior:*\n\nThe output should point me to ca.conf, not puppetserver.conf (doesn't exist in PE)\n\nA link to a doc on the allow-subject-alt-names setting would also be nice.\n\n*Actual Behavior:*\n{noformat}Successfully submitted certificate request for test.com\nError:\n When attempting to sign certificate request 'test.com', received\n code: 409\n body: CSR 'test.com' contains subject alternative names (DNS:pe-201813-master.puppetdebug.vlan, DNS:test2.com), which are disallowed. To allow subject alternative names, set allow-subject-alt-names to true in your puppetserver.conf file, restart the puppetserver, and try signing this certificate again.{noformat}", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "16872", "fixedVersions": ["SERVER 6.15.3", "SERVER 7.1.0"], "id": "16872", "issueType": "Bug", "key": "SERVER-2321", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "resolution": "Done", "resolutionDate": "2021-03-10T16:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "output of puppetserver ca generate when using --subject-alt-names", "timeSpent": "PT0S", "updated": "2021-04-09T15:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So do we need this to apply to certs beyond just the master cert? There had been some discussion of the ability to create a \"CA client\" cert. However, this raises some interesting questions, mostly around alt names. The master's host cert is supposed to get some alt names by default. Is this true for every cert we might want to use as a \"CA client\" (the console cert specifically was mentioned)? Are they the same defaults everywhere? If not, it seems we can either:\n1) make this its own subcommand that can accept something like a \"master\" flag that adds the default alt names\n2) require users to always supply alt names explicitly\n[~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] thoughts?", "created": "2018-09-20T15:07:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please provide release notes for this issue if needed, thanks!", "created": "2018-09-27T08:40:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "Release note added.\u00a0", "created": "2018-10-01T22:29:00.000000"}], "components": [], "created": "2018-09-19T12:37:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* {{puppetserver ca}} has a way to generate the master cert standalone, offline"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7242fa11"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1sv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The `puppetserver ca generate` command now has a flag `--ca-client` that will generate a cert offline (not via the CA API) that is authorized to talk to that API. This can be used to regenerate the master's host cert, or create certs for distribution to other CA nodes that need administrative access to the CA (e.g. the ability to sign and revoke certs). This command should only be used while the Puppet Server is offline, to avoid conflicts with cert serials."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_84179687_*|*_1_*:*_1_*:*_21578_*|*_10007_*:*_1_*:*_142910103_*|*_3_*:*_1_*:*_357422103_*|*_5_*:*_1_*:*_448667438_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_94081234"}], "description": "Currently, the CA CLI can only generate the master cert as part of generating the whole CA. It can generate other certificates for other certnames by using the CA API, but this won't work if the master cert isn't present. We should have a special command for just generating the master cert, when the CA is already set up but before the server is running. This might be good as a flag to the {{generate}} action, or as its own action.\n\n---\n\nImplemented as a --ca-client flag: `puppetserver ca generate --certname foo --ca-client`", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "15160", "fixedVersions": ["SERVER 6.0.1"], "id": "15160", "issueType": "New Feature", "key": "SERVER-2320", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-27T09:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add a CA CLI command for generating a master cert offline", "timeSpent": "PT0S", "updated": "2018-10-02T13:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey, [~accountid:62438a418678e9007059bcca], thanks for the ticket and calling out our oversight in the release notes. We released JRuby as default in PE and we missed pulling those caveats over to FOSS when 6 came out.\n\nhttps://puppet.com/docs/pe/2018.1/pe_enhancements.html#jruby-2018-1-0\n\nWe don't call out the Metaspace requirements however in our PE docs because we don't manage that configuration explicitly.\n\nWe'll try to get the FOSS docs updated right away!", "created": "2018-09-19T11:59:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "Thanks for the heads up [~accountid:62438a418678e9007059bcca]\u00a0- I've added more detail in the release note: [https://puppet.com/docs/puppetserver/6.0/release_notes.html]\u00a0and a known issue:\u00a0https://puppet.com/docs/puppetserver/6.0/known_issues.html#server-side-ruby-gems-might-need-to-be-updated-for-upgrading-with-jruby-17", "created": "2018-09-19T15:14:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "Hi [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], [~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1],\n\nThanks for the quick response.\n\nLooking at the release notes, wouldn't it be better if the caveats about JRuby 9k were in the JRuby 9k bullet point, and not the JRuby jar bundling bullet point? And I think a lot of the explanation could just be deferred to the known issues page. E.g.:\n\n* Puppet Server now bundles its {{JRuby jar}} inside the main uberjar. This means the {{JRUBY_JAR}} setting is no longer valid, and a warning will be issued if it is set. (SERVER-2157)\n* Puppet Server 6.0 now uses JRuby 9k, which implements version 2.3 of the Ruby language. Server-side gems that were installed manually with the {{puppetserver gem}} command or using the {{puppetserver_gem}} package provider might need to be updated to work with JRuby 9k. Additionally, if {{ReservedCodeCache}} or\u00a0{{MaxMetaspaceSize}} parameters were set in {{JAVA_ARGS}}, these parameters may need to be adjusted for JRuby 9k. See [Puppet Server: Known Issues|https://puppet.com/docs/puppetserver/6.0/known_issues.html#server-side-ruby-gems-might-need-to-be-updated-for-upgrading-with-jruby-17].  (SERVER-2095)\n\nThoughts?", "created": "2018-09-19T17:14:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "This fix is in - just waiting for a docs build.", "created": "2018-09-20T16:13:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "Added additional info.", "created": "2018-10-01T22:35:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Thanks [~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1], can this be resolved now?", "created": "2018-10-02T13:31:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "yes. thanks [~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578]", "created": "2018-10-02T13:33:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2018-09-19T10:48:00.000000", "creator": "62438a418678e9007059bcca", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@536d1207"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpyvj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When upgrading from Puppet Server 5 using JRuby 1.7 (9k was optional in those releases), Server-side gems (those installed manually with `puppetserver gem` command or using the puppetserver_gem package provider) may need to be updated to work with the newer JRuby. In most cases gems do not have APIs that break when upgrading from the Ruby versions implemented between JRuby 1.7 and JRuby 9k, so there may be no necessary updates, but users should be aware. Two notable exceptions are that the autosign gem should be 0.1.3 or later and yarddoc must be 0.9 or later.\n\nUsers outside of lab environments should increase ReservedCodeCache to 512m under normal load. Those users with 6-12 JRuby instances (or a max-requests-per-instance value significantly less than 100k) should run with a ReservedCodeCache of 1G, 12+ JRuby instances in a single server may require 2G or more.\n\nSimilar caveats regarding scaling ReservedCodeCache may apply if users are managing MaxMetaspace."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_369457306_*|*_1_*:*_1_*:*_764026534_*|*_5_*:*_1_*:*_343851_*|*_6_*:*_1_*:*_0"}], "description": "We have a Puppet server with max-active-instances set to 2, running on a VM with 4GiB of memory and 4 CPUs. We set JAVA_ARGS in /etc/sysconfig/puppserver to:\n\n{noformat}\nJAVA_ARGS=\"-Xms1560m -Xmx1560m -XX:MaxMetaspaceSize=256m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger\"\n{noformat}\n\nThis is a beta Puppet server and always runs the latest puppetserver package available. It serves 37 clients that want to live on the bleeding edge of Puppet.\n\nThis morning, the server automatically upgraded to puppetserver 6.0.0. After it did so, the server refused to start, logging:\n\n{noformat}\nSep 19 12:33:57 server.example.org puppetserver: # java.lang.OutOfMemoryError: Metaspace\n{noformat}\n\nUpping {{MaxMetaspaceSize}} from 256m to 512m resolved this issue, permitting the server to start successfully.\n\nAlmost certainly, this change in resource requirements was due to the move to JRuby 9k. Although the move to JRuby 9k is duly noted in the Puppet Server 6.0.0 release notes, there is no warning whatsoever that Java-related memory tuning parameters may need to be adjusted as a consequence of this change, in either the release notes or the known issues:\n\nhttps://puppet.com/docs/puppetserver/6.0/release_notes.html\nhttps://puppet.com/docs/puppet/6.0/known_issues.html\n\nThe implications of the move to JRuby 9k need to be documented.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15466", "fixedVersions": ["SERVER 6.0.1"], "id": "15466", "issueType": "Bug", "key": "SERVER-2319", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "62438a418678e9007059bcca", "resolution": "Fixed", "resolutionDate": "2018-10-02T13:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 6.0.0 dies with java.lang.OutOfMemoryError: Metaspace", "timeSpent": "PT0S", "updated": "2018-10-02T13:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Recently got another ticket that would require making CA API changes to complete: https://puppet.atlassian.net/browse/PE-27489.", "created": "2019-10-25T17:11:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T12:21:00.000000"}], "components": ["Puppet Server"], "created": "2018-09-19T09:38:00.000000", "creator": "5e3375e183d74c0e821851f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cd8a95f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpyqn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_34673610732_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_74722201971"}], "description": "With the change in\u00a0SERVER-2268, SANs signing is only a global setting. This opens the potential for any client to submit a CSR with SANs that gets signed when\u00a0{{allow-dns-alt-names}} is enabled. This is desirable in some deployments, but not all deployments. In a typical deployment, most of the nodes that require a SAN will be infrastructure nodes so the number of nodes requiring this setting will be low. It would be nice to be able to have {{allow-dns-alt-names}} disabled, but sign a single certificate with SANs with a CLI argument, or API parameter. \n\nIn PE, DNS alt names are suggested for MoMs and Compile Masters: https://puppet.com/docs/pe/2018.1/installing_compile_masters.html#install-compile-masters\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16568", "fixedVersions": [], "id": "16568", "issueType": "New Feature", "key": "SERVER-2318", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e3375e183d74c0e821851f3", "resolution": "Won't Do", "resolutionDate": "2022-03-08T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add CLI flag to sign CSRs with SANs", "timeSpent": "PT0S", "updated": "2022-03-08T12:21:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": ["CLI"], "created": "2018-09-19T09:29:00.000000", "creator": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The \\{{puppetserver ca}} command fails gracefully/prescriptively when the puppetserver service is not running."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6af9d821"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpypz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The `puppetserver ca` command will now error gracefully on connection issues and return helpful debugging information."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_177500725_*|*_1_*:*_1_*:*_7119328895_*|*_10007_*:*_1_*:*_74859406_*|*_5_*:*_1_*:*_486642233_*|*_6_*:*_1_*:*_0"}], "description": "The {{puppetserver ca}} command fails with a traceback when the puppetserver service is not running:\n\n{code}\n[root@pe-20190nightly-master ~]# puppetserver ca list --all\nTraceback (most recent call last):\n\t14: from /opt/puppetlabs/server/apps/puppetserver/cli/apps/ca:5:in `<main>'\n\t13: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/cli.rb:89:in `run'\n\t12: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/action/list.rb:60:in `run'\n\t11: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/action/list.rb:113:in `get_all_certs'\n\t10: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/certificate_authority.rb:215:in `get_certificate_statuses'\n\t 9: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/certificate_authority.rb:253:in `get'\n\t 8: from /opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/puppetserver-ca-1.0.0/lib/puppetserver/ca/utils/http_client.rb:41:in `with_connection'\n\t 7: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:609:in `start'\n\t 6: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:909:in `start'\n\t 5: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:920:in `do_start'\n\t 4: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:935:in `connect'\n\t 3: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/timeout.rb:103:in `timeout'\n\t 2: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/timeout.rb:93:in `block in timeout'\n\t 1: from /opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:936:in `block in connect'\n/opt/puppetlabs/puppet/lib/ruby/2.5.0/net/http.rb:939:in `rescue in block in connect': Failed to open TCP connection to pe-20190nightly-master.puppetdebug.vlan:8140 (Connection refused - connect(2) for \"pe-20190nightly-master.puppetdebug.vlan\" port 8140) (Errno::ECONNREFUSED)\n\n{code}\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15708", "fixedVersions": ["SERVER 6.1.0"], "id": "15708", "issueType": "Improvement", "key": "SERVER-2317", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "resolution": "Fixed", "resolutionDate": "2018-12-13T16:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver ca fails with a traceback when the service is not running", "timeSpent": "PT0S", "updated": "2018-12-19T07:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Included (but may need to be pulled out from) here: https://github.com/puppetlabs/puppetserver/pull/1866", "created": "2018-10-30T17:15:00.000000"}], "components": [], "created": "2018-09-17T13:21:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46fdbd6f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpx2n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "(With this ticket resolved we were able to begin testing Java 11 in travis-ci which gave us the confidence to announce \"experimental\" support for Java 11).\n\nPuppet Server now has experimental support for Java 11 (and all Java versions between it and 8, inclusive). This is tested by relatively comprehensive low level tests but has not gone through high level, packaged acceptance tests. Consequently, we consider this support \"experimental\" with full support coming later in 2019 for whatever is the latest long term supported version of Java."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_14641_*|*_1_*:*_1_*:*_275391591_*|*_5_*:*_1_*:*_4222419417_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_3519383811"}], "description": "Puppet Server's test suite makes use of HexBinaryAdapter [here|https://github.com/puppetlabs/puppetserver/blob/master/test/integration/puppetlabs/services/jruby/request_handler_test.clj#L4] we will need to remove that from the test because it will be removed in Java 11.\n\n\u00a0\n\nThis was part of, and cloned from, the original ticket on Java 11 support, the below work was merged already\n\n\u00a0\n\n----\n\n\u00a0\n\nJava 11 will remove modules deprecated in Java 9 that we currently use (indirectly) to run puppetserver.\n\n\u00a0\n We need to update our version of liberator to the version here:\n\n[https://github.com/puppetlabs/clj-parent/pull/114]\n\nThat PR includes discussion of how to update Puppet Server's code and tests when we upgrade.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14827", "fixedVersions": ["SERVER 6.1.0"], "id": "14827", "issueType": "Improvement", "key": "SERVER-2315", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-10-31T11:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix tests for Java 11", "timeSpent": "PT0S", "updated": "2018-12-19T07:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "How about if we accepted a list of node names on stdin (one per line) or the ability to specify shell wildcards? Note we removed {{puppet ca}} in puppet 6, so we probably want to implement this in the {{puppetserver ca}} CLI. Moving to the SERVER project.", "created": "2018-09-20T16:07:00.000000"}, {"author": "557058:750ff3bd-7564-4d8a-b480-b500b85be583", "body": "Node names on stdin would work great. That's probably more convenient.", "created": "2018-09-25T19:24:00.000000"}, {"author": "557058:750ff3bd-7564-4d8a-b480-b500b85be583", "body": "I take it back. The non-standard format keeps biting me, and it's more than just piping things from stdin. I filed a more general ticket: PE-25462.", "created": "2018-11-01T15:34:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "{{puppetserver ca clean}} does currently accept a list of certnames, though under the {{--certname}} flag. Going to close this and leave the other one open.", "created": "2019-09-27T16:51:00.000000"}], "components": [], "created": "2018-09-14T15:50:00.000000", "creator": "557058:750ff3bd-7564-4d8a-b480-b500b85be583", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@382115b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpvv3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_32662857293_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_5057"}], "description": "It would be super helpful to be able to destroy multiple pending certs at once, for example:\n\n{code}\nsudo puppet ca destroy bad-host.example.net other-bad-host.example.net\n{code}\n\nWe end up getting a _lot_ of bad CSRs, and it would be very expensive to fix on the other end. We currently have 450+. I end up dong things like:\n\n{code}\nsudo puppet ca list | awk '/bad-host/ {print$1}' | xargs -n 1 sudo puppet ca destroy\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16252", "fixedVersions": [], "id": "16252", "issueType": "Improvement", "key": "SERVER-2325", "labels": ["customer0"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:750ff3bd-7564-4d8a-b480-b500b85be583", "resolution": "Fixed", "resolutionDate": "2019-09-27T16:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ability to destroy multiple CSRs at once", "timeSpent": "PT0S", "updated": "2019-09-27T16:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] please provide release notes for this issue if needed, thanks!", "created": "2018-09-27T08:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This doesn't have any user facing changes, though auditors/SEs will appreciate us shipping a version of Jolokia that doesn't have known security issues (we never leveraged any of the affected parts).\n\n/cc [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]", "created": "2018-09-27T08:54:00.000000"}], "components": [], "created": "2018-09-14T11:48:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58f3cac2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1fz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_84154717_*|*_1_*:*_1_*:*_966981462_*|*_3_*:*_1_*:*_62410671_*|*_5_*:*_1_*:*_448675098_*|*_6_*:*_1_*:*_0"}], "description": "tk-metrics has a meaningful dependency bump that we should get into 6.0.1 and 5.3.7.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15465", "fixedVersions": ["SERVER 5.3.z", "SERVER 6.0.1"], "id": "15465", "issueType": "Task", "key": "SERVER-2314", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-09-27T09:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Release and promote new version of tk-metrics", "timeSpent": "PT0S", "updated": "2018-10-02T13:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This is technically a subtask of SERVER-2283, not SERVER-2156.", "created": "2018-09-12T18:11:00.000000"}], "components": [], "created": "2018-09-12T16:30:00.000000", "creator": "6361cbfc59c794184bcbd33a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@265474b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpu8n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_69206544_*|*_1_*:*_1_*:*_929052_*|*_3_*:*_1_*:*_59750101_*|*_10009_*:*_1_*:*_355018624_*|*_5_*:*_2_*:*_109481926_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_43450"}], "description": "When using a file in {{$module/lib}} as an extra dependency of a task implementation, puppet-server generates the wrong URL to indicate how to download that file. The URL it generates is {{.../file_content/plugins/$module/$filename}}, when it should be {{.../file_content/plugins/$filename}} (without the module name). This causes pxp-agent to fail to run the task.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15463", "fixedVersions": ["SERVER 6.0.0"], "id": "15463", "issueType": "Story Bug", "key": "SERVER-2313", "labels": [], "originalEstimate": "PT0S", "parent": "15932", "parentSummary": "Include file requirements from task metadata in taskinfo", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6361cbfc59c794184bcbd33a", "resolution": "Fixed", "resolutionDate": "2018-09-18T10:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Files in lib/ don't generate the correct URL in task details", "timeSpent": "PT0S", "updated": "2018-09-19T13:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Opened a PR for the merge up here: https://github.com/puppetlabs/puppetserver/pull/1805/files (took the defaultish git message for merges it didn't get the ticket number in the log message)", "created": "2018-09-18T12:34:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Winston PR here: https://github.com/puppetlabs/winston/pull/190", "created": "2018-09-18T12:46:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We released off of our 6.0.x maintenance branch, no branches or pipelines need to be destroyed between now and 6.0.1.", "created": "2018-09-18T12:47:00.000000"}], "components": [], "created": "2018-09-10T15:05:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@630fb978"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpscf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2739_*|*_10007_*:*_1_*:*_17909958_*|*_3_*:*_1_*:*_13848_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_682852456"}], "description": "(Initial planned release date: 2018-09-18)\n\n* Update version number in source to point to next snapshot.\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update Winston and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2018-09-19T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.0 Release - 2018-09-18\n", "estimate": "PT0S", "externalId": "15159", "fixedVersions": [], "id": "15159", "issueType": "Task", "key": "SERVER-2312", "labels": [], "originalEstimate": "PT0S", "parent": "24241", "parentSummary": "Puppet Platform 6.0.0 Release - 2018-09-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-09-18T17:45:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 6.0.0)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "These have been shipped to http://builds.delivery.puppetlabs.net/puppetserver/6.0.0/ and are in the process of being promoted into PE.\n\nCurrently PE pipelines are failing because of an infrastructure issue... but discussed with Maggie and we don't think that's a blocker to shipping.", "created": "2018-09-18T11:51:00.000000"}], "components": [], "created": "2018-09-10T15:05:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48b266b3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpsbz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2552_*|*_3_*:*_1_*:*_2956877_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_676602792"}], "description": "(Initial planned release date: 2018-09-18)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Bump and Tag the candidate SHA once passing\n  * Run the \"Lein Release\" job for the release branch. This job will make the\n     appropriate version bump commits and tag the release SHA.\n* Ensure tagged release version is built, tested and artifacts exist at\n  builds.delivery.puppetlabs.net\n  * This may entail manually promoting into PE again.\n", "duedate": "2018-09-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.0 Release - 2018-09-18\n", "estimate": "PT0S", "externalId": "17408", "fixedVersions": [], "id": "17408", "issueType": "Task", "key": "SERVER-2311", "labels": [], "originalEstimate": "PT0S", "parent": "24241", "parentSummary": "Puppet Platform 6.0.0 Release - 2018-09-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-09-18T11:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 6.0.0)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Okay, the 6.0.x branch has been created and nothing meaningful is in older branches:\n - [6.0.x...5.3.x|https://github.com/puppetlabs/puppetserver/compare/6.0.x...5.3.x] Only contains Puppet submodule bumps.\n - [6.0.x...5.1.x|https://github.com/puppetlabs/puppetserver/compare/6.0.x...5.1.x] Nothing, not even automated submodule bumps (there's been no work on this branch since 5.3.x and master diverged)\n - [6.0.x...2.x|https://github.com/puppetlabs/puppetserver/compare/6.0.x...2.x] Ditto, nothing", "created": "2018-09-17T11:19:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We decided against a release branch, there's not much landing between today and tomorrow (when we expect to release) and we'll want to continue to promote things targeted at 6.0.1 into Johnson after we've seen Johnson go green with 6.0.0.", "created": "2018-09-17T11:21:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "CI pipelines exist for the 6.0.x branch and are promoting into PE. Our last promotion into Johnson was at [966c073|https://github.com/puppetlabs/puppetserver/commit/966c073] which contains everything except SERVER-2313, and some test changes. That is currently going through the pipeline now.", "created": "2018-09-17T11:31:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The final ticket (SERVER-2313) made it into PE as of 2019.0.0-rc2-243-g93fe5b5.", "created": "2018-09-18T09:57:00.000000"}], "components": [], "created": "2018-09-10T15:05:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e5100bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpsbr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2426_*|*_3_*:*_1_*:*_388034859_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_284666657"}], "description": "(Initial planned release date: 2018-09-18)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2018-09-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.0 Release - 2018-09-18\n", "estimate": "PT0S", "externalId": "17168", "fixedVersions": [], "id": "17168", "issueType": "Task", "key": "SERVER-2310", "labels": [], "originalEstimate": "PT0S", "parent": "24241", "parentSummary": "Puppet Platform 6.0.0 Release - 2018-09-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-09-18T09:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 6.0.0)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Running ticketmatch I see:\n{code}puppetserver justin (6.0.x $) \u2016 ruby ../ticketmatch/ticketmatch.rb\nEnter Git From Rev: 5.3.5\nEnter Git To Rev: |master| 84b5888455c3f70d82d05194a1f12eb9bc5f88c7\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: |SERVER 84b5888455c3f70d82d05194a1f12eb9bc5f88c7| SERVER 6.0.0\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100 23267    0 23158  100   109  59272    278 --:--:-- --:--:-- --:--:-- 59379\n\n...snip...\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 6.0.0)\n#15561\n#20027\n#22324\nCPR-600\nI18N\nPE-4848,PUP-2999\nPUP-3151\nPUP-3173\nPUP-3268\nPUP-3486\nPUP-3526\nPUP-3644\nPUP-3645\nPUP-417\nPUP-672\nPUP-7732\nPUP-8266\nPUP-8913\nPUP=2563\nREVERT aa7bccf\nSERVER-2133\nSERVER-2237\nSERVER-2239\nSERVER-2283\nSERVER-2287\nSERVER-2302\nSERVER-2313\nTK-426\n----- Unresolved Jira tickets not in git commits -----\nUNRESOLVED ISSUES NOT FOUND IN GIT\nSERVER-974 Open\nSERVER-2171 Developing\n----- Unresolved Jira tickets found in git commits -----\nUNRESOLVED ISSUES FOUND IN GIT\nSERVER-2156 Ready for Review\nSERVER-2231 Ready for CI\n\npuppetserver justin (6.0.x $) \u2016\n{code}\nI've confirmed that \n #15561, #20027, #22324, PE-4848,PUP-2999, PUP-3151, PUP-3173, PUP-3268, PUP-3486, PUP-3526, PUP-3644, PUP-3645, PUP-417, PUP-672, PUP-7732, PUP-8266, and PUP=2563 all come from [this PR|https://github.com/puppetlabs/puppetserver/pull/1706] for SERVER-2172 where we copied over an old CA related test from Puppet including its git history. I'm not going to update the versions in those tickets to include SERVER 6.0.0, because that doesn't make sense.\n\nExcluding the above the \"In Git but not with a SERVER 6.0.0 version\" is:\n CPR-600, PUP-8913, REVERT aa7bccf, SERVER-2133, SERVER-2237, SERVER-2239, SERVER-2283, SERVER-2287, SERVER-2302, SERVER-2313, and TK-426.\n\nPUP-8913 was reverted in the agent, but the server side work can remain and will be shipped in Puppet Server 6.0.0. I've updated the ticket.\n\nREVERT aa7bccf is a reverted merge up that was later fixed, I'm unclear why it's showing up.\n\nSERVER-2133 was shipped in (and has the correct fix version of) SERVER 5.3.0, I don't understand why it's showing up in this list.\n SERVER-2237 (Bionic support) shipped in 5.3.4...\n SERVER-2239 one of two PRs needed for it have landed in 6.0.0, but another needs to land in 6.1.0.\n SERVER-2302 will go out in our next 5.3.z. It had that fix version since it will be version-wise the oldest release to include it, however chronologically 6.0.0 will go out before the next 5.3.z, I've updated it to include both versions.\n\nCPR-600, SERVER-2283, SERVER-2287, SERVER-2313, and TK-426 have been updated with the \"SERVER 6.0.0\" fix version.\n\nIn the other categories I've:\n Unlabeled the fix version from SERVER-974 (Clojure CA) as it was a big bucket for improvements that we wanted to do in 6.0 and beyond.\n SERVER-2171 can't be closed yet as it includes one PE ticket that needs to go in for Johnson (maybe un epic that ticket)??\n Resolved SERVER-2231.\n\n--SERVER-2283\u00a0is the parent of SERVER-2313 and related to\u00a0-SERVER-2156-\u00a0their resolution is blocked on the last commit waiting promotion to PE.\n\n\u00a0\n\nI'll update SERVER-974, break out a new ticket for the 6.1 work of SERVER-2239 (and then close SERVER-22239), similarly break out a new ticket for the non-server work in TK-426, and check in with the tasks team regarding SERVER-2283 and friends.", "created": "2018-09-17T12:11:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We merged a new PR from Ethan that updates shipping docker bits for 6.0.0 (no code changes), I've updated the tickets as mentioned above and reran:\n{code}\npuppetserver justin (6.0.x $) \u2016 ruby ../ticketmatch/ticketmatch.rb\nEnter Git From Rev: 5.3.5\nEnter Git To Rev: |master| 02bb75ab0e5f4fa5d9030099c791d623f4f2eaaa\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: |SERVER 02bb75ab0e5f4fa5d9030099c791d623f4f2eaaa| SERVER 6.0.0\n\n...snip....\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 6.0.0)\n#15561\n#20027\n#22324\nCPR-600\nI18N\nPE-4848,PUP-2999\nPUP-3151\nPUP-3173\nPUP-3268\nPUP-3486\nPUP-3526\nPUP-3644\nPUP-3645\nPUP-417\nPUP-672\nPUP-7732\nPUP-8266\nPUP-8913\nPUP=2563\nREVERT aa7bccf\nSERVER-2133\nSERVER-2237\nTK-426\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n----- Unresolved Jira tickets found in git commits -----\nUNRESOLVED ISSUES FOUND IN GIT\nSERVER-2283 Ready for Review\n{code}\n\nI *think* PUP-8913 and TK-426 are not being shown because they aren't in the SERVER project?? I'm assuming the fixVersion \"SERVER 6.0.0\" has a project specific identifier that doesn't match? AFAICT, they otherwise are correctly closed and have the right version.\n\nThen there's SERVER-2133, SERVER-2237, that shipped in the 5.3 series and I don't know why they're showing up.\n\nAside from the tokens that come in from the moving of the git history of a CA related acceptance test, that leaves SERVER-2283 which was done by the Tasks team and is pending a promotion into PE for resolution.\n\nCurrently everything in PE looks testing related from the {{puppet cert}} -> {{puppetserver ca}} change (not functionality breakage), assuming nothing more shakes out of that work and that we can close SERVER-2283 pending the next promotion, I'm going to update the version number and shelve the Server bits this afternoon for a nightly run through PE with the 6.0.0 version. ", "created": "2018-09-17T13:57:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "SERVER-2283, which is a parent of the task SERVER-2313 (which isn't showing up here but is the sole task in that ticket), was promoted into PE and the last thing waiting resolution before we tag and ship.", "created": "2018-09-18T09:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "6.0.0.SNAPSHOT.2018.09.17T2140 is the dev build with all the bits.", "created": "2018-09-18T09:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "SERVER-2313/SERVER-2283 has passed automated testing and is in \"Ready for Test\" per that teams workflow. Our other automated tests have confirmed it doesn't cause a regression in other parts of the code, and even if doesn't fully complete the work for the feature they're building for Johnson (BOLT-131) additional fixes can go out in 6.0.1.", "created": "2018-09-18T11:01:00.000000"}], "components": [], "created": "2018-09-10T15:05:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@590154ce"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpsbj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2510_*|*_3_*:*_1_*:*_391893167_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_284685859"}], "description": "(Initial planned release date: 2018-09-18)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Check project.clj and clj-parent for any library updates since the last\n    release (e.g. {{git diff 2.3.2 \u2013 project.clj}})\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2018-09-11T00:00:00.000000", "epicLinkSummary": "Puppet Platform 6.0.0 Release - 2018-09-18\n", "estimate": "PT0S", "externalId": "16772", "fixedVersions": [], "id": "16772", "issueType": "Task", "key": "SERVER-2309", "labels": [], "originalEstimate": "PT0S", "parent": "24241", "parentSummary": "Puppet Platform 6.0.0 Release - 2018-09-18\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-09-18T11:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 6.0.0)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please provide release notes for this issue if needed, thanks!", "created": "2018-09-12T07:30:00.000000"}], "components": [], "created": "2018-09-10T11:04:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the master cert generated by puppetserver has the CLI tool auth extension"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7270fd81"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1rz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Puppet master's cert is now authorized to connect to the certificate_status endpoint out of the box. This allows the new CA CLI tool to perform CA tasks via Puppet Server's CA API."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_78950555_*|*_1_*:*_1_*:*_11453_*|*_10007_*:*_1_*:*_6566964_*|*_3_*:*_1_*:*_1769459_*|*_5_*:*_1_*:*_683740597_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_15608222"}], "description": "In order to talk to the {{certificate_status}} endpoint, the CLI gem needs the cert it uses to have the right authorization extension. The CA generated by the gem via `generate` or `import` already adds this extension to the master's host cert, but Puppetserver's bootstrapping code does not. We need to update Puppetserver to also add this extension to the master cert.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "16770", "fixedVersions": ["SERVER 6.0.0"], "id": "16770", "issueType": "Task", "key": "SERVER-2308", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-19T13:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver's CA bootstrapping code to add CLI tool auth extension", "timeSpent": "PT0S", "updated": "2018-09-19T14:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623cff48b75ca80070575e17", "created": "2018-09-12T00:04:00.000000", "name": "puppetserver_memory.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10966"}], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks for the report!\n\nWe haven't experienced this in our test environments but we'll see what we can do to reproduce. --It sounds like it could be related to\u00a0[https://github.com/puppetlabs/jruby-utils/pull/68|https://github.com/puppetlabs/jruby-utils/pull/68]-- \n\n...Actually, I assume you're running with JRuby 1.7 in Puppet Server 5.3? That shouldn't be affected....\n\nWe'll try to schedule some time next week to reproduce. /cc [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "created": "2018-09-11T09:54:00.000000"}, {"author": "623cff48b75ca80070575e17", "body": "Sorry I forgot to mention that, we are using JRuby 9k with version 5.3.5 (affected) and 5.1.5 (not affected). 2.4.0 and 2.8.1 are still using jruby 1.7.\n\nThe memory usage of the 5.1.5 is also hanging around at the configured maximum of 12GiB while it has a configured max heap of 8GiB, but unlike 5.3.5 it is not exceeding the limit and getting killed.", "created": "2018-09-11T23:58:00.000000"}, {"author": "623cff48b75ca80070575e17", "body": "attached a graph the memory usage pattern. 5.1.5 has constant memory usage after a while, 5.3.5 increases until it gets killed. Both servers use a max-requests-per-instance setting of 200, are configured identically (with exception of a few minor auth.conf differences due to the version) and are using the same base image, so same operating system libraries and java.\n\nWith max-requests-per-instance disabled (set to zero) 5.3.5 is running fine.", "created": "2018-09-12T00:07:00.000000"}, {"author": "623cff48b75ca80070575e17", "body": "Any updates? the issue is still happening in puppetserver 6.0.2", "created": "2019-01-08T03:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Sorry, about that we started to look into this and then it fell through the cracks (we were in the middle of a couple large releases).\n\nWe have seen a considerable amount of codecache and metaspace use with 9k, which grows outside the heap, and is rarely/costly collected if ever, and seems to grow with the number of new JRuby instances spun up (wether as the host scales up in size or more are created with when max-requests are hit).\n\nAside: I believe the issue stems from the JVM's invokedynamic functionality, which creates a custom classes for some forms of dynamic dispatch, which 9k leverages to internally provide some forms of metaprogramming, which we do to a pathalogical degree in our Ruby code.\n\nLonger term, we're evaluating our usage of both JRuby as a runtime and cleaning up our usage of metaprogramming in Ruby, but in the mean time there's a few complimentary things that might help us at least determine if this is your problem.\n\nOne is to include MaxMetaspaceSize in your JAVA_ARGS in addition to ReservedCodeCacheSize and make sure your metaspace + codecache + heap is less than your max ram.\n\nAnother is to tune your max-requests-per-instance.\n\nWe include this as a way to fight environment isolation and potential memory leaks in user code. However both are better dealt with long term by other means. For environment isolation you should refer to our docs on {{puppet generate types}} to isolate type definitons per environment. For memory leaks in user code you may want to find what code is causing the leaks and open an issue with the authors.\n\nIn our commercial product we ship 100,000 as a default max-instances, which we've found provides a safety valve for pathological cases while still minimizing churn in JRuby instances. However, 200 requests might only be one large catalog with many file resource. If there was a leak within our JRuby/Ruby code I would expect it to get worse the longer any one instance existed. However it was related to either the invokedynamic problem or some of our flushing logic I would expect the memory pressure to decrease as you increased the max-requests from 200, to 400, 800, 1600, 3200...\n\nI would suggest that you should set max-requests to 100,000 as we recommend for our commercial customers unless you have a specific reason not to.\n\nFinally, disabling as much of JRuby's invokedynamic usage as possible should both slow down compilation times as well as decrease metaspace and codecache usage. I think {{-Djruby.invokedynamic.invocation=false}} is the big one there but there's many and I can look into which set might be best if you decide to go down that route.\n\nI would try and see if tuning metaspace fixes the issue for you, if so we can almost be assured its our structural issue with our metaprogramming and invokedynamic's specialized class creation. I would then put your max-requests to 100k and call it a day. If it doesn't solve the issue then I'd try tuning max-requests to see if it scales as I think it should. If it does, then finally try the -Djruby.invokedynamic.invocation=false and come back and we can work through the next steps.\n\nHTH", "created": "2019-01-09T15:17:00.000000"}, {"author": "623cff48b75ca80070575e17", "body": "Thanks for the reply\n\nWe are are using the low max-requests-per-instance setting because we have seen performance decrease over time in some environments, possibly due to increased GC pressure from some leaky modules. Setting the max requests has fixed that problem.\n\nSetting MaxMetaspaceSize does not help with the out of memory issue but setting {{-Djruby.invokedynamic.invocation=false}} does fix leak the problem.\n\nThe setting was working fine up until version 5.3.x. Do you have an idea what change between 5.3.0 and 5.1.5 might have caused the problem?", "created": "2019-01-21T04:25:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I haven't reproduced either your specific issue or specific scenario eg. I'm not seeing what you're seeing, but I haven't ran puppetserver in k8s with your settings. ^1^\n\nMy comments, and our initial work on this ticket, was based on reviewing our perf/9k work and seeing what generally might be problematic in your env.\n\nLooking at the diff between [5.1.5 & 5.3.0|https://github.com/puppetlabs/puppetserver/compare/5.1.5...5.3.0] there's a few things that could have affected this. ^2^\n\nIf you say that it happens only when setting max-request low I don't think it should be a problem with the underlying JRuby version but with how we're managing those instances in the server itself. Our new feature of Instance Flush Splaying is the most adjacent to your issue but it was also a well understood and low risk change. It should definitely change the performance characteristics of a pool, but we aren't doing anything new that might introduce leakage... I think.\n\nMaybe, if we're shutting down a JRuby instance while it's still compiling/optimizing then it could leak some memory? I would expect our integration tests to also cause this, but maybe they finish early enough that it doesn't get so bad as to be noticeable.\n\nThere's a few other things that we could try:\n * Getting a heap dump and a count of heap vs total memory used before it's killed (ideally at a few points in its march towards eating all your memory).\n * Setting\u00a0{{jruby-puppet.compile-mode}} to {{off}} in {{conf.d/puppetserver.conf}} ([config reference|https://puppet.com/docs/puppetserver/6.1/config_file_puppetserver.html])? Do you see a significant performance difference between your 1.7 servers and 9k? Do you see a performance difference between your servers once you toggle compile-mode? ^3^\n * Setting {{jruby-puppet.splay-instance-flush}} to {{false}} to disable the instance splaying.\n * You mention that there's some memory leaking code in some modules in some environments. Can you share those? Maybe in 9k they've begun leaking in ways that trashing the instance doesn't clean them up.\n\n\u00a0\n\nThe heap dump is the best this-is-a-memory-leak-and-we're-going-to-find-what-exactly-is-leaking option. The other options will narrow the surface area we're looking at and highlight if it is actually a programming error leak or if it's some configuration settings that aren't working well together.\n\n\u00a0\n\n\u00a0\n ----\n\n\u00a0# I don't have a lot of experience running server in k8s but we have a group working on improving our foss docker images and coming up with best practices around running them, I'm hoping they create artifacts that we would both be able to consume going forward. However at this point I'm not sure what they're eta is.\n # Change log synopsis:\n ** Instance flush splay - this should spread out when instances are destroyed based on number of instances and max requests.\n ** When shelling out on the master we will sometimes wrap the command in {{/bin/sh}} if it contains shell escape characters (this is what MRI does).\n ** We force the internal/external encoding (should be a noop in 9k).\n ** Users can now turn on JRuby's profiler from puppetserver configs (rather than setting environment variables in the defaults file).\n ** Additional metrics are collected on the duration of API calls to the ENC and PDB, and we count number of queue limits exceeded.\n ** 9k now JIT compiles by default.\n ** We moved from JRuby [9.1.11.0 to 9.1.15.0|https://github.com/jruby/jruby/compare/9.1.11.0...9.1.15.0] ([issues|https://github.com/jruby/jruby/issues?utf8=%E2%9C%93&q=is%3Aissue+sort%3Aupdated-desc+9.1.15.0]).\n # Generally speaking, running in interpreter mode is slower in 9k vs 1.7, and when we turn on JIT in 9k the first few runs are *much* slower than if we were interpreting the code. Then after a handful of compiles the JIT'ed code becomes optimized enough that its meaningfully faster than the interpreted code. However the initial cost of compiling and optimizing isn't an overall win unless that instance lives for dozens, if not hundreds of compiles. I'm guessing that each instance is incurring the cost of compiling and optimizing and then being destroyed before it can accrue the benefits.", "created": "2019-01-22T16:24:00.000000"}, {"author": "623cff48b75ca80070575e17", "body": "Hi,\n\nI have tried a few things you suggested:\n\nsetting splay-instance-flush: false did *not* work, it still gets OOM killed after reaching the limit of 12Gi memory used\n\nsetting {{compile-mode: off did work, the pods ran stable for a day using configured 8Gi memory used}}\n\ncompile-mode off did increase median performance by about 10 percent (server report_time and config_retrieval_time metrics). This might be due to jit warmup and our low jruby lifetime, though when we enabled the low lifetime we did tune it to not affect performance as we did know it will affect the jit. But if we find the time we can do some more performance tests with longer lifetimes and compile mode off/on.\n\n\u00a0\n\nWe did see a slowdown changing from jruby 1.7 to 9k, but it was not very significant (maybe 5-10%) and it was necessary to get rid of some ugly patching patching (as ruby 1.7 dns resolution does not work with kubernetes ndot dns settings) and simplify integration with hashicorps vault's ruby library that has higher ruby requirements than 1.7, so we considered it worth it.", "created": "2019-01-25T10:38:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm glad that your pods are running in a stable manner!\n\nWhen you say that\n{quote}compile-mode off did increase median performance by about 10 percent\n{quote}\nDo you mean the performance _improved_ and time was reduced, or that time increased and the pods are now less performant, though more stable?\n\n\u00a0\n\nUnless you disagree, I'm going to consider this as caused by JIT + low MRPI. I will put seeing if it's an actual memory leak in JRuby when we shutdown the instances while it's still compiling/optimizing, as well as a doc ticket to note potential interactions between JIT and MRPI, but if you have a meaningful work around I'll close this ticket itself. (My guess is we'll do the docs right away but save the JRuby investigation until we do another performance pass).", "created": "2019-01-29T13:13:00.000000"}], "components": ["Puppet Server"], "created": "2018-09-10T00:53:00.000000", "creator": "623cff48b75ca80070575e17", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58b1e77d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2o7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_119276755_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_25381567464_*|*_10006_*:*_1_*:*_11090173536_*|*_10005_*:*_1_*:*_17318"}], "description": "Puppetserver 5.3.5 appears to be leaking memory when jruby flushing via max-requests-per-instance is activated.\n\nWe are running puppetserver in kubernetes and our 5.3.5 servers keep exceeding the allowed memory when the max requests setting is nonzero. The java process is limited to 8G heap space and also uses -XX:MaxRam but the memory usage increases until it hits the 12G limit and the pod is killed.\n\nWe are running multiple different versions of puppetservers with identical settings (but different environments). Versions 2.4.0, 2.8.1, 5.1.5 are working fine, only version 5.3.x seems to be affected (tested 5.3.1, 5.3.3 and 5.3.5)\n\n\u00a0\n\nThe images are based on ubuntu xenial (16.04) and are using openjdk 8.\n The java memory settings are:\n -Xmx8G -XX:ReservedCodeCacheSize=512m -XX:MaxRAM=$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16566", "fixedVersions": [], "id": "16566", "issueType": "Bug", "key": "SERVER-2307", "labels": ["needs_repro"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623cff48b75ca80070575e17", "resolution": "Fixed", "resolutionDate": "2019-11-07T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 5.3 memory leak with jruby flushing", "timeSpent": "PT0S", "updated": "2019-11-15T12:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] please provide release notes for this issue if needed, thanks!", "created": "2018-09-12T07:29:00.000000"}], "components": [], "created": "2018-09-07T10:01:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3139fc10"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2221"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1rr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This plumbs support for a new, but already documented feature, through the new cli tool we've created."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_240469265_*|*_1_*:*_1_*:*_14422_*|*_10007_*:*_1_*:*_59094570_*|*_3_*:*_1_*:*_18385984_*|*_5_*:*_1_*:*_443470588_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_288341221"}], "description": "We need to update various places to generate new files related to the infrastructure CRL, see SERVER-2231. Otherwise the CA state will show up as partially generated and puppetserver will refuse to start. The gem commands should only generate these files if the infra CRL is enabled.\n\nPlaces to update:\n* {{puppetserver ca generate}}\n* {{puppetserver ca import}}\n* https://github.com/puppetlabs/puppetserver/blob/master/acceptance/suites/tests/certificate_authority/intermediate_ca.rb", "epicLinkSummary": "Improve Certificate Revocation", "estimate": "PT0S", "externalId": "15937", "fixedVersions": ["SERVER 6.0.0"], "id": "15937", "issueType": "Task", "key": "SERVER-2305", "labels": [], "originalEstimate": "PT0S", "parent": "15766", "parentSummary": "Improve Certificate Revocation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-14T10:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Generate new infra_* files", "timeSpent": "PT0S", "updated": "2018-09-19T13:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2018-09-06T12:47:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c92dd31"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automated Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzppzz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_264018975_*|*_1_*:*_1_*:*_904891_*|*_10007_*:*_1_*:*_320143357_*|*_3_*:*_1_*:*_35579051_*|*_5_*:*_1_*:*_0"}], "description": "We currently have an [acceptance test|https://github.com/puppetlabs/puppetserver/blob/5.3.5/acceptance/suites/tests/00_smoke/master_starts_if_agent_run_before_ssl_files_inited.rb]\u00a0that verifies if the agent has ran (and consequently created a private key pair) that the server will still start (implying that the CA bootstrapping code allows for pre-existing agent keys).\n\nThe puppetserver-ca does not allow this use case however.\n\nThe current behavior in Puppet Server, and required continued behavior in puppetserver-ca, is:\n * If there isn't either a public or private key for the master generate them in addition to the cert (current behavior)\n\n * If there is a public and private key for the master use them to generate the cert.\n\n * If there is one key but not the other, fail.\n\n\u00a0\n\nSee https://puppet.atlassian.net/browse/SERVER-528\u00a0for the original rationale.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15705", "fixedVersions": [], "id": "15705", "issueType": "Bug", "key": "SERVER-2304", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-09-13T17:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver-ca should allow pre-existing private/public keys for the master/agent", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2018-09-06T11:41:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@75cf0198"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzppwv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_40486730_*|*_10007_*:*_1_*:*_584169775_*|*_10009_*:*_1_*:*_12798089_*|*_5_*:*_1_*:*_0"}], "description": "Currently the puppetserver package also installs the puppetserver-ca gem. When upgrading or otherwise directly interacting with the gem it installs the puppetserver-ca\u00a0 in Puppet's bindir because the gem lists that as an executable. However the \"puppetserver-ca\" executable within the exe directory was only ever designed for local functional testing (its intended wrap to the library similarly to how the ca subcommand that puppetserver packaging will).\n\nWe should unlist that file as an executable in the gem so that it isn't installed into Puppet's bindir.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15461", "fixedVersions": [], "id": "15461", "issueType": "Bug", "key": "SERVER-2303", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-09-13T20:45:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Config exe/puppetserver-ca to not be installed into Puppet's PATH", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-09-05T15:26:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d73fcca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpotj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "There was a regression in Puppet Server 5.3.0 when we added the ability to wrap the status service within tk-auth. The intention was to default the status service to unauthenticated (in order to maintain compatibility). However, a rule was only written for the \"services\" endpoint of the status service, not the \"simple\" endpoint. Consequently access to the simple endpoint was by default forbidden. This adds a rule for the simple endpoint to also be unauthenticated and updates some missing documentation on how users can control access to the status endpoints themselves."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_429605301_*|*_1_*:*_1_*:*_4176756_*|*_10007_*:*_1_*:*_741719_*|*_3_*:*_1_*:*_84651672_*|*_5_*:*_1_*:*_683711385_*|*_6_*:*_1_*:*_0"}], "description": "The {{/status/v1/simple}} REST endpoint was added in puppetserver 2.6.0 as health check for load-balancers. According to https://puppet.com/docs/puppetserver/5.3/status-api/v1/simple.html#authorization the endpoint does not require authorization. But that doesn't appear to be the case:\n\n{noformat}\n# rpm -qa | grep puppet\npuppet-nightly-release-1.0.0-2.el7.noarch\npuppet-agent-5.99.2.231.gf095aac-1.el7.x86_64\npuppetserver-6.0.0.master-0.1SNAPSHOT.2018.08.19T2214.el7.noarch\n# curl -v -k https://xa80twq2t9eur0o.delivery.puppetlabs.net:8140/status/v1/simple\n* About to connect() to xa80twq2t9eur0o.delivery.puppetlabs.net port 8140 (#0)\n*   Trying 10.32.120.108...\n* Connected to xa80twq2t9eur0o.delivery.puppetlabs.net (10.32.120.108) port 8140 (#0)\n* Initializing NSS with certpath: sql:/etc/pki/nssdb\n* skipping SSL peer certificate verification\n* NSS: client certificate not found (nickname not specified)\n* SSL connection using TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\n* Server certificate:\n* \tsubject: CN=xa80twq2t9eur0o.delivery.puppetlabs.net\n* \tstart date: Sep 04 20:26:47 2018 GMT\n* \texpire date: Sep 04 20:26:47 2023 GMT\n* \tcommon name: xa80twq2t9eur0o.delivery.puppetlabs.net\n* \tissuer: CN=Puppet CA: xa80twq2t9eur0o.delivery.puppetlabs.net\n> GET /status/v1/simple HTTP/1.1\n> User-Agent: curl/7.29.0\n> Host: xa80twq2t9eur0o.delivery.puppetlabs.net:8140\n> Accept: */*\n>\n< HTTP/1.1 403 Forbidden\n< Date: Wed, 05 Sep 2018 21:21:27 GMT\n< Content-Length: 91\n< Server: Jetty(9.4.z-SNAPSHOT)\n{noformat}\n\nAdding the following to the default auth.conf fixes the issue:\n\n{noformat}\n        {\n            # Allow unauthenticated access to the simple status endpoint\n            match-request: {\n                path: \"/status/v1/simple\"\n                type: path\n                method: get\n            }\n            allow-unauthenticated: true\n            sort-order: 500\n            name: \"puppetlabs simple status\"\n        },\n{noformat}\n\nRestart puppetserver, then it works:\n\n{noformat}\n# curl -k https://xa80twq2t9eur0o.delivery.puppetlabs.net:8140/status/v1/simple\nrunning\n{noformat}\n\nNot sure how to handle upgrades though?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16563", "fixedVersions": ["SERVER 5.3.6", "SERVER 6.0.0"], "id": "16563", "issueType": "Bug", "key": "SERVER-2302", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2018-09-19T13:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver's simple status endpoint returns 403", "timeSpent": "PT0S", "updated": "2018-10-22T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We have decided to not do this work for the time being. There is PUP-9116 for removing the associated deprecation warnings from Puppet.", "created": "2018-09-10T10:59:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Closing due to age.  ", "created": "2021-12-22T11:17:00.000000"}], "components": [], "created": "2018-09-04T12:37:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppetserver falls back to Puppet's CA settings when they are not configured in the server config file"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b682eac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpne7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Dec/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14854_*|*_3_*:*_1_*:*_512402803_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_103598380106"}], "description": "Originally we were planning to remove all CA-related settings from Puppet in favor of ones in Puppetserver in Puppet 6. To that end we issued deprecation warnings for the Puppet settings in Puppet 5.5.6. However, these warnings were premature, since users had no alternatives to move to. We should add the settings to Puppetserver with automatic fallback to Puppet's settings when they have not been configured in Puppetserver's config files. This should be shipped at least with the next Puppetserver 5.x release, and possibly in Puppet 6 as well, to make migrating to the new settings easier.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15936", "fixedVersions": [], "id": "15936", "issueType": "Task", "key": "SERVER-2301", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2021-12-22T11:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow puppetserver CA settings to fallback to Puppet's when unconfigured", "timeSpent": "PT0S", "updated": "2021-12-22T11:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c114d866b810069e4374d", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hi, thanks for the report. That endpoint, believe it or not, lives in the agent (and is served by Puppet Server). The version reported ({{5.5.0}}) is a Puppet Agent version and gives a good clue to the fact that it's been returning this since then (IIRC, June of this year). Do you know the last know version of Puppet Server/Puppet Agent where this was functioning? That would give us a change set to look through to figure out what broken and when.", "created": "2018-09-04T15:56:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Puppet Server 5 is no longer supported and we haven't heard from the user in years. If this is still an issue, please open a new ticket describing the issue.", "created": "2022-02-09T11:43:00.000000"}], "components": ["Puppet Server"], "created": "2018-08-31T22:16:00.000000", "creator": "623c114d866b810069e4374d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f90da5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0uac"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_322844074_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_108334010580"}], "description": "*Puppet Server Version: 5.3*\n *OS Name/Version: CentOS 7.4*\n\nPuppet status endpoint returns HTTP 404, even though returned json says it's is_alive.\n\n$:~ chic_cat$ curl -I -k https://puppet:8140/puppet/v3/status/whatever?environment=production\nHTTP/1.1 404 Not Found\nDate: Sat, 01 Sep 2018 04:13:24 GMT\nCache-Control: must-revalidate,no-cache,no-store\nContent-Type: text/html;charset=iso-8859-1\nContent-Length: 340\nServer: Jetty(9.4.z-SNAPSHOT)\n\n$:~ chic_cat$ curl -k https://puppet:8140/puppet/v3/status/whatever?environment=production\n{\"is_alive\":true,\"version\":\"5.5.0\"}$:~ chic_cat$\n\n*Desired Behavior:*\n\n\u00a0\n\n200 OK\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15158", "fixedVersions": [], "id": "15158", "issueType": "Bug", "key": "SERVER-2300", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c114d866b810069e4374d", "resolution": "Cannot Reproduce", "resolutionDate": "2022-02-09T11:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server 5.3 status endpoint doesn't work", "timeSpent": "PT0S", "updated": "2022-02-09T11:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2018-08-31T11:09:00.000000", "creator": "5a7211b6d0cb452810793cd6", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Tests scenarios previously using 'puppet cert' commands still pass"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@572f870"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8503"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpl93:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_18773404_*|*_1_*:*_1_*:*_165832_*|*_3_*:*_1_*:*_1125853269_*|*_5_*:*_1_*:*_505678137_*|*_6_*:*_1_*:*_0"}], "description": "In many of our puppetserver tests we use commands like \"puppet cert sign\" which will soon be replaced.\u00a0 Our new puppetserver ca cli commands will be the replacement, so we need to update tests to use our new ca cli commands.\n\n\u00a0\n\n\u00a0", "epicLinkSummary": "Agent SSL CLI", "estimate": "PT0S", "externalId": "16769", "fixedVersions": ["SERVER 6.0.0"], "id": "16769", "issueType": "Task", "key": "SERVER-2299", "labels": [], "originalEstimate": "PT0S", "parent": "25220", "parentSummary": "Agent SSL CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a7211b6d0cb452810793cd6", "resolution": "Fixed", "resolutionDate": "2018-09-13T17:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Replace 'puppet cert' code in tests with new ca-cli commands", "timeSpent": "PT0S", "updated": "2018-09-19T13:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I would assume this will hit anything that is pluginsynced: types, providers, etc. It may also happen to things like locales.\n\nThere was an optimization suggested in our proposed re-write of file serving in clojure that would have resolved this issue (index the entire modulepath, cache the location and metadata to avoid constantly re-searching and checksumming).\u00a0", "created": "2018-09-04T22:35:00.000000"}], "components": ["Puppet Server"], "created": "2018-08-30T11:21:00.000000", "creator": "5e3375e183d74c0e821851f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b358b7a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpk1z:"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "43759"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Aug/18"}], "description": "The behavior of a name collision on of a fact is inconsistent when it comes to plugin sync. As multiple developers or development teams may name facts identically, it is easy to get in a situation where two modules have the same fact name. Currently, only one of the facts will be synced to the agent, which can cause a confusion in trying to debug why the fact is not working as designed. The fact that is chosen is inconsistent and can be different across masters.\n\nTo eliminate this as a potential issue within environments, there should be a mechanism to detect and alert the user that a name collision has occurred. Alternativley, facts could be scoped to their respective modules, but the agent would then be responsible for handling name collisions across modules.\n\n*Reproduction*\nTo reproduce the issue\n\n1. Create a fact with the same name in two different modules in the same environment\n2. Run the agent and notice that only one of the facts is in the plugin sync. \n3. Restart puppetserver (removing the file sync client cache if it exists)\n4. Run the agent and notice which one of the facts has been synced\n\nNote: Different puppetservers may use different versions of the fact, which is even more inconsistent.\n\nAn example of this is below.\n{code}root@pe-201814-master modules]# tree first/ second/\nfirst/\n\u2514\u2500\u2500 lib\n    \u2514\u2500\u2500 facter\n        \u2514\u2500\u2500 test.rb\nsecond/\n\u2514\u2500\u2500 lib\n    \u2514\u2500\u2500 facter\n        \u2514\u2500\u2500 test.rb\n{code}\nThe {{file_metadatas}} endpoint only shows one of the files.\n{code}[root@pe-201814-master modules]# curl -H 'Accept: application/json, text/pson' --cert $(puppet config print hostcert) --key $(puppet config print hostprivkey) --cacert $(puppet config print localcacert) \"https://$(puppet config print server):8140/puppet/v3/file_metadatas/plugins?environment=production&links=follow&recurse=true&source_permissions=ignore&ignore=.svn&ignore=CVS&ignore=.git&ignore=.hg&checksum_type=md5\" | python -m json.tool  | grep -A 2 -B 11 test.rb\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100  113k    0  113k    0     0   452k      0 --:--:-- --:--:-- --:--:--  451k\n    {\n        \"checksum\": {\n            \"type\": \"md5\",\n            \"value\": \"{md5}8ce0743b553e4a467fb2e16d40878c57\"\n        },\n        \"destination\": null,\n        \"group\": 992,\n        \"links\": \"follow\",\n        \"mode\": 420,\n        \"owner\": 995,\n        \"path\": \"/etc/puppetlabs/code/environments/production/modules/second/lib\",\n        \"relative_path\": \"facter/test.rb\",\n        \"type\": \"file\"\n    },\n{code}\nQuerying the file_metadata endpoint for {{test.rb}} shows the same file.\n{code}[root@pe-201814-master modules]# curl --cert $(puppet config print hostcert) --key $(puppet config print hostprivkey) --cacert $(puppet config print localcacert) \"https://$(puppet config print server):8140/puppet/v3/file_metadata/plugins/facter/test.rb?environment=production\" | python -m json.tool\n{\n    \"checksum\": {\n        \"type\": \"md5\",\n        \"value\": \"{md5}8ce0743b553e4a467fb2e16d40878c57\"\n    },\n    \"destination\": null,\n    \"group\": 992,\n    \"links\": \"manage\",\n    \"mode\": 420,\n    \"owner\": 995,\n    \"path\": \"/etc/puppetlabs/code/environments/production/modules/second/lib/facter/test.rb\",\n    \"relative_path\": null,\n    \"type\": \"file\"\n}\n{code}\nA restart of the puppetserver service and clearing the file sync cache results in a different file to be presented.\n{code}[root@pe-201814-master modules]# curl -H 'Accept: application/json, text/pson' --cert $(puppet config print hostcert) --key $(puppet config print hostprivkey) --cacert $(puppet config print localcacert) \"https://$(puppet config print server):8140/puppet/v3/file_metadatas/plugins?environment=production&links=follow&recurse=true&source_permissions=ignore&ignore=.svn&ignore=CVS&ignore=.git&ignore=.hg&checksum_type=md5\" | python -m json.tool  | grep -A 2 -B 11 test.rb\n    {\n        \"checksum\": {\n            \"type\": \"md5\",\n            \"value\": \"{md5}09da16de901b9126793d66189c62295d\"\n        },\n        \"destination\": null,\n        \"group\": 992,\n        \"links\": \"follow\",\n        \"mode\": 420,\n        \"owner\": 995,\n        \"path\": \"/etc/puppetlabs/code/environments/production/modules/first/lib\",\n        \"relative_path\": \"facter/test.rb\",\n        \"type\": \"file\"\n    },\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16251", "fixedVersions": [], "id": "16251", "issueType": "Bug", "key": "SERVER-2298", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e3375e183d74c0e821851f3", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Inconsistent file_metadata results when there is a plugin sync name collision", "timeSpent": "PT0S", "updated": "2021-03-26T13:27:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We have decided to not move any CA settings for Puppet 6, so this work isn't needed yet.", "created": "2018-09-10T10:57:00.000000"}], "components": [], "created": "2018-08-29T09:32:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* puppetserver-ca CLI can correctly resolve and merge settings from both the puppet and the puppetserver config files"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44f2a7c1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:jr"}], "description": "We are moving some but not all of the settings needed by the gem from Puppet to Puppetserver. The CA CLI gem needs to load both files and merge the results correctly for use by the actions. This entails:\n* splitting the {{config}} into one each for server and puppet files\n* combining the results of both configs such that puppetserver's values override puppet's\nOR\n* since there shouldn't be any settings that live in both places, removing duplicated settings from the puppet config loader\n\nNote that since we also ship this gem in Puppeterver 5.x, where the settings have not been moved, this will probably necessitate branching the gem.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "15703", "fixedVersions": [], "id": "15703", "issueType": "Task", "key": "SERVER-2297", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update CA CLI gem to load settings from both config files", "timeSpent": "PT0S", "updated": "2022-03-09T09:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2a53d683-dd9b-464c-923b-18c573973d27", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "If you remove stdlib from production do you get an error during compilation? Do you remember this situation correctly giving an error during compilation? If so, do you know what version of Puppet & Puppet Server it was? Is there anything in the log (maybe at debug level) during compilation regarding this?\n\n\u00a0", "created": "2018-09-04T22:45:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "/cc [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "created": "2018-09-04T22:47:00.000000"}, {"author": "557058:2a53d683-dd9b-464c-923b-18c573973d27", "body": "I deleted temporarily the stdlib module directory in the production environment and in the accountmanagement environment and ran the puppet agent against the accountmanagement environment.\n\nAgain there was no trace regarding file_line resources, neither in the puppet agent debug output or in the puppetserver log.", "created": "2018-09-05T00:55:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T10:04:00.000000"}], "components": ["Puppet Server"], "created": "2018-08-29T02:05:00.000000", "creator": "557058:2a53d683-dd9b-464c-923b-18c573973d27", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a91f1cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpigv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_592843566_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_110636292233"}], "description": "*Puppet Version: 5.5.3*\n *Puppet Server Version: 5.3.4*\n *OS Name/Version: Ubuntu 16.04*\n\nThere is one puppet environment \"production\" with the the stdlib module. There is another puppet environment accountmanagement without the stdlib module. The command \"puppet module list\" lists all modules in the production environment and no modules in\n\n{{/etc/puppetlabs/code/modules (no modules installed)}}\n{{/opt/puppetlabs/puppet/modules (no modules installed)}}\n\nIn the environment accountmanagement I'm trying to use the function file_line from the stdlib module. The catatalog compiles successfully and the agent produces no error but also shows no hint regarding the file_line resource in the puppet code.\n\nAfter adding the stdlib module to the puppet environment accountmanagement all works fine.\n\nThe basemodulepath looks fine and is default.\n\n{{root@machine123:~# puppet config print basemodulepath}}\n{{/etc/puppetlabs/code/modules:/opt/puppetlabs/puppet/modules}}\n\n\u00a0\n\n\u00a0\n\n*Desired Behavior:*\n\nThe desired behavior is getting an error during compilation of the catalog with the stdlib module.\n\n*Actual Behavior:*\n\n\u00a0\n\nThe current behavior is that puppet compiles and executes a catalog with a resource file_line without any trace in debug or error.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15935", "fixedVersions": [], "id": "15935", "issueType": "Bug", "key": "SERVER-2296", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2a53d683-dd9b-464c-923b-18c573973d27", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "No warnings or failures when referencing non-existent functions", "timeSpent": "PT0S", "updated": "2022-03-08T10:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [], "components": [], "created": "2018-08-24T11:19:00.000000", "creator": "5a7211b6d0cb452810793cd6", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8322b96"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1qf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_82610995_*|*_1_*:*_1_*:*_233686_*|*_10007_*:*_1_*:*_146624347_*|*_3_*:*_1_*:*_257128056_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_25572906"}], "description": "Certificate creation in the Create Action needs to support subject\u00a0alternative names that can be customized via Puppet's dns_alt_names\u00a0setting or the `--subject-alt-names` flag.\n\nWe have done something similar for the GENERATE and IMORT action, where a user can specify --subject-alt-names for the Master certificate being created.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "15934", "fixedVersions": [], "id": "15934", "issueType": "Story", "key": "SERVER-2295", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a7211b6d0cb452810793cd6", "resolution": "Done", "resolutionDate": "2018-08-30T09:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support SANs for 'create' action", "timeSpent": "PT0S", "updated": "2018-08-30T09:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5eb561e89756e40b84a304db", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{code}\nJob for puppetserver.service failed because a configured resource limit was exceeded. See \"systemctl status puppetserver.service\" and \"journalctl -xe\" for details.\n{code}\n\nThe output of {{journalctl -xe}} and {{systemctl status puppetserver.service}} are probably the next steps in debugging this issue. There's also logs at {{/var/log/puppetlabs/puppetserver}} and in {{/var/log/messages}} that may be helpful.\n\n\u00a0", "created": "2018-08-23T10:18:00.000000"}, {"author": "5eb561e89756e40b84a304db", "body": "i think i need to configure ntp with my cent os before installing puppet master ,so i found that the problem is because of NTP server not configured ,anybody can please suggest how to configure Cent VM 7.5 with NTP on azure cli", "created": "2018-08-24T04:08:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Please reopen if you're still having issues.", "created": "2022-02-18T17:56:00.000000"}], "components": ["Puppet Server"], "created": "2018-08-23T00:59:00.000000", "creator": "5eb561e89756e40b84a304db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f9b0fb1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpdkv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33579732_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_110191020380"}], "description": "[root@pspuppetmaster ps8kadmin]# puppetserver.service\nbash: puppetserver.service: command not found\n[root@pspuppetmaster ps8kadmin]# service puppetserver enable\nThe service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.\n[root@pspuppetmaster ps8kadmin]# service puppetserver force-reload\nRedirecting to /bin/systemctl force-reload puppetserver.service\nJob for puppetserver.service invalid.\n[root@pspuppetmaster ps8kadmin]# service puppetserver stop\nRedirecting to /bin/systemctl stop puppetserver.service\n[root@pspuppetmaster ps8kadmin]# service puppetserver start\nRedirecting to /bin/systemctl start puppetserver.service\nJob for puppetserver.service failed because a configured resource limit was exceeded. See \"systemctl status puppetserver.service\" and \"journalctl -xe\" for details.\n[root@pspuppetmaster ps8kadmin]#", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15511", "fixedVersions": ["None"], "id": "15511", "issueType": "Bug", "key": "SERVER-2294", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5eb561e89756e40b84a304db", "resolution": "Cannot Reproduce", "resolutionDate": "2022-02-18T17:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "cannot start puppet server", "timeSpent": "PT0S", "updated": "2022-02-18T17:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please add release notes for this issue if needed, thanks!", "created": "2018-09-20T10:22:00.000000"}], "components": [], "created": "2018-08-22T13:25:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the CA name is configurable via a command line flag to {{generate}}\n* the master certname is configurable via a command line flag to {{generate}}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e86652c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpd9r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "There are general docs for the whole new CLI tool"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_486365540_*|*_1_*:*_1_*:*_13521_*|*_10007_*:*_1_*:*_114958223_*|*_3_*:*_1_*:*_76045016_*|*_5_*:*_1_*:*_3471063538_*|*_6_*:*_1_*:*_0"}], "description": "The PE installer expects the CA name and master cert name it generates to be configurable based on settings pulled together by the installer modules. It does not permanently alter config files to contain these settings, which is the only way the gem currently has of configuring them. We should add these options as command line flags to make this workflow easier.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "16250", "fixedVersions": [], "id": "16250", "issueType": "New Feature", "key": "SERVER-2293", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-10-09T13:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The CA name and master cert name should be configurable via command line flags", "timeSpent": "PT0S", "updated": "2018-10-09T13:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] do you think this is something we need before we can make the updates to the PE installer? Are custom CSR attributes something that is used commonly/by default in PE?", "created": "2018-08-22T12:24:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Is this just for the CA node or for agents too?  The most common attribute would probably be pp_role and I have seen people use that on PE infra nodes as well as agents.  ", "created": "2018-08-22T16:44:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The CSR attribute file is currently respected for the host cert on the CA node, as well as for agent nodes (whose CSRs are generated by Ruby code in Puppet). This ticket specifically applies to the puppet master certificate on CA nodes, since that is the only one generated by the gem (e.g. what we currently do using `puppet cert generate` in the installer, see PE-24739).", "created": "2018-08-22T18:40:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "If we're talking about the agent certificate for the master node then I would expect it to have the CSR attributes respected.  I kind of expected that the agent would generate the certificate not clojure code.   ", "created": "2018-08-23T15:40:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So currently, in the open source world, the Clojure code generates the agent cert for the master node, as well as the CA, as part of server startup, as you can see in the file linked in the description. We are moving that into the new gem, so make CA generation explicit. It's not hard to add the CSR attribute processing to that, just trying to figure out what order to do the work in.\n\nThe issue with having the agent code do it, is then you'd need a running CA server to actually sign the thing, which I don't think we have at that point of a PE install.", "created": "2018-08-23T16:32:00.000000"}], "components": [], "created": "2018-08-21T16:30:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the master cert is generated with any configured CSR attributes"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b8cf8a1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1qn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_41856_*|*_10007_*:*_1_*:*_590948028_*|*_3_*:*_1_*:*_252676755_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_525156232"}], "description": "Currently puppet has a setting for custom CSR attributes that are added to the master cert when it is generated. The new CLI tool needs to respect this setting as it is generating the master's cert.\n\nhttps://github.com/puppetlabs/puppetserver/blob/875516528899c0f220f5063acfa116f87bdeef24/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L617-L631", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "15510", "fixedVersions": [], "id": "15510", "issueType": "New Feature", "key": "SERVER-2292", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-09-06T12:43:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The generated master cert needs to support custom CSR attributes", "timeSpent": "PT0S", "updated": "2018-09-06T12:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [{"author": "5a7211b6d0cb452810793cd6", "body": "Current error after this PR if disabled (allow-authorization-extensions: false)\n{code:java} ~/Development/puppetserver-ca-cli (SERVER-2276) $\ud83d\udc30\u00a0 be ./exe/puppetserver-ca sign --all\nError:\n\u00a0 \u00a0 When attempting to sign certificate request 'smiffanyjr2', received\n\u00a0 \u00a0 \u00a0 code: 409\n\u00a0 \u00a0 \u00a0 body: CSR 'smiffanyjr2' contains an authorization extension, which is disallowed. To allow authorization extensions, set allow-authorization-extensions to true in your puppetserver.conf file, restart the puppetserver, and try signing this certificate again.\n\n{code}\nCurrent error after this PR if enabled (allow-authorization-extensions: true)\n{code:java}\u00a0 ~/Development/puppetserver-ca-cli (SERVER-2276) $\ud83d\udc30\u00a0 be ./exe/puppetserver-ca sign --all\nSuccessfully signed certificate request for smiffanyjr2{code}", "created": "2018-08-22T16:19:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:5a7211b6d0cb452810793cd6] please add release notes for this issue if needed, thanks!", "created": "2018-09-05T07:23:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:5a7211b6d0cb452810793cd6] please add release notes for this issue if needed, thanks!", "created": "2018-09-05T07:24:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] please provide release notes for this issue if needed, thanks!", "created": "2018-09-12T07:30:00.000000"}], "components": ["DOCS"], "created": "2018-08-17T15:13:00.000000", "creator": "5a7211b6d0cb452810793cd6", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppetserver has a {{allow-authorization-extensions}} setting that allows the API to sign CSRs with auth extensions.\n * The setting is false by default"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12fb1cdd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1r3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now has a setting called `allow-authorization-extensions` in the `certificate-authority` section of its config for enabling signing certs with authorization extensions. It is false by default for security reasons, but if users know they need to do this, they should enable the setting here. `puppet cert sign` used to allow this via a flag, but `puppetserver ca sign` requires it to be configued in the config file."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_577570802_*|*_1_*:*_1_*:*_354607448_*|*_10007_*:*_1_*:*_88727327_*|*_3_*:*_1_*:*_78100929_*|*_5_*:*_1_*:*_1742350896_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3953860"}], "description": "Currently we completely disallow signing certificate requests with authorization extensions from Puppetserver's {{certificate_status}} endpoint. However, with the removal of the {{puppet cert}} command, users need a way to allow this. Because it could still be risky (see comments on SERVER-2268), we should introduce a setting that users can enable in puppetserver's config if they need this behavior, similar to the Ruby CA's {{allow-authorization-extensions}}.\n\n\u00a0\n\nUseful code:\u00a0\n\nTake a look at how we did:\u00a0 https://puppet.atlassian.net/browse/SERVER-2278\u00a0\u00a0We'll want to do something similar.\n\n[https://github.com/puppetlabs/puppetserver/blob/2e271f7c6768cf60f56d396f74b28ce62e3bd677/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1054]", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "15157", "fixedVersions": ["SERVER 5.3.6", "SERVER 6.0.0"], "id": "15157", "issueType": "New Feature", "key": "SERVER-2290", "labels": [], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-19T13:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": " Add a setting to enable signing CSRs with authorization extensions", "timeSpent": "PT0S", "updated": "2018-10-22T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "fyi, [~accountid:557058:45fa3568-deb5-4da5-b894-a1ec07f1c138].  we might want to check to see if there is an acceptance test against {{/v1/simple}}, ensure it is one that gets run against any testing we setup for ipv6", "created": "2018-08-23T10:02:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:79a6b455-622c-4839-88ba-d3ee205f72b0] will this get CS triaged?  that will help us prioritize/triage on our end...", "created": "2018-08-23T10:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Was this encountered and/or fixed as part of the ipv6 work?", "created": "2019-09-27T14:43:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:0b16fa29-44bc-4e11-82b0-a346967ad808], [~accountid:557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116] do either of you know if this was checked during the recent ipv6 work?\n\n\u00a0", "created": "2019-09-27T15:05:00.000000"}, {"author": "557058:0b16fa29-44bc-4e11-82b0-a346967ad808", "body": "I don't think the status endpoints are checked directly as part of the standard smoke tests, but I do see some checks in the HA helpers that might be exercising that. Unfortunately, I didn't get a successful HA test on the IPv6 environment. So... I am unsure if this bug is still manifesting.", "created": "2019-09-27T16:07:00.000000"}, {"author": "557058:0b16fa29-44bc-4e11-82b0-a346967ad808", "body": "Re [~accountid:557058:79a6b455-622c-4839-88ba-d3ee205f72b0]'s request about configuring java_args: that should be unnecessary. Linux sockets with IPv6 adress bindings should listen to both IPv4 and IPv6 addresses on the port they are bound to by default, unless a special IPv6 only flag is set in the kernel. Java should have the same behavior by default, as well.", "created": "2019-09-27T16:17:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] What is the status of IPv6 support generally? Do we think this is an issue that needs to be addressed and tested against?", "created": "2020-12-08T16:59:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "Yay triage! [~accountid:557058:79a6b455-622c-4839-88ba-d3ee205f72b0]\u00a0thanks again for this effort when we were attracting Federal customers.\u00a0 For now, we should close this and any other IPv6 tickets as super low priority unless they are actively impeding a customer. FYI [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]", "created": "2020-12-08T18:40:00.000000"}], "components": [], "created": "2018-08-16T07:32:00.000000", "creator": "557058:79a6b455-622c-4839-88ba-d3ee205f72b0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@598e10aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp95b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_73051697436_*|*_6_*:*_1_*:*_0"}], "description": "relates to\u00a0https://puppet.atlassian.net/browse/SERVER-248\n\n\u00a0\n\nDeployed Puppet server in Centos7 with active ipv6 and the servcies\u00a0on 8140 bound to tcp6.\u00a0\nintroduced the fix from\u00a0https://puppet.atlassian.net/browse/SERVER-248,\n\nthe fix from server-248 when run post deploy updated the config and restarts the service but left the helthcheck\u00a0endpoint indeterminate\u00a0\nwe fixed it with a reboot\n\nto reproduce:\n\ndeploy compile master on centos 7 with ipv6, apply hiera data from server-248 and run puppet agent, puppet will update configuration but leave /v1/simple endpoint unresponsive\n\n\u00a0\n\nCan we add the data to the default java args so has to ensure the service is always attached to the tcp4.\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15701", "fixedVersions": [], "id": "15701", "issueType": "Bug", "key": "SERVER-2289", "labels": ["post_pup_6"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:79a6b455-622c-4839-88ba-d3ee205f72b0", "resolution": "Won't Fix", "resolutionDate": "2020-12-08T18:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The pe_puppetserver service when run with ipv6 and ipv4 binds tcp to tcp6, and does not serve the healthcheck endpoint correctly", "timeSpent": "PT0S", "updated": "2020-12-08T18:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [], "components": [], "created": "2018-08-15T14:31:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72ae5adc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp8fr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_236981630_*|*_1_*:*_1_*:*_8838_*|*_10007_*:*_1_*:*_254100040_*|*_3_*:*_1_*:*_174431883_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_612537644"}], "description": "We should have the {{import}} command create and sign a certificate for the master after setting up the CA.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15698", "fixedVersions": [], "id": "15698", "issueType": "Sub-task", "key": "SERVER-2288", "labels": [], "originalEstimate": "PT0S", "parent": "15696", "parentSummary": "Update setup actions to also generate the master cert", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-08-30T09:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Generate a master certificate as part of `puppetserver ca import`", "timeSpent": "PT0S", "updated": "2018-08-30T09:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This also has a PR associated with it to update the code that generates the auth rules for PE, to add this new rule.", "created": "2018-09-06T12:44:00.000000"}], "components": [], "created": "2018-08-15T13:02:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@797a4844"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp8br:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19835_*|*_10007_*:*_1_*:*_623959381_*|*_3_*:*_1_*:*_1185305_*|*_5_*:*_1_*:*_1110246153_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1290523455"}], "description": "We currently do not allow any connection to the {{certificate_status(es)}} endpoint by default. However, because the CA CLI gem makes heavy use of it, we need to enable the gem to authenticate itself for that endpoint. We should add a custom extension of some kind of the master certificate created by the {{generate}} command that can be checked by {{auth.conf}} to allow the master cert to use the endpoint, but no other certs.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17407", "fixedVersions": ["SERVER 5.3.6", "SERVER 6.0.0"], "id": "17407", "issueType": "Sub-task", "key": "SERVER-2287", "labels": [], "originalEstimate": "PT0S", "parent": "15696", "parentSummary": "Update setup actions to also generate the master cert", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-19T13:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The master cert created by `generate` should have custom extensions for the `cert_status` endpoint auth", "timeSpent": "PT0S", "updated": "2022-07-11T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-08-15T12:58:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27bb7384"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp8bb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_834280988_*|*_1_*:*_1_*:*_242325_*|*_10007_*:*_1_*:*_10632335_*|*_3_*:*_1_*:*_347592978_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_90873408"}], "description": "We should have the generate command create and sign a certificate for the master after setting up the CA.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15933", "fixedVersions": [], "id": "15933", "issueType": "Sub-task", "key": "SERVER-2286", "labels": [], "originalEstimate": "PT0S", "parent": "15696", "parentSummary": "Update setup actions to also generate the master cert", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-08-30T09:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Generate a master certificate as part of `puppetserver ca generate`", "timeSpent": "PT0S", "updated": "2018-08-30T09:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-08-15T12:57:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the {{generate}} action creates a host cert for the puppet master\n* the {{import}} command also creates a host cert for the puppet master\n* the host cert created has custom extensions that can be used to identify it as authorized to execute the CA CLI commands"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e993c99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1qv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_13008_*|*_10007_*:*_1_*:*_16037491_*|*_3_*:*_1_*:*_955613522_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_944339327"}], "description": "Currently in addition to creating the CA files, puppetserver creates a certificate for the master as part of its bootstrapping process. We have decided it would be better to move this to the gem along with the rest of the CA generation process, whether that is the default {{generate}} or importing pre-generated certs. This allows us to more easily control the alt names and extensions that get added to Puppet master certs, which is important because we only want requests made by this CLI tool to be able to come from that master cert.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "15696", "fixedVersions": [], "id": "15696", "issueType": "Improvement", "key": "SERVER-2285", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-09-06T17:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update setup actions to also generate the master cert", "timeSpent": "PT0S", "updated": "2018-09-06T17:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "wrt to the docs:\n\nHere is the tk-auth docs on how to whitelist the master's cert:\n\n[https://github.com/puppetlabs/trapperkeeper-authorization/blob/master/doc/authorization-config.md#allow]\n\n\u00a0\n\nThe tk-auth config update will look something like (example only includes certificate_status, will need to be done for certificate_statuses as well):\n{code:java}\n{\n    match-request: {\n        path: \"/puppet-ca/v1/certificate_status/\"\n        type: path\n        method: [\"get\", \"put\", \"delete\"]\n    }\n    allow: <your-masters-certname>\n    sort-order: 500\n    name: \"puppetlabs certificate status\"\n}{code}", "created": "2018-08-15T12:03:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "release note added", "created": "2018-08-20T21:33:00.000000"}], "components": [], "created": "2018-08-14T15:40:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* {{puppetserver ca}} CLI can be use in puppetserver 5.3.5"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25f2becc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp6w7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We have added a new command line tool for interacting with the Puppet CA, under the {{puppetserver ca}} command. This can be used to generate an intermediate CA for puppetserver (note that caveats about needing to manually copy these certs to agents still apply in the Puppet 5 series), generate, sign, revoke, clean, and list certs. All of these actions are executed by making requests to Puppet Server's CA API, in particular the {{certificate_status}} and {{certificate_statuses}} endpoint. Note that currently requests to these endpoint are denied by the blanket rule in {{auth.conf}}, so if you would like to try out the new tool, you should first add two rules to {{auth.conf}}, whitelisting your master's certname to talk to those two endpoints.\n\nThe {{puppet cert}} command and other assorted CA-related puppet subcommands are going to be removed in Puppet 6, so we encourage you to try out this tool now and give us feedback on any bugs or functionality gaps, so we can fix them before removing the tools is it replacing."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_458755252_*|*_1_*:*_1_*:*_50249_*|*_10007_*:*_1_*:*_63658040_*|*_3_*:*_1_*:*_3639622_*|*_5_*:*_1_*:*_159920893_*|*_6_*:*_1_*:*_0"}], "description": "In Puppet 6 we are removing {{puppet cert}} and the other CA related puppet faces. They are getting depricated the next Platform 5 release. In order to give users an alternative to try out, we should backport support for the new {{puppetserver ca}} CLI and start shipping that gem in this same release. This also entails backporting a few packaging changes to support the shim for the gem.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14826", "fixedVersions": ["SERVER 5.3.5"], "id": "14826", "issueType": "New Feature", "key": "SERVER-2284", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-08-22T14:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Backport new CA CLI gem to 5.3.x", "timeSpent": "PT0S", "updated": "2018-08-22T14:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3532fc49-9a37-49ef-bddf-417bf6bba5fe", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "We identified a bug when we have to serve plugin files from Puppet's file serving (rather than the {{static_file_content}} endpoint). The plugin mount doesn't use modules names, so the URI will be wrong.", "created": "2018-09-12T18:10:00.000000"}], "components": [], "created": "2018-08-14T10:33:00.000000", "creator": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e935ced"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpg87:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now serves tasks that include extra files for those tasks."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_263220697_*|*_1_*:*_1_*:*_1811892876_*|*_10007_*:*_1_*:*_68046500_*|*_3_*:*_1_*:*_622654878_*|*_10009_*:*_1_*:*_258815586_*|*_5_*:*_1_*:*_96667127_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_119703"}], "description": "The task-details response from puppet-server should include all files listed in {{files}} or {{implementations:files}} from a modules metadata.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15932", "fixedVersions": ["SERVER 6.0.0"], "id": "15932", "issueType": "New Feature", "key": "SERVER-2283", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "resolution": "Fixed", "resolutionDate": "2018-09-18T10:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Include file requirements from task metadata in taskinfo", "timeSpent": "PT0S", "updated": "2018-09-19T13:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-08-14T08:14:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f8a588c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9057"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1q7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2350_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_788741315"}], "description": "(Initial planned release date: 2018-08-21)\n\n* Update version number in source to point to next snapshot.\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update Winston and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2018-08-22T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.6 Release - 2018-08-21", "estimate": "PT0S", "externalId": "15509", "fixedVersions": [], "id": "15509", "issueType": "Task", "key": "SERVER-2282", "labels": [], "originalEstimate": "PT0S", "parent": "25304", "parentSummary": "Puppet Platform 5.5.6 Release - 2018-08-21", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2018-08-23T11:20:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.5)", "timeSpent": "PT0S", "updated": "2018-08-23T11:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-08-14T08:14:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f3e916f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9057"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1pz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2510_*|*_3_*:*_1_*:*_399418_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_614537601"}], "description": "(Initial planned release date: 2018-08-21)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Bump and Tag the candidate SHA once passing\n  * Run the \"Lein Release\" job for the release branch. This job will make the\n     appropriate version bump commits and tag the release SHA.\n* Ensure tagged release version is built, tested and artifacts exist at\n  builds.delivery.puppetlabs.net\n  * This may entail manually promoting into PE again.\n", "duedate": "2018-08-17T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.6 Release - 2018-08-21", "estimate": "PT0S", "externalId": "14825", "fixedVersions": [], "id": "14825", "issueType": "Task", "key": "SERVER-2281", "labels": [], "originalEstimate": "PT0S", "parent": "25304", "parentSummary": "Puppet Platform 5.5.6 Release - 2018-08-21", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2018-08-21T11:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.5)", "timeSpent": "PT0S", "updated": "2018-08-21T11:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-08-14T08:14:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c05790c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9057"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1pr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2360_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_542178005"}], "description": "(Initial planned release date: 2018-08-21)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2018-08-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.6 Release - 2018-08-21", "estimate": "PT0S", "externalId": "17405", "fixedVersions": [], "id": "17405", "issueType": "Task", "key": "SERVER-2280", "labels": [], "originalEstimate": "PT0S", "parent": "25304", "parentSummary": "Puppet Platform 5.5.6 Release - 2018-08-21", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2018-08-20T14:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.5)", "timeSpent": "PT0S", "updated": "2018-08-20T14:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] has this happened at this point?", "created": "2018-08-17T08:23:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've done the ticket resolution, everything looks as expected.", "created": "2018-08-17T09:16:00.000000"}], "components": [], "created": "2018-08-14T08:14:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7477bd94"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-9057"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp6gn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2390_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_262913732"}], "description": "(Initial planned release date: 2018-08-21)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Check project.clj and clj-parent for any library updates since the last\n    release (e.g. {{git diff 2.3.2 \u2013 project.clj}})\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2018-08-14T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.6 Release - 2018-08-21", "estimate": "PT0S", "externalId": "17167", "fixedVersions": [], "id": "17167", "issueType": "Task", "key": "SERVER-2279", "labels": [], "originalEstimate": "PT0S", "parent": "25304", "parentSummary": "Puppet Platform 5.5.6 Release - 2018-08-21", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2018-08-17T09:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.5)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] please provide release notes for this issue if needed, thanks!", "created": "2018-09-12T07:29:00.000000"}], "components": ["DOCS"], "created": "2018-08-13T11:38:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppetserver has a {{allow-subject-altnames}} setting that allows the API to sign CSRs with alt names.\n* The setting is false by default"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7862642d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1pj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now has a setting called `allow-subject-alt-names` in the `certificate-authority` section of its config for enabling signing certs with subject alternative names. It is false by default for security reasons, but if users know they need to do this, they should enable the setting here. `puppet cert sign` used to allow this via a flag, but `puppetserver ca sign` requires it to be configured in the config file. "}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_834439463_*|*_1_*:*_1_*:*_17001_*|*_10007_*:*_1_*:*_267926834_*|*_3_*:*_1_*:*_183876060_*|*_5_*:*_1_*:*_1742354656_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_175151956"}], "description": "Currently we completely disallow signing certificate requests with subject alternative names from Puppetserver's {{certificate_status}} endpoint. However, with the removal of the {{puppet cert}} command, users need a way to allow this. Because it could still be risky (see comments on SERVER-2268), we should introduce a setting that users can enable in puppetserver's config if they need this behavior, similar to the Ruby CA's {{allow-dns-alt-names}}. Because we intend to also support IP alt names, the name should not refer specifically to DNS.", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "17403", "fixedVersions": ["SERVER 5.3.6", "SERVER 6.0.0"], "id": "17403", "issueType": "New Feature", "key": "SERVER-2278", "labels": [], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-19T13:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add a setting to enable signing CSRs with subject alternative names", "timeSpent": "PT0S", "updated": "2018-10-22T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-08-10T11:18:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e5397ec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp4dj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15100_*|*_3_*:*_1_*:*_24072_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_2356021949"}], "description": "We should edit the error and warning output to follow the guidelines here https://github.com/puppetlabs/puppet-nogui/blob/master/patterns/command_taxonomy.md#output\n\nThis should also include making sure that the commands are in alphabetical order in the help output.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15931", "fixedVersions": [], "id": "15931", "issueType": "Sub-task", "key": "SERVER-2277", "labels": [], "originalEstimate": "PT0S", "parent": "17166", "parentSummary": "Refactor utilities that are shared between subcommands in puppetserver-ca-cli", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Duplicate", "resolutionDate": "2018-09-06T17:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update help and errors to follow Puppet style guide", "timeSpent": "PT0S", "updated": "2018-09-06T17:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [], "components": [], "created": "2018-08-10T11:17:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5916bb54"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp4db:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_601295308_*|*_1_*:*_1_*:*_11763_*|*_10007_*:*_1_*:*_147102092_*|*_3_*:*_1_*:*_107951922_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_865509493"}], "description": "Some actions need to share requests to the CA with other actions. We should make an object to wrap these requests and put a nice API on them, so they're easy to use in the CLI actions.\n\nThis ticket does not currently cover moving the CA generation code, though that should probably eventually go into this class, so name appropriately.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15693", "fixedVersions": [], "id": "15693", "issueType": "Sub-task", "key": "SERVER-2276", "labels": [], "originalEstimate": "PT0S", "parent": "17166", "parentSummary": "Refactor utilities that are shared between subcommands in puppetserver-ca-cli", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-08-30T09:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make a CA object to wrap HTTP calls", "timeSpent": "PT0S", "updated": "2018-08-30T09:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-08-10T11:10:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10c436ff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp4cn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22575_*|*_3_*:*_1_*:*_262921777_*|*_10009_*:*_1_*:*_1443710530_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_15502138"}], "description": "We should create an actual HTTP client object that initializes SSL state once and stores it, allowing multiple connections to be made from it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15156", "fixedVersions": [], "id": "15156", "issueType": "Sub-task", "key": "SERVER-2275", "labels": [], "originalEstimate": "PT0S", "parent": "17166", "parentSummary": "Refactor utilities that are shared between subcommands in puppetserver-ca-cli", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-08-30T09:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make an actual HTTP client", "timeSpent": "PT0S", "updated": "2018-08-30T09:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd", "attachments": [], "comments": [], "components": [], "created": "2018-08-10T11:08:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b6c7bc6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp4cf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_868262176_*|*_1_*:*_1_*:*_19467_*|*_10007_*:*_1_*:*_409761746_*|*_3_*:*_1_*:*_163145059_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_281087668"}], "description": "All of the config related files, actions, and utils should be in their own respective directories, and the spec files should be moved around to match that structure.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14823", "fixedVersions": [], "id": "14823", "issueType": "Sub-task", "key": "SERVER-2274", "labels": [], "originalEstimate": "PT0S", "parent": "17166", "parentSummary": "Refactor utilities that are shared between subcommands in puppetserver-ca-cli", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-08-30T09:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reorganize utils, configs, and actions into separate dirs under `ca`", "timeSpent": "PT0S", "updated": "2018-08-30T09:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [], "components": [], "created": "2018-08-10T11:06:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39427fb0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp4d3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1112373010_*|*_1_*:*_1_*:*_164694_*|*_10007_*:*_1_*:*_237163310_*|*_3_*:*_1_*:*_15828502_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_356967728"}], "description": "Instead of using the {{fetch}} method repeatedly to supply defaults for each of the settings, we should just make a defaults hash and merge it with the results of loading the settings file. https://github.com/puppetlabs/puppetserver-ca-cli/blob/master/lib/puppetserver/ca/puppet_config.rb", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17401", "fixedVersions": [], "id": "17401", "issueType": "Sub-task", "key": "SERVER-2273", "labels": [], "originalEstimate": "PT0S", "parent": "17166", "parentSummary": "Refactor utilities that are shared between subcommands in puppetserver-ca-cli", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-08-30T09:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update `puppet_config` to use a defaults hash", "timeSpent": "PT0S", "updated": "2018-08-30T09:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [], "components": [], "created": "2018-08-10T10:52:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5562afd7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzp4cv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1010929_*|*_10007_*:*_1_*:*_90002790_*|*_3_*:*_1_*:*_75342962_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_281070917"}], "description": "Currently some of the actions have a lot of action-specific tests in the {{cli_spec}} file. We should break out the tests for validation and action-specific behavior into their own spec files, leaving only the high level tests for invoking the action in {{cli_spec}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16249", "fixedVersions": [], "id": "16249", "issueType": "Sub-task", "key": "SERVER-2272", "labels": [], "originalEstimate": "PT0S", "parent": "17166", "parentSummary": "Refactor utilities that are shared between subcommands in puppetserver-ca-cli", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-08-15T15:09:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Refactor action specs out of cli_spec", "timeSpent": "PT0S", "updated": "2018-08-15T15:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-08-03T16:40:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* {{puppetserver ca revoke}} can revoke certificates identified by their serial numbers"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6420084a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:f"}], "description": "When {{allow_duplicate_certs}} is true, it is possible for puppetserver to have more than one cert associated with a certname. This means that in order to effectively revoke a certificate when duplicate certs are allowed, the user needs to be able to specify the cert to revoke via its serial number, rather than its certname. Once this capability has been added to the API (see SERVER-2270), we need to update the {{puppetserver ca revoke}} command to also allow specifying certs by serial numbers.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "15930", "fixedVersions": [], "id": "15930", "issueType": "New Feature", "key": "SERVER-2271", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update the `puppetserver ca revoke` command to accept serial numbers", "timeSpent": "PT0S", "updated": "2022-03-09T09:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Implementation wise, before I forget, the server takes the certname, tries to load the certificate into memory, extracts the cert's serial number, and then adds the serial number to the CRL. Here: https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1260-L1263\n\nThe cert command currently requires the serial number passed as a hexadecimal number prepended with \"0x\" (ie, common literal for hex).\n\nI'm not sure if we should try to match if the uri includes \"0x\" followed by a valid hex digit we simply add that to the CRL. Should we first check to see if there's an existing cert with that name (it is also a valid certname afterall)?\n\n{{PUT puppet-ca/v1/certificate_status/0xBADBEEF?serial=true}}\n\nShould we add a parameter that says the type of identifier? eg:\n\n{{PUT puppet-ca/v1/certificate_status/0xBADBEEF?serial=true}}\n\nOr should we update the request body to something like:\n\n{code}\n{\n    \"desired_state\": \"revoked\",  // required\n    // one of\n    {\"serial\": \"BADBEEF\"}\n    {\"certname\": \"foo.example.com\"}\n}\n{code}\n\nActually it would be really nice to add a PUT handler to the certificate_status endpoint a la:\n{{PUT /puppet-ca/v1/certificate_statuses}}\nwith a body of:\n{code}\n{\n    \"nodes\": [\n        { \"serial\": \"BADBEEF\", \"desired_state\": \"revoked\"},\n        { \"certname\": \"foo.example.com\", \"desired_state\": \"signed\"}\n    ]\n}\n{code}\n\nBut now I think I'm just in wishful thinking territory...", "created": "2018-08-03T18:01:00.000000"}], "components": [], "created": "2018-08-03T16:37:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Certificates be revoked by serial number via the puppetserver API"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c0aed43"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2342"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rz:ci"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Aug/18"}], "description": "When {{allow_duplicate_certs}} is true, it is possible for puppetserver to have more than one cert associated with a certname. This means that in order to effectively revoke a certificate when duplicate certs are allowed, the user needs to be able to specify the cert to revoke via its serial number, rather than its certname. The {{puppet cert revoke}} command had this capability, but the API does not. We need to add the ability to revoke certs by their serial numbers via the API.", "epicLinkSummary": "CA API Improvements", "estimate": "PT0S", "externalId": "15690", "fixedVersions": [], "id": "15690", "issueType": "New Feature", "key": "SERVER-2270", "labels": [], "originalEstimate": "PT0S", "parent": "15164", "parentSummary": "CA API Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow revoking certificates by their serial numbers via the puppetserver API", "timeSpent": "PT0S", "updated": "2022-03-09T09:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Puppet's current default SANs for the CA certificate use Facter's values for {{fqdn}} and {{domain}}. Going to look into pulling in Facter as part of this, at [~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8]'s recommendation, since those values are notoriously tricky to resolve in a platform-agnostic way.", "created": "2018-08-09T12:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Turns out the CA certificates don't need and SANs. Closing this.", "created": "2018-08-14T17:40:00.000000"}], "components": [], "created": "2018-08-03T10:50:00.000000", "creator": "5a7211b6d0cb452810793cd6", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the {{puppetserver ca generate}} command adds the same default SANs as the current bootstrapping code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@507eeb5c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl213:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_502934_*|*_10007_*:*_1_*:*_371720197_*|*_3_*:*_1_*:*_82221663_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_520557250"}], "description": "When we're creating CA certs, we should keep backwards compatibility with how puppet currently puts in default SANs.\n\nHere are the current values:\u00a0[https://github.com/puppetlabs/puppet/blob/master/lib/puppet/ssl/host.rb#L179]\nAnd how we add them to the cert:\n[https://github.com/puppetlabs/puppet/blob/master/lib/puppet/ssl/certificate_request.rb#L279]", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "15508", "fixedVersions": ["SERVER 6.0.0"], "id": "15508", "issueType": "Improvement", "key": "SERVER-2269", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a7211b6d0cb452810793cd6", "resolution": "Won't Do", "resolutionDate": "2018-08-14T17:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add dns_alt_names when creating certificates", "timeSpent": "PT0S", "updated": "2018-08-14T17:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:71582ab7-ed41-48f8-a53e-545356d7dee4] would you mind weighing on the security concerns in this redmine ticket: https://projects.puppetlabs.com/issues/13406? If it seems like the fix for the [original issue|https://puppet.com/blog/important-security-announcement-altnames-vulnerability] was overly aggressive, we'd really like to consider removing or reducing the restrictions on signing via the API.", "created": "2018-08-03T09:52:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "Agree that the current approach of completely disallowing SANs when signing via an API seems a bit heavy handed. However if it is to be allowed then the CA must be in a position to verify/validate that all of the identities requested in the SANs actually belong to the requesting entity. And that may not be easily doable when signing requests in an automated manner. Having said that, I don't believe we currently even validate the subject CN against the actual DNS name of the node. So an argument can be made towards also allowing SANs when signing requests via API. \n\nI am bit hesitant to enable something that potentially increases the risk by making it easier to sneak/steal someone else's identity while keeping the subject CN look innocuous. If not already, as a compromise it might be reasonable to introduce an additional config option to allow SANs in requests to be signed over an API (besides the master config of allowing API based or automated signing). Documentation and/or UI should provide warnings about CA's inability to validate the SAN contents and even subject name when enabling these settings.\nOther possibility is to try to check that the neither the subject nor any of the SAN entries belong to master's DNS(s) - while whoever can masquerade some other node it cannot be master thereby reducing risks of leveraging puppet as an attack vector. Though not sure if it can be accomplished to exclude master's certificate request from this restriction.\nAlso relevant logs registering certificate issuance should list both the subject and all SAN contents for auditing purposes. ", "created": "2018-08-03T11:52:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The work to enable this will probably mostly be in Puppet Server, see SERVER-2278.", "created": "2018-08-15T13:04:00.000000"}, {"author": "5a7211b6d0cb452810793cd6", "body": "Note:\u00a0 This is the current message we get when we try to sign certs that have dns names:\n{code:java}Error:\n\u00a0 \u00a0 When attempting to sign certificate request 'snoop' received:\n\u00a0 \u00a0 \u00a0 code: 409\n\u00a0 \u00a0 \u00a0 body: CSR 'snoop' contains subject alternative names (DNS:snoop, DNS:ulla.net), which are disallowed. Use `puppet cert --allow-dns-alt-names sign snoop` to sign this request.\n{code}", "created": "2018-08-17T12:57:00.000000"}, {"author": "5a7211b6d0cb452810793cd6", "body": "Updated error messaging with this commit:\u00a0https://github.com/puppetlabs/puppetserver-ca-cli/pull/23/commits/85f763e322b643425611c1c917f5758e1e528c5f", "created": "2018-08-21T18:47:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "If I chose to disable automatically allowing all altnames in my puppetserver config, it's likely there are some certs I will still need to allow with altnames. How would I get those through?", "created": "2018-09-14T12:02:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We are discussing adding a flag to the CLI too, that would be required in addition to the setting being enabled (if either the CA's admin disabled this ability entirely or the person wanting to sign didn't request SANs, the signing would fail). This is only questionable because it constitutes an API break for the new CLI, but that might still be reasonable because the tool is so new. \n\nThat being said, still seems bad for users to do this after 6.0, and I don't think we have any runway left to get it in now. Personally I'm still okay with our existing security model that we settled on for this per Jayant's comment above. The per-request flag kind of just seems like boilerplate. If you really want to be rejecting _only some_ CSRs with alt names, then presumably you're inspecting them when you get them and making the decision at that point to not sign them.", "created": "2018-09-14T12:17:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "That's reverse of what we currently have, if I'm following you. It's not that you want to reject only some CSRs, I think it's that you only want to accept some CSRs that have altnames that you want to allow.", "created": "2018-09-14T13:10:00.000000"}], "components": [], "created": "2018-08-03T09:51:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* {{puppetserver ca sign}} can sign certs with subject alternative names"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50149e16"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1rj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_687590904_*|*_1_*:*_1_*:*_106801_*|*_10007_*:*_1_*:*_414613076_*|*_3_*:*_1_*:*_1018985_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1228382593_*|*_10005_*:*_1_*:*_9182"}], "description": "Currently, the {{puppetserver ca sign}} command uses Puppetserver's API to sign certificates. The API is currently not allowed to sign certificates with subject alternative names, due to an [old bug|https://projects.puppetlabs.com/issues/13406]. However, we need this functionality in the new CLI. So we should revisit the security concerns around allowing this functionality via the API, and then either enable, or add Ruby code to sign certificates with SANs.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "16248", "fixedVersions": [], "id": "16248", "issueType": "Improvement", "key": "SERVER-2268", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-08-30T09:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable `puppetserver ca sign` to sign certs with SANs", "timeSpent": "PT0S", "updated": "2018-09-19T09:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [{"author": "5a7211b6d0cb452810793cd6", "body": "Looks like this ticket will have 2 parts:\n\n1- Update the get-certificate-status to return DNS and IP SANs instead of just DNS SANs.\n\n2 -Update the Master certificate so it can read (and allow) both IP and DNS SANs from the configs and add both kinds of SubjectAltNames to the master cert.\u00a0\u00a0", "created": "2018-09-19T15:47:00.000000"}], "components": [], "created": "2018-08-02T12:15:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppetserver can sign CSRs with IP subject alternative names"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@237f8a02"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl3vb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Puppet Server CA can now sign certificates with IP alt names in addition to DNS alt names (if signing certs with alt names is enabled)."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_86265907_*|*_1_*:*_1_*:*_357239_*|*_10007_*:*_1_*:*_410978035_*|*_3_*:*_1_*:*_185820034_*|*_5_*:*_1_*:*_448692479_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4143689482"}], "description": "In PUP-8942, we updated the Ruby CA code to allow signing of certificates with IP subject alternative names in addition to DNS names. We should make analogous changes to the Clojure CA code. See https://github.com/puppetlabs/puppetserver/blob/6.0.0/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L669.\n\nCurrently this code is only accessible during bootstrapping, because we currently disallow signing certificates with SANs via the API. However, the requirement that we allow users to use IP alternative names will probably also be relevant for the {{puppetserver ca setup}} command that will replace Pupeptserver's bootstrapping code (see SERVER-2255) and also for however we implement allows SANs for the {{puppetserver ca sign}} command.", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "16768", "fixedVersions": ["SERVER 6.0.1"], "id": "16768", "issueType": "New Feature", "key": "SERVER-2267", "labels": [], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-27T09:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver should allow signing certificates with IP subject alternative names", "timeSpent": "PT0S", "updated": "2018-10-02T13:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c1006ee1b5a007029340e", "body": "I solved it!\u00a0:)\n\nTo get the _openjdk-8-jre-headless_\u00a0package, I had to *enable the _universe_ repository* on my server.\n\nI achieved this by appending the following to _/etc/apt/sources.list_, then running an _apt-get_ update (_sudo apt-get update_):\n{quote}{{deb http://archive.ubuntu.com/ubuntu bionic universe}}\n{{deb http://archive.ubuntu.com/ubuntu bionic-security universe}}\n{{deb http://archive.ubuntu.com/ubuntu bionic-updates universe}}\n{quote}\nI hope this saves someone the couple of hours I wasted on it. (y)", "created": "2018-07-30T22:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330] do you know if your team did anything particular to our internal bionic images to make this easier? Is this kind of thing something that might affect all users and should be documented [here|https://puppet.com/docs/puppetserver/5.3/install_from_packages.html]?", "created": "2018-07-31T12:00:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], yes, we do [enable|https://github.com/puppetlabs/puppetlabs-packer/blob/master/manifests/modules/packer/manifests/vsphere/params.pp#L34] the universe repository on all of our internal Ubuntu images. \n\nAs this could potentially affect any user who doesn't have the universe repository enabled on their hosts, I think we should probably document it. ", "created": "2018-07-31T12:46:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Created DOCUMENT-893 for the documentation updates because this appears to affect more than just Server.", "created": "2018-08-01T09:23:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2018-07-30T17:16:00.000000", "creator": "623c1006ee1b5a007029340e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "_puppetserver_ installs on Ubuntu Server 18.04?"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38eac053"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzokwv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_86933980_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 5.5*\n *Puppet Server Version: 5.3*\n *OS Name/Version: Ubuntu Server 18.04 LTS*\n\nI cannot install the _puppetserver_ package on my clean _Ubuntu Server 18.04.1_ VM because it depends on\u00a0_openjdk-8-jre-headless_ which isn't available.\n\n\u00a0\n\nI followed the following instructions from [here|https://puppet.com/docs/puppet/5.5/puppet_platform.html] for adding the repositories to my newly installed Ubuntu 18.04.1 server.\n{quote}{{wget https://apt.puppetlabs.com/puppet5-release-bionic.deb}}\n\n{{sudo dpkg -i puppet5-release-bionic.deb}}\n\n{{sudo apt update}}\n{quote}\nWhich adds a sources file with this in it:\n{quote}# Puppet 5 bionic Repository\ndeb http://apt.puppetlabs.com bionic puppet5\n\n# Puppet 5 bionic Source Repository\n# The source repos are commented out by default because we\n# do not always make sources available for all packages or\n# for all platforms. If you want to access the source repos,\n# uncomment the following line.\n#deb-src http://apt.puppetlabs.com bionic puppet5\n{quote}\n...looks fine.\n\nThe _apt-get update_ then gives this:\n{quote}{{Ign:1 http://apt.puppetlabs.com bionic InRelease}}\n{{Get:2 http://apt.puppetlabs.com bionic Release [40.4 kB]}}\n{{Hit:3 http://archive.ubuntu.com/ubuntu bionic InRelease}}\n{{Get:4 http://apt.puppetlabs.com bionic Release.gpg [819 B] }}\n{{Get:5 http://archive.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]}}\n{{Get:6 http://apt.puppetlabs.com bionic/puppet5 all Packages [1,676 B]}}\n{{Get:7 http://apt.puppetlabs.com bionic/puppet5 amd64 Packages [6,007 B] }}\n{{Get:8 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]}}\n{quote}\n...looking ok, it got package lists from you.\n\nHowever, when I run *_sudo apt-get install puppetserver_* I get this message:\n{quote}Reading package lists... Done\nBuilding dependency tree \nReading state information... Done\nSome packages could not be installed. This may mean that you have\nrequested an impossible situation or if you are using the unstable\ndistribution that some required packages have not yet been created\nor been moved out of Incoming.\nThe following information may help to resolve the situation:\n\nThe following packages have unmet dependencies:\n *puppetserver : Depends: openjdk-8-jre-headless but it is not installable*\nE: Unable to correct problems, you have held broken packages.\n{quote}\nThe current version is *_openjdk-11-jre-headless_*, I tried installing that but, unsurprisingly, it didn't help.\n\nI can't see anything in your instructions regarding *openjdk-8-jre-headless*, I assume this _should_ work, or else you wouldn't just have the code to copy for installing on Ubuntu 18.04. Maybe I'm doing something wrong, but I'm fairly certain I followed the instructions correctly.\n\n*Desired Behavior:*\n\nIt installs _puppetserver_\n\n*Actual Behavior:*\n\nIt doesn't install\u00a0_puppetserver_\n\n\u00a0\n\n\u00a0\n\nI don't think I have any logs yet, I haven't managed to install it.", "environment": "Ubuntu Server 18.04.1 LTS", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16247", "fixedVersions": ["SERVER 5.3.5"], "id": "16247", "issueType": "Bug", "key": "SERVER-2266", "labels": ["docs"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c1006ee1b5a007029340e", "resolution": "Fixed", "resolutionDate": "2018-07-31T17:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Cannot install Puppet 5.5 on Ubuntu Server 18.04.1 LTS", "timeSpent": "PT0S", "updated": "2018-08-17T09:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Do we want this broken down into subtasks?", "created": "2018-08-09T12:08:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "General spec refactor - move tests that exercise *Action#run into their respective spec files, potentially anything that is best to use and action instance method like parse. However we should still have at least the shared examples that exercise the Cli integration\n\nMoving utils into puppetserver/ca/utils/ renaming puppetserver/ca/utils.rb to puppetserver/ca/utils/cli_utilities.rb\n\nMoving actions into puppetserver/ca/action/ and renaming\n\n\u00a0\n\nUpdating specs to follow same layout\n\n\u00a0\n\nMove puppetserver/setting/ttl_setting.rb's munge into puppet_config and removing that file.\n\n\u00a0", "created": "2018-08-10T10:52:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Update Errors and Warning to follow these recommendations more closely:\u00a0https://github.com/puppetlabs/puppet-nogui/blob/master/patterns/command_taxonomy.md#output", "created": "2018-08-10T11:08:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Alphabetical listing of actions\n\nUse common error logging in puppetserver/ca/utils", "created": "2018-08-10T11:15:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "remove puppetserver/ca/stub", "created": "2018-08-10T11:17:00.000000"}], "components": [], "created": "2018-07-27T11:55:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* less/no duplication of utility code in the {{puppetserver ca}} subcommands"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1fe9e819"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl21z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_64258_*|*_10007_*:*_1_*:*_3364_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3884254492"}], "description": "We've been adding subcommands to the {{puppetserver-ca-cli}} gem in parallel, and it has become obvious that a fair amount of code either getting copied around or implemented differently in multiple places. Once this initial batch of subcommands is complete, we should refactor these utility methods into some modules that can be shared across subcommands.\n * Please also refactor puppetserver/ca/puppet_config.rb for the defaults and overrides. Look into using a hash of defaults and merging them with the overrides.\n * Consider whether we want utils folder outside of ca folder or nested.\u00a0 Same for settings folder.\n * Group the actions within their own directory ({{puppetserver/ca/import_action.rb -> puppetserver/ca/action/import.rb}})\n* Create a CA object that can handle individual CA tasks (e.g. revoking a cert), which can be reused in different actions\n* Consider making an actual HTTP client that can cache the SSL store between calls", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "17166", "fixedVersions": [], "id": "17166", "issueType": "Improvement", "key": "SERVER-2265", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-09-10T10:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Refactor utilities that are shared between subcommands in puppetserver-ca-cli", "timeSpent": "PT0S", "updated": "2018-09-10T10:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-07-27T10:33:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* puppetserver integration tests run successfully without any implicit CA bootstrapping"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6bf921dc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzodfj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22574_*|*_3_*:*_2_*:*_681478529_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_3_*:*_3207714289"}], "description": "We need to make sure that our clojure integration tests no longer rely on the CA being generated as part of starting the server for any of the tests before we remove the CA bootstrapping code. Since we won't be able to use the CLI in this context, we probably need to be more aggressive about having fixtures in place for a CA for these tests.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15928", "fixedVersions": ["SERVER 6.0.0"], "id": "15928", "issueType": "Sub-task", "key": "SERVER-2264", "labels": [], "originalEstimate": "PT0S", "parent": "15103", "parentSummary": "The CA that signs agent requests should be an intermediate CA by default", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2018-09-10T10:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver clojure integration tests to handle lack of CA bootstrapping", "timeSpent": "PT0S", "updated": "2018-09-10T10:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [{"author": "5a7211b6d0cb452810793cd6", "body": "Here is an example of what is currently done:\n{code:java}\n~/Development/puppetserver/ruby/puppet (master) $\ud83d\udc30\u00a0 be puppet cert generate amy.net\nWarning: `puppet cert` is deprecated and will be removed in a future release.\n\u00a0\u00a0 (location: /Users/amy.sahli/Development/puppetserver/ruby/puppet/lib/puppet/application.rb:377:in `run')\nNotice: amy.net has a waiting certificate request\nNotice: Signed certificate request for amy.net\nNotice: Removing file Puppet::SSL::CertificateRequest amy.net at '/Users/amy.sahli/.puppetlabs/etc/puppet/ssl/ca/requests/amy.net.pem'\nNotice: Removing file Puppet::SSL::CertificateRequest amy.net at '/Users/amy.sahli/.puppetlabs/etc/puppet/ssl/certificate_requests/amy.net.pem'\n{code}\n\u00a0\n\nAnd then you can see my key and cert is there:\n{code:java}\n~/.puppetlabs/etc/puppet/ssl/certs $\ud83d\udc30\u00a0 ls amy.net.pem ca.pem localhost.pem ~/.puppetlabs/etc/puppet/ssl/certs $\ud83d\udc30\u00a0 cd .. ~/.puppetlabs/etc/puppet/ssl $\ud83d\udc30\u00a0 cd private_keys ~/.puppetlabs/etc/puppet/ssl/private_keys $\ud83d\udc30\u00a0 ls amy.net.pem localhost.pem\n{code}", "created": "2018-08-08T14:56:00.000000"}], "components": [], "created": "2018-07-26T11:33:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the CA CLI has a subcommand to generate certificate-key pairs for a given certname"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3489893b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzoe0n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_342389883_*|*_1_*:*_1_*:*_11238_*|*_10007_*:*_2_*:*_265716809_*|*_3_*:*_1_*:*_181485822_*|*_5_*:*_1_*:*_4570134563_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1128257369"}], "description": "We need a subcommand that works analogously to {{puppet cert generate}}, which creates a key and signed certificate for a given certname. This is commonly used when setting up puppet infrastructure, which needs certs that have subject alternative names and therefore currently can't be signed via the CA API or via autosigning.\n\nIn SERVER-2255, we are already creating a subcommand that we are calling {{generate}}, so one of these two will need a new name.\n\nThis command should accept an {{--allow-subject-alternative-names}} flag that enables signing CSRs with SANs. Per the work done in PUP-8942, this should allow both DNS and IP alt names. Puppetserver's CA code will need to be updated to allow this, see SERVER-2267.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17400", "fixedVersions": [], "id": "17400", "issueType": "Sub-task", "key": "SERVER-2263", "labels": [], "originalEstimate": "PT0S", "parent": "17269", "parentSummary": "New CLI tools for interacting with CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-08-17T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a subcommand for generating a new key and certificate via the CA CLI", "timeSpent": "PT0S", "updated": "2018-10-09T13:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-07-23T22:11:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a0f2fa1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Server CA CLI"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymq1j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6867242586_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_42449443159"}], "description": "Work to complete the new CA CLI for puppetserver, implemented via the [puppetserver-ca-cli|https://github.com/puppetlabs/puppetserver-ca-cli] gem.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14822", "fixedVersions": [], "id": "14822", "issueType": "Epic", "key": "SERVER-2262", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-02-14T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server CA CLI", "timeSpent": "PT0S", "updated": "2020-04-06T15:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "ping [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "created": "2018-07-23T21:33:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "release note added", "created": "2018-08-20T21:38:00.000000"}], "components": [], "created": "2018-07-23T21:33:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@af6bdd9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzof33:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The {{puppetserver ca}} CLI now has an {{import}} subcommand for installing key and certificate files generated by the user (for example when they have an external root CA that they need puppetserver's PKI to chain to)"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_312989233_*|*_1_*:*_1_*:*_2129268_*|*_10007_*:*_2_*:*_368978499_*|*_3_*:*_1_*:*_117253_*|*_5_*:*_1_*:*_1743458800_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_137964721"}], "description": "We need two actions for setting up a CA, {{import}} and {{generate}}, rather than having a generic setup action with potentially confusing flags to do those two different types of setup.\n\nConsequently we should change the name of the {{setup}} action to be {{import}}.", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "17164", "fixedVersions": ["SERVER 5.3.5", "SERVER 6.0.0"], "id": "17164", "issueType": "Task", "key": "SERVER-2261", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-08-22T14:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "rename puppetserver-ca's `setup` action to `import`", "timeSpent": "PT0S", "updated": "2018-08-22T14:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd", "attachments": [], "comments": [], "components": [], "created": "2018-07-23T09:28:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the {{puppetserver ca}} CLI has a subcommand for listing certs and CSRs"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28239a9a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzoe13:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_282712881_*|*_1_*:*_1_*:*_10963_*|*_10007_*:*_1_*:*_323215694_*|*_3_*:*_1_*:*_3736_*|*_5_*:*_1_*:*_2841415611_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1578639250"}], "description": "In order to deprecate/remove the {{puppet cert}} command, we need a replacement tool that can be used to list existing certificates and CSRs. This new tool should live under the {{puppetserver ca}} command as part of [the gem|https://github.com/puppetlabs/puppetserver-ca-cli]. It should use the {{certificate-statuses}} endpoint for listing the certificates and/or CSRs.\n\nWe should revisit the behavior of the current {{puppet cert list}} command and make sure that is what we want the new command to do, since it seems potentially unintuitive.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17162", "fixedVersions": ["SERVER 6.0.0"], "id": "17162", "issueType": "Sub-task", "key": "SERVER-2260", "labels": [], "originalEstimate": "PT0S", "parent": "17269", "parentSummary": "New CLI tools for interacting with CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-08-17T16:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a `list` subcommand for the new CA CLI", "timeSpent": "PT0S", "updated": "2018-09-19T13:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2018-07-23T09:25:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the {{puppetserver ca}} CLI has a subcommand for cleaning up certificates and CSRs given a hostname"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43a36069"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzoe0v:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_360217110_*|*_1_*:*_1_*:*_13223_*|*_10007_*:*_1_*:*_331106414_*|*_3_*:*_1_*:*_98198775_*|*_5_*:*_1_*:*_2841423276_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1395225832"}], "description": "In order to deprecate/remove the {{puppet cert}} command, we need a replacement tool that can be used to \"clean up\" issued certificates, for example if the user desires to have a new cert issued for a given host. This new tool should live under the {{puppetserver ca}} command as part of [the gem|https://github.com/puppetlabs/puppetserver-ca-cli].\n\nIf a certificate exists for the supplied hostname, that cert should be revoked via the {{certificate-status}} endpoint and all associated files should be cleaned from disk. If no cert exists, any pending CSRs for that hostname should be destroyed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16767", "fixedVersions": ["SERVER 6.0.0"], "id": "16767", "issueType": "Sub-task", "key": "SERVER-2259", "labels": [], "originalEstimate": "PT0S", "parent": "17269", "parentSummary": "New CLI tools for interacting with CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-08-17T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a `clean` subcommand for the new CA CLI", "timeSpent": "PT0S", "updated": "2018-09-19T13:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "From chatting with [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], I think we were going to try to use Ruby's {{Net/HTTPS}} first to see if we could do this simply w/o any additional dependencies. If not, or if the server_list and srv logic becomes necessary we may want to look into loading the rest client code in Puppet that we recently added to simplify Puppet's SSL bootstrapping or the underlying library that we used there: {{httpclient}}.\n\nI believe the assumption is that this CLI tool is only valid when ran on the CA and most the above networking code (server_list and HA) are not valid. I assume that also means the {{ca_server}} is unnecessary.\n\nI think there *might* be issues with that in AWS-like environments where the local hostname is not externally resolvable and vice versa, but I'm not clear on all the implications currently.\n\nI'm not quite clear if we should make a connection to the {{server}}, {{ca_server}}, or {{certname}} settings in puppet.conf or some resolved combination of those. Or if we can just attempt localhost.\n\nI assume this should honor the {{ssldir}}, {{hostcert}}, {{hostprivkey}}, {{localcacert}}, and {{hostcrl}} in puppet.conf when creating an https connection.\n\nI'm going to start with creating an https connection to localhost using net/https and add complexity from there.", "created": "2018-07-23T18:30:00.000000"}], "components": [], "created": "2018-07-23T09:17:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the {{puppetserver ca}} CLI has a subcommand for revoking certificates given a certname"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@562b54d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzoe0f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_789761606_*|*_1_*:*_1_*:*_25752_*|*_10007_*:*_1_*:*_595872_*|*_3_*:*_1_*:*_1369392717_*|*_5_*:*_1_*:*_2841443522_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_25412724"}], "description": "In order to deprecate/remove the {{puppet cert}} command, we need a replacement tool that can be used to revoke certificates given a certname. This new tool should live under the {{puppetserver ca}} command as part of [the gem|https://github.com/puppetlabs/puppetserver-ca-cli]. It should use the {{certificate-status}} endpoint for revoking the cert.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16561", "fixedVersions": ["SERVER 6.0.0"], "id": "16561", "issueType": "Sub-task", "key": "SERVER-2258", "labels": [], "originalEstimate": "PT0S", "parent": "17269", "parentSummary": "New CLI tools for interacting with CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-08-17T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a `revoke` subcommand for the new CA CLI", "timeSpent": "PT0S", "updated": "2018-09-19T13:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd", "attachments": [], "comments": [], "components": [], "created": "2018-07-23T09:14:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* the {{puppetserver ca}} CLI has a subcommand for signing certificates given a hostname"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78b39866"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzodzz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_605920064_*|*_1_*:*_1_*:*_196713_*|*_10007_*:*_1_*:*_85057564_*|*_3_*:*_1_*:*_1470752463_*|*_5_*:*_1_*:*_2841454580_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_23440751"}], "description": "In order to deprecate/remove the {{puppet cert}} command, we need a replacement tool that can be used to sign certificates given a hostname. This new tool should live under the {{puppetserver ca}} command as part of [the gem|https://github.com/puppetlabs/puppetserver-ca-cli]. The most basic model should use the {{certificate-status}} endpoint for signing, even though this currently does not work with subject alternative names (this case needs some more security discussion and is covered in SERVER-2268).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15926", "fixedVersions": ["SERVER 6.0.0"], "id": "15926", "issueType": "Sub-task", "key": "SERVER-2257", "labels": [], "originalEstimate": "PT0S", "parent": "17269", "parentSummary": "New CLI tools for interacting with CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-08-17T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a `sign` subcommand for the new CA CLI", "timeSpent": "PT0S", "updated": "2018-09-19T13:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-07-20T15:44:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* all beaker tests in puppet, puppetserver, pe-pse, and pe-integration use `ca generate` to set up their CAs"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2710b1e7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzodfb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_178916_*|*_3_*:*_1_*:*_62607121_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_4412559767"}], "description": "Currently, puppetserver generates its CA files on startup. Before we can remove this behavior in favor of require people to run the CA CLI tool to set it up, we need to update our tests to use it, so that things won't break when we actually remove the bootstrapping.\n\nThis will most likely be an update to the install utility methods in [beaker-puppet|https://github.com/puppetlabs/beaker-puppet], though it might implicate some individual tests as well. Tests using utilities from [beaker-pe|https://github.com/puppetlabs/beaker-pe] might also be impacted unless they use the PE installer, which will be separately updated to use this tool (see PE-24739).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15155", "fixedVersions": [], "id": "15155", "issueType": "Sub-task", "key": "SERVER-2256", "labels": [], "originalEstimate": "PT0S", "parent": "15103", "parentSummary": "The CA that signs agent requests should be an intermediate CA by default", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2018-09-10T10:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update acceptance tests to use the CA CLI to generate puppetserver's CA", "timeSpent": "PT0S", "updated": "2018-09-10T10:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [], "components": [], "created": "2018-07-20T15:36:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* {{puppetserver ca}} has a subommand that creates a CA for puppetserver\n* acceptance test similar to [this test|https://github.com/puppetlabs/puppetserver/blob/master/acceptance/suites/tests/certificate_authority/intermediate_ca.rb] demonstrating the functionality"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fe82d44"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzode7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1208943425_*|*_1_*:*_1_*:*_653266_*|*_10007_*:*_1_*:*_174468578_*|*_3_*:*_1_*:*_690394649_*|*_5_*:*_1_*:*_4570083430_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_347237019"}], "description": "We should add a new subcommand to the {{puppetserver ca}} CLI tool that takes no arguments and generates an intermediate CA PKI for puppetserver, respecting the CA settings from {{puppetserver.conf}}. This will need to be run before starting the server for the first time in order to set up a default CA. It will also need to be incorporated into the PE installer (see PE-24739).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16336", "fixedVersions": [], "id": "16336", "issueType": "Sub-task", "key": "SERVER-2255", "labels": [], "originalEstimate": "PT0S", "parent": "15103", "parentSummary": "The CA that signs agent requests should be an intermediate CA by default", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-08-17T16:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create `generate` subcommand for the CA CLI tool", "timeSpent": "PT0S", "updated": "2018-10-09T13:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This first PR https://github.com/puppetlabs/puppetserver-ca-cli/pull/5 just adds the utility for reading CA settings out of the HOCON config files for puppetserver. A follow-up PR to actually start using these new settings will be needed once https://github.com/puppetlabs/puppetserver/pull/1728 has been merged.", "created": "2018-07-25T09:22:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please add release notes for this issue if needed, thanks!", "created": "2018-08-28T09:07:00.000000"}], "components": [], "created": "2018-07-17T14:28:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "{{puppetserver ca}} CLI can parse puppetserver's config files to check for custom CA paths"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73697baf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8918"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1f3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Aug/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_604684444_*|*_1_*:*_1_*:*_41058_*|*_10007_*:*_1_*:*_113862791_*|*_3_*:*_1_*:*_84464842_*|*_5_*:*_1_*:*_4134004428_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_33815_*|*_10005_*:*_1_*:*_589256163"}], "description": "With the work in SERVER-2225, Puppet Server will start configuring its CA based on settings in puppetserver.conf instead of puppet.conf. The new CLI tool needs to start using the new default directory `/etc/puppetlabs/puppetserver/ca`, and read overrides from Puppetserver's conf file.\n\nThings to note:\n1) Puppetserver's config file is HOCON, so we will need to change out the config file parser.\n2) The settings are not guaranteed to be in in the file {{puppetserver.conf}}, because trapperkeeper will read settings in any file in {{conf.d}} and some of our docs reference a separate {{ca.conf}}. The {{--config}} flag in the tool will probably cover us here.", "epicLinkSummary": "Finalize separation of CA from Ruby", "estimate": "PT0S", "externalId": "16558", "fixedVersions": ["SERVER 6.0.0"], "id": "16558", "issueType": "Task", "key": "SERVER-2254", "labels": [], "originalEstimate": "PT0S", "parent": "29493", "parentSummary": "Finalize separation of CA from Ruby", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-19T13:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make CA CLI gem read CA settings from puppetserver.conf instead of puppet.conf", "timeSpent": "PT0S", "updated": "2018-09-19T13:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "DOCUMENT-889 requests changes to the Server docs to better align them with the current behavior. If this ticket changes the setting's behavior, DOCUMENT-889 might not be necessary.\n\nPlease coordinate changes made in this ticket with the Server docs lead so we can avoid redundant or conflicting changes.", "created": "2018-07-23T12:00:00.000000"}, {"author": "557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0", "body": "When I mentioned this to the server team they asked me to create this ticket, but that this would not happen soon, which is why I also created the docs ticket.", "created": "2018-07-23T12:42:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Yeah, I'm just being as explicit as possible since DOCUMENT and SERVER tickets don't have a lot of visibility across each other even when linked, and Server docs will probably get a new docs lead soon who won't already know the context.", "created": "2018-07-23T14:23:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T09:47:00.000000"}], "components": ["DOCS"], "created": "2018-07-17T10:59:00.000000", "creator": "557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@177dbd0c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzo9sf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1769477_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_114909502948"}], "description": "It turns out that the jruby profiling does not enable profiling any jruby in spawned threads, making that option not so useful. We should determine if there is a way to get it working for profiling all puppetserver jruby code.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "15688", "fixedVersions": [], "id": "15688", "issueType": "Improvement", "key": "SERVER-2253", "labels": ["debugging"], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0", "resolution": "Won't Do", "resolutionDate": "2022-03-08T09:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "jruby-settings profiling-mode option only enables profiling on the service startup.", "timeSpent": "PT0S", "updated": "2022-03-08T09:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "This would be helpful in automation. There are places where we need to look at the output of a single certificate, or verify that a certificate is signed versus revoked or pending.  The current sectioned output is nice visually, but difficult to parse. Something that produced unambiguous single line output, or a structured json blob would be handy.", "created": "2018-09-26T17:26:00.000000"}], "components": [], "created": "2018-07-11T12:58:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7323c3c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzo6b3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1070233902_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_88430331785"}], "description": "It should at least accept a format of {{json}} in which it outputs in machine parseable json data.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "14819", "fixedVersions": [], "id": "14819", "issueType": "Improvement", "key": "SERVER-2252", "labels": [], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Duplicate", "resolutionDate": "2021-05-12T10:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add `--format` flag to `puppetserver ca` cli tool", "timeSpent": "PT0S", "updated": "2021-05-12T10:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're going to release these changes along with the work from SERVER-3006.", "created": "2021-06-29T09:23:00.000000"}, {"author": "5fc46fd09592df0076141ac0", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] what is the subject here for integrating the flag? Example: \"In this release, Puppet Server now includes the `--verbose` flag to `puppetserver ca`....\"\u00a0", "created": "2021-07-12T10:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I think it's the `puppetserver ca` subcommand and it now honors the `\u2013verbose` flag.", "created": "2021-07-12T12:17:00.000000"}, {"author": "5fc46fd09592df0076141ac0", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\u00a0To clarify, is the addition of the --verbose flag enough to change the desired tool's output? In docs tab: I do not know what \"when raised\" means", "created": "2021-07-12T12:28:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ahh, I tweaked the release note summary to no longer use that term. Hopefully that helps, let me know if not.", "created": "2021-07-12T13:33:00.000000"}, {"author": "5fc46fd09592df0076141ac0", "body": "thanks [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\u00a0- in the past did Froyo previously document flags for the puppetserver ca subcommand? Cannot find a section where I can include the new `\u2013verbose` flag.\u00a0", "created": "2021-07-12T14:00:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We usually document it at the action level, I don't know that it needs more than a release notes bullet point. Here is the existing ca subcommand docs though: https://puppet.com/docs/puppet/7/server/subcommands.html#ca", "created": "2021-07-12T14:34:00.000000"}], "components": [], "created": "2018-07-11T12:56:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74c07a0b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2736"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694aou"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added the verbose flag to the `puppetserver ca` subcommand. When the `--verbose` flag is passed additional low level details about the action being invoked will be displayed, notably details regarding http requests that the tool makes will be logged at this level."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1070330083_*|*_3_*:*_1_*:*_1093354802_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6865931_*|*_10005_*:*_1_*:*_91474295636"}], "description": "With the verbose flag set the command should output information at the debug level. The current output and any additional input that might be valuable should be assessed for whether it should be output at debug.", "epicLinkSummary": "Server CA CLI v2", "estimate": "PT0S", "externalId": "17397", "fixedVersions": ["SERVER 6.16.1", "SERVER 7.2.1"], "id": "17397", "issueType": "Improvement", "key": "SERVER-2251", "labels": ["docs-reviewed", "froyo_intern"], "originalEstimate": "PT0S", "parent": "16352", "parentSummary": "Server CA CLI v2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2021-06-29T09:23:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add `--verbose` flag to `puppetserver ca` cli tool", "timeSpent": "PT0S", "updated": "2021-07-12T14:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-07-10T08:59:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@16481927"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8990"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2hj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2880_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_805298594"}], "description": "(Initial planned release date: 2018-07-17)\n\n* Update version number in source to point to next snapshot.\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update Winston and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2018-07-18T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.4 Release - 2018-07-17\n", "estimate": "PT0S", "externalId": "15154", "fixedVersions": [], "id": "15154", "issueType": "Task", "key": "SERVER-2250", "labels": [], "originalEstimate": "PT0S", "parent": "24254", "parentSummary": "Puppet Platform 5.5.4 Release - 2018-07-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2018-07-19T16:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.4)", "timeSpent": "PT0S", "updated": "2018-07-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] did this happen on Friday or do you plan to do it today?", "created": "2018-07-16T07:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'll do it this morning. Going to let the 9k pipelines finish since they're already running, then tag.", "created": "2018-07-16T09:17:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] can this be resolved now?", "created": "2018-07-17T08:48:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yes. PE pipelines are blocked atm, some sort of issue with bionic packages, so I haven't been able to promote this all the way, but I'm okay resolving this ticket.", "created": "2018-07-17T09:35:00.000000"}], "components": [], "created": "2018-07-10T08:58:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@600d8b29"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8990"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2hb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2841_*|*_3_*:*_1_*:*_87574371_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_519411471"}], "description": "(Initial planned release date: 2018-07-17)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Bump and Tag the candidate SHA once passing\n  * Run the \"Lein Release\" job for the release branch. This job will make the\n     appropriate version bump commits and tag the release SHA.\n* Ensure tagged release version is built, tested and artifacts exist at\n  builds.delivery.puppetlabs.net\n  * This may entail manually promoting into PE again.\n", "duedate": "2018-07-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.4 Release - 2018-07-17\n", "estimate": "PT0S", "externalId": "17393", "fixedVersions": [], "id": "17393", "issueType": "Task", "key": "SERVER-2249", "labels": [], "originalEstimate": "PT0S", "parent": "24254", "parentSummary": "Puppet Platform 5.5.4 Release - 2018-07-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2018-07-17T09:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.4)", "timeSpent": "PT0S", "updated": "2018-07-17T09:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Since no work is really landing on the 5.3.x branch right now, I'm going to skip making release branches and pipelines this time around.", "created": "2018-07-13T12:47:00.000000"}], "components": [], "created": "2018-07-10T08:58:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@408df880"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8990"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2h3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2879_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_272928949"}], "description": "(Initial planned release date: 2018-07-17)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2018-07-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.4 Release - 2018-07-17\n", "estimate": "PT0S", "externalId": "17160", "fixedVersions": [], "id": "17160", "issueType": "Task", "key": "SERVER-2248", "labels": [], "originalEstimate": "PT0S", "parent": "24254", "parentSummary": "Puppet Platform 5.5.4 Release - 2018-07-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Won't Do", "resolutionDate": "2018-07-13T12:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.4)", "timeSpent": "PT0S", "updated": "2018-07-13T12:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-07-10T08:58:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@500aa0d6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8990"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2gv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2715_*|*_3_*:*_1_*:*_271825118_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1058091"}], "description": "(Initial planned release date: 2018-07-17)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Check project.clj and clj-parent for any library updates since the last\n    release (e.g. {{git diff 2.3.2 \u2013 project.clj}})\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2018-07-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.4 Release - 2018-07-17\n", "estimate": "PT0S", "externalId": "16766", "fixedVersions": [], "id": "16766", "issueType": "Task", "key": "SERVER-2247", "labels": [], "originalEstimate": "PT0S", "parent": "24254", "parentSummary": "Puppet Platform 5.5.4 Release - 2018-07-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Done", "resolutionDate": "2018-07-13T12:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.4)", "timeSpent": "PT0S", "updated": "2018-07-13T12:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "How did you start puppetserver? Using the {{puppetserver start}} or {{systemctl start puppetserver}} will put the process in the background so STDOUT for the process is not attached to your terminal and you won't see it. There is a {{puppetserver foreground}} command that will not background the process and should let you see the processes STDOUT in your terminal.", "created": "2018-07-10T11:15:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] sorry, indeed I forgot to write about how i started the service what seems to be the important part here. :-/\nthis was by systemctl start/stop/restart puppetserver. the {{STDOUT}} output I meant the process output captured by systemd that is saved to journald (which is also forwarded to localhost syslog).\n\nAs you write _will put the service in the background_ I think this is my problem here. it will close/redirect stderr/stdout to somewhere else?\n\nSo maybe I'm not looking the ConsoleAppender feature but something that can write to /dev/log which also seems to listend by journald.\n", "created": "2018-07-10T13:48:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "comparing /opt/puppetlabs/server/apps/puppetserver/cli/apps/foreground and /opt/puppetlabs/server/apps/puppetserver/cli/apps/start starting command:\n\n{noformat}\n${JAVA_BIN} ${JAVA_ARGS} -Djava.security.egd=/dev/urandom \\\n\t  -XX:OnOutOfMemoryError=\"kill -9 %p\" \\\n\t  -cp \"${CLASSPATH}\" \\\n\t  clojure.main \\\n\t  -m puppetlabs.trapperkeeper.main \\\n\t  --config \"${CONFIG}\" \\\n\t  --bootstrap-config \"${BOOTSTRAP_CONFIG}\" \\\n\t  --restart-file \"${restartfile}\" &\n{noformat}\n\nand foreground:\n\n{noformat}\nCOMMAND=\"${JAVA_BIN} ${JAVA_ARGS} ${LOG_APPENDER} \\\n         -Djava.security.egd=/dev/urandom \\\n         -cp \"$CLASSPATH\" \\\n         clojure.main -m puppetlabs.trapperkeeper.main \\\n         --config ${CONFIG} --bootstrap-config ${BOOTSTRAP_CONFIG} \\\n         --restart-file \"${restartfile}\" \\\n         ${@}\"\n{noformat}\n\nthe start backgrounds the task whereas foreground does not. But I can't see closing stdout/stderr anywhere in the shell script. So I somehow expect STDOUT should still be available for the java process and thus ConsoleAppender might work.\n\nI was looking for SyslogAppender to write to /dev/log but the only thing I could find by googling was that logback does not support to write to a unix-socket.", "created": "2018-07-10T14:12:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Okay, I'm not sure if this is would be an issue with the defaults in {{/etc/sysconfig/puppetserver}} or the service file and where that might have changed recently. I'll spin up a few versions of the server in the next couple of days to test that out.\n\nYou specifically mention the compiler output, are you seeing much else from the server? Wondering if this could be a change within the Puppet compiler/logger so it no longer respects the server's logging.", "created": "2018-07-10T22:35:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "To prove my assumption that the stdout of a forked process really is captured in journald I've created a dummy stdout service situation:\n\n{noformat}\n#> cat /bin/dummystdout-init \n#!/bin/bash\n\nif [ \"$1\" == \"start\" ]", "created": "2018-07-10T23:01:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] I found my error :-/ . {{journalctl -u puppetserver.service}} only shows lines logged upto when the service enters started state.\n\nthe Puppet compiler messages actually get logged to /var/log/messages and also can be queried by {{journalctl -t puppetserver}}\n\nfrom journalctl help: {{-t --identifier=STRING   Show entries with the specified syslog identifier}}\n\nexample:\n\n{noformat}\n#> journalctl -u puppetserver.service -n\n-- Logs begin at Thu 2018-06-28 19:57:37 UTC, end at Wed 2018-07-11 05:47:02 UTC. --\nJul 11 05:39:57 el7 puppetserver[19437]: 2018-07-11 05:39:57,990 INFO  [async-dispatch-2] [o.e.j.s.AbstractConnector] Started ServerConnector@4bb24e1e{SSL,[ssl, http/1.1]}{0.0.0.0:8140}\nJul 11 05:39:57 el7 puppetserver[19437]: 2018-07-11 05:39:57,990 INFO  [async-dispatch-2] [o.e.j.s.Server] Started @66789ms\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,000 INFO  [async-dispatch-2] [p.t.s.s.status-core] Starting background monitoring of cpu usage metrics\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,026 INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'status-service', version 1.0.0\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,026 INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status service HTTP API at /status\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,034 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@4c972f0{/status,null,AVAILABLE}\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,069 INFO  [async-dispatch-2] [p.s.m.master-service] Puppet Server has successfully started and is now ready to handle requests\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,071 INFO  [async-dispatch-2] [p.s.l.legacy-routes-service] The legacy routing service has successfully started and is now ready to handle requests\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,095 INFO  [async-dispatch-2] [p.s.a.analytics-service] Puppet Server Update Service has successfully started and will run in the background\nJul 11 05:39:58 el7 systemd[1]: Started puppetserver Service.\n\n\n#> journalctl -t puppetserver -n \n-- Logs begin at Thu 2018-06-28 19:57:37 UTC, end at Wed 2018-07-11 05:46:26 UTC. --\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,000 INFO  [async-dispatch-2] [p.t.s.s.status-core] Starting background monitoring of cpu usage metrics\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,026 INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'status-service', version 1.0.0\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,026 INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status service HTTP API at /status\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,034 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@4c972f0{/status,null,AVAILABLE}\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,069 INFO  [async-dispatch-2] [p.s.m.master-service] Puppet Server has successfully started and is now ready to handle requests\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,071 INFO  [async-dispatch-2] [p.s.l.legacy-routes-service] The legacy routing service has successfully started and is now ready to handle requests\nJul 11 05:39:58 el7 puppetserver[19437]: 2018-07-11 05:39:58,095 INFO  [async-dispatch-2] [p.s.a.analytics-service] Puppet Server Update Service has successfully started and will run in the background\nJul 11 05:41:18 el7 puppetserver[19437]: 2018-07-11 05:41:18,142 WARN  [qtp1531084245-67] [puppetserver] Scope(Class[main]) Test logging\nJul 11 05:41:18 el7 puppetserver[19437]: 2018-07-11 05:41:18,160 WARN  [qtp1531084245-67] [puppetserver] Puppet Unknown variable: '::unknown_var'. (file: /etc/puppetlabs/code/environments/production/manifests/site.pp, line: 7, column: 9)\nJul 11 05:41:18 el7 puppetserver[19437]: 2018-07-11 05:41:18,201 INFO  [qtp1531084245-67] [puppetserver] Puppet Compiled catalog for el7 in environment production in 0.82 seconds\n{noformat}\n\nSomehow the java process behaves differently regarding stdout than the forked bash process in the background. \n", "created": "2018-07-10T23:50:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "can't set the ticket to a closed/invalid state. it's clearly no puppetserver issue. ", "created": "2018-07-10T23:51:00.000000"}], "components": ["Puppet Server"], "created": "2018-07-10T00:18:00.000000", "creator": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Configuring logback to with ConsoleAppender (STDOUT) shows the same messages as logging with RollingFileAppender (/var/log/pupetlabs/puppetserver/puppetserver.log)"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c64ea8b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzo50f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_39432612_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_619925343"}], "description": "*Puppet Version:* 5.5.3\n*Puppet Server Version:* 5.3.3\n*OS Name/Version:* RHEL 7\n\nSteps to reproduce:\n\n* Add STDOUT appender-ref to logback.xml:\n\n{noformat}\n<configuration>\n...\n<root level=\"info\">\n  ...\n  <appender-ref ref=\"STDOUT\" />\n</root>\n</configuration>\n{noformat}\n\n* restart puppetserver systemd service\n* watch puppetserver STDOUT output with {{journalctl -u puppetserver.service}}\n* compare with /var/log/puppetlabs/puppetserver/puppetserver.log \n\n\n*Actual Behavior:*\n\nall Puppet compiler messages are missing on STDOUT\n\nSome example messages not added to STDOUT:\n\nPupppet The function 'xy' is deprecated in favor of using 'lookup' ...\nPuppet This method is deprecated, please use the ...\nPuppet Undefined variable '...' ...\nPuppet Compiled catalog for ... in environment .... in ... seconds\n\n*Desired Behavior:*\nsame logs on STDOUT as in  /var/log/puppetlabs/puppetserver/puppetserver.log \n\n*solution*:\n\n{{journalctl -u puppetserver.service}} only includes messages until puppserver service is started. The java process stdout is still captured and logged to jouranld. \n\nUse {{journalctl -t puppetserver}} to get the logs.", "environment": "RHEL 7 with Systemd", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15925", "fixedVersions": [], "id": "15925", "issueType": "Bug", "key": "SERVER-2246", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "resolution": "Cannot Reproduce", "resolutionDate": "2018-07-17T15:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "No puppet compiler logs with STDOUT logback logging", "timeSpent": "PT0S", "updated": "2018-07-17T15:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0b74761efb0069ce021d", "attachments": [{"attacher": "623c0b74761efb0069ce021d", "created": "2018-07-11T21:46:00.000000", "name": "journalctl_logs.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11051"}], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We'll need the information from {{journalctl -xe}} as it mentions in the error. There may be pertinent information in the syslog as well as in {{/var/log/puppetlabs/puppetserver/puppetserver.log}} if you could post that.\n\nThanks", "created": "2018-07-09T11:47:00.000000"}, {"author": "623c0b74761efb0069ce021d", "body": "Hi justin Stoller,\n\nThanks for ur support\n\nplease find below\u00a0journalctl -xe information\n\nshyam@ubuntu:~$ journalctl -xe\nJul 10 08:12:15 ubuntu systemd[1]: Stopped CUPS Scheduler.\n-- Subject: Unit cups.service has finished shutting down\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n-- \n-- Unit cups.service has finished shutting down.\nJul 10 08:12:15 ubuntu systemd[1]: Stopped CUPS Scheduler.\n-- Subject: Unit cups.path has finished shutting down\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n-- \n-- Unit cups.path has finished shutting down.\nJul 10 08:12:15 ubuntu systemd[1]: Stopping CUPS Scheduler.\n-- Subject: Unit cups.path has begun shutting down\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n-- \n-- Unit cups.path has begun shutting down.\nJul 10 08:12:15 ubuntu systemd[1]: Started CUPS Scheduler.\n-- Subject: Unit cups.path has finished start-up\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n-- \n-- Unit cups.path has finished starting up.\n-- \n-- The start-up result is done.\nJul 10 08:12:16 ubuntu systemd[1]: Started CUPS Scheduler.\n-- Subject: Unit cups.service has finished start-up\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n-- \n-- Unit cups.service has finished starting up.\n-- \n-- The start-up result is done.\nJul 10 08:12:16 ubuntu systemd[1]: Started Make remote CUPS printers available locally.\n-- Subject: Unit cups-browsed.service has finished start-up\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n-- \n-- Unit cups-browsed.service has finished starting up.\n-- \n-- The start-up result is done.\nJul 10 08:13:26 ubuntu gnome-session[2974]: Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.\nJul 10 08:14:26 ubuntu polkitd(authority=local)[1326]: Operator of unix-session:c2 successfully authenticated as unix-user:shyam to gain TEMPORARY authorization for action org.freedesktop.systemd1.manage-\nJul 10 08:14:34 ubuntu pkexec[3884]: pam_unix(polkit-1:session): session opened for user root by (uid=1000)\nJul 10 08:14:34 ubuntu pkexec[3884]: pam_systemd(polkit-1:session): Cannot create session: Already running in a session\nJul 10 08:14:34 ubuntu pkexec[3884]: shyam: Executing command [USER=root] [TTY=unknown] [CWD=/home/shyam] [COMMAND=/usr/lib/update-notifier/package-system-locked]\nJul 10 08:15:07 ubuntu anacron[1117]: Job `cron.daily' terminated\nJul 10 08:15:07 ubuntu anacron[1117]: Normal exit (1 job run)\n\n\u00a0\n\n\u00a0\n\n----------------------------------------\n\nI am unable to access\u00a0/puppetserver/puppetserver.log, for provideing data could you help in that.\n\nThanks & Regards\n\nSaisyam\n\n\u00a0\n\n\u00a0", "created": "2018-07-10T09:56:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "# That output doesn't actually include any information about the puppetserver process. You should run {{journalctl -xe}} after {{systemctl start puppetserver}} fails and tells you to. If there's no output in there regarding puppetserver that's weird and ultimately not helpful.\n# Why are you unable to view the puppetserver logs? Is there a permissions problem? Perhaps whatever permissions issue that's keeping you from opening the logs is preventing puppetserver from opening its logs.\n# You may want to also check for useful information, as {{systemctl}} recommends, the output of {{systemctl status puppetserver.service}}.", "created": "2018-07-10T11:23:00.000000"}, {"author": "623c0b74761efb0069ce021d", "body": "[^journalctl_logs.txt]\n\nHi justin Stoller,\n\nThanks for ur support\n\nPlease find attachment for logs\n\nThanks", "created": "2018-07-11T21:46:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "In the log I see you starting {{systemctl start puppet}} and {{systemctl start puppet.service}} but not {{systemctl start puppetserver}} or {{systemctl start puppetserver.service}} without output from that I'm sorry but I can't help you [~accountid:623c0b74761efb0069ce021d]. ", "created": "2018-07-17T15:26:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Going to close this since it hasn't had any activity in quite some time. Please file a new ticket or reopen if you're still having issues.", "created": "2022-02-22T15:57:00.000000"}], "components": [], "created": "2018-07-07T03:28:00.000000", "creator": "623c0b74761efb0069ce021d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2417d458"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzo48v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_202776260_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_114412197689"}], "description": "Hi team I am new to puppet installation process after inastallation puppet in ubuantu ,unable to start puppet server and also getting below error\n\nplease lookinto this and help me to over come from this\n\n/etc/apt/sources.list.d$ puppet resource service puppetserver ensure=running\n Error: Could not start Service[puppetserver]: Execution of '/bin/systemctl start puppetserver' returned 1: Job for puppetserver.service failed because the control process exited with error code. See \"systemctl status puppetserver.service\" and \"journalctl -xe\" for details.\n Error: /Service[puppetserver]/ensure: change from stopped to running failed: Could not start Service[puppetserver]: Execution of '/bin/systemctl start puppetserver' returned 1: Job for puppetserver.service failed because the control process exited with error code. See \"systemctl status puppetserver.service\" and \"journalctl -xe\" for details.\n service\n\n{ 'puppetserver': ensure => 'stopped', }\n\n\u00a0\n\nThanks\u00a0\n\nSaisyam vangara\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15685", "fixedVersions": [], "id": "15685", "issueType": "Task", "key": "SERVER-2245", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0b74761efb0069ce021d", "resolution": "Cannot Reproduce", "resolutionDate": "2022-02-22T15:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to restart/start puppet server in ubuntu 16.04", "timeSpent": "PT0S", "updated": "2022-02-22T15:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5b34b9718f518562607d35db", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{{confdir}} and {{vardir}} are special and are set before any other settings are resolved (they're needed to know where to read the config file you're setting them in for instance). If you must set vardir or confdir then you should do it from the cli when you invoke puppet, ie {{puppet agent --confdir /etc/puppet --vardir /var/lib/puppet}} It should then read the puppet.conf at {{/etc/puppet/puppet.conf}} and apply the settings normally. ", "created": "2018-07-06T14:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Let me know the current state of things [~accountid:5b34b9718f518562607d35db]", "created": "2018-07-17T15:28:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing this, since it hasn't gotten any activity in quite some time. Please reopen if you're still having issues.", "created": "2022-02-22T15:56:00.000000"}], "components": ["Puppet Server"], "created": "2018-07-05T06:46:00.000000", "creator": "5b34b9718f518562607d35db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27ee5649"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzo333:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_112553374_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_114663274171"}], "description": "My problem is very similar to [this issue|https://puppet.atlassian.net/browse/SERVER-142], however my problem does not go away when I delete /var/lib/puppet/ssl\u00a0directory.\n\nSo, I have a Puppet Master that is also configured as its agent. Since I prefer a bit different directory structure that currently Puppet uses (I prefer the previous convention), I overridden some paths in the config:\n\n\u00a0\n{noformat}\n[main]\nlogdir = /var/log/puppet\nvardir = /var/lib/puppet\nssldir = /var/lib/puppet/ssl\nrundir = /var/run/puppet\nfactpath = $vardir/lib/facter\nconfdir = /etc/puppet\ncodedir = /etc/puppet\n[agent]\nserver = central.int.example.com\n[master]\ndaemonize = false\nssl_client_header = SSL_CLIENT_S_DN\nssl_client_verify_header = SSL_CLIENT_VERIFY\ndns_alt_names = puppet,puppet.szervernet.hu\n{noformat}\n\u00a0\n\nWhen I start agent, it does not pick up the overridden ssldir, nor the server directive under its own section.\n\n\u00a0\n{noformat}\nroot@central:/etc/puppet# puppet agent --configprint ssldir\n/etc/puppetlabs/puppet/ssl\nroot@central:/etc/puppet#{noformat}\nI deleted /var/lib/puppet/ssl twice in a row and did not helped. But regardless of this, I think agent *have to* pick up overridden settings. Even if it's not follows any standards. If master can use these settings, agent have to do so.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16335", "fixedVersions": [], "id": "16335", "issueType": "Bug", "key": "SERVER-2244", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b34b9718f518562607d35db", "resolution": "Fixed", "resolutionDate": "2022-02-22T15:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "[Puppet Agent] Agent cannot resolve ssldir correctly", "timeSpent": "PT0S", "updated": "2022-02-22T15:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e027b668-be4d-49ab-bf28-0bbf6c095b6a", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hi, [~accountid:557058:e027b668-be4d-49ab-bf28-0bbf6c095b6a]. That does look like the same issue. Can you try upgrading to the latest Puppet Server release in the 2.x series (2.8.1) and see if that resolves your problem?", "created": "2018-07-03T10:07:00.000000"}, {"author": "557058:e027b668-be4d-49ab-bf28-0bbf6c095b6a", "body": "Hi\u00a0[~accountid:557058:104b5720-714d-4539-b455-df472251ec89],\n\nUnfortunately we couldn't upgrade the puppet server for now as this happened in the prod puppet master.\u00a0\n\nTo elaborate more on the issue we had, this has happened during the catalog compilation and it fails at the below code\n\n{code}\n\ncase $consul_replicate::init_style {\n 'systemd':{\n file { '/lib/systemd/system/consul-replicate.service':\n mode => '0644',\n owner => 'root',\n group => 'root',\n content => template('consul_replicate/consul-replicate.systemd.erb')\n } ~>\n\n\u00a0\n\n{code}\n\n\u00a0\n\nIt is not able to create the consul_replicate.service as it failed to parse consul-replicate.systemd.erb template.\n\nThe consul-replicate.systemd.erb file has the following,\n\n{code}\n\n[Unit]\nDescription=Consul-Replicate Daemon\nWants=basic.target\nAfter=basic.target network.target\n\n[Service]\nExecStart=<%= scope.lookupvar('consul_replicate::bin_dir') %>/consul-replicate \\\n -config <%= scope.lookupvar('consul_replicate::config_dir') %>/config.hcl <%= scope.lookupvar('consul_replicate::extra_options') %>\nExecReload=/bin/kill -HUP $MAINPID\nSuccessExitStatus=0 12\nRestart=on-failure\nRestartSec=10s\nLimitNOFILE=4096\n\n[Install]\nWantedBy=multi-user.target\n\n{code}", "created": "2018-07-03T19:36:00.000000"}, {"author": "557058:e027b668-be4d-49ab-bf28-0bbf6c095b6a", "body": "And the consul_replicate version used is v0.3.1", "created": "2018-07-04T17:54:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "So in that linked ticket they have a work around that doesn't involve upgrading. They found that this issue is caused when an unknown variable is looked up and can be worked around by updating the template to include this:\n{code}\nval = scope.exists?(name) ? scope.lookupvar(name) : nil\n{code}\ndo you might want to try replacing references to lookuvar like {{scope.lookupvar('consul_replicate::bin_dir')}} with something more like\n{code}\nscope.exists?('consul_replicate::bin_dir') ? scope.lookupvar('consul_replicate::bin_dir') : nil\n{code}", "created": "2018-07-06T14:16:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Did that work around solve your issue [~accountid:557058:e027b668-be4d-49ab-bf28-0bbf6c095b6a]?", "created": "2018-07-17T15:29:00.000000"}, {"author": "557058:e027b668-be4d-49ab-bf28-0bbf6c095b6a", "body": "Thanks [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Its fixed.", "created": "2018-07-19T22:35:00.000000"}], "components": ["Puppet Server"], "created": "2018-07-02T20:24:00.000000", "creator": "557058:e027b668-be4d-49ab-bf28-0bbf6c095b6a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a074938"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzo1rz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_49379532_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1427291038"}], "description": "I had a look at this ticket https://puppet.atlassian.net/browse/SERVER-1408\u00a0\n\nLet me know if this issue is related to the puppet server.\u00a0\n\n\u00a0\n\nBelow is the stacktrace log,\n\nInfo: Using configured environment 'development'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Function Call, Failed to parse template <template file>:\n\u00a0\u00a0Filepath: org/jruby/RubyKernel.java\n\u00a0\u00a0Line: 1320\n\u00a0\u00a0Detail: integer _*<number>*_ too big to convert to `int'\n at\u00a0\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/+rest.rb:212:in+ `is_http_200?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/+rest.rb:110:in+ `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/+indirection.rb:194:in+ `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/configurer.rb:377:in `block in retrieve_new_catalog'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/+util.rb:386:in+ `block in thinmark'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:385:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/configurer.rb:376:in `retrieve_new_catalog'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/+configurer.rb:78:in+ `retrieve_catalog'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/+configurer.rb:147:in+ `prepare_and_retrieve_catalog'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/+configurer.rb:281:in+ `run_internal'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/+configurer.rb:186:in+ `block in run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/+context.rb:65:in+ `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/con", "environment": "puppet 4.5.2, puppet server\u00a02.0.9", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17158", "fixedVersions": [], "id": "17158", "issueType": "Bug", "key": "SERVER-2243", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e027b668-be4d-49ab-bf28-0bbf6c095b6a", "resolution": "Fixed", "resolutionDate": "2018-07-19T22:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "integer <number> too big to convert to `int'", "timeSpent": "PT0S", "updated": "2018-07-19T22:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Without a major change to how the commands are managed/invoked I don't think we can display the help for those commands when we can't load the config dir, however their help output (like for ruby) wouldn't help much since the error is a Puppet Server specific configuration problem.\n\nWe could remove the stack trace and clean up the subcommand error so it is just (something like):\n{code}~ $ /opt/puppetlabs/bin/puppetserver ruby --help\nError: /etc/puppetlabs/puppetserver/conf.d must exist and must be readable by the current user\n~ $ echo $?\n0\n{code}", "created": "2018-07-17T16:24:00.000000"}, {"author": "623c0b5ca1d81f0069d8de18", "body": "I had a suspicion that loading configuration to display help is necessary (with faces and such).\n\nI'll be quite happy simply getting a decent error message like you're suggesting rather than having to decipher my problem from the ruby traceback.", "created": "2018-07-18T01:36:00.000000"}], "components": [], "created": "2018-07-02T05:52:00.000000", "creator": "623c0b5ca1d81f0069d8de18", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4de26c05"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzo0qn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3917991649_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_108771892214"}], "description": "*Puppet Version: Puppet Enterprise 2018.1.0*\n *Puppet Server Version:2018.1.0.41*\n *OS Name/Version: RedHat Enterprise Linux 7.3*\n\nWhen running puppetserver <subcommand> --help as an unprivileged user it can't load\u00a0/etc/puppetlabs/puppetserver/conf.d and gives a ruby backtrace.\n\n*Desired Behavior:*\n\nReturn normal help output instead of the ruby backtrace. If it needs to run as root to be able to load commands and provide help give a warning.\n\n*Actual Behavior:*\n\n~ $ /opt/puppetlabs/bin/puppetserver ruby --help\nException in thread \"main\" java.io.FileNotFoundException: Configuration path '/etc/puppetlabs/puppetserver/conf.d' must exist and must be readable.\n at puppetlabs.trapperkeeper.config$get_files_from_config.invokeStatic(config.clj:82)\n at puppetlabs.trapperkeeper.config$get_files_from_config.invoke(config.clj:76)\n at clojure.core$map$fn__4785.invoke(core.clj:2644)\n at clojure.lang.LazySeq.sval(LazySeq.java:40)\n at clojure.lang.LazySeq.seq(LazySeq.java:49)\n at clojure.lang.RT.seq(RT.java:521)\n at clojure.core$seq__4357.invokeStatic(core.clj:137)\n at clojure.core$seq__4357.invoke(core.clj:137)\n at clojure.core$tree_seq$walk__5273$fn__5274.invoke(core.clj:4763)\n at clojure.lang.LazySeq.sval(LazySeq.java:40)\n at clojure.lang.LazySeq.seq(LazySeq.java:49)\n at clojure.lang.LazySeq.more(LazySeq.java:85)\n at clojure.lang.RT.more(RT.java:697)\n at clojure.core$rest__4343.invokeStatic(core.clj:73)\n at clojure.core$flatten.invokeStatic(core.clj:6850)\n at clojure.core$flatten.invoke(core.clj:6850)\n at puppetlabs.trapperkeeper.config$load_config.invokeStatic(config.clj:96)\n at puppetlabs.trapperkeeper.config$load_config.invoke(config.clj:90)\n at puppetlabs.puppetserver.cli.subcommand$load_tk_config.invokeStatic(subcommand.clj:23)\n at puppetlabs.puppetserver.cli.subcommand$load_tk_config.invoke(subcommand.clj:17)\n at puppetlabs.puppetserver.cli.subcommand$run.invokeStatic(subcommand.clj:44)\n at puppetlabs.puppetserver.cli.subcommand$run.invoke(subcommand.clj:33)\n at puppetlabs.puppetserver.cli.subcommand$jruby_run.invokeStatic(subcommand.clj:60)\n at puppetlabs.puppetserver.cli.subcommand$jruby_run.invoke(subcommand.clj:56)\n at puppetlabs.puppetserver.cli.ruby$_main.invokeStatic(ruby.clj:13)\n at puppetlabs.puppetserver.cli.ruby$_main.doInvoke(ruby.clj:11)\n at clojure.lang.RestFn.invoke(RestFn.java:457)\n at clojure.lang.Var.invoke(Var.java:394)\n at clojure.lang.AFn.applyToHelper(AFn.java:165)\n at clojure.lang.Var.applyTo(Var.java:700)\n at clojure.core$apply.invokeStatic(core.clj:646)\n at clojure.main$main_opt.invokeStatic(main.clj:314)\n at clojure.main$main_opt.invoke(main.clj:310)\n at clojure.main$main.invokeStatic(main.clj:421)\n at clojure.main$main.doInvoke(main.clj:384)\n at clojure.lang.RestFn.invoke(RestFn.java:512)\n at clojure.lang.Var.invoke(Var.java:409)\n at clojure.lang.AFn.applyToHelper(AFn.java:178)\n at clojure.lang.Var.applyTo(Var.java:700)\n at clojure.main.main(main.java:37)\n~ $ ls -l /etc/puppetlabs/puppetserver/\nls: cannot open directory /etc/puppetlabs/puppetserver/: Permission denied", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "17103", "fixedVersions": [], "id": "17103", "issueType": "Bug", "key": "SERVER-2242", "labels": ["final_triage", "low-hanging-fruit", "usability"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0b5ca1d81f0069d8de18", "resolution": "Won't Fix", "resolutionDate": "2022-01-26T11:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "/opt/puppetlabs/bin/puppetserver <command> --help backtraces as non-root", "timeSpent": "PT0S", "updated": "2022-01-26T11:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c09751c7f6a007049e417", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "In general, the first thing would be to try and reproduce this with the least complex setup possible.\nIn doing that first it would be great to know what versions of Puppet, Puppet Server, and Apache module you're working with.\n\nHowever, from the stack trace it looks like there's an invalid tag being created, and from the content of the tag it looks like it is something that could be interpretted by Ruby as a number in hex format rather than a string: {{puppet::resource::type:0x15418fcd}}. Is there a value being passed into the hosts manifests that exhibit this failure that could be coerced into hex?\n\nI'll look into how that could happen from the code side if you could try that reproduction experiment on your side.", "created": "2018-07-03T09:43:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "That error is new in recent releases of Puppet/Puppet Server (I wrote it\u00a0 : | ). It should only cause an issue when the string given can't be converted to UTF-8 or ASCII (all manifests should be interpreted as UTF-8 and Ruby functions may create ASCII). If you can give me an example usage of the apache module that triggers this (potentially with your locale settings), I'll see if I can trace this through.", "created": "2018-07-03T10:45:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Is this still an issue for you [~accountid:623c09751c7f6a007049e417]? I'd love to figure out what is causing this issue, if you can help me reproduce it.", "created": "2018-07-17T16:25:00.000000"}], "components": ["Puppet Server"], "created": "2018-07-02T01:20:00.000000", "creator": "623c09751c7f6a007049e417", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@433d16f1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzo0ov:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_116593587_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_116129568921"}], "description": "I've got the following issue on my puppet node :\u00a0\n{code:java}\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, Invalid tag '#<puppet::resource::type:0x15418fcd>' at /etc/puppetlabs/code/environments/integration/modules/apache/manifests/vhost.pp:477:7 at /etc/puppetlabs/code/environments/integration/modules/apache/manifests/init.pp:361 on node ra1sxlrd1n.xxx\n{code}\n\nHere is the full stack on server\n{code}\n2018-07-02 09:08:38,656 ERROR [qtp1040887762-70] [puppetserver] Puppet Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, Invalid tag '#<puppet::resource::type:0x15\n418fcd>' at /etc/puppetlabs/code/environments/integration/modules/apache/manifests/vhost.pp:477:7  at /etc/puppetlabs/code/environments/integration/modules/apache/manifests/init.pp:361 on node ra1sxlrd1n.xxx\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/tagging.rb:27:in `tag'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/tagging.rb:13:in `tag'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource.rb:285:in `initialize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:360:in `resource'\n/etc/puppetlabs/code/environments/integration/modules/stdlib/lib/puppet/parser/functions/defined_with_params.rb:45:in `real_function_defined_with_params'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:174:in `function_defined_with_params'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:167:in `function_defined_with_params'\n/etc/puppetlabs/code/environments/integration/modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb:38:in `real_function_ensure_resource'\norg/jruby/RubyArray.java:1613:in `each'\n/etc/puppetlabs/code/environments/integration/modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb:36:in `real_function_ensure_resource'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:174:in `function_ensure_resource'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:167:in `function_ensure_resource'\n/etc/puppetlabs/code/environments/integration/modules/apache/manifests/vhost.pp:477:in `stack'\norg/jruby/RubyKernel.java:1111:in `eval'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/puppet_stack.rb:30:in `stack'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:283:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:917:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:886:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:981:in `eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/scope.rb:944:in `with_guarded_scope'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:979:in `eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:622:in `eval_BlockExpression'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:622:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:981:in `eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/scope.rb:944:in `with_guarded_scope'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:979:in `eval_IfExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:622:in `eval_BlockExpression'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:622:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:31:in `safeevaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:182:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:81:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:73:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:587:in `evaluate_definitions'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:585:in `evaluate_definitions'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:584:in `evaluate_definitions'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/errors.rb:64:in `exceptwrap'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:583:in `evaluate_definitions'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:611:in `evaluate_generators'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:608:in `evaluate_generators'\norg/jruby/RubyKernel.java:1511:in `loop'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:605:in `evaluate_generators'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:187:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:187:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:241:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:162:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:33:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:266:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:264:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:223:in `benchmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:222:in `benchmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:262:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:53:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:194:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:121:in `do_find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:48:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:241:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:47:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:60:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:58:in `process'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/master.rb:42:in `handleRequest'\nPuppet$$Server$$Master_1072808802.gen:13:in `handleRequest'\nrequest_handler_core.clj:273:in `invoke'\njruby_request.clj:46:in `invoke'\njruby_request.clj:31:in `invoke'\nrequest_handler_service.clj:34:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:2493:in `invoke'\nring_middleware.clj:284:in `invoke'\ncore.clj:168:in `invoke'\ncore.clj:211:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:330:in `invoke'\ncore.clj:51:in `invoke'\nringutils.clj:86:in `invoke'\nmaster_core.clj:428:in `invoke'\nring.clj:21:in `invoke'\nring.clj:12:in `invoke'\ncomidi.clj:249:in `invoke'\njetty9_core.clj:424:in `invoke'\nnormalized_uri_helpers.clj:80:in `invoke'\n{code}\n\nPuppet version:\npuppetserver-2.5.0-1.el7\n\nHere is the puppet code\n{code}\ninclude apache\n{code}\n\nThis problem occurs also on another puppet code (e.g. tomcat module). The error pattern seems to be a call to stdlib function 'ensure_resource' on any defined resource type.\n\nThis problem appears recently, and I need help to find what type of change or configuration can produce this issue.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17101", "fixedVersions": [], "id": "17101", "issueType": "Bug", "key": "SERVER-2241", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c09751c7f6a007049e417", "resolution": "Won't Fix", "resolutionDate": "2022-03-08T10:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, Invalid tag '#<puppet::resource::type:0x15 418fcd>", "timeSpent": "PT0S", "updated": "2022-03-08T10:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Is it possible to use Puppet settings w/o Puppet automatically creating and applying the settings catalog?\n\nI was under the impression that it wasn't and we'd need to make that configurable first (PUP-8682).", "created": "2018-06-27T10:20:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "If we're able to use mulithreaded = true pervasively this will be a lot less of an issue.\u00a0 I'd like to wait to see how multithreaded goes and come back to this after we have more info.\u00a0\u00a0", "created": "2020-03-26T11:53:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Besides the performance of starting up a JRuby, I think this is ultimately a packaging issue (these settings should be set by the puppetserver package, if possible).\n\nNot actually using the server to apply a local catalog is also one of two things requiring us to load core types and providers. It would valuable from a maintenance perspective to say the t&p code is not a server-side concern.", "created": "2020-03-26T14:05:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:5b9fcedc03b52466f05c4510] has PR up to allow the settings catalog to be skipped, see https://github.com/puppetlabs/puppet/pull/8356.\n\nI modified puppetserver to set that setting to false and the time to create a JRuby instance went from 11.1 to 3.8 seconds. Puppetserver relied on the settings catalog to load parts of puppet, so I had to add the following explicit requires:\n\n{code:diff}\ndiff --git a/src/ruby/puppetserver-lib/puppet/server/puppet_config.rb b/src/ruby/puppetserver-lib/puppet/server/puppet_config.rb\nindex 17b5ab96..5a988af4 100644\n--- a/src/ruby/puppetserver-lib/puppet/server/puppet_config.rb\n+++ b/src/ruby/puppetserver-lib/puppet/server/puppet_config.rb\n@@ -1,6 +1,12 @@\n require 'puppet/server'\n require 'puppet/server/logger'\n \n+require 'puppet/indirector'\n+require 'puppet/file_serving/content'\n+require 'puppet/file_serving/metadata'\n+require 'puppet/file_bucket/file'\n+require 'puppet/node'\n+\n class Puppet::Server::PuppetConfig\n \n   # Configure the Puppet.settings object\n{code}\n\n{quote}\nIt would valuable from a maintenance perspective to say the t&p code is not a server-side concern.\n{quote}\n\nCompletely agree. In the past we've had problems where the settings catalog loads the file type and the concat module loads parts of the file type, eg [owner, group, mode|https://github.com/puppetlabs/puppetlabs-concat/blob/203b751702ee155198c535c08443df7b9fef2e4e/lib/puppet/type/concat_file.rb#L1-L3], see PUP-8733 and SERVER-40", "created": "2020-10-05T16:01:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think the title of this got messed up. I've put it back to the old thing.", "created": "2021-02-18T18:03:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Ah no worries, I changed it earlier to more accurately reflect the \"why\" as opposed to the \"how\". AFAIK, this is the last bit that's preventing us from no longer loading types and providers in pupetserver (even when using pcore resource types) due to the way the settings catalog triggers type/provider loading and all of the provider confining logic, which triggers facter, etc.", "created": "2021-02-18T21:36:00.000000"}], "components": [], "created": "2018-06-26T23:49:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d61d8d7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0u96s"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jun/18"}], "description": "Each JRuby instance applies a settings catalog to ensure the server's file/directories exist and have the correct permissions:\n\n{code:ruby}\n    Puppet.settings.use :main, :master, :ssl, :metrics\n{code}\n\nThis doubles the amount of time it takes to initialize the JRuby instance:\n\nWhen settings catalog is initialized (9.52 seconds)\n\n{noformat}\n2018-06-26 22:34:21,228 DEBUG [clojure-agent-send-pool-5] [p.s.j.i.jruby-agents] Priming JRubyInstance 1 of 1\n2018-06-26 22:34:21,229 DEBUG [nREPL-worker-4] [p.t.internal] Finished running lifecycle function 'init' for service ':VersionedCodeService'\n2018-06-26 22:34:21,229 INFO  [clojure-agent-send-pool-5] [p.s.j.i.jruby-internal] Creating JRubyInstance with id 1.\n2018-06-26 22:34:21,229 DEBUG [nREPL-worker-4] [p.t.internal] Running lifecycle function 'init' for service ':PuppetServerConfigService'\n2018-06-26 22:34:25,553 INFO  [clojure-agent-send-pool-5] [puppetserver] Puppet Puppet settings initialized; run mode: master\n2018-06-26 22:34:25,558 DEBUG [clojure-agent-send-pool-5] [p.s.j.puppet-environments] Registering environment 'production'\n2018-06-26 22:34:25,559 DEBUG [clojure-agent-send-pool-5] [puppetserver] Puppet Caching environment 'production' (ttl = 0 sec)\n2018-06-26 22:34:25,559 DEBUG [clojure-agent-send-pool-5] [puppetserver] Puppet Applying settings catalog for sections main, master, ssl, metrics\n...\n2018-06-26 22:34:30,748 INFO  [clojure-agent-send-pool-5] [p.s.j.i.jruby-agents] Finished creating JRubyInstance 1 of 1\n{noformat}\n\nWhen the settings catalog is skipped (4.229 seconds)\n\n{noformat}\n2018-06-26 22:31:51,944 DEBUG [clojure-agent-send-pool-2] [p.s.j.i.jruby-agents] Priming JRubyInstance 1 of 1\n2018-06-26 22:31:51,944 INFO  [clojure-agent-send-pool-2] [p.s.j.i.jruby-internal] Creating JRubyInstance with id 1.\n2018-06-26 22:31:56,173 INFO  [clojure-agent-send-pool-2] [puppetserver] Puppet Puppet settings initialized; run mode: master\n...\n2018-06-26 22:31:56,682 INFO  [clojure-agent-send-pool-2] [p.s.j.i.jruby-agents] Finished creating JRubyInstance 1 of 1\n{noformat}\n\nWe could only apply the settings catalog once when puppetserver starts, and skip it for each additional JRuby instance, saving about 5 seconds each time.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16765", "fixedVersions": [], "id": "16765", "issueType": "Improvement", "key": "SERVER-2240", "labels": ["ondeck3", "performance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Only apply settings catalogs once", "timeSpent": "PT0S", "updated": "2022-03-09T09:44:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-06-22T11:31:00.000000", "creator": "557058:613151bd-b161-4bc3-9e32-335fdcef4d89", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66b0ad10"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hznugn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7523483204_*|*_5_*:*_1_*:*_173695201_*|*_6_*:*_1_*:*_0"}], "description": "Java 11 will remove modules deprecated in Java 9 that we currently use (indirectly) to run puppetserver.\n\n\u00a0\nWe need to update our version of liberator to the version here:\n\n[https://github.com/puppetlabs/clj-parent/pull/114]\n\nThat PR includes discussion of how to update Puppet Server's code and tests when we upgrade.\n\n\u00a0\n\nAlso, Puppet Server's test suite makes use of HexBinaryAdapter [here|https://github.com/puppetlabs/puppetserver/blob/master/test/integration/puppetlabs/services/jruby/request_handler_test.clj#L4] we will need to remove that from the test because it will be removed in Java 11.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14790", "fixedVersions": ["SERVER 6.0.0"], "id": "14790", "issueType": "Improvement", "key": "SERVER-2239", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:613151bd-b161-4bc3-9e32-335fdcef4d89", "resolution": "Fixed", "resolutionDate": "2018-09-17T13:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Java 11 Dependency Support", "timeSpent": "PT0S", "updated": "2018-09-19T13:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [], "components": [], "created": "2018-06-21T14:38:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "PR testing for Puppet can be ocnfigured to run Puppet acceptance tests marked with \"server\""}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e5879c0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2in:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_350038402_*|*_1_*:*_1_*:*_1073833_*|*_10007_*:*_1_*:*_686538245_*|*_3_*:*_1_*:*_91231354_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_435933391_*|*_10005_*:*_1_*:*_27826"}], "description": "Currently, the PR testing against the Puppet repo runs the subset of tests in the repo that target agent functionality (no master). However, when targeting code that is to be ran on the master, or whose point is coordination with a master, it makes sense to run the tests that utilize the master. \n\nIn the test suite itself the those tests are tagged with the tag \"server\" and that tests with that tag are normally excluded.\n\nWe should update the puppet PR testing to allow toggling whether or not to run tests tagged with \"server\".", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "14787", "fixedVersions": [], "id": "14787", "issueType": "Task", "key": "SERVER-2238", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2018-07-09T17:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make \"jenkins please test this\" in agent testing configurable so it can run tests tagged \"server\"", "timeSpent": "PT0S", "updated": "2018-07-09T17:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] did this get through CI yet?", "created": "2018-07-13T13:33:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Running now, had a test issue.\n\nUpdate: it's through FOSS, enough for the release. We still need to add this platform to the PE pipelines.", "created": "2018-07-13T14:11:00.000000"}], "components": [], "created": "2018-06-20T13:27:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppet Server packages for Ubuntu 18.04 are available on the build server\n* All of Puppet Server's acceptance tests are run with the server running on Ubuntu 18.04"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@294cf9b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8953"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1pb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_508016662_*|*_1_*:*_1_*:*_2568550_*|*_10007_*:*_2_*:*_7394088_*|*_3_*:*_2_*:*_1563433_*|*_5_*:*_1_*:*_54154790_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_111901630_*|*_10005_*:*_1_*:*_1712724642"}], "description": "Once RE has completed the EZBake work for this (see RE-11085), we need to update our CI jobs to include Ubuntu 18.04 in our build and test matrices. If this reveals any issues with the new OS that need to be fixed, separate tickets can be filed with the details.", "epicLinkSummary": "Ship platform master for Ubuntu 18.04", "estimate": "PT0S", "externalId": "17099", "fixedVersions": ["SERVER 5.3.4"], "id": "17099", "issueType": "Task", "key": "SERVER-2237", "labels": [], "originalEstimate": "PT0S", "parent": "25274", "parentSummary": "Ship platform master for Ubuntu 18.04", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2018-07-18T07:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Build and Test Puppet Server for Ubuntu 18.04", "timeSpent": "PT0S", "updated": "2018-07-18T07:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I was able to get this to work just fine, creating a custom report processor inside Puppet installed under {{vendor_ruby}}. Did you perhaps not add the new processor to your {{reports}} setting as described near the bottom of https://puppet.com/docs/puppet/5.0/reporting_write_processors.html? Neither custom handlers nor the built-in \"log\" handler are enabled by default.\n\nIt would also be important to restart puppetserver after adding your new processor.", "created": "2018-06-22T17:33:00.000000"}, {"author": "61ba0348acc926006a06fc59", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] That was exactly what I did. I tried on a fresh server, just for the build in log handler. The result and log message was the same. The log handler was not found.", "created": "2018-06-28T15:13:00.000000"}, {"author": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "body": "I observe the similar behavior with\u00a0puppetlabs-tagmail (v2.4.0) and puppetserver 5.3.5\n\nAs far as I can see, module puts tagmail.rb into\u00a0\n\n/opt/puppetlabs/puppet/cache/lib/puppet/reports/tagmail.rb and that location is ignored by puppetserver. Copying manually report inside\u00a0\n\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/reports fixes the issue, but I don't think that works as 'designed'\n\n\u00a0\n\n\u00a0\n\n\u00a0", "created": "2018-09-22T10:19:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So I'm actually hearing two different reports here. The original description on this ticket seems to say that putting the report processor in a module fixes the problem, while the most recent comment says it doesn't work in that case, and only works if the code is dropped directly into the Puppet install.\n\nI personally have gotten it working installing the report processor directly, and haven't tried the module install.", "created": "2019-02-13T15:44:00.000000"}, {"author": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "body": "It was reported long time ago, so I don't remember exact details, but I think the problem was fixed in the latest versions of puppetserver, which now adds both directories in \n\n{noformat}\n    ruby-load-path: [\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby\",\n        \"/opt/puppetlabs/puppet/cache/lib\"\n    ]\n{noformat}\n\nThere is still a problem with report processors installed by modules, since module has to track changes in lib/ separately. We ended up with deploying a file with version number to trigger puppetserver restart as a workaround, but it's outside of scope of this ticket\n", "created": "2019-02-13T16:24:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Excellent, thank you. I'm going to close this ticket then.", "created": "2019-02-13T16:36:00.000000"}], "components": ["Puppet Server"], "created": "2018-06-19T10:31:00.000000", "creator": "61ba0348acc926006a06fc59", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@55f9eef6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1ov:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jun/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_198657406_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_20155073462_*|*_10006_*:*_1_*:*_316930786_*|*_10005_*:*_2_*:*_4437688"}], "description": "I tried to deploy a custom report handler today in\u00a0/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/reports/, but also the default handlers are not loaded:\n\npuppetserver.log:\n{code}Puppet No report named 'log'\n\nPuppet No report named 'custom'\n\n{code}\n\u00a0\n\nIf I put the handler in a module under\u00a0lib/puppet/reports/custom.rb it is loaded correctly and works.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17391", "fixedVersions": [], "id": "17391", "issueType": "Bug", "key": "SERVER-2236", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61ba0348acc926006a06fc59", "resolution": "Fixed", "resolutionDate": "2019-02-13T16:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver doesnt load report handlers from /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/reports/", "timeSpent": "PT0S", "updated": "2019-02-13T16:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-06-19T03:34:00.000000", "creator": "623a4b06ee1b5a0070286612", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c90f9e4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hznqlz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_223866945_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_108752432689"}], "description": "Probably not relevant but we use Puppet 5.5.3, Puppetserver 5.3.3 on Debian jessie\n\nCurrently, when a generate call produces output on STDERR a log line\n\nWARN  [qtp64316283-60345] [c.p.p.ShellUtils] Executed an external process which logged to STDERR:\n\nfollowed by the stderr output of the process is logged.\n\nTo debug these kinds of problems it would be very helpful if some extra information could be included in the log line to narrow down which process produced the output or ideally to directly point to the generate call location in the manifests that resulted in the call of the external process.\n\nIf the location is too difficult to obtain at least the program called and the parameters would be useful to have.\n\nIt is not easily possible to solve this by having the called script produce more output on its identity and parameters since that output would have to be generated conditionally only when other output on stderr is produced, which is non-trivial to determine in the general case (e.g. a shell script calling lots of other commands).\n", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "15153", "fixedVersions": [], "id": "15153", "issueType": "New Feature", "key": "SERVER-2235", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4b06ee1b5a0070286612", "resolution": "Declined", "resolutionDate": "2021-12-01T09:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Include more information in log lines about external processes which logged to STDERR", "timeSpent": "PT0S", "updated": "2021-12-01T09:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:8db25e7a-4bdb-4fe2-af6b-f0a9bc714e12", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], I think you mentioned casting about for this ticket?", "created": "2018-09-17T17:21:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] I'd love to update the PE console so that unsigned certificates isn't grabbing such a large payload. ", "created": "2019-09-09T13:49:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] this came up again yesterday with a 6 megabyte payload for one customer.  Any possibility of addressing this in the near term?  It could be a big usability win.", "created": "2020-06-11T09:47:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Docs PR: https://github.com/puppetlabs/puppetserver/pull/2379", "created": "2020-07-31T19:22:00.000000"}], "components": [], "created": "2018-06-13T12:39:00.000000", "creator": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@dfdf492"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwl99:zkbbo"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The `/puppet-ca/v1/certificate_statuses` endpoint now accepts a `state` parameter that will filter search results by the given certificate state. Accepted states are 'requested', 'signed', and 'revoked'."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_233855034_*|*_1_*:*_1_*:*_105245060_*|*_10007_*:*_1_*:*_100029801_*|*_3_*:*_1_*:*_90949119_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4066046621_*|*_10005_*:*_1_*:*_62964292668"}], "description": "At one point it was possible to list out agents with unsigned certificates via GET /puppet-ca/v1/certificate_requests.\u00a0 The documentation states that this endpoint is no longer supported.\n(This endpoint used to return the PEM files, which is probably not what we want here.)\n\nGET /puppet-ca/v1/certificate_statuses will list out *all* the certificates and statuses, but this is undesirable in the case where the payload is very large, and we really just want a list of agents requesting certs.\n\n*Notes*\nIt makes sense to do this with a query param on the [endpoint|https://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L320-L334]. If it's hard to allow filtering on status generally, we can just do the {{requested}} case for now and add the others later. The endpoint should continue to return all the certificate statuses if no query param is passed.\n\n*Outcomes*\n* Endpoint that can return at least all agents with requested certs (CSRs)\n* Documentation for the endpoint\n* tk-auth updates if needed (this might require changes in {{puppet_enterprise}})\n* clojure level tests", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17389", "fixedVersions": ["SERVER 6.13.0"], "id": "17389", "issueType": "Improvement", "key": "SERVER-2233", "labels": ["ondeck1", "post_pup_6"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "resolution": "Fixed", "resolutionDate": "2020-08-03T11:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow for retrieving a list of agents with unsigned certificates through the API", "timeSpent": "PT0S", "updated": "2021-06-01T15:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:613151bd-b161-4bc3-9e32-335fdcef4d89", "attachments": [], "comments": [], "components": [], "created": "2018-06-12T14:00:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ab4043"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hznm5j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_512506278_*|*_1_*:*_1_*:*_610539615_*|*_10007_*:*_1_*:*_14365097_*|*_3_*:*_1_*:*_79573641_*|*_5_*:*_1_*:*_7334940855_*|*_6_*:*_1_*:*_0"}], "description": "On OSX, the {{sets-env-correctly}} test fails to clear the {{__CF_USER_TEXT_ENCODING}}\u00a0environment variable. IIRC, this is a fragile test that started failing with an OSX update this winter. I believe Haus looked into it and didn't see an easy way to keep the test while making it more robust. We should fix this rather than live with it in our development environments.\n\nSee:\n{code}\nlein test :only puppetlabs.puppetserver.shell-utils-test/sets-env-correctly\nFAIL in (sets-env-correctly) (shell_utils_test.clj:97)\nsets environment variables correctly\nFound unexpected environment variables:#{\"__CF_USER_TEXT_ENCODING\"}\nexpected: (empty? extra-keys)\n  actual: (not (empty? #{\"__CF_USER_TEXT_ENCODING\"}))\n {code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16764", "fixedVersions": ["SERVER 6.0.0"], "id": "16764", "issueType": "CI Blocker", "key": "SERVER-2232", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-06-26T16:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix execution test with __CF_USER_TEXT_ENCODING", "timeSpent": "PT0S", "updated": "2018-09-19T13:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "Including this for reference, since I was having trouble remembering how it worked. In PE, at least, the file-sync service is not involved.  The initial copy of the hostcrl is downloaded from the ca by the agent on its first run (or whenever the crl.pem is not present). \n\nAfter that, since puppet is being used to manage PE, and is how the compile master is installed and configured, the pe modules include a [resource|https://github.com/puppetlabs/puppetlabs-puppet_enterprise/blob/2018.1.0/manifests/profile/master.pp#L248-L262] to sync the primary master's cacrl file to the compile master's hostcrl.  That gets updated as often as the agent runs on the compile master.\n", "created": "2018-06-12T13:54:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "So we are thinking of having the \"compile-masters\" parameter (list) inside of ca.conf file within the certificate-authority group. So don't need to be in a separate file. The ca.conf resides in /etc/puppetlabs/puppetserver/conf.d folder. \n\nAn example value of this config parameter: \n\ncertificate-authority: {\n  compile-masters: [ \"compile-master1-fqdn\", \"compile-master2-fqdn\" ]\n}\n\nWould MoM be always part of the \"xxx.xxx.masters\" node group? If yes, can we expect compile-masters to be set with at least that value before puppetserver starts or it would take one agent run on the MoM to have it updated?\n", "created": "2018-06-14T18:08:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "As I think about it, does PE know if the parameter it is updating actually changed since the last time for it to make a decision whether to restart pe-puppetserver? Most of the time the compile masters list is expected to stay same unless one actually gets added or removed. Just wondering if we might see some un-necessary server reloads. ", "created": "2018-06-14T18:24:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "[~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330]\nCorrect me but am thinking I would need to add the logic to write the output of \"select nodes belong to 'masters' node group' query to puppetserver-confdir/conf.d/ca.conf in this puppetlabs_puppet_enterprise file spec/classes/master/puppetserver_spec.rb. \n\nBut I don't seem to understand the syntax to express the above correctly. Also is it ok to do the puppetdb query using hardcoded service configuration (for now) or do you have any suggestions on doing it the right way while avoiding the hardcoding? \nAnd can you point me to any puppetdb queries from within this module (puppetlabs_puppet_enterprise) unless they are not exactly in this module. \n\nAny my above question - does it know if there was a real change in the parameter value it is updating within the config file and only then trigger a reload or will it do it every time it updates any of the config files? \n", "created": "2018-06-18T09:48:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "Take a look at this function for an example: \nhttps://github.com/puppetlabs/puppetlabs-puppet_enterprise/blob/irving/functions/is_using_mco.pp.  It's returning a boolean", "created": "2018-06-19T17:57:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "doesnt this sound like a bit of a workaround of lowering the default cert TTL to something much lower so revocations would mostly not be needed?\n\nif an agent could auto-renew its cert , the default ttl could be lowered to a month or even a week. ", "created": "2018-08-20T22:51:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53] the main use case i've heard for revocation is so people can re-install a host and issue a cert with the same name against a new agent keypair - so it's important for the deletion of a node and revocation of its cert to quickly converge across the infrastructure.", "created": "2018-08-21T11:45:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "IMHO the problem with the crl file now is that it can grow very large because the default lifetime of 5 years. so if you decom a node after a day you'll need to have the revocation entry 4 years and 364 days in the crl file.\n\nif you only have a lifetime of a month you can evict the expired certs from the crl file. \n\nfor the re-install case IMHO a better solution is to preserve the cert files (and possibly other credentials). we do this since about forever. \n\nif you start managing different crls you'll have a split view on the revocations.\n\nand how about the puppetlabs certregen module? what about users that re-use puppet certs including crl for other services?", "created": "2018-08-23T01:15:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "is there some prior art of doing split crl lists with other tools/services? ", "created": "2018-08-23T01:17:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "We thought about the idea of reducing certificate validity periods but that would depend on customers in case they use the certificate outside Puppet. In case of more volatile environments like cloud etc. where a portion of the nodes could be spun up/down in very short periods then even a short certificate validity like month would have same issue. We will consider this for future.\nI don't quite see any issue with split crl approach so long as we ensure that the relevant relying parties get correct revocation status of the entities they communicate with. With OCSP one get to query the status of entities you care about. With Puppet's hub and spoke model agent nodes only need to know the revocation status of masters. Infrastructure nodes will use the complete CRL.  ", "created": "2018-08-23T09:23:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2018-06-08T16:16:00.000000", "creator": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "CA publishes an additional infrastructure CRL that will only contain master of master and compile master certificates. \nAgent requests for CRL, over existing API, should be satisfied using this CRL. \nFull CRL should continue to include all revoked certificates and be used by any infrastructure nodes (compile masters) using the existing 'file-sync' mechanism. "}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7962dcac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2221"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hznizz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "A list of certs that, when revoked, should be added to a separate CRL (useful for specifying special nodes in your infrastructure like compile masters). Whether this special CRL or the default CRL is distributed to agents is configurable."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jun/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_871225219_*|*_1_*:*_1_*:*_524256799_*|*_10007_*:*_1_*:*_5156954020_*|*_3_*:*_1_*:*_2158568962_*|*_5_*:*_1_*:*_178617465_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:6.x\n*Puppet Server Version: 6.x?\n*OS Name/Version: n/a\n\n+Background+: In our current implementation the CRL validity is set to 5 years. This effectively nullifies revocation checking of any \u2018server\u2019 certificates by agent nodes. This issue does not quite affect MoM and any of the compile masters because everytime a new CRL is published it is available/updated locally on MoM and replicated to compile masters using a \u2018file-sync\u2019 mechanism. \nWhile agent nodes not doing revocation checking of servers or compile masters is less of a risk than the other way round it still is an issue. Throughout we strive to ensure all SSL endpoints do the appropriate checking to protect themselves against rogue peers or from any active man in the middle attempts. Agent typically runs in privileged mode and trust all content (and commands) from servers - generalized to mean any services on MoM and compile masters. Hence it is important to plug this potential vulnerability.\n\nOne of the concerns with publishing shorter validity CRL or letting agents fetch a CRL any time it is updated is the increased demands on bandwidth, particularly in environments where CRL can grow significantly large. While a shorter validity CRL may not necessarily address requirements of using the most up to date revocation status in certain high security or compliance environments it is a step in right direction short of implementing OCSP.\n \n+Proposal:+ \nPublish a CRL containing only MoM and compile master certificates. Agent CRL requests be satisfied with this CRL. This assumes compile masters, with puppet agents, do not use the same mechanism to request CRLs and continue to get/use the \u2018full\u2019 CRL.  \nWith the CRL size in check, it should allow us to publish CRL with shorter validity and/or allowing agents to fetch a new one every time it is published. \n", "epicLinkSummary": "Improve Certificate Revocation", "estimate": "PT0S", "externalId": "15152", "fixedVersions": ["SERVER 6.0.0"], "id": "15152", "issueType": "Task", "key": "SERVER-2231", "labels": [], "originalEstimate": "PT0S", "parent": "15766", "parentSummary": "Improve Certificate Revocation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "resolution": "Fixed", "resolutionDate": "2018-09-17T12:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Publish an infrastructure only CRL in addition to the full CRL", "timeSpent": "PT0S", "updated": "2018-12-18T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The last two occurances of this happened with Debian 8 and Debian 9 masters.", "created": "2018-06-08T14:29:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Could this be related to the new HTTP client not correctly using the pre-verify check from the DefaultValidator (see https://github.com/puppetlabs/puppet/blob/master/lib/puppet/ssl/validator/default_validator.rb#L81) that allows some wiggle room in CRL validity? I know [~accountid:557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c] was thinking we could make that work with https://github.com/puppetlabs/puppet/blob/master/lib/puppet/rest/client.rb#L69, but there could be something we're not understanding about the HTTPClient library uses that.", "created": "2018-06-11T11:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I thought it might be that but I also saw this on 5.3.x, which shouldn't have the new rest client.", "created": "2018-06-11T11:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Cool thanks. We've been stretching our infra again recently with all the releases going out, that could be exacerbating this past our tolerance.", "created": "2018-06-11T11:34:00.000000"}], "components": [], "created": "2018-06-08T12:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7be62cff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzniqn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jun/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_254496383_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_12118509958"}], "description": "We've been seeing a bunch of CRL not yet valid failures in CI in the last two or three weeks. Creating this ticket to track instances of it and potential steps to fix.\n\nFailure log:\n\nJune 7th\n * Platforms (master vs agent)\n ** Debian 8 vs Centos 6\n ** Debian 9 vs Centos 7\n * Branches:\n ** Puppet Server 5.3.x\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17388", "fixedVersions": [], "id": "17388", "issueType": "CI Blocker", "key": "SERVER-2229", "labels": ["transient"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Cannot Reproduce", "resolutionDate": "2018-10-29T17:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CRL not yet valid in CI", "timeSpent": "PT0S", "updated": "2018-10-29T17:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This should maybe wait till the migration to slack is complete and we know what that looks like.", "created": "2018-10-30T14:30:00.000000"}], "components": [], "created": "2018-06-08T12:35:00.000000", "creator": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b296b67"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rt:c"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Oct/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_255005662_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_7023942210_*|*_10005_*:*_3_*:*_110996786228"}], "description": "Currently, we have no way of reporting in hipchat the last passing SHA of puppetserver. We should have the equivalent of `! passing puppet-agent <branch>` for puppetserver. This should fetch the last passing SHA of puppetserver for the relevant branch, stored at http://builds.delivery.puppetlabs.net/passing-server-SHAs/api/v1/json/ and report it to the channel, along with the date when it passed.\n\nSample output from the agent command:\n{code}\n=> ! passing puppet-agent master\nLast known good build of puppet-agent on master:\nBuilt at: 8 Jun 2018 2:15:22\nPUPPET_AGENT_VERSION: 5.99.0.3.ga5d03a3\nPUPPET_AGENT_COMMIT: a5d03a365363cfa56f0451c16dc784791cbf65d8\nPUPPET_AGENT_SHORT_COMMIT: a5d03a365\nFACTER_COMMIT: 319754fea661656fdc8d40f15cfbf5553918f46c\nPUPPET_COMMIT: 90ca1a5df562d3362a481b27811b0090eb85a2d6\nHIERA_COMMIT: e67de42f249f2881ec33c49179c943aae187efb3\nPXPAGENT_COMMIT: 7e2ffccbe1d9773c75aeed3531e9272e4cfe38e7\n{code}", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16556", "fixedVersions": [], "id": "16556", "issueType": "Task", "key": "SERVER-2228", "labels": ["internal"], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "resolution": "Won't Do", "resolutionDate": "2022-03-08T09:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "create `! passing puppetserver` kerminator command", "timeSpent": "PT0S", "updated": "2022-03-08T09:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-06-08T09:57:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppetserver's CA CLI has a subcommand for migrating the CA from one file path to another"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27735d7c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8918"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl25b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See SERVER-2894 for release notes."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_459218891_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10367548884_*|*_10005_*:*_1_*:*_66001563229"}], "description": "In SERVER-2162 we added a command line tool to Puppetserver for managing its CA. We should add a subcommand to this that will move existing CA files to a new location. The user will need to specify source location, with a default of the old default CA location ({{/etc/puppetlabs/puppet/ssl/ca}}), and then the tool will use the target location as specified in puppetserver.conf.\n", "epicLinkSummary": "Finalize separation of CA from Ruby", "estimate": "PT0S", "externalId": "15921", "fixedVersions": [], "id": "15921", "issueType": "Task", "key": "SERVER-2226", "labels": [], "originalEstimate": "PT0S", "parent": "29493", "parentSummary": "Finalize separation of CA from Ruby", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Duplicate", "resolutionDate": "2020-11-13T14:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Migrate CA locations via Puppetserver's CA CLI", "timeSpent": "PT0S", "updated": "2020-11-13T14:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Could you also update https://github.com/puppetlabs/puppet-specifications/blob/master/file_paths.md#puppetserver?", "created": "2018-06-25T17:19:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Moving the setting to {{puppetserver.conf}} has interesting implications for any use {{puppet config}} to discover these settings. We do this a lot in acceptance tests.", "created": "2018-06-27T17:13:00.000000"}, {"author": "557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd", "body": "There are a few things we need to do before we can comfortably merge this ticket.\u00a0\n * This change breaks the {{puppet cert sign}} and {{puppet cert list}} commands. We should create new commands that regain that functionality.\n * we need to add deprecation warnings about the old commands/location of the cadir\n\nSee the rest of the epic for more detailed info.\u00a0", "created": "2018-07-20T17:51:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I wrote up a way of mitigating this issue in the related epic. Copying my comment here:\n\nOne gradual step might be to create a new {{ca}} directory outside of the existing {{ssl}} directory, and symlink from {{ssl/ca}} -> {{ca}}. This way {{rm -rf}} will unlink the symlink, but not follow it:\n\n{noformat}\n[root@w4jl4a7y7wi0c0j puppet]# ln -s  /etc/puppetlabs/puppet/ca /etc/puppetlabs/puppet/ssl/ca\n[root@w4jl4a7y7wi0c0j puppet]# chown puppet:puppet /etc/puppetlabs/puppet/ca\n[root@w4jl4a7y7wi0c0j puppet]# systemctl start puppetserver\n[root@w4jl4a7y7wi0c0j puppet]# /opt/puppetlabs/puppet/bin/puppet config set server `facter fqdn` --section main\n[root@w4jl4a7y7wi0c0j puppet]# /opt/puppetlabs/puppet/bin/puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Caching catalog for w4jl4a7y7wi0c0j.delivery.puppetlabs.net\nInfo: Applying configuration version '1564090147'\nNotice: Applied catalog in 0.02 seconds\n[root@w4jl4a7y7wi0c0j puppet]# rm -rf /etc/puppetlabs/puppet/ssl/\n[root@w4jl4a7y7wi0c0j puppet]# find ca/\nca/\nca/requests\nca/signed\nca/signed/w4jl4a7y7wi0c0j.delivery.puppetlabs.net.pem\nca/serial\nca/infra_inventory.txt\nca/infra_serials\nca/inventory.txt\nca/ca_pub.pem\nca/ca_key.pem\nca/ca_crt.pem\nca/ca_crl.pem\nca/infra_crl.pem\n[root@w4jl4a7y7wi0c0j puppet]# /opt/puppetlabs/puppet/bin/puppet agent -t\nError: CA certificate is missing from the server\nError: Could not run: CA certificate is missing from the server\n[root@w4jl4a7y7wi0c0j puppet]# systemctl restart puppetserver\n[root@w4jl4a7y7wi0c0j puppet]# /opt/puppetlabs/puppet/bin/puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Retrieving locales\nInfo: Caching catalog for w4jl4a7y7wi0c0j.delivery.puppetlabs.net\nInfo: Applying configuration version '1564090533'\nNotice: Applied catalog in 0.01 seconds\n{noformat}\n\nThat said we'd need to make sure permissions are correct on the new {{ca}} directory, as I don't think puppet will follow the link when applying the settings catalog.", "created": "2019-11-19T14:15:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Moved this up in the backlog for the team to review and confirm that the symlink solution that Josh proposed in October is a reasonable solution.  ", "created": "2020-02-18T14:11:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I filed https://puppet.atlassian.net/browse/SERVER-2760 as a ticket that more narrowly describes the approach we're thinking of taking with this, that is backwards compatible.\n\nGoing to leave this open since all of the zendesk tickets are linked to it. But please refer to that other ticket for the actual work we intend to do.", "created": "2020-03-24T09:10:00.000000"}], "components": [], "created": "2018-06-08T09:35:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppetserver's CA directory defaults to {{/etc/puppetlabs/puppetserver/ca}} for new installs\n* Its location is configurable via a setting in puppetserver.conf\n* If the new setting is absent from the config file, we refer to the one from puppet.conf instead"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52c428e6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Rank", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1000.0"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8918"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwlb8:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See SERVER-2896 for release notes."}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "39630,40324,41099"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jun/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_460528341_*|*_10007_*:*_1_*:*_287706174_*|*_3_*:*_1_*:*_1874309579_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_42067495942_*|*_10006_*:*_2_*:*_4038177851_*|*_10005_*:*_2_*:*_28101221340"}], "description": "The first major step to separating the CA and SSL dirs is to change the default location of the CA dir. The proposed new path is {{/etc/puppetlabs/puppetserver/ca}}. The new setting should be specified in {{puppetserver.conf}}, in a new section specifically for CA settings.\n\nFor this ticket, we should only implement the most basic fallback logic, namely that we default to the CA dir from puppet.conf if the new setting is absent from the config file.\n\nConfig files for new installations should point to the new location for the CA dir in puppetserver.conf. We need to investigate the upgrading behavior to make sure this works as expected (existing conf files are left alone).\n\n The migration and upgrade paths should be discussed later as part of https://puppet.atlassian.net/browse/PE-24530.", "epicLinkSummary": "Finalize separation of CA from Ruby", "estimate": "PT0S", "externalId": "14784", "fixedVersions": ["SERVER 7.0.0"], "id": "14784", "issueType": "Task", "key": "SERVER-2225", "labels": ["jira_escalated"], "originalEstimate": "PT0S", "parent": "29493", "parentSummary": "Finalize separation of CA from Ruby", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2020-11-13T14:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move puppetserver's default CA dir out of Puppet's SSL dir", "timeSpent": "PT0S", "updated": "2020-12-05T15:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a7211b6d0cb452810793cd6", "attachments": [], "comments": [], "components": [], "created": "2018-06-07T17:04:00.000000", "creator": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c46a396"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1ev:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_519925217_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1104923345"}], "description": "*as a* (new) team member\n*i want* clear docs about what we do, how we do it, and where the work lives\n*so that* i know how to get work done, and where to do it", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15683", "fixedVersions": [], "id": "15683", "issueType": "Task", "key": "SERVER-2224", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "resolution": "Fixed", "resolutionDate": "2018-06-26T12:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "update onboarding docs", "timeSpent": "PT0S", "updated": "2018-06-26T12:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2018-06-07T16:34:00.000000", "creator": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b9d0c56"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2k7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5604735_*|*_3_*:*_1_*:*_431677523_*|*_5_*:*_1_*:*_0"}], "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15919", "fixedVersions": [], "id": "15919", "issueType": "Task", "key": "SERVER-2223", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "resolution": "Done", "resolutionDate": "2018-06-12T18:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "update ci goalie and release lead docs", "timeSpent": "PT0S", "updated": "2018-06-12T18:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-06-06T10:05:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b742b44"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Improve Certificate Revocation"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbnz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_49685322433_*|*_6_*:*_1_*:*_0"}], "description": "Currently revoking a node's certificate can get very complicated in more complex deployments (e.g. those involving PuppetDB or a node classifier). We should make this process simpler from a user perspective, with fewer manual steps that are smarter about what work needs to be performed. This epic contains tickets relating to that effort.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15766", "fixedVersions": ["SERVER 6.y"], "id": "15766", "issueType": "Epic", "key": "SERVER-2221", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-01-02T10:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve Certificate Revocation", "timeSpent": "PT0S", "updated": "2021-08-23T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [], "components": [], "created": "2018-05-31T14:35:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60e28b48"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1en:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_29181193_*|*_3_*:*_1_*:*_623360900_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_396751811"}], "description": "We currently have two PRs, [1698|https://github.com/puppetlabs/puppetserver/pull/1698]\u00a0and [1697|https://github.com/puppetlabs/puppetserver/pull/1697],\u00a0that need review relating to RE's effort to begin shipping docker containers. This work is for CPR-553 and CPR-557, which imports the\u00a0[puppet-in-docker|https://github.com/puppetlabs/puppet-in-docker] project into its respective components and creates a script to build those docker images in Puppet Pipelines respectively.\n\nWhoever reviews one of those should also review the other, minimally use the scripts locally to build docker images and ensure there's a workable puppetserver that comes out the other side and potentially familiarize him or her self with the puppet-in-docker work and how to use Puppet Pipelines.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16553", "fixedVersions": [], "id": "16553", "issueType": "Task", "key": "SERVER-2219", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2018-06-12T18:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Review puppetserver docker PRs", "timeSpent": "PT0S", "updated": "2018-06-12T18:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2018-05-29T14:19:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6716cbe1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2jj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_257143423_*|*_1_*:*_1_*:*_8991188972_*|*_10007_*:*_1_*:*_6154283_*|*_3_*:*_1_*:*_483214_*|*_5_*:*_1_*:*_505547413_*|*_6_*:*_1_*:*_0"}], "description": "In\u00a0PUP-4242 deprecation warnings were added for \"things\" declared in the wrong namespace.\n\nIn testing server-side features like environment caching or custom function invocation we create throw away test environments that trigger a LOT of these warnings. We should update our tests/testutils to not create things in incorrect namespaces, if possible.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14782", "fixedVersions": ["SERVER 6.0.0"], "id": "14782", "issueType": "Task", "key": "SERVER-2218", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-09-13T17:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update tests to no longer cause deprecation warnings from PUP-4242", "timeSpent": "PT0S", "updated": "2018-09-19T13:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-05-24T16:24:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7befa310"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2j3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_627543114_*|*_10007_*:*_1_*:*_25775539_*|*_3_*:*_1_*:*_804774_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1249463543"}], "description": "We should make a Server tab on Waylon that doesn't include the puppet-agent bits. Having all of Platform Core to look at, and bits of it to ignore, might be overwhelming for new folks to CI goalie.\n\nAs part of this work we should update waylon to use the new short names for the jenkii.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15765", "fixedVersions": ["None"], "id": "15765", "issueType": "Task", "key": "SERVER-2217", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2018-06-15T17:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Server tab on Waylon; update Platform Core", "timeSpent": "PT0S", "updated": "2018-06-15T17:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This was actually two things that changed in one release that I conflated. One was that leiningen adds it's own nrepl dependency into a base profile so that it can ensure its repl functionality works as intended (and it regressed, then was fixed, with some versions conflicting with tk and some not depending on the versions in the respective projects). The other was that lein-parent pulls in dependencies that conflict with leiningen's own. The former is something that emacs users have always dealt with, though was new to me at the time of writing this ticket. The latter is the source of the \"Tried to load...\" warnings.\n\nI've fixed the issues with lein-parent in a way that should not require further updating. The nrepl conflict however will require occasional maintenance by everyone. The lein-parent release with my fixes is 0.3.7, everyone is encouraged to use that release.\n\nI've updated Server to use this release and am consequently going to mark this ticket as resolved.", "created": "2019-07-29T12:47:00.000000"}], "components": [], "created": "2018-05-24T14:14:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@119b9332"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzmbd3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37233186509_*|*_5_*:*_1_*:*_0"}], "description": "Dependency resolution in leiningen seems wacky.\n\nWhen trying to resolve {{org.clojure/tools.nrepl}} lein would pull in 0.2.12 which is the version that lein depends on. When upgrading to clj-parent 2.0.0 I would get a pendatic abort saying that puppetserver had a top level dependency on nrepl (didn't) and that all of its other dependencies should exclude nrepl (clj-parent 2.0.0 defines nrepl as 0.2.13 and so all dependencies that it pulls in have nrepl set to 0.2.13). Having lein output a pom file and having maven resolve that showed no conflicts.\n\nI should note that we have a dev dependency on leiningen (see SERVER-2215 to get rid of it) but this work included placing an exclusion on nrepl for our leiningen dependency.\n\nPutting nrepl as an explicit dependency seems to have fixed this.\n\nFrom that, I *think* what is happening is: a project's dependencies are being resolved with lein's with a projects explicit dependencies taking precedence, but lein's explicit dependencies taking precedence over managed-dependencies (like what is provided by clj-parent).\n\nThis may or may not have to do with the warnings output to stderr whenever we now run lein that\n{code}Tried to load commons-codec version 1.4 but 1.9 was already loaded.\n{code}\netc...\n\nIt also may or may not have anything to do with the fact that the tried-to-load version and already-loaded version do not necessarily match the output of {{lein deps :tree}}....\n\n\u00a0\n\nIf digging into the leiningen source code it should be noted that tests should be ran with bin/lein that is built from running lein bootstrap. This isn't mentioned in the docs (and if you wanted to open a PR for that that'd be great too).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16763", "fixedVersions": [], "id": "16763", "issueType": "Task", "key": "SERVER-2216", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2019-07-29T12:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate potential leiningen bug", "timeSpent": "PT0S", "updated": "2019-07-29T12:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd", "attachments": [], "comments": [{"author": "557058:e2565d2e-ebad-44ed-9824-9a30cb01d8fd", "body": "Starting with cljs-dashboard-widgets, I upgraded to clojurescript 1.10.238 and added clj-parent to manage most of the dependencies. Using figwheel-sidecar was a pretty basic switch, but upgrading to d3 v4 broke a lot of the metrix-box clojurescript. I also rewired the server port so that figwheel-sidecar is interacting with a running puppet server.", "created": "2018-06-08T12:36:00.000000"}], "components": [], "created": "2018-05-24T11:34:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23abc6c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1ef:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jun/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1186561486_*|*_1_*:*_1_*:*_711716826_*|*_10007_*:*_1_*:*_24119396_*|*_3_*:*_1_*:*_945035423_*|*_5_*:*_1_*:*_7334866289_*|*_6_*:*_1_*:*_0"}], "description": "puppetserver and cljs-dashboard-widgets use an older clojurescript dependency along with cljsbuild and figwheel. The method for interacting with figwheel through `lein repl` and to do so the current implementation pulls in lein as a dependency and uses it to run `lein figwheel` in the background, not that there's any docs describing that.\n\nA lot has changed in the clojurescript ecosystem and we should:\n# Upgrade to a modern clojurescript - I think we 1.10.x for Java 9 support in the clojurescript compiler.\n# Use figwheel-sidecar, this is a subproject of lein-figwheel and lets you use a figwheel server directly from the repl, rather than calling the lein task. Upgrading to this lets us remove our dependency on leiningen as a library within our project.clj and should be done in both puppetserver and cljs-dashboard-widgets.\n# Upgrade our cljsjs dependencies in cljs-dashboard-widgets. cljsjs, besides being a silly name, is how cljs projects pull in js packages that they interopt with. We at least need to update d3 (maybe React as well). AFAICT, d3 isn't automatically being pulled in during cljs development of puppetserver and causing errors, I think this stems from how cljs-dashboard-widgets pulls in its d3 dependency and may require some configuration of externs in puppetserver.\n# Make figwheel served dashboard interact with a running Puppet Server. Currently you can server a livereloaded dashboard from figwheel but it will automatically connect to the same port that it's served from (which won't have a running puppetserver) or you can run puppetserver from the repl, but then you get any of the figwheel goodness. This might be as simple as threading the url to get metrics from to figwheel when run from the repl.\n# Finally, almost nothing is actually documented. Developing on the dashboard should be documented in the puppetserver developer docs and how to pull in cljs-dashboard-widgets and set it up correctly should be documented in that repo.\n", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "17098", "fixedVersions": ["SERVER 6.0.0"], "id": "17098", "issueType": "Task", "key": "SERVER-2215", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-06-26T16:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade cljs workflows to use updated cljs tools (esp. figwheel-sidecar)", "timeSpent": "PT0S", "updated": "2018-09-19T13:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-05-23T10:22:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@597677c6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-1880"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automated Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm8g7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_490392658_*|*_1_*:*_1_*:*_39157_*|*_3_*:*_1_*:*_715859886_*|*_5_*:*_1_*:*_9086697019_*|*_6_*:*_1_*:*_0"}], "description": "The unvendoring of semantic_puppet revealed that Puppetserver is not correctly installing, detecting, and loading gems when running clojure unit tests. Because semantic_puppet is the first gem we have had a hard dependency on server-side, it was not previously obvious that this was broken. We need to ensure that we are installing gems in our test environment, and then properly setting the gem path in all the places that we are currently configuring the ruby load path, to ensure that the semantic_puppet gem can be loaded during tests.\n\nUntil this is fixed, any code with a {{require 'puppet'}} will error.", "epicLinkSummary": "Unvendor semantic-puppet", "estimate": "PT0S", "externalId": "16551", "fixedVersions": ["SERVER 6.0.0"], "id": "16551", "issueType": "Bug", "key": "SERVER-2214", "labels": [], "originalEstimate": "PT0S", "parent": "56577", "parentSummary": "Unvendor semantic-puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-06-06T09:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver is not correctly installing and loading gems when running clojure tests", "timeSpent": "PT0S", "updated": "2018-09-19T13:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've created a topic branch here: [compare justinstoller:new-jetty|https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/compare/master...justinstoller:new-jetty?expand=1]\n\nI researched the issue mentioned in the description and the behavior of {{MBeanContainer.resetUnique}} was folded into the destroy action in [a0cb424|https://github.com/eclipse/jetty.project/commit/a0cb4247e7f99f79c67f08acd6bdae2ac5bf1f8e#diff-6b38ef204a292607c6f1d20850a5201bR275]\u00a0and the destroy method is already being called during tk-jetty9's shutdown phase. So that should be fine.\n\nWith that, all of the functional tests work but we have a set of \"defaults tests\" (they test the defaults that Jetty ships with that we don't explicitly override) that are failing because Jetty changed what it considers to be the minimum required threads for a connector and how it warns regarding that. That work seems to be primarily in two commits [5d8c605|https://github.com/eclipse/jetty.project/commit/5d8c605d96e4f7128fe502595008ab2b45fe99fd#diff-f44162e5f3ca320f0e10435138a59cb7] and [7d98cbb|https://github.com/eclipse/jetty.project/commit/7d98cbb8703d23a30ce830f24f8cfd0fce9fc08a#diff-f44162e5f3ca320f0e10435138a59cb7]. I can get the tests to pass, but I'm still trying to figure if I'm missing any changes in Jetty and if this will require updating any configuration/tuning documentation.", "created": "2018-07-06T10:50:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] what's the status on this ticket?  we have an open escalation against it and we should try to close it out", "created": "2018-07-11T14:14:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Last comment is still current. Partly done, what is done is up in a branch. Anyone is free to take it on.", "created": "2018-07-11T14:19:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "ah, i see.  more relevant comment in escalation ticket:\n{quote}\nWith my comment about believing the next steps are to upgrade Jetty, I've marked SERVER-2213 as blocking this. Until we complete that, or we get feedback from our customer, I've placed this in Ready for Engineering.\n{quote}", "created": "2018-07-11T14:29:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I pinged you in the PR [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e], but here's the ticket as well.\n\nI don't think 99% of our users even know these settings exist and I don't think we document why anyone should change them, but if someone did, they would want to know about the thread allocation changes.", "created": "2018-07-23T15:09:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]] FWIW, I don't think we've had to tune Jetty's thread pools since we switched from a static default to a dynamic default a few years ago (PE 3.8 maybe? 2015.x?). Definitely would be good to get a note describing the essential differences somewhere.", "created": "2018-07-23T15:11:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] AFAICT no, we don't have user-facing docs for tuning Jetty threads for Server, just the dev docs you updated on the repo in the PR. [PDB does document max-threads for Jetty|https://puppet.com/docs/puppetdb/5.1/configure.html#max-threads], not sure if that's relevant.", "created": "2018-07-23T15:14:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I believe prior to the upgrade Jetty would require at least 11 threads per connector within a webserver, and afterwards Jetty will want 35 per connector. This is with a default QTP with 200 threads and a box with 24 cores.\n\nThat is also the *maximum* that the Jetty will require per connector without increasing the threadpool size. In the new model Jetty scales up and down more, taking advantage of resources available on the box, but always takes the *minimum* of metrics computed from cores and threadpool size (ie one of those will act as a ceiling prior to 24 cores the cores act as a ceiling, at 24 cores a default threadpool of 200 is a ceiling.\n\nTo also show the low end of this range, on my dev box, when turning the max-threads down to 10, it only requires 6 threads *total*\u00a0for two connectors and general worker threads.\n\nI think, without explicitly configuring the selector and acceptor thread settings this limits us to a handful of connectors per webserver (The tk-jetty9 docs say that we only use two per webserver, but I'm not sure if we do differently in jar-jar or the edu env).\n\n\u00a0", "created": "2018-07-23T15:44:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Do you know the breakdown of tasks for those 35 threads? I recall current Jetty separates things into acceptor threads which establish incoming connections, selector threads that watch for I/O and then worker threads that process request data to produce response data.\n\nThe reason I ask is that the fraction of worker threads is important for deciding where to set {{max-queued-requests}} for Puppet Server. This is the maximum number of workers we will allow to block waiting for a JRuby instance and it is the most useful when set at a level that reserves some free workers out of the 200 to handle non-Ruby requests such as file sync, classifier sync, status, etc.", "created": "2018-07-24T17:22:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yeah, the break down is 3 acceptor and 12 selector threads (it was 3 & 8 resp. previously), with another 20 in a reserved pool that can be used by either as load hits the server. I'm not super familiar with the \"reserved thread executor\" though this article seemed like the best high level overview of the selector/acceptor/reserved thread allocations: [https://support.sonatype.com/hc/en-us/articles/360000744687-Understanding-Eclipse-Jetty-9-4-8-Thread-Allocation]\n\n\u00a0\n\n(note that the specific heuristic the article points to for reserved allocation has changed since 9.4.8 but I include a link to the up to date one in the PR's docstrings)", "created": "2018-07-24T18:17:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I think the highest default we've ever set for {{max-queued-requests}} is 96. That leaves plenty of space in the 200 thread pool for a dozen or so additional required threads from 2 connectors (puppet-server, code-manager).\n\nLooks good to me!", "created": "2018-07-25T11:25:00.000000"}], "components": [], "created": "2018-05-17T15:20:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14396dd9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2jb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This is a dependency update and I don't believe should matter to our users. HOWEVER, some advanced users MAY have tuned Jetty's selector, acceptor, or max thread settings. If so, the logic behind thread allocation has changed and they may need to re-tune their systems. I don't believe we document thread tuning anywhere, but it DOCS should be aware of it."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1667115740_*|*_1_*:*_1_*:*_6507783_*|*_10007_*:*_1_*:*_334846736_*|*_3_*:*_2_*:*_700329403_*|*_5_*:*_1_*:*_3011967134_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_5072911382"}], "description": "We should upgrade to latest Jetty, it contains a number of fixes for Java 9 support, integration with Conscrypt, and may resolve some issues with hanging reads of request bodies suffering from packet corruption.\n\n\u00a0\n\nThe changes that we've seen so far in upgrading change refactor the way Jetty shuts down its MBeanContainer and how it computes and warns about minimum numbers of threads for a server. We may want to ask the SLV team to help in assessing any performance changes when we land this.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16334", "fixedVersions": ["SERVER 6.0.0"], "id": "16334", "issueType": "Improvement", "key": "SERVER-2213", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-09-19T13:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade to Jetty 9.4.11.v20180605", "timeSpent": "PT0S", "updated": "2018-09-19T13:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "This appears to be working as expected. We set java max and min size to the same value, so you'll see that amount of memory being used by the JVM regardless of whether puppetserver needs all of it.  Read the tuning guide here:\n\nhttps://puppet.com/docs/puppetserver/5.1/tuning_guide.html\n\nHope this helps", "created": "2018-05-17T17:06:00.000000"}], "components": ["Puppet Server"], "created": "2018-05-15T09:50:00.000000", "creator": "623c0d18761efb0069ce02d4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@41ee7d87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlzxj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_198955346_*|*_6_*:*_1_*:*_0"}], "description": "Hi,\n\nneed your help in understanding and tuning puppet masters. We have 6 puppet masters (in two datacenters, using f5 to load balance those (least conn):\n\npuppet version: puppet-agent-1.10.10-1.el7.x86_64\n\npuppetserver: puppetserver-2.8.1-1.el7.noarch\n\npuppetdb:puppetdb-4.4.0-1.el7.noarch\n\nCentos7: CentOS Linux release 7.4.1708 (Core)\n\nCPU: 8\n\nRAM: 24Gb\n\n\u00a0\n\n5000 nodes, 90 modules, runinterval is 2 hours.\n\nmax-active-instances: 7, heap size is set to 20GB\n\n\u00a0\n\nCPU spikes max to 40% (which i think is OK), however ram is constantly running at 96%.\u00a0\n\nI am concerned about memory utilization as it is constantly high. Is there any other tuning i missed? I looked at max-requests-per-instance but do not think that is useful in my case as I do not see OOM. when puppet agent runs on nodes (client), cpu on that hosts spikes, but catalog is applied within 40 sec. And even though total number of modules is 90, only 10 modules are used/applied.\u00a0\n\n\u00a0\n\nWould appreciate any help on this.\u00a0\n\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16761", "fixedVersions": [], "id": "16761", "issueType": "Bug", "key": "SERVER-2208", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0d18761efb0069ce02d4", "resolution": "Cannot Reproduce", "resolutionDate": "2018-05-17T17:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet masters running high on memory", "timeSpent": "PT0S", "updated": "2018-05-17T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-05-11T14:56:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1671f694"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzly6v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Docs included in PR"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_251544756_*|*_10007_*:*_1_*:*_687298481_*|*_10009_*:*_1_*:*_192325901_*|*_6_*:*_1_*:*_0"}], "description": "The default logback configuration bundled with the {{puppetserver}} package can be\nimproved by:\n\n  - Updating the configuration to no longer require a service restart or reload\n    in order for changes to be picked up (TK-426).\n\n  - Formatting timestamps in application logs to include the time zone in order\n    to enable debugging of geographically distributed installations (PE-13490).\n\nThese changes will allow DEBUG logging to be enabled without requiring a restart\nor reload that may destroy application state and improve the usefulness of log\ndata from installations that span multiple time zones.\n\nRecommendations:\n\n  - Logback configuration should include {{scanPeriod=\"60 seconds\"}} to allow\n    log levels and other settings to be adjusted without requiring service\n    restarts or reloads.\n\n  - Logback patterns for application logs should use a [RFC 3339|https://tools.ietf.org/html/rfc3339#section-5.6]\n    compatible representation that includes the Time Zone. A Java\n    SimpleDateFormat that works with logback is:\n\n{code:xml}\n%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14777", "fixedVersions": ["SERVER 6.0.0"], "id": "14777", "issueType": "New Feature", "key": "SERVER-2206", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2018-05-24T17:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve default logging configuration for puppetserver", "timeSpent": "PT0S", "updated": "2018-05-24T17:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm going to need to spend a day just on the testing of this. But I think I have the tradeoffs in the approach outlined in above in this PR:\nhttps://github.com/puppetlabs/puppetserver/pull/1693", "created": "2018-05-09T17:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I merged the jvm-ssl-utils PR, I think that library needs to be released now and updated in clj-parent, then that needs to be released and updated in puppetserver before the puppetserver PR can be merged.", "created": "2018-05-22T11:11:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've released ssl-utils 1.0 to clojars. ssl-utils is brought into puppetserver via clj-parent and since our last update clj-parent has released 2.0. I'm currently looking into updating to clj-parent 2.0 and then adding ssl-utils to clj-parent 2.0.1 rather than branching 1.7.x and targeting that. (We should upgrade to clj-parent 2.0 prior to releasing 6 anyways.)\n\nI'm currently having a bunch of issues with clj-parent 2.0 and will time box it.", "created": "2018-05-22T14:48:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I do think it's a good idea that we get on clj-parent 2.0. If it ends up being more of a hassle, we should still do it, but probably file a stand-alone ticket to track the work.", "created": "2018-05-22T14:52:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I spent one day fruitfully upgrading our dependencies and another day accidentally unfruitfully upgrading/fixing bugs. I think I've found the bottom of the rabbit hole but I think it would take a couple days, maybe more, to fix them properly. I've put them into tickets and linked them above.", "created": "2018-05-24T14:56:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Do you want to do those tickets now as a blocker to this, or branch clj-parent?", "created": "2018-05-24T15:02:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I think I can leave the cljs work behind for now. Our dev env for it is broken, but it doesn't seem to work prior to upgrade either. I think the cljs work will be a blocker to Java 9 support though. I have a work around in *our* project.clj for what appears to be a lein bug and that will unblocked me. Other teams may need a similar work around.\n\nSo I'm going to go ahead and not branch, but note that we're carrying forward additional technical debt that needs to be resolved pre-Puppet 6.", "created": "2018-05-24T15:14:00.000000"}], "components": [], "created": "2018-05-09T12:31:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5548ebe4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlvpj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Server side fixes for finally, fully supporting intermediate CA-ness:\nwith this CRL chains will be persisted when revoking certs."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_175073287_*|*_1_*:*_1_*:*_54665_*|*_10007_*:*_1_*:*_3735414158_*|*_3_*:*_1_*:*_424403268_*|*_5_*:*_1_*:*_7159986267_*|*_6_*:*_1_*:*_0"}], "description": "We need to make sure that Puppet Server can actually handle the CRLs that we are expecting it to. This will most likely entail updating our calls of {{pem->crl}} to be the newer {{pem->crls}}. And updating the revoke behavior to write out the additional crls in the chain when replacing the current crl file.", "epicLinkSummary": "Robust Intermediate CA", "estimate": "PT0S", "externalId": "14775", "fixedVersions": ["SERVER 6.0.0"], "id": "14775", "issueType": "Improvement", "key": "SERVER-2205", "labels": [], "originalEstimate": "PT0S", "parent": "15102", "parentSummary": "Robust Intermediate CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-06-28T16:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ensure Server CA can use a CRL path that contains multiple PEM encoded CRLs", "timeSpent": "PT0S", "updated": "2018-09-19T13:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "5c81ceb27841653736f2c258", "created": "2018-05-09T08:59:00.000000", "name": "puppetserver.thread", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10669"}], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "That's really interesting. You were using stock 5.1, or had you turned on JRuby 9k? Did get any thread dumps while investigating initially?", "created": "2018-05-08T11:37:00.000000"}, {"author": "5c81ceb27841653736f2c258", "body": "We use stock 5.1 primarily, although I did test JRuby 9K in production briefly and saw the same problem. I have confirmed the problem still occurs in my test environment when using 9K.\u00a0 I've attached the output of jstack from my test env using stock 5.1, it was taken after the 'free jrubies' count had been at 0 for ~1hour.", "created": "2018-05-09T08:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Are you using SRV records? IPv6? What OS are you using and is there any relevant information about your networking stack that you can think of?\n\nA quick scan doesn't find this as an existing issue with JRuby and the thread dump shows that all of the instances are parked while waiting on a native methods to receive UDP packets.\n\n{code}\n\"qtp1092219881-129\" #129 prio=5 os_prio=0 tid=0x00007fc7140b3800 nid=0x65d5 runnable [0x00007fc6e8fbb000]\n   java.lang.Thread.State: RUNNABLE\n        at sun.nio.ch.DatagramChannelImpl.receive0(Native Method)\n        at sun.nio.ch.DatagramChannelImpl.receiveIntoNativeBuffer(DatagramChannelImpl.java:414)\n        at sun.nio.ch.DatagramChannelImpl.receive(DatagramChannelImpl.java:400)\n        at sun.nio.ch.DatagramChannelImpl.receive(DatagramChannelImpl.java:345)\n        - locked <0x000000071a752808> (a java.lang.Object)\n        at org.jruby.ext.socket.RubyUDPSocket.doReceive(RubyUDPSocket.java:454)\n        at org.jruby.ext.socket.RubyUDPSocket.doReceive(RubyUDPSocket.java:446)\n        at org.jruby.ext.socket.RubyUDPSocket.recv(RubyUDPSocket.java:388)\n        at org.jruby.ext.socket.RubyBasicSocket$INVOKER$i$recv.call(RubyBasicSocket$INVOKER$i$recv.gen)\n{code}\n\nSo, I'm thinking it might be either us not setting timeouts correctly (or a difference between default configurations between JRuby and MRI), or it might be the networking stack.\n\nThanks, again for the reproducer and info, I'll set aside some time later this week/early next week to reproduce it.", "created": "2018-05-09T11:03:00.000000"}, {"author": "5c81ceb27841653736f2c258", "body": "The puppet server runs on centos 6 using IPv4 and we aren't using SRV records. I can't think of any other details of our networking stack that would be relevant.\n\nLooking on the test puppet server lsof reports open UDP sockets, they all look to be dns queries.", "created": "2018-05-10T06:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've been able to get a a JRuby instance to hang following your reproducer (thank you again for that). Though when inspecting the thread dump I do not have it hanging in the same place you do:\n{code}\n\"qtp1195150101-65\" #65 prio=5 os_prio=0 tid=0x00007f574027b250 nid=0x575b in Object.wait() [0x00007f573d0c2000]\n   java.lang.Thread.State: WAITING (on object monitor)\n        at java.lang.Object.wait(Native Method)\n        - waiting on <0x00000000e2a452a8> (a java.util.ArrayDeque)\n        at java.lang.Object.wait(Object.java:502)\n        at org.eclipse.jetty.server.HttpInput.blockForContent(HttpInput.java:541)\n        at org.eclipse.jetty.server.HttpInputOverHTTP.blockForContent(HttpInputOverHTTP.java:42)\n        at org.eclipse.jetty.server.HttpInput$1.blockForContent(HttpInput.java:1062)\n        at org.eclipse.jetty.server.HttpInput.read(HttpInput.java:304)\n        - locked <0x00000000e2a452a8> (a java.util.ArrayDeque)\n        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)\n        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)\n        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)\n        - locked <0x00000000e2ae0220> (a java.io.InputStreamReader)\n        at java.io.InputStreamReader.read(InputStreamReader.java:184)\n        at java.io.BufferedReader.fill(BufferedReader.java:161)\n        at java.io.BufferedReader.read1(BufferedReader.java:212)\n        at java.io.BufferedReader.read(BufferedReader.java:286)\n        - locked <0x00000000e2ae0220> (a java.io.InputStreamReader)\n        at java.io.Reader.read(Reader.java:140)\n        at clojure.java.io$fn__9562.invokeStatic(io.clj:337)\n        at clojure.java.io$fn__9562.invoke(io.clj:334)\n        at clojure.lang.MultiFn.invoke(MultiFn.java:238)\n        at clojure.java.io$copy.invokeStatic(io.clj:406)\n        at clojure.java.io$copy.doInvoke(io.clj:391)\n        at clojure.lang.RestFn.invoke(RestFn.java:425)\n        at clojure.core$slurp.invokeStatic(core.clj:6665)\n        at clojure.core$slurp.doInvoke(core.clj:6657)\n        at clojure.lang.RestFn.invoke(RestFn.java:439)\n        at puppetlabs.services.request_handler.request_handler_core$body_for_jruby.invokeStatic(request_handler_core.clj:78)\n        at puppetlabs.services.request_handler.request_handler_core$body_for_jruby.invoke(request_handler_core.clj:54)\n        at puppetlabs.services.request_handler.request_handler_core$wrap_params_for_jruby.invokeStatic(request_handler_core.clj:86)\n        at puppetlabs.services.request_handler.request_handler_core$wrap_params_for_jruby.invoke(request_handler_core.clj:81)\n        at puppetlabs.services.request_handler.request_handler_core$jruby_request_handler$fn__31686.invoke(request_handler_core.clj:269)\n{code}\n\nThis is a stack that we've seen elsewhere in customer escalations (/cc [~accountid:557058:f23b0b7f-9386-48b3-bd71-4399766356f4], [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]) and I'm assuming that both the problem in your original thread dump and this one (which both manifest themselves as JRuby instances locking up) have the same root cause (packet corruption) though they are different examples of unrelated portions of our Java networking stack waiting indefinitely to read data.\n\nThe first example, DNS resolution, may have a solution in plumbing appropriate timeouts through our Ruby code and/or JRuby into the Java layer. The second example, I think, comes from Jetty. I'm going to look into providing more documentation around debugging packet corruption and see if I can get some time on the schedule to dive deeper into trying to resolve both issues (putting this back into \"Ready for Engineering\" state until we get that prioritization).", "created": "2018-05-14T11:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Just as a heads up. I've been using latest Server 5.3.1 and have reliably been able to get the failure I included above (Jetty's blocking read) but not the original one (DatagramChannelImpl's blocking read). So I will probably go back and check against 5.1.x soon to see if I can get the DatagramChannel error, but I don't have an ETA on that right now.\n\nI've filed\u00a0SERVER-2213 to see if upgrading Jetty will help resolve the Jetty error I'm seeing in my test environment.", "created": "2018-05-17T15:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We're going to do SERVER-2213 (potential fix for the blocking Jetty reads) before we go any further in on the DatagramChannel blocking read. Shooting to do SERVER-2213 in the last week of May.", "created": "2018-05-18T10:16:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The jetty upgrade has promoted into PE, is there anything else needed for this?", "created": "2018-08-15T16:58:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "So I've tried to reproduce this again and I am no longer able to, even with earlier versions of Puppet Server (and increasing packet loss up to 20%).\n\nSo I can't definitively say this is resolved or what resolved it. However, without a reproducer anymore I can't really move forward. We still *hope* that in environments where this is reproducible that the upgrade to Jetty in Puppet Server 6 will help with this issue (there were numerous improvements in Jetty to its thread pool and the error handling around threads).", "created": "2018-10-02T10:41:00.000000"}], "components": [], "created": "2018-05-08T11:20:00.000000", "creator": "5c81ceb27841653736f2c258", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3de3d5cb"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - $$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - 50-90% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The end result of this issue is that Puppet masters will just suddenly become unresponsive to agent requests after a code deploy.  It is nearly impossible for a customer to figure out on their own why this occurred, thus ensuring a support call that will take numerous cycles to sort out."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2pr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_71414807_*|*_3_*:*_1_*:*_5264572_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_443852478_*|*_10006_*:*_1_*:*_12177906768"}], "description": "This was seen in our production environment where 1 puppetserver would lose jruby workers until all were unusable and a restart was required. When our Operations team fixed a switch with interface errors the loss of jruby threads stopped.\n\nAfter that I was able to replicate the issue in our dev environment. This was tested using a vm running on KVM, steps to replicate are as follows:\n * create vm\u00a0 and set up puppet server\n * create other vms with agents\n * On the host run \"tc qdisc add dev <server vm dev name> root netem corrupt 5%\"\n * watch the 'free jrubies' metric decrease\n\nIt appears that setting packet corruption inside the machine that is running the puppetserver does not cause any lock ups.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16760", "fixedVersions": [], "id": "16760", "issueType": "Bug", "key": "SERVER-2204", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5c81ceb27841653736f2c258", "resolution": "Cannot Reproduce", "resolutionDate": "2018-10-02T10:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby threads lock up due to packet coruption", "timeSpent": "PT0S", "updated": "2018-10-02T10:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks for the information, Scott. I'm glad you were able to get this working. Sorry there were some pains though.\n\n[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab], do you (or someone in RE) know if we should be depending on a recent java tzdata?", "created": "2018-05-07T17:25:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] sorry, missed this ping, will dig into this a little more.", "created": "2018-05-15T11:35:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "I think this is actually an issue with the openjdk packaging.\n{noformat}\n[root@jtln4tzsaoliq35 ~]# rpm -q --requires java-1.8.0-openjdk-headless\n/bin/sh\n/bin/sh\n/usr/sbin/alternatives\n/usr/sbin/alternatives\nca-certificates\nchkconfig >= 1.7\nchkconfig >= 1.7\nconfig(java-1.8.0-openjdk-headless) = 1:1.8.0.141-1.b16.el7_3\ncopy-jdk-configs >= 1.1-3\njpackage-utils\nlibawt.so()(64bit)\nlibc.so.6()(64bit)\nlibc.so.6(GLIBC_2.11)(64bit)\nlibc.so.6(GLIBC_2.14)(64bit)\nlibc.so.6(GLIBC_2.2.5)(64bit)\nlibc.so.6(GLIBC_2.3)(64bit)\nlibc.so.6(GLIBC_2.3.2)(64bit)\nlibc.so.6(GLIBC_2.3.4)(64bit)\nlibc.so.6(GLIBC_2.4)(64bit)\nlibc.so.6(GLIBC_2.7)(64bit)\nlibdl.so.2()(64bit)\nlibdl.so.2(GLIBC_2.2.5)(64bit)\nlibfreetype.so.6()(64bit)\nlibgcc_s.so.1()(64bit)\nlibgcc_s.so.1(GCC_3.0)(64bit)\nlibjava.so()(64bit)\nlibjava.so(SUNWprivate_1.1)(64bit)\nlibjli.so()(64bit)\nlibjli.so(SUNWprivate_1.1)(64bit)\nlibjpeg.so.62()(64bit)\nlibjpeg.so.62(LIBJPEG_6.2)(64bit)\nlibjvm.so()(64bit)\nlibjvm.so(SUNWprivate_1.1)(64bit)\nlibm.so.6()(64bit)\nlibm.so.6(GLIBC_2.2.5)(64bit)\nlibnet.so()(64bit)\nlibnet.so(SUNWprivate_1.1)(64bit)\nlibnio.so()(64bit)\nlibnio.so(SUNWprivate_1.1)(64bit)\nlibnspr4.so()(64bit)\nlibnss3.so()(64bit)\nlibnss3.so(NSS_3.2)(64bit)\nlibnssutil3.so()(64bit)\nlibnssutil3.so(NSSUTIL_3.12)(64bit)\nlibplc4.so()(64bit)\nlibplds4.so()(64bit)\nlibpthread.so.0()(64bit)\nlibpthread.so.0(GLIBC_2.2.5)(64bit)\nlibpthread.so.0(GLIBC_2.3.2)(64bit)\nlibpthread.so.0(GLIBC_2.3.3)(64bit)\nlibsmime3.so()(64bit)\nlibssl3.so()(64bit)\nlibstdc++.so.6()(64bit)\nlibstdc++.so.6(CXXABI_1.3)(64bit)\nlibstdc++.so.6(GLIBCXX_3.4)(64bit)\nlibthread_db.so.1()(64bit)\nlibthread_db.so.1(GLIBC_2.2.5)(64bit)\nlibverify.so()(64bit)\nlibverify.so(SUNWprivate_1.1)(64bit)\nlibz.so.1()(64bit)\nlksctp-tools(x86-64)\nnss(x86-64) >= 3.28.4\nnss-softokn(x86-64) >= 3.16.2.3\nrpmlib(BuiltinLuaScripts) <= 4.2.2-1\nrpmlib(CompressedFileNames) <= 3.0.4-1\nrpmlib(FileDigests) <= 4.6.0-1\nrpmlib(PayloadFilesHavePrefix) <= 4.0-1\ntzdata-java >= 2015d\nrpmlib(PayloadIsXz) <= 5.2-1\n{noformat}\n\nIt depends on tzdata-java, and requires that tzdata-java is at least 2015d, but I've been able to confirm that with 2015d `/usr/share/javazi-1.8/tzdb.dat` doesn't exist. If I update to 2015e that file does exist, so I'm guessing that requires should just be a > rather than a >=.", "created": "2018-05-15T12:08:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Filed with Centos at: https://bugs.centos.org/view.php?id=14966", "created": "2018-06-19T15:59:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We filed the issue with centos, but they appear to not be moving on it. Given that there's a workaround, and nothing we can really do on our end, going to close this.", "created": "2022-02-22T15:55:00.000000"}], "components": ["Puppet Server"], "created": "2018-05-04T12:49:00.000000", "creator": "6243b044f813eb0069290944", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63af2d54"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlsiv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_44052838423_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76057945382"}], "description": "*Puppet Version: n/a*\n *Puppet Server Version: 5.3.1*\n *OS Name/Version: CentOS 7.2*\n\nI'm not absolutely sure if this is the correct place to report this issue, but here we go...\n\nI have Upgraded our puppetmaster from running version 3.8.7 (packaged version), to puppetserver 5.3.1. The puppetserver would not start and gave the error below.\n\npuppetserver[x]: Exception in thread \"main\" java.lang.Error: java.io.FileNotFoundException: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/lib/tzdb.dat (No such file or directory)\n\nIn order to fix the problem, I needed to install the updated package \"tzdata-java\" as the file \"tzdb.dat\" was being linked to but did not exist. At this point puppetserver started...This could be useful for others having the same issue.\n\nDescribe steps to reproduce\u2026 After puppetserver installation then try to start it... The CentOS version was installed as 7.2 but has some updated packages to version 7.4 equivalent.\n\nsudo /opt/puppetlabs/bin/puppet resource service puppetserver ensure=running enable=true\n\n*Desired Behavior:*\n\nStart Puppet Server\n\n*Actual Behavior:*\n{quote}$ sudo /opt/puppetlabs/bin/puppet resource service puppetserver ensure=running enable=true\nError: Systemd start for puppetserver failed!\njournalctl log for puppetserver:\n-- Logs begin at Mon 2018-03-19 08:17:26 MDT, end at Thu 2018-05-03 14:34:51 MDT. --\nMay 03 14:34:50 HOST.DOMAIN systemd[1]: Starting puppetserver Service...\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: Exception in thread \"main\" java.lang.Error: java.io.FileNotFoundException: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/lib/tzdb.dat (No such file or directory)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:261)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.security.AccessController.doPrivileged(Native Method)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at sun.util.calendar.ZoneInfoFile.<clinit>(ZoneInfoFile.java:251)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:589)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.TimeZone.getTimeZone(TimeZone.java:560)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.TimeZone.setDefaultZone(TimeZone.java:666)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.TimeZone.getDefaultRef(TimeZone.java:636)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.Date.<init>(Date.java:254)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.zip.ZipUtils.dosToJavaTime(ZipUtils.java:71)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.zip.ZipUtils.extendedDosToJavaTime(ZipUtils.java:88)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.zip.ZipEntry.getTime(ZipEntry.java:194)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.lastModified(RT.java:391)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.load(RT.java:434)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.load(RT.java:419)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.doInit(RT.java:461)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.<clinit>(RT.java:331)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.main.<clinit>(main.java:20)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: Caused by: java.io.FileNotFoundException: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/lib/tzdb.dat (No such file or directory)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.io.FileInputStream.open0(Native Method)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.io.FileInputStream.open(FileInputStream.java:195)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.io.FileInputStream.<init>(FileInputStream.java:138)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:255)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: ... 16 more\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: Background process 4048 exited before start had completed\nMay 03 14:34:51 HOST.DOMAIN systemd[1]: puppetserver.service: control process exited, code=exited status=1\nMay 03 14:34:51 HOST.DOMAIN systemd[1]: Failed to start puppetserver Service.\nMay 03 14:34:51 HOST.DOMAIN systemd[1]: Unit puppetserver.service entered failed state.\n\nError: /Service[puppetserver]/ensure: change from 'stopped' to 'running' failed: Systemd start for puppetserver failed!\njournalctl log for puppetserver:\n-- Logs begin at Mon 2018-03-19 08:17:26 MDT, end at Thu 2018-05-03 14:34:51 MDT. --\nMay 03 14:34:50 HOST.DOMAIN systemd[1]: Starting puppetserver Service...\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: Exception in thread \"main\" java.lang.Error: java.io.FileNotFoundException: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/lib/tzdb.dat (No such file or directory)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:261)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.security.AccessController.doPrivileged(Native Method)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at sun.util.calendar.ZoneInfoFile.<clinit>(ZoneInfoFile.java:251)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:589)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.TimeZone.getTimeZone(TimeZone.java:560)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.TimeZone.setDefaultZone(TimeZone.java:666)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.TimeZone.getDefaultRef(TimeZone.java:636)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.Date.<init>(Date.java:254)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.zip.ZipUtils.dosToJavaTime(ZipUtils.java:71)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.zip.ZipUtils.extendedDosToJavaTime(ZipUtils.java:88)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.util.zip.ZipEntry.getTime(ZipEntry.java:194)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.lastModified(RT.java:391)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.load(RT.java:434)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.load(RT.java:419)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.doInit(RT.java:461)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.lang.RT.<clinit>(RT.java:331)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at clojure.main.<clinit>(main.java:20)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: Caused by: java.io.FileNotFoundException: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/lib/tzdb.dat (No such file or directory)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.io.FileInputStream.open0(Native Method)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.io.FileInputStream.open(FileInputStream.java:195)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at java.io.FileInputStream.<init>(FileInputStream.java:138)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:255)\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: ... 16 more\nMay 03 14:34:51 HOST.DOMAIN puppetserver[4039]: Background process 4048 exited before start had completed\nMay 03 14:34:51 HOST.DOMAIN systemd[1]: puppetserver.service: control process exited, code=exited status=1\nMay 03 14:34:51 HOST.DOMAIN systemd[1]: Failed to start puppetserver Service.\nMay 03 14:34:51 HOST.DOMAIN systemd[1]: Unit puppetserver.service entered failed state.\n\nservice { 'puppetserver':\n ensure => 'stopped',\n enable => 'false',\n}\n{quote}\nSo I check the java installed...(trying to figure out the issue, lol)\n{quote}$ sudo yum list java*\nInstalled Packages\njava-1.7.0-openjdk.x86_64 1:1.7.0.79-2.5.5.1.el7_1 @updates \njava-1.7.0-openjdk-headless.x86_64 1:1.7.0.79-2.5.5.1.el7_1 @updates \njava-1.8.0-openjdk-headless.x86_64 1:1.8.0.161-0.b14.el7_4 @updates \njava-1.8.0-openjdk.x86_64 1:1.8.0.161-0.b14.el7_4 @updates\n{quote}\nThe file is linked to...\n{quote}$ sudo ls -lh /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/lib/tzdb.dat\nlrwxrwxrwx 1 root root 30 May 1 14:43 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/lib/tzdb.dat -> /usr/share/javazi-1.8/tzdb.dat\n{quote}\nBut it doesn't exist...\n{quote}# ls -lh /usr/share/javazi-1.8/tzdb.dat\nls: cannot access /usr/share/javazi-1.8/tzdb.dat: No such file or directory\n{quote}\nScratch my head a bit, search on the net... Found possible solution... Installed update to \"tzdata-java\". From \"tzdata-java.noarch 2015d-1.el7\" to \"tzdata-java.noarch 2018d-1.el7\".\n\nNow it works...\n{quote}$ sudo /opt/puppetlabs/bin/puppet resource service puppetserver ensure=running enable=true\nNotice: /Service[puppetserver]/ensure: ensure changed 'stopped' to 'running'\nservice { 'puppetserver':\n ensure => 'running',\n enable => 'true',\n}\n\n$ systemctl status puppetserver.service\npuppetserver.service - puppetserver Service\n Loaded: loaded (/usr/lib/systemd/system/puppetserver.service; enabled)\n Active: active (running) since Thu 2018-05-03 17:01:50 MDT; 11s ago\n Main PID: 8966 (java)\n CGroup: /system.slice/puppetserver.service\n \u2514\u25008966 /usr/bin/java -Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger -Djava.security.egd=/dev/urandom -XX:OnOutOfMemoryError=kil...\n{quote}\nRegards.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15506", "fixedVersions": [], "id": "15506", "issueType": "Bug", "key": "SERVER-2203", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243b044f813eb0069290944", "resolution": "No Available Fix", "resolutionDate": "2022-02-22T15:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "On upgrade from v3.8.7 puppetserver fails to start", "timeSpent": "PT0S", "updated": "2022-02-22T15:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This isn't needed anymore. Closing, we can reopen if this situation ever arises again.", "created": "2020-05-26T10:25:00.000000"}], "components": [], "created": "2018-05-03T17:23:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e349087"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlrw7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/May/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_537497_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_65120009020"}], "description": "We need to promote Puppet Server 5.3.x into both PE Irving and Johnson (and Platform 5.5.x more generally).\n\nThis might entail duplicating the jobs or improving the existing job. This work may also need to be coordinated with Platform OS/Coremunity /cc [~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8].", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15106", "fixedVersions": [], "id": "15106", "issueType": "Improvement", "key": "SERVER-2202", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Fix", "resolutionDate": "2020-05-26T10:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow promotion of FOSS into multiple PE streams", "timeSpent": "PT0S", "updated": "2020-05-26T10:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5a53f79a4ee9b3787fdecc5c", "attachments": [{"attacher": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "created": "2018-05-01T11:32:00.000000", "name": "disabled1.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11126"}, {"attacher": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "created": "2018-05-01T11:32:00.000000", "name": "disabled2.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11050"}, {"attacher": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "created": "2018-05-01T11:32:00.000000", "name": "enabled.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10965"}], "comments": [{"author": "5a53f79a4ee9b3787fdecc5c", "body": "* [https://github.com/puppetlabs/puppet/blob/master/lib/puppet/gettext/config.rb]\n * https://github.com/grosser/fast_gettext\n * Ruby Code Profiling\n * Gatlin \u2013 [https://gatling.io/docs/2.3/quickstart/]", "created": "2018-05-01T12:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Also, we actually DO stub out the translation functions when we disable gettext, in the hook for the setting: https://github.com/puppetlabs/puppet/blob/01725a5f53b13267ae01aa2051e9e3612c8831c3/lib/puppet/defaults.rb#L163-L164", "created": "2018-05-01T12:54:00.000000"}], "components": [], "created": "2018-05-01T11:39:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b2c8b6d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlobj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15659940671_*|*_6_*:*_1_*:*_0"}], "description": "While running some performance tests to gather data for a memory use analysis, I noticed that Puppetserver appears to have worse performance when the {{i18n_disabled}} setting is true. This is not the default in either FOSS or PE, so in theory that means what most people are using is fine, but it is still confusing and troubling, given that disabling i18n should result in less work being done. I've attached the graphs below, which were produced via our Gatling performance automation. All three scenarios were run on the same hardware, for one or two hours a piece. The graph with the best performance had i18n enabled, while the other two had it disabled via the {{disable_i18n}} setting in {{puppet.conf}}. The second disabled graph is particularly odd, because the performance seems to get worse over time, which is not something we've seen in any of our other tests (while doing JRuby perf work, we would often see sudden cliffs where performance got bad all at once, but not this kind of steady incline). \nThe enabled graph looks like most of our other JRuby 9k perf results, some initial poor performance as JIT warms up, followed by steady low response times.\n\nNote these tests were with FOSS, so they did not use the setting (or hiera flag?) that PE uses via its configuration module. They all had max-requests-per-instance set to 0, so JRuby instances were never flushed.\n\nThe job links are here:\nDisabled 1: http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/puppetserver-infinite/99/\nDisabled 2: http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/puppetserver-infinite/100/\nEnabled: http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/puppetserver-infinite/101/\n\nEach job has some additional archived data, including GC logs, that may help in tracking this down.\n\nI'll follow up here with a longer run of both states.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17096", "fixedVersions": [], "id": "17096", "issueType": "Bug", "key": "SERVER-2201", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Cannot Reproduce", "resolutionDate": "2018-10-29T17:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver appears to have worse performance when i18n is disabled", "timeSpent": "PT0S", "updated": "2018-10-29T17:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I have pushed up a branch for this here https://github.com/Magisus/ci-job-configs/tree/ps-release, but I think it still needs to be updated to separate the tagging and the subsequent bumping to SNAPSHOT, so that we build and promote the tag instead of the SNAPSHOT commit.", "created": "2018-07-11T11:46:00.000000"}], "components": [], "created": "2018-05-01T11:21:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver has a simple release pipeline that:\n1) Bumps to the release version, tags that commit, then bumps back to snapshot.\n2) Builds packages of the release version commit.\n3) Promotes the tagged commit into PE."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@21f3d4d1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2if:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_527115125_*|*_1_*:*_1_*:*_3737717504_*|*_10007_*:*_1_*:*_352945342_*|*_3_*:*_2_*:*_447519458_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_2385831105"}], "description": "Now that we have a single job that will do version bumps and tag new releases, we need some follow up jobs to build artifacts for the tag and promote it into PE. Currently these steps must be triggered manually, tacking together parts of the existing pipeline with custom args. We should instead chain just the pieces we need after the tagging job and have the correct args passed between them.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16549", "fixedVersions": ["None"], "id": "16549", "issueType": "Task", "key": "SERVER-2200", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-07-26T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Build a complete release pipeline for puppetserver", "timeSpent": "PT0S", "updated": "2018-07-26T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b], is this something that you're doing as part of the jruby routes metrics? If not should this block on that?", "created": "2018-04-26T17:19:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Ideally, we could store this in the SLF4J Mapped Diagnostic Context and then reference it in the logback-access pattern. However, logback-access doesn't support pulling values from the MDC at the moment:\n\nhttps://jira.qos.ch/browse/LOGBACK-1016\n\nCurrently, the only way to get this into the access log would be to add it to the Response headers which can be referenced in logback-access patterns.", "created": "2018-04-26T17:22:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] This is something I thought of while working on SERVER-1975, filing it here so I don't forget about it. The implementation for SERVER-1975 might not enable this sort of metric gathering since the timing happens off in a JRuby pool callback that is fairly isolated from the HTTP request pathway. The Mapped Diagnostic Context might be able to bridge that gap if it is usable.\n\nOtherwise, the best place to build this in may be the ring handler that pairs requests with JRuby instances.", "created": "2018-04-26T17:36:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Looked into this some more and adding MDC support to logback turned out to be very straight-forward. Filed TK-470 for that. Marked that as a blocker along with SERVER-1975.\n\nIf we have those two pieces, this comes down to saving the elapsed borrow time to the MDC in the {{track-return-instance!}} callback and updating the pattern in request-logging.xml to print it out to the access log.", "created": "2018-04-30T09:44:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We merged your MDC work already, didn't we [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]? Is for adding the metrics from SERVER-1975 to it? Or is this done but the ticket isn't updated?", "created": "2019-07-10T14:51:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Was just looking at this one. Not sure why it's set to \"ready for merge\" as it isn't done yet. But with SERVER-1975 and TK-470 in, it will be something like a 5-line patch.", "created": "2019-07-10T15:00:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "4 line patch. Should be good to go now :)", "created": "2019-07-10T16:02:00.000000"}], "components": [], "created": "2018-04-26T17:05:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@610dafd2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlkx3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Puppet Server access logs now includes information about how long a JRuby instance was in use to process a given request, in addition to the overall processing time of the request."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_322137004_*|*_1_*:*_1_*:*_36211363495_*|*_10007_*:*_2_*:*_3020420129_*|*_3_*:*_2_*:*_80492601_*|*_5_*:*_1_*:*_0"}], "description": "As a operator of Puppet infrastructure I would like to identify individual nodes or Puppet API calls that are particularly expensive in terms of JRuby processing time. This will allow me to eliminate expensive outliers and make efficient use of JRuby availability which is the primary bottleneck for Puppet Server.\n\nh3. Current Behavior\n\nThe Puppet Server access log currently follows the Apache common log format with the request duration in milliseconds appended to the end:\n\n{noformat}\n10.32.47.186 - - [26/Apr/2018:00:39:48 -0700] \"POST /puppet/v3/catalog/pe-201810-master.puppetdebug.vlan?environment=production HTTP/1.1\" 200 1655399 \"-\" \"Puppet/5.5.1 Ruby/2.4.4-p296 (x86_64-linux)\" 21014\n{noformat}\n\nh3. Desired Behavior\n\nThe duration should be followed by the number of milliseconds that a JRuby was borrowed to service the request, or a \"-\" character if no JRuby was used:\n\n{noformat}\n10.32.47.186 - - [26/Apr/2018:00:39:48 -0700] \"POST /puppet/v3/catalog/pe-201810-master.puppetdebug.vlan?environment=production HTTP/1.1\" 200 1655399 \"-\" \"Puppet/5.5.1 Ruby/2.4.4-p296 (x86_64-linux)\" 21014 17490\n\n10.32.47.186 - - [26/Apr/2018:16:00:07 -0700] \"GET /puppet/v3/environment_classes?environment=production HTTP/1.1\" 200 124935 \"-\" \"Apache-HttpAsyncClient/4.1.2 (Java/1.8.0_171)\" 6767 -\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15505", "fixedVersions": ["SERVER 5.3.10", "SERVER 6.3.2", "SERVER 6.5.0"], "id": "15505", "issueType": "Improvement", "key": "SERVER-2198", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2019-07-29T10:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Include JRuby processing time in Puppet Server access log entries", "timeSpent": "PT0S", "updated": "2019-10-12T23:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "My understanding is that the path {{/etc/puppetlabs/puppet/ssl/certs/ca.pem}} is the {{localcacert}} which is used by Puppet to create SSL connections (which the master maybe shouldn't be using when creating its end of the connection).\n\nThe path {{/etc/puppetlabs/puppet/ssl/ca/ca_crt.pem}} is the CA's cert ({{cacert}} setting) which is served to agents and used for signing and until the early 5 series could not be a bundle otherwise the CA would fail when autosigning. It had to be placed on the agent out of band for so that the agent would not download the single cert used for signing when the CA was acting as an intermediate CA. I believe that was fixed in [this pr|https://github.com/puppetlabs/puppetserver/pull/1480] and documented [here|https://github.com/puppetlabs/puppetserver/pull/1538/files] but the main Puppet documenation on External CAs was never updated correctly.\n\nThat should be verified, I grabbed the links but didn't look into it deeply and there's so many caveats with this that I could have missed something, I think that this ticket will be updating the Puppet docs linked in the description if I'm right. We may want to ask product whether the master should use the CA cert or the agent's cert or if it should have its own copy of the ca bundle.", "created": "2018-04-27T12:45:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I opened a PR against puppet-docs that deletes the offending documentation and instead points to the docs Finch wrote as part of his work that I linked above.", "created": "2018-04-30T14:40:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\u00a0please add release notes for this issue if needed, thanks!\u00a0", "created": "2018-08-28T09:07:00.000000"}], "components": [], "created": "2018-04-26T10:32:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When Puppetserver is set up to use a cert bundle, that whole bundle should served via the CA cert endpoint"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58e0a7f1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2q7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This ended up being docs changes on its own."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_360503429_*|*_10007_*:*_1_*:*_269579947_*|*_5_*:*_1_*:*_11995138753_*|*_6_*:*_1_*:*_0"}], "description": "According to the [current instructions|https://puppet.com/docs/puppet/5.3/config_ssl_external_ca.html#option-2-puppet-server-functioning-as-an-intermediate-ca] on how to set up an intermediate CA, the cert bundle should be stored at {{/etc/puppetlabs/puppet/ssl/certs/ca.pem}}, but in the CA cert location at {{/etc/puppetlabs/puppet/ssl/ca/ca_crt.pem}}, should contain only the intermediate cert, not the whole bundle. This is a problem, because the server's CA cert endpoint serves from the latter, meaning it only serves up the intermediate CA cert to the agent, not the whole bundle. We should investigate the best way to make sure that the bundle gets served to the agent. It may be possible already to put the bundle in {{ca_crt.pem}}, thanks to some updates to our SSL code since those docs were written. If that's the case, we should update the docs, and write our CI tool to use the new locations.", "epicLinkSummary": "Robust Intermediate CA", "estimate": "PT0S", "externalId": "16758", "fixedVersions": ["SERVER 6.0.0"], "id": "16758", "issueType": "Improvement", "key": "SERVER-2197", "labels": [], "originalEstimate": "PT0S", "parent": "15102", "parentSummary": "Robust Intermediate CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-05-03T17:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver needs to serve the CA bundle from the CA cert endpoint", "timeSpent": "PT0S", "updated": "2018-09-19T13:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "This must be a Puppet Server issue and that its YAML parser is different from that of MRI. Moving this ticket.", "created": "2018-04-25T04:52:00.000000"}], "components": [], "created": "2018-04-24T15:59:00.000000", "creator": "557058:e6726ff0-7a50-486d-b5db-41043ba64e4d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "A puppet agent run should at least successfully compile a catalog, when hieradata contains valid yaml syntax (with tab characters as separation characters).\u00a0"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1fe00b3d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzli7z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_177508521_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_121977630382"}], "description": "While adding saz-ssh, and the requisite hieradata, I copied some entries from /etc/ssh/sshd_config to the hiera key `ssh::server_options` and added the colons and indenting. The \"AuthorizedKeysFile\" apparently has a \"tab\" character between the key and value in the config file. Here is a very small snippet of the hiera config:\n{code:title=hieradata/common.yaml}#####\n# ssh: https://forge.puppet.com/saz/ssh\n# NOTE: Remember to put 'yes' or 'no' in quotes so that it is a \"string\" and not a boolean (True/False)\nssh::use_issue_net: true # CCE-CCE-27314-4\nssh::storeconfigs_enabled: false # For now\nssh::server_options:\n  AuthorizedKeysFile:\t.ssh/authorized_keys\n  ChallengeResponseAuthentication: 'no'\n  Ciphers: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc # CCE-CCE-27295-5\n{code}\n\u00a0\n\u00a0 That configuration seemed to run fine with {{puppet apply}}, however with puppet agent (against PE 2017.3.5), I got the following error:\n\n{code:title=error}\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Unable to parse (/etc/puppetlabs/code/environments/hieratest/hieradata/common.yaml): found character '\\t(TAB)' that cannot start any token. (Do not use \\t(TAB) for indentation) while scanning for the next token at line 503 column 22 on node linux-sandbox.domain.corp\n{code}\n\nNOTE: that is the {{(space)(space)AuthorizedKeys:(tab).ssh/authorized_keys}} line above.\n\nI have removed the offending tabs, as the error message was *awesome* in leading me exactly to the spot that it was unhappy about. However, according to the yaml spec: http://yaml.org/spec/1.2/spec.html#id2778241 the tab character is valid as a \"separation\" character (not an \"indent\" character). This means that tools like yamllint or yaml-lint do not detect this problem, but puppet runs barf. I am not entirely sure this isn't a puppetserver problem (as it works with puppet apply.\n\n", "environment": "CentOS 7.4 x86_64, Puppet Enterprise 2017.3.5", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16547", "fixedVersions": [], "id": "16547", "issueType": "Bug", "key": "SERVER-2196", "labels": ["needs_repro"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e6726ff0-7a50-486d-b5db-41043ba64e4d", "resolution": "Won't Fix", "resolutionDate": "2022-03-08T10:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "tabs as separators in yaml files error should be allowed according to yaml spec", "timeSpent": "PT0S", "updated": "2022-03-08T10:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "attachments": [{"attacher": "557058:104b5720-714d-4539-b455-df472251ec89", "created": "2018-05-17T00:31:00.000000", "name": "Screen Shot 2018-05-16 at 11.30.37 PM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11127"}], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Two places where adding this might make sense:\n\n  - As an additional output option for the status API, perhaps at a TRACE level: {{status/v1/services/jruby-metrics?level=trace}}\n\n  - As a dedicated endpoint under {{/puppet-admin-api}}\n\nThe second might make more sense as it requires authentication via a certificate --- given stacktraces show up on security audits as sensitive information that should be access controlled.", "created": "2018-04-20T12:56:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Discussed at our recent grooming session.\n\nWe like the idea of being able to easily pin point the cause of a hung process and then prioritize fixing the cause of the hang before adding in a global timeout to JRuby that may or may not leave the system in a good state.\n\nWe were unsure about an actual HTTP api for it though and [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] believes there's a why to get a meaningful JRuby stack trace out of Puppet Server using linux's perf tool (and maybe reifyclasses?). Right now we're going to look into that further so that we can hopefully provide a faster response to the current customer escalation that Charlie mentioned.\n\nWe will do that work in\u00a0PE-24082, share it more widely if successful, and reprioritize this and SERVER-1997 in relation to how successful that work is.", "created": "2018-04-27T12:18:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Tools like JStack won't correlate a JRuby thread with the request that is being processed by Puppet Server --- I don't know if perf would be any more helpful in that regard. An API could return the JRuby instance ID and borrow reason which makes it very easy to find the right stacktrace.\n\nIf we could get the info from {{perf}} that would be awesome and a useful option to have. However, I think an API would save us time in the long run by providing better context and also cutting through the red tape that can come with installing debugging tools on production servers.", "created": "2018-04-27T13:11:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I had a minute between collecting stacktraces for my last ticket and I wanted to investigate this a little further. I think we can get a stack trace from a JRuby scripting container calling the below, though I haven't verified it's a Ruby vs JRuby interpreter stacktrace:\n\n{{(-> scripting-container .getProvider .getRuntime .getCurrentContext (.createBacktrace2 100}} true))\n\nOr probably the java equivalent implemented on our [subclass of scripting container|https://github.com/puppetlabs/jruby-utils/blob/master/src/java/com/puppetlabs/jruby_utils/jruby/InternalScriptingContainer.java]. Access to each scripting container should be available even when checked out by the pools {{getRegisteredElements}}\u00a0method. Doing this from the jruby-pool-manager impl in clojure should allow us to display checkout reason and stacktrace.\n\nIf we don't want to\u00a0open this up as an http api we might still want to register a signal handler?", "created": "2018-05-07T11:10:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Also, fwiw, my current hunch is that a Ruby stack trace won't help the previously mentioned support escalation (though if my hunch is correct it'd obviously eliminate JRuby as a culprit).", "created": "2018-05-07T11:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Whell, turns out you can already do this!\n\n\n The steps to do this are:\n # Add {{-Djruby.management.enabled=true}} to the {{JAVA_ARGS}}.\n # Uncomment the {{metrics.metrics-webservice.servlet-init-params.policyLocation}} setting in {{/etc/puppetlabs/puppetserver/conf.d/metrics.conf}} (should be a file path to {{/etc/puppetlabs/puppetserver/jolokia-access.xml}}.\n # Create a file in the location specified by {{policyLocation}} above with the content:\n ## \n{code}## <?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<restrict>\n\n  <allow>\n    <mbean>\n      <name>org.jruby:type=Runtime,service=Runtime</name>\n      <operation>threadDump</operation>\n    </mbean>\n  </allow>\n\n</restrict>\n{code}\n # Restart the server\n # Go to {{https://<master>/metrics/v2/list}} and find the JRuby instance whose stacktrace you want\n ## The full mbean name will be {{org.jruby:name=<internal jruby instance identifier>,service=Runtime,type=Runtime}}\n # Go to {{https://<master>/metrics/v2/exec/<full mbean name>/threadDump}} to see the current thread dump for that Jruby instance.\n\n\u00a0\nNote: the Jolokia exec functionality that this leverages is super powerful. Users should be very weary of turning it on as it allows remote code execution by design. There are ways in the jolokia-access.xml file to further limit access (like by ip range) that they should also take advantage of.", "created": "2018-05-17T00:31:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've attached a screenshot of a query against a local vagrant vm running Puppet Server 5.3.1.", "created": "2018-05-17T00:32:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Oh nice! Yeah, the JMX exec functionality that Jolokia exposes is a very, very sharp tool which is exactly why I locked it down by default :)\n\nBut, given the heavy lifting seems to be already available via JMX, perhaps it would be straight-forward to add an Puppet Server admin API endpoint that takes a JRuby instance ID and returns the borrow reason, borrow time and JMX stacktrace. This would solve two shortcomings of the JMX approach:\n\n  - The internal JRuby instance identifier isn't directly mappable to the JRuby pool id which identifies \"the instance that has been stuck for 24 hours doing _something_\".\n\n  - The {{/metrics/v2}} API has no auth, while {{/puppet-admin-api}} requires a certificate.\n\nI think we'll get the most use out if this if it is exposed in a way that can be enabled by default and automatically polled by the PE support script. Otherwise, if someone has to jump through hoops to properly secure JMX exec and then re-start the service (which clears the hang that we need to debug), then we'll have to put in more effort to walk users through it along with a lower success rate.", "created": "2018-05-17T10:18:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Below is a threadDump from a VM stuck in the clojure {{slurp}} call that we're seeing in PE-24082. You might notice that the JRuby thread dump printer does a great job of filtering out JVM symbols and then pretty printing the non-Java calls, making the clojure stack easier to read as well (with the exception that functions names are all {{invoke}}).\n\nOddly, JRuby prints out stack traces for all threads its VM knows about, which includes jetty threads that have checked it out previously. You can see both JRuby instances' threads in the below thread dump (the calls to io.clj are where the issue leaves clojure and/or ruby and becomes a pure java problem).\n{code}\nAll threads known to Ruby instance 1555721580\n\nThread: qtp1105564375-63\nStack:\njruby_internal.clj:133:in `invoke': thread dump (RuntimeError)\n\tfrom jruby_internal.clj:130:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom jruby_internal.clj:271:in `invoke'\n\tfrom jruby_internal.clj:264:in `invoke'\n\tfrom jruby_internal.clj:312:in `invoke'\n\tfrom jruby_internal.clj:301:in `invoke'\n\tfrom jruby_core.clj:212:in `invoke'\n\tfrom jruby_core.clj:199:in `invoke'\n\tfrom jruby_request.clj:46:in `invoke'\n\tfrom jruby_request.clj:33:in `invoke'\n\tfrom request_handler_service.clj:47:in `handle_request'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom ring_middleware.clj:284:in `invoke'\n\tfrom core.clj:168:in `invoke'\n\tfrom core.clj:211:in `invoke'\n\tfrom core.clj:45:in `invoke'\n\tfrom core.clj:357:in `invoke'\n\tfrom core.clj:51:in `invoke'\n\tfrom ringutils.clj:83:in `invoke'\n\tfrom master_core.clj:742:in `invoke'\n\tfrom ring.cljc:25:in `invoke'\n\tfrom ring.cljc:16:in `invoke'\n\tfrom comidi.clj:245:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:148:in `invoke'\n\tfrom comidi.clj:332:in `invoke'\n\tfrom jetty9_core.clj:433:in `invoke'\n\tfrom normalized_uri_helpers.clj:74:in `invoke'\n\n\nThread: clojure-agent-send-pool-0\nStack:\nthread dump (RuntimeError)\n\n\nThread: qtp1105564375-59\nStack:\njruby_internal.clj:133:in `invoke': thread dump (RuntimeError)\n\tfrom jruby_internal.clj:130:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom jruby_internal.clj:271:in `invoke'\n\tfrom jruby_internal.clj:264:in `invoke'\n\tfrom jruby_internal.clj:312:in `invoke'\n\tfrom jruby_internal.clj:301:in `invoke'\n\tfrom jruby_core.clj:212:in `invoke'\n\tfrom jruby_core.clj:199:in `invoke'\n\tfrom jruby_request.clj:46:in `invoke'\n\tfrom jruby_request.clj:33:in `invoke'\n\tfrom request_handler_service.clj:47:in `handle_request'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom ring_middleware.clj:284:in `invoke'\n\tfrom core.clj:168:in `invoke'\n\tfrom core.clj:211:in `invoke'\n\tfrom core.clj:45:in `invoke'\n\tfrom core.clj:357:in `invoke'\n\tfrom core.clj:51:in `invoke'\n\tfrom ringutils.clj:83:in `invoke'\n\tfrom master_core.clj:742:in `invoke'\n\tfrom ring.cljc:25:in `invoke'\n\tfrom ring.cljc:16:in `invoke'\n\tfrom comidi.clj:245:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:148:in `invoke'\n\tfrom comidi.clj:332:in `invoke'\n\tfrom jetty9_core.clj:433:in `invoke'\n\tfrom normalized_uri_helpers.clj:74:in `invoke'\n\n\nThread: async-dispatch-2\nStack:\nthread dump (RuntimeError)\n\n\nThread: qtp1105564375-61\nStack:\njruby_internal.clj:133:in `invoke': thread dump (RuntimeError)\n\tfrom jruby_internal.clj:130:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom jruby_internal.clj:271:in `invoke'\n\tfrom jruby_internal.clj:264:in `invoke'\n\tfrom jruby_internal.clj:312:in `invoke'\n\tfrom jruby_internal.clj:301:in `invoke'\n\tfrom jruby_core.clj:212:in `invoke'\n\tfrom jruby_core.clj:199:in `invoke'\n\tfrom jruby_request.clj:46:in `invoke'\n\tfrom jruby_request.clj:33:in `invoke'\n\tfrom request_handler_service.clj:47:in `handle_request'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom ring_middleware.clj:284:in `invoke'\n\tfrom core.clj:168:in `invoke'\n\tfrom core.clj:211:in `invoke'\n\tfrom core.clj:45:in `invoke'\n\tfrom core.clj:357:in `invoke'\n\tfrom core.clj:51:in `invoke'\n\tfrom ringutils.clj:83:in `invoke'\n\tfrom master_core.clj:738:in `invoke'\n\tfrom ring.cljc:25:in `invoke'\n\tfrom ring.cljc:16:in `invoke'\n\tfrom comidi.clj:245:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:148:in `invoke'\n\tfrom comidi.clj:332:in `invoke'\n\tfrom jetty9_core.clj:433:in `invoke'\n\tfrom normalized_uri_helpers.clj:74:in `invoke'\n\n\nThread: qtp1105564375-62\nStack:\njruby_internal.clj:133:in `invoke': thread dump (RuntimeError)\n\tfrom jruby_internal.clj:130:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom jruby_internal.clj:271:in `invoke'\n\tfrom jruby_internal.clj:264:in `invoke'\n\tfrom jruby_internal.clj:312:in `invoke'\n\tfrom jruby_internal.clj:301:in `invoke'\n\tfrom jruby_core.clj:212:in `invoke'\n\tfrom jruby_core.clj:199:in `invoke'\n\tfrom jruby_request.clj:46:in `invoke'\n\tfrom jruby_request.clj:33:in `invoke'\n\tfrom request_handler_service.clj:47:in `handle_request'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom ring_middleware.clj:284:in `invoke'\n\tfrom core.clj:168:in `invoke'\n\tfrom core.clj:211:in `invoke'\n\tfrom core.clj:45:in `invoke'\n\tfrom core.clj:357:in `invoke'\n\tfrom core.clj:51:in `invoke'\n\tfrom ringutils.clj:83:in `invoke'\n\tfrom master_core.clj:721:in `invoke'\n\tfrom ring.cljc:25:in `invoke'\n\tfrom ring.cljc:16:in `invoke'\n\tfrom comidi.clj:245:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:148:in `invoke'\n\tfrom comidi.clj:332:in `invoke'\n\tfrom jetty9_core.clj:433:in `invoke'\n\tfrom normalized_uri_helpers.clj:74:in `invoke'\n\n\nThread: qtp1105564375-66\nStack:\nio.clj:337:in `invokeStatic': thread dump (RuntimeError)\n\tfrom io.clj:334:in `invoke'\n\tfrom io.clj:406:in `invokeStatic'\n\tfrom io.clj:391:in `doInvoke'\n\tfrom core.clj:6665:in `invokeStatic'\n\tfrom core.clj:6657:in `doInvoke'\n\tfrom request_handler_core.clj:78:in `invokeStatic'\n\tfrom request_handler_core.clj:54:in `invoke'\n\tfrom request_handler_core.clj:86:in `invokeStatic'\n\tfrom request_handler_core.clj:81:in `invoke'\n\tfrom request_handler_core.clj:269:in `invoke'\n\tfrom jruby_request.clj:48:in `invoke'\n\tfrom jruby_request.clj:33:in `invoke'\n\tfrom request_handler_service.clj:47:in `handle_request'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom ring_middleware.clj:284:in `invoke'\n\tfrom core.clj:168:in `invoke'\n\tfrom core.clj:211:in `invoke'\n\tfrom core.clj:45:in `invoke'\n\tfrom core.clj:357:in `invoke'\n\tfrom core.clj:51:in `invoke'\n\tfrom ringutils.clj:83:in `invoke'\n\tfrom master_core.clj:738:in `invoke'\n\tfrom ring.cljc:25:in `invoke'\n\tfrom ring.cljc:16:in `invoke'\n\tfrom comidi.clj:245:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:148:in `invoke'\n\tfrom comidi.clj:332:in `invoke'\n\tfrom jetty9_core.clj:433:in `invoke'\n\tfrom normalized_uri_helpers.clj:74:in `invoke'\n\n\nThread: qtp1105564375-65\nStack:\nio.clj:337:in `invokeStatic': thread dump (RuntimeError)\n\tfrom io.clj:334:in `invoke'\n\tfrom io.clj:406:in `invokeStatic'\n\tfrom io.clj:391:in `doInvoke'\n\tfrom core.clj:6665:in `invokeStatic'\n\tfrom core.clj:6657:in `doInvoke'\n\tfrom request_handler_core.clj:78:in `invokeStatic'\n\tfrom request_handler_core.clj:54:in `invoke'\n\tfrom request_handler_core.clj:86:in `invokeStatic'\n\tfrom request_handler_core.clj:81:in `invoke'\n\tfrom request_handler_core.clj:269:in `invoke'\n\tfrom jruby_request.clj:48:in `invoke'\n\tfrom jruby_request.clj:33:in `invoke'\n\tfrom request_handler_service.clj:47:in `handle_request'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom request_handler.clj:3:in `invoke'\n\tfrom core.clj:2515:in `invoke'\n\tfrom ring_middleware.clj:284:in `invoke'\n\tfrom core.clj:168:in `invoke'\n\tfrom core.clj:211:in `invoke'\n\tfrom core.clj:45:in `invoke'\n\tfrom core.clj:357:in `invoke'\n\tfrom core.clj:51:in `invoke'\n\tfrom ringutils.clj:83:in `invoke'\n\tfrom master_core.clj:738:in `invoke'\n\tfrom ring.cljc:25:in `invoke'\n\tfrom ring.cljc:16:in `invoke'\n\tfrom comidi.clj:245:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:152:in `invoke'\n\tfrom http.clj:148:in `invoke'\n\tfrom comidi.clj:332:in `invoke'\n\tfrom jetty9_core.clj:433:in `invoke'\n\tfrom normalized_uri_helpers.clj:74:in `invoke'\n{code}", "created": "2018-05-17T10:25:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "That seems pretty nice. [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] you OK with the current state of stack dumps? ", "created": "2018-05-17T17:15:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] The output looks great and definitely something we'll try at the moment. However, I still see a need for a solution that doesn't involve discarding the state of the problem and has a lower bar for secure configuration.\n\nThis should be data that we can collect immediately as a first response to troubleshooting a hung Puppet Server, ideally as part of an automated diagnostic check in the PE support script.", "created": "2018-05-17T17:39:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] what's the best way for us to get the current abilities documented for customer success/customers? Do you think this would be valuable in the FOSS docs, or should this target some CS best practices docs?", "created": "2018-05-22T11:48:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Filed SUP-465 to get the JMX instructions written up as a KB article similar to what we have for using JStack to pull Java stack traces.\n\nI'm also marking this ticket as re-opened as we really do need something that can be deployed as a first response without any re-configuration that discards the state we need to debug.", "created": "2018-05-29T09:21:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I took a stab at spiking this out, and it turned out to be fairly straight-forward:\n\n{code:patch}\ndiff --git a/src/clj/puppetlabs/services/puppet_admin/puppet_admin_core.clj b/src/clj/puppetlabs/services/puppet_admin/puppet_admin_core.clj\nindex a2d58be9..95d55e22 100644\n--- a/src/clj/puppetlabs/services/puppet_admin/puppet_admin_core.clj\n+++ b/src/clj/puppetlabs/services/puppet_admin/puppet_admin_core.clj\n@@ -3,6 +3,12 @@\n   (:require [puppetlabs.kitchensink.core :as ks]\n             [puppetlabs.puppetserver.ringutils :as ringutils]\n             [puppetlabs.services.protocols.jruby-puppet :as jruby-puppet]\n+\n+            [puppetlabs.services.jruby-pool-manager.jruby-core :as jruby-core]\n+            [puppetlabs.trapperkeeper.services :as tk-services]\n+            [puppetlabs.ring-middleware.utils :as tk-ring]\n+            [clojure.java.jmx :as jmx]\n+\n             [puppetlabs.puppetserver.liberator-utils :as liberator-utils]\n             [schema.core :as schema]\n             [liberator.core :refer [defresource]]\n@@ -76,7 +82,21 @@\n       (environment-cache-resource jruby-service\n         (get-in request [:query-params \"environment\"])))\n     (comidi/DELETE \"/jruby-pool\" []\n-      (handle-jruby-pool-flush jruby-service))))\n+      (handle-jruby-pool-flush jruby-service))\n+    (comidi/GET \"/jruby-pool/thread-dump\" []\n+      (let [{:keys [pool-context]} (tk-services/service-context jruby-service)\n+            jruby-instances (jruby-core/registered-instances pool-context)]\n+        (tk-ring/json-response\n+         200\n+         (for [instance jruby-instances]\n+           (let [mbean-name (-> (:scripting-container instance)\n+                                .getProvider\n+                                .getRuntime\n+                                .getBeanManager\n+                                .base\n+                                (str \"service=Runtime\"))]\n+             {:id (:id instance)\n+              :thread-dump (jmx/invoke mbean-name :threadDump)})))))))\n \n (defn versioned-routes\n   [jruby-service]\n{code}\n\nThe code above requires {{-Djruby.management.enabled=true}} to be set on the process. The implementation probably belongs over in the jruby-utils project so that it can be used by other services that run JRuby.", "created": "2019-08-15T17:37:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Looks like a JRuby bug hit somewhere between 9.2.0.0 and 9.2.7.0 that broke the stack traces provides by {{jruby.management.enabled}}. Fixed in 9.2.8.0 by this commit:\n\nhttps://github.com/jruby/jruby/commit/d2875a4", "created": "2019-08-19T10:36:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ha, we want 9.2.8 in Lovejoy for the perf improvements. We were releasing 9.2.7 to prepare for the release not knowing exactly when 9.2.8 was coming out, of course it came out while we were in the middle of upgrading. I'll do the 9.2.8 upgrade now.", "created": "2019-08-19T11:04:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Put up a pair of pull requests. The first is to jruby-utils, and provides an API for gathering thread-dump info from a JRuby pool:\n\nhttps://github.com/puppetlabs/jruby-utils/pull/71\n\nThe second is to Puppetserver and adds an REST API endpoint to {{/puppet-admin-api}} which retrieves the thread dumps from jruby-utils and formats them as JSON:\n\nhttps://github.com/puppetlabs/puppetserver/pull/2154\n\nBoth require {{-Djruby.management.enabled=true}} to be set in JAVA_ARGS. But, once that is in place, thread dumps can be pulled in one REST API call vs. re-configuring JMX access rules, listing out JRuby mbeans, and then looping through the list and invoking the threadDump method.", "created": "2019-08-19T20:35:00.000000"}], "components": [], "created": "2018-04-20T12:49:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@139f442c"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - $$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "2 - 5-25% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Long running Jrubies are very difficult to identify the root cause for. Some customers have been satisfied with just restarting puppetserver but that will not always be the case. The cost of not having this is a customer confidence issue when we cannot explain the root cause of their issue, only provide the workaround of restarting.\n\nSupport has reached the extent of how deeply they can dig without this additional functional.\n\nThe only additional option is debug mode which has significant performance impacts and is not suitable for running in production. It also requires a restart which means you may be waiting for an extended period to see the issue recur. "}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - Serious"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1313"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzmda7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added an endpoint to Puppet Server, `/puppet-admin-api/v1/jruby-pool/thread-dump`, that will return a thread dump of running JRuby instances, if `jruby.management.enabled` has been set to true in the JVM running puppetserver. See https://github.com/puppetlabs/puppetserver/blob/master/documentation/admin-api/v1/jruby-pool.markdown#get-puppet-admin-apiv1jruby-poolthread-dump for details."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_426747399_*|*_1_*:*_1_*:*_602977363_*|*_10007_*:*_1_*:*_1954293192_*|*_3_*:*_1_*:*_178413053_*|*_10009_*:*_1_*:*_664369589_*|*_4_*:*_1_*:*_38661114583_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_404056675_*|*_10005_*:*_1_*:*_1507255182"}], "description": "As an administrator of Puppet Infrastructure, I need to determine why a Puppet Server request using a JRuby instance has stalled before I restart the service. This can happen if the request has triggered methods from core Puppet code or a Ruby plugin that will never return.\n\nh2. Reproduction Case\n\n  - Install and start Puppet Server on a CentOS 7 VM:\n\n{code:bash}\nrpm -Uvh http://yum.puppetlabs.com/puppet5/puppet5-release-el-7.noarch.rpm\nyum install -y puppetserver\n\n/opt/puppetlabs/puppet/bin/puppet config set --section main server \"$(hostname -f)\"\nsystemctl start puppetserver\n{code}\n\n  - Configure {{site.pp}} to sleep for an absurd amount of time in response to a catalog request:\n\n{code:puppet}\ncat <<\"EOM\" > /etc/puppetlabs/code/environments/production/manifests/site.pp\nnode default {\n  inline_template('<% Kernel.sleep(1800) %>')\n  # I feel much better after a 30 minute catnap!\n}\nEOM\n{code}\n\n  - Kick off a puppet run: {{/opt/puppetlabs/bin/puppet agent -t}}\n\n  - Send the node's hostname to your coworker on Friday afternoon and tell them to figure out what is going on without looking at {{site.pp}} (because this could be a problem with 1 out of 100s of installed modules). Leave for a two week vacation.\n\nh3. Current Options\n\nBelow are listed two current options for checking the state of stalled JRuby requests. Both can help identify that a request is indeed stalled, but neither provides visibility into what Ruby code is responsible.\n\nChecking the status of the compiler pool shows that a catalog request is hung, but gives no info as to where the request is stalled:\n\n{noformat}\n# curl -k https://localhost:8140/status/v1/services/jruby-metrics?level=debug|python -m json.tool\n{\n    \"active_alerts\": [],\n    \"detail_level\": \"debug\",\n    \"service_name\": \"jruby-metrics\",\n    \"service_status_version\": 1,\n    \"service_version\": \"5.3.1\",\n    \"state\": \"running\",\n    \"status\": {\n        \"experimental\": {\n            \"jruby-pool-lock-status\": {\n                \"current-state\": \":not-in-use\",\n                \"last-change-time\": \"2018-04-20T18:24:02.904Z\"\n            },\n            \"metrics\": {\n                \"average-borrow-time\": 82,\n                \"average-free-jrubies\": 0.000271409884577374,\n                \"average-lock-held-time\": 0,\n                \"average-lock-wait-time\": 0,\n                \"average-requested-jrubies\": 0.0,\n                \"average-wait-time\": 0,\n                \"borrow-count\": 5,\n                \"borrow-retry-count\": 0,\n                \"borrow-timeout-count\": 0,\n                \"borrowed-instances\": [\n                    {\n                        \"duration-millis\": 470045,\n                        \"reason\": {\n                            \"request\": {\n                                \"request-method\": \"post\",\n                                \"route-id\": \"puppet-v3-catalog-/*/\",\n                                \"uri\": \"/puppet/v3/catalog/tvtyjvubmmaixqi.delivery.puppetlabs.net\"\n                            }\n                        },\n                        \"time\": 1524248690580\n                    }\n                ],\n                \"num-free-jrubies\": 0,\n                \"num-jrubies\": 1,\n                \"num-pool-locks\": 0,\n                \"queue-limit-hit-count\": 0,\n                \"queue-limit-hit-rate\": 0.0,\n                \"requested-count\": 5,\n                \"requested-instances\": [],\n                \"return-count\": 4\n            }\n        }\n    }\n}\n{noformat}\n\nPulling a thread dump using {{jstack}} after installing {{java-1.8.0-openjdk-devel}} shows a JRuby thread waiting (on RubyKernel.sleep, but thats a lucky coincidence), but the stack trace is at the Java and JRuby AST level which gives no indications as to what Ruby code caused it:\n\n{noformat}\n# sudo -u puppet jstack $(cat /var/run/puppetlabs/puppetserver/puppetserver.pid)\n...\n\"qtp281635025-65\" #65 prio=5 os_prio=0 tid=0x00007f30f00c4000 nid=0x9f3 in Object.wait() [0x00007f30edaa4000]\n   java.lang.Thread.State: TIMED_WAITING (on object monitor)\n\tat java.lang.Object.wait(Native Method)\n\t- waiting on <0x00000000f568d888> (a org.jruby.RubyThread)\n\tat org.jruby.RubyThread.sleep(RubyThread.java:1002)\n\t- locked <0x00000000f568d888> (a org.jruby.RubyThread)\n\t- locked <0x00000000f568d888> (a org.jruby.RubyThread)\n\tat org.jruby.RubyKernel.sleep(RubyKernel.java:803)\n\tat org.jruby.RubyKernel$INVOKER$s$0$1$sleep.call(RubyKernel$INVOKER$s$0$1$sleep.gen)\n\tat org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:667)\n\tat org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)\n\tat org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.ast.RootNode.interpret(RootNode.java:129)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:95)\n\n...skipping a lot of JRuby AST calls for brevity...\n\npuppetlabs.services.request_handler.request_handler_core$jruby_request_handler$fn__31686.invoke(request_handler_core.clj:273)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_jruby_instance$fn__31597.invoke(jruby_request.clj:48)\n\tat puppetlabs.puppetserver.jruby_request$wrap_with_error_handling$fn__31593.invoke(jruby_request.clj:33)\n\tat puppetlabs.services.request_handler.request_handler_service$reify__31694$service_fnk__5266__auto___positional$reify__31709.handle_request(request_handler_service.clj:47)\n\tat puppetlabs.services.protocols.request_handler$eval27407$fn__27408$G__27399__27411.invoke(request_handler.clj:3)\n\tat puppetlabs.services.protocols.request_handler$eval27407$fn__27408$G__27398__27415.invoke(request_handler.clj:3)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2515)\n\tat puppetlabs.trapperkeeper.authorization.ring_middleware$eval39879$wrap_authorization_check__39888$fn__39891$fn__39892.invoke(ring_middleware.clj:284)\n\tat puppetlabs.ring_middleware.core$eval21857$wrap_bad_request__21866$fn__21869$fn__21874.invoke(core.clj:168)\n\tat puppetlabs.ring_middleware.core$eval21953$wrap_uncaught_errors__21962$fn__21965$fn__21970.invoke(core.clj:211)\n\tat puppetlabs.ring_middleware.core$eval21584$wrap_request_logging__21589$fn__21590$fn__21592.invoke(core.clj:45)\n\tat puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n\tat puppetlabs.ring_middleware.core$eval21613$wrap_response_logging__21618$fn__21619$fn__21620.invoke(core.clj:51)\n\tat puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__17331.invoke(ringutils.clj:83)\n\tat puppetlabs.services.master.master_core$eval38154$v3_ruby_routes__38159$fn__38160$fn__38177.invoke(master_core.clj:738)\n\tat bidi.ring$eval22897$fn__22898.invoke(ring.cljc:25)\n\tat bidi.ring$eval22876$fn__22877$G__22867__22886.invoke(ring.cljc:16)\n\tat puppetlabs.comidi$make_handler$fn__25007.invoke(comidi.clj:245)\n\tat puppetlabs.metrics.http$eval37332$wrap_with_request_metrics__37337$fn__37341$fn__37343$fn__37344$fn__37345.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$eval37332$wrap_with_request_metrics__37337$fn__37341$fn__37343$fn__37344.invoke(http.clj:152)\n\tat puppetlabs.metrics.http.proxy$java.lang.Object$Callable$7da976d4.call(Unknown Source)\n\tat com.codahale.metrics.Timer.time(Timer.java:101)\n\tat puppetlabs.metrics.http$eval37332$wrap_with_request_metrics__37337$fn__37341$fn__37343.invoke(http.clj:148)\n\tat puppetlabs.comidi$eval25068$wrap_with_route_metadata__25073$fn__25074$fn__25076.invoke(comidi.clj:332)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__35219.invoke(jetty9_core.clj:433)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$eval34795$normalize_uri_handler__34800$fn__34801$fn__34802.invoke(normalized_uri_helpers.clj:74)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:170)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\n\tat org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:521)\n\tat org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n\tat org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:564)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)\n\tat org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:278)\n\tat org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:148)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)\n\tat org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)\n\tat org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)\n\tat java.lang.Thread.run(Thread.java:748)\n...\n{noformat}", "epicLinkSummary": "Improved JRuby Debugging UX", "estimate": "PT0S", "externalId": "15105", "fixedVersions": ["SERVER 6.6.0"], "id": "15105", "issueType": "New Feature", "key": "SERVER-2193", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": "14734", "parentSummary": "Improved JRuby Debugging UX", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Done", "resolutionDate": "2019-09-16T09:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide an API for returning Ruby-level stacktraces for JRuby instances", "timeSpent": "PT0S", "updated": "2019-09-16T09:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Getting this tagged now and promoting the tag to PE.", "created": "2018-04-23T12:09:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] please provide release notes for this issue if needed, thanks!", "created": "2018-05-29T11:12:00.000000"}], "components": [], "created": "2018-04-20T12:28:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b744a7c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlg1j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The {{/puppet/v3/tasks}} endpoint will now reuse cached environments rather than always creating a new one."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_248822391_*|*_1_*:*_1_*:*_74608_*|*_10007_*:*_1_*:*_7855055_*|*_10009_*:*_1_*:*_82359793_*|*_5_*:*_1_*:*_3902384803_*|*_6_*:*_1_*:*_0"}], "description": "The {{/puppet/v3/tasks}} endpoint passes a symbol for the environment name rather than a string, which is inconsistent with every other use of retrieving an environment. With cached environments, that results in creating a new environment instead of re-using the cached environment (or registering a new environment with the symbolized name that won't be re-used by anything else). We should pass the environment name as a string instead to be consistent.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15764", "fixedVersions": ["SERVER 5.3.3"], "id": "15764", "issueType": "Bug", "key": "SERVER-2192", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2018-04-24T10:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tasks endpoint doesn't reuse cached environments", "timeSpent": "PT0S", "updated": "2018-06-08T14:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5ad302a7-67ea-4afc-baad-fa9e700de03a", "body": "{quote}\nheadius commented on 21 Nov 2017\nJRuby 1.7.27 appears to be sufficient as a last release for 1.7. We shall call 1.7 officially EOL now.\n{quote}\nhttps://github.com/jruby/jruby/issues/4112#issuecomment-242504130", "created": "2018-04-17T08:56:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Duplicate of SERVER-2095.\n\n  - Open Source Puppet Server will be moving to 9k in the 6.0 release, 1.7 will no longer be available.\n\n  - The upcoming PE 2018.1 release will use Puppet Server 5.3, but with the default changed to 9k, 1.7 will be available as a fall-back in case some compatibility issue pops up.", "created": "2018-04-17T09:03:00.000000"}, {"author": "557058:5ad302a7-67ea-4afc-baad-fa9e700de03a", "body": "Awesomesauce, thanks [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]! :D", "created": "2018-04-17T09:07:00.000000"}], "components": [], "created": "2018-04-17T08:55:00.000000", "creator": "557058:5ad302a7-67ea-4afc-baad-fa9e700de03a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26f6b5cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlbzr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_508972_*|*_6_*:*_1_*:*_0"}], "description": "Right now, there are conflicts with any gems that require Ruby 2.1 features\n\neg. https://github.com/davealden/hiera-vault/issues/5\n\nSince the version of Ruby used within JRuby < 9k is 1.9.1, which is EOL, it would be nice to default to the newer JRUBY_JAR in the config setting", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16532", "fixedVersions": [], "id": "16532", "issueType": "Improvement", "key": "SERVER-2191", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5ad302a7-67ea-4afc-baad-fa9e700de03a", "resolution": "Duplicate", "resolutionDate": "2018-04-17T09:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change default JRUBY_JAR to 9k", "timeSpent": "PT0S", "updated": "2018-04-17T09:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "The above includes jline <= 2.11", "created": "2018-10-16T14:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Fixed as part of PDB-4357, in clj-parent. https://github.com/puppetlabs/clj-parent/commit/09ff69fb56b72d5e593832648e27ac2ae3d5f457", "created": "2019-09-25T17:58:00.000000"}], "components": ["security"], "created": "2018-04-13T15:34:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f1b4558"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlae7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1207790128_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_44592869696"}], "description": "The master branch of puppetserver is pulling in bouncycastle through https://github.com/puppetlabs/jvm-ssl-utils. The version of bouncycastle should be updated to at least version 1.59 to address CVE-2017-13098 (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2017-13098)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16529", "fixedVersions": ["SERVER 6.6.0"], "id": "16529", "issueType": "Bug", "key": "SERVER-2189", "labels": ["security"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Done", "resolutionDate": "2019-09-25T17:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update to bouncycastle at least 1.59 in puppetserver", "timeSpent": "PT0S", "updated": "2019-09-25T17:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It seems JrJackson is calling Jackson methods that coerce non-UTF8 strings into UTF8. Other serializers blow up when attempting to do this, and Puppet requires that functionality to correctly downgrade to PSON when there's binary data in catalogs/facts/reports.\n\nThis requires a change to the packaging of puppetserver.", "created": "2018-04-12T14:42:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] please provide release notes for this issue, if needed. Thanks!", "created": "2018-04-12T15:32:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Since the fix was ultimately in puppetserver, I think we want to move to SERVER project. Not sure what the new fix version will be (or if we ever released a version of puppetserver with the regression?)", "created": "2018-04-12T18:34:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:63d40628f6e1b543161789a7] good call, moved.", "created": "2018-04-12T18:36:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] how does the fix for this impact PUP-8583 (if at all)?", "created": "2018-04-12T18:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This, and PUP-8583, are issues that have come up when trying to move to using JrJackson.\nWe've never shipped with JrJackson, we've had to revert moving to it just before the last two releases.", "created": "2018-04-12T23:47:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] can this issue be resolved now?", "created": "2018-04-13T15:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Nope. It needs to go through agent CI for validation (it was caught in one of their acceptance tests).\n\nWatching this view: https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppet-agent/view/Public%20Suites/view/5.5.x/view/Suite/job/platform_puppet-agent_puppet-agent-integration-suite_daily-5.5.x/", "created": "2018-04-13T16:56:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The 5.5.x pipeline has yet to take this up, however the 5.5.1_release pipeline ran against this and succeeded.", "created": "2018-04-16T14:49:00.000000"}], "components": [], "created": "2018-04-12T10:56:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e6766c7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl92f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_283998594_*|*_1_*:*_1_*:*_5330781_*|*_10007_*:*_1_*:*_62216667_*|*_3_*:*_1_*:*_8073380_*|*_5_*:*_1_*:*_250361044_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version:* 5.5.1\n*Puppet Server Version:* 5.3.0\n*OS Name/Version:* MacOS/CentOS 7\n\nDescribe your issue in as much detail as possible\u2026\nDescribe steps to reproduce\u2026\n\nSee [catalog_with_binary_data acceptance test|https://github.com/puppetlabs/puppet/blob/bbf2c0ea10db91cd6fa7f0ec5877afad7191f35e/acceptance/tests/catalog_with_binary_data.rb]\n\n*Desired Behavior:*\nOutput from server should be Gzipped PSON; Latin-1\n\n\n*Actual Behavior:*\nOutput is Gzipped JSON; UTF-8 with replacement characters\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17095", "fixedVersions": ["SERVER 5.3.1"], "id": "17095", "issueType": "Bug", "key": "SERVER-2188", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-04-16T14:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Binary files being returned UTF-8 encoded from catalog endpoint", "timeSpent": "PT0S", "updated": "2018-04-19T12:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "attachments": [], "comments": [{"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "Merged to puppetserver#master at\u00a0https://github.com/puppetlabs/puppetserver/commit/20c01f017fe07023087482a41b6e32c12a4a427b.", "created": "2018-04-13T11:21:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "The passing master here http://builds.puppetlabs.lan/passing-server-SHAs/api/v1/json/ was reported on April 16th, while the PR was merged on Friday April 13th. So I think this passed CI and can be resolved.", "created": "2018-04-17T21:38:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db] please add release notes for this issue if needed, thanks!", "created": "2018-08-28T09:02:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This should be removed from pe-pse too, I believe. https://github.com/puppetlabs/pe-puppet-server-extensions/pull/1107", "created": "2019-10-01T15:53:00.000000"}], "components": [], "created": "2018-04-11T16:06:00.000000", "creator": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c42bd14"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl87b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_382645817_*|*_1_*:*_1_*:*_196081_*|*_10007_*:*_1_*:*_155475200_*|*_5_*:*_1_*:*_13362822384_*|*_6_*:*_1_*:*_0"}], "description": "With PA-1925, the puppet-agent package will ship the hiera-eyaml gem in the shared gem directory for Platform 6, which is used by both the agent and puppetserver. Thus, the gem can safely be removed from puppetserver.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14774", "fixedVersions": ["SERVER 6.0.0"], "id": "14774", "issueType": "Task", "key": "SERVER-2187", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "resolution": "Fixed", "resolutionDate": "2018-09-19T13:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove hiera-eyaml gem", "timeSpent": "PT0S", "updated": "2019-10-01T15:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] is this something you think we should prioritize doing as a maintenance task?", "created": "2019-02-15T09:48:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "It's not much work and it makes changing jruby versions much easier.", "created": "2019-03-26T17:46:00.000000"}], "components": [], "created": "2018-04-09T11:44:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver no longer pulls in jruby via jruby-deps"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a1a896a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rw:o"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Mar/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18510028669_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_104956206634"}], "description": "We initially started using [jruby-deps|https://github.com/puppetlabs/jruby-deps] to facilitate switching between JRuby versions in puppetserver. Since we are now just packing 9k directly, we shouldn't have to go through jruby-deps anymore.\n\nBefore removing this, we should look for other projects that use it and make sure they're not expecting puppetserver to pull it in.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16527", "fixedVersions": [], "id": "16527", "issueType": "Task", "key": "SERVER-2185", "labels": [], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Stop using jruby-deps to pull in JRuby jar", "timeSpent": "PT0S", "updated": "2022-03-08T10:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2018-04-09T08:01:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2302bbea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8642"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl58n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2278_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_378312656"}], "description": "(Initial planned release date: 2018-04-17)\n\n* Update version number in source to point to next snapshot.\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update Winston and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2018-04-18T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.1 Release - 2018-04-17\n", "estimate": "PT0S", "externalId": "15917", "fixedVersions": [], "id": "15917", "issueType": "Task", "key": "SERVER-2184", "labels": [], "originalEstimate": "PT0S", "parent": "22024", "parentSummary": "Puppet Platform 5.5.1 Release - 2018-04-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-04-13T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.1)", "timeSpent": "PT0S", "updated": "2018-04-13T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] has this been done?", "created": "2018-04-16T15:47:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "yes", "created": "2018-04-16T15:51:00.000000"}], "components": [], "created": "2018-04-09T08:01:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a910883"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8642"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl58f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2298_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_633011220"}], "description": "(Initial planned release date: 2018-04-17)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Bump and Tag the candidate SHA once passing\n  * This is automated for internal (PE) releases, and may be automated soon for\n   open source. Locally from a checkout of the release branch update the version\n   number in the project.clj (non-SNAPSHOT version). Commit this change and\n   create a signed tag with the version number project.clj was just bumped to.\n* Ensure tagged release version is built, tested and artifacts exist at\n  builds.delivery.puppetlabs.net\n  * This may entail manually promoting into PE again.\n", "duedate": "2018-04-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.1 Release - 2018-04-17\n", "estimate": "PT0S", "externalId": "15763", "fixedVersions": [], "id": "15763", "issueType": "Task", "key": "SERVER-2183", "labels": [], "originalEstimate": "PT0S", "parent": "22024", "parentSummary": "Puppet Platform 5.5.1 Release - 2018-04-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-04-16T15:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.1)", "timeSpent": "PT0S", "updated": "2018-04-16T15:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] this ticket should be ready to go as well...", "created": "2018-04-12T08:15:00.000000"}], "components": [], "created": "2018-04-09T08:01:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@613cba38"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8642"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl587:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2430_*|*_3_*:*_1_*:*_682998_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_377627610"}], "description": "(Initial planned release date: 2018-04-17)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2018-04-12T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.1 Release - 2018-04-17\n", "estimate": "PT0S", "externalId": "15503", "fixedVersions": [], "id": "15503", "issueType": "Task", "key": "SERVER-2182", "labels": [], "originalEstimate": "PT0S", "parent": "22024", "parentSummary": "Puppet Platform 5.5.1 Release - 2018-04-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-04-13T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.1)", "timeSpent": "PT0S", "updated": "2018-04-13T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] this ticket should be actionable now - the goal is to have our release candidate builds ready by end of week.", "created": "2018-04-12T08:10:00.000000"}], "components": [], "created": "2018-04-09T08:01:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f932eac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8642"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl57z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2120_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_377619694"}], "description": "(Initial planned release date: 2018-04-17)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Check project.clj and clj-parent for any library updates since the last\n    release (e.g. {{git diff 2.3.2 \u2013 project.clj}})\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2018-04-10T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.1 Release - 2018-04-17\n", "estimate": "PT0S", "externalId": "15104", "fixedVersions": [], "id": "15104", "issueType": "Task", "key": "SERVER-2181", "labels": [], "originalEstimate": "PT0S", "parent": "22024", "parentSummary": "Puppet Platform 5.5.1 Release - 2018-04-17\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-04-13T16:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.1)", "timeSpent": "PT0S", "updated": "2018-04-13T16:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This should add code to the CA setup CLI tool that was created in SERVER-2172.", "created": "2018-04-27T15:00:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] this is the work I mentioned on your PE install doc about the intermediate CA setup. Please work with [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] to make sure we've contemplated implications on PE install/first-run.", "created": "2018-06-14T17:19:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I know almost nothing about how the PE installer works, but it seems like it might be possible for us to exercise a puppetserver subcommand within it implicitly after puppetserver has been installed as part of the package. That subcommand would create a self-signed root, use it to sign an intermediate Puppet CA signing cert, and then we'd proceed as we do now. We were definitely not intending to make the user do anything extra by default. We are just hoping to take the CA initialization out of the puppetserver startup, and do it as part of the install (or post-install for FOSS) instead. We could consider adding customization options to the install process later, e.g. for users that want to use their own root for the intermediate CA. But that is outside the scope of this ticket.\n\nDoes that seem feasible?", "created": "2018-06-26T15:58:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] do you know of any scenario where a user would spin up a new version 6 Puppet Server and want to run 5.x agents against it? I'm worried because 5.x agents do not properly support an intermediate CA, but with this change, the CA created by Puppet Server will always be an intermediate CA. Do we need to support being able to generate a self-signed CA as an alternative, or is this scenario not likely/common?", "created": "2018-08-28T11:29:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] I would say the normal operating procedure would be to update your PE infrastructure and update your agents \"later.\"  Later could be next week, next month, next quarter, or next year.  I think it is very common not to update your agents for months after you update your PE infrastructure.  \n\nI would recommend that for upgrades we ensure 5.x agents can still connect.  For new installs there's less concern but we should document it in the PE upgrade notes.  ", "created": "2018-08-28T11:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I assume when most people upgrade they keep their old CA. If that is the case, 5.x agents will continue to be able to connect just fine.", "created": "2018-08-28T11:52:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We have decided to leave the bootstrapping code in, to give users the option of using a non-intermediate CA. In PE, the installer will generate an intermediate CA using the CLI tool by default.", "created": "2018-09-10T10:53:00.000000"}], "components": [], "created": "2018-04-06T12:57:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppet Server uses an intermediate CA model all the time\n* The CA setup CLI tool creates a root cert and an intermediate CA cert when asked to generate a PKI"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33c32ea7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl21r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4221035175_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_7665542285_*|*_10005_*:*_1_*:*_1670788226"}], "description": "When I am setting up my Puppet Server, I only want one certificate model to think about: a root CA (either my corporate root or autogenerated by Puppet) and an intermediate CA signed by that root that issues agent certs.\n\nCurrently, when Puppetserver starts for the first time, it generates a self-signed CA signing cert for itself, then uses that to create a certificate for the master. With the new CLI tool, we want to take this stuff out of server start-up and instead require users to run the tool prior to starting their server (if that gets annoying we could probably think about having the start-up run the logic from this tool implicitly). If no special arguments are provided to the tool, it will generate a self-signed root CA, then use that to create a signing cert for Puppet to use to sign all node certs. It will then create the cert for the Puppet master using this intermediate signing cert.", "epicLinkSummary": "Robust Intermediate CA", "estimate": "PT0S", "externalId": "15103", "fixedVersions": [], "id": "15103", "issueType": "Story", "key": "SERVER-2176", "labels": [], "originalEstimate": "PT0S", "parent": "15102", "parentSummary": "Robust Intermediate CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2018-09-10T10:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The CA that signs agent requests should be an intermediate CA by default", "timeSpent": "PT0S", "updated": "2018-09-10T10:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-04-06T12:53:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* puppetserver no longer generates a CA on startup"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cb0aad9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzodfr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5194105185_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_7665558134_*|*_10005_*:*_1_*:*_697946554"}], "description": "As part of the improvements around intermediate CA support, we want to make CA initialization more explicit. Once we have subcommands for the new CA CLI tool for generating a CA (see SERVER-2176), and a step in the PE installer to run that tool as part of installation (see PE-24739), we need to remove the CA bootstrapping code from puppetserver. Note that this refers only to the code that automatically generates CA files when starting the server for the first time, not the code to sign and set up the master host cert.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17384", "fixedVersions": [], "id": "17384", "issueType": "Sub-task", "key": "SERVER-2175", "labels": [], "originalEstimate": "PT0S", "parent": "15103", "parentSummary": "The CA that signs agent requests should be an intermediate CA by default", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Do", "resolutionDate": "2018-09-10T10:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove CA bootstrapping code from puppetserver", "timeSpent": "PT0S", "updated": "2018-09-10T10:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "The current set of manual steps that enable this workflow are documented here:\n\n\u00a0\n\n[https://puppet.com/docs/puppetserver/5.3/intermediate_ca_configuration.html]\n\noutdated:\u00a0[-https://puppet.com/docs/puppet/5.3/config_ssl_external_ca.html#option-2-puppet-server-functioning-as-an-intermediate-ca-|#option-2-puppet-server-functioning-as-an-intermediate-ca-]", "created": "2018-04-06T12:33:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Related Server docs: https://puppet.com/docs/puppetserver/5.3/intermediate_ca_configuration.html\n\nRelated PE docs:\nhttps://puppet.com/docs/pe/2017.3/ssl_and_certificates/use_a_custom_ssl_cert_for_the_console.html\nhttps://puppet.com/docs/pe/2017.3/ssl_and_certificates/using_an_external_certificate_authority_with_pe.html", "created": "2018-04-06T12:35:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This should look to Bolt for current best practices in making a standalone Ruby CLI tool.", "created": "2018-04-26T17:46:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "My current thinking is that we'll have a subcommand of puppetserver, ie\n{code}/opt/puppetlabs/bin/puppetserver ca --help\n{code}\nCurrently, puppetserver subcommands live in the puppetserver repo under {{/resources/ext/cli/<command-name>.erb}} (except for service related commands which live in ezbake). The file itself is obviously an erb template and existing commands are shell scripts that interpolate in them OS-specific paths at build time.\n\nMy assumption would be that our puppetserver subcommand would be itself a ruby script with a shebang line configured to include the puppet-agent ruby install at build time. And that this subcommand's features to live within a gem (in a separte repo named {{puppetserver-<command-name>}} that is pulled in with the puppetserver's packaging (via a similar means as the current gem-list.txt gems) but deposited in the agent's vendor gem path.\n\nThe features for this ticket as I understand them would be like:\n{code}/opt/puppetlabs/bin/puppetserver ca --help\nManage the Private Key Infrastructure for Puppet Server's built-in Certificate Authority\n\nUsage: puppetserver ca <action> [options]\n\nAvailable subcommands:\n    puppetserver ca setup         Setup the CA with a private key, cert bundle, and crl chain\n\n\nGeneral Options:\n    -h, --help                Print this help message\n    -v, --version            Print the version of \n    --format FORMAT   Output format to display: human (default) or json\n    --config CONF        Path to the puppet.conf file to read\n    --verbose                Display verbose logging\n\nActions:\n    setup:\n        --private-key KEY    Path to a PEM encoded RSA private key\n        --crl-chain CRL        Path to a file containing one or more PEM encoded X.509 CRLs\n        --cert-bundle CERT Path to a file containing one or more PEM encoded X.509 Certificates.\n                                        The certificate to be used by this CA should be the first, followed by the\n                                        issuing CA's certificate. Additional issuers may follow with the root CA being last.\n\n{code}\nI assume the behavior should be:\n # Read the config file(s) to determine the locations of cadir and friends\n # Read the files passed in from the command line and validate accordingly\n # Write the files, to their proper locations in the cadir\n\nI assume that validation and error handling should be:\n # If either {{--private-key-}} or {{-cert-bundle}} is excluded that we error.\n # If {{--crl-chain}} is excluded we warn that full chain CRL checking will not be possible and generate a CRL for them based on the cert provided.\n # That all of the certs in the bundle are valid authorities\n # That the first cert in the cert bundle matches the private key given.\n # That any additional certs in the bundle are issuers of previous certs in the bundle\n # That all of the crls, if provided, match the certs in the bundle\n # That none of the certs in the bundle have been revoked when checking provided CRLs\n\nErrors and warning should match the [nogui best practices|https://github.com/puppetlabs/puppet-nogui/blob/master/patterns/command_taxonomy.md]\n\nOut of scope for this is recovering from errors, colorized output, updating existing setups, or generating anything besides the CRL.\n\nCode-wise, I'm thinking:\n * Use namespaced exceptions similarly to {{Puppet::Error}} and {{Bolt::Error}}\n * Use stdlib's option parser\n * I don't think we'll need to pull in a third party logger at this point (though if we do we should use the one Bolt uses: \"logging\").\n * I don't think we'll need to load Puppet to parse the puppet.conf. The defaults are well known and we aren't interested in any special abilities of Puppet's config parser, only the simplest parts of ini.\u2020\n * Verification should use OpenSSL but only features that are the same across MRI and JRuby.\n * File writing should be behind an abstraction whose behavior we can change if we move away from directly modifying files on disk.\n\n\u00a0\n\nTesting-wise, we should have RSpec for unit tests and some higher level integration tests if practical. Rubocop for linting, and everything should be runnable in travis via rake tasks. There should be an acceptance test written for the happy path in the puppet server repo and following its conventions that:\n # Ensures the master is stopped\n # Backs up the ssldir on the master and agents, cleaning the default location\n # Runs this tool to setup an intermediate CA on the master\n # Starts the master\n # Checks one or more agents into the master and verifies that they work and retrieve the appropriate PKI files.\n # Stops the master, replaces the ssldir on all the hosts, starts the master, and ensures they all work as they did prior to the test.\n\n\u2020 I assume later, if we remove the Ruby CA, that any special ca configuration that we need to consult would actually be configured via Puppet Server's conf.d and hocon (which I think we already ship in puppet-agent?).", "created": "2018-05-25T17:19:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've started creating a stub implementation at [https://github.com/puppetlabs/puppetserver-ca-cli]\u00a0and am looking into getting that integrated and writing a basic acceptance tests against that before adding additional functionality. See\u00a0RE-10919 for the request to release that as a gem.", "created": "2018-05-30T12:21:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": " In what circumstance do we expect this tool to need to run on JRuby? Does OpenSSL work enough on JRuby for the validation you describe? I seem to remember [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] having issues with things as simple as creating cert objects.", "created": "2018-06-04T09:54:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't know if it does, but I thought it'd be nice to include some effort of trying to get it to work as part of this.\n\nI don't foresee us using it in JRuby so maybe it's YAGNI, but considering the trouble we've had moving between the two implementations, I figured it would be good to have JRuby as part of the spec testing matrix from the start.", "created": "2018-06-04T10:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've gotten the library opensourced, figured out how to build it into packages that drop the gem into the puppet gem dir, pulled over the external CA acceptance tests from Puppet proper so we can have CA acceptance testing in one place and have written a first draft of the acceptance test.\n\nMy initial fixtures included set certnames and would have relied on making the vms honor that vs dynamically creating the ssl fixtures. I think that dynamically creating the fixtures is more robust so I'm currently in the middle of moving to that approach.", "created": "2018-06-07T17:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I ended up spending most of the week doing PR review and am currently working on fixing CI. See SERVER-2234 for that work.", "created": "2018-06-14T17:22:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've pushed a WIP PR up (see sidebar). I'll be working on cleaning it up, though it should be functional if anyone wants to put comments in there.", "created": "2018-06-28T16:26:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is review and I'm responding to feedback, there's a couple bugs and clarifications, the summary of them so far are:\n\nGoing over this the changes, in summary are:\n* Improve help messages:\n** use verbs in the actual help line\n** add information about required/optional flags\n** include list of subcommands in general help output\n* x509 loading:\n** add comments explaining store checking to {{validate_full_chain}}\n** expose store errors in the error output\n** fix bug in store check logic (check for emptiness, rather than existence)\n* config parser:\n** remove {{unless}} usage in favor of {{if}}\n** comment usage of {{String#sub()}}\n** fold setting interpolation failure warning into same loop as interpolation\n** rescue both {{ArgumentError}} & {{PKeyError}} for forwards compatibility\n** fix windows check ({{!Gem.win_platform?}})\n* SetupCommand:\n** handle unrecognized flags gracefully\n** explain more about full chain checking on the agent when not providing a CRL\n* Misc:\n** check exit status more regularly in tests\n** add error message when invalid subcommand\n\nThe validations acceptance criteria also specifies the exact format and contents of the cert bundle/crl chain, however the implementation uses the SSL store to verify the leaf cert at a higher level. This method of validation ensures that contents contain at a minimum the chain of trust needed for the CA, however it doesn't ensure there aren't additional certs or crls, or the total ordering (outside of the leaf cert being first). It would be nice to find out if product finds this validation sufficient.\n\nAdditionally, the {{\\--verbose}} and {{\\--format}} flags have not been implemented, though they are used in the above description.\n\nI'm currently rebasing and fixing the actual bugs, I'm happy to break out any of the above into different tickets/sub-tasks as well.", "created": "2018-07-09T16:15:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We created\u00a0SERVER-2252 and\u00a0SERVER-2251 for the format and verbose flags respectively. This has been merged into the gem. We are currently working on releasing the gem and promoting it through puppetserver and PE.", "created": "2018-07-19T10:08:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This has been integrated into FOSS and is being promoted up into PE. This caused an issue (that is not a regression so much as an incompatibility with the test setup) that is fixed in this PR\u00a0https://github.com/puppetlabs/puppetserver/pull/1733", "created": "2018-07-23T14:33:00.000000"}], "components": [], "created": "2018-04-06T12:32:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Simple CLI to put CA artifacts into place\n* Acceptance-level test verifying that an agent can successfully request a cert from a CA set up with this tool"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56224606"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2171"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1e7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "There is now a CLI tool for setting up the CA."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1126624867_*|*_1_*:*_1_*:*_2350344063_*|*_10007_*:*_1_*:*_860898253_*|*_3_*:*_2_*:*_3883526441_*|*_5_*:*_1_*:*_1807469861_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1900457389"}], "description": "Given the root CA's cert, a signing cert, and the associated private key, I want a simple CLI tool to put these into place so that I have a working Puppet CA.\n\nThis should respect puppetserver's settings for certificate placement. We are still hoping to eventually separate the CA and agent SSL dirs (see PUP-3262), so however we implement this should be able to work with that change easily.", "epicLinkSummary": "Robust Intermediate CA", "estimate": "PT0S", "externalId": "15762", "fixedVersions": ["SERVER 5.3.5", "SERVER 6.0.0"], "id": "15762", "issueType": "Story", "key": "SERVER-2172", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": "15102", "parentSummary": "Robust Intermediate CA", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-08-22T14:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Simple CLI tool for setting up an intermediate CA", "timeSpent": "PT0S", "updated": "2018-08-22T14:14:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-04-06T12:24:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50c9f601"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-3"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Robust Intermediate CA"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbf3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2351368154_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_11823103366"}], "description": "When I have security requirements dictated by my organization, I need to take a CA cert that was signed by my corporate root and use that to sign all my agent certs.\n\nTwo areas of work:\n- CA setup\n- First agent request\n\nOut of scope:\n- Workflow for getting the signed CA cert. This varies so widely from org to org that it's not meaningful to design a workflow for this.\n\nStretch goals:\n- Workflow for putting the CA's cert in the right place (maybe a simple CLI)", "duedate": "2018-05-16T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15102", "fixedVersions": ["SERVER 6.0.0"], "id": "15102", "issueType": "Epic", "key": "SERVER-2171", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-09-17T13:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Robust Intermediate CA", "timeSpent": "PT0S", "updated": "2019-07-16T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Puppetserver does need to access those gems while running, but it doesn't need to write to that folder. Any gems installed by the {{puppetserver gem}} command go somewhere else. Not sure what other implications changing these permissions might have. We can try changing this to root:root and see what happens.", "created": "2018-04-12T17:18:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "That sounds like a good idea. The fewer permissions the puppet user has, the better.", "created": "2018-04-13T02:49:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:5fd3e4989edf2800758fda74] do _you_ have thoughts on this?", "created": "2021-03-31T11:19:00.000000"}], "components": [], "created": "2018-04-05T11:10:00.000000", "creator": "623c100c4a57610068e74585", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@fee970e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl3x3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_94279993064_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_25994233834"}], "description": "All the files in /opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems are owned by puppet:puppet. I'd expect vendored-jruby-gems to be owned by root:root so the server process can't replace any vendored gems. At best this can lead to an unsupported situation where the server has unexpected behavior. At worst it's a security risk.\n\nSimilarly /etc/puppetlabs/puppetserver is also owned by puppet:puppet which I'd expect to be root:puppet (mode 0750 is correct).", "environment": "I checked this against puppetserver-5.3.0-1.el7 but I think I saw the same thing in PC1.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17094", "fixedVersions": [], "id": "17094", "issueType": "Bug", "key": "SERVER-2186", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c100c4a57610068e74585", "resolution": "Won't Fix", "resolutionDate": "2022-01-26T11:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Vendored gems are owned by puppet:puppet", "timeSpent": "PT0S", "updated": "2022-01-26T11:41:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:613151bd-b161-4bc3-9e32-335fdcef4d89", "attachments": [], "comments": [{"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "We're already nearly there. I just did a test with jruby 9.2, which works, and just have a few errors about the way we're testing classpath additions in puppetserver.", "created": "2018-06-14T16:26:00.000000"}, {"author": "557058:613151bd-b161-4bc3-9e32-335fdcef4d89", "body": "PR has the project working in Java 8, 9, and 10. I've made SERVER-2239 to track the remaining work to prepare for Java 11.", "created": "2018-06-22T11:32:00.000000"}], "components": [], "created": "2018-04-02T17:59:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Tickets have been filed with the work needed to support Java 10 in Puppetserver (link to RE-10429)"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7085abc8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl24n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jun/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6304267209_*|*_3_*:*_1_*:*_1650769243_*|*_5_*:*_1_*:*_6211112241_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_505922898"}], "description": "We need to inventory what is broken in Puppetserver when running with Java 10, and file tickets around what fixes are needed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15101", "fixedVersions": ["SERVER 6.0.0"], "id": "15101", "issueType": "New Feature", "key": "SERVER-2169", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Fixed", "resolutionDate": "2018-07-09T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support Puppet Server under Java 10", "timeSpent": "PT0S", "updated": "2018-09-19T13:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey [~accountid:5a15cc24b87a44359db09635], we were wondering if the Community team was interested in this? It will entail working the community on pure ruby work to implement best practices that are necessary for running in a server context. If not, we'll prioritize it.", "created": "2018-03-29T17:16:00.000000"}, {"author": "5a15cc24b87a44359db09635", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], Yup, we'll add it to our list of things to do.", "created": "2018-04-02T15:29:00.000000"}, {"author": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "body": "Any chances on having this fixed? What is the preferred workaround, disable JRuby 9k or reduce heap size to less then 2G?\n", "created": "2018-07-21T17:04:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't know of an adequate solution shy of monkey patching hiera-eyaml-gpg to use Puppet::Util::Execution.execute, [~accountid:557058:be86c7d6-2807-42d3-9715-80da0cf607cd].\n\nWhere does this fall on your todo list, [~accountid:5a15cc24b87a44359db09635] ?\n\n\u00a0\n\n/cc [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] I think, someone, if not Coremunity than Server, needs to see this done before 6 goes out.", "created": "2018-07-23T10:42:00.000000"}, {"author": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "body": "I noticed an additional problem that will probably make using Puppet::Util::Execution.execute with hiera-eyaml-gpg and a vendored/monkey-patched version of ruby_gpg difficult: Puppet::Util::Execution.execute doesn't support passing a string as STDIN: https://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/execution.rb#L124-L125\n\nBut ruby_gpg expects that the string to decrypt is passed as STDIN (so it can be passed to the {{gpg}} binary command line), see  https://github.com/blaix/ruby_gpg/blob/master/lib/ruby_gpg.rb#L53 and \nhttps://github.com/blaix/ruby_gpg/blob/master/lib/ruby_gpg.rb#L80\n\nSo it seems that in order to be able to use Puppet::Util::Execution.execute from ruby_gpg it needs to support passing a string for STDIN, no?", "created": "2018-07-23T11:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{{ruby_gpg}}'s {{run_command}} needs to be patched to use Puppet's execute (or {{hiera-eyaml-gpg}} needs to not use {{ruby_gpg}} at all). {{hiera-eyaml-gpg}} also needs updating not to call {{system}} as it does twice in {{passfunc}}.", "created": "2018-07-23T11:39:00.000000"}, {"author": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "body": "Puppet 6.0 has been released and JRuby 9k is no longer optional. I expect that this will make more people run into the problems I described in https://puppet.atlassian.net/browse/SERVER-2021 if they use {{hiera-eyaml}} and {{hiera-eyaml-gpg}}.\n\nUnfortunately upgrading to Puppet 6.0 will be impossible for us until there is a way to run {{hiera-eyaml-gpg}} without the JVM running into errors like {{Cannot allocate memory - gpg}} when decrypting data (as discussed in https://puppet.atlassian.net/browse/SERVER-2021). This requires Puppet::Util::Execution.execute to support passing a string as STDIN, as mentioned above, before {{ruby_gpg}} can be vendored and patched to use Puppet's execute.\n\nOr is there a more \"modern\" alternative to {{hiera-eyaml}} and {{hiera-eyaml-gpg}} that is immune to these problems?", "created": "2018-09-20T07:24:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f] there is a more modern alternative, the hiera-eyaml backend for hiera 5 :\n\nhttps://puppet.com/docs/puppet/5.2/hiera_config_yaml_5.html#configuring-a-hierarchy-level-hiera-eyaml\n\nI believe this will prevent the execution path that is causing problems", "created": "2018-09-24T15:14:00.000000"}, {"author": "61ba0348acc926006a06fc59", "body": "This affects our workflow too.the reason we decided for the GPG implementation of hiera-eyaml ist the fact we are able to give a keypair to each user, making him unique which seems impossible with the PKCS7 implementation (correct me if I am wrong). Given this, on and offboarding colleagues is so much easier. I was very happy the annoucement came out, eyaml will be shipped with the server directly. I would be happy if this would also happen to the gpg implementation, so the user simply has a choice what to use.", "created": "2018-10-10T05:05:00.000000"}, {"author": "70121:13909895-6fc9-487a-a07d-c6b1891fc66f", "body": "I had my own fix, but looks like [https://github.com/sihil/hiera-eyaml-gpg/pull/48]\u00a0is an even better one, so withdrawing my comment :)", "created": "2019-04-01T03:13:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Looks like this was done. Please reopen if I've misunderstood.", "created": "2022-02-22T15:37:00.000000"}], "components": [], "created": "2018-03-29T15:46:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@471ecffc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkzr3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_47151478969_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76057975640"}], "description": "Hiera-eyaml is the current way that most folks secure their secrets between master and agent. Some integrations, most notably gpg, require shelling out to external CLIs to do their work. When code running in Puppet does that it should be using Puppet::Util::Execution.execute. This has been considered a nice-to-have for a long time, but with folks scaling Java based Puppet Servers to larger and larger sizes using the execution helper becomes more and more critical (since spawning processes from a large JVM is problematic on most linuxes).\n\n\u00a0\n\nThe Server team should work with the community to utilize Puppet::Util::Execution.execute in hiera-eyaml in the long term and hiera-eyaml-gpg specifically in the short term.", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "17093", "fixedVersions": [], "id": "17093", "issueType": "Improvement", "key": "SERVER-2167", "labels": [], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2022-02-22T15:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Work with community to use Puppet::Util::Execution.execute in hiera-eyaml[-gpg]", "timeSpent": "PT0S", "updated": "2022-02-22T15:37:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Set \"DOCS\" to not needed... Since this is a documentation ticket.", "created": "2018-03-29T23:11:00.000000"}], "components": ["DOCS"], "created": "2018-03-29T11:45:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4afa8e6f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkz6f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_10998_*|*_1_*:*_1_*:*_624816_*|*_10007_*:*_1_*:*_83313820_*|*_3_*:*_1_*:*_1465793_*|*_5_*:*_1_*:*_0"}], "description": "Any executing of external commands by users in extensions should be done using Puppet::Util::Execution.execute and not Ruby's built in methods, because the built in methods will eventually call either fork&exec or some flavor of *spawn.\n\nOn all currently supported linuxes posix_spawn is also implemented via fork&exec. Forking a JVM process with a large amount of heap can easily cause out of memory errors.", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "15100", "fixedVersions": ["None"], "id": "15100", "issueType": "Task", "key": "SERVER-2166", "labels": [], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-03-30T11:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document the need for using Puppet::Util::Execution in JRuby extensions", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Just a nitpick [~accountid:557058:f23b0b7f-9386-48b3-bd71-4399766356f4], we want a JRuby to live for *at least* a few hours. Ideally a JRuby instance will live as long as possible, though there concerns eventually there would be some memory pressure in highly dynamic environments.", "created": "2018-03-28T08:40:00.000000"}, {"author": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "body": "Bah, I misread that then [~accountid:557058:104b5720-714d-4539-b455-df472251ec89].\u00a0 In any case, I think this would be helpful to track in deployments where there are many short-lived environments that we want to flush from memory periodically.\u00a0\u00a0", "created": "2018-03-28T10:26:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Thank you for filing this issue. We agree it is likely an improvement, but due to other issues demanding precedence, we don\u2019t anticipate being able to address this any time soon. If you are interested in submitting a patch to the repository for this project at https://github.com/puppetlabs, please open a pull request and re-open this ticket. Pending that, we are closing this as \u201cWon\u2019t Fix.\u201d", "created": "2022-02-22T11:47:00.000000"}], "components": [], "created": "2018-03-27T18:06:00.000000", "creator": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fb531d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4rw:c"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_47260678948_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76099388839"}], "description": "It would be great if there was a metric that tracked the average lifetime of a JRuby.\u00a0 The documentation says that we want JRubies to have a lifetime of 2+ hours, but there's currently not an easy way to compute the lifetime without looking at timestamps in puppetserver's logs.\n\n[https://puppet.com/docs/pe/2017.3/configuring/config_puppetserver.html#ariaid-title4]", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "15099", "fixedVersions": [], "id": "15099", "issueType": "Improvement", "key": "SERVER-2165", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "resolution": "Won't Do", "resolutionDate": "2022-02-22T11:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add a \"average-jruby-lifetime\" metric", "timeSpent": "PT0S", "updated": "2022-02-22T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We haven't seen this in a long time.", "created": "2019-09-30T11:18:00.000000"}], "components": [], "created": "2018-03-26T16:31:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7249121f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl32f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_262910799_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_47497538003"}], "description": "Puppetserver tests in travis are intermittently failing with errors like:\n\n{code}\n2018-03-21 22:18:57,592 WARN  [clojure-agent-send-pool-0] [puppetserver] Facter Could not retrieve fact='hostname', resolution='<anonymous>': Failed while executing '/bin/hostname': Cannot allocate memory - /bin/hostname\n/home/travis/build/puppetlabs/puppetserver/ruby/facter/lib/facter/core/execution/base.rb:56:in `block in execute'\n/home/travis/build/puppetlabs/puppetserver/ruby/facter/lib/facter/core/execution/base.rb:14:in `with_env'\n/home/travis/build/puppetlabs/puppetserver/ruby/facter/lib/facter/core/execution/base.rb:36:in `execute'\n{code}\n\nThis seems to be due to the way Facter 2.x executes external programs. Since we ship with Facter 3, where this is believed to be fixed, we should just test with it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15502", "fixedVersions": [], "id": "15502", "issueType": "CI Blocker", "key": "SERVER-2164", "labels": ["transient"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Cannot Reproduce", "resolutionDate": "2019-09-30T11:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\"Cannot allocate memory\" in travis", "timeSpent": "PT0S", "updated": "2019-09-30T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c3f688dc-c97c-4198-862f-154955399e81", "attachments": [], "comments": [{"author": "557058:c3f688dc-c97c-4198-862f-154955399e81", "body": "Similar to https://puppet.atlassian.net/browse/SERVER-1306? Tried what suggested in that Jira too but it is not working.", "created": "2018-03-24T07:27:00.000000"}, {"author": "557058:c3f688dc-c97c-4198-862f-154955399e81", "body": "Any update please", "created": "2018-03-27T02:54:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:c3f688dc-c97c-4198-862f-154955399e81] the error message at the top of the stack trace indicates that the puppetserver cannot access {{/etc/puppetlabs/puppet/ssl/crl.pem}}, probably due to file system permissions or ownership.  Can you please provide {{ls -alR /etc/puppetlabs}} and also the output of {{getenforce}} to ensure that selinux is not preventing this?", "created": "2018-03-29T15:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Two other bits that I noticed reading through this...\n\n# I see {{root@practitioner.master:~# rm -rf $(puppet master --configprint ssldir)}}. If you delete the ssldir on an existing PE master (ie the CA) you're going to have a lot of other problems down the road even after you've got the CRL figured out. At that point I'd recommend just re-installing PE on a clean node.\n# With a hostname of practitioner.master/agent - are you using the learning VM? Or any of our other educational materials? There could be a bug in some of their setup scripts and if so we may want to coordinate with them.", "created": "2018-03-29T22:44:00.000000"}, {"author": "557058:c3f688dc-c97c-4198-862f-154955399e81", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] Shall get back to you later tonight.\n\n[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] \"practitioner.master/agent\" , it is not a learning VM. It a fresh build of CentOS 7, with puppet enterprise agent installed.", "created": "2018-04-05T22:18:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:c3f688dc-c97c-4198-862f-154955399e81] did you ever figure this out?\n\nCan the puppetserver process (pe-puppet user) read {{/etc/puppetlabs/puppet/ssl/ca/ca_crl.pem}}? Can it write to {{/etc/puppetlabs/puppet/ssl/}}? It looks like {{/etc/puppetlabs/puppet/ssl/crl.pem}} doesn't exist? If that's true can you copy the file from {{/etc/puppetlabs/puppet/ssl/ca/ca_crl.pem}} to {{/etc/puppetlabs/puppet/ssl/crl.pem}} and chown/chmod it so that the pe-puppet user can read/write it?", "created": "2020-08-25T16:40:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "User hasn't responded in several years, so this no longer seems important. If this comes up again, please re-open with the requested info.", "created": "2022-02-09T11:39:00.000000"}], "components": ["Puppet Server"], "created": "2018-03-24T07:25:00.000000", "creator": "557058:c3f688dc-c97c-4198-862f-154955399e81", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c5e73cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0ua6"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_462559143_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_122071425800"}], "description": "Puppetserver is unable to start, missing some crl.pem file. Stack trace below:\n\n{noformat}\n2018-03-24 23:58:40,005 INFO  [main] [o.e.j.u.log] Logging initialized @32166ms\n2018-03-24 23:58:49,399 INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Initializing web server(s).\n2018-03-24 23:58:49,579 INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'pe-puppet-profiler', version 2017.2.0.9\n2018-03-24 23:58:49,583 INFO  [async-dispatch-2] [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2018-03-24 23:58:49,633 INFO  [async-dispatch-2] [p.s.j.jruby-pool-manager-service] Initializing the JRuby service\n2018-03-24 23:58:49,701 INFO  [clojure-agent-send-pool-0] [p.s.j.i.jruby-internal] Creating JRubyInstance with id 1.\n2018-03-24 23:58:49,751 INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'pe-jruby-metrics', version 2017.2.0.9\n2018-03-24 23:59:15,084 WARN  [clojure-agent-send-pool-0] [puppetserver] Puppet Support for ruby version 1.9.3 is deprecated and will be removed in a future release. See https://docs.puppet.com/puppet/latest/system_requirements.html#ruby for a list of supported ruby versions.\n   (at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:180:in `Puppet')\n2018-03-24 23:59:15,221 INFO  [clojure-agent-send-pool-0] [puppetserver] Puppet Puppet settings initialized; run mode: master\n2018-03-24 23:59:17,168 INFO  [clojure-agent-send-pool-0] [p.s.j.i.jruby-agents] Finished creating JRubyInstance 1 of 1\n2018-03-24 23:59:17,171 INFO  [async-dispatch-2] [p.s.c.puppet-server-config-core] Not overriding webserver settings with values from core Puppet\n2018-03-24 23:59:17,199 INFO  [async-dispatch-2] [p.p.certificate-authority] CA already initialized for SSL\n2018-03-24 23:59:17,202 INFO  [async-dispatch-2] [p.s.c.certificate-authority-service] CA Service adding a ring handler\n2018-03-24 23:59:17,328 INFO  [async-dispatch-2] [p.s.p.puppet-admin-service] Starting Puppet Admin web app\n2018-03-24 23:59:17,401 INFO  [async-dispatch-2] [p.s.v.versioned-code-service] No code-id-command set for versioned-code-service. Code-id will be nil.\n2018-03-24 23:59:17,401 INFO  [async-dispatch-2] [p.s.v.versioned-code-service] No code-content-command set for versioned-code-service. Attempting to fetch code content will fail.\n2018-03-24 23:59:25,131 INFO  [async-dispatch-2] [p.e.s.m.master-service] Master Service adding a ring handler\n2018-03-24 23:59:25,133 INFO  [async-dispatch-2] [p.t.s.s.status-service] Registering status callback function for service 'pe-master', version 2017.2.0.9\n2018-03-24 23:59:25,234 WARN  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Empty contextPath\n2018-03-24 23:59:25,250 INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Starting web server(s).\n2018-03-24 23:59:25,346 ERROR [async-dispatch-2] [p.t.internal] Error during service start!!!\njava.lang.IllegalArgumentException: Non-readable path specified for ssl-crl-path option: /etc/puppetlabs/puppet/ssl/crl.pem\n        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\n        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\n        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\n        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)\n        at clojure.lang.Reflector.invokeConstructor(Reflector.java:180)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval28617$get_ssl_crl_path_BANG___28622$fn__28623.invoke(jetty9_config.clj:324)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval28617$get_ssl_crl_path_BANG___28622.invoke(jetty9_config.clj:317)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval28791$maybe_get_https_connector__28796$fn__28797.invoke(jetty9_config.clj:397)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval28791$maybe_get_https_connector__28796.invoke(jetty9_config.clj:384)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval28842$maybe_add_https_connector__28847$fn__28848.invoke(jetty9_config.clj:411)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval28842$maybe_add_https_connector__28847.invoke(jetty9_config.clj:407)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval28868$process_config__28873$fn__28874.invoke(jetty9_config.clj:432)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval28868$process_config__28873.invoke(jetty9_config.clj:427)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval30024$create_webserver__30029$fn__30030.invoke(jetty9_core.clj:645)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval30024$create_webserver__30029.invoke(jetty9_core.clj:603)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval30053$start_webserver_BANG___30058$fn__30059.invoke(jetty9_core.clj:683)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval30053$start_webserver_BANG___30058.invoke(jetty9_core.clj:678)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$start_server_multiple$iter__30340__30344$fn__30345.invoke(jetty9_core.clj:936)\n        at clojure.lang.LazySeq.sval(LazySeq.java:40)\n        at clojure.lang.LazySeq.seq(LazySeq.java:49)\n        at clojure.lang.RT.seq(RT.java:521)\n        at clojure.core$seq__4357.invokeStatic(core.clj:137)\n        at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:24)\n        at clojure.core.protocols$fn__6738.invokeStatic(protocols.clj:75)\n        at clojure.core.protocols$fn__6738.invoke(protocols.clj:75)\n        at clojure.core.protocols$fn__6684$G__6679__6697.invoke(protocols.clj:13)\n        at clojure.core$reduce.invokeStatic(core.clj:6545)\n        at clojure.core$into.invokeStatic(core.clj:6610)\n        at clojure.core$into.invoke(core.clj:6604)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$start_server_multiple.invokeStatic(jetty9_core.clj:937)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$start_server_multiple.invoke(jetty9_core.clj:933)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval30494$start_BANG___30499$fn__30500.invoke(jetty9_core.clj:1027)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval30494$start_BANG___30499.invoke(jetty9_core.clj:1021)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_service$reify__30901$service_fnk__5261__auto___positional$reify__30908.start(jetty9_service.clj:55)\n        at puppetlabs.trapperkeeper.services$eval5063$fn__5077$G__5053__5080.invoke(services.clj:8)\n        at puppetlabs.trapperkeeper.services$eval5063$fn__5077$G__5052__5084.invoke(services.clj:8)\n        at puppetlabs.trapperkeeper.internal$eval13831$run_lifecycle_fn_BANG___13838$fn__13839.invoke(internal.clj:204)\n        at puppetlabs.trapperkeeper.internal$eval13831$run_lifecycle_fn_BANG___13838.invoke(internal.clj:187)\n        at puppetlabs.trapperkeeper.internal$eval13860$run_lifecycle_fns__13865$fn__13866.invoke(internal.clj:238)\n        at puppetlabs.trapperkeeper.internal$eval13860$run_lifecycle_fns__13865.invoke(internal.clj:215)\n        at puppetlabs.trapperkeeper.internal$eval14330$build_app_STAR___14339$fn$reify__14349.start(internal.clj:591)\n        at puppetlabs.trapperkeeper.internal$eval14376$boot_services_for_app_STAR__STAR___14383$fn__14384$fn__14386.invoke(internal.clj:617)\n        at puppetlabs.trapperkeeper.internal$eval14376$boot_services_for_app_STAR__STAR___14383$fn__14384.invoke(internal.clj:615)\n        at puppetlabs.trapperkeeper.internal$eval14376$boot_services_for_app_STAR__STAR___14383.invoke(internal.clj:609)\n        at clojure.core$partial$fn__4761.invoke(core.clj:2521)\n        at puppetlabs.trapperkeeper.internal$eval13899$initialize_lifecycle_worker__13910$fn__13911$fn__13997$state_machine__11871__auto____13998$fn__14000.invoke(internal.clj:255)\n        at puppetlabs.trapperkeeper.internal$eval13899$initialize_lifecycle_worker__13910$fn__13911$fn__13997$state_machine__11871__auto____13998.invoke(internal.clj:255)\n        at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:1012)\n        at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:1011)\n        at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:1016)\n        at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:1014)\n        at clojure.core.async$ioc_alts_BANG_$fn__12039.invoke(async.clj:383)\n        at clojure.core.async$do_alts$fn__11985$fn__11988.invoke(async.clj:252)\n        at clojure.core.async.impl.channels.ManyToManyChannel$fn__6795$fn__6796.invoke(channels.clj:95)\n        at clojure.lang.AFn.run(AFn.java:22)\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n        at java.lang.Thread.run(Thread.java:748)\n2018-03-24 23:59:25,358 INFO  [main] [p.t.internal] Beginning shutdown sequence\n2018-03-24 23:59:25,608 INFO  [async-dispatch-3] [p.e.s.j.pe-jruby-metrics-service] PE JRuby Metrics Service: stopping metrics sampler job\n2018-03-24 23:59:25,611 INFO  [async-dispatch-3] [p.e.s.j.pe-jruby-metrics-service] PE JRuby Metrics Service: stopped metrics sampler job\n2018-03-24 23:59:25,655 INFO  [clojure-agent-send-pool-1] [p.s.j.i.jruby-agents] Flush request received; creating new JRuby pool.\n2018-03-24 23:59:25,659 INFO  [clojure-agent-send-pool-1] [p.s.j.i.jruby-agents] Replacing old JRuby pool with new instance.\n2018-03-24 23:59:25,659 INFO  [clojure-agent-send-pool-1] [p.s.j.i.jruby-agents] Swapped JRuby pools, beginning cleanup of old pool.\n2018-03-24 23:59:25,680 INFO  [clojure-agent-send-pool-1] [p.s.j.i.jruby-internal] Cleaned up old JRubyInstance with id 1.\n2018-03-24 23:59:25,707 INFO  [async-dispatch-3] [p.t.s.w.jetty9-service] Shutting down web server(s).\n2018-03-24 23:59:25,751 INFO  [clojure-agent-send-off-pool-0] [p.t.s.w.filesystem-watch-core] Closing watcher puppetlabs.trapperkeeper.services.watcher.filesystem_watch_core.WatcherImpl@c13ddd42\n2018-03-24 23:59:25,766 INFO  [main] [p.t.internal] Finished shutdown sequence\n{noformat}\n\n\nI tried a lot of things but cannot get it working\n\n{noformat}\nroot@practitioner.master:~# ls /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\n+ ls --color=auto /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\n/etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\n++ printf '\\033]0;%s@%s:%s\\007' root practitioner '~'\nroot@practitioner.master:~# ls /etc/puppetlabs/puppet/ssl/crl.pem\n+ ls --color=auto /etc/puppetlabs/puppet/ssl/crl.pem\nls: cannot access /etc/puppetlabs/puppet/ssl/crl.pem: No such file or directory\n++ printf '\\033]0;%s@%s:%s\\007' root practitioner '~'\nroot@practitioner.master:~# cp -apvf /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem /etc/puppetlabs/puppet/ssl/crl.pem\n+ cp -i -apvf /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem /etc/puppetlabs/puppet/ssl/crl.pem\n\u2018/etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\u2019 -> \u2018/etc/puppetlabs/puppet/ssl/crl.pem\u2019\n++ printf '\\033]0;%s@%s:%s\\007' root practitioner '~'\nroot@practitioner.master:~# systemctl stop  pe-puppetserver\n+ systemctl stop pe-puppetserver\n++ printf '\\033]0;%s@%s:%s\\007' root practitioner '~'\nroot@practitioner.master:~# puppet cert --list --all\n+ puppet cert --list --all\n+ \"practitioner.master\" (SHA256) 68:06:00:AA:D8:3B:DF:40:D4:E6:CF:17:48:91:27:28:01:C0:AC:81:08:96:6C:57:2B:0D:D4:80:E8:C4:56:FD\n++ printf '\\033]0;%s@%s:%s\\007' root practitioner '~'\nroot@practitioner.master:~# set +x\n+ set +x\nroot@practitioner.master:~# puppet cert --list --all\n+ \"practitioner.master\" (SHA256) 68:06:00:AA:D8:3B:DF:40:D4:E6:CF:17:48:91:27:28:01:C0:AC:81:08:96:6C:57:2B:0D:D4:80:E8:C4:56:FD\n(reverse-i-search)`rm ': rm -rf /var/lib/puppet/ssl\nroot@practitioner.master:~# rm -rf $(puppet master --configprint ssldir)\nroot@practitioner.master:~# puppet cert --list --all\nNotice: Signed certificate request for ca\nroot@practitioner.master:~# puppet cert --list --all\nroot@practitioner.master:~# systemctl status pe-puppetserver\n\u25cf pe-puppetserver.service - pe-puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/pe-puppetserver.service; enabled; vendor preset: disabled)\n   Active: failed (Result: exit-code) since Sat 2018-03-24 23:55:19 AEDT; 2min 19s ago\n  Process: 12123 ExecStop=/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver stop (code=exited, status=0/SUCCESS)\n  Process: 14714 ExecStart=/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver start (code=exited, status=1/FAILURE)\n Main PID: 10501 (code=exited, status=143)\n\nMar 24 23:54:36 practitioner.master systemd[1]: pe-puppetserver.service holdoff time over, scheduling restart.\nMar 24 23:54:36 practitioner.master systemd[1]: Starting pe-puppetserver Service...\nMar 24 23:55:18 practitioner.master puppetserver[14714]: Startup script was terminated before completion\nMar 24 23:55:19 practitioner.master systemd[1]: pe-puppetserver.service: control process exited, code=exited status=1\nMar 24 23:55:19 practitioner.master systemd[1]: Stopped pe-puppetserver Service.\nMar 24 23:55:19 practitioner.master systemd[1]: Unit pe-puppetserver.service entered failed state.\nMar 24 23:55:19 practitioner.master systemd[1]: pe-puppetserver.service failed.\nroot@practitioner.master:~# systemctl status puppet\n\u25cf puppet.service - Puppet agent\n   Loaded: loaded (/usr/lib/systemd/system/puppet.service; enabled; vendor preset: disabled)\n   Active: inactive (dead) since Sat 2018-03-24 23:39:46 AEDT; 18min ago\n Main PID: 10927 (code=exited, status=0/SUCCESS)\n\nMar 24 23:30:31 practitioner.master puppet-agent[10934]: (/Stage[main]/Puppet_enterprise::Profile::Orchestrator/Puppet_enterprise:...\nMar 24 23:30:31 practitioner.master puppet-agent[10934]: (/Stage[main]/Puppet_enterprise::Profile::Orchestrator/Puppet_enterp... true\nMar 24 23:30:31 practitioner.master puppet-agent[10934]: (/Stage[main]/Puppet_enterprise::Profile::Orchestrator/Puppet_enterp...ncies\nMar 24 23:30:31 practitioner.master puppet-agent[10934]: (/Stage[main]/Puppet_enterprise::Profile::Orchestrator/Puppet_enterp... true\nMar 24 23:30:31 practitioner.master puppet-agent[10934]: (/Stage[main]/Puppet_enterprise::Profile::Orchestrator/Puppet_enterp...ncies\nMar 24 23:30:32 practitioner.master puppet-agent[10934]: Applied catalog in 140.02 seconds\nMar 24 23:30:32 practitioner.master puppet-agent[10934]: Could not send report: SSL_connect returned=1 errno=0 state=error: c...ster]\nMar 24 23:39:46 practitioner.master puppet-agent[10927]: Caught TERM; exiting\nMar 24 23:39:46 practitioner.master systemd[1]: Stopping Puppet agent...\nMar 24 23:39:46 practitioner.master systemd[1]: Stopped Puppet agent.\nHint: Some lines were ellipsized, use -l to show in full.\nroot@practitioner.master:~# systemctl restart pe-puppetserver\nJob for pe-puppetserver.service failed because the control process exited with error code. See \"systemctl status pe-puppetserver.service\" and \"journalctl -xe\" for details.\nroot@practitioner.master:~# systemctl status pe-puppetserver.service\n\u25cf pe-puppetserver.service - pe-puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/pe-puppetserver.service; enabled; vendor preset: disabled)\n   Active: activating (start) since Sat 2018-03-24 23:59:26 AEDT; 1min 0s ago\n  Process: 12123 ExecStop=/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver stop (code=exited, status=0/SUCCESS)\n Main PID: 10501 (code=exited, status=143);         : 15177 (bash)\n   CGroup: /system.slice/pe-puppetserver.service\n           \u251c\u250015177 bash /opt/puppetlabs/server/apps/puppetserver/cli/apps/start\n           \u251c\u250015184 /opt/puppetlabs/server/bin/java -Xms2048m -Xmx2048m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log...\n           \u2514\u250015391 sleep 1\n\nMar 24 23:59:26 practitioner.master systemd[1]: pe-puppetserver.service holdoff time over, scheduling restart.\nMar 24 23:59:26 practitioner.master systemd[1]: Starting pe-puppetserver Service...\n{noformat}\n\nPlease assist as I'm lost.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16332", "fixedVersions": [], "id": "16332", "issueType": "Task", "key": "SERVER-2162", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c3f688dc-c97c-4198-862f-154955399e81", "resolution": "Cannot Reproduce", "resolutionDate": "2022-02-09T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver crashes and unable to start", "timeSpent": "PT0S", "updated": "2022-02-09T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "/cc [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] Don't know if this is a helpful way to track this or not but we'll want to call out compat issues discovered with JRuby 9k in a big way for folks. This (third party gems) seems like a family of compat issues that we'll see.", "created": "2018-03-23T13:55:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] do you have the information you need here?", "created": "2018-04-09T08:46:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "I see one known issue in this ticket. [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] are we expecting to hear more before the 5.3.1 release?", "created": "2018-04-09T10:51:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "No, no one's reported any other issues. So hopefully we're in the clear for the release.", "created": "2018-04-09T11:12:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] Then it sounds like I've got what I need here.", "created": "2018-04-09T12:01:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] I'm not sure how to handle this ticket because the scope is open-ended.\n\n[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Is this ticket intended to be kept open to capture future issues or complaints beyond today's release?", "created": "2018-04-17T09:52:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This was intended to be a catch all, though I think we can say the timeframe we were expecting it catch things in has ended.", "created": "2018-04-17T10:16:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] can this be resolved/closed now that 5.3.1 has shipped?", "created": "2018-04-19T12:20:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2018-03-23T13:53:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5968e90d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkv7j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See the ticket description, which will be updated with known issues and workarounds."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1462130848_*|*_10009_*:*_1_*:*_182157626_*|*_5_*:*_1_*:*_305579_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_683455910_*|*_10005_*:*_1_*:*_9654"}], "description": "This is a ticket to track issues that we or the community run into with gem dependencies when switching from JRuby 1.7 to JRuby 9k. Please edit the description to keep it current with the known issues.\n\n*Problem: Autosign 0.1.2/Yard 0.8.x*\nYard's rubygem integration is incompatible with the rubygems version we ship with 9k. It seems to cause a warning printed during {{puppetserver gem list}} (called during puppet runs applying updates via the {{puppetserver_gem}} provider). In our case this is caused by using autosign 0.1.2. Upgrading to autosign 0.1.3 bumps the yard requirement to a version compatible with the rubygems we ship in 9k based puppetserver.\n\n*Solution:*\nUpgrade yard to a 0.9.x version and look at bumping any server side gems that require yard 0.8.x. The autosign gem specifically should be at >= 0.1.3.", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "16524", "fixedVersions": ["SERVER 5.3.1"], "id": "16524", "issueType": "Task", "key": "SERVER-2161", "labels": [], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-04-19T12:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document issues with third party gems when upgrading 9k", "timeSpent": "PT0S", "updated": "2018-04-19T12:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This will necessitate a 2.0.0 release of jruby-utils.", "created": "2018-03-28T12:03:00.000000"}], "components": [], "created": "2018-03-21T11:22:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fd57853"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2155"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1db:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_17800811_*|*_1_*:*_1_*:*_601656966_*|*_10007_*:*_3_*:*_769655385_*|*_3_*:*_1_*:*_5206392_*|*_5_*:*_1_*:*_14338285078_*|*_6_*:*_1_*:*_0"}], "description": "SERVER-2095 removed JRuby 1.7 from puppetserver, making it always run with JRuby 9k. We should update any logic in jruby-utils designed to configure things differently between 1.7 and 9k, to instead just select values for 9k. One example is https://github.com/puppetlabs/jruby-utils/blob/6a77927e73c9fcade6265f8044242224565f1ace/src/clj/puppetlabs/services/jruby_pool_manager/jruby_core.clj#L24-L29.", "epicLinkSummary": "Remove JRuby 1.7", "estimate": "PT0S", "externalId": "14772", "fixedVersions": ["SERVER 6.0.0"], "id": "14772", "issueType": "Task", "key": "SERVER-2160", "labels": [], "originalEstimate": "PT0S", "parent": "16520", "parentSummary": "Remove JRuby 1.7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-04-06T14:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove 1.7 vs 9k logic from jruby-utils", "timeSpent": "PT0S", "updated": "2018-09-19T13:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "Debian 7 is not currently being used in the puppetserver pipelines, so this ticket does not require any action.", "created": "2018-04-26T11:50:00.000000"}], "components": [], "created": "2018-03-20T20:14:00.000000", "creator": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cc7fc23"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "CPR-522"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzksnz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3166535756_*|*_6_*:*_1_*:*_0"}], "description": "Platform needs to be removed from puppetserver pipelines.\n", "epicLinkSummary": "Remove Debian 7 (i386, amd64)", "estimate": "PT0S", "externalId": "16522", "fixedVersions": [], "id": "16522", "issueType": "Task", "key": "SERVER-2159", "labels": [], "originalEstimate": "PT0S", "parent": "60064", "parentSummary": "Remove Debian 7 (i386, amd64)", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "resolution": "Won't Do", "resolutionDate": "2018-04-26T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Debian 7 (i386, amd64) from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2018-04-26T11:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2018-03-20T14:55:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ce8edd6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2155"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2rj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now bundles its JRuby jar inside the main uberjar. This means the JRUBY_JAR setting is no longer valid, and a warning will be issued if it is set."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1211011673_*|*_10007_*:*_1_*:*_419305430_*|*_3_*:*_1_*:*_83100488_*|*_6_*:*_1_*:*_0"}], "description": "Since we don't need to choose the jruby version anymore we could ship this directly now and it will make AOT easier.\n\n\u00a0\n\nThis should also remove support for JRUBY_JAR and issue a warning if it is set.", "epicLinkSummary": "Remove JRuby 1.7", "estimate": "PT0S", "externalId": "16331", "fixedVersions": ["SERVER 6.0.0"], "id": "16331", "issueType": "Improvement", "key": "SERVER-2157", "labels": [], "originalEstimate": "PT0S", "parent": "16520", "parentSummary": "Remove JRuby 1.7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Fixed", "resolutionDate": "2018-04-09T10:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Package jruby in puppetserver jar", "timeSpent": "PT0S", "updated": "2018-04-09T10:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Not sure if we'll get around to doing that, may want to move it out of there and resolve this.", "created": "2018-07-30T12:43:00.000000"}], "components": ["Puppet Server"], "created": "2018-03-20T11:34:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@740fec1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Remove JRuby 1.7"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbof:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1912274744_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_9496671856"}], "description": "In Server 6 we will only support JRuby 9k", "duedate": "2018-06-13T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16520", "fixedVersions": ["SERVER 6.0.0"], "id": "16520", "issueType": "Epic", "key": "SERVER-2155", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Done", "resolutionDate": "2018-07-30T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove JRuby 1.7", "timeSpent": "PT0S", "updated": "2019-07-16T17:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-03-19T17:07:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40637136"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1dj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_150684179_*|*_1_*:*_1_*:*_778359095_*|*_10007_*:*_1_*:*_514975565_*|*_3_*:*_1_*:*_551879_*|*_5_*:*_1_*:*_14440123274_*|*_6_*:*_1_*:*_0"}], "description": "Same as the puppet3 and pupp4 compat tests.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16755", "fixedVersions": ["SERVER 6.0.0"], "id": "16755", "issueType": "Task", "key": "SERVER-2154", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Fixed", "resolutionDate": "2018-09-19T13:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add acceptance tests for puppet 5 agent communicating with puppetserver 6", "timeSpent": "PT0S", "updated": "2018-09-19T13:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "attachments": [], "comments": [{"author": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "body": "This feature is being considered so Irving can support cross platform tasks", "created": "2018-03-20T12:55:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52] please provide release notes for this issue if needed, thanks!", "created": "2018-09-12T07:22:00.000000"}], "components": [], "created": "2018-03-19T10:55:00.000000", "creator": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@566c8339"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzonxj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now supports task implementations, as described in https://github.com/puppetlabs/puppet-specifications/tree/master/tasks#task-implementations."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_277581749_*|*_1_*:*_1_*:*_12273504840_*|*_10007_*:*_2_*:*_514748413_*|*_3_*:*_2_*:*_1121245118_*|*_10009_*:*_1_*:*_602145008_*|*_5_*:*_1_*:*_179090843_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_939012787"}], "description": "In order to support cross platform tasks puppet-server must list tasks with multiple implementations and include file metadata for all implementations of a task.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15098", "fixedVersions": ["SERVER 6.0.0"], "id": "15098", "issueType": "New Feature", "key": "SERVER-2156", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "resolution": "Fixed", "resolutionDate": "2018-09-17T11:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server should include file metadata for all implementations of a task", "timeSpent": "PT0S", "updated": "2018-09-19T13:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-03-16T15:12:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ee50e5f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsuaf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19881154360_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2152710146_*|*_10005_*:*_1_*:*_100752125635"}], "description": "The pe-puppet-server-extensions acceptance tests take quite a bit of time. The server acceptance tests are run and take about 1hr30m, followed by the file sync suite which takes about 1h15m.\n\nTalking to [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], it sounds like there's opportunity for us to reduce the test time by rearranging coverage. There are some high-level acceptance tests that test file sync-specific behavior, and apparently the suite is better at testing LEI's functionality than the LEI tests are (which only set up LEI). We should probably rearrange some of these tests to get them to live in a more appropriate place.\n\nAs for the server suite, those tests are apparently largely identical to the ones in FOSS, just run in a PE context, but there's still room for auditing for ones to get rid of! Double the gains!", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16753", "fixedVersions": [], "id": "16753", "issueType": "Task", "key": "SERVER-2153", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2022-02-04T17:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reduce puppet server acceptance test time", "timeSpent": "PT0S", "updated": "2022-02-04T17:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-03-15T17:41:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58a84bed"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-8"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "JRuby in the Wild"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkpqf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_124412164571_*|*_6_*:*_1_*:*_0"}], "description": "A place to keep track of issues we encounter using JRuby in non-simulated environments, and how we can improve our simulated perf environments to measure changes.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15501", "fixedVersions": [], "id": "15501", "issueType": "Epic", "key": "SERVER-2151", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2022-02-22T15:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby in the Wild", "timeSpent": "PT0S", "updated": "2022-02-22T15:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [], "components": [], "created": "2018-03-15T17:06:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@687cbdd7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkfiv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_11302_*|*_1_*:*_1_*:*_2705046_*|*_3_*:*_1_*:*_246193955_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_343136145"}], "description": "- Redo JRuby testing to emphasize testing 9 more than 1.7, make it default, run it more often if periodic jobs", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16330", "fixedVersions": ["SERVER 6.0.0"], "id": "16330", "issueType": "Task", "key": "SERVER-2149", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Fixed", "resolutionDate": "2018-03-22T13:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reorganize CI for Puppet 6", "timeSpent": "PT0S", "updated": "2018-03-22T13:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm thinking we should always test on all the platforms: there doesn't seem to be a noticeable time difference between the two layouts we're currently using, and we have enough CI capacity now to handle the ~12 platforms on a mergely basis. If we do that, I think we can bring the periodic pipeline's frequency down quite a bit, say weekly. I think it's important to keep around, because on some branches we may not be merging any code changes, but changes might be landing in the equivalent puppet branch that need to be tested in the server.", "created": "2018-03-26T14:40:00.000000"}], "components": ["Puppet Server"], "created": "2018-03-15T17:05:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3528defe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2rb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_864520_*|*_1_*:*_1_*:*_941445322_*|*_10007_*:*_1_*:*_65235041_*|*_3_*:*_1_*:*_4565782_*|*_5_*:*_1_*:*_0"}], "description": "It looks like our platform coverage is broader in periodic jobs than the mergely jobs. This may have been to reduce load, but do we need this anymore? Can we combine the mergely and periodic jobs now? Also on old branches that we don't expect changes in, how many platforms do we really need to test?", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15915", "fixedVersions": ["None"], "id": "15915", "issueType": "Task", "key": "SERVER-2148", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2018-03-27T10:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Re-evaluate platform coverage in puppetserver pipelines", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] Upcoming docs ticket", "created": "2018-03-15T17:22:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] If the changes are limited to the Server docs, you can make a PR against the docs in the puppetserver repo and add me as a reviewer. If docs changes are required elsewhere, particularly PE, we'll need some pre-docs or a PR against the other relevant repos.", "created": "2018-03-15T17:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] do you know what the source is for the page linked in the description? I'm not seeing any clear mapping from the docs in the repo...", "created": "2018-03-23T10:13:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Server docs on the docs site should have a direct relationship the {{documentation}} directory in the repo. The doc linked in the description is puppetserver/documentation/configuration.markdown.\n\nThe JRuby section linked to was removed on the master branch in [commit 6616aa2|https://github.com/puppetlabs/puppetserver/commit/6616aa2d3185922eb0f0b51bfd7f6fefb58a0476], but is still in the [5.3.x branch|https://github.com/puppetlabs/puppetserver/blob/5.3.x/documentation/configuration.markdown].", "created": "2018-03-23T12:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Ah, that explains my confusion, I was looking on master. I now realize Patrick removed that recently. In that case, we should prioritize getting packaging to correctly set the values we intended to write about in the docs update, since master is now using 9k by default, but not with all the configuration it needs. Meanwhile, I'll update the older branch.", "created": "2018-03-23T12:41:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've put a 5.1.6 fix version on this, but it doesn't include any actual code changes. So it won't need to go out till we have other things for a 5.1.6 release.", "created": "2018-03-28T12:02:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] should we perhaps put 5.3.1 fix version on this instead (since we don't know if there will be a 5.1.6)?", "created": "2018-04-04T13:54:00.000000"}], "components": [], "created": "2018-03-14T15:22:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b0baaa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2044"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1cn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We have updated the docs on enabling JRuby 9k to reflect the results of our performance research: when using 9k, it is important to set the JVM's code cache to 512MB and to turn on JIT compilation."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_95334972_*|*_10007_*:*_2_*:*_94233886_*|*_3_*:*_1_*:*_1517191_*|*_5_*:*_1_*:*_1884128438_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_6134_*|*_10006_*:*_1_*:*_1024360042"}], "description": "Ryan Coleman was encouraging people on twitter to enable JRuby 9k, which made me realize we should update the current docs (https://puppet.com/docs/puppetserver/5.0/configuration.html#enabling-jruby-9k) with what we know. We are trying to make it easier to turn it on, but that won't happen immediately. This means telling them to set compile mode to jit, and to maybe increase ReservedCodeCacheSize java arg if they're seeing performance degradation (we know that a size of 512MB works well for heaps 2-12GB).", "epicLinkSummary": "JRuby performance improvements", "estimate": "PT0S", "externalId": "16741", "fixedVersions": ["SERVER 5.3.1"], "id": "16741", "issueType": "Task", "key": "SERVER-2147", "labels": [], "originalEstimate": "PT0S", "parent": "14707", "parentSummary": "JRuby performance improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Fixed", "resolutionDate": "2018-04-19T12:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update open source docs on enabling JRuby 9k", "timeSpent": "PT0S", "updated": "2018-04-19T12:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-03-09T16:56:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@82ff167"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0e4ry:o"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_98126_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1813730796_*|*_10005_*:*_2_*:*_124305007057"}], "description": "Very frequently hosts are not preserved after a failure in CI. This means often needing to reproduce the failure locally to see log files, and sometimes leaves no route for debugging if the issue is transient.\n\nI propose we take something like the script the PE acceptance tests use:\n\n[https://github.com/puppetlabs/pe_acceptance_tests/blob/2017.3.x/acceptance/post/zzz_save_diagnostic_files.rb]\n\nwhich we can use to archive relevant log files in jenkins. I don't know how much of that is PE-specific. We can add this to the end of any beaker pipeline we see fit. The place this is most useful is probably the JRuby acceptance tests, and possibly also the file sync tests in pe-pse.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16329", "fixedVersions": [], "id": "16329", "issueType": "Task", "key": "SERVER-2146", "labels": ["debugging"], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2022-03-08T09:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add beaker post step to collect diagnostic files", "timeSpent": "PT0S", "updated": "2022-03-08T09:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9], [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] In Puppet 5, puppetserver no longer stores node information by default. In Puppet 6, I'd like to at least do the same for the fact cache, but even better would be to delete the node and fact caches entirely, since AFAIK that information is duplicated in puppetdb. Plus it means the server would never need to write YAML to disk, and potentially read it back in during the next compile.", "created": "2018-04-27T12:46:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] do we still plan to do this in the 6.0.z timeframe?", "created": "2018-09-19T13:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Seems unlikely, I haven't heard anything about this. But I'll defer to [~accountid:63d40628f6e1b543161789a7].", "created": "2018-09-19T13:58:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Yes, let's do this in 6.0.1 (preferably).", "created": "2018-09-24T15:20:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:63d40628f6e1b543161789a7] it's looking like 6.0.2 is more likely at this point", "created": "2018-09-25T08:53:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:63d40628f6e1b543161789a7] is this something your team is going to pick up, or do we need to slot it in? I think the code changes themselves are in Puppet?", "created": "2018-10-11T17:33:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Just to be clear this would involve updating the compiler? ...or indirector?", "created": "2018-10-11T17:50:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I think we missed the window of opportunity for puppet6, so bumping to puppet 7 removals, though we should deprecate the current behavior in puppet6.\n\nSpecifically it's this line in puppetserver: [https://github.com/puppetlabs/puppetserver/blob/master/src/ruby/puppetserver-lib/puppet/server/puppet_config.rb#L38], which causes puppetserver to create/update the per-node facts file, even though the same information is stored in puppetdb.\n\n{{$vardir/yaml/facts/<name>.yaml}}\n\nThere may be some code changes in puppet as well.", "created": "2018-10-18T11:25:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Puppet lookup still uses the yaml facts terminus. This would only be an issue for foss puppetserver because in the pe case the fact terminus is configured to be pdb.\n\nWe should have worked through some of these issues before we get to this ticket, re the lookup application. We will need to reevaluate when we get back to this.", "created": "2020-04-30T15:55:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:63d40628f6e1b543161789a7] how high of a priority is this for Platform 7? Removing this would essentially require people to use PDB, which probably not all FOSS users do.\n\nWe also suspect some people might be integrating with this with their own tooling. Do we have any evidence one way or another about that?", "created": "2020-08-10T16:13:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I think the issues with the fact cache are the same as Chris described with the node cache in PUP-6060, so I'd be in favor of adding this in Puppet 7:\n\n{quote}I recently had some conversations with Nick Walker and others about scaling PE to tens of thousands of nodes. One of the issues they ran into was that the disk got filled up by the YAML files containing the facts for nodes.{quote}\n\nNote this ticket is to change the default fact terminus to nil in https://github.com/puppetlabs/puppetserver/blob/b4ed07433d7cc7dccc96f2ebb47d64a11db02d9b/src/ruby/puppetserver-lib/puppet/server/puppet_config.rb#L54. If someone really wants that, then they could set the fact terminus to `{{yaml}}` in puppet.conf (or routes.yaml).", "created": "2020-08-18T10:32:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Based on comments in\u00a0PUP-9505, Foreman's enc script:\n\n{quote}\nloads data from /opt/puppetlabs/server/data/puppetserver/yaml/facts/some_node.yaml\n{quote}\n\nSo as long as it's possible to re-enable the fact terminus in configuration, then I think it's ok to make the default nil.", "created": "2020-09-29T12:52:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "We also not in a position to do extensive perf testing around this, especially in the case where puppetdb is under heavy load, so I'm also fine closing won't fix.", "created": "2020-10-10T10:37:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "When the agent makes a node request, it doesn't send facts (see PUP-7754). The classifier terminus running in puppetserver, will then load the facts from the cache, or fallback to puppetdb. So removing the fact cache could cause an increase in puppetdb load. Puppetserver also provides a {{puppet/v3/facts}} endpoint that can be used to retrieve facts, so the lack of cache could be an issue there.\n\nTo handle the \"fact cache grows unbounded\" issue that originally brought this up, we should make sure {{puppet node purge}} deletes the node and its facts from those cache, and document a {{find/exec/rm}} command to use to purge them. Using tidy doesn't scale when there are 100k nodes.", "created": "2020-10-12T12:31:00.000000"}], "components": [], "created": "2018-03-08T18:38:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51a45483"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-10593"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkj3b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_920373710_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_5429891153_*|*_10006_*:*_1_*:*_604609463_*|*_10005_*:*_2_*:*_75013080618"}], "description": "Puppet server stores the last known facts for all nodes that ask for catalogs in its fact cache. The cache grows unbounded and duplicates information that the server sends to puppetdb. The cache is hardcoded and cannot be disabled as far as I know.\n\nThis ticket is to disable the fact cache by default, similar to what was done for the node cache in Puppet 5, see\u00a0PUP-6060. I don't know if we need a setting to re-enable it?\n\nAnother reason for disabling the cache is to speed up the compiler so that it doesn't need to serialize facts to YAML.\n\nThe issue also affects webrick, but was removed in 6, so doesn't matter.", "epicLinkSummary": "Puppet 7 Server", "estimate": "PT0S", "externalId": "17092", "fixedVersions": [], "id": "17092", "issueType": "Task", "key": "SERVER-2145", "labels": ["platform_7"], "originalEstimate": "PT0S", "parent": "20311", "parentSummary": "Puppet 7 Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Won't Do", "resolutionDate": "2020-10-12T12:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable server's fact cache by default", "timeSpent": "PT0S", "updated": "2020-10-12T12:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "As we look through the user stories next week with Verne, we want to come up with a series of evaluation criteria for the usefulness of buying a pluggable CA versus building our own system.", "created": "2018-03-29T17:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Some background:\n\nWe have three \"CA\" trapperkeeper services currently in clojure.\n # The real clojure based CA in puppetserver.\n # The \"disabled CA\" tk service that exposes noop versions of the internal CA service protocol for customers that use an external CA\n # The \"proxy CA\" which compile masters use to proxy CA request to the Master of Masters.\n\nSomething like the proxy CA is something like what we might want to investigate, though instead of just proxying we'd do some translation to the external API.\n\nThere's also two other levels to the SSL/CA code that could provide extension points:\n # The proper CA tk service (#1 above) knows about the routes and configuration, while the puppet-y behavior is contained within a CA library in puppetserver/src/clj/puppetlabs/puppetserver/certificate-authority. It could be possible to re-use the existing CA service but use a different CA library that contains AD integration logic rather than Puppet-y logic.\n # There's also the jvm-ssl-utils library that wraps lower level actions and third party interfaces from Java SSL libraries with Java and clojure interfaces. This is where we'd probably want to change between BouncyCastle and other SSL libraries, or integrate with HSM libraries.\n\n\u00a0\n\nJust using tk as the dependency injection point like we do elsewhere it follows that writing a new tk service is probably the first way to structure the code that we should look into. Though we may want to refactor the Puppet CA service and library to allow re-use for basic route handling between an AD backed CA service and the existing CA.\n\n\u00a0\n\nHopefully, that helps whoever picks this up as to where they should look in the code and how its broken up.", "created": "2018-04-27T12:07:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is relevant again in the context of HA. We should investigate to what extent supporting this would allow us to rely on customer's existing CA infrastructure for HA/DR of the CA.", "created": "2018-10-29T16:24:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "I swear there was a whole separate ticket at one time related to this, but I can't find it for the life of me.\n\nSuggested minimal implementation: extend autosign. We already allow an arbitrary customer-provided procedure to be run to handle incoming certificate signing requests. The path of least resistance to integrating with ANY external CA would be to permit an autosigning script not only to return true or false (permitted to sign / not permitted to sign), but to optionally *handle signing entirely outside of Puppet Server* and simply return the signed cert on stdout.\n\nThis should be both easy to implement AND address 90% or more of customer use cases needing to integrate with an arbitrary, unknown external CA process.", "created": "2021-03-24T22:26:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Not a bad idea /cc [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] Still not trivial but definitely less work. Might be good to have a story ticket describing the more abstract use case, since it doesn't seem like one exists.", "created": "2021-03-25T09:12:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "It would need more than autosign. For example, updating the revocation list also requires the CA to make a signature.\n\nThat said, a TK CA service that delegates everything involving signing to user supplied script(s) might be a decent solution.", "created": "2021-03-25T16:27:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "For completeness, yeah. I think\u00a0SERVER-2550 technically makes handling revocation in this scenario a nice-to-have from a purely functional workflow standpoint, though of course it'd still be clunky to omit it.\n\nAgents receiving new certs through \"the usual way\" is more important than revocation working in \"the usual way\" when an external CA is involved. Decommissioning processes are already driven by the customer, and they can insert appropriate logic for revocation there.", "created": "2021-03-25T17:17:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T10:52:00.000000"}], "components": [], "created": "2018-03-08T17:56:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36b31441"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1yv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1809316216_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_124395665172"}], "description": "Right now your only two choices for signing certs are to use the built-in bespoke Puppet CA or to completely externalize signing to an outside CA, disabling the auto-enrollment and revocation routines we have. It'd be potentially awesome to have an option that delegates the CA duties to a third-party option, so the enrollment, signing and revocation are still handled by puppet-related tools but we get access to a richer feature set than we could reasonably build on our own.\n\nThis ticket should track a spike to determine feasibility of integrating against external certificate authority so that the agent CRL submission / cert retrieval API remains the same, and in the event that the external CA is configured, we proxy those requests to the CA rather than using our internal signing routines. The primary integration target should probably be Active Directory, since for nearly all users with a hard requirement for using their corporate CA, the CA they must use is AD. (I'm not sure what the #2 target would be, maybe FreeIPA?)\n\nObviously there are some tradeoffs for using an external thing vs our own, but the first step would be just determining whether it's even *possible*, and define how the handoffs between the puppet server and the CA would work.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15761", "fixedVersions": [], "id": "15761", "issueType": "Task", "key": "SERVER-2144", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate pluggable certificate authority", "timeSpent": "PT0S", "updated": "2022-03-08T10:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I have updated puppetserver's version to the next snapshot. We didn't use a release branch for this one, so there is no branch/pipeline cleanup.", "created": "2018-03-19T15:09:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Thanks, [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]. A 5.3.x branch does exist for future versions in this series, though, right?", "created": "2018-03-20T08:43:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yep, we created that and pipeline for it and released off of that.", "created": "2018-03-20T09:51:00.000000"}], "components": [], "created": "2018-03-08T07:26:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c9f21db"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8520"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1br:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2384_*|*_5_*:*_1_*:*_1789064995_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_975134106"}], "description": "(Initial planned release date: 2018-03-20)\n\n* Update version number in source to point to next snapshot.\n* Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n* Delete release branch if created.\n* Remove Jenkins pipelines for release branch if created.\n* Update Winston and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2018-03-21T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.0 Release - 2018-03-20", "estimate": "PT0S", "externalId": "17382", "fixedVersions": [], "id": "17382", "issueType": "Task", "key": "SERVER-2143", "labels": [], "originalEstimate": "PT0S", "parent": "28468", "parentSummary": "Puppet Platform 5.5.0 Release - 2018-03-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-04-09T08:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.3.0)", "timeSpent": "PT0S", "updated": "2018-04-09T08:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "We're waiting a bit on this for a fix to the pe-puppet-server-extensions CI pipeline so that we can have a version of server promoted to PE that has our JrJackson change", "created": "2018-03-16T12:08:00.000000"}], "components": [], "created": "2018-03-08T07:25:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b4c4be6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8520"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1bj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2287_*|*_3_*:*_1_*:*_256826228_*|*_5_*:*_1_*:*_97625969_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_704113578"}], "description": "(Initial planned release date: 2018-03-20)\n\n* Ensure the candidate SHA has passed all applicable testing\n  * The candidate SHA that the release branch was branched from should pass CI,\n     be promoted into PE if applicable, and if so, pass PE's CI. If there are\n     failures resolve them or escalate to someone who can.\n* Bump and Tag the candidate SHA once passing\n  * This is automated for internal (PE) releases, and may be automated soon for\n   open source. Locally from a checkout of the release branch update the version\n   number in the project.clj (non-SNAPSHOT version). Commit this change and\n   create a signed tag with the version number project.clj was just bumped to.\n* Ensure tagged release version is built, tested and artifacts exist at\n  builds.delivery.puppetlabs.net\n  * This may entail manually promoting into PE again.\n", "duedate": "2018-03-16T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.0 Release - 2018-03-20", "estimate": "PT0S", "externalId": "17091", "fixedVersions": ["SERVER 5.3.0"], "id": "17091", "issueType": "Task", "key": "SERVER-2142", "labels": [], "originalEstimate": "PT0S", "parent": "28468", "parentSummary": "Puppet Platform 5.5.0 Release - 2018-03-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-03-20T14:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.3.0)", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "attachments": [], "comments": [], "components": [], "created": "2018-03-08T07:25:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1600140a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8520"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1bb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2350_*|*_5_*:*_1_*:*_2125498675_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_638712914"}], "description": "(Initial planned release date: 2018-03-20)\n\n* Merge up and/or down as required.\n  * Outstanding changes from z branches should be be merged up to master.\n     Outstanding changes from \"older\" branches should be merged up through\n     the branch to be released (2.x -> 5.1.x if applicable). Any changes\n     that have been resolved in \"newer\" branches but need to be pulled down\n     to the release branch should be cherry-picked (eg backports to an LTS\n     branch).\n* Create release branch as needed.\n  * If there is continuing work landing on the version series branch\n     (5.1.x) while the release prep will be happening then create a\n     release branch (5.1.3-release) so a branch may sit at a good known\n     version (candidate SHA) while all of the remaining validation can be\n     performed (eg promoted into PE and manually tested).\n* Create Jenkins pipeline for release branch/update promotions as needed\n  * Update ci-job-configs so that the branch to be released off of has a\n     Jenkins pipeline and is being promoted into applicable PE streams. This\n     work may not be applicable if no release branch was created, the release\n     will not go into a PE stream, or this work has already been done as part\n     of normal maintenance.\n* Promote release candidate if needed.\n  * Older branches may not have the ability to automatically promote into PE\n     (2.x). If releasing off of one of these branches, create a VOOM build\n     and manually promote it into PE.\n", "duedate": "2018-03-15T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.0 Release - 2018-03-20", "estimate": "PT0S", "externalId": "16740", "fixedVersions": [], "id": "16740", "issueType": "Task", "key": "SERVER-2141", "labels": [], "originalEstimate": "PT0S", "parent": "28468", "parentSummary": "Puppet Platform 5.5.0 Release - 2018-03-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-04-09T08:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.3.0)", "timeSpent": "PT0S", "updated": "2018-04-09T08:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Currently following up on these, editing comment as I go:\n\nIssues in git but not resolved:\n * SERVER-2054 \u2013 this is in CI and should pass shortly, will follow up tomorrow. Edit: resolved!\n\nIssues in Jira but not in git (check up and retarget):\n - SERVER-1789 Developing \u2013 This one is an Epic for JRuby perf characterization, the fix version was just there to tell us to work on it a lot before this release\n - SERVER-2133 Ready for Merge \u2013 This is shared with SERVER-2098, which wasn't marked with a fix version. The PR is being reworked but is straightforward so should make CI. Follow up tomorrow. Edit: This is closely linked with PUP-8501, which we are still trying to get in for Platform 5.5. Planning on trying to merge tonight after PR testing, and we can revert tomorrow if necessary. SERVER-2098 currently in ready for CI.\n\nIssues without fix versions (add them):\n - SERVER-1663 added fix version but it's docs so maybe that wasn't necessary\n - SERVER-2024 not applicable, test change\n - SERVER-2090 not applicable, test change\n - SERVER-2118 fix version added, pinged Maggie about release notes\n - SERVER-2130 fix version and release notes added", "created": "2018-03-12T16:52:00.000000"}], "components": [], "created": "2018-03-08T07:25:00.000000", "creator": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a6e0c1f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8520"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkhz3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2393_*|*_3_*:*_1_*:*_81057868_*|*_5_*:*_1_*:*_420915735_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_556600895"}], "description": "(Initial planned release date: 2018-03-20)\n\n* Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n    to reconcile JIRA ticket states with commit messages since the last release.\n    Follow up with any reported problematic areas:\n  * Issues in git but not resolved in JIRA should be confirmed to be WIP and\n     not targeted for the current release.\n  * Issues in JIRA but not in git need to be retargeted for the appropriate\n     release and stakeholders should be notified.\n* Check project.clj and clj-parent for any library updates since the last\n    release (e.g. {{git diff 2.3.2 \u2013 project.clj}})\n* Once the scope of the release as been confirmed and the correct SemVer\n    version known ensure the Versions and Dependencies page in Confluence\n    is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2018-03-13T00:00:00.000000", "epicLinkSummary": "Puppet Platform 5.5.0 Release - 2018-03-20", "estimate": "PT0S", "externalId": "16517", "fixedVersions": ["SERVER 5.3.0"], "id": "16517", "issueType": "Task", "key": "SERVER-2140", "labels": [], "originalEstimate": "PT0S", "parent": "28468", "parentSummary": "Puppet Platform 5.5.0 Release - 2018-03-20", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "resolution": "Fixed", "resolutionDate": "2018-03-20T14:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.3.0)", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Adding to Server 5.1.6 since Hoyt should be basically identical to Irving as far as analytics are concerned, so we can collect more data this way.", "created": "2018-03-21T14:31:00.000000"}], "components": [], "created": "2018-03-05T16:33:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53ece9ac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2136"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkfin:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1206577511_*|*_3_*:*_1_*:*_1965431461_*|*_6_*:*_1_*:*_0"}], "description": "What we'd like to know: how many file resources with a \"puppet://\"-style URI, amount of plugin syncing done (tasks, facts, locales count), and if any custom mount points are used.\n\nTimebox to not more than a week; if any of these things are overly complicated to collect don't worry about them, we just want practice at collecting data like this from catalogs.", "epicLinkSummary": "Collect analytics on compiled catalog composition", "estimate": "PT0S", "externalId": "16328", "fixedVersions": ["None"], "id": "16328", "issueType": "Task", "key": "SERVER-2139", "labels": [], "originalEstimate": "PT0S", "parent": "17090", "parentSummary": "Collect analytics on compiled catalog composition", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2018-04-11T10:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "[SPIKE] Collect analytics on file resources", "timeSpent": "PT0S", "updated": "2018-04-11T10:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "It sound like making the puppet runtime completely threadsafe is not what is needed here if we impose the constraint that any evaluation of puppet logic / compilation of one catalog is only performed on a single thread. I.e. that there can be several compilations on different threads, but for one compilation it is always only a single thread. (I think that is implied, but I am pointing it out as I think the undertaking is otherwise really big).\n\nWith that assumption there is still a problem with environment cache. If it is to be shared by parallel threads (doing separate compilations) there will be the need to make both the environment cache logic and all of the loaders thread safe. I think that is a major undertaking and I would recommend re-architecting this so that all loading is made via a message queue - i.e. a single thread is responsible for loading all functions, defines, classes etc. as this removed the need to make all the classes in the loaders framework thread safe plus all \"legacy loading\" done with \"old code\". We can probably try with env timeout being 0 but I suspect that the env cache mechanism must be made thread safe in any case.\n\nYet another hurdle is the logic that makes use of polymorphic dispatch. In order to speed things up it caches all resolutions of class to method. This is currently (IIRC) in a class instance variable (i.e. a global). This will need to be made thread safe. On a fresh system starting compilation on multiple threads at the same time, there would be a lot of contention. One approach other than locking (which may have very negative impact on performance) is to have this cache in the environment (or thread local storage). There are several classes that makes use of polymorphic dispatch and that use caching. (Turning off these caches is an option, but it would then always be slow).", "created": "2019-07-31T12:49:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "{quote}for one compilation it is always only a single thread. (I think that is implied, but I am pointing it out as I think the undertaking is otherwise really big).{quote}\n\nYes, this is correct. I don't think there's any reason to try to do more than this. We expect a request to come in on a single thread from jetty, and that thread can be expected to handle only a single task in a single environment.", "created": "2019-08-19T16:30:00.000000"}], "components": [], "created": "2018-03-05T16:13:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22c9ed5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Threadsafe Puppet"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hympvz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Jul/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_44231269299_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_18565768713_*|*_10012_*:*_1_*:*_11135208057"}], "description": "With  the introduction of CD4PE's Impact Analysis, agentless device nodes, and compiling code snippets for Bolt, Puppet Server's ability to scale is more important than ever. Much of our current bottleneck comes from the need to only process one request per JRuby instance at a time, leading to the need to maintain a resource-heavy pool of JRuby instances. The JRuby pool also appears to be the largest generator of support escalations for Puppet Server. One of the main benefits of JRuby over MRI Ruby is its ability to use real multi-threading, but the Puppet codebase itself is not threadsafe, so we are completely missing out on this advantage. If we can make the Puppet codebase threadsafe, we unlock a large amount of scalability within our current architecture, while also having an opportunity to clean up some of the largest sources of technical debt.\n\nThis would be a win both for customer and developer efficiency and scalability.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16739", "fixedVersions": ["SERVER 6.12.0"], "id": "16739", "issueType": "Epic", "key": "SERVER-2138", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2020-07-08T09:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Threadsafe Puppet", "timeSpent": "PT0S", "updated": "2020-07-08T09:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:623e791da2f6400069ecbb9b] All of the config files in puppetserver's package are marked noreplace, so if they have been modified by the user they will not be replaced on upgrade, instead an rpmnew file will be laid down for the file. In this case the new ca.cfg file has an uncommented entry for the filesystem watch service (https://github.com/puppetlabs/puppetserver/blob/5.1.x/ezbake/config/services.d/ca.cfg#L5). That entry is required to puppetserver 5.0 and higher, and was optional in puppetserver 2.8.\n\nI think we probably need to document this better for puppetserver 2.8 to 5 series upgrades. /cc [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]", "created": "2018-03-05T16:25:00.000000"}], "components": ["Puppet Server"], "created": "2018-03-05T15:37:00.000000", "creator": "623e791da2f6400069ecbb9b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ba74f7d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkf8v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "> ### Potential service failures when upgrading with a modified init configuration\n>\n> If you modified the init configuration file --- for instance, to [configure Puppet Server's JVM memory allocation](./install_from_packages.html#memory-allocation) or [maximum heap size](./tuning_guide.html) --- and upgrade Puppet Server 2.5.0 or newer with a package manager, you might see a warning during the upgrade that the updated package will overwrite the file (`/etc/sysconfig/puppetserver` in Red Hat and derivatives, or `/etc/default/puppetserver` in Debian-based systems).\n>\n> The changes to the file support the new service bootstrapping behaviors. If you don't accept changes to the file during the upgrade, the puppetserver service fails and you might see a `Service ':PoolManagerService' not found` or similar warning. To resolve the issue, set the `BOOTSTRAP_CONFIG` setting in the init configuration file to:\n>\n>     BOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/services.d\"\n>\n> If you modified other settings in the file before upgrading, and then overwrite the file during the upgrade, you might need to reapply those modifications after the upgrade."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_708076_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_49925277294"}], "description": "Looks like this issue is coming up once again but affected by a different file after an upgrade from Puppet Server 4 (puppetserver-2.8.1-1.el7.noarch) to Puppet Server 5 (puppetserver-5.2.0-1.el7.noarch). What happens is the ca.cfg from Puppet Server 2.8.1 is not renamed to .rpmsave and replaced with the new ca.cfg from Puppet 5.\u00a0\n\n\u00a0\n{code:java}\nmv\u00a0/etc/puppetlabs/puppetserver/services.d/ca.cfg\u00a0/etc/puppetlabs/puppetserver/services.d/ca.cfg.rpmsave\nmv\u00a0/etc/puppetlabs/puppetserver/services.d/ca.cfg.rpmnew\u00a0/etc/puppetlabs/puppetserver/services.d/ca.cfg\n{code}\n\u00a0\n\nBelow is the error that takes place before the file was changed over from the old to new.\u00a0\n{code:java}\nException in thread \"main\" java.lang.RuntimeException: Service ':FilesystemWatchService' not found\n at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\n at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\n at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\n at java.lang.reflect.Constructor.newInstance(Constructor.java:423)\n at clojure.lang.Reflector.invokeConstructor(Reflector.java:180)\n at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invokeStatic(internal.clj:118)\n at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invoke(internal.clj:108)\n at puppetlabs.trapperkeeper.internal$instantiate$fn__13800.invoke(internal.clj:159)\n at puppetlabs.trapperkeeper.internal$instantiate.invokeStatic(internal.clj:156)\n at puppetlabs.trapperkeeper.internal$instantiate.invoke(internal.clj:149)\n at puppetlabs.trapperkeeper.internal$eval14346$build_app_STAR___14355$fn__14356.invoke(internal.clj:564)\n at puppetlabs.trapperkeeper.internal$eval14346$build_app_STAR___14355.invoke(internal.clj:532)\n at puppetlabs.trapperkeeper.internal$eval14448$boot_services_STAR___14457$fn__14458$fn__14459.invoke(internal.clj:634)\n at puppetlabs.trapperkeeper.internal$eval14448$boot_services_STAR___14457$fn__14458.invoke(internal.clj:633)\n at puppetlabs.trapperkeeper.internal$eval14448$boot_services_STAR___14457.invoke(internal.clj:628)\n at puppetlabs.trapperkeeper.core$eval15279$boot_with_cli_data__15286$fn__15287.invoke(core.clj:131)\n at puppetlabs.trapperkeeper.core$eval15279$boot_with_cli_data__15286.invoke(core.clj:96)\n at puppetlabs.trapperkeeper.core$eval15308$run__15313$fn__15314.invoke(core.clj:152)\n at puppetlabs.trapperkeeper.core$eval15308$run__15313.invoke(core.clj:146)\n at puppetlabs.trapperkeeper.core$main.invokeStatic(core.clj:174)\n at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:160)\n at clojure.lang.RestFn.invoke(RestFn.java:512)\n at clojure.lang.Var.invoke(Var.java:409)\n at clojure.lang.AFn.applyToHelper(AFn.java:178)\n at clojure.lang.Var.applyTo(Var.java:700)\n at clojure.core$apply.invokeStatic(core.clj:646)\n at clojure.core$apply.invoke(core.clj:641)\n at puppetlabs.trapperkeeper.main$_main.invokeStatic(main.clj:7)\n at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:4)\n at clojure.lang.RestFn.invoke(RestFn.java:512)\n at clojure.lang.Var.invoke(Var.java:409)\n at clojure.lang.AFn.applyToHelper(AFn.java:178)\n at clojure.lang.Var.applyTo(Var.java:700)\n at clojure.core$apply.invokeStatic(core.clj:646)\n at clojure.main$main_opt.invokeStatic(main.clj:314)\n at clojure.main$main_opt.invoke(main.clj:310)\n at clojure.main$main.invokeStatic(main.clj:421)\n at clojure.main$main.doInvoke(main.clj:384)\n at clojure.lang.RestFn.invoke(RestFn.java:619)\n at clojure.lang.Var.invoke(Var.java:430)\n at clojure.lang.AFn.applyToHelper(AFn.java:195)\n at clojure.lang.Var.applyTo(Var.java:700)\n at clojure.main.main(main.java:37)\nBackground process 6143 exited before start had completed{code}", "environment": "CentOS Linux release 7.4.1708", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15097", "fixedVersions": [], "id": "15097", "issueType": "Bug", "key": "SERVER-2137", "labels": ["docs"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e791da2f6400069ecbb9b", "resolution": "Fixed", "resolutionDate": "2019-10-04T12:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server won't start", "timeSpent": "PT0S", "updated": "2019-10-04T12:56:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Would it be feasible to get an enumeration of modules (and ideally their versions) that are installed on the server? This would greatly help us understand module usage, feature uptake, etc.", "created": "2018-03-15T17:33:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Enumeration of modules and versions can be grabbed via the environment modules endpoint: https://puppet.com/docs/puppetserver/6.1/puppet-api/v3/environment_modules.html\n\nI think that appeared somewhere in the 5.x release series.", "created": "2018-12-26T14:50:00.000000"}], "components": [], "created": "2018-03-02T16:30:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d99464a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-3"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Catalog Analytics"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkdtb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_126728356878_*|*_6_*:*_1_*:*_0"}], "description": "We should leverage our analytics toolkit to collect information about catalog composition.\n\nThis was instigated by our desire to know usage of file resources with puppet:// uris, of Puppet 3x functions, and Puppet 4 language constructs.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17090", "fixedVersions": [], "id": "17090", "issueType": "Epic", "key": "SERVER-2136", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Collect analytics on compiled catalog composition", "timeSpent": "PT0S", "updated": "2022-03-08T10:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've started two test runs of 24 hours each, one with 4GB heap and one with 8GB. Both are still using 512MB code cache. If these turn out poorly we can try to increase the code cache and see what happens.", "created": "2018-03-12T12:29:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Just kidding, the perf jenkins is still somewhat broken, see SERVER-2134. This is blocked until we can get it working again.", "created": "2018-03-13T17:03:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I have tested 4, 8, and 12 GB, all with a 512MB code cache, and they all had comparable results to the 2GB run. The results have been added to [the spreadsheet|https://docs.google.com/spreadsheets/d/1aMwzxXctXX8SZpdFg7kj6ole8c_xEcd03MtvS-rhbj0/edit#gid=1282019692].", "created": "2018-03-19T11:19:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've opened https://github.com/puppetlabs/gatling-puppet-load-test/pull/206 to make the number of active JRuby instances configurable in the Jenkins jobs.", "created": "2018-03-20T10:24:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Got slightly worse results with 8 active instances, 512MB codecache, and 4GB heap, but nothing catastrophic. Doing one more run with 8GB of heap and 8 active instances.\n\nAlso getting a baseline for max-requests-per-instance set to the PE default of 100,000.", "created": "2018-03-21T17:31:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "When MRPI is set to PE defaults and we use an above-default number of JRuby instances, performance degrades somewhat, but we mostly are still able to avoid timeouts. Ideally, customers would avoid using one or the other of these settings. We may want to look into changing the PE defaults of MRPI if we end up still having performance issues in the wild.", "created": "2018-03-26T15:54:00.000000"}], "components": [], "created": "2018-03-01T17:22:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@690c75dc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2rz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_929170309_*|*_10007_*:*_2_*:*_1157743_*|*_3_*:*_4_*:*_1050576378_*|*_5_*:*_2_*:*_81209796770_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_76308919_*|*_10006_*:*_1_*:*_84988162"}], "description": "We know 2GB heap runs do better with 512mb of codecache, but have no idea how to scale it for different sized heaps or if number of JRubies affects this. Run some tests to figure it out (24 hours previously sufficed so see problems when codecache is too small on 2GB heap).\n\nInvestigate with YourKit if necessary to explain why the code behaves this way.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "17380", "fixedVersions": ["None"], "id": "17380", "issueType": "Task", "key": "SERVER-2135", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2018-03-26T15:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Figure out how codecache needs to scale", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I was able to resolve the plugin update issue by using the workaround described here: https://github.com/voxpupuli/puppet-jenkins/issues/731. Seems like it's an issue with the Jenkins Puppet module that might get some attention soon.\n\nBy approving all the outstanding method errors via the script security GUI, I was able to get jobs running again. It's still unclear what the source of those unapproved methods was, possibly something inside one of the plugins.", "created": "2018-03-12T11:51:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "New problem, something still seems not right with how Puppet is trying to configure Jenkins. Each time Puppet runs on the perf master, it messed with three plugins (matrix-project, junit, and script-security), then triggers a restart of Jenkins (which kills running jobs). I need to figure out why these resources get updated every time (maybe Jenkins is changing something back when it restarts) and make it stop.", "created": "2018-03-12T17:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I ended manually installing the three plugins that Puppet was having trouble with, at the desired versions, by downloading the `.hpi` files and using the Jenkins UI to install them. The next time I ran Puppet, they stuck at the version I had installed and Puppet no longer attempted to make any changes (or restart Jenkins) during its run.\n\nMy conclusion here is that there are some pretty grievous bugs with the Puppet Jenkins module, and I wouldn't rely on it too heavily in its current form without expecting to need to do some manual intervention.", "created": "2018-03-15T11:32:00.000000"}], "components": [], "created": "2018-03-01T17:18:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@fb0841e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2s7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_61797521_*|*_3_*:*_2_*:*_697624126_*|*_4_*:*_1_*:*_132502_*|*_5_*:*_2_*:*_82271322472_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_321399805"}], "description": "We're getting sandbox errors when trying to apply changes to the perfdriver, and some of the plugins are the wrong version, but restarting the box isn't fixing it. Need to change this so we can successfully continue to develop on the perf driver Jenkins.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16738", "fixedVersions": [], "id": "16738", "issueType": "Task", "key": "SERVER-2134", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix perf driver puppetlabs-modules problem", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please add release notes for this issue if needed, thanks!", "created": "2018-03-19T13:21:00.000000"}], "components": ["Puppet Server"], "created": "2018-03-01T16:51:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e7dee32"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-1885"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2rr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver can now make use of some gems shipped by puppet-agent. The new shared directory is {{/opt/puppetlabs/puppet/lib/ruby/vendor_gems}}."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_15502523_*|*_1_*:*_1_*:*_665883389_*|*_10007_*:*_1_*:*_351567946_*|*_3_*:*_1_*:*_268537_*|*_5_*:*_1_*:*_596234907_*|*_6_*:*_1_*:*_0"}], "description": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] and [~accountid:557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20] are going to come up with a shared ruby gempath that is providing by the puppet-agent package. The server should load gems from that path if available. We need to add this path to puppetserver's config in Platform 5.5.\n\n\u00a0\n\n/cc [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "epicLinkSummary": "Allow hard gem dependencies to be added to puppet/puppet-agent without breaking puppetserver", "estimate": "PT0S", "externalId": "15760", "fixedVersions": ["SERVER 5.3.0"], "id": "15760", "issueType": "Improvement", "key": "SERVER-2133", "labels": [], "originalEstimate": "PT0S", "parent": "56978", "parentSummary": "Allow hard gem dependencies to be added to puppet/puppet-agent without breaking puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-03-20T14:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add shared gempath to puppetserver gempath", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8f1e0495-1d4a-4123-bbad-727b7f49f370", "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "This ticket likely won't be needed because semantic_puppet should be installed in the vendor_gems directory in puppet-agent and shared between puppet-agent and puppetserver.", "created": "2018-03-26T15:29:00.000000"}, {"author": "557058:8f1e0495-1d4a-4123-bbad-727b7f49f370", "body": "merged into master at\u00a0c80b9d32ef89d60a19f87f2d7ea49090c87c78e7\n\n\u00a0", "created": "2018-05-16T12:11:00.000000"}], "components": [], "created": "2018-02-28T14:51:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Coremunity", "Server"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* semantic_puppet should be at least 1.0.x in the gem-list\n * it should be possible to run puppet-agent 6.0 and the latest puppetserver 5.3.x package on the same host, as will happen in PE when using puppet apply to update puppetserver from 5.3 to 6.0."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9c140a1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-1880"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl31r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The version of semantic_puppet has been updated in Puppet Server to ensure backwards compatibility in preparation for future major releases of Puppet Platform."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2858040001_*|*_1_*:*_1_*:*_27696400_*|*_10007_*:*_1_*:*_593357242_*|*_3_*:*_1_*:*_607083_*|*_5_*:*_1_*:*_8033305799_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_3344083413_*|*_10006_*:*_2_*:*_2673785732"}], "description": "Puppetserver depends on an old semantic_puppet gem. We should delete semantic_puppet from https://github.com/puppetlabs/puppetserver/blob/a4f2b5445c62311f23fcdbf8f836b150cd29cabe/resources/ext/build-scripts/gem-list.txt so that it no longer bundles semantic_puppet.", "epicLinkSummary": "Unvendor semantic-puppet", "estimate": "PT0S", "externalId": "16515", "fixedVersions": ["SERVER 6.0.0"], "id": "16515", "issueType": "Task", "key": "SERVER-2132", "labels": [], "originalEstimate": "PT0S", "parent": "56577", "parentSummary": "Unvendor semantic-puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2018-06-18T14:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update semantic_puppet gem dependency", "timeSpent": "PT0S", "updated": "2018-09-19T13:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-02-27T10:29:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Data about the last passing puppetserver run is available for each branch at a fixed URL"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@87282c7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyloq7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_71579955_*|*_1_*:*_1_*:*_15674_*|*_10007_*:*_1_*:*_15739523_*|*_3_*:*_1_*:*_256103019_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2070905504"}], "description": "The puppet-agent Jenkins pipelines publish details of the most recently passed build in the form of a JSON file attached to each branch's pipeline, for example http://builds.delivery.puppetlabs.net/passing-agent-SHAs/api/v1/json/report-master for the master branch. We use this information in the puppetserver pipelines to determine which version of the agent to test against for each of our pipelines.\n\nThe puppetserver pipelines should similarly publish data about their most recent passing SHA, so that the puppet-agent pipelines can use it to test against, instead of relying on nightlies or pinning to a tag.\n\nThe script for how the agent accomplishes this: https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/puppet-agent-internal-promotion.sh#L64L87", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "17379", "fixedVersions": ["None"], "id": "17379", "issueType": "New Feature", "key": "SERVER-2131", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-03-27T10:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver CI should publish its last passing SHA for consumption by other pipelines", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "There's a PR to puppetserver updating it to the version of jruby-utils with this in it.", "created": "2018-02-27T16:23:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The puppetserver PR has been merged, so this will be winding its way through CI on its way to PE.", "created": "2018-02-27T16:30:00.000000"}], "components": [], "created": "2018-02-26T11:41:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a48724d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2044"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk927:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When using JRuby 9k, Puppet Server will default to using a JRuby compile mode of \"JIT\", as this provides best performance."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1184549081_*|*_1_*:*_1_*:*_9476_*|*_10007_*:*_1_*:*_20048728_*|*_3_*:*_1_*:*_353348_*|*_5_*:*_1_*:*_702250668_*|*_6_*:*_1_*:*_0"}], "description": "We know based on testing that jruby 9k will not perform well without setting compile-mode to jit,  so we should update jruby-utils to default to a compile-mode of jit for 9k, and off for 1.7.", "epicLinkSummary": "JRuby performance improvements", "estimate": "PT0S", "externalId": "15913", "fixedVersions": ["SERVER 5.3.0"], "id": "15913", "issueType": "Improvement", "key": "SERVER-2130", "labels": [], "originalEstimate": "PT0S", "parent": "14707", "parentSummary": "JRuby performance improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2018-03-20T14:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Default jruby 9k to compile-mode of jit", "timeSpent": "PT0S", "updated": "2018-03-20T14:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Saw again today on RHEL6: https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-master/753/LAYOUT=redhat6-64ma-64a,LDAP_TYPE=default,label=beaker/", "created": "2018-03-13T14:01:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The changes in https://github.com/puppetlabs/puppetserver/pull/1652 include some retries that give the DB extra time to process data and should help with this. If it keeps occurring after that change, then there may be a transient problem with the data its self, which we should look into.", "created": "2018-03-16T10:50:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This failed again, transiently, now with Charlie's new error messages. Still unclear exactly what went wrong, possibly the retries happened too quickly for the data to appear?\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-5.3.x/14/LAYOUT=redhat7-64ma-windows2008r2-64a,LDAP_TYPE=default,label=beaker/testReport/junit/(root)/acceptance_suites_tests_00_smoke/puppetdb_integration_rb/", "created": "2018-03-20T11:30:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Added another PR that puts some sleep time in between the retries and ensures we're only using one clock for time comparisons.", "created": "2018-03-20T12:47:00.000000"}], "components": [], "created": "2018-02-26T09:45:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dbe839e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk8uf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_255416034_*|*_1_*:*_1_*:*_287955528_*|*_10007_*:*_1_*:*_261072116_*|*_5_*:*_1_*:*_2426622184_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1267559531"}], "description": "The PuppetDB smoke acceptance test has started failing off and on with this error:\n{code}\nfacts_timestamp updated in PuppetDB. Expected 2018-02-26 11:06:37 UTC to be > 2018-02-26 11:07:28 UTC.\n{code}\nIt doesn't appear to be tied to any particular OS. Rerunning the job usually fixes it. I've only seen this happen on master (5.2+).\n\nExample job: https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-master/728/LAYOUT=redhat6-64ma-32a,LDAP_TYPE=default,label=beaker/", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "17089", "fixedVersions": ["SERVER 5.3.1"], "id": "17089", "issueType": "CI Blocker", "key": "SERVER-2129", "labels": ["transient"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-03-22T10:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Transient: facts_timestamp updated in PuppetDB", "timeSpent": "PT0S", "updated": "2018-04-19T12:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've updated various plugins to get us access to the {{params}} hash in Jenkins Pipeline. We should be able to write out its keys and values to a file for upload.", "created": "2018-03-20T11:27:00.000000"}], "components": [], "created": "2018-02-23T16:27:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Jenkins job params are exported to a file and uploaded to S3"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@15271693"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1bz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_513757686_*|*_1_*:*_1_*:*_182764_*|*_10007_*:*_1_*:*_70946695_*|*_3_*:*_2_*:*_947228722_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1206220458"}], "description": "We should upload a job's parameters to S3 along with the Gatling results and SUT artifacts. There is a [plugin|https://wiki.jenkins.io/display/JENKINS/Export+Parameters+Plugin] to write the parameters to a file, but it is not compatible with the Groovy Pipelines plugin, so we will probably need to write a script to do this by hand.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "17377", "fixedVersions": ["None"], "id": "17377", "issueType": "Improvement", "key": "SERVER-2128", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-03-27T10:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Export parameters from gatling perf jobs and upload to s3", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I have a 24 hour test run started here: http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest-24hr-1.7/3/console \n\nA previous 12 hour run did not have codecache set as expected due to MODULES-6687", "created": "2018-02-26T15:27:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The 24 hour performed similarly to a 1.7 run without codecache set. The only outlier was in the max for catalog, which was 800ms more than the 1.7 run without codecache. All of the other percentiles were within 100ms. Running the gc log through gceasy reported all was well as well. \nIt should be safe to just bump codecache to 512m in java args with a 2g heap.", "created": "2018-02-27T17:27:00.000000"}], "components": [], "created": "2018-02-22T17:19:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@649d81d8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2044"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1av:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_338780755_*|*_10007_*:*_1_*:*_3465342_*|*_3_*:*_1_*:*_90377145_*|*_10009_*:*_1_*:*_155435437_*|*_5_*:*_1_*:*_83368901656_*|*_6_*:*_1_*:*_0"}], "description": "We don't know how JRuby 1.7 will be affected if we raise the CodeCache size, but it would be really convenient if we can use the same setting on 1.7 and 9k by default. Test to see if it's impacted negatively.", "epicLinkSummary": "JRuby performance improvements", "estimate": "PT0S", "externalId": "15911", "fixedVersions": [], "id": "15911", "issueType": "Task", "key": "SERVER-2127", "labels": [], "originalEstimate": "PT0S", "parent": "14707", "parentSummary": "JRuby performance improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Test 1.7 with codecache set", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-02-20T16:43:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e033963"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "clj-http-client: the improvementing"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk5fr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_34380732827_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16513", "fixedVersions": [], "id": "16513", "issueType": "Epic", "key": "SERVER-2124", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Won't Do", "resolutionDate": "2019-03-25T15:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Handful or two of improvements to clj-http-client", "timeSpent": "PT0S", "updated": "2021-08-23T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [], "components": [], "created": "2018-02-15T15:29:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ea5c9bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk2rj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1121058447_*|*_1_*:*_1_*:*_611639486_*|*_10007_*:*_1_*:*_63458433_*|*_3_*:*_1_*:*_345529110_*|*_5_*:*_1_*:*_0"}], "description": "As we begin collecting small performance improvements to puppet itself it will be good to be able to deploy from a specific branch to better characterize the impact of those changes.\n\nOne possible approach to this would be to clone the puppet fork/branch and rsync it into place on the SUT.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16737", "fixedVersions": [], "id": "16737", "issueType": "Task", "key": "SERVER-2123", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2018-03-12T11:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable gatling tests from custom puppet branch/fork", "timeSpent": "PT0S", "updated": "2018-03-12T11:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-02-14T16:44:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@639bcd72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Froyo Misc Improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbn3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_134595865224_*|*_6_*:*_2_*:*_13559232146"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15096", "fixedVersions": [], "id": "15096", "issueType": "Epic", "key": "SERVER-2122", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2022-10-26T11:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "General Improvements", "timeSpent": "PT0S", "updated": "2022-10-26T11:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Pinning has happened.", "created": "2018-02-20T14:53:00.000000"}], "components": [], "created": "2018-02-13T18:09:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b001398"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1af:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_158644226_*|*_3_*:*_1_*:*_4116810_*|*_10009_*:*_1_*:*_430308285_*|*_5_*:*_1_*:*_0"}], "description": "As we work on getting jruby 9k performing better it is important to minimize possible vectors of change that could impact performance. Puppetserver and puppet-agent versions are currently unpinned, which can lead to drastic changes in performance between runs. In the future that will be useful to find performance regressions, but at the moment, having those versions fixed, at least for some of the jenkins gatling jobs, will be helpful.\n\nThe puppetserver-infinite job is probably the right place to pin those versions for now. It might also be good to expose them as job parameters so they are configurable.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16327", "fixedVersions": [], "id": "16327", "issueType": "Task", "key": "SERVER-2121", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2018-02-20T14:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pin puppetserver-infinite job to puppetserver 5.2.0/puppet-agent 5.4.0", "timeSpent": "PT0S", "updated": "2018-03-01T17:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I kicked off two 4 hours runs, one without the change and one with the change. I'll update here with results when complete.", "created": "2018-02-12T12:43:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The initial results of the patch are promising. Object allocation went from 766 mb/sec to 684 mb/sec, there were about 2000 less GC events (18886 to 16990), and 30 seconds less time was spent in GC. Runs are here: http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/puppetserver-infinite/27 (with fix) and http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/puppetserver-infinite/28 (without fix).\n\nI've kicked off some 12 hour tests to run overnight.", "created": "2018-02-12T17:24:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The 12 hour runs were good. For the 2gb heap runs, the run with the fix applied spent 30 minutes less time in GC out of an hour (50% less time in GC). There were no timeouts and the promotion rate was half that of the run without the fix. This is promising, so we'll be kicking off a longer run to make sure it doesn't degrade over time.", "created": "2018-02-13T15:15:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I've kicked off a 48 hour run with the fix.", "created": "2018-02-13T15:44:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Two other runs with this change applied have failed to produce great results. Both of the less than good runs had CodeCache full warnings in the journalctl for the puppetserver process. It might be good to begin collecting journalctl output and/or set  \u2013XX:+PrintCodeCacheOnCompilation in the java args for runs.", "created": "2018-02-15T14:01:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Once the in progress runs finish it will be good to look at their GC logs to see if anything obvious is happening.", "created": "2018-02-15T14:27:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Runs with this fix applied regularly generate 100mb/sec less object allocation and some # less promoted objects. It also eases the GC events. When combined with increasing CodeCache it has performed well over an 84 hour run. I'm going to resolve this ticket for now. There is a lot more detail in the spreadsheet.", "created": "2018-02-20T15:34:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Getting this patch, or something similar, into Puppet is ticketed as PUP-8549", "created": "2018-03-19T12:31:00.000000"}], "components": [], "created": "2018-02-08T17:14:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fe46a1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1a7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_329348024_*|*_3_*:*_1_*:*_701546424_*|*_5_*:*_1_*:*_84136018733_*|*_6_*:*_1_*:*_0"}], "description": "Patrick found that there's a particular regex in code in Puppet benchmarks that is taking up a lot of memory due to its encoding not being specified. Try changing this in a Puppet build and running gatling tests with that build.\n\n\u00a0\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/tagging.rb#L4", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "14770", "fixedVersions": [], "id": "14770", "issueType": "Task", "key": "SERVER-2119", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Test server perf when Ruby regex has encoding specified", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "created": "2018-02-07T01:57:00.000000", "name": "debug.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11049"}], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "ping [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e], maybe a jetty/tk/server regression?", "created": "2018-02-07T09:54:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I was able to reproduce and I'm thinking it's due to the agent POST'ing with content-type {{application/x-www-form-urlencoded}}. Moving to server ticket.\n\n{noformat}\n<- \"POST /puppet/v3/catalog/localhost?environment=foobar HTTP/1.1\\r\\nAccept: application/json, text/pson\\r\\nX-Puppet-Version: 5.3.5\\r\\nAccept-Encoding: gzip", "created": "2018-02-08T13:02:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We were able to track this down to a change in jetty, where POST request responses are excluded from gzipping by default. We need configure jetty in tk-jetty9 to make sure these also get gzipped.", "created": "2018-02-08T13:12:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We should send out an email to make sure that other teams know about this change going into tk-jetty9.", "created": "2018-02-08T17:18:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] Do you think this issue deserves some release notes?", "created": "2018-03-12T17:20:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yeah I'll throw something on here.", "created": "2018-03-12T17:58:00.000000"}], "components": [], "created": "2018-02-07T01:58:00.000000", "creator": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72f310f8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjutz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Catalog response bodies are now gzipped when requested, like all other response bodies. The fix for this bug also entails that the response bodies for _all_ POST requests can now be gzipped when requested."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_443114454_*|*_1_*:*_1_*:*_126306757_*|*_10007_*:*_2_*:*_178875532_*|*_3_*:*_1_*:*_420925454_*|*_5_*:*_1_*:*_2414163574_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_408563"}], "description": "*Puppet Version:* 5.3.3\n *Puppet Server Version:* 5.1.4\n *OS Name/Version:* Centos 7\n\nPuppetserver does not gzip catalogs, it should gzip everything.\n\n*Desired Behavior:*\u00a0Everything is gzipped over the wire\n\n*Actual Behavior:*\u00a0Everything but the catalog is gzipped over the wire\n\nAttached is the output of {{puppet agent -t --http_debug}}\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15095", "fixedVersions": ["SERVER 5.3.0"], "id": "15095", "issueType": "Bug", "key": "SERVER-2118", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "resolution": "Fixed", "resolutionDate": "2018-02-20T14:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Catalogs are not gzipped", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:5c118db0d3af3b1ccfecb728] The docs have some good information about that, see https://docs.puppet.com/puppet/3.8/environments.html#enabling-directory-environments and https://docs.puppet.com/puppet/3.8/environments_classic.html#config-file-environments-are-deprecated. If you run intro trouble, reach out to folks on #puppet on https://puppetcommunity.slack.com.", "created": "2018-02-08T12:58:00.000000"}], "components": ["Puppet Server"], "created": "2018-02-06T19:11:00.000000", "creator": "5c118db0d3af3b1ccfecb728", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a5b5632"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjurz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150448257_*|*_6_*:*_1_*:*_0"}], "description": "*Puppet Version: 3.8.7*\n *Puppet Server Version: 3.8.7*\n *OS Name/Version: RHEL 6.9*\n\nUpgrade open source puppet version 3.2.4 to 3.8.7. The upgrade went smoothly, but when I ran puppet agent -t, I had deprecation warning on puppet.conf\n\n{noformat}\nmanifest = $confdir/manifests/site.pp\nmodulepath = $confdir/module\n{noformat}\n\nI would like to know if someone can help me out\u00a0 to migrate out of the warning using the new way of setting manifest with /etc/hiera.yaml. Please be detailed on the steps, paths,and sample of the yaml files as I am very new with puppet upgrade.\n\nI have tried to set the following, but puppet run errors and puppetmaster crashed out.\n\n{noformat}\n[main]\nenvironmentpath = $confdir/environments/\n{noformat}\n\u00a0\nThanks,\n\nKevin\n\n*Desired Behavior:*\n\nstructure manifest = $confdir/manifests/site.pp and modulepath = $confdir/module out of puppet.conf. Migrating away from warnings message when running puppet agent -t\n\n*Actual Behavior:*\n\ndeprecation warning on puppet.conf against manifest and modulepath", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15500", "fixedVersions": [], "id": "15500", "issueType": "Bug", "key": "SERVER-2116", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5c118db0d3af3b1ccfecb728", "resolution": "Incomplete", "resolutionDate": "2018-02-08T12:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "{brief summary of issue}", "timeSpent": "PT0S", "updated": "2018-02-08T12:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] has this been done yet?", "created": "2018-02-20T07:19:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yep.", "created": "2018-02-20T10:01:00.000000"}], "components": [], "created": "2018-02-06T16:22:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39b12771"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8424"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjunr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2410_*|*_5_*:*_1_*:*_1373183426_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1186697625"}], "description": "(Initial planned release date: 2018-02-13)\n\n# Update version number in source to point to next snapshot.\n# Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n# Delete release branch if created.\n# Remove Jenkins pipelines for release branch if created.\n# Update Winston and any relevant Confluence pages with any changes needed in the release process.\n", "duedate": "2018-02-14T00:00:00.000000", "epicLinkSummary": "    Puppet Platform 5.4.0 Release - 2018-02-13\n", "estimate": "PT0S", "externalId": "14768", "fixedVersions": [], "id": "14768", "issueType": "Task", "key": "SERVER-2115", "labels": [], "originalEstimate": "PT0S", "parent": "29445", "parentSummary": "    Puppet Platform 5.4.0 Release - 2018-02-13\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2018-03-08T07:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.2.0)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-02-06T16:22:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57140162"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8424"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjunj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2266_*|*_3_*:*_1_*:*_104309757_*|*_5_*:*_1_*:*_1958848430_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_496727836"}], "description": "(Initial planned release date: 2018-02-13)\n\n# Ensure the candidate SHA has passed all applicable testing\n#* The candidate SHA that the release branch was branched from should pass CI,\n   be promoted into PE if applicable, and if so, pass PE's CI. If there are\n   failures resolve them or escalate to someone who can.\n# Bump and Tag the candidate SHA once passing\n#* This is automated for internal (PE) releases, and may be automated soon for\n   open source. Locally from a checkout of the release branch update the version\n   number in the project.clj (non-SNAPSHOT version). Commit this change and\n   create a signed tag with the version number project.clj was just bumped to.\n# Ensure tagged release version is built, tested and artifacts exist at\n  builds.delivery.puppetlabs.net\n#* This may entail manually promoting into PE again.\n", "duedate": "2018-02-09T00:00:00.000000", "epicLinkSummary": "    Puppet Platform 5.4.0 Release - 2018-02-13\n", "estimate": "PT0S", "externalId": "17376", "fixedVersions": [], "id": "17376", "issueType": "Task", "key": "SERVER-2114", "labels": [], "originalEstimate": "PT0S", "parent": "29445", "parentSummary": "    Puppet Platform 5.4.0 Release - 2018-02-13\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2018-03-08T07:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.2.0)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Passed FOSS testing here:\u00a0https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-5.2.0-release/1/", "created": "2018-02-09T16:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Couple of things,\n # The promotion job push a voom build of the actual commit that bumped the version. I was expecting the merge commit and not a voom reference. However, it's the same code so I'm happy tagging the version and signing off on it as long as CI passes.\n # CI failed. [the file-sync tests specifically|https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/view/pe-puppet-server-extensions/job/enterprise_pe-puppet-server-extensions_integration-system_file-sync-irving/22/]\u00a0all failed with the tests contacting our Ops infrastructure. I don't believe anything changed in our pre-suite, they're using the same PE build of the same - as far as I can tell - server code. I'm relatively confident that the issue is environmental because I would expect to see those failures in other suites ran prior to this if it was a code or packaging issue (the FOSS tests are green as well as the non-file-sync pe acceptance tests). But to be on the safe side I haven't tagged the release.\n\nReleasable builds of 5.2.0 are available internally [on the builds server|https://builds.delivery.puppetlabs.net/puppetserver/5.2.0/]\u00a0the version bump has not been promoted into PE yet though (the code was previous to the version bump though).", "created": "2018-02-09T18:24:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I noticed that weird voom behavior last time too. Does anyone know why it uses the commit SHA and not the merge SHA? I can't think of any reason why it should distinguish between the two...", "created": "2018-02-12T10:02:00.000000"}], "components": [], "created": "2018-02-06T16:22:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57fe2774"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8424"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjunb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_25601975_*|*_1_*:*_1_*:*_2221_*|*_3_*:*_1_*:*_321776637_*|*_5_*:*_1_*:*_2039539458_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_172974877"}], "description": "(Initial planned release date: 2018-02-13)\n\n# Merge up and/or down as required.\n#* Outstanding changes from z branches should be be merged up to master.\n   Outstanding changes from \"older\" branches should be merged up through\n   the branch to be released (2.x -> 5.1.x if applicable). Any changes\n   that have been resolved in \"newer\" branches but need to be pulled down\n   to the release branch should be cherry-picked (eg backports to an LTS\n   branch).\n# Create release branch as needed.\n#* If there is continuing work landing on the version series branch\n   (5.1.x) while the release prep will be happening then create a\n   release branch (5.1.3-release) so a branch may sit at a good known\n   version (candidate SHA) while all of the remaining validation can be\n   performed (eg promoted into PE and manually tested).\n# Create Jenkins pipeline for release branch/update promotions as needed\n#* Update ci-job-configs so that the branch to be released off of has a\n   Jenkins pipeline and is being promoted into applicable PE streams. This\n   work may not be applicable if no release branch was created, the release\n   will not go into a PE stream, or this work has already been done as part\n   of normal maintenance.\n# Promote release candidate if needed.\n#* Older branches may not have the ability to automatically promote into PE\n   (2.x). If releasing off of one of these branches, create a VOOM build\n   and manually promote it into PE.\n", "duedate": "2018-02-08T00:00:00.000000", "epicLinkSummary": "    Puppet Platform 5.4.0 Release - 2018-02-13\n", "estimate": "PT0S", "externalId": "17088", "fixedVersions": [], "id": "17088", "issueType": "Task", "key": "SERVER-2113", "labels": [], "originalEstimate": "PT0S", "parent": "29445", "parentSummary": "    Puppet Platform 5.4.0 Release - 2018-02-13\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2018-03-08T07:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.2.0)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Added a bunch of fix versions to JIRA tickets to clean up the ticketmatch results.", "created": "2018-02-08T16:01:00.000000"}], "components": [], "created": "2018-02-06T16:22:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f077cd9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8424"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjun3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2270_*|*_3_*:*_1_*:*_2186052_*|*_5_*:*_1_*:*_2386971357_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_170740418"}], "description": "(Initial planned release date: 2018-02-13)\n\n# Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n  to reconcile JIRA ticket states with commit messages since the last release.\n  Follow up with any reported problematic areas:\n#* Issues in git but not resolved in JIRA should be confirmed to be WIP and\n   not targeted for the current release.\n#* Issues in JIRA but not in git need to be retargeted for the appropriate\n   release and stakeholders should be notified.\n# Check project.clj and clj-parent for any library updates since the last\n  release (e.g. {{git diff 2.3.2 \u2013 project.clj}})\n# Once the scope of the release as been confirmed and the correct SemVer\n  version known ensure the Versions and Dependencies page in Confluence\n  is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "duedate": "2018-02-06T00:00:00.000000", "epicLinkSummary": "    Puppet Platform 5.4.0 Release - 2018-02-13\n", "estimate": "PT0S", "externalId": "16736", "fixedVersions": [], "id": "16736", "issueType": "Task", "key": "SERVER-2112", "labels": [], "originalEstimate": "PT0S", "parent": "29445", "parentSummary": "    Puppet Platform 5.4.0 Release - 2018-02-13\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2018-03-08T07:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.2.0)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-02-06T15:19:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7baaa35d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "FIPS-Enabled Puppet Server Side"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymq13:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_70067694497_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_7862864180_*|*_10013_*:*_1_*:*_17804033361"}], "description": "The problem is that customers using our Puppet and Puppet Enterprise packages cannot meet the FIPS 140-2 requirements because we roll our own OpenSSL and do not link against the OpenSSL provided with RHEL. This causes them to fail \"FISMA High\" compliance standards.\n\nThis epic is the place to gather the stream of work required to remediate this issue, although some implications (such as for puppet-server) will require tickets outside the PUP jira project.\n\nSee also PUP-7510 for FIPS-Enabled Puppet Agent", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16326", "fixedVersions": ["SERVER 6.y"], "id": "16326", "issueType": "Epic", "key": "SERVER-2524", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Done", "resolutionDate": "2021-02-18T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "FIPS-Enabled Puppet Server Side", "timeSpent": "PT0S", "updated": "2021-08-23T10:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Runs look better now.", "created": "2018-02-07T16:15:00.000000"}], "components": [], "created": "2018-02-05T17:37:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3cd0b4d9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjtcv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_99235863_*|*_1_*:*_1_*:*_2233935_*|*_10007_*:*_1_*:*_66422273_*|*_5_*:*_1_*:*_85255705512_*|*_6_*:*_1_*:*_0"}], "description": "When running gatling with 500 agents and 1800 second iteration length, a 5 minute gap is observed between iterations.\u00a0All 500 agents are scheduled during the first 25 minutes of the iteration. This is because 1800 / 500 = 3.6. Gatling will only deploy agents on second intervals, so it deploys an agent every 3 seconds, which means all agents are run after 1500 seconds, or 25 minutes.\n\nIn the case of 1250 agents, a hotspot can be seen in graphs at the end of an iteration. This is less obvious, but comes down to a similar problem. 1800 / 1250 = 1.44. Gatling apparently rounds this to 1.5 and runs 10 agents every 15 seconds, in sequences of 3 every 5, 3 every 5, 4 every 5. 10 * (1800/15) = 1200 which means that gatling can do 1200 agents evenly over 30 minutes. In order to get the last 50 agents in, gatling puts extra agents in for the last 2 to 3 minutes, which causes higher than average load.\n\nWe should probably open an issue with gatling at some point, but for now limiting our node counts to 100, 200, 300, 600, 900, 1200, 1500 and 1800 should get us an even distribution.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14766", "fixedVersions": [], "id": "14766", "issueType": "Bug", "key": "SERVER-2110", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2018-02-07T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling creates gaps or hot spots depending on agent count", "timeSpent": "PT0S", "updated": "2020-10-21T11:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The subject of the CA certificate can be set via the {{ca_name}} setting in puppet.conf:\n\n[https://puppet.com/docs/puppet/5.3/configuration.html#caname]\n\n\u00a0\n{code:java}\n[master]\nca_name=system:node:node01/O=system:nodes{code}\n\u00a0\n\nThe trick is to lay this configuration down in puppet.conf _before_ Puppet Server is started for the first time or a {{puppet cert}}\u00a0CLI operation is invoked \u2014 as both of these trigger the generation of the CA certificate, which will use the default subject of hostname + creation date. Re-issuing a CA certificate after agent nodes have been added to the system is a delicate operation that can require a lot of effort.\n\n\u00a0\n\nFor Puppet Agents, the certificate subject can also be set in puppet.conf through the {{certname}} setting. However, the authorization rules used by Puppet Server expect to match the subject of the certificate to Puppet node names in order to properly restrict which node catalog a given certificate can request.\u00a0These auth rules\u00a0could probably be shifted over to using certificate extensions instead of the subject as the trapperkeeper-authorization library does support that use.\n\n\nHowever, the subject of Puppet Agent certificates has been synonymous with a hostname\u00a0since the dawn of time\u00a0which means there is a ton of legacy code out in the ecosystem which assumes {{$::certname}} is a hostname.", "created": "2018-02-05T15:57:00.000000"}, {"author": "557058:2268636a-3880-4b3c-a73a-6200f2fd381a", "body": "Oh sorry, in case it was vague", "created": "2018-02-05T22:56:00.000000"}], "components": ["Certificate Authority"], "created": "2018-02-05T15:29:00.000000", "creator": "557058:2268636a-3880-4b3c-a73a-6200f2fd381a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e4f71b8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjt5b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_254916357_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_62189267044"}], "description": "Currently, there is no way to allow for adding additional fields to the subject of a Puppet certificate, only the common name in the form of a FQDN is ever passed in.\n\n\u00a0\n\nFor the use case of having the Puppet CA act as the CA for a Kubernetes cluster, this becomes rather painful as K8s expect certificates to specify group membership through the use of organization fields in the subject.\n\nFor instance, in the case of a Kubernetes node; (user \"user system:node:node01\", belonging to the group \"system:nodes\")\n{code:java}\n$ openssl x509 -in node01.pem -noout -subject\nsubject= /CN=system:node:node01/O=system:nodes{code}\nHaving a method to mutate the Puppet certificate - maybe as an extension to the custom attribute system - would be very helpful in making it possible to use the Puppet CA for this use-case as well.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14764", "fixedVersions": [], "id": "14764", "issueType": "Improvement", "key": "SERVER-2109", "labels": ["ca", "ssl"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2268636a-3880-4b3c-a73a-6200f2fd381a", "resolution": "Won't Do", "resolutionDate": "2020-01-29T09:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow for mutating subject in Puppet cert request", "timeSpent": "PT0S", "updated": "2020-01-29T09:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The base-line model with some configuration is in, now we need to expand it to\n * make a toggle for 9K\n * make MRPI configurable (see subtask)", "created": "2018-02-08T17:08:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I'm just going to break those items out into separate tickets and not sub-tasks. I'm not convinced the priority needs to be there for the MRPI currently.", "created": "2018-02-09T17:24:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This is working well. I'll be opening new tickets for future tweaks to this job.", "created": "2018-02-13T16:04:00.000000"}], "components": [], "created": "2018-02-01T17:58:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f7d2eea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyloqf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_18877425_*|*_1_*:*_1_*:*_24214_*|*_10007_*:*_1_*:*_61641114_*|*_3_*:*_1_*:*_888003571_*|*_5_*:*_1_*:*_84739101586_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_61421696"}], "description": "Currently in order to test new scenarios in gatling via jenkins we have to make a Jenkinsfile, gatling scenario, and sometimes node config. Most of the time this just means copying and editing json files, which is something that computers are good at. We should have a single jenkins job that can generate most of the common gatling scenarios we want to run.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17087", "fixedVersions": [], "id": "17087", "issueType": "Task", "key": "SERVER-2108", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Craft a jenkins job to expose most gatling options that we use", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "attachments": [], "comments": [], "components": [], "created": "2018-01-31T17:25:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34f197f9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjonz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_690951703_*|*_3_*:*_1_*:*_5156880917_*|*_6_*:*_1_*:*_0"}], "description": "I'm not 100% sure how useful this is but I wanted to make a ticket for us to discuss what we would do with it.\n\nSome concerns have been raised that using Gatling to do all our performance testing may overemphasize some problems (like timeouts, which aren't as short in a real puppet infrastructure). Additionally it's hard to experiment with one-off changes.\n\nOne possible way to address this is to have a secondary testing infrastructure where we can have a semi-permanent puppet deployment with a few agents checking in regularly (we can make them check in very frequently if we want to add load). This could be used for experimentation with GC tuning, live profiling, or software patches without the need to plumb it through Jenkins which can be a hassle for a one-off attempt.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16325", "fixedVersions": [], "id": "16325", "issueType": "Task", "key": "SERVER-2107", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2018-04-09T10:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "A real puppet infrastructure to experiment with", "timeSpent": "PT0S", "updated": "2018-04-09T10:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "attachments": [], "comments": [], "components": [], "created": "2018-01-31T17:22:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50d34e0a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjonr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2845052752_*|*_3_*:*_1_*:*_1468206842_*|*_5_*:*_1_*:*_101075400253_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_3668994"}], "description": "We know that moving the file serving functionality into Clojure would help performance, but we don't know how many customers would benefit or how much, so it's hard to prioritize.\n\nSurvey puppet test pilots using questionnaire. Develop questions/script they can run to answer:\n\n1) how many file resources they have that use \"puppet://\" URIs\n\n2) how long their agents spend on first pluginsync\n\n3) how much use they make of custom mount points, and what for\n\nWe considered adding analytics about this (happening in SERVER-2139)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15909", "fixedVersions": [], "id": "15909", "issueType": "Task", "key": "SERVER-2106", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2018-03-22T17:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gather data on impact of file serving -> Clojure", "timeSpent": "PT0S", "updated": "2021-06-04T14:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We haven't been having enough issues to warrant doing this investigation.", "created": "2019-09-25T17:26:00.000000"}], "components": [], "created": "2018-01-31T17:18:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4aba009d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjjav:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_40610200108_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11399467350"}], "description": "GC Easy indicated that at a very large heap size, the old generation would peak around 1.8Gb, which is slightly larger than the normal ~1.3Gb we allocate for it in 2Gb runs. Our young generation never got a larger allocation, but it peaks in occupancy close to the allocated amount and fairly frequently too.\n\nExperiment with specifically sizing the generations instead of just granting different sized heaps (we will need to go larger than 2G for this, though) and look at the impact this has on throughput. May be more interesting on an MRPI run since it has worse behavior.\n\nNote: confirm this by looking at GC logs manually, since I don't totally trust GC Easy", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "15094", "fixedVersions": [], "id": "15094", "issueType": "Task", "key": "SERVER-2105", "labels": [], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2019-09-25T17:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tune generation sizes", "timeSpent": "PT0S", "updated": "2019-09-25T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It seems that the {{CMSInitiatingOccupancyFraction}} setting is only used to determine when to start the _first_ old gen collection. After that the JVM uses heuristics to determine when it should kick off a full GC. If we want it to always use the value we set, we will also have to set {{UseCMSInitiatingOccupancyOnly}}. In older Java versions, the default was much lower (~68%) than it is in Java 8 (~92%). A [recommended|http://blog.sokolenko.me/2014/11/javavm-options-production.html] starting point in Java 8 is 70%, though [some|https://blog.codecentric.de/en/2013/10/useful-jvm-flags-part-7-cms-collector/] caution against trying to control this at all.", "created": "2018-02-01T15:50:00.000000"}], "components": [], "created": "2018-01-31T17:09:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7cebdcd8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjjb3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_88307695_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2501349763"}], "description": "A 2G MRPI run had \"Concurrent mode failures\" in the GC logs which indicates not enough space in the old generation to continue with GC. One way to tune that is by increasing the space in the old generation, but we can also lower the CMSInitiatingOccupancyFraction setting, to get GCs to occur earlier and give them time to finish before the old generation fill up. Try a few different values to see how behavior changes. For example, weblogic docs recommend setting the value to 60 (https://docs.oracle.com/cd/E12529_01/wlss31/configwlss/jvmgc.html)", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "17117", "fixedVersions": [], "id": "17117", "issueType": "Task", "key": "SERVER-2104", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2018-03-02T16:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Experiment with tuning CMSInitiatingOccupancyFraction", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-01-31T17:00:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39dde42b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjjan:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_81796415_*|*_1_*:*_1_*:*_88830848_*|*_10007_*:*_1_*:*_70957555_*|*_3_*:*_2_*:*_360581124_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_3689439964"}], "description": "We want to test with MRPI set for all non-long-lived runs, since shorter runs without it are relatively normal. But it's not currently easy to set.\n\nFind a way to expose this as a parameter on at least some 2hr job. It would be nice to be able to configure the number of requests for experimentation purposes.\n\nWe should also expose configuration of max-instances, so we can vary how many JRuby instances are allowed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16735", "fixedVersions": ["None"], "id": "16735", "issueType": "Task", "key": "SERVER-2103", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2018-03-22T10:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make MRPI and max-instances easier to set for Gatling runs", "timeSpent": "PT0S", "updated": "2018-03-22T10:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Long-running issues seem to disappear when you increase ReservedCodeCacheSize", "created": "2018-03-05T16:15:00.000000"}], "components": [], "created": "2018-01-31T16:54:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24c99d09"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjjbb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_89186355_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2759634119"}], "description": "We've seen timeouts and spikes in response times occur in long-running instances. (6-11 hours for a run with 2G heap, longer for larger heaps) We don't know what's causing this. We should attach a Yourkit agent to a long run and take memory snapshot after issues start occurring so that we can inspect the app's state in more detail.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15093", "fixedVersions": [], "id": "15093", "issueType": "Task", "key": "SERVER-2102", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Fixed", "resolutionDate": "2018-03-05T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Obtain memory snapshot of long-running server", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-01-31T16:47:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72e3c907"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1313"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjom7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_16508225855_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11399474223"}], "description": "Right now, powerful tools like YourKit are much less useful than they could be with Ruby code than our Clojure/Java code, because we see JRuby objects that we can't easily correlate to our Ruby code. This makes figuring out performance issues much harder.\n\nIf the reify classes flag for JRuby worked, this might become easier. One option is to try reaching out to the JRuby team to see what we can do to get that fixed.\n\nSee this PR for what is believed to be the latest effort in this area: See https://github.com/jruby/jruby/pull/4648", "epicLinkSummary": "Improved JRuby Debugging UX", "estimate": "PT0S", "externalId": "14763", "fixedVersions": [], "id": "14763", "issueType": "Task", "key": "SERVER-2101", "labels": [], "originalEstimate": "PT0S", "parent": "14734", "parentSummary": "Improved JRuby Debugging UX", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Fix", "resolutionDate": "2018-12-20T16:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve YourKit output for JRuby", "timeSpent": "PT0S", "updated": "2018-12-20T16:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm trying to figure out if it is feasible to use lein's {{bump-version}} function standalone on a string, to preserver the same semver behavior as the {{lein change version}} command, but on the values of standalone variables.", "created": "2018-03-30T15:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It would be good to follow this up by setting up a whole release pipeline that also builds packages and promotes the tag.", "created": "2018-04-19T14:30:00.000000"}], "components": [], "created": "2018-01-31T14:34:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We have a job to update versions and tag puppetserver that mirrors other clojure libraries."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e6b193d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjjbj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1382715481_*|*_1_*:*_1_*:*_97685135_*|*_10007_*:*_1_*:*_94273274_*|*_3_*:*_1_*:*_353225166_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_4807478618"}], "description": "Most of the other Clojure projects have a release job that updates the version in project.clj to the release version, tags the repo, then updates the version again to the next snapshot version. The [release script|https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/release-clj.sh] we use in that job does not handle the {{ps-version}} variable we use in puppetserver's project.clj. However, we have [another script|https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/clj-updatedeps.sh] that does correctly handle these vars. The two can probably be combined (probably into a new script) that does what we need to update https://github.com/puppetlabs/puppetserver/blob/5.1.x/project.clj#L1. Having this job would avoid three manual steps, including two PRs that need review, when releasing puppetserver.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "17116", "fixedVersions": ["None"], "id": "17116", "issueType": "Task", "key": "SERVER-2100", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-04-19T14:30:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a release job for puppetserver", "timeSpent": "PT0S", "updated": "2018-04-19T14:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-01-31T12:25:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The puppetserver lein voom job kicks off the pe-pse pipeline to make a seamless promotion."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d22b6dc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl19z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_429979690_*|*_1_*:*_1_*:*_16158742_*|*_10007_*:*_1_*:*_110744499_*|*_3_*:*_1_*:*_61734052_*|*_5_*:*_1_*:*_85255723540_*|*_6_*:*_1_*:*_0"}], "description": "When I originally wrote the auto-promotion jobs for puppetserver, I didn't know how to trigger an enterprise-jenkins job directly from platform-jenkins. But this is definitely possible with the right token set up, so we should connect the puppetserver lein voom job to the kickoff job for the pe-pse pipeline, to allow promotion to continue immediately rather than waiting for a run a periodic job like it does now. (Note: we can't rely on the mergely job, because it is configured to ignore commits from Jenkins, to avoid infinite looping of the pipeline.)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15091", "fixedVersions": [], "id": "15091", "issueType": "Task", "key": "SERVER-2099", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-02-07T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver promotion should trigger pe-pse pipeline directly", "timeSpent": "PT0S", "updated": "2020-10-21T11:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Q: Where does the json gem currently get pulled in for puppetserver?\nA: it ships with it.", "created": "2018-02-27T11:43:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "MultiJson seems to do exactly what we need. [JrJackson|https://github.com/guyboertje/jrjackson] is the backend we'll need to use on JRuby to take advantage of the better Jackson performance, and playing around in puppetserver's irb repl I've determined that MultiJson correctly prefers it over the json gem that ships with JRuby.\n\nIf you install JrJackson outside of a JRuby environment (e.g. using puppet-agent's gem command), MultiJson will still try to load it (it attempts to load libraries naively based on speed), but JrJackson will fail to load with an error about only working in JRuby. This shouldn't cause a problem, because puppetserver's gems are installed in a different location from the agent gems.\n\nNow I need to update Puppet to use MultiJson where needed, see PUP-8501.", "created": "2018-02-27T17:38:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], when you have a chance, could you please add release notes (or indicate they are not needed)? Thanks!", "created": "2018-03-14T18:56:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We ended up not shipping the JrJackson gem in puppetserver for the 5.5.0 release, due to some issues with the parsing of some numbers, see SERVER-2150. When that is resolved, we need to add the gem back to take advantage of the new MultiJson machinery, which WILL be shipping in Platform 5.5.0.", "created": "2018-03-16T10:20:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We ended up not shipping JrJackson again because of SERVER-2188", "created": "2018-04-17T11:10:00.000000"}], "components": [], "created": "2018-01-30T11:14:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43bb8fd0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2044"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1cv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now includes the JrJackson gem, a JRuby wrapper over Java's Jackson JSON parser. In combination with the update to use MultiJson in Puppet, Puppet Server will now use the much faster Jackson backend for manipulation JSON."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_3_*:*_404283115_*|*_1_*:*_1_*:*_196004199_*|*_10007_*:*_2_*:*_368838136_*|*_3_*:*_3_*:*_155255597_*|*_5_*:*_1_*:*_1731769268_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_3_*:*_1746693795_*|*_10006_*:*_1_*:*_2223243530"}], "description": "We seem to be using the java implementation from the json gem. In quick tests this seems to take about 3x as long as jackson to serialize the same catalog. We could use multi_json to make sure the right backend gets used depending on what's available.", "epicLinkSummary": "JRuby performance improvements", "estimate": "PT0S", "externalId": "15136", "fixedVersions": ["SERVER 5.3.1"], "id": "15136", "issueType": "Improvement", "key": "SERVER-2098", "labels": [], "originalEstimate": "PT0S", "parent": "14707", "parentSummary": "JRuby performance improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Fixed", "resolutionDate": "2018-04-19T12:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make ruby use jackson when running in puppetserver", "timeSpent": "PT0S", "updated": "2018-04-19T12:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The Hubspot scripts blew up running against our GC logs and it hasn't been updated for years so I'm going to call it a dead end. I've looked into two other scripts that either were broken or didn't export data in a useful way for us. I'm going to write a small script to parse these logs while teaching myself more about GC.", "created": "2018-02-08T17:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm hoping to produce a document about how to tune Garbage Collection in general and\u00a0a set of hypothesis of how Puppet Server should react to tuning various knobs. To then suggest we run gatling to test those assumptions, and have scripts that can parse GC logs to confirm or deny those assumptions.", "created": "2018-02-08T17:27:00.000000"}], "components": [], "created": "2018-01-29T16:01:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67739e81"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjm27:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_265112056_*|*_3_*:*_1_*:*_1205152819_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1296250870"}], "description": "We should investigate using [https://github.com/HubSpot/gc_log_visualizer] against GC logs for our gatling tests and/or modify to show events we find valuable.\n\nIf we can't get statistics out of these scripts that we can then compare to the metrics we pull from puppet server and the gatling data then we should investigate writing our own to pull the raw data.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16734", "fixedVersions": [], "id": "16734", "issueType": "Task", "key": "SERVER-2096", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2018-03-02T16:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pull metrics out of GC Logs", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68] we are working on moving to 9k, but making it the default is not yet possible for performance reasons.", "created": "2018-01-29T16:21:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "Hey [~accountid:63d40628f6e1b543161789a7], I totally forgot to respond here. I enabled jruby9k in January on our production cluster with >3000 nodes. We don't experience any performance issue. If I can somehow help debugging issues let me know. I'm happy to help out.", "created": "2018-03-12T15:45:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68] That's great to hear. We are working on some perf improvements with JRuby 9k, it'd be great to get your feedback on that. /cc [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9], [~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f], [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "created": "2018-03-12T15:56:00.000000"}], "components": [], "created": "2018-01-29T03:03:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d754f9b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2155"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjkgn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server 6.0 now uses JRuby 9k. This implements version 2.3 of the ruby language."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77599169_*|*_1_*:*_1_*:*_4431746157_*|*_10007_*:*_1_*:*_17801251_*|*_3_*:*_1_*:*_6713_*|*_6_*:*_1_*:*_0"}], "description": "Hi,\nPuppetserver 5.1.4 ships jruby 1.7.27 as default, jruby 9k is optional. The jruby docs are a bit tricky, but if I understand https://github.com/jruby/jruby/issues/4112 correctly, jruby 1.7.27 is EOL. If that is true, the default version in puppetserver should be bumped to a supported version.", "epicLinkSummary": "Remove JRuby 1.7", "estimate": "PT0S", "externalId": "16324", "fixedVersions": ["SERVER 6.0.0"], "id": "16324", "issueType": "Task", "key": "SERVER-2095", "labels": [], "originalEstimate": "PT0S", "parent": "16520", "parentSummary": "Remove JRuby 1.7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "resolution": "Fixed", "resolutionDate": "2018-03-22T13:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump default jruby from 1.7.27 to 9k", "timeSpent": "PT0S", "updated": "2018-04-17T09:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The script in question is here: https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/jenkins-jobs/common/scripts/background/curl-server-metrics-loop.sh\n\nIt is started here: https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/jenkins-jobs/common/scripts/job-steps/090_start_bg_scripts.sh\n\nIt is stopped here: https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/jenkins-jobs/common/scripts/job-steps/105_stop_bg_scripts.sh", "created": "2018-01-26T12:53:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "If we are going to be razoring hosts always before kicking them off this doesn't need to happen.", "created": "2018-02-08T17:47:00.000000"}], "components": [], "created": "2018-01-26T12:49:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23ccfd93"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjjwv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1140940118_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_18537_*|*_10005_*:*_1_*:*_102044"}], "description": "Gatling jenkins jobs start up a script that collects status output from puppetserver every 5 minutes. When the job is done, these scripts are stopped. When the job is aborted, there isn't a guarantee that the script will be stopped, in which case more than one script could be running at any time, which in addition to collecting info more often than expected, has the potential to corrupt the file that is being written to if more than one script writes to the file at once.\n\nIt looks like we should be able to use a plugin such as https://wiki.jenkins.io/display/JENKINS/Post+build+task to run the stop_bg_scripts task in the event of an aborted or failed run.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17374", "fixedVersions": [], "id": "17374", "issueType": "Task", "key": "SERVER-2094", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Won't Do", "resolutionDate": "2018-02-08T17:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ensure curl-metrics scripts are stopped even on aborted jobs", "timeSpent": "PT0S", "updated": "2018-03-01T17:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Packages are here: http://builds.delivery.puppetlabs.net/puppetserver/2.8.1/?C=M&O=D", "created": "2018-01-30T11:28:00.000000"}], "components": [], "created": "2018-01-26T11:50:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a6b0640"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjikf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_152669_*|*_1_*:*_1_*:*_257618910_*|*_3_*:*_1_*:*_86514165_*|*_5_*:*_1_*:*_85964138363_*|*_6_*:*_1_*:*_0"}], "description": "Some updates were recently made to Puppetserver 2.6.x for promotion into the PE LTS stream. These changes should be merged up to the head of the 2.x branch and a 2.8.1 release should be tagged, to ship to the open source community.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17115", "fixedVersions": [], "id": "17115", "issueType": "Task", "key": "SERVER-2093", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-01-30T11:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build packages for Server 2.8.1", "timeSpent": "PT0S", "updated": "2020-10-21T11:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I can see gc.log as a build artifact from recent runs so i'm good here.", "created": "2018-02-06T10:23:00.000000"}], "components": [], "created": "2018-01-25T17:35:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60873837"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjj6n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_82816854_*|*_10007_*:*_1_*:*_490833093_*|*_3_*:*_1_*:*_437223450_*|*_5_*:*_1_*:*_85364369354_*|*_6_*:*_1_*:*_0"}], "description": "Currently enabling gc logging is a manual process, as is collecting the GC log after the run. We should add a checkbox to all jobs to decide whether to record GC or not (and default to on) and also automatically collect the gc log after the fact (ideally gzipped for easy submission to http://gceasy.io/.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15907", "fixedVersions": [], "id": "15907", "issueType": "Task", "key": "SERVER-2091", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Begin collecting gc logs for gatling runs by default", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We haven't seen this in a while, can reopen if it reappears.", "created": "2018-02-08T17:45:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Saw this twice last night in hoyt and irving of pe-puppet-server extensions acceptance tests.", "created": "2018-03-01T10:47:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I saw this in journalctl on a failed run:\n{code}\n[root@drjik1rwn7df0ce ~]# journalctl -u httpd.service\n-- Logs begin at Thu 2018-03-01 20:15:36 UTC, end at Thu 2018-03-01 21:40:48 UTC. --\nMar 01 21:08:50 drjik1rwn7df0ce systemd[1]: Starting The Apache HTTP Server...\nMar 01 21:08:50 drjik1rwn7df0ce httpd[9648]: no listening sockets available, shutting down\nMar 01 21:08:50 drjik1rwn7df0ce httpd[9648]: AH00015: Unable to open logs\nMar 01 21:08:50 drjik1rwn7df0ce systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE\nMar 01 21:08:50 drjik1rwn7df0ce kill[9649]: kill: cannot find process \"\"\nMar 01 21:08:50 drjik1rwn7df0ce systemd[1]: httpd.service: control process exited, code=exited status=1\nMar 01 21:08:50 drjik1rwn7df0ce systemd[1]: Failed to start The Apache HTTP Server.\nMar 01 21:08:50 drjik1rwn7df0ce systemd[1]: Unit httpd.service entered failed state.\nMar 01 21:08:50 drjik1rwn7df0ce systemd[1]: httpd.service failed.\nMar 01 21:10:21 drjik1rwn7df0ce systemd[1]: Starting The Apache HTTP Server...\nMar 01 21:10:21 drjik1rwn7df0ce httpd[11275]: [Thu Mar 01 21:10:21.652664 2018] [so:warn] [pid 11275] AH01574: module wsgi_module is already loaded, skipping\nMar 01 21:10:21 drjik1rwn7df0ce systemd[1]: Started The Apache HTTP Server.\nMar 01 21:10:22 drjik1rwn7df0ce httpd[11275]: [Thu Mar  1 21:10:22 GMT 2018]  building index...\nMar 01 21:10:22 drjik1rwn7df0ce httpd[11275]: [Thu Mar  1 21:10:22 GMT 2018]  complete, switching to new index file\nMar 01 21:10:32 drjik1rwn7df0ce systemd[1]: Stopping The Apache HTTP Server...\nMar 01 21:10:33 drjik1rwn7df0ce systemd[1]: Starting The Apache HTTP Server...\nMar 01 21:10:33 drjik1rwn7df0ce httpd[11405]: [Thu Mar 01 21:10:33.279396 2018] [so:warn] [pid 11405] AH01574: module wsgi_module is already loaded, skipping\nMar 01 21:10:33 drjik1rwn7df0ce systemd[1]: Started The Apache HTTP Server.\nMar 01 21:10:38 drjik1rwn7df0ce systemd[1]: Stopping The Apache HTTP Server...\nMar 01 21:10:39 drjik1rwn7df0ce systemd[1]: Starting The Apache HTTP Server...\nMar 01 21:10:39 drjik1rwn7df0ce httpd[11603]: [Thu Mar 01 21:10:39.238194 2018] [so:warn] [pid 11603] AH01574: module wsgi_module is already loaded, skipping\nMar 01 21:10:39 drjik1rwn7df0ce httpd[11603]: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/graphite_ports.conf:8\nMar 01 21:10:39 drjik1rwn7df0ce httpd[11603]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:50000\nMar 01 21:10:39 drjik1rwn7df0ce httpd[11603]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:50000\nMar 01 21:10:39 drjik1rwn7df0ce httpd[11603]: no listening sockets available, shutting down\nMar 01 21:10:39 drjik1rwn7df0ce httpd[11603]: AH00015: Unable to open logs\nMar 01 21:10:39 drjik1rwn7df0ce systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE\nMar 01 21:10:39 drjik1rwn7df0ce kill[11605]: kill: cannot find process \"\"\nMar 01 21:10:39 drjik1rwn7df0ce systemd[1]: httpd.service: control process exited, code=exited status=1\nMar 01 21:10:39 drjik1rwn7df0ce systemd[1]: Failed to start The Apache HTTP Server.\nMar 01 21:10:39 drjik1rwn7df0ce systemd[1]: Unit httpd.service entered failed state.\nMar 01 21:10:39 drjik1rwn7df0ce systemd[1]: httpd.service failed.\nMar 01 21:40:48 drjik1rwn7df0ce systemd[1]: Starting The Apache HTTP Server...\n{code}\n\nI don't know how that can happen offhand unless there's a weird race in the module or service script itself. I think running a puppet ensure running before hand might be fine.", "created": "2018-03-01T15:06:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I have a PR that I believe will make the tests more resilient by ensuring httpd is running and waiting for graphite to come up before attempting to gather metrics. But I'm not sure the test is worth keeping around for the pain it has caused.", "created": "2018-03-01T16:15:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We decided to remove this test", "created": "2018-03-08T12:29:00.000000"}], "components": [], "created": "2018-01-24T17:09:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68e33739"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjil3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1298147749_*|*_10007_*:*_1_*:*_79656213_*|*_3_*:*_1_*:*_3831267_*|*_10009_*:*_1_*:*_511663514_*|*_4_*:*_1_*:*_15839351_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_1789284988"}], "description": "There's an occasional failure that has occurred in the puppetserver tests when it tries to run the collect_default_metrics.rb test (https://github.com/puppetlabs/puppetserver/blob/5.1.x/acceptance/suites/tests/metrics/collect_default_metrics.rb#L52). The error in Beaker complains about not being able to make a request to the master at port 50000. Looking further at the logs, you see that it's not able to bind to that socket, and even further up Apache fails to start.\n\nA usual suspect for why Apache can't start on RHEL is that selinux is on. But this test passes sometimes. There's likely a race condition that is turning selinux on/off (grafanadash turns it off temporarily, but that happens after Apache is installed), but it could be another issue.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17373", "fixedVersions": [], "id": "17373", "issueType": "Task", "key": "SERVER-2090", "labels": ["transient"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Fixed", "resolutionDate": "2018-03-08T12:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Apache/Grafanadash Puppet Server acceptance tests transient", "timeSpent": "PT0S", "updated": "2018-03-08T12:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "job has been run. need to add the data into the spreadsheet still.", "created": "2018-01-26T16:31:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Added data from these runs here to a new sheet: https://docs.google.com/spreadsheets/d/1aMwzxXctXX8SZpdFg7kj6ole8c_xEcd03MtvS-rhbj0/edit#gid=1465062741\n\nFrom these 1.7 is the clear winner, even using CMS. 1.7 with CMS is pretty close to the 9k run with CMS and max-requests-per-instance of 50k, at least in the 90th to 99th percentiles.", "created": "2018-01-31T14:35:00.000000"}], "components": [], "created": "2018-01-24T16:52:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2981217a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjik7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4264112_*|*_3_*:*_1_*:*_592504899_*|*_5_*:*_1_*:*_85867439865_*|*_6_*:*_1_*:*_0"}], "description": "Now that we have data for some 2 hour simulations we need to collect data for longer runs, but 1 week seems like too much to start with. The week long simulations have started generating timeouts as of 11 hours with the CMS garbage collector, so having a test run that is 12 hours and 24 hours long will be desirable for fast-ish turnarounds.\n\nWe should run the 12 hour simulation with the 3 available GCs on 9k with jit and also on 1.7 for a baseline.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15904", "fixedVersions": [], "id": "15904", "issueType": "Task", "key": "SERVER-2089", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create job and collect results for 12/24 hour long gatling runs for 1.7/9k", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "job has been run. need to add the data into the spreadsheet still.", "created": "2018-01-26T16:31:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "These have been added to the spreadsheet here: https://docs.google.com/spreadsheets/d/1aMwzxXctXX8SZpdFg7kj6ole8c_xEcd03MtvS-rhbj0/edit#gid=1433210108\n\nBased on those runs, 9k + cms + jit performs better than stock 1.7 up to and including the 99th percentile and then falls behind for the max.", "created": "2018-01-30T15:03:00.000000"}], "components": [], "created": "2018-01-24T16:40:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4dcbf003"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjicv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4993356_*|*_3_*:*_1_*:*_507621926_*|*_5_*:*_1_*:*_85952342367_*|*_6_*:*_1_*:*_0"}], "description": "We now have data for how various heaps perform with jruby 9k/jit, but we don't have any jruby 1.7 data to compare it against. We should have such a job to run and do it.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16511", "fixedVersions": [], "id": "16511", "issueType": "Task", "key": "SERVER-2088", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create job and collect results for various heaps on jruby 1.7", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-01-24T16:31:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ad391d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjibr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1300325610_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_34531638978"}], "description": "Right now there are separate pipelines for pe-puppetserver and pe-puppet-server-extensions, and jruby utils are in a separate repo, and there's some periodic run behavior in addition to mergely, and given they all end up in the same place, there might be opportunities to simplify our pipelines soon. This ticket is to amass information about the behavior and see if we can cut down a bit on what we're running.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "14762", "fixedVersions": [], "id": "14762", "issueType": "Task", "key": "SERVER-2087", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2019-03-15T10:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "[SPIKE] Try to simplify pe-puppetserver release pipelines", "timeSpent": "PT0S", "updated": "2019-03-15T10:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "PRs are open for this work. The winston PR (and I assume this ticket) should remain open until after the retro so we can capture any changes decided at the retro here and in that PR.", "created": "2018-01-31T16:34:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] it looks like the PR that's specific to this ticket has been merged. Perhaps can can resolve this issues and track any additional changes needed for Winston in\u00a0PUP-8230.\u00a0", "created": "2018-02-08T16:09:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Weird, JIRA isn't showing that this PR is still open [https://github.com/puppetlabs/winston/pull/112]\u00a0.\n\nThat PR is\u00a0tracking the 5th bullet in the description, I know that we said D + 1 after the release but I assume that it's valuable to wait until after the retro?", "created": "2018-02-08T17:00:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] I suspect maybe the JIRA integration isn't enabled for the winston repo. Yeah, we can wait until after the retro, that's fine. Thanks!", "created": "2018-02-09T07:44:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "After the retro we decided not to make any further changes to winston. Closing this out as done.\n\n\u00a0", "created": "2018-02-12T10:25:00.000000"}], "components": [], "created": "2018-01-24T11:48:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8205db7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8385"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjhpb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2140_*|*_10007_*:*_1_*:*_1014706841_*|*_3_*:*_1_*:*_7266491_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_614635735"}], "description": "(Initial planned release date: 2018-01-31)\n\n# Update version number in source to point to next snapshot.\n# Merge tag and version number twizzling up (from release branch to z series dev branch to master, as applicable).\n# Delete release branch if created.\n# Remove Jenkins pipelines for release branch if created.\n# Update Winston and any relevant Confluence pages with any changes needed in the release process.\n", "epicLinkSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "estimate": "PT0S", "externalId": "15972", "fixedVersions": [], "id": "15972", "issueType": "Task", "key": "SERVER-2086", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25249", "parentSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2018-02-12T10:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Destroy release branches, pipelines, and update winston (Puppet Server 5.1.5)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Note that the (new) intent was for this to be done once for all components together (not just for Puppet Server). Any smoke testing required for Puppet Server specifically should be automated and part of gathering a tagged release candidate (e.g., SERVER-2084).", "created": "2018-01-26T14:44:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Closing per [~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578]'s comment that this will be done at the Platform level by others.", "created": "2018-01-30T15:08:00.000000"}], "components": [], "created": "2018-01-24T11:48:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@329dad0e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8385"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjhp3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2215_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_530425032"}], "description": "(Initial planned release date: 2018-01-31)\n\n# Walk through smoke testing Puppet Server, installing it from packages as a user would.\n#* See https://confluence.puppetlabs.com/display/systemsEngineering/Test+platform+5+package+artifacts+template\n#  and https://confluence.puppetlabs.com/display/systemsEngineering/Test+platform+5+repository+template\n   for examples.\n", "epicLinkSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "estimate": "PT0S", "externalId": "15759", "fixedVersions": [], "id": "15759", "issueType": "Task", "key": "SERVER-2085", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25249", "parentSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Won't Fix", "resolutionDate": "2018-01-30T15:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Manually smoke test all artifacts (Puppet Server 5.1.5)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Packages are available and we're promoting into PE", "created": "2018-01-30T12:49:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Final tag promoted into Hoyt at https://github.com/puppetlabs/enterprise-dist/commit/95a88407a482c1db07892d1b883aa30f2df9f60c", "created": "2018-01-30T15:07:00.000000"}], "components": [], "created": "2018-01-24T11:47:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14e6e78e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8385"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjhov:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2159_*|*_10007_*:*_1_*:*_8309385_*|*_3_*:*_1_*:*_5750874_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_516293607"}], "description": "(Initial planned release date: 2018-01-31)\n\n# Ensure the candidate SHA has passed all applicable testing\n#* The candidate SHA that the release branch was branched from should pass CI,\n   be promoted into PE if applicable, and if so, pass PE's CI. If there are\n   failures resolve them or escalate to someone who can.\n# Bump and Tag the candidate SHA once passing\n#* This is automated for internal (PE) releases, and may be automated soon for\n   open source. Locally from a checkout of the release branch update the version\n   number in the project.clj (non-SNAPSHOT version). Commit this change and\n   create a signed tag with the version number project.clj was just bumped to.\n# Ensure tagged release version is built, tested and artifacts exist at\n  builds.delivery.puppetlabs.net\n#* This may entail manually promoting into PE again.\n", "epicLinkSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "estimate": "PT0S", "externalId": "15499", "fixedVersions": [], "id": "15499", "issueType": "Task", "key": "SERVER-2084", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25249", "parentSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2018-01-30T15:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag and build artifacts (Puppet Server 5.1.5)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "So, I got to this a couple days later than I should have and consequently we needed to do something a little different.\n\nI thought that the contents of 5.1.x had made it into PE Hoyt last week but in fact HEAD of 5.1.x had failed CI over the weekend (acceptance testing changes and general instabilities) and the latest green build from last week (which contained everything we wanted to ship in Hoyt) had not been properly promoted into pe-puppetserver.\n\nTo fix the situation we immediately promoted what had passed CI (which again was everything we wanted to ship). We will create a release branch (named 5.1.5-release) off of that SHA (https://github.com/puppetlabs/puppetserver/commit/af27ef57cea17d7800987b9d840ffcf1ed0c9e8c) and tag it once PE has completed its testing.", "created": "2018-01-29T16:54:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Opened a PR to update ci-job-configs here: https://github.com/puppetlabs/ci-job-configs/pull/3983\nReferences the release branch here: https://github.com/puppetlabs/puppetserver/tree/5.1.5-release", "created": "2018-01-29T17:09:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We are doing a release of 2.8.1 shortly after this release, (contains backports and its version of the jackson remediation). The commits for that release will not be merged up to 5.1.5.", "created": "2018-01-29T17:23:00.000000"}], "components": [], "created": "2018-01-24T11:47:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@412201f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8385"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjhon:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2124_*|*_10007_*:*_1_*:*_65000339_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_451327510"}], "description": "(Initial planned release date: 2018-01-31)\n\n# Merge up and/or down as required.\n#* Outstanding changes from z branches should be be merged up to master.\n   Outstanding changes from \"older\" branches should be merged up through\n   the branch to be released (2.x -> 5.1.x if applicable). Any changes\n   that have been resolved in \"newer\" branches but need to be pulled down\n   to the release branch should be cherry-picked (eg backports to an LTS\n   branch).\n# Create release branch as needed.\n#* If there is continuing work landing on the version series branch\n   (5.1.x) while the release prep will be happening then create a\n   release branch (5.1.3-release) so a branch may sit at a good known\n   version (candidate SHA) while all of the remaining validation can be\n   performed (eg promoted into PE and manually tested).\n# Create Jenkins pipeline for release branch/update promotions as needed\n#* Update ci-job-configs so that the branch to be released off of has a\n   Jenkins pipeline and is being promoted into applicable PE streams. This\n   work may not be applicable if no release branch was created, the release\n   will not go into a PE stream, or this work has already been done as part\n   of normal maintenance.\n# Promote release candidate if needed.\n#* Older branches may not have the ability to automatically promote into PE\n   (2.x). If releasing off of one of these branches, create a VOOM build\n   and manually promote it into PE.\n", "epicLinkSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "estimate": "PT0S", "externalId": "15135", "fixedVersions": [], "id": "15135", "issueType": "Task", "key": "SERVER-2083", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25249", "parentSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2018-01-30T11:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge-up, branch, and create pipelines (Puppet Server 5.1.5)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We're looking to promote af27ef57cea17d7800987b9d840ffcf1ed0c9e8c into PE for the Hoyt.z and release that as SERVER 5.1.5.\n\nRunning ticketmatch with that setup I get:\n{code}\nsellout:puppetserver justin$ ruby ../ticketmatch/ticketmatch.rb                   [92/318]\nEnter Git From Rev: 5.1.4            \nEnter Git To Rev: |master| af27ef57cea17d7800987b9d840ffcf1ed0c9e8c\nEnter JIRA project: |PUP| SERVER                     \nEnter JIRA fix version: |SERVER af27ef57cea17d7800987b9d840ffcf1ed0c9e8c| SERVER 5.1.5\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current           \n                                 Dload  Upload   Total   Spent    Left  Speed\n100  5914  100  5805  100   109  15705    294 --:--:-- --:--:-- --:--:-- 15731\n\n...snip...\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 5.1.5)\nDOC-3382\nDOCUMENT-729\nEZ-118\nPUP-8127\nPUP-8249\nRE-8457\nRE-9730\nREVERT fb93d68\nREVERT 8fca73b\nSERVER-1866\nSERVER-1898\nSERVER-2004\nSERVER-2076\n\n----- Unresolved Jira tickets not in git commits -----\nUNRESOLVED ISSUES NOT FOUND IN GIT\nSERVER-1972 Ready for Review\nSERVER-2081 Ready for CI\n\n----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA\n{code}\n\nThe tickets DOC-3382, DOCUMENT-729, EZ-118, PUP-8127, PUP-8249, RE-8457, and RE-9730 are all in other projects that do not line up with the server release version numbers even though they have been released at their own cadence and required small amounts of work to up take into server.\n\nSERVER-1866, SERVER-1898, and SERVER-2004 are tickets for post release work in the 2.x and previous 5.x release and have their release versions set to the version they were cleaning up after.\n\nSERVER-2076 is a blanket ticket for the jackson CVE and is being kept open for the other branches.\n", "created": "2018-01-29T14:55:00.000000"}], "components": [], "created": "2018-01-24T11:47:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b652182"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8385"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjhof:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2188_*|*_3_*:*_1_*:*_7422289_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_440282864"}], "description": "(Initial planned release date: 2018-01-31)\n\n# Use the ticketmatch script at https://github.com/puppetlabs/ticketmatch\n  to reconcile JIRA ticket states with commit messages since the last release.\n  Follow up with any reported problematic areas:\n#* Issues in git but not resolved in JIRA should be confirmed to be WIP and\n   not targeted for the current release.\n#* Issues in JIRA but not in git need to be retargeted for the appropriate\n   release and stakeholders should be notified.\n# Check project.clj and clj-parent for any library updates since the last\n  release (e.g. {{git diff 2.3.2 \u2013 project.clj}})\n# Once the scope of the release as been confirmed and the correct SemVer\n  version known ensure the Versions and Dependencies page in Confluence\n  is up to date https://confluence.puppetlabs.com/display/PM/Platform+Versions+and+Dependencies\n", "epicLinkSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "estimate": "PT0S", "externalId": "14713", "fixedVersions": [], "id": "14713", "issueType": "Task", "key": "SERVER-2082", "labels": ["release"], "originalEstimate": "PT0S", "parent": "25249", "parentSummary": "    Puppet Platform 5.3.4 Release - 2018-01-31\n", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Fixed", "resolutionDate": "2018-01-29T16:09:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits, JIRA tickets, and versions (Puppet Server 5.1.5)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "https://github.com/jenkinsci/s3-plugin/pull/91 has a jenkinsfile example with an s3 ship.", "created": "2018-01-25T17:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Waiting on AWS access from Ops.", "created": "2018-01-29T11:22:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Looks like we can use https://wiki.jenkins.io/display/JENKINS/Export+Parameters+Plugin to dump the params a job ran with.", "created": "2018-02-02T17:01:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I have access to s3 now, need to figure out how to not have the credentials publicly visible. There is some prior art in puppetlabs-modules.", "created": "2018-02-08T17:16:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I have a job that can successfully upload test files to s3. Now a new step needs to be added to the base pipeline for the perf jobs to upload all the SUT artifacts. Additionally, we should look into exporting job params and uploading those too.", "created": "2018-02-22T17:21:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The plugin I was going to use to export job parameters is not compatible with Jenkins Pipeline. I have filed SERVER-2128 to track the effort of writing something to do it manually. In the meantime, I have opened https://github.com/puppetlabs/gatling-puppet-load-test/pull/191 with the upload of the existing files.", "created": "2018-02-23T16:29:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I neglected to add the s3 upload step to the puppetserver-infinite job, https://github.com/puppetlabs/gatling-puppet-load-test/pull/203 is a PR to remedy that.", "created": "2018-03-16T10:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Successful upload! https://s3.console.aws.amazon.com/s3/buckets/puppetserver-perf-data/puppetserver-infinite-2018-03-26-17%253A16%253A48/?region=us-east-1&tab=overview", "created": "2018-03-27T10:12:00.000000"}], "components": [], "created": "2018-01-19T12:19:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60987127"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjidb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_2063128819_*|*_1_*:*_1_*:*_613662159_*|*_10007_*:*_2_*:*_675022382_*|*_3_*:*_2_*:*_2338401601_*|*_5_*:*_1_*:*_81135349932_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_87016251"}], "description": "We want to be able to store Gatling results long-term so that we can aggregate and compare data and not worry about when the Jenkins driver might lose it. We can start by just dumping this somewhere cheap and large, as long as it's reliable.\n\nWe want to store:\n- Gatling logs\n- Gatling reports\n- metrics artifact if present\n- identifying information about the run (job name, parameters, server config settings, date,", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17372", "fixedVersions": ["None"], "id": "17372", "issueType": "Task", "key": "SERVER-2080", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2018-03-27T10:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reliably store Gatling results", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We can't bump puppetserver to Java 9 until JRuby 9k properly supports it. Once that happens we should revisit this.", "created": "2018-01-25T17:15:00.000000"}], "components": [], "created": "2018-01-18T17:37:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Tickets have been filed with the work needed to support Java 9 in Puppetserver"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a551f83"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmrr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_36462_*|*_3_*:*_1_*:*_603459304_*|*_6_*:*_1_*:*_0"}], "description": "We need to inventory what is broken in Puppetserver when running with Java 9, and file tickets around what fixes are needed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15498", "fixedVersions": [], "id": "15498", "issueType": "Task", "key": "SERVER-2079", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-01-25T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "(SPIKE) Investigate running Puppet Server under Java 9", "timeSpent": "PT0S", "updated": "2018-04-02T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Once the PR here https://github.com/puppetlabs/puppetlabs-puppetserver_perf_driver/pull/21 is merged we'll need a changelog update and tag, followed by a puppetlabs-modules update to point their Puppetfile at the new tag for the module.", "created": "2018-01-18T16:31:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Conflicts resolved. all good here. I'm going to circle back and make sure some of the process i went through to test this are documented.", "created": "2018-01-23T15:17:00.000000"}], "components": [], "created": "2018-01-18T16:11:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3396fe50"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjahz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_685707_*|*_10007_*:*_1_*:*_428101030_*|*_5_*:*_1_*:*_86556298232_*|*_6_*:*_1_*:*_0"}], "description": "Recent versions of the puppet-jenkins module in use have brought out conflicts against the puppetserver_perf_driver module in use for gatling runs. We'll need to update our module to not duplicate resources present in the upstream jenkins module.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16323", "fixedVersions": [], "id": "16323", "issueType": "Task", "key": "SERVER-2078", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver_perf_driver module to remove conflicts with puppet-jenkins", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "On 4G heap, the default collector has timeouts, G1GC has timeouts, and CMS seems to perform fine. I'll post some links to numbers and/or add the raw data to the spreadsheet.", "created": "2018-01-23T15:05:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Okay, here is some high level data from the 3 runs (Stop the world (default GC in java 8), Concurrent mark and sweep, and G1GC).\n\n\n||GC Type||95% catalog||99% catalog||max catalog||\\# of requests < 800 ms||\\# of KOs||\n|CMS|3436|6249|16858|621230|0|\n|STW|15224|19221|25134|98529|637|\n|G1|19880|28183|36425|6671|990|\n", "created": "2018-01-23T16:33:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Probably worth trying out both CMS and G1 on 8 and 12 G heaps to make sure.", "created": "2018-01-23T16:41:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I've linked in a sheet which shows how 9k jit performs with 4, 8, and 12G heaps and various garbage collectors. It seems as though CMS should probably be the default GC for our use, as it performs the best on any heap size. I'm going to open up some follow up tickets for longer (24 hour long) runs on various GCs to see if these results differ in those cases.", "created": "2018-01-24T15:29:00.000000"}], "components": [], "created": "2018-01-18T16:09:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c8998a6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjahr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1284918_*|*_3_*:*_1_*:*_514680412_*|*_5_*:*_1_*:*_86469207154_*|*_6_*:*_1_*:*_0"}], "description": "While investigating larger heaps it seems that the default garbage collector is not up to the task and may be responsible for some of the slowness/failures in jit runs of 9k with heaps of larger than 2G. We should try both the CMS and G1 garbage collectors with heaps of those sizes to see if they perform better.\n\nThis may require updating gatling jenkins jobs to accept arbitrary java args to override the GC being used.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15968", "fixedVersions": [], "id": "15968", "issueType": "Task", "key": "SERVER-2077", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Try out different garbage collectors with jruby9k and jit", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "6361cbfc59c794184bcbd33a", "body": "Once https://github.com/puppetlabs/clj-parent/pull/90 is merged, it should work to just update clj-parent rather than adding a specific dependency on jackson-databind.", "created": "2018-01-18T12:06:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "We may need to branch clj-parent to handle updating older releases like this.", "created": "2018-01-18T13:55:00.000000"}, {"author": "6361cbfc59c794184bcbd33a", "body": "For the older versions of orch, I just added the explicit override in pe-orchestration-services and then replaced it with a clj-parent bump in the latest branch. Since this vulnerability doesn't seem to actually _affect_ us, I'm not so concerned about ensuring all the component projects get updated in the older branches. YMMV.", "created": "2018-01-18T14:58:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "It still seems like having branches for clj-parent is wise. This may not be a big deal, but others might/this might result in accidental updates to older versions of PE.", "created": "2018-01-18T17:42:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "Hello! Just wanted to check on the state of this and whether or not it's likely to make it in to the upcoming Z releases", "created": "2018-01-24T12:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We should be able to make them, I'll see if I can get this done today.", "created": "2018-01-24T12:09:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "great, thank you [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]!", "created": "2018-01-24T12:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Change of plans, we're going to just bump clj-parent to latest (1.7.0) in both 5.1.x/Hoyt and master/irving. There are no changes that warrant branching right now.", "created": "2018-01-24T13:49:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The updates needed for the 5.1.5 release have all landed, the remaining PRs are for other branches.", "created": "2018-01-24T17:54:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] is that still true? Should additional fix versions be added to this ticket (that correspond to the other branches)?", "created": "2018-01-25T08:59:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The other PRs are all currently for pe-puppetserver, so the only other fix versions would be PE versions. If we end up updating this for a 2.8 release, I'll add that version.", "created": "2018-01-25T09:07:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "5.1.5 acceptance passed at: https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-5.1.x/150/", "created": "2018-01-29T14:45:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Thanks, [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]. Can this be resolved now? /cc [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "created": "2018-01-31T10:12:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It hasn't been merged up to Irving yet", "created": "2018-01-31T10:37:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Merged up at https://github.com/puppetlabs/pe-puppetserver/commit/a4549e68d7d0bbfe97313e9744fb8bfd2c613acc", "created": "2018-01-31T11:23:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] can this be resolved yet?", "created": "2018-02-05T15:16:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Still waiting on CI for the master/Irving pipelines. They've been blocked behind a puppetdb installation issue, see https://puppet.atlassian.net/browse/PE-23484.", "created": "2018-02-05T15:58:00.000000"}], "components": [], "created": "2018-01-18T11:22:00.000000", "creator": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@519a0957"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjglj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We have updated our dependency version to avoid a CVE in the jackson-databind library. We now pin to a version not affected by the vulnerability."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1141200694_*|*_1_*:*_1_*:*_521149218_*|*_10007_*:*_1_*:*_74740747_*|*_3_*:*_1_*:*_8707546_*|*_5_*:*_1_*:*_660611464_*|*_6_*:*_1_*:*_0"}], "description": "For puppetserver versions included in 2016.4.x and 2017.3.x, we need to add a dependency on jackson-databind that pins to version 2.8.10 or 2.9.1.\n\nFor Davis, we will update the version in pe-puppetserver (to avoid needing another FOSS release of 2.6.x). For Hoyt, we will need to branch clj-parent and update that branch in both Puppetserver and pe-puppetserver. For master, we can just update to the newest clj-parent in both places.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15965", "fixedVersions": ["SERVER 5.1.5", "SERVER 5.2.0"], "id": "15965", "issueType": "Task", "key": "SERVER-2076", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "resolution": "Fixed", "resolutionDate": "2018-02-15T07:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add a puppetserver dependency on jackson-databind to pin to a non-vulnerable version", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2018-01-16T16:22:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f2476de"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1xz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_263314914_*|*_1_*:*_1_*:*_1385961680_*|*_10007_*:*_1_*:*_580824823_*|*_3_*:*_2_*:*_367919248_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_2166412645_*|*_10005_*:*_1_*:*_21135370693"}], "description": "The puppet-agent pipelines recently had a step added that handles mergeups from older branches to newer ones (e.g. 1.10.x -> 5.3.x -> master) automatically when a commit passes CI. We should consider adding similar jobs to the puppetserver pipelines.\n\nThe script used for the agent pipelines is [here|https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/vanagon-mergeup.sh] with related helpers [here|https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/vanagon-helpers.sh#L195]. We would have to write our own script, since that one heavily relies on the fact that puppet-agent is a vanagon project, but the ideas should hold for us, including the simple conflict resolution.\n\nThat job fails if the mergeup has conflicts that can't be resolved automatically. We could possibly have it open a PR with the attempted mergeup when this happens.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "17371", "fixedVersions": [], "id": "17371", "issueType": "Improvement", "key": "SERVER-2074", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2018-11-12T10:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add automatic merge-up jobs to the puppetserver pipelines", "timeSpent": "PT0S", "updated": "2018-11-12T10:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Java 9 does not currently work with JRuby 9K, so we can't do this profiling. We can create a new ticket for this work when that support happens.", "created": "2018-01-25T17:23:00.000000"}], "components": [], "created": "2018-01-11T16:32:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5cf38e9b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzir93:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1212608449_*|*_6_*:*_1_*:*_0"}], "description": "Attempt to test Jruby 9k + JIT with Java 9. Try to find a platform that has this built in already to make it easier. It's okay to run this manually instead of writing the automation.\n\nWe want to understand the impact moving to Java 9 would have on the performance problems server is facing with JRuby 9k.\n\nTimebox this: if it's very complicated or clearly not helping performance we can stop trying to test it.", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "15757", "fixedVersions": [], "id": "15757", "issueType": "Task", "key": "SERVER-2073", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2018-01-25T17:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling server tests with Java 9", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The workflow is no longer useful because we have automation updating the SHA beaker uses for puppet-agent every time a new version passes agent CI. So we should rip out that logic.", "created": "2018-01-18T17:33:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Passed CI in https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-5.1.x/152/", "created": "2018-01-29T14:40:00.000000"}], "components": [], "created": "2018-01-08T12:26:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@55dadee0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymau7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_336222851_*|*_1_*:*_1_*:*_1217337322_*|*_10007_*:*_1_*:*_263873440_*|*_3_*:*_1_*:*_5007179_*|*_5_*:*_1_*:*_607054327_*|*_6_*:*_1_*:*_0"}], "description": "There are URLs in the test helpers in Puppet Server that 404 after the puppet agent pipelines have been refactored (https://github.com/puppetlabs/puppetserver/blob/5.1.x/acceptance/lib/helper.rb#L305). This  hasn't caused any problems for us, so the workflow this supports is probably unused. Evaluate whether that workflow is still useful, and accordingly either remove it or fix it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15497", "fixedVersions": ["SERVER 5.1.5"], "id": "15497", "issueType": "Task", "key": "SERVER-2072", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Fixed", "resolutionDate": "2018-01-29T14:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix out-of-date test helpers", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "We got a successful run with http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest-jruby9k-various-heaps/3/. There are significant amounts of timeouts in the SSL handshakes of the /node endpoint requests in each, although it oddly is highest with 4g heap. Response times are also significantly worse than 2g heap.\n\nNext step is to update the job so we can run it with different GCs (CMS and G1) to see if that helps.", "created": "2018-01-11T12:05:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I have a branch up to add java args as a parameter to all of the perf gatling jobs. https://github.com/puppetlabs/puppetlabs-modules/pull/7773 should be merged to update the refresh gplt job so that the branch can be tested.", "created": "2018-01-17T18:31:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Looks like there are more puppet problems than expected. Just got this running puppet on the jenkins perf box:\n\n{code}\n[matthaus@puppetserver-perf-driver55 ~]$ sudo puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration: Jenkins::Plugin[structs] is already declared in file /etc/puppetlabs/code/environments/production/modules/jenkins/manifests/config.pp:9", "created": "2018-01-17T19:06:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I've linked in a sheet which shows how 9k jit performs with 4, 8, and 12G heaps and various garbage collectors. It seems as though CMS should probably be the default GC for our use, as it performs the best on any heap size. I'm going to open up some follow up tickets for longer (24 hour long) runs on various GCs to see if these results differ in those cases.", "created": "2018-01-24T15:28:00.000000"}], "components": [], "created": "2018-01-08T11:00:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4378cec5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzj1f3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_91245608_*|*_3_*:*_1_*:*_1307237194_*|*_5_*:*_1_*:*_86469240114_*|*_6_*:*_1_*:*_0"}], "description": "There's some indication in previous JRuby 9k JIT tests that more heap caused worse performance. We should investigate this, particularly in relation to long running jobs. See Joe's results in the linked ticket for more details.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15376", "fixedVersions": [], "id": "15376", "issueType": "Task", "key": "SERVER-2071", "labels": ["jruby-gatling"], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate Jruby 9k JIT with differing sized heaps", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "In the ticket I just linked, it sounds like the error you are seeing can be caused by agents giving up on waiting for a catalog. When their request is finally served and they are gone, there is nothing to write to, so you get that exception.\nIf all requests are having that exception, I would suspect a leak of some sort in your puppet code. The leak could be a leak of threads or of memory.\n\nThere are a few approaches to identifying the source of the problem. The first and easiest would be if you know when the problem started, to look at a history of the changes to your puppet code and see if there are any changes (or updates to modules or gems) that may not be cleaning up or returning resources.\nIf that approach doesn't work, gathering heap dumps of the process while it is in an error state can be useful. Then a tool like MAT or yourkit could be used to examine the heap dump and see if there are threads free. The heap dump will likely be as large as the configured max heap for puppetserver.\n", "created": "2018-01-05T15:00:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I'm going to close this out for now, as we haven't had any response. If more details come up, feel free to add them here or in SERVER-819.", "created": "2018-02-12T17:32:00.000000"}], "components": [], "created": "2017-12-17T11:04:00.000000", "creator": "557058:d63aaded-833d-4b94-a4a5-4f29c66fe454", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38b64854"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzisg7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4948130466_*|*_6_*:*_1_*:*_0"}], "description": "We have 700 servers and recently puppetserver stopped responce catalog to agents. The first few minutes it works fine, and then throws exceptions for all thread:\n\n{code:java}\n2017-12-16 21:42:19,963 WARN  [qtp1380493193-555] [o.e.j.s.HttpChannel] /puppet/v3/catalog/db03st-ru.star-conflict.com?environment=production\njava.nio.channels.WritePendingException: null\n\tat org.eclipse.jetty.server.HttpConnection$SendCallback.reset(HttpConnection.java:624)\n\tat org.eclipse.jetty.server.HttpConnection$SendCallback.access$100(HttpConnection.java:594)\n\tat org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:479)\n\tat org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:768)\n\tat org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:801)\n\tat org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:142)\n\tat org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:135)\n\tat org.eclipse.jetty.server.HttpOutput.close(HttpOutput.java:166)\n\tat org.eclipse.jetty.server.HttpWriter.close(HttpWriter.java:49)\n\tat java.io.PrintWriter.close(PrintWriter.java:339)\n\tat ring.util.servlet$set_body.invokeStatic(servlet.clj:89)\n\tat ring.util.servlet$set_body.invoke(servlet.clj:84)\n\tat ring.util.servlet$update_servlet_response.invokeStatic(servlet.clj:115)\n\tat ring.util.servlet$update_servlet_response.invoke(servlet.clj:107)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__30506.invoke(jetty9_core.clj:426)\n\tat puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n\tat sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$eval30081$normalize_uri_handler__30086$fn__30087$fn__30088.invoke(normalized_uri_helpers.clj:80)\n\tat puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1129)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1065)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)\n\tat org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)\n\tat org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:159)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:497)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)\n\tat org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)\n\tat java.lang.Thread.run(Thread.java:745)\n\n2017-12-17 00:10:17,030 WARN  [qtp1943211232-575] [o.e.j.s.HttpChannel] /puppet/v3/catalog/pl-01.local.net?environment=production\n{code}\n\nAgent Log:\n{code:java}\npuppet-agent [19302]: Could not retrieve catalog from remote server: end of file reached\n{code}\n\nIt works again only after the restart.The puppetserver are Intel Xeon E312 machines, so they have 32 cores and 20GB of memory, and Intel SSDs. Server does not have high LA.\n\nHow can I identify the source of the problem?", "environment": "puppetserver version: 2.7.2\nCentOS release 6.7\nopenjdk version \"1.8.0_77\"\nJAVA_ARGS=\"-Xms12g -Xmx12g\"\nmax-active-instances: 18", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17113", "fixedVersions": [], "id": "17113", "issueType": "Bug", "key": "SERVER-2069", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d63aaded-833d-4b94-a4a5-4f29c66fe454", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-12T17:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server throwing 'java.nio.channels.WritePendingException: null'", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Found one way these warnings can be triggered in systemd. Still not sure if this is what's happening, or how to reproduce.\n\n* The {{PIDFile}} (from the pe-puppetserver.service file) exists, and has a pid value in it, but the pid value is the wrong pid. During service startup, the pidfile points to a real process, but process is not parented to systemd. It doesn't matter if the running pid is puppetserver (java) or not.\n\nAs a workaround I tried to remove the {{PIDFile=}} property from the unit via an override file. Doing that should obviate any problems or race conditions with writing the PIDFile since systemd would then rely on forking to determine the service main PID, which should work just fine for puppetserver. However, it seems that {{PIDFile=}} can't be overridden", "created": "2017-12-18T10:45:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "It kinda looks like the problem might be related to {{/opt/puppetlabs/server/apps/puppetserver/cli/apps/start}}.\n\nAt the top of that file, a variable called {{$pid}} is set thusly:\n\n{code}\npid=\"$(pgrep -f puppet-server-release.jar)\"\n{code}\n\nHaven't fully traced the logic yet but when puppet agent is running on a machine, it'll periodically call other CLI invocations of puppetserver to do things like check installed gem versions. This means there will occasionally be multiple PIDs returned by that command, or a PID returned when puppetserver isn't actually running, but puppet agent is listing out gems.\n\nThat would explain how a {{puppetserver gem}} command got into the PIDFile.", "created": "2017-12-18T12:44:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Relevant EZbake line (thanks [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]!): https://github.com/puppetlabs/ezbake/blob/master/resources/puppetlabs/lein-ezbake/template/global/ext/cli/start.erb#L4", "created": "2017-12-18T12:47:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "I've opened a PR [here|https://github.com/puppetlabs/ezbake/pull/469].", "created": "2017-12-18T15:07:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Example of problem:\n\nhttp://recordit.co/NRRgl78QRM", "created": "2017-12-18T16:29:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Currently working around this problem using the following Puppet code to patch the files a bit. Because this is EL 7 and systemd, we are confident the process which is actually the service must be owned by PID 1 (systemd).\n\n{code}\nclass pe::master::server2068_patch {\n\n  file_line { '/opt/puppetlabs/server/apps/puppetserver/cli/apps/start pid=':\n    ensure             => present,\n    path               => '/opt/puppetlabs/server/apps/puppetserver/cli/apps/start',\n    line               => 'pid=\"$(pgrep -P 1 -f \"puppet-server-release.jar.* -m puppetlabs.trapperkeeper.main\")\"',\n    match              => 'pid=\"\\$\\(pgrep -f puppet-server-release\\.jar\\)\"',\n    append_on_no_match => false,\n  }\n\n  file_line { '/opt/puppetlabs/server/apps/puppetserver/cli/apps/stop pid=':\n    ensure             => present,\n    path               => '/opt/puppetlabs/server/apps/puppetserver/cli/apps/stop',\n    line               => 'pid=\"$(pgrep -P 1 -f \"puppet-server-release.jar.* -m puppetlabs.trapperkeeper.main\")\"',\n    match              => 'pid=\"\\$\\(pgrep -f puppet-server-release\\.jar\\)\"',\n    append_on_no_match => false,\n  }\n\n  file_line { '/opt/puppetlabs/server/apps/puppetserver/cli/apps/reload pid=':\n    ensure             => present,\n    path               => '/opt/puppetlabs/server/apps/puppetserver/cli/apps/reload',\n    line               => 'pid=\"$(pgrep -P 1 -f \"puppet-server-release.jar.* -m puppetlabs.trapperkeeper.main\")\"',\n    match              => 'pid=\"\\$\\(pgrep -f puppet-server-release\\.jar\\)\"',\n    append_on_no_match => false,\n  }\n\n}\n{code}", "created": "2017-12-19T14:26:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Merged in https://github.com/puppetlabs/ezbake/pull/469 and waiting for a release of ezbake/uptake by server.", "created": "2018-01-04T09:54:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Worth noting: the ezbake PR buffs the existing logic to be a bit more robust, but it still suffers from the same basic problem in that the script is grep'ing the process table as its main method of identifying the service PID. Therefore, even with better grepping logic, it's still buggy logic.\n\nIt would be better to more closely integrate the init scripts with systemd, and use that source of knowledge as the primary means of identifying a PID.", "created": "2018-01-04T10:20:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is in master and should go out with Server 5.2.0, we haven't seen any issue with it in CI that I'm aware of.", "created": "2018-02-08T11:18:00.000000"}], "components": [], "created": "2017-12-15T16:40:00.000000", "creator": "557058:97578a32-3955-4c5c-939e-58a878437b49", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4acd32ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzisbz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "A race condition where systemd could lose track of the puppetserver process has been made significantly less likely to happen."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3029187731_*|*_1_*:*_1_*:*_1703472371_*|*_5_*:*_1_*:*_592256071_*|*_6_*:*_1_*:*_0"}], "description": "Sometimes, but not always, systemd on EL 7 \"loses\" the puppetserver service process. In the output below from {{journalctl -u pe-puppetserver}}, it's apparent that sometimes when puppetserver starts systemd seems to be monitoring it, and sometimes it prints a warning like the following.\n\n{code}\nSupervising process 11937 which is not our child. We'll most likely not notice when it exits.\n{code}\n\n{code}\nDec 15 18:56:33 puppet-primary-master-1.example.com systemd[1]: Starting pe-puppetserver Service...\nDec 15 18:57:03 puppet-primary-master-1.example.com systemd[1]: Started pe-puppetserver Service.\nDec 15 18:57:14 puppet-primary-master-1.example.com systemd[1]: Reloaded pe-puppetserver Service.\nDec 15 19:58:23 puppet-primary-master-1.example.com systemd[1]: pe-puppetserver.service: control process exited, code=exited status=1\nDec 15 19:58:23 puppet-primary-master-1.example.com systemd[1]: Reload failed for pe-puppetserver Service.\nDec 15 20:11:01 puppet-primary-master-1.example.com systemd[1]: Stopping pe-puppetserver Service...\nDec 15 20:11:05 puppet-primary-master-1.example.com systemd[1]: Unit pe-puppetserver.service entered failed state.\nDec 15 20:11:05 puppet-primary-master-1.example.com systemd[1]: pe-puppetserver.service failed.\nDec 15 20:11:05 puppet-primary-master-1.example.com systemd[1]: Starting pe-puppetserver Service...\nDec 15 20:11:05 puppet-primary-master-1.example.com systemd[1]: pe-puppetserver.service: Supervising process 11937 which is not our child. We'll most likely not notice when it exits.\nDec 15 20:11:05 puppet-primary-master-1.example.com systemd[1]: Started pe-puppetserver Service.\nDec 15 20:11:05 puppet-primary-master-1.example.com systemd[1]: pe-puppetserver.service: control process exited, code=exited status=1\nDec 15 20:11:05 puppet-primary-master-1.example.com systemd[1]: Reload failed for pe-puppetserver Service.\nDec 15 21:27:24 puppet-primary-master-1.example.com systemd[1]: Stopping pe-puppetserver Service...\nDec 15 21:27:24 puppet-primary-master-1.example.com systemd[1]: Stopped pe-puppetserver Service.\nDec 15 21:27:24 puppet-primary-master-1.example.com systemd[1]: Unit pe-puppetserver.service entered failed state.\nDec 15 21:27:24 puppet-primary-master-1.example.com systemd[1]: pe-puppetserver.service failed.\nDec 15 21:27:48 puppet-primary-master-1.example.com systemd[1]: Starting pe-puppetserver Service...\nDec 15 21:28:36 puppet-primary-master-1.example.com systemd[1]: Started pe-puppetserver Service.\nDec 15 21:57:23 puppet-primary-master-1.example.com systemd[1]: Reloaded pe-puppetserver Service.\nDec 15 22:18:44 puppet-primary-master-1.example.com systemd[1]: Stopping pe-puppetserver Service...\nDec 15 22:18:45 puppet-primary-master-1.example.com systemd[1]: Stopped pe-puppetserver Service.\nDec 15 22:20:11 puppet-primary-master-1.example.com systemd[1]: Starting pe-puppetserver Service...\nDec 15 22:20:57 puppet-primary-master-1.example.com systemd[1]: Started pe-puppetserver Service.\nDec 15 22:21:08 puppet-primary-master-1.example.com systemd[1]: Reloaded pe-puppetserver Service.\nDec 15 22:25:25 puppet-primary-master-1.example.com systemd[1]: Reloaded pe-puppetserver Service.\n{code}\n\nIn the example above, puppetserver died at ~20:11:05. It was manually \"stopped\" later, at 21:27:24. In all the time inbetween, {{systemctl status pe-puppetserver}} would report incorrectly that the service was running; the only indication that something might be wrong was a warning that reload had failed (exit code 1).\n\nWhen systemd has printed the warning, it will not notice when the puppetserver java process dies.\n\nh2. It should be the case that systemd never \"loses\" the puppetserver service process this way.\n\n-----\n\nIn the log above, the puppetserver process died when puppet-agent performed the following action:\n\n{code}\nDec 15 20:11:05 master-of-puppets-npnew-1 puppet-agent[4717]: (/Stage[main]/Puppet_enterprise::Master::Puppetserver/Puppet_enterprise::Trapperkeeper::Pe_service[puppetserver]/Exec[pe-puppetserver service full restart]) Triggered 'refresh' from 2 events\n{code}\n\nThe puppetserver.log file then showed these messages:\n\n{code}\n2017-12-15 20:11:01,738 INFO  [Thread-2] [p.t.internal] Shutting down due to JVM shutdown hook.\n2017-12-15 20:11:01,740 INFO  [Thread-2] [p.t.internal] Beginning shutdown sequence\n2017-12-15 20:11:01,745 INFO  [async-dispatch-2] [p.e.s.f.file-sync-client-service] Stopping file sync client service\n2017-12-15 20:11:01,746 INFO  [async-dispatch-2] [p.e.s.f.file-sync-client-service] Waiting for scheduled jobs to complete\n2017-12-15 20:11:05,136 INFO  [async-dispatch-2] [p.e.s.f.file-sync-client-service] scheduled jobs completed, closing HTTP client\n2017-12-15 20:11:05,138 INFO  [async-dispatch-2] [p.s.j.jruby-metrics-service] JRuby Metrics Service: stopping metrics sampler job\n2017-12-15 20:11:05,138 INFO  [async-dispatch-2] [p.s.j.jruby-metrics-service] JRuby Metrics Service: stopped metrics sampler job\n2017-12-15 20:11:05,138 INFO  [async-dispatch-2] [p.c.services] Shutting down code-manager...\n2017-12-15 20:11:05,139 INFO  [async-dispatch-2] [p.c.shell-workers] Attempting to shut down deploy-pool workers...\n2017-12-15 20:11:05,139 INFO  [async-dispatch-2] [p.c.shell-workers] deploy-pool workers sucessfully shut down.\n2017-12-15 20:11:05,139 INFO  [async-dispatch-2] [p.c.services] code-manager shut down.\n2017-12-15 20:11:05,139 INFO  [async-dispatch-2] [p.e.s.f.file-sync-storage-service] Closing all client status channels\n2017-12-15 20:11:05,141 INFO  [async-dispatch-2] [p.s.j.i.jruby-agents] Draining JRuby pool.\n2017-12-15 20:11:05,142 INFO  [async-dispatch-2] [p.s.j.i.jruby-agents] Borrowed all JRuby instances, proceeding with cleanup.\n2017-12-15 20:11:05,147 INFO  [clojure-agent-send-pool-5] [p.s.j.i.jruby-internal] Cleaned up old JRubyInstance with id 1.\n2017-12-15 20:11:05,150 INFO  [clojure-agent-send-pool-5] [p.s.j.i.jruby-internal] Cleaned up old JRubyInstance with id 2.\n2017-12-15 20:11:05,153 INFO  [clojure-agent-send-pool-5] [p.s.j.i.jruby-internal] Cleaned up old JRubyInstance with id 3.\n2017-12-15 20:11:05,155 INFO  [clojure-agent-send-pool-5] [p.s.j.i.jruby-internal] Cleaned up old JRubyInstance with id 4.\n2017-12-15 20:11:05,155 INFO  [clojure-agent-send-pool-5] [p.s.j.i.jruby-agents] Finished draining pool.\n2017-12-15 20:11:05,161 INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Shutting down web server(s).\n2017-12-15 20:11:05,161 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] Shutting down web server.\n2017-12-15 20:11:05,170 INFO  [async-dispatch-2] [o.e.j.s.AbstractConnector] Stopped ServerConnector@6fdefdb6{SSL,[ssl, http/1.1]}{0.0.0.0:8185}\n2017-12-15 20:11:05,170 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@1a05c288{/analytics/v1,null,UNAVAILABLE}\n2017-12-15 20:11:05,170 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] Web server shutdown\n2017-12-15 20:11:05,171 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] Shutting down web server.\n2017-12-15 20:11:05,172 INFO  [async-dispatch-2] [o.e.j.s.AbstractConnector] Stopped ServerConnector@6f7082a4{SSL,[ssl, http/1.1]}{0.0.0.0:8170}\n2017-12-15 20:11:05,172 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@45ac2de8{/code-manager/v1,null,UNAVAILABLE}\n2017-12-15 20:11:05,173 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] Web server shutdown\n2017-12-15 20:11:05,174 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] Shutting down web server.\n2017-12-15 20:11:05,183 INFO  [async-dispatch-2] [o.e.j.s.AbstractConnector] Stopped ServerConnector@3a2b9641{SSL,[ssl, http/1.1]}{0.0.0.0:8140}\n2017-12-15 20:11:05,183 INFO  [async-dispatch-2] [o.e.j.s.session] Stopped scavenging\n2017-12-15 20:11:05,183 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@79176ea1{/file-sync,null,UNAVAILABLE}\n2017-12-15 20:11:05,183 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@5a584ed5{/status,null,UNAVAILABLE}\n2017-12-15 20:11:05,183 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@30d840eb{/,null,UNAVAILABLE}\n2017-12-15 20:11:05,183 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@36ee6f62{/puppet,null,UNAVAILABLE}\n2017-12-15 20:11:05,183 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.ServletContextHandler@4a8f8f9e{/metrics/v2,null,UNAVAILABLE}\n2017-12-15 20:11:05,184 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@4907a0e7{/metrics,null,UNAVAILABLE}\n2017-12-15 20:11:05,184 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.ServletContextHandler@513ae15d{/file-sync-git,null,UNAVAILABLE}\n2017-12-15 20:11:05,184 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@217bbcd9{/puppet-admin-api,null,UNAVAILABLE}\n2017-12-15 20:11:05,184 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@3e01d64{/puppet-ca,null,UNAVAILABLE}\n2017-12-15 20:11:05,184 INFO  [async-dispatch-2] [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.ServletContextHandler@b1266e3{/packages,file:///opt/puppetlabs/server/data/packages/public/,UNAVAILABLE}\n2017-12-15 20:11:05,185 INFO  [async-dispatch-2] [p.t.s.w.jetty9-core] Web server shutdown\n2017-12-15 20:11:05,186 INFO  [clojure-agent-send-off-pool-0] [p.t.s.w.filesystem-watch-core] Closing watcher puppetlabs.trapperkeeper.services.watcher.filesystem_watch_core.WatcherImpl@c2c2480\n2017-12-15 20:11:05,186 INFO  [clojure-agent-send-off-pool-12] [p.t.s.w.filesystem-watch-core] Closing watcher puppetlabs.trapperkeeper.services.watcher.filesystem_watch_core.WatcherImpl@ee70ca17\n2017-12-15 20:11:05,193 INFO  [Thread-2] [p.t.internal] Finished shutdown sequence\n2017-12-15 21:28:22,182 INFO  [main] [o.e.j.u.log] Logging initialized @33403ms to org.eclipse.jetty.util.log.Slf4jLog\n...\n{code}\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15963", "fixedVersions": ["SERVER 5.2.0"], "id": "15963", "issueType": "Bug", "key": "SERVER-2068", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:97578a32-3955-4c5c-939e-58a878437b49", "resolution": "Fixed", "resolutionDate": "2018-02-08T11:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "systemd losing track of puppetserver process on EL 7", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Looking through the puppet logs from the beaker run to set up the dev driver, almost all of the errors seem to trace back to Ruby failing to install correctly, which after some googling I discovered is probably a recent upstream bug: https://github.com/rvm/rvm/issues/4234. Using the workaround described in that issue (forcing rvm to build ruby), I was able to get a working Ruby and bundler installed. However, it does not appear that the RVM module we are using in the driver setup allows any options to be passed to RVM. Since that module is unmaintained anyway, I will look into switching to a different module to install Ruby and gems on the dev driver.", "created": "2017-12-29T17:07:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "All of the needed PRs have been merged, and the puppetserver_perf_driver module tagged at 1.4.1. Seems to be working again.\n\nI would like to try it again from scratch to make sure.", "created": "2018-01-22T14:22:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Verified this was working on a fresh centos-7 pooler host. All good.", "created": "2018-01-23T15:21:00.000000"}], "components": [], "created": "2017-12-15T11:49:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3eaf605f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzivkf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1205339997_*|*_10007_*:*_1_*:*_282540983_*|*_3_*:*_2_*:*_1200105492_*|*_10009_*:*_2_*:*_694332783_*|*_5_*:*_1_*:*_86556059432_*|*_6_*:*_1_*:*_0"}], "description": "While trying to follow the instructions here https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/dev/README.md for setting up a test Jenkins master to run Gatling jobs, I ran into several issues:\n\n1) The firewall does not get configured correctly. Even though there is Puppet configuration to manage it, the Jenkins server cannot be accessed on port 8080 unless the firewall is disabled completely with {{service iptables stop}}.\n\n2) The version of OpenSSL on the Centos 7 vmpooler template is too old to work with the Ruby version (2.2.5) installed by RVM during beaker setup. Manually updating openssle-devel (and its associated openssl-libs) to the latest 1.0.2 allows Ruby to work, but this version is not available via the package manager (EL did not update their openssl till 7.4, and our images are 7.3).\n\n3) Once the run actually begins, the \"install hiera config\" step fails, because the hiera file we're trying to copy (configured as https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/jenkins-jobs/scenarios/oss-puppetserver-latest/Jenkinsfile#L18 in all existing jobs) doesn't seem to exist anywhere.\n\nIn the process of cleaning up these blockers, we should also think about updating some of the modules and libraries we are using (newer Ruby, get off of [unmaintained module forks|https://github.com/waynr/puppet-rvm], etc).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15375", "fixedVersions": [], "id": "15375", "issueType": "Bug", "key": "SERVER-2067", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dev workflow for setting up a Jenkins master to run Gatling tests is broken", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "We tried some longer running tests. We do start to see timeouts with 4G heap after several hours", "created": "2018-02-09T16:06:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "With the higher code-cache setting (512MB) we were able to do week-long runs with and without max-requests-per-instance set, with no timeouts and consistent performance.", "created": "2018-03-02T16:25:00.000000"}], "components": [], "created": "2017-12-14T16:56:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65546547"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjai7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3546343024_*|*_3_*:*_1_*:*_1375439640_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1815529876"}], "description": "Investigate long-running Puppet Server behavior with jruby 9k. There are some indications that Joe ran into much worse performance over longer periods of time -- like days -- so we should include that as a test case when we investigate performance.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15134", "fixedVersions": [], "id": "15134", "issueType": "Task", "key": "SERVER-2065", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2018-03-02T16:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate long-running Puppet Server behavior", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:deb670f5-ae21-4f4c-ba34-b94b914080a4] In Puppetserver 2.3.x we changed how we execute external commands that go through {{Puppet::Util::Execution.execute}}. With the change we no longer execute the commands under a shell, so pipes will not behave as they would under MRI ruby.\n\nFor your example, I believe you should be able to do something like:\n\n{{/bin/bash -c \"openssl rsa -in % -text | grep 'Private-Key:'\"}}\n\nThat will force it to use a shell which will be able to handle the {{|}} correctly.", "created": "2017-12-13T11:54:00.000000"}, {"author": "557058:deb670f5-ae21-4f4c-ba34-b94b914080a4", "body": "Hi [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e], thanks for replying. Kernel.exec does look for shell characters and, if detected, runs the command under a shell. Would it be possible to behave the same way?\n\nBut aside from that, I tried that first actually but it too failed and I just assumed it was the same issue. Looking more closely, it might be a slightly different issue.\n\nIf I set validate_cmd to \"/bin/true\" it works, if I set it to /bin/false it returns 1 as expected and stops the catalog compile:\n\n{noformat}\nExecution of 'false /tmp/validate_cmd20171214-7875-1sc7mrf' returned 1\n{noformat}\n\nIf I set validate_cmd to '/bin/bash -c \"false\"' then it also runs normally and returns 1 as expected (validate_cmd sticks the temp filename on the end but bash ignores it, so it doesn't matter:\n\nBut if I set validate_cmd to '/bin/bash -c \"/bin/false || /bin/false\"'' I get a 127 returned and a \"No such file or directory\" and a screwed up command line with the temp file as the executable or something?\n\n{noformat}\n/bin/bash -c \\\"/bin/false || /bin/false\\\" /tmp/validate_cmd20171214-7875-kfx607' returned 127: /tmp/validate_cmd20171214-7875-kfx607: /bin/false || /bin/false: No such file or directory\n{noformat}\n\nThis appears to happen as soon as I use any meta characters in the string.\n\nIt's weirder still if I use the % placeholder somewhere like '/bin/bash -c \"false % \"':\n\n{noformat}\nExecution of '/bin/bash -c \\\"/bin/false /tmp/validate_cmd20171214-7875-hlx5cm \\\"' returned 127: /bin/bash: /bin/false /tmp/validate_cmd20171214-7875-hlx5cm: No such file or directory\n{noformat}\n\nWhich looks a bit like something has ditched the \"-c\" but kept the \"/bin/false /tmp/validate_cmd20171214-7875-hlx5cm \"\n\nSomething seems wrong here - I'm not sure if it's in stdlib or puppet server\n", "created": "2017-12-14T05:13:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:deb670f5-ae21-4f4c-ba34-b94b914080a4] You're right. I was trying {{bash -c}} out in the underlying library and not in a puppet function via execute. After digging in a bit more I understand what's going on, and I think we could apply a fix to achieve a similar behavior to MRI ruby.\n\nFirst, the problems. https://github.com/puppetlabs/puppetserver/blob/5.1.x/src/ruby/puppetserver-lib/puppet/server/execution.rb#L19 is where puppetserver defines its own {{execute}} method. That method understands two calls, either a single command string or an array of strings, where the first is the binary and the rest are arguments to the binary. In the single command string version, it is handed off to the java layer where we use apache commons exec to parse the string. Unfortunately commons exec will treat special shell characters as arguments to the command, so in the case of pipes, it will fail to deliver the expected results. It is possible to construct a call to execute using the array version of the command that will do the right thing, but this is not exposed in the stdlib function that you are using (and it probably shouldn't have to be). Calling {{Puppet::Util::Execution.execute([\"/bin/bash\", \"-c\", \"false || false\"])}} does the right thing (but as I said there isn't a way to construct this in the function you are calling).\n\nAnd the possible fix: I think your idea can work. I think if we look to see how MRI ruby decides if a command is using shell builtins we can use that to automatically wrap any command using them with a call to {{/bin/sh -c}} (the same as {{Kernel.exec}}.", "created": "2017-12-14T13:27:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "It looks like ruby checks using this line\n\n{{if (!has_meta && strchr(\"*?{}[]<>()~&|\\\\$", "created": "2017-12-14T13:41:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I have a branch here (https://github.com/haus/puppet-server/tree/ticket/master/server-2064) which is definitely an improvement but might miss some cases that Kernel.exec will still handle correctly.", "created": "2017-12-14T14:50:00.000000"}, {"author": "557058:deb670f5-ae21-4f4c-ba34-b94b914080a4", "body": "Thanks [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] that looks great. Though I've spotted a bug on your branch. In the MRI implementation, \\n is an actual new line single character whereas here it is interpreted as a two char string of a slash and an n. So binary.index(Regexp.union(SHELL_CHARACTERS)) does not match a new line.\n\n\"*?{}[]<>()~&|\\\\$", "created": "2017-12-15T11:26:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "good catch [~accountid:557058:deb670f5-ae21-4f4c-ba34-b94b914080a4]. I updated the commit and opened a PR using {{chars}} (plus {{to_a}} because in ruby 1.9 {{chars}} is an enumerable and not an array). I also augmented the tests to include one for newlines and one for environment variables.\n\nPR is here: https://github.com/puppetlabs/puppetserver/pull/1587", "created": "2018-01-02T17:12:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Has passed CI.", "created": "2018-01-09T15:08:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] please add release notes for this issue, if needed. Thanks!", "created": "2018-02-05T08:29:00.000000"}], "components": [], "created": "2017-12-13T10:52:00.000000", "creator": "557058:deb670f5-ae21-4f4c-ba34-b94b914080a4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@462f7b1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzipun:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "In Puppetserver 2.3.x and later using shell redirection and other shellisms in custom functions would result in failures because the command would not be run in a shell. In Puppetserver 5.2.0 and later these commands will be run under a shell."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Dec/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_342181791_*|*_1_*:*_1_*:*_109877058_*|*_10007_*:*_1_*:*_254641385_*|*_3_*:*_1_*:*_1641441042_*|*_5_*:*_1_*:*_3170451786_*|*_6_*:*_1_*:*_0"}], "description": "I have a manifest that uses stdlib's validate_cmd function to run a command to validate some content. Specifically it runs this:\n\n\n{noformat}\nvalidate_cmd($key, \"openssl rsa -in % -text | grep 'Private-Key:'\", \"private key data for ${name} doesn't look valid\")\n{noformat}\n\nIt's been working fine under a puppet 3.8 server for years, and it passes my specs and catalog compiles with puppet 5.3 under MRI ruby 2.3.\n\nBut when deployed to a puppetserver 5.1.4, running under java, it fails with the error:\n\nExecution of 'openssl rsa -in % -text | grep 'Private-Key:'' returned 1: unknown option |\n\nExperimenting a bit, it'll run ok with a single command, it just doesn't like the pipe there. It's actually passing the pipe as an argument to the openssl command, rather than the whole string running under a shell.\n\nFollowing the code through, it looks like the string just ultimately gets sent to Kernel.exec, which is supposed to handle shell syntax properly (and appears to do so under MRI). So kind of looks like a jruby problem. Which I think means this isn't really a bug in stdlib, but more of a bug in Puppet::Util::Execution.execute (perhaps caused by jruby, but still, a change in behaviour of the execute method I think)\n", "environment": "puppetserver 5.1.4 installed from puppetlabs apt repo on Ubuntu Xenial (openjdk-8)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16322", "fixedVersions": ["SERVER 5.2.0"], "id": "16322", "issueType": "Bug", "key": "SERVER-2064", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:deb670f5-ae21-4f4c-ba34-b94b914080a4", "resolution": "Fixed", "resolutionDate": "2018-01-09T15:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet::Util::Execution.execute breaks with shell syntax under puppet server", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The simulation.log.gz is rooted under jenkins' homedir, so whatever solution we use will need to search the build directory.\n\n{code}\n/var/lib/jenkins/jobs/oss-puppetserver-latest-jruby9k/builds/1/simulations/oss-latest-jruby9k-1512083692322/simulation.log.gz\n/var/lib/jenkins/jobs/oss-puppetserver-latest-jruby9k/builds/6/simulations/oss-latest-jruby9k-1512691245445/simulation.log.gz\n/var/lib/jenkins/jobs/oss-puppetserver-latest-jruby9k/builds/7/simulations/oss-latest-jruby9k-1512754197064/simulation.log.gz\n/var/lib/jenkins/jobs/oss-puppetserver-latest-jruby9k/builds/8/simulations/oss-latest-jruby9k-1513021542905/simulation.log.gz\n{code}", "created": "2017-12-14T17:34:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This isn't working as expected for some reason. The groovy call which seems correct based on the jenkins pipeline syntax reference is failing.", "created": "2018-01-25T14:17:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "{code}\njava.lang.NoSuchMethodError: No such DSL method 'simulation-runner/results' found among [archive, bat, build, catchError, checkout, deleteDir, dir, echo, error, fileExists, gatlingArchive, git, input, isUnix, load, mail, node, parallel, properties, puppetGatlingArchive, pwd, readFile, retry, sh, sleep, stage, stash, step, svn, timeout, tool, unarchive, unstash, waitUntil, withEnv, wrap, writeFile, ws]\n{code}", "created": "2018-01-25T14:20:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "this is working as expected", "created": "2018-01-26T16:31:00.000000"}], "components": [], "created": "2017-12-11T16:59:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3475618"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyloov:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3805881591_*|*_10007_*:*_1_*:*_82376183_*|*_3_*:*_1_*:*_637507_*|*_10009_*:*_1_*:*_83855540_*|*_5_*:*_1_*:*_86292644076_*|*_6_*:*_1_*:*_0"}], "description": "Currently in order to access the raw gatling simulation data one has to log into the jenkins host and get the file from a labyrinth of jobs and directories. It would be good if it were exposed as a build artifact similarly to how metrics.json is.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16733", "fixedVersions": [], "id": "16733", "issueType": "Improvement", "key": "SERVER-2063", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Expose simulation.log.gz as build artifact of gatling jenkins jobs", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "https://wiki.jenkins.io/display/JENKINS/Lockable+Resources+Plugin is probably the best way to go to get something fast. Should make sure this won't disrupt the perf team (but I doubt it will).", "created": "2017-12-11T14:34:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Closing in favor of talking over future testing approaches with the SLV team.", "created": "2018-03-02T16:15:00.000000"}], "components": [], "created": "2017-12-11T14:28:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c70059d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylop3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4502840720_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2501993068"}], "description": "For one-off runs of performance jobs, it would be nice if we could queue several different ones and just have them run as nodes become available. I don't know what our options are yet (we could probably use even a simple Jenkins locking plugin for the nodes), but this seems useful so people don't have to keep an eye on Jenkins constantly.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15133", "fixedVersions": [], "id": "15133", "issueType": "Task", "key": "SERVER-2062", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2018-03-02T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automate scheduling for perf job kickoffs", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "We may not even need default anymore, since running with JIT seems unlikely.", "created": "2017-12-14T17:30:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This doesn't seem super important now, given how our investigation has progressed.", "created": "2018-02-22T15:29:00.000000"}], "components": [], "created": "2017-12-11T14:22:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@470272f1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzioav:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Dec/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2081194294_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4230037617"}], "description": "So far we've been running a few configuration permutations against puppetserver to gauge jruby performance. They include default, jit on, max-requests-per-instance set to 100k, and jit on with max-requests-per-instance set to 100k.\nTo avoid needing to push a bunch of buttons every time we should make a pipeline that will do this for us.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "14712", "fixedVersions": [], "id": "14712", "issueType": "Improvement", "key": "SERVER-2061", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Won't Do", "resolutionDate": "2018-02-22T15:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Define a pipeline to run the permutations of gatling runs against new jruby versions", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2017-12-08T15:04:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ecc1b9f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2044"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzilm7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The JRuby worker instances that Puppet Server uses to process requests can be configured to be destroyed and recreated every \"max-requests-per-instance\" interval to help prevent memory leaks in third party extensions or help with environment isolation.\n\nPreviously, all instances were given the same interval and when equally sharing the request load all of the instances would be destroyed and recreated near the same time, creating a \"thundering heard\" problem with JRuby instance creation. This would present itself as a large spike in request times.\n\nThe Puppet Server will now attempt to splay the destruction/recreation of JRuby instances equally over the max-request-per-instance interval to avoid this thundering herd problem. This will slightly change the operability metrics of the server, removing large spikes in request times in exchange for smaller but more frequent slowdowns."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_871487933_*|*_1_*:*_1_*:*_420738962_*|*_10007_*:*_1_*:*_254881100_*|*_3_*:*_1_*:*_1980189683_*|*_5_*:*_1_*:*_2408208999_*|*_6_*:*_1_*:*_0"}], "description": "Currently, because each jruby receives a proportionate number of requests, when max-requests-per-instance is set, all of the jrubies are recycled around the same time. Unfortunately, when using jit as the compile mode for jruby this means that all jrubies flush their JIT caches at the same time and so performance suffers as they all begin to repopulate their JIT caches.\n\nOne possible improvement here would be to initialize each jruby with a fraction of the total max requests (and then use the full amount afterward). In that world, if you had 4 jrubies and 100000 max requests per instance, the jrubies would live and die as follows:\n\nJruby-1 initialized with 25000 max requests\nJruby-2 initialized with 50000 max requests\nJruby-3 initialized with 75000 max requests\nJruby-4 initialized with 100000 max requests\n(100000 requests are received)\nJruby-1 recycled and re-initialized with 100000 max requests\nJruby-2 has 25000 requests remaining before recycling\nJruby-3 has 50000 requests remaining before recycling\nJruby-4 has 75000 requests remaining before recycling\n(100000 requests are received)\nJruby-1 has 75000 requests remaining before recycling\nJruby-2 recycled and re-initialized with 100000 max requests\nJruby-3 has 25000 requests remaining before recycling\nJruby-4 has 50000 requests remaining before recycling\n(100000 requests are received)\nJruby-1 has 50000 requests remaining before recycling\nJruby-2 has 75000 requests remaining before recycling\nJruby-3 recycled and re-initialized with 100000 max requests\nJruby-4 has 25000 requests remaining before recycling\n(100000 requests are received)\nJruby-1 has 25000 requests remaining before recycling\nJruby-2 has 50000 requests remaining before recycling\nJruby-3 has 75000 requests remaining before recycling\nJruby-4 recycled and re-initialized with 100000 max requests\n\nWithout that (in today's puppetserver), they would live and die like so:\n\nJruby-1 initialized with 100000 max requests\nJruby-2 initialized with 100000 max requests\nJruby-3 initialized with 100000 max requests\nJruby-4 initialized with 100000 max requests\n(100000 requests are received)\nJruby-1 has 75000 requests remaining before recycling\nJruby-2 has 75000 requests remaining before recycling\nJruby-3 has 75000 requests remaining before recycling\nJruby-4 has 75000 requests remaining before recycling\n(100000 requests are received)\nJruby-1 has 50000 requests remaining before recycling\nJruby-2 has 50000 requests remaining before recycling\nJruby-3 has 50000 requests remaining before recycling\nJruby-4 has 50000 requests remaining before recycling\n(100000 requests are received)\nJruby-1 has 25000 requests remaining before recycling\nJruby-2 has 25000 requests remaining before recycling\nJruby-3 has 25000 requests remaining before recycling\nJruby-4 has 25000 requests remaining before recycling\n(100000 requests are received)\nJruby-1 recycled and re-initialized with 100000 max requests\nJruby-2 recycled and re-initialized with 100000 max requests\nJruby-3 recycled and re-initialized with 100000 max requests\nJruby-4 recycled and re-initialized with 100000 max requests", "epicLinkSummary": "JRuby performance improvements", "estimate": "PT0S", "externalId": "17370", "fixedVersions": ["SERVER 5.2.0"], "id": "17370", "issueType": "Improvement", "key": "SERVER-2060", "labels": [], "originalEstimate": "PT0S", "parent": "14707", "parentSummary": "JRuby performance improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2018-01-18T10:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Initialize jruby pools with fractional max-requests", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "No longer applying the settings catalog is mostly likely going to get done as part of other work, and due to the way built-in types are merged into environments, the second option probably won't get us that much gain. So closing this for now.", "created": "2018-03-22T17:39:00.000000"}], "components": [], "created": "2017-12-07T12:20:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1cbaa708"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2044"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2r3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4856125178_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_4231444001"}], "description": "We use generated type definitions for custom types to help enforce environment isolation in PE.\nThe idea is that the `puppet generate types` command creates what are effectively header files for Puppet types in PCore. This way the parser can determine if the catalog is valid without loading the Ruby code that defines the types implementation (and consequently the same JRuby instance can load multiple versions of the code without having the Ruby space contaminated).\n\nWe don't generate type definitions for the builtin types for two reasons: they are the most complicated types that exist, and you can't run multiple versions of puppet at once (so it doesn't matter if they pollute the JRuby instance).\n\nIf we find that the metaprogramming that happens in the Puppet types is a considerable source of slowness we might want to investigate using type definitions for the builtin Puppet types as well.\n\nTo do that we'd need to do at least two things, the full scope of either isn't fully known:\n# the Puppet master code should not apply a settings catalog on start up, that could be done in a JRuby that is then reaped during puppetserver's initialization\n# the generate types subcommand would most likely need to be extended to handle the complexity of the built in types\n", "epicLinkSummary": "JRuby performance improvements", "estimate": "PT0S", "externalId": "17112", "fixedVersions": [], "id": "17112", "issueType": "Task", "key": "SERVER-2058", "labels": [], "originalEstimate": "PT0S", "parent": "14707", "parentSummary": "JRuby performance improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2018-03-22T17:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate using type definitions for FOSS builtin types when compiling catalogs", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] Update this ticket if we end up using the beta program and need to do work.\n\nSERVER-2021 has the hiera-eyaml memory allocation issues with 9k. We should update that ticket after we see results of running in Ops with 9k.\u00a0-SERVER-993- has an experience with invokedynamic and a crash.", "created": "2018-03-02T16:09:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think we need more information/metrics about what realistic catalogs look like before we can meaningfully do this ticket. We are thinking about adding some analytics to that effect.", "created": "2018-03-29T17:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:45fa3568-deb5-4da5-b894-a1ec07f1c138] I think you were asking me about our ability to do this the other day. Are tickets like this one things you would like to have in SLV's backlog? (I think there are several more in this epic that might be more useful to you than to me at this point)", "created": "2019-02-15T09:46:00.000000"}, {"author": "557058:45fa3568-deb5-4da5-b894-a1ec07f1c138", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]I don't think we need them.  We know we need to do it, we just don't have an easy source of what the real data is.  This ticket mentions the same idea we talked about (trolling the CS data).  And I don't forsee us having the peoplepower to do that for a good long time.", "created": "2019-02-15T17:12:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It would be nice to be able to do this, but this ticket isn't useful. Instead we would need concrete steps towards getting this data, and then to incorporate that data into existing perf testing.", "created": "2019-02-16T11:55:00.000000"}], "components": [], "created": "2017-12-07T10:44:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@497089c4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkzrb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4861891653_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_32812791235"}], "description": "Or do our customers fall into several different \"typical\" looking agent runs? This would be valuable not so much in finding the issues with JRuby 9k, but better characterizing the effects moving over to it will have on our users/customers. It will also provide us a more meaningful goal to validate our work.\n\nFor example, our \"Medium\" role that we are currently basing our characterization on is 96% file endpoint calls. It is possible for agent runs in environments that don't use Puppet's file serving to make only 3 file endpoint calls (during pluginsync). It's also possible in large environments for there to be hundreds of file requests (potentially making up nearly all requests).\n\nAnonymized PDB information that CS has for most of our large customers should let us answer this question. We can also call this out on the FOSS mailing lists if we want more info.", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "15132", "fixedVersions": [], "id": "15132", "issueType": "Task", "key": "SERVER-2057", "labels": [], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2019-02-16T11:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Testing JRuby 9k against realistic large catalogs", "timeSpent": "PT0S", "updated": "2019-02-16T11:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've been practicing doing this in a repl, here's an example of what I got working: https://gist.github.com/justinstoller/4887b4f659a09568c0d138f62685078d", "created": "2017-12-07T10:58:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This has involved a lot of work upfront to get a reproducible system for looking at the various benchmarks, as well as deep learning of the code pieces involved.", "created": "2018-02-08T17:28:00.000000"}], "components": [], "created": "2017-12-07T10:33:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@621fad92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymauf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4257945079_*|*_3_*:*_1_*:*_2418555648_*|*_10009_*:*_1_*:*_686340095_*|*_5_*:*_1_*:*_83271307138_*|*_6_*:*_1_*:*_0"}], "description": "Gatling provides us a with a system wide view of the server under load. However, it might be valuable to run puppet benchmarks using Yourkit on smaller sections of code in isolation to see if there are specific patterns that are problematic in 9k.\n\nIf there are any large differences between sections found in -SERVER-2055- we may want to start with them, otherwise we may just want to start with loading puppet server and then move to serving a catalog?", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "17111", "fixedVersions": [], "id": "17111", "issueType": "Task", "key": "SERVER-2056", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2018-03-02T15:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Run puppet benchmarks with yourkit", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've ran several runs of the Puppet Profiler with varying JRuby/Java configurations. I've put most of them in this spreadsheet:\nhttps://docs.google.com/a/puppet.com/spreadsheets/d/1z_Lw_eQiUrvqr61qQ-9xzPDJqOhtcGAvJfb0ZnIjbXU/edit?usp=sharing\n\nThe script I used to clean the log output as well as the specific settings I used are available in this gist:\nhttps://gist.github.com/justinstoller/eeea092c350c1df9ccf22ecfaaa48a4a\n\nThe findings are:\n* load doing sequential agent runs with a relatively minimal catalog isn't enough to exercise JRuby 9k's issues on a normal dev box\n* Meaningful degradation doesn't happen until > 256M max heap\n* Most methods and endpoints, with enough memory to handle them, are faster under 9k than 1.7\n* Regardless of memory pressure, there are several sections of code that are noticeably slower under 9k. They are (profile section name given with % degradation over 1.7 with normal memory constraints:\n** \"Compile: Evaluated capability mappings\" - 110%\n** \"Compile: Evaluated node classes\" - 180%\n** \"Compile: Evaluated site capability mappings\" - 170%\n** \"Compile: Set node parameters\" - 180%\n** \"Compile: Validate Catalog pre-finish\" - 190%\n** \"Compile: Validate Catalog final\" - 140%\n** \"Sent response\" - 140%\n* Also, while with 256 max heap most profiled sections ran similarly to their relative performance with 2G max heap, the following two sections slowed significantly (percentage listed is against 1.7 with normal memory):\n** \"Compile: Set node parameters\" - 210%\n** \"Compile: Validate Catalog pre-finish\" 240%\n* Running with additional optimizations (aggressive JIT, Java interop improvements, and memory tuning) helped noticeably, but not significantly under dev memory conditions, non-optimized runs were not tried under memory constrained conditions.\n\n\nWith this info, next steps could be:\n* Run additional unoptimized code, or combinations of optimizations, as a lightweight way to vet optimizations before testing them in full gatling simulations\n* Do YourKit profiling of code paths above that slowed when going through JRuby. Percent declines vs absolute run times could show which places the most improvements might be found.", "created": "2017-12-12T18:05:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I updated the spreadsheet to remove the first few iterations to better see stable state. The same culprits are there, though their degradation isn't nearly as significant. Also looking at the absolute time vs percent degradation its largely in the smallest timings where we see the largest degradations. Consequently, I don't believe we're going to continue down this route for now, but may revisit.", "created": "2017-12-13T11:25:00.000000"}], "components": [], "created": "2017-12-07T10:26:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cc8ac72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl78n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_13180184_*|*_3_*:*_1_*:*_444887338_*|*_10009_*:*_1_*:*_63867848_*|*_5_*:*_1_*:*_90112603103_*|*_6_*:*_1_*:*_0"}], "description": "We should run Puppet's profiler to understand if any sections of code get significantly worse or better transitioning from JRuby 1.7 to JRuby 9k.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16732", "fixedVersions": [], "id": "16732", "issueType": "Task", "key": "SERVER-2055", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Run and analyze results from Puppet's profiler", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Reviewed PR and think this is ready to go once the PUP work goes in.\u00a0While we wait on PUP-8282 I'm transitioning this ticket to blocked for JIRA.", "created": "2018-02-08T11:47:00.000000"}, {"author": "557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] [~accountid:5a15cc24b87a44359db09635] [~accountid:557058:89341248-d23e-4b19-a2b6-66b9bb55eb83]\n\nDid we ever figure out the order of operations on this and PUP-8232?\u00a0 What do we need to do next, both tickets are blocked and refer to each other for next steps.", "created": "2018-03-08T08:58:00.000000"}, {"author": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "body": "[~accountid:557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c] This is waiting on Josh to get back to Charlie about a couple things on PUP-8232 which needs to be merged before this PR can pass its tests and be mergable.", "created": "2018-03-08T11:38:00.000000"}], "components": [], "created": "2017-12-07T10:26:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6afb898"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-7779"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1b3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_68434786_*|*_1_*:*_1_*:*_686022_*|*_10007_*:*_2_*:*_6021840317_*|*_3_*:*_1_*:*_38651802_*|*_5_*:*_1_*:*_620154424_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_2160353567"}], "description": "This ticket tracks the server-side work of PUP-7779 \"Re-implement `puppet facts upload`\".\n\nIn order to recieve facts uploaded from agents, we need to re-add the {{/puppet/v3/facts}} API endpoint that was removed in Puppet 4.0 as part of PUP-2560. This consists of the following changes in the ruby code of the Puppet project:\n\n  - Re-add handling for {{facts}} to the {{plurality}} method of {{Puppet::Network::HTTP::API::IndirectedRoutes}} as facts was one of the endpoints with an odd plurality.\n\n  - Re-enable {{allow_remote_requests?}} in {{Puppet::Node::Facts::Yaml}}. This change allows Puppet Server to cache facts as YAML files on disk for use in further operations, such as catalog compilation. This does not re-enable YAML as a network format and is a behavior already used by the {{/puppet/v3/catalog}} endpoint.\n\nAnd the following change in the Clojure code of the Puppetserver project:\n\n  - Add a route handler for PUT requests to {{/puppet/v3/facts}} to the MasterService.\n\nOut of scope:\n\nThe implementation removed in PUP-2560 included several backends for saving facts via the Store Configs subsystem along with additional REST api endpoints and handlers for HTTP methods other than PUT. These will not be re-added.", "epicLinkSummary": "Re-implement `puppet facts upload` and associated server endpoint", "estimate": "PT0S", "externalId": "16509", "fixedVersions": ["SERVER 5.3.0"], "id": "16509", "issueType": "Improvement", "key": "SERVER-2054", "labels": [], "originalEstimate": "PT0S", "parent": "28292", "parentSummary": "Re-implement `puppet facts upload` and associated server endpoint", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2018-03-13T10:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Re-add the /puppet/v3/facts API endpoint", "timeSpent": "PT0S", "updated": "2018-04-16T17:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "No longer blocked. Descriptions and details for tasks should be filled in prior to creating the next set of release tickets. See: https://docs.google.com/spreadsheets/d/1WlxG0-pVDK3LqlPHhzI8yuZFmwlioTvEEtIL3EBEhRI/edit#gid=158984183\n", "created": "2018-01-03T16:57:00.000000"}], "components": [], "created": "2017-12-06T17:19:00.000000", "creator": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59e03df"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8230"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzivkn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_172916163_*|*_10007_*:*_1_*:*_776822011_*|*_3_*:*_1_*:*_342345878_*|*_10009_*:*_1_*:*_25758353_*|*_5_*:*_1_*:*_86981342404_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_2245003816_*|*_10006_*:*_2_*:*_152008351"}], "description": "Open a PR against winston to fill in ticket details for puppetserver-specific tasks of a platform release.\n", "epicLinkSummary": "Puppet Platform Release Process Improvements", "estimate": "PT0S", "externalId": "15131", "fixedVersions": [], "id": "15131", "issueType": "Task", "key": "SERVER-2053", "labels": [], "originalEstimate": "PT0S", "parent": "27342", "parentSummary": "Puppet Platform Release Process Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "resolution": "Done", "resolutionDate": "2018-01-18T17:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add puppetserver release steps to winston", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "We've done enough here so far \u2013 got a spreadsheet with results and storage in s3.", "created": "2018-03-02T16:12:00.000000"}], "components": [], "created": "2017-12-06T11:59:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7228a007"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmrz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4943740995_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2501877443"}], "description": "This is a general ticket to record what we want out of gatling data.\n\n1) We want a view where we can compare performance when different variables are changed (server version, JIT or no JIT, etc)\n2) Once we start making changes, we want the ability to view how we're affecting performance over time (measure improvements and see regressions).", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16321", "fixedVersions": [], "id": "16321", "issueType": "Task", "key": "SERVER-2052", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Fixed", "resolutionDate": "2018-03-02T16:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Aggregate gatling data", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-12-06T11:56:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@938bda2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyloqn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4944051044_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2502702586"}], "description": "When we tried to profile gatling runs earlier we ran into issues where we couldn't see where objects were coming from because stack frames were missing, probably due to inlined methods.\n\nRecompile jruby without the optimizations that would inline methods and remove these stack frames, so that we can profile it with gatling again and understand where the larger/more numerous objects are coming from.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15961", "fixedVersions": [], "id": "15961", "issueType": "Task", "key": "SERVER-2051", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2018-03-02T16:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Profile unoptimized jruby", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] You mentioned seeing an issue on jruby where comments indicated that using `define_method` was less performant", "created": "2017-12-06T11:54:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Check out https://github.com/cprice404/jruby9k-benchmarks for some existing ruby benchmarks comparing performance on jruby 1.7 vs. 9k", "created": "2017-12-08T16:12:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Kicking back out because I'm not sure this is useful right now.", "created": "2018-01-09T12:13:00.000000"}], "components": [], "created": "2017-12-06T11:53:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ade8870"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmqv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_435169542_*|*_3_*:*_1_*:*_2503654552_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4507044275"}], "description": "Write a ruby benchmark to test theory that jruby interpreter is more efficient with explicitly defined methods than the ones we have created in puppet with metaprogramming.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15755", "fixedVersions": [], "id": "15755", "issueType": "Task", "key": "SERVER-2050", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2018-03-02T16:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Benchmark metaprogramming with jruby", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "[~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] Out of curiosity, when will your team be comfortable turning on 9k in your perf testing? The next sprintly release will have a feature flag for turning it on.", "created": "2018-03-02T16:26:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "we're (SLV) tracking \"extra\" things to measure, if possible, in irving timeframe.\u00a0 added a link to that ticket.", "created": "2018-03-05T10:51:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We shipped 9k by default in PE 2019.0.", "created": "2019-02-15T09:47:00.000000"}], "components": [], "created": "2017-12-06T11:52:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6624ba7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylopr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4944192802_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_32718716128"}], "description": "One of the reasons we want to work on jruby 9k compatibility right now is to try to make it work for the Irving release of PE. Testing against PE is something we'll want to do, since PE's configuration utilizes some things that the gatling control repos do not (like exported resources). This is something we should check out before officially supporting 9k, but not necessarily something we have to do to initially characterize the problem.", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "15130", "fixedVersions": [], "id": "15130", "issueType": "Task", "key": "SERVER-2049", "labels": [], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2019-02-15T09:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "[STRETCH] PE performance testing with 9k", "timeSpent": "PT0S", "updated": "2019-02-15T09:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "All Gatling testing is managed by SLV now, and they have their own backlog.", "created": "2020-01-29T09:07:00.000000"}], "components": [], "created": "2017-12-06T11:51:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e09d22"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylopj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4944270163_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_62783528903"}], "description": "Gatling is using a pretty old catalog including Hiera 3 data, so we should at least update it to use Hiera 5 data since that's relatively commonly used, and may relate to some performance problems (see below). This can be a catalog we eventually update to do things like use Puppet 5 functions.\n\nInspired by: In SERVER-2021, we have an opportunity to re-create a hiera environment using hiera-eyaml that was having memory issues with jruby 9k. This is something we should check out before officially supporting 9k, but not necessarily something we have to do to initially characterize the problem.", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "14709", "fixedVersions": [], "id": "14709", "issueType": "Task", "key": "SERVER-2048", "labels": [], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2020-01-29T09:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Give gatling Hiera 5 data to test against", "timeSpent": "PT0S", "updated": "2020-01-29T09:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "There is a run of 9k with jit enabled here: http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest-jruby9k/6/console and jit enabled with max-requests-per-instance set to 100000 (as is in PE) here http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest-jruby9k/7/console", "created": "2017-12-08T17:04:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I am also starting a run of 1.7 with JIT and max-requests-per-instance", "created": "2017-12-08T17:05:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We have the gatling JIT runs going on the linked jenkins jobs. We are collecting the raw data from them in this google folder:\nhttps://drive.google.com/drive/folders/1q0xN-bAhsowCvlDcwBCiv3Nj2eNy5PHn\n\nSummaries (and historical runs) in this spreadsheet: https://docs.google.com/spreadsheets/d/1aMwzxXctXX8SZpdFg7kj6ole8c_xEcd03MtvS-rhbj0/edit#gid=0 \n\nPercentiles were taken from the raw data using this script:\nhttps://gist.github.com/justinstoller/94e162496518a6587b7308e90712955b", "created": "2017-12-13T11:37:00.000000"}], "components": [], "created": "2017-12-06T11:49:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c3ebe10"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl78v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Dec/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_191334053_*|*_3_*:*_1_*:*_349509334_*|*_10009_*:*_1_*:*_63272184_*|*_5_*:*_1_*:*_90111880487_*|*_6_*:*_1_*:*_0"}], "description": "This is to collect data on how much turning on JRuby's JIT can help us with performance. (According to past data collected by Joe, it helps significantly but doesn't get us near parity with 1.7). Would be good to have a pipeline we can re-run as we make changes.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "17369", "fixedVersions": [], "id": "17369", "issueType": "Task", "key": "SERVER-2047", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling tests with JIT for 9k runs", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "These runs have been done but have not been added to graphs yet.", "created": "2018-01-30T15:04:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Data has been entered in the spreadsheet and a new chart added here: https://docs.google.com/spreadsheets/d/1aMwzxXctXX8SZpdFg7kj6ole8c_xEcd03MtvS-rhbj0/edit#gid=0\n\nNotably, 1.7 has a worse max than 9k. Otherwise they line up very evenly.", "created": "2018-01-31T12:58:00.000000"}], "components": [], "created": "2017-12-06T11:47:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b498d9f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzillz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1996489897_*|*_1_*:*_1_*:*_96964667_*|*_10007_*:*_2_*:*_2331555137_*|*_3_*:*_2_*:*_417669913_*|*_5_*:*_1_*:*_85873426725_*|*_6_*:*_1_*:*_0"}], "description": "This should let us know roughly how performance problems relate to catalog complexity.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "17110", "fixedVersions": [], "id": "17110", "issueType": "Task", "key": "SERVER-2046", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2020-10-21T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling tests for \"empty\" control repo level", "timeSpent": "PT0S", "updated": "2020-10-21T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So it looks like we already have a basic pipeline for 2.x here https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/jenkins-jobs/scenarios/oss-puppetserver-2.x/Jenkinsfile, but it doesn't seem to offer comparison between JRuby versions. Do we want to make an additional pipeline that does the comparison, or repurpose this one run both JRuby versions?", "created": "2017-12-07T12:34:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Going to make a separate pipeline that just tests 2.x on 9k.", "created": "2017-12-07T12:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Puppetserver 2.x does not support configuring which JRuby version to use. In order to get this functionality, we would need to backport https://github.com/puppetlabs/puppetserver/commit/60121523baa7f5ae2f07b747b984303f8c860724 and https://github.com/puppetlabs/puppetserver/commit/776d6d978be18c38a3baca77bf6d3bf159d842a8, at minimum. There might be other changes needed. In light of this, we should put off adding this pipeline until we're sure we need to support 9K in 2.x.", "created": "2017-12-07T14:40:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "No", "created": "2018-03-02T16:16:00.000000"}], "components": [], "created": "2017-12-06T11:47:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@151271db"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylopb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Dec/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_89040706_*|*_3_*:*_1_*:*_7777378_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_7349735092"}], "description": "- should run against 1.7 and 9k jruby\n- doesn't need to be run regularly", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16731", "fixedVersions": [], "id": "16731", "issueType": "Task", "key": "SERVER-2045", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2018-03-02T16:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Set up 2.x server gatling pipeline", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Stacktrace leading up to the spot that errors:\n{code}\nBacktrace:\n--\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:172:in `coerce_string'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:186:in `newmessage'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:309:in `initialize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:87:in `create'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/logging.rb:12:in `send_log'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/logging.rb:21:in `err'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:76:in `process'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/master.rb:42:in `handleRequest'\nPuppet$$Server$$Master_1408416866.gen:13:in `handleRequest'\nrequest_handler_core.clj:273:in `invoke'\njruby_request.clj:48:in `invoke'\njruby_request.clj:33:in `invoke'\nrequest_handler_service.clj:47:in `handle_request'\n{code}", "created": "2017-12-04T19:42:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Using a git bisect, and some fancy copy-pasting, I tracked it down to this change: https://github.com/puppetlabs/puppet/commit/89aadbcf68a4a8fd73d49ae528e3d4a3eaef947d#diff-cf3ba64634819316c2f0821d1b7d4393L66, specifically because our PO files have not yet been updated with new translations to match the string cleanups in this commit. In this case, we are going to look for a translation, but fail to find one, so the string stays English -- and therefore ASCII, apparently. We then try to interpolate the error from the server into it, which HAS been translated and therefore is UTF-8 encoded. Ruby used to upgrade the whole string to UTF-8 when we were using concatenation here, but apparently the same does not apply to format strings. So the string stays ASCII even after the interpolation of the UTF-8 error message, and therefore explodes when we attempt to force its encoding later on.\n\nI'm not sure if this is going to bite us other places... in theory this can be avoided if our translations are completely up to date, because we only use format strings when using translation. But it still seems kinda scary. [~accountid:557058:263afade-3e4f-46c6-b50a-cf2982192562] thoughts?\n\nUpdate: it also works correctly using regular Ruby interpolation (e.g. \"#\\{message\\}\"), so at least all the strings we aren't translating (like debug messages) will be fine even if they end up having Japanese interpolated into them. It seems to be only the format strings that are bad (whether or not we round-trip through FastGettext doesn't seem to make a difference).", "created": "2017-12-11T12:40:00.000000"}, {"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "Quick follow-up on this after a pairing session with [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69].\n\nWe determined that under current default JRuby 1.7, literal strings in {{.rb}} files are defaulting to {{Encoding::ASCII}}. By adding the Ruby \"magic comment\" of {{# encoding: UTF-8}} to the top of the Ruby source file, we verified strings in source files are treated as UTF-8 instead. I suspect this is because JRuby 1.7 is compatible with MRI Ruby 1.9.3. Ruby source files didn't begin parsing as UTF-8 by default until Ruby 2.0, which wouldn't change until JRuby 9k is fully implemented (which I believe targets MRI Ruby 2.2).\n\nNOTE: There was some confusion while debugging with pry because literal strings in pry input are accepted as UTF-8, while the ones read from .rb files were not... so variables assigned in Ruby source were showing a different encoding than executing the exact same code in pry.\n\nThis in particular ends up being a problem for strings that are missing translations, as the {{_}} function returns the literal input as the translated string when no translation exists in the lookup table. When a translation *does exist*, the value returned is UTF-8 regardless of the ASCII key being passed.  We have a bit more work to determine which string mutations work when concatenating / formatting / interpolating - but the general rule of thumb is that combining ASCII characters with UTF-8 characters higher than 7-bit ASCII will throw encoding mismatch exceptions in Ruby (I have a write-up about some of the observed rules with binary strings in https://github.com/net-ssh/net-ssh/pull/394#issue-165889843)\n\nSo I think there are a few ways to address this:\n\n* Add the magic comment to the top of all files - fairly heavyweight, users must remember this when adding new files (could automate the checks), won't help with module / 3rd party code\n* Address just the translation missing key problem by making some changes to encode returned strings from {{_}} as {{Encoding::UTF_8}} - I think the problem is more widespread than simply translations, and I suspect this is insufficient to really address the problem\n* Upgrade to JRuby 9k - doesn't help existing released versions of PE, so not an option as far as I know\n* Find a way to change JRuby default behavior - this seems like the most promising, but not sure yet if it can be done\n** JRuby has a {{-U}} parameter per https://github.com/jruby/jruby/wiki/JRubyCommandLineParameters to set internal encoding. However, I don't know how that translates to the {{ScriptingContainer}}. The only thing I see is [setKCode|http://jruby.org/apidocs/org/jruby/embed/ScriptingContainer.html#setKCode(org.jruby.util.KCode)], which I believe maps to the {{-K}} cli option for Ruby, which Ruby documentation states:\n{quote}\nruby -K will change the default locale encoding, but this is not recommended. Ruby source files should declare its script encoding by a magic comment even when they only depend on US-ASCII strings or regular expressions.\n{quote}\nIn addition, based on the commentary at https://github.com/jruby/jruby/issues/343, I *think* KCode is what we should try first. It's not clear why this is \"not recommended\" (especially given 2.0 behavior changed to UTF-8) - and it seems worse to have encodings behave differently whether code is run in master or agent.\n** I also see some commentary about setting the Java property (at command line, though there should be Java properties equivalent) of {{-Dfile.encoding=UTF-8}} (mentioned at https://github.com/jruby/warbler/issues/368). I'm not sure if the JRuby container objects will automatically pick this up or not?\n** Explicitly set [Encoding.default_internal|https://ruby-doc.org/core-2.2.0/Encoding.html#method-c-default_internal] or __ENCODING__ when JRuby is initialized to run Puppet code. I think __ENCODING__ varies per file, and Ruby docs say the following, so I'm not sure it makes sense to try and set __ENCODING__:\n{quote}\nThe __ENCODING__ keyword returns the script encoding of the file which the keyword is written\n\n...\n\nThe locale encoding (__ENCODING__), not ::default_internal, is used as the encoding of created strings.\n{quote}", "created": "2017-12-11T21:00:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Kicking this to the grooming sprint so it can be re-prioritized in light of this solution suggestion.", "created": "2017-12-12T12:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We want to try setting the kCode first and then continue with other options if that doesn't work.", "created": "2017-12-14T16:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "TL", "created": "2017-12-19T15:04:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Going to try writing a spec test for this to demonstrate the issue. If need be, we might be able to patch JRuby to get KCode working.", "created": "2018-01-04T11:40:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I was able to write a spec test with the issue (on this branch https://github.com/Magisus/puppetserver/tree/utf8-spec), which passes if the {{-Ku}} flag is passed to JRuby in the spec invocation. This indicates that some variant of calling {{setKCode}} in code should also resolve our issue, but I've been unable to find a spot to call it that has any effect. It could be that it has not been plumbed through in the way we need it.\n\nI have also confirmed that the test passes when run under JRuby 9K, without the {{-Ku}} flag.", "created": "2018-01-19T16:21:00.000000"}, {"author": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]Now that we have translations this problem appears to have gone away. \n\nSERVER_VERSION=5.1.5.SNAPSHOT.2018.01.23T0845 SHA=7a3bb579b8ef02da8a3c91fe6c34da1941e98c23  SUITE_VERSION=5.3.3.250.g7a3bb57\n\n{code}\n      rq2jp5swsamc9w3.delivery.puppetlabs.net (centos7-64-1) 10:30:11$ env LANGUAGE=\"\" LANG=\"ja_JP\" puppet agent -t --server emku4vm6sz039rg.delivery.puppetlabs.net --environment puppet_agent_l4rs2vm1\n        Info: \u8a2d\u5b9a\u3055\u308c\u305f\u74b0\u5883'puppet_agent_l4rs2vm1'\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\n        Info: pluginfacts\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002\n        Info: plugin\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002\n        Info: locales\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002\n        Info: facts\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059\u3002\n        Error: Facter: error while resolving custom fact \"i18ndemo_fact\": eputnam-i18ndemo fact: \u3053\u308c\u306feputnam-i18ndemo\u304b\u3089\u306e\u30ab\u30b9\u30bf\u30e0\u30d5\u30a1\u30af\u30c8\u304b\u3089\u306e\u30ec\u30a4\u30ba\u3067\u3059\n        Error: \u30ea\u30e2\u30fc\u30c8\u30b5\u30fc\u30d0\u304b\u3089\u30ab\u30bf\u30ed\u30b0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: SERVER\u306e\u30a8\u30e9\u30fc500 : \u30b5\u30fc\u30d0\u30a8\u30e9\u30fc: \u30ce\u30fc\u30c9%{node}\u306e%{msg}\n        Warning: \u5931\u6557\u3057\u305f\u30ab\u30bf\u30ed\u30b0\u3067\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\n        Error: \u30ab\u30bf\u30ed\u30b0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f", "created": "2018-01-23T11:31:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Perfect. [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] and I are going to do a bit of spelunking into the JRuby source today to try to track down KCode, but we might end up missing this release with that fix. If that's the case, I'll remove the fix version.", "created": "2018-01-23T11:42:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Fix is in jruby-utils at https://github.com/puppetlabs/jruby-utils/pull/61", "created": "2018-01-23T18:31:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Should we move this to {{SERVER}} project?", "created": "2018-01-24T11:23:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] Looks like the project move caused release notes to slip through the cracks. Are there any required for this ticket?", "created": "2018-01-29T11:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This made it in and passed CI at https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/5.1.x/job/platform_puppetserver_integration-system_no-conditional_smoke-5.1.x/151/", "created": "2018-01-29T17:21:00.000000"}], "components": [], "created": "2017-12-04T14:42:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c5b3921"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8079"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automated Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hziqtj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "All Ruby source files will now be parsed as UTF-8 instead of ASCII when running under JRuby 1.7, the same as MRI Ruby and JRuby 9K, which avoids corner-case bugs when interpolating translated strings with Unicode characters."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Dec/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_442122297_*|*_1_*:*_1_*:*_71908985_*|*_10007_*:*_1_*:*_72134899_*|*_3_*:*_3_*:*_2461949249_*|*_5_*:*_1_*:*_597379022_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1728799677_*|*_10006_*:*_1_*:*_71039956"}], "description": "When running puppetserver in Japanese from packages on Redhat 7, this manifest:\n{code}\nnode default {\n    class { 'i18ndemo': param1 => false }\n}\n{code}\ncauses a warning to be issued, that is correctly printed in Japanese in the server log before causing an {{invalid encoding}} error immediately after:\n{code}\n2017-12-04 13:30:13,359 ERROR [qtp1391621659-62] [puppetserver] Puppet Evaluation Error: a Function Call\u306e\u691c\u8a3c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u751f\u3058\u307e\u3057\u305f\u3002eputnam-i18ndemo init.pp: /tmp/i18ndemofile.txt\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f at /etc/puppetlabs/code/environments/production/modules/i18ndemo/manifests/init.pp:23:5 on node maggie\n2017-12-04 13:30:13,363 ERROR [qtp1391621659-62] [puppetserver] Puppet Received a Log attribute with invalid encoding:\"Server Error: Evaluation Error: a Function Call\\xE3\\x81\\xAE\\xE6\\xA4\\x9C\\xE8\\xA8\\xBC\\xE4\\xB8\\xAD\\xE3\\x81\\xAB\\xE3\\x82\\xA8\\xE3\\x83\\xA9\\xE3\\x83\\xBC\\xE3\\x81\\x8C\\xE7\\x94\\x9F\\xE3\\x81\\x98\\xE3\\x81\\xBE\\xE3\\x81\\x97\\xE3\\x81\\x9F\\xE3\\x80\\x82eputnam-i18ndemo init.pp: /tmp/i18ndemofile.txt\\xE3\\x83\\x95\\xE3\\x82\\xA1\\xE3\\x82\\xA4\\xE3\\x83\\xAB\\xE3\\x81\\xAE\\xE4\\xBD\\x9C\\xE6\\x88\\x90\\xE3\\x81\\xAB\\xE5\\xA4\\xB1\\xE6\\x95\\x97\\xE3\\x81\\x97\\xE3\\x81\\xBE\\xE3\\x81\\x97\\xE3\\x81\\x9F at /etc/puppetlabs/code/environments/production/modules/i18ndemo/manifests/init.pp:23:5\n{code}\n\nOn the agent side, the run fails with this error:\n{code}\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Internal Server Error: org.jruby.exceptions.RaiseException: (Encoding::InvalidByteSequenceError) \"\"\\xE3\"\" on US-ASCII\n{code}\n\nThe agent's locale does not affect this error. If the param is set to true instead, we do not encounter an error.", "epicLinkSummary": "Puppet i18n with Modules: Expanded use-cases and performance", "estimate": "PT0S", "externalId": "15959", "fixedVersions": ["SERVER 5.1.5"], "id": "15959", "issueType": "Bug", "key": "SERVER-2081", "labels": ["utf-8"], "originalEstimate": "PT0S", "parent": "24134", "parentSummary": "Puppet i18n with Modules: Expanded use-cases and performance", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2018-01-29T17:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Warning in manifest causing invalid byte sequence error on Redhat 7 server", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-12-04T11:25:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f9f3c5c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "JRuby perf"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbev:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_67902060723_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14707", "fixedVersions": [], "id": "14707", "issueType": "Epic", "key": "SERVER-2044", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2020-01-29T09:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby performance improvements", "timeSpent": "PT0S", "updated": "2020-01-29T09:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4a5850bb2b0070b5e349", "body": "test:~ # cat /etc/SuSE-release\nSUSE Linux Enterprise Server 12 (ppc64le)\nVERSION = 12\nPATCHLEVEL = 2\n# This file is deprecated and will be removed in a future service pack or release.\n# Please check /etc/os-release for details about this release.\n\nest:~ # uname -a\nLinux rb3test 4.4.90-92.45-default #1 SMP Tue Oct 24 15:03:15 UTC 2017 (1094ae5) ppc64le ppc64le ppc64le GNU/Linux\n", "created": "2017-12-01T03:28:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "[~accountid:623a4a5850bb2b0070b5e349] \"unable to enable unlimited-strength crypto\" sounds a bit like the Java >= 8u151 unlmited strenght encryption change.\n\nhttps://golb.hplar.ch/p/JCE-policy-changes-in-Java-SE-8u151-and-8u152", "created": "2017-12-01T07:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't believe we intend to support Power arch for masters, only x86_64 variants.\n\nI'd be interested in ways that we could better make that apparent?\n\nI can also put you in touch with the folks that manage operating system/architecture support matrices if you'd like more information regarding our intentions around them.", "created": "2017-12-01T11:21:00.000000"}, {"author": "623a4a5850bb2b0070b5e349", "body": "Thanks  Thomas\n\ntest:~ # java -version\nopenjdk version \"1.8.0_151\"\n\nand \n\nrb3test:~ # grep ^crypto.policy /usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/security/java.security\ncrypto.policy=unlimited\n\nmaybe somewhere in jruby the issue", "created": "2017-12-05T04:05:00.000000"}, {"author": "623a4a5850bb2b0070b5e349", "body": "Thanks Justin,\n\nin the documentation was only mention the OS not the architecture, and Java is also suggest the goal is multi arch.\n\nafter read some issues I was able to start puppet server \n\nhttps://puppet.atlassian.net/browse/SERVER-1959\npuppet-agent for SLES 12 also don't have facter.jar\nThis maybe also a issue, my case build facter and define FACTERDIR=/usr/local/lib solve.\nhttps://yum.puppetlabs.com/puppet5/sles/12/ppc64le/puppet-agent-5.3.3-1.sles12.ppc64le.rpm\n\nhttps://puppet.atlassian.net/browse/SERVER-14\nextract jruby-1_7.jar\nadd META-INF/jruby.home/lib/ruby/shared/ffi/platform/powerpc64le-linux/etc.rb (copy from ppc-darwin)\nadd META-INF/jruby.home/lib/ruby/shared/ffi/platform/powerpc64le-linux/syslog.rb (copy from ppc-darwin)\nthen recreate jruby-1_7.jar\n\nyes, it would be great to get some extra information and understand why my solutions work :)", "created": "2017-12-05T04:35:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Congratulations on getting that to work!\n\nI'll ask the docs team to update the [installing puppetserver page|https://puppet.com/docs/puppetserver/5.1/install_from_packages.html#system-requirements] to say our packages are specifically tested and intended to be ran on a x86_64 architecture OS. It looks like that page mentions open source users who want to run Puppet Server on other platforms can attempt to run it from source, which by unpacking the jar and munging its files your basically doing now. \n\nNormal caveats apply, of course, to using software in unintended ways within production environments, but I'm glad you found a solution that works for you! Best of luck!\n\n\nFiled as DOCUMENT-778", "created": "2017-12-05T09:28:00.000000"}], "components": ["Puppet Server"], "created": "2017-12-01T03:26:00.000000", "creator": "623a4a5850bb2b0070b5e349", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ea89c5f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzii5r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Dec/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_367354575_*|*_6_*:*_1_*:*_0"}], "description": "\ntest:~ # /opt/puppetlabs/bin/puppetserver ruby -d -e \"require 'syslog'\"\nunable to enable unlimited-strength crypto\njava.lang.IllegalAccessException: Can not set static final boolean field javax.crypto.JceSecurity.isRestricted to java.lang.Boolean\n        at sun.reflect.UnsafeFieldAccessorImpl.throwFinalFieldIllegalAccessException(UnsafeFieldAccessorImpl.java:76)\n        at sun.reflect.UnsafeFieldAccessorImpl.throwFinalFieldIllegalAccessException(UnsafeFieldAccessorImpl.java:80)\n        at sun.reflect.UnsafeQualifiedStaticBooleanFieldAccessorImpl.set(UnsafeQualifiedStaticBooleanFieldAccessorImpl.java:77)\n        at java.lang.reflect.Field.set(Field.java:764)\n        at org.jruby.Ruby.init(Ruby.java:1256)\n        at org.jruby.Ruby.newInstance(Ruby.java:334)\n        at org.jruby.Main.internalRun(Main.java:256)\n        at org.jruby.Main.run(Main.java:217)\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:498)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n        at puppetlabs.services.jruby_pool_manager.jruby_core$eval8689$cli_ruby_BANG___8694$fn__8695.invoke(jruby_core.clj:277)\n        at puppetlabs.services.jruby_pool_manager.jruby_core$eval8689$cli_ruby_BANG___8694.invoke(jruby_core.clj:271)\n        at puppetlabs.puppetserver.cli.ruby$ruby_run_BANG_.invokeStatic(ruby.clj:9)\n        at puppetlabs.puppetserver.cli.ruby$ruby_run_BANG_.invoke(ruby.clj:6)\n        at puppetlabs.puppetserver.cli.subcommand$run.invokeStatic(subcommand.clj:44)\n        at puppetlabs.puppetserver.cli.subcommand$run.invoke(subcommand.clj:33)\n        at puppetlabs.puppetserver.cli.subcommand$jruby_run.invokeStatic(subcommand.clj:60)\n        at puppetlabs.puppetserver.cli.subcommand$jruby_run.invoke(subcommand.clj:56)\n        at puppetlabs.puppetserver.cli.ruby$_main.invokeStatic(ruby.clj:13)\n        at puppetlabs.puppetserver.cli.ruby$_main.doInvoke(ruby.clj:11)\n        at clojure.lang.RestFn.invoke(RestFn.java:512)\n        at clojure.lang.Var.invoke(Var.java:409)\n        at clojure.lang.AFn.applyToHelper(AFn.java:178)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.core$apply.invokeStatic(core.clj:646)\n        at clojure.main$main_opt.invokeStatic(main.clj:314)\n        at clojure.main$main_opt.invoke(main.clj:310)\n        at clojure.main$main.invokeStatic(main.clj:421)\n        at clojure.main$main.doInvoke(main.clj:384)\n        at clojure.lang.RestFn.invoke(RestFn.java:619)\n        at clojure.lang.Var.invoke(Var.java:430)\n        at clojure.lang.AFn.applyToHelper(AFn.java:195)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.main.main(main.java:37)\nException `LoadError' at org/jruby/RubyKernel.java:1040 - no such file to load -- /opt/puppetlabs/server/apps/puppetserver/jruby-1_7.jar!/META-INF/jruby.home/lib/ruby/shared/ffi/platform/powerpc64le-linux/syslog\nException `LoadError' at /opt/puppetlabs/server/apps/puppetserver/jruby-1_7.jar!/META-INF/jruby.home/lib/ruby/shared/syslog.rb:20 - Syslog not supported on this platform\nException `LoadError' at /opt/puppetlabs/server/apps/puppetserver/jruby-1_7.jar!/META-INF/jruby.home/lib/ruby/shared/syslog.rb:20 - Syslog not supported on this platform\nLoadError: Syslog not supported on this platform\n        (root) at /opt/puppetlabs/server/apps/puppetserver/jruby-1_7.jar!/META-INF/jruby.home/lib/ruby/shared/syslog.rb:20\n       require at org/jruby/RubyKernel.java:1040\n        (root) at /opt/puppetlabs/server/apps/puppetserver/jruby-1_7.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n       require at /opt/puppetlabs/server/apps/puppetserver/jruby-1_7.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54\n        invoke at jruby_core.clj:277\n        invoke at jruby_core.clj:271\n  invokeStatic at ruby.clj:9\n        invoke at ruby.clj:6\n  invokeStatic at subcommand.clj:44\n        invoke at subcommand.clj:33\n  invokeStatic at subcommand.clj:60\n        invoke at subcommand.clj:56\n  invokeStatic at ruby.clj:13\n      doInvoke at ruby.clj:11\n  invokeStatic at core.clj:646\n  invokeStatic at main.clj:314\n        invoke at main.clj:310\n  invokeStatic at main.clj:421\n      doInvoke at main.clj:384\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15957", "fixedVersions": [], "id": "15957", "issueType": "Bug", "key": "SERVER-2042", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4a5850bb2b0070b5e349", "resolution": "Won't Fix", "resolutionDate": "2017-12-05T09:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server don't start on SLES 12.1 on Power \"Syslog not supported on this platform\"", "timeSpent": "PT0S", "updated": "2017-12-05T09:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This was fixed in JRuby 9k, we need to update the version of 9k we use to pull it in.", "created": "2018-02-20T11:54:00.000000"}], "components": [], "created": "2017-11-28T06:48:00.000000", "creator": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43b140cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzif8f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_814218261_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_6461744605"}], "description": "Using a regexp with \\K to omit the text matched by the part of the regex to the left from the overall match works in MRI but not in JRuby.\nAdding this to track [jruby issue 4871|https://github.com/jruby/jruby/issues/4871].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17109", "fixedVersions": [], "id": "17109", "issueType": "Bug", "key": "SERVER-2040", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "resolution": "Fixed", "resolutionDate": "2018-02-20T11:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "A regexp with \\K doesn't work in JRuby", "timeSpent": "PT0S", "updated": "2018-02-20T11:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This doesn't actually describe a bug with Puppet Server itself. Is this blocking a PCore feature? Should it be a Language ticket if anything?", "created": "2017-12-07T17:01:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], it describes a potential issue with JRuby and regular expressions used in manifests. AFAIK, only puppetserver evaluates manifests using JRuby. Hence my choice of project. It's not blocking anything but I thought it worth while to add the ticket in case some user reports it.", "created": "2017-12-07T19:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This was fixed in JRuby 9k, we need to update the version of 9k we use to pull it in.", "created": "2018-02-20T11:54:00.000000"}], "components": [], "created": "2017-11-28T04:02:00.000000", "creator": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61f613bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzif7r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Dec/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_824190974_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_6461719829"}], "description": "A graphene character such as \"\\u0061\\u0300\" is matched by \\X when using MRI but not when using JRuby. Adding this ticket to track [jruby issue 4568|https://github.com/jruby/jruby/issues/4568].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15955", "fixedVersions": [], "id": "15955", "issueType": "Bug", "key": "SERVER-2039", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "resolution": "Fixed", "resolutionDate": "2018-02-20T11:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "A graphene is not matched by regular expression \\X", "timeSpent": "PT0S", "updated": "2018-02-20T11:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623d002eb75ca80070575e4d", "created": "2017-11-27T09:05:00.000000", "name": "puppetmaster_jmx.PNG", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10585"}, {"attacher": "623d002eb75ca80070575e4d", "created": "2017-12-04T02:16:00.000000", "name": "puppetmaster_jmx_2.PNG", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10668"}, {"attacher": "623d002eb75ca80070575e4d", "created": "2018-01-15T00:54:00.000000", "name": "puppetserver", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10741"}, {"attacher": "623d002eb75ca80070575e4d", "created": "2018-01-15T00:54:00.000000", "name": "puppetserver_conf.d.tar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10812"}, {"attacher": "623d002eb75ca80070575e4d", "created": "2017-12-04T02:16:00.000000", "name": "puppetserver_log_anon.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10586"}], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "How frequently are those nodes checking in? every half hour?\nWhat version of the agent are you using on the local puppet server?\n(We've seen some issues around the 2.x series interacting strangely with 4.10 and 5.x agents, especially around hiera 5)\nWhat versions of the agent are checking into the puppet server?\n", "created": "2017-11-27T11:57:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The increase in live threads over time seems odd. Can you create a heapdump and see what jmap or Eclipse Memory Analyzer tells you about retained objects? Yourkit can also do differential heapdump comparisons, which is helpful for pinpointing leaks.", "created": "2017-11-27T18:19:00.000000"}, {"author": "623d002eb75ca80070575e4d", "body": "Hi [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], the nodes are checking in every half hour. On the master we are using puppet 4.10.9. The other nodes should be around this starting from 4.10.\nHi [~accountid:63d40628f6e1b543161789a7], i'm currently parsing the heap dump. That takes some time. I will update the bug when finished\n\n ", "created": "2017-11-28T03:30:00.000000"}, {"author": "623d002eb75ca80070575e4d", "body": "[~accountid:63d40628f6e1b543161789a7], my java knowledge is not that good, sorry. I have parsed the heap dump with Eclipse Memory Analyzer. What information do you need exactly and how to get it ? Do you need the Histogram ? Sorted by ? Grouped by ?\n", "created": "2017-11-28T09:27:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "What's your hiera configuration look like?\n\nI'm curious if you would read through the last half of SERVER-1919 and see if there are any issues that they discuss in there that might be affecting you.\n\nTo summarize, the user was using Hiera's config format version 3, with globbing of directories that implicitly created large hierarchies. The config parsing and debug logging changed in late versions of Hiera during the four series and we've seen some performance regressions for users depending on configuration.\n\nThat's not as thorough as the heap dump, but it's probably the lowest hanging fruit as far as paths you can go down to debug on your own.\n\nIf you care to dive into Memory Analysis there's a great article here: https://puppet.com/blog/puppet-server-advanced-memory-debugging\n\nYou could also gzip the hprof and put it in an s3 bucket or similar.", "created": "2017-11-28T10:37:00.000000"}, {"author": "623d002eb75ca80070575e4d", "body": "I checked the hiera configuration and we are using hiera 5 config syntax with eyaml. Analysing the heap dump is very tricky for me. Are there any security implications from the heap dump ? Are there any sensitive data in it ? \n", "created": "2017-11-29T04:39:00.000000"}, {"author": "623d002eb75ca80070575e4d", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Is there a way to send you the link to the heap dump in person. As I do not know if there is any security relevant data in it, i do not want to post it here in public.", "created": "2017-12-01T01:18:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yeah, a heap dump will have the content of the server's memory in it, including any strings its loaded and in-memory representations of catalogs its compiling, etc.\n\nYou don't happen to have a PE license do you? Customer success has tooling to manage sensitive uploads and staff to walk through it with you.\n\nCan we get the puppetserver.log (/var/log/puppetlabs/puppetserver/puppetserver.log) that correlates to the JMX output you've uploaded? (or recent logs with corresponding JMX output) It should have node names and environments in it that might be sensitive, of course, feel free to scrub those.\n\nIf we can't track the root cause of your issue down without diving deeply into it we'll need to assign someone to work with you. We'll be looking at those kind of assignments in the next couple of weeks, just to give you a heads up on timeframes.", "created": "2017-12-01T12:56:00.000000"}, {"author": "623d002eb75ca80070575e4d", "body": " [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], I uploaded a new JMX output and the corresponding puppetserver.log. \nI'm sorry we have no PE license. If it's usefull we can organise a WebEx meeting where you can have a look in our infrastructure.\n\n", "created": "2017-12-04T02:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't see anything obvious in the server's logs. I should have mentioned that bumping the logging up to debug would be useful as well.\n\nI'll talk with folks internally over the next week or two to get working with you on this scheduled.", "created": "2017-12-04T10:14:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey Alexander, I'm going to grab this ticket to try and help get this resolved over the holidays. You can compress your heap dump and share it with me. Email me at justin at puppet dot com. \n\nWhat version of eyaml are you using?\nIs this your first time using Puppet Server? If not what changed, just an upgrade to 2.8? If so what version did you upgrade from?", "created": "2017-12-14T10:52:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hey [~accountid:623d002eb75ca80070575e4d], I got your email and I'm sorry you can't share the heap dump, however I'm not going to be able to schedule a WebEx session soon.\n\nCan you go ahead then and let me know about your {{eyaml}} version, any changes that you made prior to this happening (is this your first install of puppetserver?), as well as the contents of your {{/etc/puppetlabs/puppetserver/conf.d}} and system defaults file for puppetserver (in {{/etc/sysconfig}} or {{/etc/defaults}}).\n\nI'd also encourage you to skim through the blog article I linked to above as it would let you check the heap dump for memory leaks yourself.", "created": "2018-01-03T16:43:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Hi, have you had a chance to look into your eyaml, defaults, or look into the heap dump?", "created": "2018-01-12T11:22:00.000000"}, {"author": "623d002eb75ca80070575e4d", "body": "Hi [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], sorry for the delay, we use eyaml 2.1.0, the config files are attached. \n\nWe have another instance of puppetserver running on a different server for our development environment. There were no changes in the puppetserver setup, maybe there were some OS patches.\n\nFor the heap dump check i will need some time. ", "created": "2018-01-15T00:54:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:623d002eb75ca80070575e4d] I'm going to mark this closed for now since it's been 2 years since we've had any discussion.  If there's new information to provide please re-open the ticket and let us know.  ", "created": "2020-03-12T13:38:00.000000"}], "components": ["Puppet Server"], "created": "2017-11-27T09:06:00.000000", "creator": "623d002eb75ca80070575e4d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3776143b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymavj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_979958531_*|*_3_*:*_1_*:*_1749202281_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_69018786270_*|*_10006_*:*_1_*:*_495207265"}], "description": "After a few hours the puppet server is using all availlable CPU on the server. \nJAVA_ARGS=-Xms12g -Xmx12g -XX:MaxPermSize=256m\nmax-active-instances: 10\nServer has 8 vCPUs and 16GB RAM. There are about 240 nodes checking in.\n\nWe already run an analysis over jmx, the screenshoot is attached. \nIf you need any further information we will try to collect them.\n\n\n\n", "environment": "Puppet Server 2.8.0 running on RedHat 7.4", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15753", "fixedVersions": [], "id": "15753", "issueType": "Bug", "key": "SERVER-2038", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623d002eb75ca80070575e4d", "resolution": "Done", "resolutionDate": "2020-03-12T13:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "High load after a few hours till restart", "timeSpent": "PT0S", "updated": "2020-03-12T13:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Marked as confidential (only visible by puppet employees and reporter) so that we can triage potential security concerns around this in private.", "created": "2017-11-22T09:50:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "You mentioned ECDSA keys. How are you creating these and using them with? Asking since Puppet CA only issues RSA keys. What are you using to test the ciphers accepted by puppetserver? \nWe will investigate this and hopefully be able to get back by next week.", "created": "2017-11-22T11:12:00.000000"}, {"author": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "body": "These are used with ENC and reporting endpoint. They are issued from our local CA using the OpenSSL toolkit. Thing to note - ENC works (probably since it is run by mri ruby, not jruby) and reporting does not. I checked in the server logs as well as using java debug on puppetserver: -Djavax.net.debug=all", "created": "2017-11-22T11:43:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We've been able to reproduce this, I'm putting this up for discussion in our triage meeting for prioritization.", "created": "2017-12-04T16:15:00.000000"}, {"author": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "body": "Hi [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], I see you marked this for fixing in 5.1 branch. Can we get this backported to AIO 4?", "created": "2017-12-14T23:14:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I believe so, we're targeting this work for right after the holidays and can get back to you with the exact versions it will go out in in January.", "created": "2017-12-19T15:25:00.000000"}, {"author": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "body": "Thanks [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]! Happy Holidays!", "created": "2017-12-22T04:18:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:83749236-7e30-449e-a367-c2fdbd29b590] I've started looking into this with [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] and we had a few questions to help us reproduce it.\n\nWhen we put a string like BLARG into the cipher-suites setting (same cipher-suites setting for puppetdb) and run puppet ({{cipher-suites: [BLARG]}}), we saw the following in the puppetserver logs:\n{code}\norg.apache.http.nio.reactor.IOReactorException: I/O dispatch worker terminated abnormally\n\tat org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:356)\n\tat org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:192)\n\tat org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64)\n\tat java.lang.Thread.run(Thread.java:745)\nCaused by: java.lang.IllegalArgumentException: Unsupported ciphersuite BLARG\n\tat sun.security.ssl.CipherSuite.valueOf(CipherSuite.java:237)\n\tat sun.security.ssl.CipherSuiteList.<init>(CipherSuiteList.java:82)\n\tat sun.security.ssl.SSLEngineImpl.setEnabledCipherSuites(SSLEngineImpl.java:2038)\n\tat org.apache.http.nio.conn.ssl.SSLIOSessionStrategy$1.initalize(SSLIOSessionStrategy.java:179)\n\tat org.apache.http.nio.reactor.ssl.SSLIOSession.initialize(SSLIOSession.java:233)\n\tat org.apache.http.impl.nio.reactor.AbstractIODispatch.connected(AbstractIODispatch.java:80)\n\tat org.apache.http.impl.nio.reactor.BaseIOReactor.sessionCreated(BaseIOReactor.java:248)\n\tat org.apache.http.impl.nio.reactor.AbstractIOReactor.processNewChannels(AbstractIOReactor.java:427)\n\tat org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:287)\n\tat org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)\n\tat org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588)\n\t... 1 common frames omitted\n{code}\n\nThis tells me that the cipher-suites are being respected. When we set cipher-suites to [TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384], we saw the following in the puppetserver log:\n{code}\n2018-01-05 15:16:33,760 ERROR [qtp255308958-230] [c.p.h.c.i.PersistentSyncHttpClient] Error executing http request\njavax.net.ssl.SSLException: Received fatal alert: handshake_failure\n\tat sun.security.ssl.Alerts.getSSLException(Alerts.java:208)\n\tat sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666)\n\tat sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634)\n\tat sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1800)\n\tat sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083)\n\tat sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907)\n\tat sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)\n\tat javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)\n\tat org.apache.http.nio.reactor.ssl.SSLIOSession.doUnwrap(SSLIOSession.java:273)\n\tat org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:328)\n\tat org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSession.java:509)\n\tat org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:120)\n\tat org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)\n\tat org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)\n\tat org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)\n\tat org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)\n\tat org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)\n\tat org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588)\n\tat java.lang.Thread.run(Thread.java:745)\n{code}\n\nThis also indicates that the cipher-suite is being respected.\n\nSo, onto the questions.\n\n* Which ECDSA ciphers are you enabling in cipher-suites and if possible can you share your whole puppetserver.conf file?\n* What is your enc? The enc will still be run under jruby, but generally the enc is a script that is executed, so you may not have any certs passing through it.\n* What are you using for reports? If it is puppetdb you will also need to ensure the same cipher suites are included in puppetdb's config.ini (https://github.com/puppetlabs/puppetdb/blob/62fd4a66860620c66f1b1a0b50800db4a0fc6163/documentation/configure.markdown).\n* Are the keys and certs for your puppetserver also ECDSA or are they RSA? Some reports suggest that the handshake error we saw when using the ECDSA cipher were because we had RSA keys and certs on one end of the transaction. If you can tell us about the types of all keys and certs in play that would be most helpful.", "created": "2018-01-05T16:37:00.000000"}, {"author": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "body": "This is Puppet AIO 4.10.\n\n{{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}}\n{code}\n# configuration for the JRuby interpreters\njruby-puppet: {\n    # Where the puppet-agent dependency places puppet, facter, etc...\n    # Puppet server expects to load Puppet from this location\n    ruby-load-path: [\n        /opt/puppetlabs/puppet/lib/ruby/vendor_ruby,\n    ]\n\n    # This setting determines where JRuby will install gems.  It is used for loading gems,\n    # and also by the `puppetserver gem` command line tool.\n    gem-home: /opt/puppetlabs/server/data/puppetserver/jruby-gems\n\n    # This setting defines the complete \"GEM_PATH\" for jruby.  If set, it should include\n    # the gem-home directory as well as any other directories that gems can be loaded\n    # from (including the vendored gems directory for gems that ship with puppetserver)\n    gem-path: [${jruby-puppet.gem-home}, \"/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems\"]\n\n    # PLEASE NOTE: Use caution when modifying the below settings. Modifying\n    # these settings will change the value of the corresponding Puppet settings\n    # for Puppet Server, but not for the Puppet CLI tools. This likely will not\n    # be a problem with master-var-dir, master-run-dir, or master-log-dir unless\n    # some critical setting in puppet.conf is interpolating the value of one\n    # of the corresponding settings, but it is important that any changes made to\n    # master-conf-dir and master-code-dir are also made to the corresponding Puppet\n    # settings when running the Puppet CLI tools. See\n    # https://docs.puppetlabs.com/puppetserver/latest/puppet_conf_setting_diffs.html#overriding-puppet-settings-in-puppet-server\n    # for more information.\n\n    # (optional) path to puppet conf dir", "created": "2018-01-06T01:35:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I think foreman explains the cipher-suite issues. The http-client section of puppetserver.conf only affects http client connections that use Puppet's http pool. The report processor for foreman here (https://raw.githubusercontent.com/theforeman/puppet-foreman/master/files/foreman-report_v2.rb) uses ruby's {{net/http}} libraries directly, avoiding puppet's http pool and http libraries.\n\nTheir ENC script similarly uses {{net/http}} directly (https://raw.githubusercontent.com/theforeman/puppet-foreman/master/files/external_node_v2.rb).\n\nGlancing over their report processor, I see a config file mentioned called {{foreman.yaml}} but I don't see anything about cipher-suites or ssl-protocols being read out of it.\n\nI would recommend reaching out to them to see how they recommend changing the cipher suites or ssl protocols when using their enc/report processors.\n\nIt seems like our docs/config file comments could be updated to reflect that only puppet http pool calls will be impacted by the settings in the http-client section, so I will work on clearing that up.", "created": "2018-01-08T16:45:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "https://theforeman.org/manuals/1.16/index.html#4.3.10SSL has some details on foreman's ssl setup, but that all appears to impact server side and not the report processor or enc.", "created": "2018-01-08T16:56:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "PR open to clarify our docs and sample config file: https://github.com/puppetlabs/puppetserver/pull/1594", "created": "2018-01-08T17:40:00.000000"}, {"author": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "body": "Thanks! Docs put me in completely wrong direction. I thought puppetserver was meant to override the HTTP client defaults. I will talk to Foreman folks then.", "created": "2018-01-09T01:07:00.000000"}, {"author": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "body": "Can we mark this bug as normal (non-confidential) so that I could give them link?", "created": "2018-01-09T01:12:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:83749236-7e30-449e-a367-c2fdbd29b590] Updated", "created": "2018-01-09T11:48:00.000000"}, {"author": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "body": "Thanks, [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e]! Can I ask you for clarification about ENC being run via a standalone ruby? Because that is what I observe in Puppet AIO 4.10. (It uses a different, broader set of ciphers.)", "created": "2018-01-09T13:13:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:83749236-7e30-449e-a367-c2fdbd29b590] Oh you're right. For the external_nodes script, it will originate in jruby, but puppet just executes whatever command/script is configured (https://github.com/puppetlabs/puppet/blob/4.10.x/lib/puppet/indirector/node/exec.rb#L33), which in this case uses {{/usr/bin/env ruby}} (probably not the AIO ruby by default, but might be). So jruby will shell out to MRI ruby (whichever is first in the puppet user's $PATH).", "created": "2018-01-09T14:39:00.000000"}, {"author": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "body": "Thanks for clarification, [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e].", "created": "2018-01-10T09:57:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] please add release notes for this issue, if needed. Thanks!", "created": "2018-01-23T08:33:00.000000"}], "components": ["Puppet Server"], "created": "2017-11-22T02:40:00.000000", "creator": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@694edd55"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymatr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Updated documentation in puppetserver."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_837735489_*|*_10007_*:*_1_*:*_84392416_*|*_3_*:*_1_*:*_359411906_*|*_5_*:*_1_*:*_2326263005_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2320339353_*|*_10005_*:*_1_*:*_597324664"}], "description": "We are using reporting over HTTPS with ECDSA keys. The default cipher suites do not enable them so according to documentation we could add them to `cipher-suites` in `http-client` in `puppetserver.conf`. However, puppetserver does not seem to pick them up and still tries default non-ECDSA-based ciphers. I also tested setting `ssl-protocols` and it is not respected either. I even put total garbage in those two variables and the `puppetserver` did nothing different. I always did full `puppetserver` restart.", "environment": "CentOS 7.4\nPuppet AIO 4.10", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17108", "fixedVersions": ["SERVER 5.1.5"], "id": "17108", "issueType": "Bug", "key": "SERVER-2036", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:83749236-7e30-449e-a367-c2fdbd29b590", "resolution": "Fixed", "resolutionDate": "2018-01-09T17:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "neither ssl-protocols nor cipher-suites are respected in http-client", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This should be several tickets but I could see value in breaking it up in different ways, so I've place the entire \"spec\" here and decided to put the way I was most likely to break it up below as a strawman for discussion:\n* Break out defining the new file format and writing a script to upgrade it.\n* Chose either the modules mount point or a custom mount point as our first target to build. If modules, block this work on SERVER-2033, if a custom mount point block on defining the new file format above\n* Implement file_metadata behavior for files (not directories or links) for the given mount point above, potentially further decomposing that into checksum behavior and general perms.\n* Implement file_content for for the mount point above. I think this is the fastest path to having something useable in a manifest.\n* Implement metadata functionality for directories and links\n* Implement metadatas search functionality\n* Implement functionality for whichever of modules or custom mount points that we didn't choose above\n* Implement metadata(s) functionality for plugins, pluginfacts, and locales since they have similar search behaviors\n* Implement content functionality for plugins, pluginfacts, and locales\n* Implement metadata(s) and content functionality for tasks\n* Refactor static catalog compiler to use Puppet::Util::Checksums directly and deprecate FileServing termini used in serving from the master\n* Update the puppetlabs-puppet_enterprise and upgrade process to manage the config format transition as much as possible for users.\n", "created": "2017-11-21T16:10:00.000000"}], "components": [], "created": "2017-11-21T16:07:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Users without custom mount points should require no work besides enabling \"future_features\" on their agents and masters.\n* Users with custom mount points should be able to run a script to port their existing fileserver.conf to the new format if they do not use the % interpolations.\n* The recommendations of using hiera or facter values within the source parameter should provide simple, automatable ways for users with custom mount points that use % interpolation to upgrade.\n"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@415b3b08"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylq1r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6224970404_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_36086176304"}], "description": "This work should result in file serving that consumes the same content and endpoints that return the same data as the existing file_content, file_metadata, and file_metadatas endpoints except for the following:\n* _HTTP Responses_\n** Response bodies should be in json rather than pson\n** Response error bodies should follow the json error format of other Server endpoints\n** File metadata objects should contain the \"size\" field per PUP-5894\n* _Configuration_\n** The % interpolations will no longer be supported in file server configuration\n** Authorization policies will be done in tk-auth's auth.conf rather than inline with each custom mount point\n** The fileserver.conf will be moved from custom ini-like directives to hocon.\n** The location of the file will default from $confdir/fileserver.conf to within the Server's conf.d\n\nFor backwards compatibility these changes should live side by side the existing routes so that legacy agents may talk to newer masters that these features enabled. Newer agents should attempt the newer apis if enabled, and fall back to older apis when talking to a legacy masters.\n\nFor ease of upgrades we should provide a script to read the legacy fileserver.conf, provide recommendations if there are % interpolations, and write out a new config file if there are no issues.\n\n\n_Overview_\nThere are six main mountpoint types to handle when implementing file content, metadata, and metadatas endpoints.\n\nFive of these mount points are rooted in the modulepath for an environment and require the preceding work to determine an environments modulepath. Those mount points are \"modules\", \"plugins\", \"pluginfacts\", \"tasks\", and \"locales\". Of those five \"modules\" is the simplest since it it directly calls out what module to look for it within. Tasks also explicitly calls out the module within its request, however a valid task must include two files, so there is additional domain logic there to handle tasks. Plugins, pluginfacts, and locales all scan the entire modulepath for metadatas and present the results as a flat list. Serving these three mount points is also currently down by scanning the entire modulepath for a match. More detail is provided below in the \"mount point specific behavior\" sections. The sixth mount point handles all custom mount points\n\n\n_Custom mount points_\nCustom mount points are defined within a custom formatted fileserver.conf file.\nThe following snippet defines a foo mount point:\n{code}\n[foo]\n  path /path/to/directory/to/serve\n  allow *\n{code}\n\nThese are the simplest in that they point directly to a path on disk within their configuration. In addition to the simple name-absolute-path mapping, they allow for interpolating %h, %H, and %d within their paths to match the requesting nodes short hostname, fully qualified name, or just domain name respectively. As part of this work we are authorized to change the format to hocon, move its location to within the Server's conf.d and no longer honor the % interpolations (recommendation is to use facter facts within the source, or place the source parameter within hiera for similar functionality. The \"allow\" directive is deprecated already via tk-auth and can be removed from the new format.\n\nThe new format is up to us, it should be as simple as possible while maintaining a mapping of mount point name to path on disk. Mount point names must be valid url segments, paths must be readable by the server process. The location of the fileserver.conf is determined by the fileserverconfig Puppet setting, the default being $confdir/fileserver.conf.\n\n_API Endpoints and Formats_\n(see https://puppet.com/docs/puppet/5.3/http_api/http_file_metadata.html and the json schemas attached to the docs)\n\n_Metadata(s)_\nThe file_metadata endpoint returns the metadata for a single resource. The response body is a single json (was pson) object if the resource exists. A 404 if not.\n\nBasic input is:\n{{GET /file_metadata/<mount-point>/path/to/file_directory_or_link.txt?environment=<env-name>}}\n\nAdditional allowed query parameters are:\n* \"checksum_type\": one of the allowed checksum types described in \"Checksum behavior\" below. Default value is \"md5\".\n* \"links\": how to compute link behavior, see below for specifics.\n* \"source_permissions\": may be one of \"use\", \"ignore\", \"use_on_create\". Defaults to \"ignore\". If ignore the files are given the default of the master process's user and group, and permissions of 0644.\n\nBasic (file_metadata) Response Body:\nA json object with the keys:\n* \"checksum\": an object with the fields of \"type\" and \"value\". See below in checksum behavior for details\n* \"path\": the path on disk to the file, or directory in a search\n* \"relative_path\": relative path to files found when searching a directory, otherwise \"null\"\n* \"group\": numeric value of group id on file server\n* \"owner\": numeric value of user id on file server\n* \"mode\": permissions on file server\n* \"size\": numeric value of the size of the file on disk (New field to support PUP-5894)\n* \"type\": the type of the file this resource represents, one of \"file\", \"link\", \"directory\"\n* \"links\": the link behavior of used in computing the response, see below for details. One of \"manage\" or \"follow\"\n* \"destination\": the destination for links when set to \"manage\", otherwise \"null\".\n\n_Link Behavior_\n* When set to \"manage\" the returned resource represents a filesystem link, the permissions and checksum are those for the link itself, the destination field is the target of the link, and the type field is \"link\".\n* When set to \"follow\" the returned resource represents a file, with all the characteristics of the link target but at the location of the link.\n\n_Checksum Behavior_\n* Checksum field is an object that contains the keys \"type\" and \"value\".\n* The type is a string of the type of checksum returned, supported values are: md5, sha1, sha256, mtime, ctime, and none.\n* md5, sha1, and sha256 have \"lite\" versions that only checksum the first 512 bytes of any file.\n* The value field of the checksum object is a string with the type in curly braces followed by the value, eg {{\"{md5lite}d0a10f45491acc8743bc5a82b228f89e\"}}\n\n_Mount point specific behavior_\n* Modules mount-point returns the file metadata for the request file rooted in the \"files\" directory of the first module found on the modulepath. eg. \n\t{{GET /file_metadata/modules/foo/bar.txt}}\nWill return the metadata for file foo/files/bar.txt within the first instance of the module foo found in the modulepath.\n* Plugins and pluginfacts return the first matching relative path from the first module containing said relative path within the modulepath. Each search is rooted within the \"lib\" or 'facts.d\" directories of modules respectively. eg.\n\t\t{{GET /file_metadata/plugins/types/bar.rb}}\nWill return the metadata for file lib/types/bar.rb within the first module found matching that file in the modulepath.\n\n \n_Search (file_metadatas) Behavior_\nThe file_metadatas endpoint returns a list of file metadata that matches the specified search criteria. The response body is a list of the json objects returned by the file_metadata endpoint.\n\nBasic input:\n{{GET /file_metadatas/<mount-point>/path/to/directory?environment=<env-name>}}\n\nThis endpoint accepts all of the query parameters of file_metadata and additionally:\n* \"recurse\": whether to recurse into subdirectories\n* \"ignore\": a shell glob whose matches will be excluded from the result\n\n_Mount point specific behavior_\n* Plugins and pluginfacts search across the entire modulepath but return the results as a flat list, the first instance of a relative_path is returned regardless of how many other times it is found within other modules within the modulepath.\n\n_File content serving_\n* The file content endpoint returns the content for a single file resource. It should be streamed with a Content-Type of application/octet-stream.\n* Non existent files return a 404.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15129", "fixedVersions": [], "id": "15129", "issueType": "Improvement", "key": "SERVER-2035", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2019-03-26T10:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use clojure for file content and metadata requests", "timeSpent": "PT0S", "updated": "2019-03-26T10:13:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This beaker test https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/beaker/install/foss/30_install_dev_repos.rb#L45 is referencing a puppet-agent job that no longer exists. I suspect we need to update it to point to the correct job in the new pipeline. The job will need to define a SUITE_COMMIT otherwise we need to update the logic.", "created": "2017-11-28T16:12:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The server install is still picking up a 5.0.0 build because the -latest jobs look for a build with \"master\" in the version string (https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/beaker/install/foss/30_install_dev_repos.rb#L82-L84). However, master was removed here: https://github.com/puppetlabs/puppetserver/commit/109b4cff6e47aa8c006fda1db1d9546b1ff9b8b4#diff-0fff143854a4f5c0469a3819b978a483.\n\nI'm not positive the best way to resolve this issue, as it sounds like master currently is behind 5.x often. The easiest resolution would be to add -master back into the version string for the master branch. Any other solution I can immediately think of would involve parsing the project.clj from the master branch to get the current puppetserver version out of it.", "created": "2017-11-28T16:41:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I think the best way to get this pipeline/job green if we think it is valuable would be to update the puppet-agent job to refer to a job that actually exists and to add -master back into the version string in the master branch only.", "created": "2017-11-28T16:43:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The PRs have been merged so I'm waiting for a successful run before resolving this. It has gotten very far this time.", "created": "2017-11-30T13:45:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The latest run succeeded and i've kicked off a latest jruby9k run in the meantime.", "created": "2017-11-30T18:17:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I've seen green runs of latest and latest-jruby9k now, so this is all good.", "created": "2017-12-01T14:57:00.000000"}], "components": [], "created": "2017-11-21T11:08:00.000000", "creator": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45de7ec6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzib9j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_695381567_*|*_3_*:*_1_*:*_182383952_*|*_5_*:*_1_*:*_6540679335_*|*_6_*:*_1_*:*_0"}], "description": "The oss-puppetserver-latest pipeline is failing and does so constantly.\n\nhttp://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest/\n\nIts currently install a 5.0.0.master\n\n{code}\nBegin beaker/install/foss/30_install_dev_repos.rb\n\n* Setup Puppet Server repositories.\n  Found Cent7 repo for puppetserver version 5.0.0.master.SNAPSHOT.2017.06.06T0957\n  Installing OSS Puppet Server version '5.0.0.master.SNAPSHOT.2017.06.06T0957'\n  Fetching: http://builds.delivery.puppetlabs.net/puppetserver/5.0.0.master.SNAPSHOT.2017.06.06T0957/repo_configs/rpm/pl-puppetserver-5.0.0.master.SNAPSHOT.2017.06.06T0957-el-7-x86_64.repo\n    and saving to tmp/repo_configs/el/pl-puppetserver-5.0.0.master.SNAPSHOT.2017.06.06T0957-el-7-x86_64.repo\n  localhost $ scp tmp/repo_configs/el/pl-puppetserver-5.0.0.master.SNAPSHOT.2017.06.06T0957-el-7-x86_64.repo puppetserver-perf-sut54.delivery.puppetlabs.net:/etc/yum.repos.d/ {:ignore => }\n{code}\n\nand then fails to install an agent\n{code}\n* Setup Puppet repositories\n  Unable to get last successful build from: https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppet-agent%20suite%20pipelines/job/platform_puppet-agent_intn-van-promote_suite-daily-promotion-master/lastSuccessfulBuild/api/json, error: 404, Not Found\nEnvironment variable PUPPET_AGENT_VERSION required for package installs!\n{code}\n\nWe should\n- update this to a more current version of the server\n- fix the agent install\n- fix any other issues it has until its actually passing again", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16507", "fixedVersions": ["SERVER 5.2.0"], "id": "16507", "issueType": "CI Blocker", "key": "SERVER-2034", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "resolution": "Fixed", "resolutionDate": "2017-12-01T14:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update and fix oss-puppetserver-latest pipeline", "timeSpent": "PT0S", "updated": "2019-10-21T08:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-11-20T23:43:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "There should be no change in information served from the environments endpoint, but it should no longer require JRuby."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@421017b9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylq1j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6284056704_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_36086167277"}], "description": "The environments endpoint serves the configuration of every known environment. Retrieving that information is a byproduct of computing the modulepath for an environment, which is a prerequisite for serving files from modules. Since gathering the data served from the environments endpoint is a prerequisite for serving files, and there is little work to actually serve that data once we have it, implementing the environments endpoint in clojure gives us a nice checkpoint to see that everything is wired up correctly.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16320", "fixedVersions": [], "id": "16320", "issueType": "Improvement", "key": "SERVER-2033", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2019-03-26T10:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement environments endpoint in clojure", "timeSpent": "PT0S", "updated": "2019-03-26T10:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-11-20T23:40:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* From within clojure code, without going through JRuby, there should be the means to retrieve the modulepath for an environment\n* The modulepath should be honored if it is set in the environment.conf of the environment, otherwise the default environmentpath + basemodulepath should be honored.\n* The modulepath may allow interpolation of variables from the puppet.conf as well as referencing \"$environment\" as the current environment.\n* The modulepath/environment configuration should be cached if the appropriate environment_timeout is set to unlimited.\n* Any caching should honor invalidation from the environment_cache endpoint\n* Accessing an environment to read the environment.conf should honor any write lock that exists\n"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b9cb09"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylq1b:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6284212240_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_36086158735"}], "description": "File Serving needs to know where the modules in an environment are on disk (minimum of the modulepath per environment). This information should be refreshed as needed depending on code deployments.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15954", "fixedVersions": [], "id": "15954", "issueType": "Task", "key": "SERVER-2032", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2019-03-26T10:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide a means in clojure to retrieve environment information", "timeSpent": "PT0S", "updated": "2019-03-26T10:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Context:\n* JRuby instance borrowing and pool locking is implemented in the JRuby pool manager.\n* All requests except for status/metrics and static_file_content borrow a JRuby instance\n* FileSync locks the pool to update the code dir on a code deploy.\n* The behavior of the current locking mechanism is:\n** A write lock will not be granted until all currently active reads have finished\n** A lock request can timeout if it is not granted within a certain time frame\n** An attempt by the caller with a pending lock request, or the granted lock, to request a read will throw an IllegalStateException\n** A read request from a caller that is NOT requesting or holding the lock will block the caller until the read request can be granted (the lock is released) or a timeout is reached.\n** Callbacks may be registered and are triggered with the appropriate event type when read-requests or write-locks are requested, granted, or returned.\n", "created": "2017-11-20T23:37:00.000000"}], "components": [], "created": "2017-11-20T23:36:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "{{file-sync-versioned-code-service}} in pe-puppet-server-extensions has a way that does not depend on the JRuby service to lock the code dir from reads while it updates environments.\n"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@613d8c9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylq13:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6284427583_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_36086147204"}], "description": "Code deployment workflows update the code dir on a master during runtime, currently in PE we lock the code dir from readers while we write to it as a side effect of locking the JRuby pool (everything that currently reads from the code dir goes through JRuby). If we are to create a file server that does not depend on JRuby then we need a way to prevent reads while FileSync has a write lock on the code dir.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15750", "fixedVersions": [], "id": "15750", "issueType": "Task", "key": "SERVER-2031", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2019-03-26T10:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow locking the code dir without using JRuby", "timeSpent": "PT0S", "updated": "2019-03-26T10:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Context:\n* The JRuby service protocol includes functions for marking environments as expired, those functions use a reified instance that implements the EnvironmentRegistry Java interface as well as the EnvironmentStateContainer clojure protocol.\n* The consumers of the EnvironmentRegistry are:\n** The JRuby service (it is attached to each JRuby instance) and passed into Puppet's Ruby code\n** The master service which defines the environment_classes endpoint.\n** The puppet admin service which defines the environment_cache endpoint.\n", "created": "2017-11-20T23:34:00.000000"}], "components": [], "created": "2017-11-20T23:31:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Everything should continue to work as it is today:\n* Calls to the environment_classes endpoint should return the environment classes along with an ETag header.\n* The ETag should be honored on subsequent calls regardless of changes to the local filesystem.\n* Calls to the environment_cache endpoint should allow evicting the cache/invalidating the etag (incrementing its number)."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44fcaa6d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylq0v:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6284732924_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_36086114338"}], "description": "File serving ultimately will require more information about environments that should hook into the environment lifecycle that the environment_cache endpoint provides. The EnvironmentRegistry used by the environment_cache currently lives within the JRuby service. The environment_cache endpoint should be able to expire environment information without going through the JRuby service to do so.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15374", "fixedVersions": [], "id": "15374", "issueType": "Task", "key": "SERVER-2030", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2019-03-26T10:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow environment cache invalidation that does not depend on JRuby service", "timeSpent": "PT0S", "updated": "2019-03-26T10:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Context:\n* Puppet Server gets the config values it uses from Puppet via the PuppetServerConfigService (which depends on JRuby to host Puppet).\n* Those values are limited because Puppet Server and PuppetServerConfigService are not designed for values to change while the process is running (so they are limited to the most necessary values - certname, etc). With config file parsing being disabled in ticket SERVER-2027 we can more greedily consume Puppet settings.\n", "created": "2017-11-20T23:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So is the goal to make ALL settings available via the {{ConfigService}}?\n\nEdit: I realize now that's what the title says. Gonna add that word to the acceptance criteria.", "created": "2017-11-22T10:39:00.000000"}], "components": [], "created": "2017-11-20T23:25:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The {{PuppetServerConfigService}} should allow retrieving:\n* any Puppet setting's value\n* its canonical Ruby name\n"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@106bb960"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylq0n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6285117454_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_36086105903"}], "description": "Environment configuration parsing can interpolate Puppet settings, consequently we need many Puppet settings available to be interpolated.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15128", "fixedVersions": [], "id": "15128", "issueType": "Task", "key": "SERVER-2029", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2019-03-26T10:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Retrieve all Ruby Puppet settings from within Puppet Server", "timeSpent": "PT0S", "updated": "2019-03-26T10:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is the first case in the acceptance criteria referring to the scenario where a user has not set {{environment_timeout}} at all? Is this the same as saying it defaults to \"unlimited\"?", "created": "2017-11-22T10:36:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yes. Updated.", "created": "2017-11-22T10:44:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Suggested sub-tasks:\n* When \"future_features\" is enabled the environment_timeout defaults to \"unlimited\".\n* When \"future_features\" is enabled and a user sets environment_timeout, either in puppet.conf or an environment.conf, to a value besides 0 or \"unlimited\" they should be warned that other values are deprecated with Puppet's warn_once facility (we discussed and believe that warning once per JRuby instance start is acceptable - validate with CS?).\n", "created": "2017-11-27T16:49:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Validate with CS that there aren't important use cases for setting a numerical value between 0 and unlimited.", "created": "2017-11-27T16:50:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] I think there may be valid use-cases for environment_timeout equal to something other than 0 or unlimited.  In a scenario when you have 100s of environments that are actually used ( think lots of developers making feature branches and testing code), then you need a way to restrict memory use.  \n\nYou can use environment_timeout = 0 but then you pay the performance penalty in your regularly used environment ( like production).  You can set max_requests_per_instance to something lower but you're paying a penalty there as well and destroying and recreating jrubies is more expensive under JRuby 9k.  \n\nFinally, you can set environment_timeout to something non-zero or unlimited and that clears the code from each JRuby and is less expensive than destroying the whole JRuby.  I think [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] had concerns that this would create a lot of garbage but I know that some set of customers have it set to a non-zero or unlimited number and it they don't seem to have any issues.", "created": "2018-04-17T09:38:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] Huh, does having a non-zero value really clear code out? I recall the conclusion from PUP-8014 being that we needed to always have max_request_per_instance enabled because we never evict cache entries --- only reload them from disk.", "created": "2018-04-17T11:41:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "To answer my question: yes, we do evict expired environments whenever we retrieve an environment from memory:\n\nhttps://github.com/puppetlabs/puppet/blob/5.5.0/lib/puppet/environments.rb#L353-L356\n\nSo, environment_timeout != unlimited would be useful for controlling memory usage.", "created": "2018-04-17T12:05:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] well you bring up a good ticket there PUP-8014 describes a new setting that would be better suited for constraining memory usage in the situation I describe.  If we implement that then I think 0 and unlimited make sense as the only necessary environment_timeout values.  ", "created": "2018-04-17T12:08:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I think this ticket should be closed unless we're going to implement PUP-8014.  ", "created": "2018-06-13T17:27:00.000000"}], "components": [], "created": "2017-11-20T23:22:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* When \"future_features\" is enabled the environment_timeout defaults to \"unlimited\".\n* When \"future_features\" is enabled and a user sets environment_timeout, either in puppet.conf or an environment.conf, to a value besides 0 or \"unlimited\" they should be warned that other values are deprecated.\n"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@416e37cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylq0f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_581319626_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_17104876164_*|*_10005_*:*_1_*:*_24685154831"}], "description": "The polling for changes to the environment.conf is determined by the environment_timeout setting and is tracked based on first load per Ruby instance. When running in Puppet Server with multiple JRuby instances there may be several different TTLs being honored for the same environment. To avoid different JRuby instances having different configurations, environment_timeout values of 0 and \"unlimited\" are the only recommended values currently.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14705", "fixedVersions": [], "id": "14705", "issueType": "Improvement", "key": "SERVER-2028", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2019-03-26T10:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Deprecate anything besides 0 and \"unlimited\" for environment_timeout", "timeSpent": "PT0S", "updated": "2019-03-26T10:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "- moved to description -", "created": "2017-11-20T23:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We might be able to use the {{TTL}} type to deprecate the usage of \"0 means never reparse\" on the daemon, by making both \"0\" and \"unlimited\" accepted values for \"never reparse\", with the goal of eventually deprecating that use of \"0\". On the server, we can move to using \"0\" for \"always reparse\" and \"unlimited\" for \"never reparse\" immediately.", "created": "2017-11-27T16:33:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Suggested route to break this down into sub-tasks:\n* Change filetimout from Duration to TTL\n* If future_features enabled, default to unlimited\n* If future_features enabled, and filetimeout set to not-0-or-unlimited the user should be warned\n* Change Daemon to respect unlimited value", "created": "2017-11-27T16:39:00.000000"}], "components": [], "created": "2017-11-20T23:15:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* A user should be able to disable polling of the puppet.conf and fileserver.conf for changes.\n* When a user sets \"future_features\" setting to true they should have this behavior by default for a master process.\n* A user that sets a filetimeout to some number to poll for changes, should be warned if they have enabled \"future_features\", and this polling setting should be ignored.\n"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40b72d10"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylq07:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_581116125_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_17105505040_*|*_10005_*:*_1_*:*_24685137446"}], "description": "Puppet Server does not allow its configuration to be modified during runtime without explicit reload/restarts. Puppet allows this for its configuration, though some hook firing behavior is problematic. Engineering has had a desire to simplify the Puppet settings lifecycle, Product believes that requiring reload/restarts to re-read settings would simplify the runtime behavior of Puppet, and bringing Puppet Server and Puppet's expectations around their shared settings lifecycle would allow us to do more in Puppet Server.\n\nContext:\n* Puppet uses the {{filetimeout}} setting to determine how often to poll the filesystem for changes to configuration files.\n* Currently filetimeout is a {{Duration}} which can be set to any value like: 0, 300, 1s, 12m, 3h, etc. (where bare numbers are assumed to be seconds)...  The default is 15s.\n* This value is used by {{WatchedFile}} {{Timer}} s to determine when to poll the filesystem. Users may currently set this to a high value when they want to effectively disable polling and implicit reloading of WatchedFiles (ie, for this code 0 means always reparse)\n* The {{Daemon}} scheduler contains a job to reparse config values, it is disabled if the filetimeout is set to 0 (ie for this code, 0 means never reparse).\n* The master daemon is not used in Puppet Server, though the Agent is daemonized as part of our standard PE set up.\n* There exists a setting type {{TTL}} that allows the values of Duration, but also the value of {{unlimited}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17368", "fixedVersions": [], "id": "17368", "issueType": "Improvement", "key": "SERVER-2027", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2019-03-26T10:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update Puppet settings for configuration file timeouts", "timeSpent": "PT0S", "updated": "2019-03-26T10:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm moving this from the \"Metrics Improvements\" epic (SERVER-792) to the clojure ecosystem epic (TK-462) because I think reviewing this PR would be a intro to our metrics usage in clojure.", "created": "2017-11-22T16:37:00.000000"}], "components": ["Puppet Server"], "created": "2017-11-20T19:16:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23ba9d73"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "TK-462"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hziawf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The status endpoint now contains the number of times Puppet Server has reached its max-queued-requests limit. This should allow operators better insight into when and how much their request load is exceeding their capacity."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_150779188_*|*_1_*:*_1_*:*_5934239_*|*_10007_*:*_1_*:*_6747476101_*|*_5_*:*_1_*:*_571389649_*|*_6_*:*_1_*:*_0"}], "description": "The {{max-queued-requests}} setting was introduced in SERVER-1767 as a means to limit the number of outstanding requests waiting for a JRuby instance. We should track the number of times this limit is invoked as a metric in order to expose problematic traffic patterns.", "epicLinkSummary": "Clojure ecosystem maintenance onboarding", "estimate": "PT0S", "externalId": "14703", "fixedVersions": ["SERVER 5.2.0"], "id": "14703", "issueType": "Improvement", "key": "SERVER-2025", "labels": [], "originalEstimate": "PT0S", "parent": "10440", "parentSummary": "Clojure ecosystem maintenance onboarding", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2018-02-15T07:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Track the number of times max-queued-requests is exceeded as a metric", "timeSpent": "PT0S", "updated": "2018-02-15T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "In the process of refactoring this, it became evident that we don't actually use the {{puppet_version}} variable for anything anymore, since we only reference puppet through puppet-agent. Does it still make sense to track it in the beaker config file, given that?", "created": "2018-02-22T12:35:00.000000"}], "components": [], "created": "2017-11-16T13:06:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2102a5de"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzi8gn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_345867757_*|*_1_*:*_1_*:*_1831900789_*|*_10007_*:*_2_*:*_843318898_*|*_3_*:*_1_*:*_17080627_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6633259616"}], "description": "Currently in our Rake task to bump the puppet pins we're setting {{puppet_build_version}} to be the latest sha of the passing puppet-agent pipeline. We're also setting the {{puppet_version}} to be the sha of the puppet submodule (See [here|https://github.com/puppetlabs/puppetserver/blob/2bb41296497f1d962bebb8f83f220000f70b485f/Rakefile#L144])\n\nIn our test setups we assume the value of the puppet_build_version is the sha of the puppet-agent we want to get the repo configs from ([here|https://github.com/puppetlabs/puppetserver/blob/2bb41296497f1d962bebb8f83f220000f70b485f/acceptance/suites/pre_suite/foss/30_install_dev_repos.rb#L17])\n\nWe also assume that the puppet_version is version of puppet-agent (Not puppet itself - see [70_install_puppet.rb|https://github.com/puppetlabs/puppetserver/blob/5.1.x/acceptance/suites/pre_suite/foss/70_install_puppet.rb#L39-L59])\n\nIt's also important to note that if the else clause linked above won't work if it is followed (if the puppet_version isn't set then the calls they make shouldn't work).", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "17367", "fixedVersions": [], "id": "17367", "issueType": "Task", "key": "SERVER-2024", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2018-03-08T11:37:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Clean up puppet installation and submodule bump in acceptance tests", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Ping [~accountid:557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52], can you look at/prioritize this?", "created": "2017-12-14T17:34:00.000000"}, {"author": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "body": "I can see how it would be useful but it's not a priority for us right now.\n\nOne of the UIs for which this would be useful is puppet-task so there is a good chance we'll get to it eventually.", "created": "2017-12-14T17:36:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Still not looking like we're going to be able to prioritize this any time soon, but PRs are welcome!", "created": "2019-09-24T17:58:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T10:42:00.000000"}], "components": [], "created": "2017-11-13T05:42:00.000000", "creator": "557058:9d1d227b-434f-481d-8279-a026a8ca4bbd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d91200a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2635"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzi5r3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Dec/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_58792569029_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_77391851348"}], "description": "/puppet/v3/tasks returns just the task names.  It would be great if a way existed to also retrieve the descriptions for all task in this endpoint or another.\n\nUIs might want to show available tasks and today retrieving their descriptions is 1 call per task which is quite sub optimal.", "epicLinkSummary": "Task API Improvements", "estimate": "PT0S", "externalId": "16505", "fixedVersions": [], "id": "16505", "issueType": "New Feature", "key": "SERVER-2023", "labels": [], "originalEstimate": "PT0S", "parent": "16934", "parentSummary": "Task API Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9d1d227b-434f-481d-8279-a026a8ca4bbd", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "a way to retrieve all task names and descriptions", "timeSpent": "PT0S", "updated": "2022-03-08T10:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "/cc [~accountid:557058:89341248-d23e-4b19-a2b6-66b9bb55eb83] and [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] as this might interest you.", "created": "2017-11-09T10:07:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "the server PR has started making tests fail on certain platforms. I think I know what's going on, so I'm going to open a PR to adjust it.", "created": "2018-01-02T13:10:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "https://github.com/puppetlabs/puppetserver/pull/1586 <= re-limits the tests to only platforms with pdb installed. I think it's probably worth a second pass to look at the puppetdb_supported_platforms list to see if it can be expanded, as it looks out of date.", "created": "2018-01-02T14:38:00.000000"}], "components": [], "created": "2017-11-09T10:00:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39d9f076"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzi3tj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_454870041_*|*_1_*:*_1_*:*_89784108_*|*_10007_*:*_2_*:*_3887797561_*|*_3_*:*_1_*:*_344422053_*|*_5_*:*_1_*:*_2845383105_*|*_6_*:*_1_*:*_0"}], "description": "We currently install PDB in [acceptance/suites/pre-suites/foss|https://github.com/puppetlabs/puppetserver/blob/master/acceptance/suites/pre_suite/foss/35_install_pdb.rb] and in [acceptance/suites/tests|https://github.com/puppetlabs/puppetserver/blob/5.1.x/acceptance/suites/tests/00_smoke/puppetdb_integration.rb]. We run both of those at least in our [Smoke Acceptance Tests|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-5.1.x/].\n\nThe installation method in the pre-suite was meant to test against builds of the 4.x series (PC1) while the method in the tests was meant to test against latest release via the module. The method within the tests is probably the more robust and preferred one, but there may need to be further discussion within the ticket/with QA. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15127", "fixedVersions": ["SERVER 5.1.5"], "id": "15127", "issueType": "CI Blocker", "key": "SERVER-2022", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2018-01-03T16:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consolidate PDB testing/setup within Puppet Server acceptance", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "body": "I am currently testing this problem on a Vagrant-based standalone Puppetserver. The VM has 4 vCPUs and 8GB of memory. It uses OpenJDK 1.8.0_131.\n\nThe problem manifests itself here as well, but I have to set the heap size to 6GB for it to happen. The control repo for this Vagrant-based setup contains ten values that are Eyaml-encrypted and one Eyaml-encrypted file, using a {{hiera.yaml}} exactly like the one I described above. Only a single GPG public key (of size 2048 bit) is used for encryption so the ciphertexts are pretty short but that seems to have no impact on the problem at all", "created": "2017-11-08T08:02:00.000000"}, {"author": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "body": "I have now reduced the number of Eyaml-encrypted values to exactly one (a password in an APT repo URL), encrypted with exactly one GPG public key (the key of the Puppetserver itself in {{/etc/puppetlabs/puppet/keys/gpg/}}) and the problem persists, at a heap size of 6GB.", "created": "2017-11-08T09:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Andreas, thank you so much for reproducing this.\n\nWe are currently investigating JRuby 9k performance issues and will be including your reproducer in our tests. We will reply again once we've reproduced it on our side and have ideas regarding a path forward, though it may be a few weeks before we get to this specific use case.", "created": "2018-01-03T17:35:00.000000"}, {"author": "557058:2b6036e6-af7b-4096-9792-705f2877471e", "body": "I'm not sure I've hit the exact same issue, or at least, I'm not hitting it with hiera eyaml GPG, but I have managed to repeat the same error message with a custom function, and a google of the error message {{\"Error while evaluating a Function Call, Cannot allocate memory\"}} lead to this ticket as the only result", "created": "2018-03-16T03:48:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:2b6036e6-af7b-4096-9792-705f2877471e] Do you get a different result if  Puppet::Util::Execution.execute is used instead of Ruby's backtick syntax for running external commands?\n\nI.E.\n\n{code:ruby}\nkeyscan_res = Puppet::Util::Execution.execute(\"/bin/ssh-keyscan -p #{port} #{fqdn} 2>/dev/null\").split\n{code}", "created": "2018-03-16T08:55:00.000000"}, {"author": "557058:2b6036e6-af7b-4096-9792-705f2877471e", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] - Thanks (I'd forgotten about that method).\n\nYes, I can confirm that switching to using that method does indeed work now.\n\nApologies if I didn't help and hijacked this bug report", "created": "2018-03-16T11:47:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:2b6036e6-af7b-4096-9792-705f2877471e] Awesome, thanks for the confirmation! I suspect these issues are related, especially if hiera-eyaml-gpg is using the Ruby methods for external command execution instead of {{Puppet::Util::Execution.execute}}.\n\nMy memory of the history is hazy, but I seem to recall that JRuby tries very hard to emulate Ruby's behavior which results in a fork+exec of the JVM process --- which is really RAM-heavy and probably has some active threads that trigger a lot of COW allocation. Special support for Puppet Server was added to {{Puppet::Util::Execution.execute}} to ensure spawning of external processes is done in a lightweight manner.", "created": "2018-03-16T12:13:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've opened SERVER-2166 to better document the requirement of using Puppet::Util::Execution.execute when writing extensions.", "created": "2018-03-29T12:21:00.000000"}, {"author": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "body": "So does this mean hiera-eyaml-gpg needs to be updated to use {{Puppet::Util::Execution.execute}} instead of whatever it currently uses to call the external {{gpg}} binary?\n\nOr, even worse, does this require patching the {{ruby_gpg}} Gem?\n\nEDIT: Looking at https://github.com/sihil/hiera-eyaml-gpg/blob/master/lib/hiera/backend/eyaml/encryptors/gpg.rb#L167 it seems hiera-eyaml-gpg just calls {{RubyGpg.decrypt_string(ciphertext)}} for decryption, which in turn uses popen/spawn to call {{gpg}}, as can be seen in the stacktrace I posted above.\n\nruby_gpg is a general purpose Gem that wraps {{gpg}} so there is probably no way that the author will accept a patch that somehow makes it use {{Puppet::Util::Execution.execute}} instead of {{Open3.capture3}} (https://github.com/blaix/ruby_gpg/blob/master/lib/ruby_gpg.rb#L82). Even if he would it would also require a clean and simple way to detect if the ruby_gpg Gem is being used inside a Puppet/Puppetserver environment and only in that case use {{Puppet::Util::Execution.execute}}.\n\nWhat other options are there? Vendor a patched version of ruby_gpg with the hiera-eyaml-gpg Gem?", "created": "2018-03-29T12:47:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Yeah, I would say that the best bet for now is to duplicate {{ruby_gpg}} inside {{hiera-eyaml-gpg}} (The entire gem is a single 90 some line file). Then when {{hiera-eyaml-gpg}} tries to load {{gpgme}} if it fails it can load it's Puppet friendly version of {{ruby_gpg}}.\n\nLonger term, it might be useful for {{hiera-eyaml}} to expose an {{execute}} method that wraps {{Puppet::Util::Execution.execute}} so implementors don't have to do it themselves (and it already includes other helpers).", "created": "2018-03-29T15:39:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm happy to open a PR to the effect of the former, and work with the heira-eyaml folks towards the latter. But I probably won't get to it this week (and will open another ticket for it).", "created": "2018-03-29T15:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Created SERVER-2167 to that effect.", "created": "2018-03-29T15:46:00.000000"}], "components": ["Puppet Server"], "created": "2017-11-02T10:40:00.000000", "creator": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45c3f187"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2044"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1cf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7890019679_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_4816862678"}], "description": "We use hiera-eyaml and hiera-eyaml-gpg along with the ruby_gpg Gem (since gpgme cannot work within JRuby). Secret data in Hiera is encrypted with eyaml using GPG (our team consists of 15 people so data is encrypted with 15 public keys).\n\nWhen using JRuby 9k and setting the JVM heap size for Puppet Server to more than about 2GB I can reliably reproduce the following error on every Puppet agent node whose catalog will contain (decrypted) secret data:\n\n{noformat}\n2017-10-31 18:34:34,933 ERROR [qtp865617117-104] [puppetserver] Puppet Evaluation Error: Error while evaluating a Function Call, Cannot allocate memory - gpg at /etc/puppetlabs/code/environments/production/site/role/manifests/loadbalancer.pp:3:3 on node lb01.example.at\n2017-10-31 18:34:34,934 ERROR [qtp865617117-104] [puppetserver] Puppet Server Error: Evaluation Error: Error while evaluating a Function Call, Cannot allocate memory - gpg at /etc/puppetlabs/code/environments/production/site/role/manifests/loadbalancer.pp:3:3 on node lb01.example.at\norg/jruby/RubyProcess.java:1566:in `spawn'\norg/jruby/RubyKernel.java:1517:in `spawn'\nuri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open3.rb:206:in `popen_run'\nuri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open3.rb:102:in `popen3'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/ruby_gpg-0.3.2/lib/ruby_gpg.rb:59:in `run_command'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/ruby_gpg-0.3.2/lib/ruby_gpg.rb:52:in `decrypt_string'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-gpg-0.6/lib/hiera/backend/eyaml/encryptors/gpg.rb:167:in `decrypt'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/encrypted_tokens.rb:15:in `encrypted_value'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/encrypted_tokens.rb:80:in `create_enc_token'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/encrypted_tokens.rb:100:in `create_token'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/encrypted_tokens.rb:90:in `create_token'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/parser.rb:71:in `parse_scanner'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/parser.rb:36:in `parse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loader/../../../puppet/functions/eyaml_lookup_key.rb:85:in `decrypt'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loader/../../../puppet/functions/eyaml_lookup_key.rb:65:in `decrypt_value'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/loader/../../../puppet/functions/eyaml_lookup_key.rb:40:in `eyaml_lookup_key'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:60:in `invoke'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:43:in `block in dispatch'\norg/jruby/RubyKernel.java:1120:in `catch'\n{noformat}\n\nThis happens with both Oracle Java 1.8.0_144 and OpenJDK 1.8.0_131.\n\nThe contents of /etc/default/puppetserver, where the heap size is set and JRuby 9k is enabled:\n\n{noformat}\nJAVA_BIN=\"/usr/bin/java\"\nJAVA_ARGS=\"-Xms4G -Xmx4G -XX:MaxMetaspaceSize=512m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger\"\nJAVA_ARGS_CLI=\"\"\nUSER=\"puppet\"\nGROUP=\"puppet\"\nINSTALL_DIR=\"/opt/puppetlabs/server/apps/puppetserver\"\nCONFIG=\"/etc/puppetlabs/puppetserver/conf.d\"\nJRUBY_JAR=\"/opt/puppetlabs/server/apps/puppetserver/jruby-9k.jar\"\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/\"\nSERVICE_STOP_RETRIES=60\nSTART_TIMEOUT=300\nRELOAD_TIMEOUT=120\n{noformat}\n\nAs soon as I comment the {{JRUBY_JAR}} line and restart Puppet Server, so that it uses JRuby 1.7, this error is no longer reproducible.\n\nThis is concerning because a decently powerful Puppet Server machine with quite a few CPUs/cores will definitely require a larger JVM heap size than 2GB (see https://puppet.com/docs/puppetserver/5.1/tuning_guide.html#jvm-heap-size), otherwise the JVM gets bogged down garbage collecting very quickly. In this particular case we have a standalone Puppet Server with 4 vCPUs and 8GB RAM. According to the tuning guide the JVM's heap size should be least 2560MB. But even such a moderate heap size results in the above error when JRuby 9k is enabled. We also have Puppet Server instances with 12 vCPUs and 16GB RAM (not yet productive) and they would need even more heap space, probably around 7GB.\n\nI suppose this is not really a bug in Puppet Server but in JRuby, and it probably has to do with the way JRuby 9k changed the ways it does process and IO handling. From what little I could gather researching this issue the problem may be that the {{gpg}} processes used to decrypt the secret data produce \"too much\" output for JRuby to handle properly, but why this is related to the JVM's heap size I don't know.\n\nI have yet to try reducing the number of public keys with which the secret data is encrypted, in an effort to decrease the size of the ciphertexts. Maybe that really makes a difference.\n\nI am reporting this problem here because JRuby 9k will probably be enabled by default in future Puppet releases and then this will probably hit more people than just us (I don't believe we are the only organisation using hiera-eyaml and hiera-eyaml-gpg with Puppet Server). Maybe there is something that can be done to mitigate this issue in Puppet Server?\n\nSome more info:\n\n{noformat}\n# /opt/puppetlabs/server/bin/puppetserver gem list\n\n*** LOCAL GEMS ***\n\ndeep_merge (1.1.1)\nfast_gettext (1.1.0)\ngettext (3.2.2)\ngettext-setup (0.28)\nhiera-eyaml (2.1.0)\nhiera-eyaml-gpg (0.6)\nhighline (1.6.21)\nhocon (1.2.5)\njar-dependencies (0.2.6)\njruby-openssl (0.9.19 java)\njson (1.8.0 java)\nlocale (2.1.2)\nrake (10.1.0)\nrdoc (4.1.2)\nruby_gpg (0.3.2)\nsemantic_puppet (0.1.3)\ntext (1.3.1)\ntrollop (2.1.2)\n{noformat}\n\nhiera.yaml:\n\n{noformat}\n---\nversion: 5\ndefaults:\n  datadir: hieradata\n  data_hash: yaml_data\n\nhierarchy:\n  - name: Eyaml-encrypted data\n    datadir: hieradata\n    lookup_key: eyaml_lookup_key\n    options:\n      extension: yaml\n      encrypt_method: gpg\n      gpg_gnupghome: \"/etc/puppetlabs/puppet/keys/gpg\"\n      gpg_always_trust: true\n    paths:\n      - \"nodes/%{trusted.domain}/%{trusted.hostname}.yaml\"\n      - \"services/%{facts.stage}/%{facts.service}.yaml\"\n      - \"services/%{facts.service}.yaml\"\n      - \"domains/%{trusted.domain}.yaml\"\n      - \"stages/%{facts.stage}.yaml\"\n      - common.yaml\n      - users.yaml\n      - repos.yaml\n      - sshdata.yaml\n      - ssldata/common.yaml\n\n  - name: Per-node data\n    path: \"nodes/%{trusted.domain}/%{trusted.hostname}.yaml\"\n\n  - name: Service data per stage\n    path: \"services/%{facts.stage}/%{facts.service}.yaml\"\n\n  - name: Service data\n    path: \"services/%{facts.service}.yaml\"\n\n  - name: Domain data\n    path: \"domains/%{trusted.domain}.yaml\"\n\n  - name: Stage data\n    path: \"stages/%{facts.stage}.yaml\"\n\n  - name: OS data per OS release (codename)\n    path: \"os/%{facts.os.name}/%{facts.os.distro.codename}.yaml\"\n\n  - name: OS data\n    path: \"os/%{facts.os.name}.yaml\"\n\n  - name: Common data\n    path: common.yaml\n\n  - name: User account and group data\n    path: users.yaml\n\n  - name: Package repositories\n    path: repos.yaml\n\n  - name: SSH key data\n    path: sshdata.yaml\n\n  - name: TLS/SSL certificate, key and other related data\n    path: ssldata/common.yaml\n\n  - name: File data, potentially Eyaml-encrypted\n    datadir: hierafiles\n    lookup_key: file_eyaml_lookup_key\n    options:\n      interpolate: false\n      extension: enc\n      encrypt_method: gpg\n      gpg_gnupghome: \"/etc/puppetlabs/puppet/keys/gpg\"\n      gpg_always_trust: true\n    paths:\n      - \"nodes/%{trusted.domain}/%{trusted.hostname}.d\"\n      - \"services/%{facts.stage}/%{facts.service}.d\"\n      - \"services/%{facts.service}.d\"\n      - \"domains/%{trusted.domain}.d\"\n      - \"stages/%{facts.stage}.d\"\n      - common.d\n      - users.d\n      - repos.d\n      - sshdata.d\n      - ssldata/common.d\n{noformat}", "environment": "Ubuntu 16.04, Oracle Java 1.8.0_144 and OpenJDK 1.8.0_131", "epicLinkSummary": "JRuby performance improvements", "estimate": "PT0S", "externalId": "16503", "fixedVersions": [], "id": "16503", "issueType": "Bug", "key": "SERVER-2021", "labels": ["needs_repro"], "originalEstimate": "PT0S", "parent": "14707", "parentSummary": "JRuby performance improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "resolution": "Done", "resolutionDate": "2018-03-29T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Cannot allocate memory for 'gpg' with JRuby 9k and \"large\" JVM heap size", "timeSpent": "PT0S", "updated": "2019-06-27T16:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5aed1ed3-f3b3-4dd3-bebb-5b3bf9907bc5", "body": "[~accountid:557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c] Hi!\nThis ticket was generated using the link on https://confluence.puppetlabs.com/display/ENG/Maintenance but has not been closed - How should we update the link on that page so that tickets made that way make it onto the regular Server triage?", "created": "2017-11-13T10:52:00.000000"}, {"author": "557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c", "body": "Fixed.", "created": "2017-11-15T20:02:00.000000"}], "components": [], "created": "2017-10-30T16:31:00.000000", "creator": "557058:5aed1ed3-f3b3-4dd3-bebb-5b3bf9907bc5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38b050e5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhvnz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1398639260_*|*_6_*:*_1_*:*_0"}], "description": "This ticket is just to verify that the Create Ticket link in https://confluence.puppetlabs.com/display/ENG/Maintenance is up to date. [http://24.media.tumblr.com/tumblr_m32m03lv8J1qivhiio1_400.gif] and close this ticket as proof that it made it to the correct triage board!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17366", "fixedVersions": [], "id": "17366", "issueType": "Bug", "key": "SERVER-2020", "labels": ["cs_pr_review"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5aed1ed3-f3b3-4dd3-bebb-5b3bf9907bc5", "resolution": "Fixed", "resolutionDate": "2017-11-15T20:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Triage Test", "timeSpent": "PT0S", "updated": "2017-11-15T20:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "body": "This would also simplify the addition of compile masters for users whose puppet servers are not allowed to access the internet: a common support issue.", "created": "2018-01-19T16:33:00.000000"}, {"author": "557058:ea8d8852-0291-4b62-9047-0e4b235efa5d", "body": "Should we vendor the gem in puppet as well, so that {{puppet lookup}} works 'out of the box' as well?", "created": "2018-01-29T15:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Opened up a second PR adding this to pe-pse's gem list as well.", "created": "2018-02-01T10:16:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please add release notes for this issue, if needed. Thanks!", "created": "2018-02-05T08:36:00.000000"}], "components": ["Puppet Server"], "created": "2017-10-30T15:30:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6896accb"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - $$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - 25-50% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Some customers indicated they are seriously considering moving to Ansible because it has vault(the eyaml like solution for ansible) built in and supported. To have parity we need something like that and eyaml would seem to be the simplest way to get there."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjid3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The hiera-eyaml gem will now be installed with puppetserver by default, enabling out-of-the-box use of this encrypted Hiera backend."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_787474162_*|*_1_*:*_1_*:*_7587516657_*|*_10007_*:*_2_*:*_266277179_*|*_3_*:*_1_*:*_5289800_*|*_5_*:*_1_*:*_660584624_*|*_6_*:*_1_*:*_0"}], "description": "Now that Hiera 5 is out, there's support for eyaml lookups per hierarchy level. But although the eyaml backend is included, users still need to install the hiera-eyaml gem separately in order to make use of it. It'd be beneficial to include it as part of the packages, so things work out of the box.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15952", "fixedVersions": ["SERVER 5.2.0"], "id": "15952", "issueType": "Improvement", "key": "SERVER-2066", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Fixed", "resolutionDate": "2018-02-15T07:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Include hiera-eyaml gem in puppetserver packages", "timeSpent": "PT0S", "updated": "2019-04-04T12:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This may be related to the work merged at https://github.com/puppetlabs/puppetserver/pull/1480 for SERVER-1315. We should look into using this autosigner as a part of the associated tests.", "created": "2017-10-30T14:30:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "I believe this is an error found in the log when [~accountid:557058:fb8538fd-0598-49ab-a3d5-e10092b8f4e1] was hitting this.\n\n{code}\n2017-10-30 13:38:38,746 ERROR [qtp73067026-94] [p.r.core] Internal Server Error: java.lang.IllegalArgumentException: Expected a KeyPair, got org.bouncycastle.asn1.pkcs.PrivateKeyInfo@7d427f5e\n{code}\n", "created": "2017-10-30T15:57:00.000000"}, {"author": "623c1458ee1b5a00702936ab", "body": "We are getting the same error. Client shows:\n\n\n{code:java}\nError: Could not request certificate: Error 500 on SERVER: Internal Server Error: java.lang.IllegalArgumentException:Expected a KeyPair, got org.bouncycastle.asn1.pkcs.PrivateKeyInfo@284afa4f\n{code}\n\nThis is on Puppet 5.3.3 CE.", "created": "2018-01-11T05:43:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I ran into this error message as well and after some research I believe our underlying ssl library is loading PKCS#1 formatted private keys correctly (as a KeyPair where it can access the public portion of the key) but is loading PKCS#8 formatted private keys as a PrivateKey only (not including a public key).\n\nI'd need to write a test to ensure that's what's happening (and probably won't until this ticket is priortized), but superficially that's what it seems like. If true, we may be able to have our underlying library coerce the PrivateKey into a KeyPair if it finds a PKCS#8 formatted private key.\n\n\u00a0\n\nFor the mean time a work around might be to reformat the private key to PKCS#1. Let me know if that works for you.", "created": "2018-06-07T11:02:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'll work on trying to repro this and see if I can fix it.", "created": "2019-01-25T16:01:00.000000"}, {"author": "557058:515b7c65-6c1b-4da3-aa11-00115439814b", "body": "Has there been any progress on this?\n\nI'm trying to upgrade my puppet setup from 3 to 5 while maintaining my old intermediate ca certificates and get this exact error when trying to create, or clean a certificate through the puppetserver ca command.\n\n[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]: Do you have suggestions for how to convert the private key to PKCS#1? I couldn't find any instructions for how to do this.", "created": "2019-03-19T10:03:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The command to reformat /etc/puppetlabs/puppet/ssl/ca/ca_key.pem from pkcs8 to pkcs1 is:\n{code}\n/opt/puppetlabs/puppet/bin/openssl pkcs8 -nocrypt -traditional -in ca_key.pem-pkcs8 -out ca_key.pem\n{code}\n\nAfter doing this, you'll need to restart the server.", "created": "2019-03-19T10:06:00.000000"}, {"author": "557058:515b7c65-6c1b-4da3-aa11-00115439814b", "body": "It seems like the \"-traditional\" switch doesn't exist in the openssl binary for 5.3 which is what I have installed, but from my understanding not using that switch should still give me a pkcs1 file.\nSo I tried that, but there is no difference between the input and the output file. I also tried with -topk8 to reverse the process in case my file was already pkcs1, but again this produces an identical file.\n\nSo I'm kind of stumped here. Not really sure how the file should look or what format it is in, but it does work fine in puppet 3, as well as with the depricated \"puppet ca\" command.", "created": "2019-03-20T07:31:00.000000"}, {"author": "5b64ddd7d1e8dc2d916c6289", "body": "This appears to currently be happening on FIPS installs.\n{code}\n[root@l8wetidcsj3jgln puppet-enterprise-2019.2.0-rc7-8-gc533988-redhatfips-7-x86_64]# puppetserver ca sign --all\nError:\n    code: 500\n    body: Internal Server Error: java.lang.IllegalArgumentException: Expected a KeyPair, got org.bouncycastle.asn1.pkcs.PrivateKeyInfo@54cd2c8f\n{code}\n{code}\n2019-08-16T16:40:03.220Z ERROR [qtp2104071237-171] [p.r.core] Internal Server Error: java.lang.IllegalArgumentException: Expected a KeyPair, got org.bouncycastle.asn1.pkcs.PrivateKeyInfo@54cd2c8f\n        at com.puppetlabs.ssl_utils.SSLUtils.pemToKeyPairs(SSLUtils.java:653)\n        at com.puppetlabs.ssl_utils.SSLUtils.pemToKeyPair(SSLUtils.java:671)\n        at com.puppetlabs.ssl_utils.SSLUtils.pemToCaCert(SSLUtils.java:531)\n        at puppetlabs.ssl_utils.core$fn__22678$pem__GT_ca_cert__22683$fn__22684.invoke(core.clj:640)\n        at puppetlabs.ssl_utils.core$fn__22678$pem__GT_ca_cert__22683.invoke(core.clj:633)\n        at puppetlabs.puppetserver.certificate_authority$fn__55215$get_certificate_statuses__55220$fn__55224.invoke(certificate_authority.clj:1383)\n        at puppetlabs.puppetserver.certificate_authority$fn__55215$get_certificate_statuses__55220.invoke(certificate_authority.clj:1380)\n        at puppetlabs.services.ca.certificate_authority_core$certificate_statuses$fn__56746$fn__56749.invoke(certificate_authority_core.clj:306)\n        at liberator.core$run_handler.invokeStatic(core.clj:176)\n        at liberator.core$run_handler.invoke(core.clj:131)\n        at liberator.core$handle_ok.invokeStatic(core.clj:224)\n        at liberator.core$handle_ok.invoke(core.clj:224)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$multiple_representations_QMARK_.invokeStatic(core.clj:232)\n        at liberator.core$multiple_representations_QMARK_.invoke(core.clj:232)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$put_to_existing_QMARK_.invokeStatic(core.clj:305)\n        at liberator.core$put_to_existing_QMARK_.invoke(core.clj:305)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$post_to_existing_QMARK_.invokeStatic(core.clj:308)\n        at liberator.core$post_to_existing_QMARK_.invoke(core.clj:308)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$method_patch_QMARK_.invokeStatic(core.clj:315)\n        at liberator.core$method_patch_QMARK_.invoke(core.clj:315)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$method_delete_QMARK_.invokeStatic(core.clj:317)\n        at liberator.core$method_delete_QMARK_.invoke(core.clj:317)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$if_modified_since_exists_QMARK_.invokeStatic(core.clj:337)\n        at liberator.core$if_modified_since_exists_QMARK_.invoke(core.clj:337)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$if_none_match_exists_QMARK_.invokeStatic(core.clj:355)\n        at liberator.core$if_none_match_exists_QMARK_.invoke(core.clj:355)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$if_unmodified_since_exists_QMARK_.invokeStatic(core.clj:375)\n        at liberator.core$if_unmodified_since_exists_QMARK_.invoke(core.clj:375)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$if_match_exists_QMARK_.invokeStatic(core.clj:389)\n        at liberator.core$if_match_exists_QMARK_.invoke(core.clj:389)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$exists_QMARK_.invokeStatic(core.clj:392)\n        at liberator.core$exists_QMARK_.invoke(core.clj:392)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$processable_QMARK_.invokeStatic(core.clj:395)\n        at liberator.core$processable_QMARK_.invoke(core.clj:395)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$encoding_available_QMARK_.invokeStatic(core.clj:399)\n        at liberator.core$encoding_available_QMARK_.invoke(core.clj:399)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$accept_encoding_exists_QMARK_.invokeStatic(core.clj:416)\n        at liberator.core$accept_encoding_exists_QMARK_.invoke(core.clj:416)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$accept_charset_exists_QMARK_.invokeStatic(core.clj:429)\n        at liberator.core$accept_charset_exists_QMARK_.invoke(core.clj:429)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$accept_language_exists_QMARK_.invokeStatic(core.clj:443)\n        at liberator.core$accept_language_exists_QMARK_.invoke(core.clj:443)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$media_type_available_QMARK_.invokeStatic(core.clj:453)\n        at liberator.core$media_type_available_QMARK_.invoke(core.clj:453)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$accept_exists_QMARK_.invokeStatic(core.clj:456)\n        at liberator.core$accept_exists_QMARK_.invoke(core.clj:456)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$is_options_QMARK_.invokeStatic(core.clj:473)\n        at liberator.core$is_options_QMARK_.invoke(core.clj:473)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$valid_entity_length_QMARK_.invokeStatic(core.clj:476)\n        at liberator.core$valid_entity_length_QMARK_.invoke(core.clj:476)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$known_content_type_QMARK_.invokeStatic(core.clj:479)\n        at liberator.core$known_content_type_QMARK_.invoke(core.clj:479)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$valid_content_header_QMARK_.invokeStatic(core.clj:481)\n        at liberator.core$valid_content_header_QMARK_.invoke(core.clj:481)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$allowed_QMARK_.invokeStatic(core.clj:484)\n        at liberator.core$allowed_QMARK_.invoke(core.clj:484)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$authorized_QMARK_.invokeStatic(core.clj:487)\n        at liberator.core$authorized_QMARK_.invoke(core.clj:487)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$malformed_QMARK_.invokeStatic(core.clj:490)\n        at liberator.core$malformed_QMARK_.invoke(core.clj:490)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$method_allowed_QMARK_.invokeStatic(core.clj:493)\n        at liberator.core$method_allowed_QMARK_.invoke(core.clj:493)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$uri_too_long_QMARK_.invokeStatic(core.clj:496)\n        at liberator.core$uri_too_long_QMARK_.invoke(core.clj:496)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$known_method_QMARK_.invokeStatic(core.clj:499)\n        at liberator.core$known_method_QMARK_.invoke(core.clj:499)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$service_available_QMARK_.invokeStatic(core.clj:502)\n        at liberator.core$service_available_QMARK_.invoke(core.clj:502)\n        at liberator.core$decide.invokeStatic(core.clj:87)\n        at liberator.core$decide.invoke(core.clj:74)\n        at liberator.core$initialize_context.invokeStatic(core.clj:504)\n        at liberator.core$initialize_context.invoke(core.clj:504)\n        at liberator.core$run_resource.invokeStatic(core.clj:595)\n        at liberator.core$run_resource.invoke(core.clj:593)\n        at puppetlabs.services.ca.certificate_authority_core$certificate_statuses$fn__56746.invoke(certificate_authority_core.clj:293)\n        at compojure.response$fn__17874.invokeStatic(response.clj:33)\n        at compojure.response$fn__17874.invoke(response.clj:21)\n        at compojure.response$fn__17847$G__17842__17854.invoke(response.clj:6)\n        at puppetlabs.services.ca.certificate_authority_core$fn__56758$web_routes__56763$fn__56764$fn__56767.invoke(certificate_authority_core.clj:316)\n        at bidi.ring$fn__17661.invokeStatic(ring.cljc:25)\n        at bidi.ring$fn__17661.invoke(ring.cljc:21)\n        at bidi.ring$fn__17646$G__17641__17655.invoke(ring.cljc:16)\n        at puppetlabs.comidi$make_handler$fn__19577.invoke(comidi.clj:245)\n        at puppetlabs.trapperkeeper.authorization.ring_middleware$fn__50310$wrap_authorization_check__50315$fn__50316$fn__50317.invoke(ring_middleware.clj:290)\n        at puppetlabs.ring_middleware.core$fn__23656$wrap_bad_request__23665$fn__23668$fn__23674.invoke(core.clj:170)\n        at puppetlabs.puppetserver.ringutils$fn__24683$wrap_with_trapperkeeper_or_client_whitelist_authorization__24688$fn__24689$fn__24693.invoke(ringutils.clj:124)\n        at puppetlabs.i18n.core$locale_negotiator$fn__124.invoke(core.clj:357)\n        at puppetlabs.ring_middleware.core$fn__23754$wrap_uncaught_errors__23763$fn__23766$fn__23771.invoke(core.clj:216)\n        at puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__24672.invoke(ringutils.clj:83)\n        at puppetlabs.ring_middleware.core$fn__23404$wrap_response_logging__23409$fn__23410$fn__23411.invoke(core.clj:53)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__44475.invoke(jetty9_core.clj:434)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n        at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:498)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:167)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:102)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$fn__44053$normalize_uri_handler__44058$fn__44059$fn__44060.invoke(normalized_uri_helpers.clj:74)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:205)\n        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)\n        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\n        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\n        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724)\n        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n        at com.puppetlabs.trapperkeeper.services.webserver.jetty9.utils.MDCRequestLogHandler.handle(MDCRequestLogHandler.java:36)\n        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.Server.handle(Server.java:531)\n        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)\n        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)\n        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)\n        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:291)\n        at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:151)\n        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\n        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)\n        at java.lang.Thread.run(Thread.java:748)\n{code}", "created": "2019-08-16T10:58:00.000000"}], "components": [], "created": "2017-10-30T14:19:00.000000", "creator": "557058:fb8538fd-0598-49ab-a3d5-e10092b8f4e1", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@784698ae"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - $$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "2 - 5-25% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The intermediate CA setup is difficult from the start, and then to run into autosigning not working, not great.\n\nThe large users who want intermediate CAs are also quite likely to want autosigning. Many of them will have some sort of automated provisioning which need this functionality."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - Serious"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywfev:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server's CA can now handle keys in the PKCS#8 format, which is required when running in FIPS mode."}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "33090"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_518629727_*|*_1_*:*_1_*:*_8742009211_*|*_10007_*:*_1_*:*_321158445_*|*_3_*:*_2_*:*_300549633_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_47557064195"}], "description": "Important caveats for reproduction:\n- Puppet server configured as intermediate CA to on-site root CA\n- Using this module: https://github.com/dnase/autosign\n- When piping a CSR into the script manually, everything works fine. Exit code 0\n- Also tested autosign script using puppetserver jruby (/opt/puppetlabs/server/bin/puppetserver ruby)\n- puppet.conf on the MoM is set with autosign = /etc/puppetlabs/puppet/autosign.rb\n- pe-puppet owns autosign.rb, permissions are 700\n\nConditions:\n- No errors show in the logs\n- CSRs do not get autosigned\n- `puppet cert sign` works fine, but signing certificates through the console does not work.", "environment": "Puppet Enterprise 2017.3.1", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "17107", "fixedVersions": ["SERVER 6.6.0"], "id": "17107", "issueType": "Bug", "key": "SERVER-2019", "labels": ["resolved-issue-added"], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fb8538fd-0598-49ab-a3d5-e10092b8f4e1", "resolution": "Fixed", "resolutionDate": "2019-08-26T09:43:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "ssl-util can only load pkcs #1 formated keys, not pkcs #8", "timeSpent": "PT0S", "updated": "2020-04-21T11:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Looks like Kenn maybe did this too?", "created": "2017-11-07T10:53:00.000000"}], "components": [], "created": "2017-10-30T10:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f95cd35"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuxj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2578_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_695565896"}], "description": "(Initial planned release date: 2017-11-07)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%225.1.4%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16502", "fixedVersions": [], "id": "16502", "issueType": "Sub-task", "key": "SERVER-2018", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-07T10:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Updated", "created": "2017-11-07T10:31:00.000000"}], "components": [], "created": "2017-10-30T10:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37b958b7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuxb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2547_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_694145929"}], "description": "(Initial planned release date: 2017-11-07)\n\nUpdate dujour to notify users to use 5.1.4.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16319", "fixedVersions": [], "id": "16319", "issueType": "Sub-task", "key": "SERVER-2017", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-07T10:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 5.1.4 (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [], "components": [], "created": "2017-10-30T10:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c61e345"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhux3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2885_*|*_3_*:*_1_*:*_269033_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_631542579"}], "description": "(Initial planned release date: 2017-11-07)\n\n  * [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15951", "fixedVersions": [], "id": "15951", "issueType": "Sub-task", "key": "SERVER-2016", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-06T17:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[PR filed to ship the Server docs|https://github.com/puppetlabs/puppet-docs/pull/814].", "created": "2017-11-02T18:44:00.000000"}], "components": [], "created": "2017-10-30T10:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ddc7199"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuwv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2466_*|*_3_*:*_1_*:*_13293_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_631518573"}], "description": "(Initial planned release date: 2017-11-07)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15748", "fixedVersions": [], "id": "15748", "issueType": "Sub-task", "key": "SERVER-2015", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-06T17:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "attachments": [], "comments": [{"author": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "body": "!!! I need to edit the Winston ticket for this with updated information !!!!", "created": "2017-11-07T09:24:00.000000"}], "components": [], "created": "2017-10-30T10:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7267290e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuwn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2636_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_624345379"}], "description": "(Initial planned release date: 2017-11-07)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15373", "fixedVersions": [], "id": "15373", "issueType": "Sub-task", "key": "SERVER-2014", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-06T15:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2017-11-07T09:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2017-10-30T10:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e1750d9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuwf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2470_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_623052838"}], "description": "(Initial planned release date: 2017-11-07)\n\nThis should happen Monday-Thursday, before noon PST. We should not be shipping anything after noon PST or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:89341248-d23e-4b19-a2b6-66b9bb55eb83]\n  * [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15126", "fixedVersions": [], "id": "15126", "issueType": "Sub-task", "key": "SERVER-2013", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-06T14:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] & [~accountid:557058:89341248-d23e-4b19-a2b6-66b9bb55eb83] this is the manual testing ticket for the Server release. I don't know if John is doing all the testing or if Eric's jumping on the Server part, or if I should do some smoke tests?", "created": "2017-11-02T14:23:00.000000"}, {"author": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "body": "Tested bits with \n\n  * puppet-agent-5.3.3\n  * puppetserver-5.1.4\n  * puppetdb-5.1.2\n  * puppetdb-termini-5.1.2\n\nServer \n* Redhat7\n\nAgent\n* Centos5-32\n* OSX1012\n* Fedora-26-64\n* Solaris11-64\n* Windows2016-64\n\nAgent Gem\n* centos6-64\n* Windows2016-64\n", "created": "2017-11-03T15:44:00.000000"}], "components": [], "created": "2017-10-30T10:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@578bcb5e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuw7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2804_*|*_3_*:*_1_*:*_21332632_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_342399804"}], "description": "(Initial planned release date: 2017-11-07)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14700", "fixedVersions": [], "id": "14700", "issueType": "Sub-task", "key": "SERVER-2012", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2017-11-03T15:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2017-11-03T15:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Tagged via Kerminator and waiting for Jenkins to release packages.", "created": "2017-11-02T11:58:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Packages were built and pushed to builds, the packages are now working their way through acceptance testing.", "created": "2017-11-02T14:21:00.000000"}], "components": [], "created": "2017-10-30T10:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@756e6be2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuvz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_7602028_*|*_1_*:*_1_*:*_2701_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_264796966"}], "description": "(Initial planned release date: 2017-11-07)\n\nTag and create packages\n\n  * Tag using kerminator: ! tag <repository> 5.1.4 at <long sha> with \"5.1.4\"\n  * Build using jenkins, or by running `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17365", "fixedVersions": [], "id": "17365", "issueType": "Sub-task", "key": "SERVER-2011", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-02T14:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] I think we're ready for you on this. Please see [this comment|https://puppet.atlassian.net/browse/SERVER-2005?focusedCommentId=502701&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-502701] for the tickets that will be released in this version.", "created": "2017-11-02T10:51:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] You got it, dude.", "created": "2017-11-02T11:13:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Filed [PR 1554|https://github.com/puppetlabs/puppetserver/pull/1554].", "created": "2017-11-02T16:34:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Merged by [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69].", "created": "2017-11-03T18:49:00.000000"}], "components": [], "created": "2017-10-30T10:41:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a76b570"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuvr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2381_*|*_10007_*:*_1_*:*_94586206_*|*_3_*:*_1_*:*_19197152_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_261043541"}], "description": "(Initial planned release date: 2017-11-07)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17106", "fixedVersions": [], "id": "17106", "issueType": "Sub-task", "key": "SERVER-2010", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-03T18:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Marking this as released before it's released seems wrong. Especially because there STILL seems to be some confusion about the final date we will release. Consequently I'm going to wait until we actually release this version before marking it as released.... Master of Puppet Server is pointing to 5.2.0, ensured that our next version is available in JIRA as \"SERVER 5.2.0\".", "created": "2017-11-02T10:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Marked this as blocked since this won't be completed until we've actually shipped.", "created": "2017-11-02T10:57:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I believe Kenn did this.", "created": "2017-11-07T10:52:00.000000"}], "components": [], "created": "2017-10-30T10:41:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78141c0c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuvj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2672_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_435377618_*|*_10006_*:*_1_*:*_260081029"}], "description": "(Initial planned release date: 2017-11-07)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16730", "fixedVersions": [], "id": "16730", "issueType": "Sub-task", "key": "SERVER-2009", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-07T10:52:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2017-11-07T10:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We do not need to merge down for this release, however we will merge up afterwards. That work will be done post release as part of the clean up, not as part of this ticket.", "created": "2017-11-02T10:49:00.000000"}], "components": [], "created": "2017-10-30T10:41:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@520d0444"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuvb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2613_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_259657453"}], "description": "(Initial planned release date: 2017-11-07)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16572", "fixedVersions": [], "id": "16572", "issueType": "Sub-task", "key": "SERVER-2008", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2017-11-02T10:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Version number updated in the 5.1.4 branch at https://github.com/puppetlabs/puppetserver/commit/628ec6ef0f4ae6101b6d4811ee324361499ca07f", "created": "2017-11-02T11:44:00.000000"}], "components": [], "created": "2017-10-30T10:41:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49d0766b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuv3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2542_*|*_10007_*:*_1_*:*_3353362_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_259594815"}], "description": "(Initial planned release date: 2017-11-07)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16318", "fixedVersions": [], "id": "16318", "issueType": "Sub-task", "key": "SERVER-2007", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-02T11:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "{code}\nEnter Git From Rev: 5.1.3\nEnter Git To Rev: |master| 5.1.4\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: |SERVER 5.1.4|\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100  1471  100  1362  100   109   2803    224 --:--:-- --:--:-- --:--:--  2808\n** DOCS\n    1c4c4e4  (DOC-3372)(CPR-429) Note packaging change.\n    da82718  (SERVER-1982) Add 5.1.3 release notes.\n** I18N\n    5854d10  Update strings in puppetserver.pot file\n** MAINT\n    202116a  update puppet submodule version and pins\n    9bc854c  update puppet submodule version and pins\n    5547097  update puppet submodule version and pins\n    fb57304  update puppet submodule version and pins\n    ecaa0d6  update puppet submodule version and pins\n    3ca9e37  update puppet submodule version and pins\n    2720272  Fix name of PA suite field in submodule update task\n    37742fa  update puppet submodule version and pins\n    315c506  Get puppet and PA versions from written file, not Jenkins API\n    19e8ab7  update puppet submodule version and pins\n    b7ed67b  update puppet submodule version and pins\n    d30ff43  update puppet submodule version and pins\n    e506730  Downgrade psql version for integration\n    6cb8dcb  update puppet submodule version and pins\n    7e59624  update puppet submodule version and pins\n    01f7a5e  Restructure test to use fixture\n    4ee801e  Update version to 5.1.4-SNAPSHOT\n-- SERVER-1993 (Resolved)\n    e1ba09f  Add support for serving tasks via static-file-content\n\n----- Git commits in Jira -----\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF SERVER 5.1.4)\nI18N\n\n----- Unresolved Jira tickets not in git commits -----\nALL ISSUES WERE FOUND IN GIT\n\n----- Unresolved Jira tickets found in git commits -----\nALL ISSUES WERE RESOLVED IN JIRA\n{code}", "created": "2017-11-02T10:40:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Added a fix version of \"SERVER 5.1.4\" for DOC-3372. I don't believe the rest warrant fix versions (test updates).", "created": "2017-11-02T10:42:00.000000"}], "components": [], "created": "2017-10-30T10:41:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6cec156b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuuv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2426_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_259233281"}], "description": "(Initial planned release date: 2017-11-07)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15950", "fixedVersions": [], "id": "15950", "issueType": "Sub-task", "key": "SERVER-2006", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-02T10:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is the actual search for this release:\nhttps://puppet.atlassian.net/issues/?filter=23707&jql=project%20%3D%20SERVER%20AND%20fixVersion%20%3D%20%22SERVER%205.1.4%22\n\nIt includes only these two tickets:\nSERVER-1992 Add Debian 9 to tested platforms\nSERVER-1993 Static content endpoint for tasks", "created": "2017-11-02T10:05:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The 5.1.4 branch is up to date with the 5.1.x branch as of Nov. 1st. It is also similar to master (it is lacking some documentation fixes, it also contains additional commits because we've been working off of master and cherry-picking back to 5.1.x).\n\nThe last merge into 5.1.4 passed our primary pipeline [here|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_trigger-promotion-conditional_5.1.4/1/]. The pipeline is currently failing because it runs nightly as well as on merge and the nightly build timeouted out on several cells because of instability of the CI system. It was, however, retesting the code that had already passed in the linked pipeline run.\n\nThis last merge contained no code changes (documentation and testing updates). The last code change to Puppet Server was 23 days ago for SERVER-1993 [here|https://github.com/puppetlabs/puppetserver/pull/1516] and promoted into PE [14 days ago|https://github.com/puppetlabs/enterprise-dist/commit/4246f8b2b5c619c069b35717131427141c946ac5#diff-3cd1c746ca940713759badf789478307]. That version of PE has been tested and deployed into Ops' environment.", "created": "2017-11-02T10:34:00.000000"}], "components": [], "created": "2017-10-30T10:41:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7672fe0b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuun:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2513_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_258826104"}], "description": "(Initial planned release date: 2017-11-07)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%225.1.4%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15746", "fixedVersions": [], "id": "15746", "issueType": "Sub-task", "key": "SERVER-2005", "labels": [], "originalEstimate": "PT0S", "parent": "15372", "parentSummary": "puppetserver 5.1.4 2017-11-07 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-02T10:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 5.1.4)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Released!", "created": "2017-11-07T10:55:00.000000"}], "components": [], "created": "2017-10-30T10:41:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1cc092cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhuuf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2349_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_695655062"}], "description": "puppetserver 5.1.4 2017-11-07 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15372", "fixedVersions": ["SERVER 5.1.4"], "id": "15372", "issueType": "Task", "key": "SERVER-2004", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-07T10:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 5.1.4 2017-11-07 Release", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It looks like it's failing because the module is attempting to install the extension into the puppetdb database prior to the database being created. In this log you can see the attempt to install the extension before postgresql is even installed:\n{code}\n    Info: Applying configuration version '1508774952'\n    Notice: /Stage[main]/Puppetdb::Master::Config/Package[puppetdb-termini]/ensure: created\n    Error: /Stage[main]/Puppetdb::Database::Postgresql/Postgresql::Server::Extension[pg_trgm]/Postgresql_psql[Add pg_trgm extension to puppetdb]: Could not evaluate: Error evaluating 'unless' clause, returned pid 6662 exit 1: ''\n    Notice: /Stage[main]/Postgresql::Repo::Apt_postgresql_org/Apt::Pin[apt_postgresql_org]/Apt::Setting[pref-apt_postgresql_org]/File[/etc/apt/preferences.d/apt_postgresql_org.pref]/ensure: defined content as '{md5}734220c11c6ee4e5e2e2d022e6880efd'\n    Notice: /Stage[main]/Postgresql::Repo::Apt_postgresql_org/Apt::Source[apt.postgresql.org]/Apt::Key[Add key: B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 from Apt::Source apt.postgresql.org]/Apt_key[Add key: B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 from Apt::Source apt.postgresql.org]/ensure: created\n    Notice: /Stage[main]/Postgresql::Repo::Apt_postgresql_org/Apt::Source[apt.postgresql.org]/Apt::Setting[list-apt.postgresql.org]/File[/etc/apt/sources.list.d/apt.postgresql.org.list]/ensure: defined content as '{md5}584876f3325cf155c40a622e6fdfca07'\n    Info: /Stage[main]/Postgresql::Repo::Apt_postgresql_org/Apt::Source[apt.postgresql.org]/Apt::Setting[list-apt.postgresql.org]/File[/etc/apt/sources.list.d/apt.postgresql.org.list]: Scheduling refresh of Class[Apt::Update]\n    Info: Class[Apt::Update]: Scheduling refresh of Exec[apt_update]\n    Notice: /Stage[main]/Apt::Update/Exec[apt_update]: Triggered 'refresh' from 1 events\n    Notice: /Stage[main]/Postgresql::Server::Install/Package[postgresql-server]/ensure: created\n{code}\n\nIt seems that the systems affected by this issue are installing version 5.2.0 of the postgresql module:\n{code}\n* Install PuppetDB module\n  \n  bvc54ee18v99vql.delivery.puppetlabs.net (ubuntu1404-64-1) 16:07:58$ puppet module install puppetlabs-puppetdb\n    Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...\n    Notice: Downloading from https://forgeapi.puppet.com ...\n    Notice: Installing -- do not interrupt ...\n    /etc/puppetlabs/code/environments/production/modules\n    \u2514\u2500\u252c puppetlabs-puppetdb (v6.0.1)\n      \u251c\u2500\u2500 puppetlabs-firewall (v1.9.0)\n      \u251c\u2500\u2500 puppetlabs-inifile (v1.6.0)\n      \u2514\u2500\u252c puppetlabs-postgresql (v5.2.0)\n        \u251c\u2500\u2500 puppetlabs-apt (v4.3.0)\n        \u251c\u2500\u2500 puppetlabs-concat (v4.0.1)\n        \u2514\u2500\u2500 puppetlabs-stdlib (v4.20.0)\n{code}\n\nOur later tests explicitly pin to an older version of the postgresql module (for other dependency resolution reasons when we were moving to Platform 5 - we should probably unpin this now). Here's the same step from the 5.1.x pipeline:\n\n{code}\n* Install PuppetDB module\n  \n  e4u5054b7otgavi.delivery.puppetlabs.net (centos7-64-1) 08:04:38$ puppet module install puppetlabs-postgresql -v 5.1.0\n    Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...\n    Notice: Downloading from https://forgeapi.puppet.com ...\n    Notice: Installing -- do not interrupt ...\n    /etc/puppetlabs/code/environments/production/modules\n    \u2514\u2500\u252c puppetlabs-postgresql (v5.1.0)\n      \u251c\u2500\u2500 puppetlabs-apt (v4.3.0)\n      \u251c\u2500\u2500 puppetlabs-concat (v4.0.1)\n      \u2514\u2500\u2500 puppetlabs-stdlib (v4.20.0)\n  \n  e4u5054b7otgavi.delivery.puppetlabs.net (centos7-64-1) executed in 39.91 seconds\n  \n  e4u5054b7otgavi.delivery.puppetlabs.net (centos7-64-1) 08:05:18$ puppet module install puppetlabs-puppetdb\n    Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...\n    Notice: Downloading from https://forgeapi.puppet.com ...\n    Notice: Installing -- do not interrupt ...\n    /etc/puppetlabs/code/environments/production/modules\n    \u2514\u2500\u252c puppetlabs-puppetdb (v6.0.1)\n      \u251c\u2500\u2500 puppetlabs-firewall (v1.9.0)\n      \u251c\u2500\u2500 puppetlabs-inifile (v1.6.0)\n      \u251c\u2500\u2500 puppetlabs-postgresql (v5.1.0)\n      \u2514\u2500\u2500 puppetlabs-stdlib (v4.20.0)\n{code}\n\nI believe this [conditional in the 5.2.0 version of the puppetlabs-postgresql module is a regression|https://github.com/puppetlabs/puppetlabs-postgresql/commit/50d510c6e2f4a1b5a1482d076f2490efc17b8958#diff-b0fb13f182fc009f5b0b34ff75b16acfR48] and should be fixed. Until then, the PDB module, or us, may want to explicitly pin to a working version of the postgresql module.", "created": "2017-10-24T12:41:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Note: this is a change of behavior in not auto-requiring pg databases correctly by the extension defined type, though the ordering of the pdb module is backwards and should maybe be updated in lieu of pinning to an old version of the module.\n\n/cc [~accountid:557058:18109e62-1b97-4fa3-8217-9c25de3a4710] [~accountid:557058:958f7ee7-5a93-4d32-9615-42ff2d57e18c]", "created": "2017-10-24T12:55:00.000000"}, {"author": "557058:18109e62-1b97-4fa3-8217-9c25de3a4710", "body": "This is a pretty clear non-backward compatible change in a Y release", "created": "2017-10-24T12:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I think this is *definitely* a postgresql bug, but depending on the release cadence puppetdb might want to ship a bandaid in the mean time. And regardless of it being a bug in postgresql, the puppetdb module is doing a non-sensical thing with its ordering that makes it affected by the bug.", "created": "2017-10-24T13:57:00.000000"}, {"author": "557058:958f7ee7-5a93-4d32-9615-42ff2d57e18c", "body": "Hi [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] and [~accountid:557058:18109e62-1b97-4fa3-8217-9c25de3a4710]. I see that a MODULES ticket has been linked to this - do you know if the PR https://github.com/puppetlabs/puppetlabs-postgresql/pull/896 that was merged caused this?", "created": "2017-10-25T05:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "That's the conclusion I've come to. Happy to be refuted if you find the contrary. I've commented in the PR as well, but I think this best handled by you and Russ at this point. We're going to leave our CI broken under the assumption that there will be a fix this week. If not this ticket will be used to pin our testing to an older version of the module.", "created": "2017-10-25T09:07:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It seems that during the last CI goalie rotation someone simply pinned our master branch to postgresql 5.1. I've opened a pull request to cherry-pick back that change since it seems like actually fixing installation of puppetdb is a ways out.\n\nPR: https://github.com/puppetlabs/puppetserver/pull/1548", "created": "2017-10-26T17:13:00.000000"}, {"author": "557058:958f7ee7-5a93-4d32-9615-42ff2d57e18c", "body": "Thanks for the update [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]. Let me know if you need any further help from us on this.", "created": "2017-10-30T09:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:958f7ee7-5a93-4d32-9615-42ff2d57e18c], So, we've pinned the postgres module in our CI but I brought this regression to the attention of the community contributor who submitted the offending code (I commented in the merge PR what line was causing a problem and why) and the contributor has created a fix that he'd like to work with someone at Puppet to get merged. At this point, someone in the Modules team should work with this community member to get this merged.", "created": "2017-11-07T09:36:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "FWIW, I've let the community member know this as well:\nbq. Hi! Sorry, I've gotten a bit swamped, the change in your branch looks fine to me, but I don't have time to functionally test it. I've pinged the modules folks to see if they can work with you to get this across the line.", "created": "2017-11-07T14:03:00.000000"}, {"author": "557058:958f7ee7-5a93-4d32-9615-42ff2d57e18c", "body": "Thanks [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]. We'll take a look at it.", "created": "2017-11-08T06:31:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], [~accountid:557058:958f7ee7-5a93-4d32-9615-42ff2d57e18c] Taking a look now.", "created": "2017-11-08T11:57:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Merged and release opened https://puppet.atlassian.net/browse/MODULES-5955", "created": "2017-11-08T12:39:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Once this is released we should remove the pinning in the acceptance test", "created": "2017-11-09T16:49:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], the fix for this has been released.", "created": "2017-11-15T12:31:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "This has passed through the master pipeline successfully, but the 2.x pipeline hasn't run since this was merged and the 5.1.x pipeline currently is failing due to a bug in puppet. Can I move this ticket forward since we do have that single green run, or should I wait until all pipelines are green?", "created": "2017-11-28T10:29:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I think that's fine, seeing a pipeline get past installing PDB gives us a lot of confidence.", "created": "2017-11-28T10:51:00.000000"}], "components": [], "created": "2017-10-23T12:55:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5aa2ccfa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzi3t3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_515348387_*|*_1_*:*_3_*:*_471216655_*|*_10007_*:*_2_*:*_1630282620_*|*_3_*:*_1_*:*_15504333_*|*_5_*:*_1_*:*_5977586451_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_474219862"}], "description": "The 5.2.0 release of the postgresql module included a minor ordering regression. Unfortunately, the puppetdb module was affected by this. Consequently, we pinned the postgresql module to 5.1 prior to installing the puppetdb module in our acceptance tests. [here for 5.1.x+|https://github.com/puppetlabs/puppetserver/commit/e506730c1bb14155bb0ae0d5254ea063554c3cd7] and [here for 2.x|https://github.com/puppetlabs/puppetserver/commit/91f5cdb83410b0692206600324db351469086994].\n\nWith the release of postgresql [5.2.1|https://forge.puppet.com/puppetlabs/postgresql/5.2.1/readme] this is supposed to be fixed. We should attempt to unpin, test that it now works, and update our tests.\n\n\nOriginal failing job link: https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-2.x/17/", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16729", "fixedVersions": ["SERVER 5.1.5"], "id": "16729", "issueType": "CI Blocker", "key": "SERVER-2003", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2017-11-28T10:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pin (and unpin when fixed) postgresql module in acceptance tests", "timeSpent": "PT0S", "updated": "2019-10-21T08:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-10-18T16:23:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The pe-pse pipeline runs nightly to facilitate auto-promotion of puppetserver"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@779757f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1833"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhjuf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_256444_*|*_10007_*:*_1_*:*_543668628_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_149811353"}], "description": "Currently the pe-puppet-server-extensions pipeline only triggers on a new commit from a user other than Jenkins. The automated promotion of puppetserver into pe-pse involves a Jenkins commit to pe-pse, but because of these init conditions, the pe-pse pipeline doesn't subsequently run until someone merges something else. We should add a periodic init job to ensure that this pipeline gets run automatically instead to carry the promotion process forward. Note that this run should only trigger if there were commits made (and therefore only promote if there were changes).\n\nThe alternative is to stop ignoring commits by the Jenkins user, but this is problematic because Jenkins is also responsible for the version bump commits on release of pe-pse, and we do not want the pipeline to trigger in that case.", "epicLinkSummary": "Increase frequency of Server promotions into PE", "estimate": "PT0S", "externalId": "16317", "fixedVersions": [], "id": "16317", "issueType": "Task", "key": "SERVER-2002", "labels": [], "originalEstimate": "PT0S", "parent": "15151", "parentSummary": "Increase frequency of Server promotions into PE", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2017-10-26T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add a periodic init job to the pe-pse pipeline", "timeSpent": "PT0S", "updated": "2017-10-26T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Assigning to Direct Change / Tasks team for triage/prioritization.", "created": "2017-11-06T15:36:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for filing this. While we're unlikely to be able to prioritize this improvement any time soon, we would welcome PRs!", "created": "2019-09-24T17:53:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T10:42:00.000000"}], "components": [], "created": "2017-10-12T00:32:00.000000", "creator": "557058:9d1d227b-434f-481d-8279-a026a8ca4bbd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1aae163c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2635"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhf9z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_61579578240_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_77391828999"}], "description": "The /puppet/v3/tasks APIs return details about the tasks for a module but there is no way to know which module version the task is for.\n\nYou could make follow up requests for module meta data I suppose but there are timing issues with that - what if someone updates it mid my requests?\n\nIt would be great if the task detail included the module version in its metadata this would help integrations into 3rd party components too:  \n\nImagine I want to run a task on a users behalf, a task has many files and hashes and so forth and different operating systems are involved and more.  Users don't really care for this.  But they do care that they just fixed a nasty rm -rf / bug in a task and they want to be sure the fleet runs version 1.0.1 of the task.  They want to be sure that all the machines who will download and run this task will do so for that module version.\n\nWith the module version in the API the 3rd party integration can validate that the task detail it got passes that expectation and then he can go about downloading all the files and validating hashes matches the version.\n\nAs it stands, it's very hard to do this in a way thats not vulnerable to timing bugs", "epicLinkSummary": "Task API Improvements", "estimate": "PT0S", "externalId": "15743", "fixedVersions": [], "id": "15743", "issueType": "Bug", "key": "SERVER-2001", "labels": [], "originalEstimate": "PT0S", "parent": "16934", "parentSummary": "Task API Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9d1d227b-434f-481d-8279-a026a8ca4bbd", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "module versions in tasks APIs", "timeSpent": "PT0S", "updated": "2022-03-08T10:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Puppet Server 2.x uses JRuby 1.7 which implements Ruby 1.9.3 compatibility. The issue is likely that the 1.9.3 version of Net::HTTP didn't support keep_alive_timeout:\n\nhttp://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTP.html\n\nUsing Puppet Server 5.x and enabling JRuby 9k might work:\n\nhttps://docs.puppet.com/puppetserver/5.1/release_notes.html#new-feature-optional-support-for-jruby-9k", "created": "2017-10-04T12:28:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Hi [~accountid:623c172c50bb2b0070b6b661], is [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]'s suggestion viable for you at the moment?", "created": "2017-10-09T12:34:00.000000"}, {"author": "623c172c50bb2b0070b6b661", "body": "So far we had no time to test the new version of puppetserver 5.x to play with an older 4.x agent version(s).\nThis is planned during this week.", "created": "2017-10-09T13:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Since this ticket has been inactive for a while, I'm guessing you were able to find a way forward. Please reopen and comment if this was not the case.", "created": "2018-02-20T11:50:00.000000"}], "components": ["Puppet Server"], "created": "2017-10-04T10:16:00.000000", "creator": "623c172c50bb2b0070b6b661", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e8e2593"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzh81b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_440236441_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_11578558174"}], "description": "{noformat}\nOS: Ubuntu 16.04 LTS 64 Bit\nPuppet Source: apt.puppetlabs.com (PC1)\n{noformat}\n\npuppetserver gem list\n{noformat}\n*** LOCAL GEMS ***\n\ndeep_merge (1.1.1)\nfast_gettext (1.1.0)\ngettext (3.2.2)\ngettext-setup (0.26)\nhocon (1.1.3)\njar-dependencies (0.2.6)\njruby-openssl (0.9.16 java)\njson (1.8.0 java)\nlocale (2.1.2)\npuppet-strings (1.1.0)\nrake (10.1.0)\nrdoc (4.1.2)\nrgen (0.8.2)\nsemantic_puppet (0.1.3)\ntext (1.3.1)\nvault (0.10.1)\nyard (0.9.9)\n{noformat}\n\nError Output:\n{noformat}\n2017-10-04 15:56:40,932 ERROR [qtp266666617-77] [puppetserver] Puppet Server Error: Evaluation Error: Error while evaluating a Function Call, undefined method `keep_alive_timeout=' for #<Net::HTTP xxx.xxx:9999 open=true> at /etc/puppetlabs/code/environments/development/manifests/site.pp:2:1 on node xxx\n{noformat}\n\nSample Code Snippet:\n{noformat}\n  require 'net/http'\n  require 'json'\n  require 'vault'\n\n  vault = Vault::Client.new\n  vault.configure do |config|\n    config.address = \"https://xxx.xxx:9999\"\n    config.token = \"xxx\"\n    config.ssl_verify = false\n    config.ssl_ciphers = \"DEFAULT\"\n    config.timeout = 30\n    config.ssl_timeout  = 5\n    config.open_timeout = 5\n    config.read_timeout = 30\n  end\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17105", "fixedVersions": [], "id": "17105", "issueType": "Bug", "key": "SERVER-1998", "labels": ["server-ruby-193-compat-issues"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c172c50bb2b0070b6b661", "resolution": "Fixed", "resolutionDate": "2018-02-20T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bundled ruby throws error on net/http usage with vault gem", "timeSpent": "PT0S", "updated": "2018-04-17T08:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] resiliance against poorly behaving code and better insight into what's happening when things go awry are Good Things\u2122.  That said, I don't know how feasible it is to instrument the puppetserver-to-jruby-to-compiler layer to *automatically* respond to problems that go outside some user-definable parameters. (It seems hard!) \n\nI guess my question back would be, is there some low-hanging fruit from an engineering standpoint that would let us expose problems like what [~accountid:623c13e0a1d81f0069d8e29a] describes to the operator? That way at least there's visibility to external systems like monitoring consoles, so humans can make more intelligent decisions about what to do and hook into automated responses...", "created": "2018-02-13T12:36:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Would creating a timeout for JRuby borrows, ie the amount of time that a user would allow Puppet Server to process a request before timing out, fit this criteria?", "created": "2018-02-20T11:48:00.000000"}, {"author": "5c81ceb27841653736f2c258", "body": "I\u2019d second the suggestion for a timeout on Jruby borrows, especially if it could dump a jruby stack trace before killing the thread.\nWhen you have threads locking up you can see there is a problem using the metrics the server exposes already, what\u2019s missing is ways to deal with the situation. A built in mechanism to replace threads that have locked up would be convenient as a way to allow the server to continue functioning. The other area to improve is visibility of what\u2019s happening in JRuby code, which I think would be covered by SERVER-2193.", "created": "2018-04-26T08:51:00.000000"}], "components": [], "created": "2017-10-03T07:23:00.000000", "creator": "623c13e0a1d81f0069d8e29a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b175cd5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2151"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl31z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11099611060_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_96659442623"}], "description": "Hi,\n\nI'd like to bring up a point that was raised during the resolution of a ticket and then [taken to the development mailing list|https://groups.google.com/forum/#!topic/puppet-dev/R6__SvLd6KM].\n\nBugs like the one described in PUP-7848 (for which there's a fix already, thanks!) are quite dangerous from the operations' point of view as they could quickly reduce the performance of a production Puppet infrastructure.\n\nThere does not seem to be any kind of watchdog that can be configured at Puppetserver level to automatically destroy instances that are misbehaving like these ones (perhaps based on the CPU wall time, age...) We're already using over here {{max-requests-per-instance}} but for obvious reasons it's not useful in this case :)\n\nThe more agents exercising the bad code and triggering the issue, the faster the load goes up and therefore the slower the infrastructure becomes. There should be a way to tell Puppetserver how to protect itself. In the meantime, what we're doing is to put some extra (and very specific) monitoring in place on our side to try to detect this situation and alarm it but perhaps there's something that could be done directly at Puppetserver level to take action earlier.\n\nThanks!", "epicLinkSummary": "JRuby in the Wild", "estimate": "PT0S", "externalId": "15125", "fixedVersions": [], "id": "15125", "issueType": "New Feature", "key": "SERVER-1997", "labels": [], "originalEstimate": "PT0S", "parent": "15501", "parentSummary": "JRuby in the Wild", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c13e0a1d81f0069d8e29a", "resolution": "Duplicate", "resolutionDate": "2021-03-03T11:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver should be able to terminate stuck JRuby borrows", "timeSpent": "PT0S", "updated": "2021-03-03T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2017-09-28T16:38:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@625c9492"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzh3l3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9147_*|*_10007_*:*_1_*:*_321636956_*|*_3_*:*_1_*:*_3607726_*|*_5_*:*_1_*:*_0"}], "description": "Travis-ci is moving to a new Ubuntu version/default environment for running tests. In that environment the executable {{lein2}} that we call in many projects is not available. Leiningen 2 has been out for years and now is available as the default {{lein}} executable.\n\nLein 2 is available on the current/legacy testing environment as {{lein}} as well, so we can simply change our invocation to be {{lein}} and it should work in legacy and new environments (they cut over the default from 1.x to 2.x a long time ago, but kept the lein2 alias for compatibility reasons until the latest update).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15706", "fixedVersions": [], "id": "15706", "issueType": "Task", "key": "SERVER-1996", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-10-02T10:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "(maint) Update lein invocation for travis", "timeSpent": "PT0S", "updated": "2017-10-02T10:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-09-27T15:46:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "*The submodule update task checks environment vars for its branch configuration\n* The Jenkins job sets these env vars to the right values via job params"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3481a8e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylw27:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_78460431_*|*_1_*:*_1_*:*_34459_*|*_10007_*:*_1_*:*_76731228_*|*_3_*:*_1_*:*_1273874_*|*_5_*:*_1_*:*_0"}], "description": "The Jenkins job to automatically update the puppet submodule pins for puppetserver testing rely on a rake task that assume that both the puppetserver and puppet-agent branches are always master. Now that we have more streams to maintain, this is not always true. We should update these values to check an environment variable before falling back to hard coded defaults, so that we can expose parameters in Jenkins to configure this per pipeline, or allow customization when running the rake task manually.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14698", "fixedVersions": [], "id": "14698", "issueType": "Bug", "key": "SERVER-1995", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2017-09-29T11:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Submodule update job always assumes master for both server and puppet branches", "timeSpent": "PT0S", "updated": "2017-09-29T11:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I think this is just SERVER-115", "created": "2017-09-25T16:03:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Dup of SERVER-115", "created": "2017-10-23T15:19:00.000000"}], "components": [], "created": "2017-09-25T16:00:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3328df9c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-7532"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzh0of:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20325_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2416752443"}], "description": "*In Scope*\n* Review CRL handling in puppet server. Is it possible to clobber the CRL or corrupt with simultaneous writes?\n* If so, investigate fixes. If easy, do them.", "epicLinkSummary": "Agent Locking", "estimate": "PT0S", "externalId": "15949", "fixedVersions": [], "id": "15949", "issueType": "Task", "key": "SERVER-1999", "labels": [], "originalEstimate": "PT0S", "parent": "20865", "parentSummary": "Agent Locking", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Duplicate", "resolutionDate": "2017-10-23T15:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate puppet server CRL handling for atomicity", "timeSpent": "PT0S", "updated": "2017-10-23T15:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-09-25T15:20:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@625deb63"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Froyo Component CI"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbpr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_23503387165_*|*_6_*:*_1_*:*_0_*|*_10012_*:*_1_*:*_136929173503"}], "description": "Epic to capture generic improvements to the CI pipeline and projects for puppetserver", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17104", "fixedVersions": [], "id": "17104", "issueType": "Epic", "key": "SERVER-2117", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Won't Do", "resolutionDate": "2022-10-26T11:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve Froyo Component CI", "timeSpent": "PT0S", "updated": "2022-10-26T11:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:79a6b455-622c-4839-88ba-d3ee205f72b0", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] would mind looking into this?", "created": "2018-02-08T17:34:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "I last touched the server docs on this in March 2016 with JB's feedback, so I can't speak to their content and how it might have changed since, and JB's left Puppet. So anything I say here really needs another dev to double-check me, because my memory is at best incomplete on this.\n\n*tl", "created": "2018-02-08T18:22:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:79a6b455-622c-4839-88ba-d3ee205f72b0] can you provide more context about how this came up? I know this ticket is now months old and understand if you can't. If users who aren't already using the resource types API are winding up in the Server docs about migrating from it, I can understand the confusion.\u00a0\n\nI'll also add a link from the Puppet doc you mentioned to the environment_timeout definition in config_file_environment, and be more explicit on both pages about the setting's relationship to Puppet Server's APIs.", "created": "2018-02-08T18:23:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The environment_timeout setting is deprecated and will be removed in puppet 7. I\u2019m going to close this but will work with [~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1] to get docs updated a out the new environment_ttl setting", "created": "2020-10-02T22:28:00.000000"}], "components": ["DOCS"], "created": "2017-09-25T05:38:00.000000", "creator": "557058:79a6b455-622c-4839-88ba-d3ee205f72b0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Language"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5bdeb692"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "1 - ?"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "1 - 1-5% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "These docs are confusing. It may be better to just remove them. Attempting to explain the differences between the two is incredibly confusing even to people who know the code bases involved."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Trivial"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "2 - Annoyance"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-7563"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgzav:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11796985078_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_83562859883"}], "description": "When read together the following two links create an ambiguity as to what the environment_timeout does and whether the resource api is still in use? it is documented as not in use, but referred to in the document as being the subject of the environment_timeout!\n\nNeeds clarification, was asked in Puppet Slack and confused me as i thought i knew the answer.\n\nhttps://puppet.com/docs/puppetserver/5.1/puppet-api/v3/environment_classes.html#changes-class-information-caching-behavior\n\nhttps://puppet.com/docs/puppet/5.2/environments_creating.html#configuring-environmenttimeout", "epicLinkSummary": "Server-side Environment Handling Improvements", "estimate": "PT0S", "externalId": "16728", "fixedVersions": [], "id": "16728", "issueType": "Improvement", "key": "SERVER-1994", "labels": [], "originalEstimate": "PT0S", "parent": "20870", "parentSummary": "Server-side Environment Handling Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:79a6b455-622c-4839-88ba-d3ee205f72b0", "resolution": "Won't Do", "resolutionDate": "2020-10-02T22:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ambiguity in docs about the purpose of environment_timeout", "timeSpent": "PT0S", "updated": "2020-10-02T22:29:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [], "components": [], "created": "2017-09-20T12:15:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@666fe0fe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgurr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_91114197_*|*_1_*:*_1_*:*_18953_*|*_10007_*:*_1_*:*_2483829_*|*_3_*:*_1_*:*_77007775_*|*_5_*:*_1_*:*_3965967139_*|*_6_*:*_1_*:*_0"}], "description": "Update https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/platform/projects/puppetserver.yaml to include the new platform.\n\nEnsure the new platform is only being added to the appripriate branch pipelines. If this is in fact a new platform, we shouldn't be trying\nto run upgrade tests on it.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15124", "fixedVersions": ["SERVER 5.1.4"], "id": "15124", "issueType": "Task", "key": "SERVER-1992", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2017-09-22T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update ci-job-configs to build/test Debian 9 Stretch (amd64, i386)", "timeSpent": "PT0S", "updated": "2017-11-07T08:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "attachments": [], "comments": [], "components": [], "created": "2017-09-19T14:37:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f10dd15"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmun:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2534_*|*_3_*:*_1_*:*_1965763_*|*_5_*:*_1_*:*_99232_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1183015090"}], "description": "(Initial planned release date: 2017-09-26)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%225.1.3%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "15123", "fixedVersions": ["SERVER 5.1.3"], "id": "15123", "issueType": "Task", "key": "SERVER-1991", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-03T07:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-03T07:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-09-19T14:37:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@601110a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmuf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2619_*|*_5_*:*_1_*:*_40141491_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1143115946"}], "description": "(Initial planned release date: 2017-09-26)\n\nUpdate dujour to notify users to use 5.1.3.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "14696", "fixedVersions": ["SERVER 5.1.3"], "id": "14696", "issueType": "Task", "key": "SERVER-1990", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-03T07:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 5.1.3 (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-03T07:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2017-09-19T14:37:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d8571ca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmu7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2867_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1139897234"}], "description": "(Initial planned release date: 2017-09-26)\n\n  * [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "17364", "fixedVersions": ["SERVER 5.1.3"], "id": "17364", "issueType": "Task", "key": "SERVER-1989", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-02T19:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-02T19:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6db72fdb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmtz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2618_*|*_3_*:*_1_*:*_1685100_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1137937995"}], "description": "(Initial planned release date: 2017-09-26)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "17102", "fixedVersions": ["SERVER 5.1.3"], "id": "17102", "issueType": "Task", "key": "SERVER-1988", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-02T19:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-02T19:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:9e548bcc-dbc3-4c04-a047-0344921dbb97", "attachments": [], "comments": [], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@609c9ad6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmtr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2645_*|*_3_*:*_1_*:*_15830862_*|*_5_*:*_1_*:*_43045197_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1124394873"}], "description": "(Initial planned release date: 2017-09-26)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "16727", "fixedVersions": ["SERVER 5.1.3"], "id": "16727", "issueType": "Task", "key": "SERVER-1987", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-02T19:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-03T07:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "Since we now tag with kerminator, this isn't a necessary step anymore.", "created": "2017-09-19T14:40:00.000000"}], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@129565de"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgtu7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2443_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_215087"}], "description": "(Initial planned release date: 2017-09-26)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16570", "fixedVersions": ["SERVER 5.1.3"], "id": "16570", "issueType": "Task", "key": "SERVER-1986", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Won't Fix", "resolutionDate": "2017-09-19T14:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 5.1.1)", "timeSpent": "PT0S", "updated": "2017-09-19T15:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Conducted via HipChat, we are a GO.", "created": "2017-10-02T13:08:00.000000"}], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3775df98"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmtj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2582_*|*_3_*:*_1_*:*_1726035_*|*_5_*:*_1_*:*_65384885_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1116161327"}], "description": "(Initial planned release date: 2017-09-26)\n\nThis should happen Monday-Thursday, before noon PST. We should not be shipping anything after noon PST or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced]\n  * [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "16316", "fixedVersions": ["SERVER 5.1.3"], "id": "16316", "issueType": "Task", "key": "SERVER-1985", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-02T13:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-03T07:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70a0547f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmtb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2565_*|*_5_*:*_1_*:*_66645732_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1116629544"}], "description": "(Initial planned release date: 2017-09-26)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "15948", "fixedVersions": ["SERVER 5.1.3"], "id": "15948", "issueType": "Task", "key": "SERVER-1984", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-02T12:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-03T07:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Packages available at http://builds.puppetlabs.lan/puppetserver/5.1.1/", "created": "2017-09-25T14:21:00.000000"}], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52a84156"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmt3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2519_*|*_5_*:*_2_*:*_145580493_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_1037703285"}], "description": "(Initial planned release date: 2017-09-26)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "15704", "fixedVersions": ["SERVER 5.1.3"], "id": "15704", "issueType": "Task", "key": "SERVER-1983", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-02T12:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-03T07:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@318cb4da"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmsv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2698_*|*_3_*:*_1_*:*_273848617_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_859869562"}], "description": "(Initial planned release date: 2017-09-26)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "15368", "fixedVersions": ["SERVER 5.1.3"], "id": "15368", "issueType": "Task", "key": "SERVER-1982", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-02T17:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-02T17:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "There's already a SERVER 5.1.x and a SERVER 5.2.0, so we should be covered for future versions. Just haven't marked it released.\nI've also created the queries and put the URLs in the main ticket. ", "created": "2017-09-19T17:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think [~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] or someone else with more permissions might need to do this one.", "created": "2017-09-25T14:26:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] thanks, I'll take care of this.", "created": "2017-09-25T14:41:00.000000"}], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3949764c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmsn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2512_*|*_5_*:*_1_*:*_56692_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1185075234"}], "description": "(Initial planned release date: 2017-09-26)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "15122", "fixedVersions": ["SERVER 5.1.3"], "id": "15122", "issueType": "Task", "key": "SERVER-1981", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-03T07:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-03T07:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20d9f4d0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmsf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2664_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3527197084"}], "description": "(Initial planned release date: 2017-09-26)\n\nThe release branch needs to be merged up to any subsequent branches to bring the version bump/tag commit.\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\n\ngit checkout <release-branch>\ngit rebase <upstream/release-branch>\n\ngit fetch upstream\ngit rebase upstream/master\n\ngit merge <release-branch> --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "14694", "fixedVersions": ["SERVER 5.1.3"], "id": "14694", "issueType": "Task", "key": "SERVER-1980", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-30T10:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge 5.1.x into master (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-30T10:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1467a0ea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmof:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_7924211_*|*_1_*:*_1_*:*_2597_*|*_10007_*:*_1_*:*_9642477_*|*_5_*:*_1_*:*_78854427_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_1019730312"}], "description": "(Initial planned release date: 2017-09-26)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "17363", "fixedVersions": ["SERVER 5.1.3"], "id": "17363", "issueType": "Task", "key": "SERVER-1979", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-02T12:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-02T12:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "All JIRA tickets marked 5.1.1 are present in Git. The only issues in Git not marked with a 5.1.1 fix version are docs commits with leftovers from 5.1.0, and it seems appropriate that these not have a 5.1.1 fix version.", "created": "2017-09-21T11:56:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "SERVER-1922 has landed in git, and is the only thing slated for the SERVER 5.1.2 release.", "created": "2017-09-27T14:55:00.000000"}], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@aa9b764"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmo7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2658_*|*_3_*:*_2_*:*_438722_*|*_5_*:*_2_*:*_923850059_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_259022119"}], "description": "(Initial planned release date: 2017-09-26)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "17100", "fixedVersions": ["SERVER 5.1.3"], "id": "17100", "issueType": "Task", "key": "SERVER-1978", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-03T07:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-03T07:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "All code for SERVER 5.1.1 has landed and cleared CI. The version number can't be updated till the very end.", "created": "2017-09-21T11:49:00.000000"}], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6bc86cfe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1976"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzh1zz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_75606051_*|*_1_*:*_1_*:*_2606_*|*_10007_*:*_1_*:*_16489742_*|*_3_*:*_1_*:*_62144_*|*_5_*:*_2_*:*_755404961_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_335747262"}], "description": "(Initial planned release date: 2017-09-26)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%225.1.3%22\n", "epicLinkSummary": "puppetserver 5.1.3 2017-10-02 Release", "estimate": "PT0S", "externalId": "16846", "fixedVersions": ["SERVER 5.1.3"], "id": "16846", "issueType": "Task", "key": "SERVER-1977", "labels": [], "originalEstimate": "PT0S", "parent": "16569", "parentSummary": "puppetserver 5.1.3 2017-10-02 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-03T07:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 5.1.3)", "timeSpent": "PT0S", "updated": "2017-10-03T07:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Introduced in SERVER 5.1.3 is here: https://puppet.atlassian.net/issues/?filter=28611\nFixed in SERVER 5.1.3 is here: https://puppet.atlassian.net/issues/?filter=28612", "created": "2017-09-19T17:29:00.000000"}], "components": [], "created": "2017-09-19T14:36:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58276c19"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server 5.1.3 2017-10-02 Release"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmjz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_4555940143_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2312446"}], "description": "puppetserver 5.1.2 2017-10-02 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16569", "fixedVersions": [], "id": "16569", "issueType": "Epic", "key": "SERVER-1976", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-11-11T07:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 5.1.3 2017-10-02 Release", "timeSpent": "PT0S", "updated": "2018-02-06T17:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Right now, metrics are collected at one point in the Master service for all {{puppet/v3}} routes:\n\nhttps://github.com/puppetlabs/puppetserver/blob/5.1.3/src/clj/puppetlabs/services/master/master_service.clj#L137\n\nIdeally, we'd split that into two collection points. One for the Clojure handlers:\n\nhttps://github.com/puppetlabs/puppetserver/blob/5.1.3/src/clj/puppetlabs/services/master/master_core.clj#L715\n\nAnd one in the handler stack used by the JRuby RequestHandler service, before wrap-with-jruby-service is used (this is where the wait happens):\n\nhttps://github.com/puppetlabs/puppetserver/blob/5.1.3/src/clj/puppetlabs/services/request_handler/request_handler_core.clj#L282\n\nThe tricky bit is that the HTTP metrics handler is currently initialized using the full Comidi routing tree --- which means that inserting it into handler stacks down in the tree isn't straight-forward. Will likely require some light state juggling.\n\n", "created": "2017-10-10T07:55:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I've been thinking about this one a bit more recently and it seems there are three options for approaching this:\n\n  - Currently, we have one ring handler near the top of the stack that measures metrics. We could split that into two, one for the clojure routes that sits at the top of that sub-stack ad one for the ruby routes that sits underneath the handler which is waiting to borrow JRubies.\n\n  - We could augment the JRuby metrics to record time per borrow reason (a.k.a request type) in addition to the aggregate time that is measured today.\n\n  - We could stop discarding data from the Ruby profiling sections of {{network/http/handler.rb}}.\n\nOption 1 is what I was thinking of doing originally, but now seems like it has some significant downsides:\n\n  - It will require some juggling to pass the state required by the comidi-metrics handler into the right place at the right time. This will likely make the handler stack harder to understand.\n\n  - It will create two separate methods for measuring the same metrics that behave differently in subtle ways.\n\n  - Moving the measurement down the handler stack for JRuby means we will no longer measure latency that may show up in the Ring handlers above where the timing occurs.\n\nOption 3 is attractive because the code is already written and just needs to be re-enabled. However, the Ruby request handling layer is somewhat of a relic as it duplicates a lot of functionality that occurs up in Clojure. Also, the metrics produced are labeled \"HTTP\" which will cause some confusion.\n\nI'm currently leaning towards option 2 as it would be a straight-forward extension to JRuby timing that we are already measuring and would have the added bonus that we would capture and time JRuby borrow events that are not directly related to HTTP requests.", "created": "2018-02-15T09:03:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "If we ever can actually remove support for passenger I would love to see the server call the indirections directly (...) rather than passing requests through from the Clojure web layer to the Ruby web layer (if we're trying to maintain compatibility with folks not using PuppetServer then it makes sense to have them, at some point, go through the same Ruby routing layer). But that's probably a pipe dream rn.\n\n\u00a0\n\nI think I would, naively, prefer option two that you list - I assume that would entail extending the JRubyPool/service with per borrow reason\u00a0meters\u00a0and ensuring that our\u00a0handlers\u00a0give the pool a reason that matches the route requested.\n\n\u00a0\n\nHaving said that, I doubt we'd turn down a PR submission that took any of the three approaches you outlined.", "created": "2018-02-15T11:04:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "We already use the request URL as a borrow reason, it would be a matter of cleaning that up into a nice metric name, creating additional timers as needed, and then marking the right timer in addition to the existing global timer.", "created": "2018-02-15T11:46:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Put up a PR that contains a first cut at tracking performance per-borrow reason as described by option two above.", "created": "2018-04-26T14:42:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Filed SERVER-2198 for logging JRuby borrow times per-request in order to facilitate outlier identification.", "created": "2018-04-26T17:06:00.000000"}], "components": [], "created": "2017-09-18T17:33:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@716ef22e"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - $$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "2 - 5-25% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Not having this can lengthen the time to resolution for performance issues. This has been seen both during internal performance debugging and with customers. \n\nThis doesn't directly cause performance issues, but it's a barrier to debugging performance issues."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl327:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The jruby-metrics section of the status API now includes a borrow-timers dataset that provides separate measurements for each activity that borrows a JRuby instance (catalog compilation, file serving, report processing, etc.)."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1626064754_*|*_1_*:*_2_*:*_10960623773_*|*_3_*:*_2_*:*_38016176425_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_8037090995"}], "description": "Currently, the metrics for the {{puppet/v3}} API are measured by the Comidi handler in a fashion that includes all Clojure handlers in addition to JRuby handlers --- which includes time spent waiting for a free JRuby worker in addition to time spent by JRuby working on a request. This means that a performance issue in one JRuby route skews the results reported by all JRuby routes, thus making it look like all routes are slow and masking the source of the issue.\n\nWe measure JRuby time spent to handle requests via the Puppet profiler:\n\nhttps://github.com/puppetlabs/puppet/blob/5.2.0/lib/puppet/network/http/handler.rb#L62\n\nHowever, we send those metrics to {{/dev/null}} instead of reporting them to JMX:\n\nhttps://github.com/puppetlabs/puppetserver/blob/5.1.0/src/java/com/puppetlabs/puppetserver/MetricsPuppetProfiler.java#L79-L83\n\nWe should stop discarding HTTP metrics measured by the Puppet profiler so that performance issues affecting JRuby routes can be easily identified.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "15121", "fixedVersions": ["SERVER 5.3.10", "SERVER 6.0.5", "SERVER 6.3.2", "SERVER 6.5.0"], "id": "15121", "issueType": "Improvement", "key": "SERVER-1975", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2019-07-29T10:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "HTTP metrics for the /puppet API should only measure time spent in the JRuby handler", "timeSpent": "PT0S", "updated": "2019-10-12T23:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "attachments": [], "comments": [], "components": [], "created": "2017-09-18T17:22:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ea42e86"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - $$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "2 - 5-25% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Debugging large scale performance issues can be very costly. The issue that spawned this ticket required two weeks of work from multiple principal level engineers.\n\nPlumbing this through to the status API would be a big help in reducing the cost of debugging in the future."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - Serious"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgsjr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The status endpoint now includes metrics on time spent waiting for an ENC response as well as all major PDB events (submitting, querying, and transforming data). "}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5595465928_*|*_3_*:*_1_*:*_6742011283_*|*_5_*:*_1_*:*_591739037_*|*_6_*:*_1_*:*_0"}], "description": "The puppet-profiler service currently reports the following metrics in when queried via the Trapperkeeper status API at DEBUG level:\n\n  - compiler.compile\n  - compiler.static_compile\n  - compiler.static_compile_postprocessing\n\nPlus the top 50 entries from the function and resource namespaces based on total time spent since boot:\n\n  - compiler.evaluate_resource\n  - functions\n\nIn order to get a complete picture of Puppet Server performance, we should also include the time spent waiting for external services like the ENC and PuppetDB. This is captured by the following metrics:\n\n  - compiler.find_node\n  - puppetdb.resource.search\n  - puppetdb.facts.encode\n  - puppetdb.command.submit.replace facts\n  - puppetdb.catalog.munge\n  - puppetdb.command.submit.replace catalog\n  - puppetdb.report.convert_to_wire_format_hash\n  - puppetdb.command.submit.store report\n\nThis information is recorded at the JMX level and should be raised up to the status API output.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "17206", "fixedVersions": ["SERVER 5.2.0"], "id": "17206", "issueType": "Improvement", "key": "SERVER-1974", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2018-02-08T11:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add PuppetDB and Classifier terminus metrics to puppet-profiler status output", "timeSpent": "PT0S", "updated": "2018-02-15T07:49:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "attachments": [], "comments": [{"author": "623cfbe77910a200718c1e5a", "body": "So the puppet and puppet5 repositories provide the puppetserver package for stretch (see https://apt.puppetlabs.com/dists/stretch/puppet/binary-amd64/Packages + https://apt.puppetlabs.com/dists/stretch/puppet5/binary-amd64/Packages), just no the PC1 one (https://apt.puppetlabs.com/dists/stretch/PC1/binary-amd64/Packages).\n\nCan someone please clarify this puppet vs puppet5 vs PC1 situation?", "created": "2017-10-12T04:58:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "{{PC1}}, {{puppet}}, and {{puppet5}} are different release streams of our deliverables. {{PC1}} has Puppet 4.x (and related components), {{puppet5}} is the new set of Puppet 5.x Platform releases (which are more coordinated than before), and {{puppet}} is currently the same as {{puppet5}}, but in the future will roll over to {{puppet6}} once that's a thing.\n\nSee also https://puppet.com/docs/puppet/5.3/puppet_platform.html for the technical side, and https://puppet.com/blog/puppet-5-platform-released and the second half of https://puppet.com/blog/full-visibility-and-control-of-your-infrastructure-new-puppet-releases for the original announcements with some background.", "created": "2017-10-12T05:42:00.000000"}, {"author": "623cfbe77910a200718c1e5a", "body": "Thanks for clarification, David - this definitely solves my situation then :)", "created": "2017-10-12T06:04:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330] please add release notes for this issue, if needed. Thanks!", "created": "2018-01-23T08:35:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e], I added a release note for this. ", "created": "2018-01-29T17:02:00.000000"}], "components": ["Puppet Server"], "created": "2017-09-15T07:11:00.000000", "creator": "623e7984b75ca80070581293", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5bfd077"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgq3r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver packages are now provided for Debian 9 \"Stretch\"."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_4825510805_*|*_1_*:*_1_*:*_4614998007_*|*_10009_*:*_1_*:*_2348914408_*|*_5_*:*_1_*:*_598615023_*|*_6_*:*_1_*:*_0"}], "description": "Could you please provide puppetserver and puppetdb packages for the Debian stable (9.x / stretch)? ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15365", "fixedVersions": ["SERVER 5.1.5"], "id": "15365", "issueType": "Task", "key": "SERVER-1972", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7984b75ca80070581293", "resolution": "Fixed", "resolutionDate": "2018-01-29T17:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages for Debian 9 (stretch) (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2019-08-24T11:13:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] FYI", "created": "2017-09-15T08:33:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Interesting. Definitely related to the CRL reload stuff. That's a weird error to be platform specific though... will see if I can reproduce.", "created": "2017-09-15T09:03:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I am not able to reproduce this. Installing puppetserver 5.1.0 on a clean Debian Jessie image seems to work correctly for basic agent runs/cert signing workflow.  Do you have any additional details about the rest of your environment? How did you upgrade, and from which version? The error looks like it could be caused by dependencies not being updated correctly (the FilesystemWatchService is a new dependency used in CRL reloading). ", "created": "2017-09-15T10:26:00.000000"}, {"author": "557058:da73f678-a5cc-42f9-aae5-e3720ad5baff", "body": "Hi [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69],\n\nwe're running Debian Jessie 8.9 on our PuppetCA. I upgraded from \"5.0.0-1puppetlabs1\" by simply running \"apt-get upgrade\".\nWhat kind of dependencies might not have been updated correctly?", "created": "2017-09-15T10:46:00.000000"}, {"author": "557058:da73f678-a5cc-42f9-aae5-e3720ad5baff", "body": "After trying to reproduce this another time in a Docker-Container I noticed an additional entry in \"/etc/puppetlabs/puppetserver/services.d/ca.cfg\" which does not exist on my PuppetCA because it is managed by Puppet. This module got updated yesterday (https://github.com/theforeman/puppet-puppet/releases) and I didn't notice :(\n\nSorry guys my bad, this seems to \"fixed\" then.", "created": "2017-09-15T11:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I tried first installing 5.0.0, then upgrading as you described, and it still works for me. Would it be possible for you to try doing a clean install and starting the service fresh? We haven't heard any other reports of this being broken yet, so my feeling is something odd might have happened in your environment.", "created": "2017-09-15T12:15:00.000000"}, {"author": "70121:8f66a24d-537e-45f1-be96-0a5ba2bc5c05", "body": "Hello!\nI'd like to reopen this bug because I faced with it (honestly, during foreman 1.16 installation). I do fresh installation of foreman 1.16 on RHEL 7.4 and Debian 9.1 and right after installation I get following errors:\n{code:java}\n2017-10-03 00:00:33,009 INFO  [main] [o.e.j.u.log] Logging initialized @13600ms to org.eclipse.jetty.util.log.Slf4jLog\n2017-10-03 00:00:35,285 ERROR [main] [p.t.internal] Error during app buildup!\njava.lang.RuntimeException: Service ':FilesystemWatchService' not found\n        at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invokeStatic(internal.clj:121)\n        at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invoke(internal.clj:111)\n        at puppetlabs.trapperkeeper.internal$instantiate$fn__13800.invoke(internal.clj:162)\n        at puppetlabs.trapperkeeper.internal$instantiate.invokeStatic(internal.clj:159)\n        at puppetlabs.trapperkeeper.internal$instantiate.invoke(internal.clj:152)\n        at puppetlabs.trapperkeeper.internal$eval14334$build_app_STAR___14343$fn__14344.invoke(internal.clj:569)\n        at puppetlabs.trapperkeeper.internal$eval14334$build_app_STAR___14343.invoke(internal.clj:537)\n        at puppetlabs.trapperkeeper.internal$eval14436$boot_services_STAR___14445$fn__14446$fn__14447.invoke(internal.clj:639)\n        at puppetlabs.trapperkeeper.internal$eval14436$boot_services_STAR___14445$fn__14446.invoke(internal.clj:638)\n        at puppetlabs.trapperkeeper.internal$eval14436$boot_services_STAR___14445.invoke(internal.clj:633)\n        at puppetlabs.trapperkeeper.core$eval15266$boot_with_cli_data__15273$fn__15274.invoke(core.clj:130)\n        at puppetlabs.trapperkeeper.core$eval15266$boot_with_cli_data__15273.invoke(core.clj:95)\n        at puppetlabs.trapperkeeper.core$eval15295$run__15300$fn__15301.invoke(core.clj:151)\n        at puppetlabs.trapperkeeper.core$eval15295$run__15300.invoke(core.clj:145)\n        at puppetlabs.trapperkeeper.core$main.invokeStatic(core.clj:173)\n        at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159)\n        at clojure.lang.RestFn.invoke(RestFn.java:512)\n        at clojure.lang.Var.invoke(Var.java:409)\n        at clojure.lang.AFn.applyToHelper(AFn.java:178)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.core$apply.invokeStatic(core.clj:646)\n        at clojure.core$apply.invoke(core.clj:641)\n        at puppetlabs.trapperkeeper.main$_main.invokeStatic(main.clj:7)\n        at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:4)\n        at clojure.lang.RestFn.invoke(RestFn.java:512)\n        at clojure.lang.Var.invoke(Var.java:409)\n        at clojure.lang.AFn.applyToHelper(AFn.java:178)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.core$apply.invokeStatic(core.clj:646)\n        at clojure.main$main_opt.invokeStatic(main.clj:314)\n        at clojure.main$main_opt.invoke(main.clj:310)\n        at clojure.main$main.invokeStatic(main.clj:421)\n        at clojure.main$main.doInvoke(main.clj:384)\n        at clojure.lang.RestFn.invoke(RestFn.java:619)\n        at clojure.lang.Var.invoke(Var.java:430)\n        at clojure.lang.AFn.applyToHelper(AFn.java:195)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.main.main(main.java:37)\n2017-10-03 00:00:35,300 INFO  [Thread-2] [p.t.internal] Shutting down due to JVM shutdown hook.\n2017-10-03 00:00:35,303 INFO  [Thread-2] [p.t.internal] Beginning shutdown sequence\n2017-10-03 00:00:35,311 INFO  [Thread-2] [p.t.internal] Finished shutdown sequence\n{code}\n\n", "created": "2017-10-03T01:35:00.000000"}, {"author": "623c0dfb9b54ec0068b14123", "body": "+1 Rhel 7 foreman 1.16 puppet 5.1 and ava.lang.RuntimeException: Service ':FilesystemWatchService' not found", "created": "2017-10-05T05:47:00.000000"}, {"author": "557058:da73f678-a5cc-42f9-aae5-e3720ad5baff", "body": "[~accountid:70121:8f66a24d-537e-45f1-be96-0a5ba2bc5c05], [~accountid:623c0dfb9b54ec0068b14123],\n\ndo you guys have the \n{noformat}\npuppetlabs.trapperkeeper.services.watcher.filesystem-watch-service/filesystem-watch-service\n{noformat}\npart in {code}/etc/puppetlabs/puppetserver/services.d/ca.cfg{code}?", "created": "2017-10-05T06:04:00.000000"}, {"author": "623c0dfb9b54ec0068b14123", "body": "no, don't have this in ca.cfg", "created": "2017-10-05T06:10:00.000000"}, {"author": "557058:da73f678-a5cc-42f9-aae5-e3720ad5baff", "body": "Could you test it with this parameter? My PuppetCA did not work because this parameter was not set.\n\nMy full ca.cfg:\n{noformat}\n# To enable the CA service, leave the following line uncommented\npuppetlabs.services.ca.certificate-authority-service/certificate-authority-service\n# To disable the CA service, comment out the above line and uncomment the line below\n#puppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service\npuppetlabs.trapperkeeper.services.watcher.filesystem-watch-service/filesystem-watch-service\n{noformat}", "created": "2017-10-05T06:12:00.000000"}, {"author": "623c0dfb9b54ec0068b14123", "body": "It's works! Thank you!", "created": "2017-10-05T06:55:00.000000"}, {"author": "70121:8f66a24d-537e-45f1-be96-0a5ba2bc5c05", "body": "Yes, the puppetserver started. I tested it on Debian 9. Thank you!\nBut why foreman breakes this file?", "created": "2017-10-05T07:07:00.000000"}, {"author": "70121:8f66a24d-537e-45f1-be96-0a5ba2bc5c05", "body": "So I've found incorrect template in foreman 1.16. It is /usr/share/foreman-installer/modules/puppet/templates/server/puppetserver/services.d/ca.cfg.erb file. I think this ticket can be closed and I'll try report this bug to foreman's developers.\n", "created": "2017-10-05T07:35:00.000000"}], "components": ["Certificate Authority"], "created": "2017-09-15T02:43:00.000000", "creator": "557058:da73f678-a5cc-42f9-aae5-e3720ad5baff", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e75feb5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgq27:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_226216633_*|*_6_*:*_2_*:*_1519324398"}], "description": "Hi there,\nafter upgrading the puppetserver-package to version \"5.1.0-1puppetlabs1\" on Debian Jessie our PuppetCA refuses to start because of the following error message:\n{noformat}\n2017-09-15 09:56:19,863 INFO  [main] [o.e.j.u.log] Logging initialized @14891ms to org.eclipse.jetty.util.log.Slf4jLog\n2017-09-15 09:56:22,041 ERROR [main] [p.t.internal] Error during app buildup!\njava.lang.RuntimeException: Service ':FilesystemWatchService' not found\n        at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invokeStatic(internal.clj:121)\n        at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invoke(internal.clj:111)\n        at puppetlabs.trapperkeeper.internal$instantiate$fn__13800.invoke(internal.clj:162)\n        at puppetlabs.trapperkeeper.internal$instantiate.invokeStatic(internal.clj:159)\n        at puppetlabs.trapperkeeper.internal$instantiate.invoke(internal.clj:152)\n        at puppetlabs.trapperkeeper.internal$eval14334$build_app_STAR___14343$fn__14344.invoke(internal.clj:569)\n        at puppetlabs.trapperkeeper.internal$eval14334$build_app_STAR___14343.invoke(internal.clj:537)\n        at puppetlabs.trapperkeeper.internal$eval14436$boot_services_STAR___14445$fn__14446$fn__14447.invoke(internal.clj:639)\n        at puppetlabs.trapperkeeper.internal$eval14436$boot_services_STAR___14445$fn__14446.invoke(internal.clj:638)\n        at puppetlabs.trapperkeeper.internal$eval14436$boot_services_STAR___14445.invoke(internal.clj:633)\n        at puppetlabs.trapperkeeper.core$eval15266$boot_with_cli_data__15273$fn__15274.invoke(core.clj:130)\n        at puppetlabs.trapperkeeper.core$eval15266$boot_with_cli_data__15273.invoke(core.clj:95)\n        at puppetlabs.trapperkeeper.core$eval15295$run__15300$fn__15301.invoke(core.clj:151)\n        at puppetlabs.trapperkeeper.core$eval15295$run__15300.invoke(core.clj:145)\n        at puppetlabs.trapperkeeper.core$main.invokeStatic(core.clj:173)\n        at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159)\n        at clojure.lang.RestFn.invoke(RestFn.java:512)\n        at clojure.lang.Var.invoke(Var.java:409)\n        at clojure.lang.AFn.applyToHelper(AFn.java:178)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.core$apply.invokeStatic(core.clj:646)\n        at clojure.core$apply.invoke(core.clj:641)\n        at puppetlabs.trapperkeeper.main$_main.invokeStatic(main.clj:7)\n        at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:4)\n        at clojure.lang.RestFn.invoke(RestFn.java:512)\n        at clojure.lang.Var.invoke(Var.java:409)\n        at clojure.lang.AFn.applyToHelper(AFn.java:178)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.core$apply.invokeStatic(core.clj:646)\n        at clojure.main$main_opt.invokeStatic(main.clj:314)\n        at clojure.main$main_opt.invoke(main.clj:310)\n        at clojure.main$main.invokeStatic(main.clj:421)\n        at clojure.main$main.doInvoke(main.clj:384)\n        at clojure.lang.RestFn.invoke(RestFn.java:619)\n        at clojure.lang.Var.invoke(Var.java:430)\n        at clojure.lang.AFn.applyToHelper(AFn.java:195)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.main.main(main.java:37)\n2017-09-15 09:56:22,045 INFO  [Thread-2] [p.t.internal] Shutting down due to JVM shutdown hook.\n2017-09-15 09:56:22,049 INFO  [Thread-2] [p.t.internal] Beginning shutdown sequence\n2017-09-15 09:56:22,057 INFO  [Thread-2] [p.t.internal] Finished shutdown sequence\n{noformat}\n\nThe only way to fix this seems to be to downgrade to version \"5.0.0-1puppetlabs1\".\n\nDo you have an idea what's wrong here or what I am missing? Maybe you can reproduce this?\n\nbest regards,\nSebastian", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15947", "fixedVersions": [], "id": "15947", "issueType": "Bug", "key": "SERVER-1971", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da73f678-a5cc-42f9-aae5-e3720ad5baff", "resolution": "Done", "resolutionDate": "2017-10-05T07:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PuppetCA refuses to start after upgrade to 5.1.0-1puppetlabs1 on Debian Jessie", "timeSpent": "PT0S", "updated": "2017-10-05T07:36:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] please add release notes for this issue, if needed. Thanks!", "created": "2017-09-20T07:22:00.000000"}], "components": [], "created": "2017-09-14T16:09:00.000000", "creator": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38c52193"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgtmn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_82564523_*|*_3_*:*_1_*:*_331697843_*|*_5_*:*_1_*:*_1010176656_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_185286152"}], "description": "This means that if a task author is relying on metadata to protect against injection vulnerabilities and introduce a typo into metadata.json type validation will be silently skipped.\n\npuppet-server should error when details are requested for tasks with invalid json metadata", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15363", "fixedVersions": ["SERVER 5.1.3"], "id": "15363", "issueType": "Bug", "key": "SERVER-1973", "labels": ["security"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "resolution": "Fixed", "resolutionDate": "2017-09-21T14:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver returns empty task metadata when metadata is invalid JSON", "timeSpent": "PT0S", "updated": "2017-10-03T07:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-08-31T14:52:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The PE promotion job for pe-puppetserver is triggered automatically when pe-pse gets released."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b688299"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1833"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgjrj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_263257519_*|*_1_*:*_1_*:*_430737463_*|*_10007_*:*_2_*:*_264927097_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3887380306"}], "description": "[This job|https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/view/pe-puppet-server-extensions/job/enterprise_pe-puppetserver_release-ezbake-composite_hoyt/] updates the pe-puppet-server-extensions dependency in pe-puppetserver, based on the version passed to it, then promotes the resulting pe-puppetserver into PE. Right now this job is triggered automatically, but we should hook it up to be triggered whenever a new release of pe-pse is created by [this job|https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/view/pe-puppet-server-extensions/job/enterprise_pe-puppet-server-extensions_release-clj_hoyt/].", "epicLinkSummary": "Increase frequency of Server promotions into PE", "estimate": "PT0S", "externalId": "16315", "fixedVersions": [], "id": "16315", "issueType": "Task", "key": "SERVER-1968", "labels": [], "originalEstimate": "PT0S", "parent": "15151", "parentSummary": "Increase frequency of Server promotions into PE", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2017-10-26T17:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Trigger PE promotion job for pe-puppetserver whenever a new release of pe-pse is available", "timeSpent": "PT0S", "updated": "2017-10-26T17:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-08-31T14:48:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Automatic promotion of pe-pse into pe-puppetserver can be disabled via a Jenkins param"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d778cdd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1833"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhd2v:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_529796798_*|*_1_*:*_1_*:*_430980090_*|*_10007_*:*_1_*:*_679937327_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3205842689"}], "description": "We want to automate promotion of pe-puppet-server-extensions into pe-puppetserver (and thereby into PE), but this should be able to be disabled. We should add a param to the init job of the pe-pse validation pipeline that, when false, will prevent triggering the lein release job when the pipeline finishes green.", "epicLinkSummary": "Increase frequency of Server promotions into PE", "estimate": "PT0S", "externalId": "16006", "fixedVersions": [], "id": "16006", "issueType": "Task", "key": "SERVER-1967", "labels": [], "originalEstimate": "PT0S", "parent": "15151", "parentSummary": "Increase frequency of Server promotions into PE", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2017-10-26T17:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create toggle for automatic updates of pe-pse into pe-puppetserver", "timeSpent": "PT0S", "updated": "2017-10-26T17:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-08-31T14:45:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "pe-pse's lein release job is triggered automatically by a successful run of the validation pipeline"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ee55a9f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1833"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhd2n:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_529789813_*|*_1_*:*_1_*:*_431216859_*|*_10007_*:*_1_*:*_680216798_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3205554448"}], "description": "Prior to starting this meet with Code Manager maintainers (Haus).\n\nIn order to promote puppetserver into PE, the version of puppetserver in pe-puppet-server-extensions must first be updated. The commit updating this dependency triggers a run of the pe-pse validation pipeline. Currently, if we then want to promote this into PE, we need to  run pe-pse's [lein release job|https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/view/pe-puppet-server-extensions/job/enterprise_pe-puppet-server-extensions_release-clj_hoyt/], which will update pe-pse's version, tag it, and publish the new builds. This job should instead be automatically run whenever validation finishes successfully.", "epicLinkSummary": "Increase frequency of Server promotions into PE", "estimate": "PT0S", "externalId": "15700", "fixedVersions": [], "id": "15700", "issueType": "Task", "key": "SERVER-1966", "labels": [], "originalEstimate": "PT0S", "parent": "15151", "parentSummary": "Increase frequency of Server promotions into PE", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2017-10-26T17:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Connect the \"Lein Release\" job for pe-pse to the end of the validation pipeline", "timeSpent": "PT0S", "updated": "2017-10-26T17:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-08-31T14:40:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Automatic promotion of puppetserver into PE can be disabled via a Jenkins param in the init job"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2756f2fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1833"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgjrb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_88963026_*|*_1_*:*_1_*:*_431521117_*|*_10007_*:*_1_*:*_10330412_*|*_3_*:*_1_*:*_23580_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3106196902"}], "description": "We want to automate promotion of puppetserver into PE, but this feature should be able to be turned off (e.g. for any code freezes prior to a PE release). This can be accomplished by adding a param to the init job of the puppetserver Jenkins pipeline, which when false will skip triggering a voom build and subsequent promotion.\n", "epicLinkSummary": "Increase frequency of Server promotions into PE", "estimate": "PT0S", "externalId": "15360", "fixedVersions": [], "id": "15360", "issueType": "Task", "key": "SERVER-1965", "labels": [], "originalEstimate": "PT0S", "parent": "15151", "parentSummary": "Increase frequency of Server promotions into PE", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2017-10-12T16:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add a param to toggle promotion in the puppetserver validation pipeline", "timeSpent": "PT0S", "updated": "2017-10-12T16:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-08-31T14:34:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The puppetserver version in pe-pse is updated whenever a new voom build for the relevant branch becomes available"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63e51984"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1833"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgkwn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_345498284_*|*_1_*:*_1_*:*_431858999_*|*_10007_*:*_1_*:*_101426610_*|*_3_*:*_1_*:*_1213182892_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_680838977"}], "description": "Currently, in order to promote a new puppetserver into pe-puppet-server-extensions, a PR must be manually opened against the repo updating [this line|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/hoyt/project.clj#L5]. This should instead be done by a Jenkins job that is triggered for the appropriate branch whenever a new voom build of puppetserver is created via [this job|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_packaging-voom-clj_master/].", "epicLinkSummary": "Increase frequency of Server promotions into PE", "estimate": "PT0S", "externalId": "16565", "fixedVersions": [], "id": "16565", "issueType": "Task", "key": "SERVER-1964", "labels": [], "originalEstimate": "PT0S", "parent": "15151", "parentSummary": "Increase frequency of Server promotions into PE", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2017-10-02T16:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Jenkins job to update the puppetserver dependency in pe-puppet-server-extensions", "timeSpent": "PT0S", "updated": "2017-10-02T16:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-08-31T14:30:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "A new voom build is published for every SHA that passes the puppetserver validation pipeline"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ec2a25e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1833"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzh3lb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_88970161_*|*_1_*:*_1_*:*_431872412_*|*_10007_*:*_1_*:*_168756121_*|*_3_*:*_1_*:*_876753887_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2071246839"}], "description": "The first step for promoting puppetserver into PE is to do a voom build using [this job|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_packaging-voom-clj_master/] for the appropriate branch. This will publish an artifact with a unique version number, which can be pulled in by pe-puppet-server-extensions (pe-pse). We need to hook this job up to automatically run at the end of the main puppetserver validation pipeline. That way, when all the tests pass, a new build gets created automatically for promotion into pe-pse. \n\nFollow up with RE to inform them of increased frequency of voom builds.  Work with them to prune unneeded voom builds.", "epicLinkSummary": "Increase frequency of Server promotions into PE", "estimate": "PT0S", "externalId": "15120", "fixedVersions": [], "id": "15120", "issueType": "Task", "key": "SERVER-1963", "labels": [], "originalEstimate": "PT0S", "parent": "15151", "parentSummary": "Increase frequency of Server promotions into PE", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2017-10-12T16:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Connect voom build job to the end of the puppetserver pipeline", "timeSpent": "PT0S", "updated": "2017-10-12T16:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] or [~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] do either of you have insight into how Facter 3 interacts with JRuby?", "created": "2017-08-29T14:26:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "From Oracle's docs, UnsatisfiedLinkError is \"Thrown if the Java Virtual Machine cannot find an appropriate native-language definition of a method declared native.\"\n\nI wonder if `facter.jar` can't find libfacter.so for some reason? Looking at the java code, it appears that we hardcode the path based on CMAKE_INSTALL_PREFIX, so if you've moved the .so file it might not find it", "created": "2017-08-29T14:51:00.000000"}, {"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": "I just rebuilt, which looks to have {{/usr/local/lib/libfacter.so}}, but that should also be the path that facter.jar was built with.  Is there a way to inspect what it was built against?  Where in the facter src/ is CMAKE_INSTALL_PREFIX set?", "created": "2017-08-29T15:36:00.000000"}, {"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": "I suppose its worth knowing that {{facter}} on the same system does actually work.  I assume this suggests that libfacter.so was at least found by the facter binary, even though {{facter.jar}} does not find it.", "created": "2017-08-29T15:39:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "CMAKE_INSTALL_PREFIX defaults to `/usr/local`, so you should be all set if that's where Facter ended up.\n\nYou can double-check which value was used by grepping for it in CMakeCache.txt in the build directory", "created": "2017-08-29T15:40:00.000000"}, {"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": "So I've got {{CMAKE_INSTALL_PREFIX:PATH=/usr/local}}, which sounds accurate.", "created": "2017-08-29T15:45:00.000000"}, {"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": "I'm confused why facter.jar can't find the libfacter.so.  I've looked over it a bit, and I've got the default {{CMAKE_INSTALL_PREFIX}} set, {{libfacter.so}} ends up as a link in {{/usr/local/lib}} pointing to {{libfacter.so.3.7.1}}.  Facter executes without issue, confirming that the same build was able to find the {{libfacter.so}} in the correct spot.  Is there any sort of relative pathing happening with facter.jar?  Once the build is complete, we copy that file out to different location but I expect that to be the common case.\n\nJust for grins, I've tried linking the {{libfacter.so.3.7.1}} as {{libfacter.so}} into {{/}} and {{/usr/local}}, but no luck.  I've also checked permissions, which look to be alright.\n\nI must be missing something.", "created": "2017-08-29T17:43:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Can you gist a copy of the output configuring and building facter? I don't see anything obvious, it uses {{CMAKE_INSTALL_PREFIX/LIBFACTER_INSTALL_DESTINATION/libfacter.so}} in https://github.com/puppetlabs/facter/blob/master/lib/Facter.java.in, which should be {{/usr/local/lib/libfacter.so}} by default.", "created": "2017-08-30T13:24:00.000000"}, {"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": "Here is the configure output from the port build system.\n\n{code}\n===>   java-facter-3.7.1 depends on file: /usr/local/openjdk8/bin/java - found\n===>   java-facter-3.7.1 depends on file: /usr/local/bin/cmake - found\n===>   java-facter-3.7.1 depends on executable: ninja - found\n===>   java-facter-3.7.1 depends on file: /usr/local/bin/ccache - found\n===>   java-facter-3.7.1 depends on shared library: libfacter.so - found (/usr/local/lib/libfacter.so)\n===>  Configuring for java-facter-3.7.1\n===>  Performing in-source build\n/bin/mkdir -p /wrkdirs/usr/ports/sysutils/java-facter/work/facter-3.7.1\n-- The C compiler identification is Clang 4.0.0\n-- The CXX compiler identification is Clang 4.0.0\n-- Check for working C compiler: /usr/local/libexec/ccache/cc\n-- Check for working C compiler: /usr/local/libexec/ccache/cc -- works\n-- Detecting C compiler ABI info\n-- Detecting C compiler ABI info - done\n-- Detecting C compile features\n-- Detecting C compile features - done\n-- Check for working CXX compiler: /usr/local/libexec/ccache/c++\n-- Check for working CXX compiler: /usr/local/libexec/ccache/c++ -- works\n-- Detecting CXX compiler ABI info\n-- Detecting CXX compiler ABI info - done\n-- Detecting CXX compile features\n-- Detecting CXX compile features - done\n-- Boost version: 1.64.0\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   date_time\n--   chrono\n--   system\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   locale\n--   system\n-- Looking for pthread.h\n-- Looking for pthread.h - found\n-- Found Threads: TRUE\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   log\n--   log_setup\n--   thread\n--   date_time\n--   filesystem\n--   system\n--   chrono\n--   regex\n--   atomic\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   regex\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   regex\n--   filesystem\n--   system\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   regex\n--   system\n--   filesystem\n-- Found CURL: /usr/local/lib/libcurl.so (found version \"7.55.1\")\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   regex\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   regex\n--   filesystem\n--   system\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   regex\n--   filesystem\n--   system\n-- Boost version: 1.64.0\n-- Found the following Boost libraries:\n--   locale\n--   program_options\n--   system\n--   filesystem\n--   date_time\n--   regex\n--   thread\n--   chrono\n--   atomic\n-- Found Ruby: /usr/local/bin/ruby (found suitable version \"2.3.0\", minimum required is \"1.9\")\n-- Found YAMLCPP: /usr/local/lib/libyaml-cpp.so\n-- Found OPENSSL: /usr/lib/libcrypto.so\n-- Found CPPHOCON: /usr/local/lib/liblibcpp-hocon.so\n-- Found JNI: /usr/local/openjdk8/jre/lib/amd64/libjawt.so\n-- Found Java: /usr/local/openjdk8/bin/java (found version \"1.8.0.144\")\n-- The following OPTIONAL packages have been found:\n\n * Ruby (required version >= 1.9)\n * OPENSSL, An open-source implementation of the SSL and TLS protocols, <https://www.openssl.org/>\n   Enables SSH fingerprinting facts on POSIX systems.\n * JNI, Java Native Interface (JNI) is a programming framework that enables Java code running in a Java Virtual Machine (JVM) to call and be called by native applications.\n   Enables JRuby support in Facter.\n * Java, Java compiler for JNI.\n   Enables JRuby support in Facter.\n\n-- The following REQUIRED packages have been found:\n\n * CURL\n * Leatherman\n * Boost (required version >= 1.54)\n * Threads\n * YAMLCPP, A YAML emitter and parser written in C++, <https://code.google.com/p/yaml-cpp/>\n   Enables support for outputting facts as YAML.\n * CPPHOCON, A C++ parser for the HOCON configuration language, <https://github.com/puppetlabs/cpp-hocon>\n   Allows parsing of the Facter config file.\n\n-- CLANG_VERSION_STRING:         4.0\n-- Found PythonInterp: /usr/local/bin/python2.7 (found version \"2.7.13\")\n-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY\n-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success\n-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY\n-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success\n-- Performing Test COMPILER_HAS_DEPRECATED_ATTR\n-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success\n-- Ruby 2.3.0 found.\n-- \"make install\" will install facter.rb to /usr/local/lib/ruby/vendor_ruby\n-- \"make install\" will install facter.jar to /usr/local/lib/ruby/vendor_ruby to support JRuby\n-- Could not find gettext executables, skipping gettext_templates.\n-- Could not find gettext executables, skipping gettext_compile.\n-- Configuring done\n-- Generating done\nCMake Warning:\n  Manually-specified variables were not used by the project:\n\n    CMAKE_COLOR_MAKEFILE\n    CMAKE_CXX_FLAGS_DEBUG\n    CMAKE_C_FLAGS_DEBUG\n    CMAKE_C_FLAGS_RELEASE\n    CMAKE_MODULE_LINKER_FLAGS\n    CMAKE_VERBOSE_MAKEFILE\n\n\n-- Build files have been written to: /wrkdirs/usr/ports/sysutils/java-facter/work/facter-3.7.1\n{code}\n\nHere is the {{CMakeOutput.log}} that was written during the build.\n\n{code}\nThe system is: FreeBSD - 11.1-RELEASE - amd64\nCompiling the C compiler identification source file \"CMakeCCompilerId.c\" succeeded.\nCompiler: /usr/local/libexec/ccache/cc \nBuild flags: -O2", "created": "2017-09-01T11:21:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I was looking to see that the java config made sense. Any chance you're using different Java versions during the build vs running Puppet Server?\n\nAlso, which FreeBSD are you using? I may have to spin up a build and just dig around. I'm not really sure what's going on.\n\nI guess a few things to try:\n- Instrument [Facter.java.in|https://github.com/puppetlabs/facter/blob/3.7.1/lib/Facter.java.in] to print some output, particularly the call to System.load.\n- Check symbols on libfacter for [Java_com_puppetlabs_Facter_lookup|https://github.com/puppetlabs/facter/blob/3.7.1/lib/src/java/facter.cc#L176]\n- Maybe strace to see if Java's trying to open the .so", "created": "2017-09-01T11:32:00.000000"}, {"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": "I'm pretty sure the ports system should enforce the version of java used in the build matches the runtime dependency version.\n\nIs there a difference in the libfacter.so file when the facter build process is asked to build facter.jar?  I've run {{nm libfacter.so}} and don't see the any symbol reference to Java, so perhaps that's where this is an issue in the build process.  The ports system is tricky, and we've got two builds currently, one for regular facer, and one java-facter that only packages the facter.jar.  And so the libfacter.so comes from the version of the build without the java requested during configure.\n\nI've not gotten the strace yet.", "created": "2017-09-01T12:42:00.000000"}, {"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": "I'm running FreeBSD 11.", "created": "2017-09-01T12:43:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:557058:0605a129-ce49-46e3-912d-378334931850] yes, that would make a difference. We build in lib/src/java/facter.cc only if the build process identifies a Java version. See https://github.com/puppetlabs/facter/blob/master/lib/CMakeLists.txt#L265-L286.", "created": "2017-09-01T12:45:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:557058:0605a129-ce49-46e3-912d-378334931850] were you able to resolve build issues by rebuilding libfacter along with facter.jar?", "created": "2017-09-05T12:09:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "I think the right thing to do WRT ports is to make facter all one port, with \"java\" as an optional dependency? It appears that FreeBSD ports supports that, at least to some extent", "created": "2017-09-05T12:13:00.000000"}, {"author": "557058:0605a129-ce49-46e3-912d-378334931850", "body": "With some back and forth about the approach, its clear that this is entirely an issue with the port creation.  Thank you for the information, advice, and attention.  This can be marked as resolved.", "created": "2017-09-30T12:59:00.000000"}], "components": ["Puppet Server"], "created": "2017-08-29T14:24:00.000000", "creator": "557058:0605a129-ce49-46e3-912d-378334931850", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@193ffd4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgbx3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_596623125_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2163096063"}], "description": "In the process of updating the FreeBSD port for puppetserver to version 5, I'm attempting to make the CFacter the default, using facter.jar produced during the Facter build.  However, with the facter.jar in place of the ruby facter at the same location, I get the following errors in the log and the service never comes online.  I'm unsure what to make of these errors, so hopefully someone here has a suggestion.\n\n{code}\n[root@cfacter-puppet5 ~]# cat /var/log/puppetserver/puppetserver.log \nException in thread \"main\" java.lang.IllegalStateException: There was a problem adding a JRubyInstance to the pool.\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20157$prime_pool_BANG___20162$fn__20166.invoke(jruby_agents.clj:73)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20157$prime_pool_BANG___20162.invoke(jruby_agents.clj:48)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20403$send_prime_pool_BANG___20408$fn__20409$fn__20410.invoke(jruby_agents.clj:230)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:393)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:378)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$eval14185$shutdown_service__14190$fn$reify__14192$service_fnk__5261__auto___positional$reify__14197.shutdown_on_error(internal.clj:433)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14107__14135.invoke(internal.clj:401)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14106__14144.invoke(internal.clj:401)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2516)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2515)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20132$send_agent__20137$fn__20138$agent_fn__20139.invoke(jruby_agents.clj:42)\n\tat clojure.core$binding_conveyor_fn$fn__4676.invoke(core.clj:1941)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114)\n\tat clojure.lang.Agent$Action.run(Agent.java:163)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: org.jruby.embed.InvokeFailedException: java.lang.UnsatisfiedLinkError: com.puppetlabs.Facter.lookup(Ljava/lang/String;)Ljava/lang/Object;\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(EmbedRubyObjectAdapterImpl.java:322)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(EmbedRubyObjectAdapterImpl.java:170)\n\tat org.jruby.embed.ScriptingContainer.callMethod(ScriptingContainer.java:1475)\n\tat com.puppetlabs.jruby_utils.jruby.InternalScriptingContainer.callMethodWithArgArray(InternalScriptingContainer.java:180)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval21666$get_initialize_pool_instance_fn__21671$fn__21672$fn__21673.invoke(jruby_puppet_core.clj:157)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19745$create_pool_instance_BANG___19750$fn__19751.invoke(jruby_internal.clj:140)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19745$create_pool_instance_BANG___19750.invoke(jruby_internal.clj:118)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20157$prime_pool_BANG___20162$fn__20166.invoke(jruby_agents.clj:64)\n\t... 20 more\nCaused by: java.lang.UnsatisfiedLinkError: com.puppetlabs.Facter.lookup(Ljava/lang/String;)Ljava/lang/Object;\n\tat com.puppetlabs.Facter.lookup(Native Method)\n\tat java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:498)\n\tat org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(org/jruby/javasupport/JavaMethod.java:453)\n\tat org.jruby.javasupport.JavaMethod.invokeStaticDirect(org/jruby/javasupport/JavaMethod.java:365)\n\tat RUBY.value(/usr/local/lib/ruby/vendor_ruby/facter.rb:12)\n\tat RUBY.hostname_fact(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:75)\n\tat RUBY.default_certname(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:64)\n\tat RUBY.block in Puppet(/usr/local/lib/ruby/site_ruby/2.3/puppet/defaults.rb:638)\n\tat org.jruby.RubyProc.call(org/jruby/RubyProc.java:289)\n\tat org.jruby.RubyProc.call19(org/jruby/RubyProc.java:273)\n\tat org.jruby.RubyProc$INVOKER$i$0$0$call19.call(org/jruby/RubyProc$INVOKER$i$0$0$call19.gen)\n\tat RUBY.default(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings/base_setting.rb:100)\n\tat RUBY.lookup(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1279)\n\tat RUBY.interpolate(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1294)\n\tat RUBY.block in convert(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1327)\n\tat org.jruby.RubyString.gsubCommon19(org/jruby/RubyString.java:2629)\n\tat org.jruby.RubyString.gsubCommon19(org/jruby/RubyString.java:2583)\n\tat org.jruby.RubyString.gsub(org/jruby/RubyString.java:2541)\n\tat org.jruby.RubyString$INVOKER$i$gsub19.call(org/jruby/RubyString$INVOKER$i$gsub19.gen)\n\tat RUBY.convert(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1323)\n\tat RUBY.interpolate(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1301)\n\tat RUBY.value_sym(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1080)\n\tat RUBY.value(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1052)\n\tat RUBY.value(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings/base_setting.rb:141)\n\tat RUBY.block in to_catalog(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:934)\n\tat org.jruby.RubyArray.each(org/jruby/RubyArray.java:1734)\n\tat org.jruby.RubyArray$INVOKER$i$0$0$each.call(org/jruby/RubyArray$INVOKER$i$0$0$each.gen)\n\tat RUBY.to_catalog(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:932)\n\tat RUBY.use(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:997)\n\tat RUBY.initialize_puppet(uri:classloader:/puppetserver-lib/puppet/server/puppet_config.rb:45)\n\tat RUBY.initialize(uri:classloader:/puppetserver-lib/puppet/server/master.rb:29)\n\tat org.jruby.RubyClass.newInstance(org/jruby/RubyClass.java:1022)\n\tat org.jruby.RubyClass$INVOKER$i$newInstance.call(org/jruby/RubyClass$INVOKER$i$newInstance.gen)\n\tat org.jruby.RubyClass.finvoke(org/jruby/RubyClass.java:899)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callEachType(org/jruby/embed/internal/EmbedRubyObjectAdapterImpl.java:356)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(org/jruby/embed/internal/EmbedRubyObjectAdapterImpl.java:309)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(org/jruby/embed/internal/EmbedRubyObjectAdapterImpl.java:170)\n\tat org.jruby.embed.ScriptingContainer.callMethod(org/jruby/embed/ScriptingContainer.java:1475)\n\tat com.puppetlabs.jruby_utils.jruby.InternalScriptingContainer.callMethodWithArgArray(com/puppetlabs/jruby_utils/jruby/InternalScriptingContainer.java:180)\n\tat java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(clojure/lang/Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(clojure/lang/Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval21666$get_initialize_pool_instance_fn__21671$fn__21672$fn__21673.invoke(puppetlabs/services/jruby/jruby_puppet_core.clj:157)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19745$create_pool_instance_BANG___19750$fn__19751.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_internal.clj:140)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19745$create_pool_instance_BANG___19750.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_internal.clj:118)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20157$prime_pool_BANG___20162$fn__20166.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj:64)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20157$prime_pool_BANG___20162.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj:48)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20403$send_prime_pool_BANG___20408$fn__20409$fn__20410.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj:230)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(puppetlabs/trapperkeeper/internal.clj:393)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(puppetlabs/trapperkeeper/internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(puppetlabs/trapperkeeper/internal.clj:378)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(puppetlabs/trapperkeeper/internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$eval14185$shutdown_service__14190$fn$reify__14192$service_fnk__5261__auto___positional$reify__14197.shutdown_on_error(puppetlabs/trapperkeeper/internal.clj:433)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14107__14135.invoke(puppetlabs/trapperkeeper/internal.clj:401)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14106__14144.invoke(puppetlabs/trapperkeeper/internal.clj:401)\n\tat clojure.core$partial$fn__4759.invoke(clojure/core.clj:2516)\n\tat clojure.core$partial$fn__4759.invoke(clojure/core.clj:2515)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20132$send_agent__20137$fn__20138$agent_fn__20139.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj:42)\n\tat clojure.core$binding_conveyor_fn$fn__4676.invoke(clojure/core.clj:1941)\n\tat clojure.lang.AFn.applyToHelper(clojure/lang/AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(clojure/lang/RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(clojure/lang/Agent.java:114)\n\tat clojure.lang.Agent$Action.run(clojure/lang/Agent.java:163)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(java/util/concurrent/ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(java/util/concurrent/ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(java/lang/Thread.java:748)\nl$shutdown_on_error_STAR_.invoke(puppetlabs/trapperkeeper/internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(puppetlabs/trapperkeeper/internal.clj:378)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(puppetlabs/trapperkeeper/internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$eval14185$shutdown_service__14190$fn$reify__14192$service_fnk__5261__auto___positional$reify__14197.shutdown_on_error(puppetlabs/trapperkeeper/internal.clj:433)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14107__14135.invoke(puppetlabs/trapperkeeper/internal.clj:401)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14106__14144.invoke(puppetlabs/trapperkeeper/internal.clj:401)\n\tat clojure.core$partial$fn__4759.invoke(clojure/core.clj:2516)\n\tat clojure.core$partial$fn__4759.invoke(clojure/core.clj:2515)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20132$send_agent__20137$fn__20138$agent_fn__20139.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj:42)\n\tat clojure.core$binding_conveyor_fn$fn__4676.invoke(clojure/core.clj:1941)\n\tat clojure.lang.AFn.applyToHelper(clojure/lang/AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(clojure/lang/RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(clojure/lang/Agent.java:114)\n\tat clojure.lang.Agent$Action.run(clojure/lang/Agent.java:163)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(java/util/concurrent/ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(java/util/concurrent/ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(java/lang/Thread.java:748)\n2017-08-09 04:45:56,558 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Unable to borrow JRubyInstance from pool\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19932$borrow_from_pool_BANG__STAR___19937$fn__19938.invoke(jruby_internal.clj:197)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19932$borrow_from_pool_BANG__STAR___19937.invoke(jruby_internal.clj:184)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19979$borrow_from_pool_with_timeout__19984$fn__19985.invoke(jruby_internal.clj:232)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19979$borrow_from_pool_with_timeout__19984.invoke(jruby_internal.clj:221)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval21182$borrow_from_pool_with_timeout__21187$fn__21188.invoke(jruby_core.clj:206)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval21182$borrow_from_pool_with_timeout__21187.invoke(jruby_core.clj:193)\n\tat puppetlabs.services.config.puppet_server_config_core$eval30860$get_puppet_config__30865$fn__30866$fn__30867.invoke(puppet_server_config_core.clj:106)\n\tat puppetlabs.services.config.puppet_server_config_core$eval30860$get_puppet_config__30865$fn__30866.invoke(puppet_server_config_core.clj:106)\n\tat puppetlabs.services.config.puppet_server_config_core$eval30860$get_puppet_config__30865.invoke(puppet_server_config_core.clj:101)\n\tat puppetlabs.services.config.puppet_server_config_service$reify__30895$service_fnk__5261__auto___positional$reify__30906.init(puppet_server_config_service.clj:25)\n\tat puppetlabs.trapperkeeper.services$eval5063$fn__5064$G__5051__5067.invoke(services.clj:8)\n\tat puppetlabs.trapperkeeper.services$eval5063$fn__5064$G__5050__5071.invoke(services.clj:8)\n\tat puppetlabs.trapperkeeper.internal$eval13831$run_lifecycle_fn_BANG___13838$fn__13839.invoke(internal.clj:204)\n\tat puppetlabs.trapperkeeper.internal$eval13831$run_lifecycle_fn_BANG___13838.invoke(internal.clj:187)\n\tat puppetlabs.trapperkeeper.internal$eval13860$run_lifecycle_fns__13865$fn__13866.invoke(internal.clj:238)\n\tat puppetlabs.trapperkeeper.internal$eval13860$run_lifecycle_fns__13865.invoke(internal.clj:215)\n\tat puppetlabs.trapperkeeper.internal$eval14330$build_app_STAR___14339$fn$reify__14349.init(internal.clj:588)\n\tat puppetlabs.trapperkeeper.internal$eval14376$boot_services_for_app_STAR__STAR___14383$fn__14384$fn__14386.invoke(internal.clj:616)\n\tat puppetlabs.trapperkeeper.internal$eval14376$boot_services_for_app_STAR__STAR___14383$fn__14384.invoke(internal.clj:615)\n\tat puppetlabs.trapperkeeper.internal$eval14376$boot_services_for_app_STAR__STAR___14383.invoke(internal.clj:609)\n\tat clojure.core$partial$fn__4761.invoke(core.clj:2521)\n\tat puppetlabs.trapperkeeper.internal$eval13899$initialize_lifecycle_worker__13910$fn__13911$fn__13997$state_machine__11871__auto____13998$fn__14000.invoke(internal.clj:255)\n\tat puppetlabs.trapperkeeper.internal$eval13899$initialize_lifecycle_worker__13910$fn__13911$fn__13997$state_machine__11871__auto____13998.invoke(internal.clj:255)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:1012)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:1011)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:1016)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:1014)\n\tat clojure.core.async$ioc_alts_BANG_$fn__12039.invoke(async.clj:383)\n\tat clojure.core.async$do_alts$fn__11985$fn__11988.invoke(async.clj:252)\n\tat clojure.core.async.impl.channels.ManyToManyChannel$fn__6795$fn__6796.invoke(channels.clj:95)\n\tat clojure.lang.AFn.run(AFn.java:22)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: org.jruby.embed.InvokeFailedException: java.lang.UnsatisfiedLinkError: com.puppetlabs.Facter.lookup(Ljava/lang/String;)Ljava/lang/Object;\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(EmbedRubyObjectAdapterImpl.java:322)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(EmbedRubyObjectAdapterImpl.java:170)\n\tat org.jruby.embed.ScriptingContainer.callMethod(ScriptingContainer.java:1475)\n\tat com.puppetlabs.jruby_utils.jruby.InternalScriptingContainer.callMethodWithArgArray(InternalScriptingContainer.java:180)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval21666$get_initialize_pool_instance_fn__21671$fn__21672$fn__21673.invoke(jruby_puppet_core.clj:157)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19745$create_pool_instance_BANG___19750$fn__19751.invoke(jruby_internal.clj:140)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19745$create_pool_instance_BANG___19750.invoke(jruby_internal.clj:118)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20157$prime_pool_BANG___20162$fn__20166.invoke(jruby_agents.clj:64)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20157$prime_pool_BANG___20162.invoke(jruby_agents.clj:48)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20403$send_prime_pool_BANG___20408$fn__20409$fn__20410.invoke(jruby_agents.clj:230)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:393)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:378)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$eval14185$shutdown_service__14190$fn$reify__14192$service_fnk__5261__auto___positional$reify__14197.shutdown_on_error(internal.clj:433)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14107__14135.invoke(internal.clj:401)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14106__14144.invoke(internal.clj:401)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2516)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2515)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20132$send_agent__20137$fn__20138$agent_fn__20139.invoke(jruby_agents.clj:42)\n\tat clojure.core$binding_conveyor_fn$fn__4676.invoke(core.clj:1941)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114)\n\tat clojure.lang.Agent$Action.run(Agent.java:163)\n\t... 3 common frames omitted\nCaused by: java.lang.UnsatisfiedLinkError: com.puppetlabs.Facter.lookup(Ljava/lang/String;)Ljava/lang/Object;\n\tat com.puppetlabs.Facter.lookup(Native Method)\n\tat java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:498)\n\tat org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(org/jruby/javasupport/JavaMethod.java:453)\n\tat org.jruby.javasupport.JavaMethod.invokeStaticDirect(org/jruby/javasupport/JavaMethod.java:365)\n\tat RUBY.value(/usr/local/lib/ruby/vendor_ruby/facter.rb:12)\n\tat RUBY.hostname_fact(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:75)\n\tat RUBY.default_certname(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:64)\n\tat RUBY.block in Puppet(/usr/local/lib/ruby/site_ruby/2.3/puppet/defaults.rb:638)\n\tat org.jruby.RubyProc.call(org/jruby/RubyProc.java:289)\n\tat org.jruby.RubyProc.call19(org/jruby/RubyProc.java:273)\n\tat org.jruby.RubyProc$INVOKER$i$0$0$call19.call(org/jruby/RubyProc$INVOKER$i$0$0$call19.gen)\n\tat RUBY.default(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings/base_setting.rb:100)\n\tat RUBY.lookup(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1279)\n\tat RUBY.interpolate(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1294)\n\tat RUBY.block in convert(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1327)\n\tat org.jruby.RubyString.gsubCommon19(org/jruby/RubyString.java:2629)\n\tat org.jruby.RubyString.gsubCommon19(org/jruby/RubyString.java:2583)\n\tat org.jruby.RubyString.gsub(org/jruby/RubyString.java:2541)\n\tat org.jruby.RubyString$INVOKER$i$gsub19.call(org/jruby/RubyString$INVOKER$i$gsub19.gen)\n\tat RUBY.convert(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1323)\n\tat RUBY.interpolate(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1301)\n\tat RUBY.value_sym(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1080)\n\tat RUBY.value(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:1052)\n\tat RUBY.value(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings/base_setting.rb:141)\n\tat RUBY.block in to_catalog(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:934)\n\tat org.jruby.RubyArray.each(org/jruby/RubyArray.java:1734)\n\tat org.jruby.RubyArray$INVOKER$i$0$0$each.call(org/jruby/RubyArray$INVOKER$i$0$0$each.gen)\n\tat RUBY.to_catalog(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:932)\n\tat RUBY.use(/usr/local/lib/ruby/site_ruby/2.3/puppet/settings.rb:997)\n\tat RUBY.initialize_puppet(uri:classloader:/puppetserver-lib/puppet/server/puppet_config.rb:45)\n\tat RUBY.initialize(uri:classloader:/puppetserver-lib/puppet/server/master.rb:29)\n\tat org.jruby.RubyClass.newInstance(org/jruby/RubyClass.java:1022)\n\tat org.jruby.RubyClass$INVOKER$i$newInstance.call(org/jruby/RubyClass$INVOKER$i$newInstance.gen)\n\tat org.jruby.RubyClass.finvoke(org/jruby/RubyClass.java:899)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callEachType(org/jruby/embed/internal/EmbedRubyObjectAdapterImpl.java:356)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(org/jruby/embed/internal/EmbedRubyObjectAdapterImpl.java:309)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(org/jruby/embed/internal/EmbedRubyObjectAdapterImpl.java:170)\n\tat org.jruby.embed.ScriptingContainer.callMethod(org/jruby/embed/ScriptingContainer.java:1475)\n\tat com.puppetlabs.jruby_utils.jruby.InternalScriptingContainer.callMethodWithArgArray(com/puppetlabs/jruby_utils/jruby/InternalScriptingContainer.java:180)\n\tat java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(clojure/lang/Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(clojure/lang/Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval21666$get_initialize_pool_instance_fn__21671$fn__21672$fn__21673.invoke(puppetlabs/services/jruby/jruby_puppet_core.clj:157)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19745$create_pool_instance_BANG___19750$fn__19751.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_internal.clj:140)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval19745$create_pool_instance_BANG___19750.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_internal.clj:118)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20157$prime_pool_BANG___20162$fn__20166.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj:64)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20157$prime_pool_BANG___20162.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj:48)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20403$send_prime_pool_BANG___20408$fn__20409$fn__20410.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj:230)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(puppetlabs/trapperkeeper/internal.clj:393)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(puppetlabs/trapperkeeper/internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(puppetlabs/trapperkeeper/internal.clj:378)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(puppetlabs/trapperkeeper/internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$eval14185$shutdown_service__14190$fn$reify__14192$service_fnk__5261__auto___positional$reify__14197.shutdown_on_error(puppetlabs/trapperkeeper/internal.clj:433)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14107__14135.invoke(puppetlabs/trapperkeeper/internal.clj:401)\n\tat puppetlabs.trapperkeeper.internal$eval14115$fn__14127$G__14106__14144.invoke(puppetlabs/trapperkeeper/internal.clj:401)\n\tat clojure.core$partial$fn__4759.invoke(clojure/core.clj:2516)\n\tat clojure.core$partial$fn__4759.invoke(clojure/core.clj:2515)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20132$send_agent__20137$fn__20138$agent_fn__20139.invoke(puppetlabs/services/jruby_pool_manager/impl/jruby_agents.clj:42)\n\tat clojure.core$binding_conveyor_fn$fn__4676.invoke(clojure/core.clj:1941)\n\tat clojure.lang.AFn.applyToHelper(clojure/lang/AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(clojure/lang/RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(clojure/lang/Agent.java:114)\n\tat clojure.lang.Agent$Action.run(clojure/lang/Agent.java:163)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(java/util/concurrent/ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(java/util/concurrent/ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(java/lang/Thread.java:748)\n2017-08-09 04:45:56,565 INFO  [main] [p.t.internal] Beginning shutdown sequence\n2017-08-09 04:45:56,574 INFO  [async-dispatch-3] [p.s.j.jruby-metrics-service] JRuby Metrics Service: stopping metrics sampler job\n2017-08-09 04:45:56,576 INFO  [async-dispatch-3] [p.s.j.jruby-metrics-service] JRuby Metrics Service: stopped metrics sampler job\n2017-08-09 04:45:56,581 INFO  [async-dispatch-3] [p.s.j.i.jruby-agents] Draining JRuby pool.\n2017-08-09 04:45:56,584 ERROR [async-dispatch-3] [p.t.internal] Encountered error during shutdown sequence\njava.lang.InterruptedException: Lock can't be granted because a pill has been inserted\n\tat com.puppetlabs.jruby_utils.pool.JRubyPool.lockWithTimeout(JRubyPool.java:368)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20238$borrow_all_jrubies__20243$fn__20244$fn__20245.invoke(jruby_agents.clj:124)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20238$borrow_all_jrubies__20243$fn__20244.invoke(jruby_agents.clj:123)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20238$borrow_all_jrubies__20243.invoke(jruby_agents.clj:115)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20314$drain_and_refill_pool_BANG___20323$fn__20326.invoke(jruby_agents.clj:188)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20314$drain_and_refill_pool_BANG___20323.invoke(jruby_agents.clj:170)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20355$flush_pool_for_shutdown_BANG___20360$fn__20361.invoke(jruby_agents.clj:209)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval20355$flush_pool_for_shutdown_BANG___20360.invoke(jruby_agents.clj:197)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval21253$flush_pool_for_shutdown_BANG___21258$fn__21259.invoke(jruby_core.clj:232)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval21253$flush_pool_for_shutdown_BANG___21258.invoke(jruby_core.clj:227)\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__22193$service_fnk__5261__auto___positional$reify__22207.stop(jruby_puppet_service.clj:52)\n\tat puppetlabs.trapperkeeper.services$eval5063$fn__5090$G__5055__5093.invoke(services.clj:8)\n\tat puppetlabs.trapperkeeper.services$eval5063$fn__5090$G__5054__5097.invoke(services.clj:8)\n\tat puppetlabs.trapperkeeper.internal$eval13831$run_lifecycle_fn_BANG___13838$fn__13839.invoke(internal.clj:204)\n\tat puppetlabs.trapperkeeper.internal$eval13831$run_lifecycle_fn_BANG___13838.invoke(internal.clj:187)\n\tat puppetlabs.trapperkeeper.internal$eval14242$shutdown_BANG___14247$fn__14248$shutdown_fn__14250$fn__14261.invoke(internal.clj:444)\n\tat puppetlabs.trapperkeeper.internal$eval14242$shutdown_BANG___14247$fn__14248$shutdown_fn__14250.invoke(internal.clj:443)\n\tat puppetlabs.trapperkeeper.internal$eval13899$initialize_lifecycle_worker__13910$fn__13911$fn__13997$state_machine__11871__auto____13998$fn__14000$fn__14013.invoke(internal.clj:280)\n\tat puppetlabs.trapperkeeper.internal$eval13899$initialize_lifecycle_worker__13910$fn__13911$fn__13997$state_machine__11871__auto____13998$fn__14000.invoke(internal.clj:264)\n\tat puppetlabs.trapperkeeper.internal$eval13899$initialize_lifecycle_worker__13910$fn__13911$fn__13997$state_machine__11871__auto____13998.invoke(internal.clj:255)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:1012)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:1011)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:1016)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:1014)\n\tat clojure.core.async$ioc_alts_BANG_$fn__12039.invoke(async.clj:383)\n\tat clojure.core.async$do_alts$fn__11985$fn__11988.invoke(async.clj:252)\n\tat clojure.core.async.impl.channels.ManyToManyChannel$fn__6809.invoke(channels.clj:135)\n\tat clojure.lang.AFn.run(AFn.java:22)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:748)\n2017-08-09 04:45:56,593 INFO  [async-dispatch-3] [p.t.s.w.jetty9-service] Shutting down web server(s).\n2017-08-09 04:45:56,601 INFO  [main] [p.t.internal] Finished shutdown sequence\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15119", "fixedVersions": [], "id": "15119", "issueType": "Bug", "key": "SERVER-1959", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0605a129-ce49-46e3-912d-378334931850", "resolution": "Cannot Reproduce", "resolutionDate": "2017-09-30T12:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PuppetServer with facter.jar fails to start on FreeBSD", "timeSpent": "PT0S", "updated": "2017-09-30T12:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "May be you were aware but agent also has same issue. I will be opening a ticket.  ", "created": "2017-09-20T08:09:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "Not sure how important or critical this is since the currently supported SHA256 (default) should be acceptable for certificate signing and fingerprinting. We plan to look into it after enabling agent for FIPS first. ", "created": "2018-01-04T14:38:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "This is not a must have for FIPS and just adding support for\u00a0more FIPS approved algorithms is not sufficient for getting Server/CA to be FIPS compliant. Server needs to be able to work on FIPS certified cryptographic providers. That work would be taken up depending\u00a0on interest in the FIPS compliant agent made available as part of 5.4.0 release and ask for FIPS compliant server.\u00a0", "created": "2018-02-16T08:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Sounds like we don't need this. Please reopen if that's not true.", "created": "2019-03-25T15:53:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "Yes, you still need this.", "created": "2019-03-25T15:59:00.000000"}], "components": ["Certificate Authority"], "created": "2017-08-29T10:35:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Certificates can be generated that support SHA-384"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b989f77"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8ri240r"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Sep/17"}], "description": "Though SHA-512 has been approved for use in FIPS 140-2 systems since 2004, many of the underlying platforms have not gotten their underlying libraries approved past SHA-384.\n\nUnfortunately, the Puppet Server code skips 384 and jumps directly to 512.\n\nThe server needs to support SHA-384 for FIPS 140-2 compliant infrastructures.\n\nhttps://github.com/puppetlabs/puppetserver/blob/master/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1139-L1166", "environment": "FIPS Enabled Environments", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14690", "fixedVersions": [], "id": "14690", "issueType": "Bug", "key": "SERVER-1958", "labels": ["low-hanging-fruit"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The Puppet CA must support SHA-384", "timeSpent": "PT0S", "updated": "2022-03-09T09:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-08-24T09:28:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b8ab0d4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmmf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2268_*|*_3_*:*_1_*:*_22319_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1834368133"}], "description": "(Initial planned release date: 2017-09-06)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%22SERVER 5.1.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "16314", "fixedVersions": [], "id": "16314", "issueType": "Task", "key": "SERVER-1953", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-14T15:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "attachments": [], "comments": [], "components": [], "created": "2017-08-24T09:28:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2bf2960d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg7qf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2268_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_15563829662"}], "description": "(Initial planned release date: 2017-09-06)\n\nUpdate dujour to notify users to use SERVER 5.1.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16005", "fixedVersions": [], "id": "16005", "issueType": "Task", "key": "SERVER-1952", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Done", "resolutionDate": "2018-02-20T11:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use SERVER 5.1.0 (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2018-02-20T11:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "https://groups.google.com/forum/#!topic/puppet-users/DMsBqwLQroM", "created": "2017-09-14T15:02:00.000000"}], "components": [], "created": "2017-08-24T09:28:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b823368"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgkxb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2224_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1834449956"}], "description": "(Initial planned release date: 2017-09-06)\n\n  * [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "15694", "fixedVersions": [], "id": "15694", "issueType": "Task", "key": "SERVER-1951", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-14T15:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-08-24T09:28:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e1b45da"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgkwv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2209_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1820623429"}], "description": "(Initial planned release date: 2017-09-06)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "15356", "fixedVersions": [], "id": "15356", "issueType": "Task", "key": "SERVER-1950", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-14T11:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "557058:750f4af2-1c22-46dd-9477-5385f29f68db", "body": "Will there be Puppetserver 5.1.0 packages for Debian/stretch (9.x)? I can see ones for Ubuntu/xenial and Debian/jessie, but not stretch.", "created": "2017-09-14T03:43:00.000000"}], "components": [], "created": "2017-08-24T09:28:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f3ca76e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmmn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2292_*|*_3_*:*_1_*:*_10391374_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1739856871"}], "description": "(Initial planned release date: 2017-09-06)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "15117", "fixedVersions": [], "id": "15117", "issueType": "Task", "key": "SERVER-1949", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-13T15:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-14T09:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50512ae0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmm7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2264_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1648131307"}], "description": "(Initial planned release date: 2017-09-06)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "14689", "fixedVersions": [], "id": "14689", "issueType": "Task", "key": "SERVER-1948", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-12T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "+1s all around, we're shipping.", "created": "2017-09-12T12:29:00.000000"}], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b01d1f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmlz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2260_*|*_3_*:*_1_*:*_60977_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1652420140"}], "description": "(Initial planned release date: 2017-09-06)\n\nThis should happen Monday-Thursday, before noon PST. We should not be shipping anything after noon PST or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:89341248-d23e-4b19-a2b6-66b9bb55eb83]\n  * [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da]\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "17362", "fixedVersions": [], "id": "17362", "issueType": "Task", "key": "SERVER-1947", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Done", "resolutionDate": "2017-09-12T12:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Packages look good, spot checked a number of platforms to success. Our acceptance tests should be rigorous enough to make this ticket somewhat redundant.", "created": "2017-09-12T12:23:00.000000"}], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42bbc14b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmlr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2230_*|*_3_*:*_1_*:*_3571537_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1648596261"}], "description": "(Initial planned release date: 2017-09-06)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "17205", "fixedVersions": [], "id": "17205", "issueType": "Task", "key": "SERVER-1946", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-12T12:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Tagged ee651640958d3018e6ce4615bcdb7e5907c052f1 as 5.1.0.", "created": "2017-09-12T11:15:00.000000"}], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@732fa57"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmlj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2224_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1648074967"}], "description": "(Initial planned release date: 2017-09-06)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "16843", "fixedVersions": [], "id": "16843", "issueType": "Task", "key": "SERVER-1945", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Done", "resolutionDate": "2017-09-12T11:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] Is this one done? The team wasn't sure if there was anything else needed.", "created": "2017-09-19T17:15:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] Yep! Props to [~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] who handled the release while I was out. I've closed this ticket.", "created": "2017-09-20T11:31:00.000000"}], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d6f2143"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgkx3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2264_*|*_3_*:*_1_*:*_1015761092_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1323949418"}], "description": "(Initial planned release date: 2017-09-06)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "16564", "fixedVersions": [], "id": "16564", "issueType": "Task", "key": "SERVER-1944", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-20T11:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-20T11:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Fixes for Server 5.1.0: https://puppet.atlassian.net/issues/?filter=28407\n\nIntroduced in Server 5.1.0: https://puppet.atlassian.net/issues/?filter=28408", "created": "2017-09-08T12:42:00.000000"}], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1fc36cea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmlb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2272_*|*_3_*:*_1_*:*_260323902_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1306179483"}], "description": "(Initial planned release date: 2017-09-06)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "16313", "fixedVersions": [], "id": "16313", "issueType": "Task", "key": "SERVER-1943", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Done", "resolutionDate": "2017-09-11T12:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "We aren't using a stable branch right now, closing.", "created": "2017-09-11T11:55:00.000000"}], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b9fd263"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylml3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2266_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1564099477"}], "description": "(Initial planned release date: 2017-09-06)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "16004", "fixedVersions": [], "id": "16004", "issueType": "Task", "key": "SERVER-1942", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Won't Do", "resolutionDate": "2017-09-11T11:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@313111fb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmkv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2232_*|*_10007_*:*_1_*:*_1888309_*|*_3_*:*_1_*:*_43774_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1564015848"}], "description": "(Initial planned release date: 2017-09-06)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "15691", "fixedVersions": [], "id": "15691", "issueType": "Task", "key": "SERVER-1941", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-11T12:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Tickets look good", "created": "2017-09-08T11:50:00.000000"}], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@466d6dc7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmkn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2118_*|*_3_*:*_1_*:*_70219421_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1234358020"}], "description": "(Initial planned release date: 2017-09-06)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "15353", "fixedVersions": [], "id": "15353", "issueType": "Task", "key": "SERVER-1940", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-08T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "* All Puppetserver tests are passing\n* All tickets that need resolution for the release are resolved\n* No new platforms have been added\n* The release will be cut from master so CI has validated the version to be released", "created": "2017-09-08T12:10:00.000000"}], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a75782d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1938"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmkf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2151_*|*_3_*:*_1_*:*_71675812_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1234126910"}], "description": "(Initial planned release date: 2017-09-06)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%22SERVER 5.1.0%22\n", "epicLinkSummary": "Puppet Server 5.1.0 2017-09-12 Release", "estimate": "PT0S", "externalId": "15116", "fixedVersions": [], "id": "15116", "issueType": "Task", "key": "SERVER-1939", "labels": [], "originalEstimate": "PT0S", "parent": "14688", "parentSummary": "Puppet Server 5.1.0 2017-09-12 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-08T12:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 5.1.0)", "timeSpent": "PT0S", "updated": "2017-09-15T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-08-24T09:27:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@137ba35"}, {"fieldName": "Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server 5.1.0 2017-09-12 Release"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmk7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2058_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_1290244568_*|*_10006_*:*_1_*:*_1049699897"}], "description": "Puppet Server 5.1.0 2017-09-06 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14688", "fixedVersions": [], "id": "14688", "issueType": "Epic", "key": "SERVER-1938", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-09-20T11:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 5.1.0 2017-09-12 Release", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:623c1443d32a94006a649a08] A stacktrace from the server logs would be very helpful. Just the part for the error in question is enough.", "created": "2017-08-24T02:24:00.000000"}, {"author": "623c1443d32a94006a649a08", "body": "2017-08-19 10:12:11,717 WARN  [qtp1330508248-60] [o.e.j.s.HttpChannel] /puppet/v3/file_metadata/products/product_puppetserver/common/etc/puppetlabs/code/hieradata/osfamily/windows/2008%20R2.yaml\njavax.servlet.ServletException: java.net.URISyntaxException: Illegal character in path at index 122: file:////puppet/v3/file_metadata/products/product_puppetserver/common/etc/puppetlabs/code/hieradata/osfamily/windows/2008 R2.yaml\n        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)\n        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:521)\n        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.Server.handle(Server.java:564)\n        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)\n        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)\n        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)\n        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)\n        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:278)\n        at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:148)\n        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)\n        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)\n        at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)\n        at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)\n        at java.lang.Thread.run(Thread.java:745)\nCaused by: java.net.URISyntaxException: Illegal character in path at index 122: file:////puppet/v3/file_metadata/products/product_puppetserver/common/etc/puppetlabs/code/hieradata/osfamily/windows/2008 R2.yaml\n        at java.net.URI$Parser.fail(URI.java:2848)\n        at java.net.URI$Parser.checkChars(URI.java:3021)\n        at java.net.URI$Parser.parseHierarchical(URI.java:3105)\n        at java.net.URI$Parser.parse(URI.java:3053)\n        at java.net.URI.<init>(URI.java:588)\n        at bidi.bidi$just_path.invokeStatic(bidi.cljc:191)\n        at bidi.bidi$just_path.invoke(bidi.cljc:187)\n        at clojure.core$update.invokeStatic(core.clj:5960)\n        at clojure.core$update.invoke(core.clj:5952)\n        at bidi.bidi$match_pair.invokeStatic(bidi.cljc:200)\n        at bidi.bidi$match_pair.invoke(bidi.cljc:195)\n        at bidi.bidi$match_route_STAR_.invokeStatic(bidi.cljc:382)\n        at bidi.bidi$match_route_STAR_.invoke(bidi.cljc:380)\n        at bidi.bidi$match_route.invokeStatic(bidi.cljc:389)\n        at bidi.bidi$match_route.doInvoke(bidi.cljc:385)\n        at clojure.lang.RestFn.applyTo(RestFn.java:142)\n        at clojure.core$apply.invokeStatic(core.clj:650)\n        at clojure.core$apply.invoke(core.clj:641)\n        at puppetlabs.comidi$eval23402$wrap_with_route_metadata__23407$fn__23408$fn__23410.invoke(comidi.clj:334)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__32969.invoke(jetty9_core.clj:422)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n        at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:497)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$eval32546$normalize_uri_handler__32551$fn__32552$fn__32553.invoke(normalized_uri_helpers.clj:74)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)\n        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:170)\n        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)\n        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\n        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\n        ... 20 common frames omitted\n\n\nRepeats the same for the other filename \"2012 R2.yaml\"\n\nI don't know if this makes any difference, but I'm passing arrays of filenames to a module function that declares:\nfile { \"${name}\":\n}", "created": "2017-08-24T09:25:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Moved to SERVER - the original report was for PUP 5.1 - looking at the stacktrace, this seems to be a SERVER problem.", "created": "2017-08-24T10:27:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Also, ping [~accountid:557058:263afade-3e4f-46c6-b50a-cf2982192562] since it is windows related - have you seen this problem before?", "created": "2017-08-24T10:28:00.000000"}, {"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "I've never seen this [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], but the uri looks correct (encoding {{<space>}} to {{%20}}).\n\nWe did change some escaping behavior in PUP-1890 to be more compliant with the URL spec (and to fix Unicode handling) - which could plausibly be related.", "created": "2017-08-28T12:22:00.000000"}, {"author": "623c1443d32a94006a649a08", "body": "I would like to note that I spun up another VM to test upgrading sequentially, starting at the same puppet-agent-1.3.2-1 and puppetserver-2.2.1-1, I can reproduce the issue with agent-1.9.0 and server-2.3.0, I'm having a different issue with agent between 1.3.4 and 1.9.0 with an environment site.pp using hiera_include(classes)\nso cannot test those currently.\nI'm also in training this week so may have delayed responses.", "created": "2017-08-29T08:30:00.000000"}, {"author": "623c1443d32a94006a649a08", "body": "I cloned the original VM to do more testing.\nUpdated to the newer agent-5.2.0 and server-5.1.0 but still had the problem.\nDid some downgrades to earlier versions.\npuppetserver-2.8.0-1 works fine with puppet-agent-1.10.1 puppet-agent-1.10.8 and puppet-agent-5.2.0\nI also did a forced install of puppetserver-5.0.0 with puppet-agent-1.10.8 and it had the problem.\n", "created": "2017-09-27T15:08:00.000000"}, {"author": "623c1443d32a94006a649a08", "body": "Clojure is still a bit foreign to me, but I was looking at that stack trace, and some of the server code.\n\nJust before java.net.URI complains about the character, it seems to be called from bidi.cljc:191\n\n\n{code:java}\n(defn just-path\n  [path]\n  (let [uri-string (str \"file:///\" path)]\n    ", "created": "2017-10-13T13:20:00.000000"}, {"author": "623c093301f8660070b6fa12", "body": "FYI: \nWe also see a similar error when a file is being sent to the filebucket and the original filepath contains a space.\n\nexample error outlut in puppetserver.log:\n\njavax.servlet.ServletException: java.net.URISyntaxException: Illegal character in path at index 105: file:////puppet/v3/file_bucket_file/md5/93c471ab9918e13b3034e84fc2d1a06a/C:/Management/Programs/Centerity Monitor Agent/NSC.ini\n\nMaybe this is related to the same underlying issue as described here?", "created": "2017-10-30T09:03:00.000000"}, {"author": "623c1443d32a94006a649a08", "body": "The more I look at this, it seems that the upgrade of bidi from 1.23.1 to 2.0.12 in puppetlabs/comidi is what caused this problem as an unintentional side-effect.\nThe previous bidi looked like it could handle an unescaped space, whereas the new version since it calls java.URI cannot.\nThis makes me wonder whether the author(s) of bidi intended to be passed an encoded uri to begin with.\n\nThe handler function in puppetlabs/trapperkeeper - normalized_uri_helpers.clj line 65 is deliberately decoding and normalizing the path.\nThis is prior to the call wrap-with-route-metadata in comidi line 334, which calls match-route in bidi where it eventually gets to the match-pair function and just-path.\n\nAgain, clojure is not my specialty, so this is all guesswork that I hope is helpful in some way.", "created": "2017-11-11T10:59:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "This also affects filebucketing:\n\n{noformat}\n$ bx puppet filebucket backup mani\\ fest.pp --http_debug\n...\nopening connection to localhost:8140...\nopened\nstarting SSL for localhost:8140...\nSSL established\n<- \"HEAD /puppet/v3/file_bucket_file/sha256/e20dfbacb8b86a0c66de92b8fe749686a7b1a0bc531b7713b71ecd2a069ca32f//Users/josh/work/puppet/mani%20fest.pp?environment=production& HTTP/1.1\\r\\nAccept: application/octet-stream\\r\\nX-Puppet-Version: 5.3.3\\r\\nAccept-Encoding: gzip", "created": "2017-11-13T17:11:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Pulling this into the targeted filebuckets epic, though the changes affect fileserving in general, e.g. pluginsync, file resources with {{puppet}} source parameter, etc:\n\n\n{noformat}\n$ bx puppet agent -t --http_debug\n...\n<- \"GET /puppet/v3/file_metadatas/plugins?environment=production&links=follow&recurse=true&source_permissions=ignore&ignore=.svn&ignore=CVS&ignore=.git&ignore=.hg&ignore=%2A.pot&checksum_type=sha256 HTTP/1.1\\r\\nAccept: application/json, application/x-msgpack, text/pson\\r\\nX-Puppet-Version: 5.3.3\\r\\nAccept-Encoding: identity", "created": "2017-11-13T17:48:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This looks like an issue with our usage of Puppet Server dependencies. Because the Server team is relatively new we'd like to pair with the folks working on the Filebucket Epic for knowledge sharing.", "created": "2017-12-07T17:57:00.000000"}, {"author": "618d77713ae523006917eb86", "body": "This issue seems to also affect other characters that may not be valid in all operating systems:\n\n2017-12-12 21:59:03,890 WARN  [qtp1177322682-162] [o.e.j.s.HttpChannel] /puppet/v3/file_content/modules/ldap/schema/cn=%7B7%7Dmisc.ldif\njavax.servlet.ServletException: java.net.URISyntaxException: Illegal character in path at index 55: file:////puppet/v3/file_content/modules/ldap/schema/cn={7}misc.ldif\n        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)\n        at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:521)\n        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:56)\n        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.Server.handle(Server.java:564)\n        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)\n        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)\n        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)\n        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)\n        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:278)\n        at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:148)\n        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)\n        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)\n        at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)\n        at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)\n        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)\n        at java.lang.Thread.run(Thread.java:748)\nCaused by: java.net.URISyntaxException: Illegal character in path at index 55: file:////puppet/v3/file_content/modules/ldap/schema/cn={7}misc.ldif\n        at java.net.URI$Parser.fail(URI.java:2848)\n        at java.net.URI$Parser.checkChars(URI.java:3021)\n        at java.net.URI$Parser.parseHierarchical(URI.java:3105)\n        at java.net.URI$Parser.parse(URI.java:3053)\n        at java.net.URI.<init>(URI.java:588)\n        at bidi.bidi$just_path.invokeStatic(bidi.cljc:191)\n        at bidi.bidi$just_path.invoke(bidi.cljc:187)\n        at clojure.core$update.invokeStatic(core.clj:5960)\n        at clojure.core$update.invoke(core.clj:5952)\n        at bidi.bidi$match_pair.invokeStatic(bidi.cljc:200)\n        at bidi.bidi$match_pair.invoke(bidi.cljc:195)\n        at bidi.bidi$match_route_STAR_.invokeStatic(bidi.cljc:382)\n        at bidi.bidi$match_route_STAR_.invoke(bidi.cljc:380)\n        at bidi.bidi$match_route.invokeStatic(bidi.cljc:389)\n        at bidi.bidi$match_route.doInvoke(bidi.cljc:385)\n        at clojure.lang.RestFn.applyTo(RestFn.java:142)\n        at clojure.core$apply.invokeStatic(core.clj:650)\n        at clojure.core$apply.invoke(core.clj:641)\n        at puppetlabs.comidi$eval25062$wrap_with_route_metadata__25067$fn__25068$fn__25070.invoke(comidi.clj:334)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__35047.invoke(jetty9_core.clj:426)\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)\n        at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:498)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers$eval34624$normalize_uri_handler__34629$fn__34630$fn__34631.invoke(normalized_uri_helpers.clj:74)\n        at puppetlabs.trapperkeeper.services.webserver.normalized_uri_helpers.proxy$org.eclipse.jetty.server.handler.HandlerWrapper$ff19274a.handle(Unknown Source)\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)\n        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)\n        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:170)\n        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)\n        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\n        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\n        ... 20 common frames omitted", "created": "2017-12-12T20:12:00.000000"}, {"author": "623e7b23b75ca800705812f3", "body": "Is there any workaround to solve this issue by the momment?\nI downgraded to  puppetserver 2.8.0-1puppetlabs1 and it works perfect with that version.", "created": "2018-01-02T09:45:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I think we have a handle on what is going on here. I'll post an update shortly.", "created": "2018-01-16T15:46:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Okay, so [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] [~accountid:557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116] and I got together and figured out what was going on. In https://github.com/puppetlabs/clj-parent/commit/5f6e19daa356dbacae0a642432f0ec83e0c1c888, the version of bidi was updated to 2.0.12. Puppetserver in turn picked up the clj-parent change in https://github.com/puppetlabs/puppetserver/commit/f9c47d631a50bbc2e7ad7a6cdf56a0ef6fe04589, which was released in 5.0.0.\n\nIn https://github.com/juxt/bidi/commit/15708c95022f8ce858fbe66623be774117c43f99, bidi's {{match-pair}} function began calling {{just-path}}, which itself calls java.net.URI. java.net.URI throws a {{URISyntaxException}} if there are spaces in the string, as that is not a valid URI. This means that in bidi 2, match-pair cannot be handed a URI that has already been decoded. Unforutnately, in tk-jetty9 version 1.5.6 (https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/commits/1.5.6) we started normalizing URIs at the webserver layer (in TK-343). I don't believe we want to revisit that decision, so I am taking the approach of explicitly rolling puppetserver back to bidi 1.23.1 and opening an issue with bidi to try to bring back the old behavior on an opt-in basis (https://github.com/juxt/bidi/issues/170).", "created": "2018-01-16T16:47:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8] This is the puppetserver version of that bug I showed you today.", "created": "2018-01-16T16:52:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "It looks like the core issue is fixed in newer versions of bidi (2.1.0 and greater). Unfortunately, comidi will need an update to take up that version, as they have tightened up a couple of schemas in ways that makes comidi sad.\n\nOnce the linked TK ticket is addressed we'll release a new version of comidi that should address the issue.\n\nI have already opened a PR to 5.1.x of puppetserver to roll bidi back to 1.23.1, and once there is a comidi release to update to the latest version of bidi we can pick that up.", "created": "2018-01-17T11:26:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Promoted to hoyt in https://github.com/puppetlabs/enterprise-dist/commit/f96b96996aa04c8dd983a95a5a525ae6fb8f0b46", "created": "2018-01-24T13:51:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please add release notes for this issue, if needed. Thanks!", "created": "2018-01-24T14:26:00.000000"}], "components": [], "created": "2017-08-23T13:44:00.000000", "creator": "623c1443d32a94006a649a08", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "1. Agent should pluginsync directories and files with spaces, e.g. given a module with a \"lib/foo bar\" directory.\n2. Agent should apply file resources whose source parameter points to files with spaces. Test when the source parameter contains spaces, and when the target it points to contains spaces (both directories and files). To test directories use \"recurse => true\"\n3. When a file resource has \"backup => true\" it should be able to backup files to a local and remote filebucket.\n4. When a recurse => true directory resource has \"purge => true\", it should be able to delete files with spaces.\n5. Puppet filebucket command should get/restore/list files with spaces. The resulting \"paths\" file should contain an entry with spaces (not the URI encoded value)."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f2cf529"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - $$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - 50-90% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Users want to have files with spaces in the names, we should support that. "}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "2 - Annoyance"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-6504"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymatz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server will now correctly parse URIs with spaces in them, thanks to a bug fix in the bidi dependency."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_165107903_*|*_1_*:*_2_*:*_707890640_*|*_10007_*:*_1_*:*_513605096_*|*_3_*:*_1_*:*_90335_*|*_5_*:*_1_*:*_1042039395_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_4059928095_*|*_10005_*:*_1_*:*_7862983777"}], "description": "Update:\n\nIt looks like in the last major version of our route handling library (bidi 2.x) they've changed where/when URI decoding takes place. (Note: a dependency upgraded this transitive dependency for us so moving major versions of a supporting library was not on our radar) Consequently, our URI escaping is incorrect for at least how we pass routes to Puppet's Ruby routes. See the examples below\n\n----\n\nI created a vm to test my existing puppet configuration with puppet-5.1 and I've followed the guide about replacing hiera/hiera_hash calls with lookup in my custom modules to make them future proof.\n\nIn my hierarchy, I have a hiera define for multiple os versions.\nosfamily/%{::osfamily}/%{::operatingsystemmajrelease}.yaml\n\nI have a custom file source location defined in auth.conf to serve an environment or what I refer to as product_area.\n\nI'm getting a server 500 error when it attempts to fetch the metadata for a couple files that have spaces in their names.\nObscuring my exact hostnames due to policy.\n\nError: /File[/etc/puppetlabs/code/hieradata/osfamily/windows/2008 R2.yaml]: Could not retrieve file metadata for puppet:///products/product_puppetserver/common/etc/puppetlabs/code/hieradata/osfamily/windows/2008 R2.yaml: Error 500 on SERVER: Server Error\nError: /File[/etc/puppetlabs/code/hieradata/osfamily/windows/2012 R2.yaml]: Could not retrieve file metadata for puppet:///products/product_puppetserver/common/etc/puppetlabs/code/hieradata/osfamily/windows/2012 R2.yaml: Error 500 on SERVER: Server Error\n\nThis configuration worked with puppetserver-2.2.1-1 and puppet-agent-1.3.2-1, the file path for puppet:///products points to /opt/puppetlabs/local_product_areas\nunder which I have a directory structure product_puppetserver/common/etc\nand product_puppetserver/puppetserver.example.com/etc ", "environment": "RHEL7", "epicLinkSummary": "Targeted Filebucket Improvements", "estimate": "PT0S", "externalId": "16312", "fixedVersions": ["SERVER 5.1.5", "SERVER 5.2.0"], "id": "16312", "issueType": "Bug", "key": "SERVER-1954", "labels": [], "originalEstimate": "PT0S", "parent": "21694", "parentSummary": "Targeted Filebucket Improvements", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c1443d32a94006a649a08", "resolution": "Fixed", "resolutionDate": "2018-01-24T13:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server incorrectly handling URI decoding", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "8", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I assume this is done, if not please feel free to reopen.", "created": "2018-02-20T11:45:00.000000"}], "components": [], "created": "2017-08-23T11:15:00.000000", "creator": "557058:c9b48d3b-3b16-4fba-80cb-daf19743b953", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43e313ff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg6db:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_646058_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_15643152375"}], "description": "See related task PR for pre-docs.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16311", "fixedVersions": [], "id": "16311", "issueType": "Task", "key": "SERVER-1936", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9b48d3b-3b16-4fba-80cb-daf19743b953", "resolution": "Fixed", "resolutionDate": "2018-02-20T11:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "DOCS - Puppet Server API - Return task data", "timeSpent": "PT0S", "updated": "2018-02-20T11:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Pre-docs are basically complete! They're in the documentation/puppet-api/v3/ directory of the puppetserver repository. The pre-docs for the list all tasks endpoint is merged, and the pre-docs for the task detail endpoint are sitting in this PR right now (https://github.com/puppetlabs/puppetserver/pull/1502/files). If it's okay, I'd prefer if we could leave that PR feedback for just code changes and make any necessary docs changes in the repo separately.\n\nThe list all tasks endpoint is documented under `tasks.markdown`, and task detail under `task_detail.markdown`, and they each have corresponding JSON schema files.\n\nSome notes:\n- I don't know a lot about what the standards for documenting endpoints in FOSS are, but I suspect we may want to merge the contents of the markdown files into one document, as there's a lot of repetition between the two, but I tried to stick with the repo's apparent standard of one endpoint per file. This is why I've only commented on this ticket, not SERVER-1936, as the work on these two is probably tightly coupled.\n- There were several sections where I explained tasks best I could, but it's very likely we'd want to link to other documentation that explains the concept instead. I know [~accountid:557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f] is working on docs for the main tasks effort, so y'all might want to sync up on that.\n- We don't expect anyone to directly use these endpoints yet -- they're not particularly useful without open source task running, and Orchestrator isn't open source right now. In PE, the endpoints will only be used by Orchestrator. If that makes a difference as to how much detail you want to go into on how to use these, I thought that might be good to know.\n\nIf you have any questions, I'm available today (9/1) but out next week, so please check with Justin Holguin or Dan Lidral-Porter for specific questions about the endpoints. Some questions might need to go to the Direct Change team if it's about the bigger picture of the Tasks workflow.\n\nping [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] [~accountid:557058:c9b48d3b-3b16-4fba-80cb-daf19743b953]", "created": "2017-09-01T11:27:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I assume this is done, if not please feel free to reopen.", "created": "2018-02-20T11:44:00.000000"}], "components": [], "created": "2017-08-23T11:13:00.000000", "creator": "557058:c9b48d3b-3b16-4fba-80cb-daf19743b953", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@712240f8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg6d3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_729652_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_15643139127"}], "description": "See related task PR for pre-docs.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16003", "fixedVersions": [], "id": "16003", "issueType": "Task", "key": "SERVER-1935", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9b48d3b-3b16-4fba-80cb-daf19743b953", "resolution": "Fixed", "resolutionDate": "2018-02-20T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "DOCS - Puppet Server API - List all tasks", "timeSpent": "PT0S", "updated": "2018-02-20T11:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "new PR raised for pe-puppetserver, https://github.com/puppetlabs/pe-puppetserver/pull/226", "created": "2017-09-06T10:09:00.000000"}], "components": [], "created": "2017-08-22T16:38:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e0c53c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual"}, {"fieldName": "QA Risk Assessment Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "We should do some manual testing of this"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyll93:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_23685665_*|*_1_*:*_1_*:*_10162_*|*_10007_*:*_1_*:*_4763256_*|*_3_*:*_1_*:*_755281846_*|*_4_*:*_1_*:*_3996_*|*_5_*:*_2_*:*_1182443751_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3087628"}], "description": "Do merge-ups from whatever the equivalent stream/branch to puppetserver/2.x to whatever the equivalent stream/branch of puppetserver/master is in the following repos, but _don't_ take the CRL related code or version bump dependencies, as much of this needs to be written differently in the master series(s).\n\n* -tk-jetty9 (1.x to master)-\n* -puppetserver (2.x to master)-\n* -pe-puppetserver-\n* -pe-file-sync-\n* -pe-puppet-server-extensions- this repo actually didn't have any content to change, just project.clj changes", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14687", "fixedVersions": ["SERVER 5.1.0"], "id": "14687", "issueType": "Task", "key": "SERVER-1934", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-09-06T18:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "merge-up all CRL-reload related code in various projects", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] if we're still planning to get this into the upcoming Server 5.1 release, it should probably be pulled into the current sprint. /cc [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c]", "created": "2017-08-29T07:54:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to master at https://github.com/puppetlabs/puppetserver/commit/4da483833d40b310abae4e3c27c6a3af61d9b351", "created": "2017-08-31T12:36:00.000000"}, {"author": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] [[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c]\nTo test this I added some agents to a monolithic server and then purged and re-added the nodes to the system. I noticed in the puppetserver.log file we have a few of these. We can appear to get 0 to 2 of these per puppet cert purge command.\n\n{code}\n2017-09-07 14:44:29,212 INFO  [clojure-agent-send-off-pool-1] [o.e.j.u.s.SslContextFactory] x509=X509@21d79fb4(private key,h=[ewvrnxjb2q7sqxv.delivery.puppetlabs.net, puppet],w=[]) for InternalSslContextFactory@4dbb7960(null,null)\n2017-09-07 14:44:31,331 INFO  [clojure-agent-send-off-pool-1] [o.e.j.u.s.SslContextFactory] x509=X509@3e3fb73b(private key,h=[ewvrnxjb2q7sqxv.delivery.puppetlabs.net, puppet],w=[]) for InternalSslContextFactory@55e61138(null,null)\n2017-09-07 14:44:31,430 INFO  [clojure-agent-send-off-pool-1] [o.e.j.u.s.SslContextFactory] x509=X509@523d276a(private key,h=[ewvrnxjb2q7sqxv.delivery.puppetlabs.net, puppet],w=[]) for InternalSslContextFactory@4dbb7960(null,null)\n2017-09-07 14:44:33,017 INFO  [clojure-agent-send-off-pool-1] [o.e.j.u.s.SslContextFactory] x509=X509@4096331e(private key,h=[ewvrnxjb2q7sqxv.delivery.puppetlabs.net, puppet],w=[]) for InternalSslContextFactory@55e61138(null,null)\n{code}\n\nThis doesn't appear to be part of this change, but I'm not sure its buying us anything to log this at INFO level.\n\nOther than that it looks good.", "created": "2017-09-07T15:50:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Hmm yeah I don't believe we added any new info-level logging with the change. I wonder if that's something new to Jetty ", "created": "2017-09-07T16:33:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] what do you think about those messages that [~accountid:557058:89341248-d23e-4b19-a2b6-66b9bb55eb83] points out seeing in the puppet server logs? Seems a bit odd to be logging info about a private key but it doesn't appear harmful at first glance.", "created": "2017-09-08T09:16:00.000000"}], "components": [], "created": "2017-08-22T11:59:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42d6bfbe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylje7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Release notes included in the repo"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_79449337_*|*_1_*:*_1_*:*_54352_*|*_10007_*:*_2_*:*_88999353_*|*_3_*:*_1_*:*_71457492_*|*_5_*:*_1_*:*_527668871_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_598050123_*|*_10006_*:*_1_*:*_620364541"}], "description": "*This Ticket is to track work targeted at Server 5.x*\n\nWhen certificate revocation actions are performed on the server, the file corresponding to the Puppet [cacrl|https://docs.puppet.com/puppet/latest/configuration.html#cacrl] file is updated.  During CA service initialization at the next service startup, there is some logic which copies the cacrl file to the file corresponding to the [hostcrl setting|https://github.com/puppetlabs/puppetserver/blob/2.7.2/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L744-L752]. \n\n*In Scope*\n* Update clj-parent dependency to get new version of tk-fs-watcher, tk-jetty9\n* Ensure server 2.x has been merged up to master, but no CRL-related change are taken\n* Following the logic in server 2.x, watch the crl for changes in order to determine when to copy the content of the cacrl file to the file at the hostcrl setting\n* Include the code that only performs this logic if the tk-fs-watcher service is present\n* Add the tk-fs-watcher service to the bootstrap config so that it is enabled by default (unlike 2.x where it is disabled by default)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16002", "fixedVersions": ["SERVER 5.1.0"], "id": "16002", "issueType": "New Feature", "key": "SERVER-1933", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-09-08T09:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Copy cacrl to hostcrl file immediately after cacrl file changes - Server 5.x", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "We had a similar issue in PUP-5402. That said, I'd be more inclined to add a {{Before=puppet.service}} to {{/usr/lib/systemd/system/puppetserver.service}}, because all puppetserver hosts must have the puppet-agent package installed, but the reverse is not true.", "created": "2022-08-24T10:54:00.000000"}], "components": [], "created": "2017-08-17T15:24:00.000000", "creator": "5d127691bd29be0c71b091e5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42063707"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg2k7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Aug/22"}], "description": "On a puppet master, puppet.service start before puppetserver.service so first run fails.\n\ncurrent /usr/lib/systemd/system/puppet.service:\n{noformat}\nAfter=basic.target network.target\n{noformat}\n\nshould be:\n{noformat}\nAfter=basic.target network.target puppetserver.service\n{noformat}\n", "environment": "puppet-agent-1.10.6-1.el7.x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16842", "fixedVersions": [], "id": "16842", "issueType": "Bug", "key": "SERVER-3218", "labels": ["daemon", "packaging", "puppet-agent", "puppethack"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5d127691bd29be0c71b091e5", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet agent starts before puppetserver", "timeSpent": "PT0S", "updated": "2022-08-30T14:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] this is the epic with all of the tickets that are needed to support endpoints for tasks. /cc [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c]", "created": "2017-08-14T13:18:00.000000"}], "components": [], "created": "2017-08-10T17:13:00.000000", "creator": "557058:1b6a0394-68a9-4406-a8a3-8564328379a2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Organizational Scale"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ccb99d5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-8"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server API for Tasks"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo71j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1182773766_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_1305641771"}], "description": "Build 3 end points\nSee all tasks\nSee data about all tasks\nGet the exec contents about a task ( a script to run)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15350", "fixedVersions": ["SERVER 5.1.0"], "id": "15350", "issueType": "Epic", "key": "SERVER-1924", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:1b6a0394-68a9-4406-a8a3-8564328379a2", "resolution": "Fixed", "resolutionDate": "2017-09-08T12:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server API for Tasks", "timeSpent": "PT0S", "updated": "2018-02-06T17:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "ping [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] - you had some thoughts on this? can you share your direction? ", "created": "2017-08-14T17:04:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "In looking through code I found two different methods of checking for debug level in puppet:\nMost common: {code}if Puppet[:debug]{code} which is from the puppet config and is what puppetserver sets\nLess common: {code}if Puppet::Util::Log.level == :debug{code} which is set automatically from the other setting.\n\nI think if in puppetserver's logger.rb we added something like\n{code:ruby}\nclass Puppet::Util::Log\n  def level\n    logger = LoggerFactory.getLogger(\"puppetserver\")\n    logger.level\n  end\nend\n{code}\n\nbut invoked from init_logging and switched to the second log.level check everywhere then it would be able to dynamically respond to changes in logback config and do the right thing everywhere. There might be complications due to having two sources.", "created": "2017-08-14T18:25:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to master at https://github.com/puppetlabs/puppetserver/commit/7398b6666b7b754dceab750fc31b11aaf1940c3c", "created": "2017-09-26T15:56:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] please provide release notes for this issue.", "created": "2017-09-28T10:38:00.000000"}], "components": [], "created": "2017-08-10T03:22:00.000000", "creator": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Debug should never be enabled by default unless the user explicitly requests debug output."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ba4bdb1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmuv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_151371870_*|*_1_*:*_1_*:*_394845400_*|*_10007_*:*_2_*:*_20134682_*|*_3_*:*_2_*:*_416936541_*|*_5_*:*_1_*:*_422300366_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_147371421_*|*_10006_*:*_2_*:*_3126767711"}], "description": "Puppet server will always use [log_level debug|https://github.com/puppetlabs/puppetserver/blob/master/src/ruby/puppetserver-lib/puppet/server/puppet_config.rb#L32-L33] and then rely on logback to filter unwanted messages. This is really bad design. Puppet generates a very large amount of output in debug mode. As an example, all lookups (hiera calls and APL included) will have a full lookup explanation emitted in debug mode and the cost of generating and formatting all of that is high.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16001", "fixedVersions": ["SERVER 5.1.3", "SERVER 5.2.0"], "id": "16001", "issueType": "Bug", "key": "SERVER-1922", "labels": ["hoyt-ss"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "resolution": "Fixed", "resolutionDate": "2017-09-28T09:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server generates a huge amount of debug output which is then discarded", "timeSpent": "PT0S", "updated": "2018-02-13T11:19:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2017-08-09T14:17:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c7e70d9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfukv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_445974232_*|*_1_*:*_1_*:*_70496_*|*_10007_*:*_1_*:*_75804680_*|*_6_*:*_1_*:*_0"}], "description": "A job is failing because the sha returned by get_latest_agent_version has a\nsingle space after it.\n\nJob:\nhttp://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest/\n\nThe extra space causes the install_dev_repos breaker step to fetch a URL that looks like\n\n{{http://builds.delivery.puppetlabs.net/puppet-agent/4d5d1c6a7dcbdc4ec420a7878cc1b3a1e9c631aa /repo_configs/rpm/pl-puppet-agent-4d5d1c6a7dcbdc4ec420a7878cc1b3a1e9c631aa -el-7-x86_64.repo}}\n\nwhich obviously fails.\n\nA PR is up to update the test helper fn to trim extra whitespace from the agent sha\nhttps://github.com/puppetlabs/gatling-puppet-load-test/pull/134", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15115", "fixedVersions": [], "id": "15115", "issueType": "CI Blocker", "key": "SERVER-1921", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2017-08-15T15:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "oss-puppet-server-latest gatling job failing because of whitespace in latest agent sha", "timeSpent": "PT0S", "updated": "2017-08-21T12:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've pulled the module into the Puppetlabs namespace earlier today and have submitted a PR to update it's dependencies here: https://github.com/puppetlabs/puppetlabs-grafanadash/pull/1", "created": "2017-08-08T22:58:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "PR to take up the new module when released is here: https://github.com/puppetlabs/puppetserver/pull/1477", "created": "2017-08-08T23:04:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "puppetlabs/grafanadash PR merged to master at https://github.com/puppetlabs/puppetlabs-grafanadash/commit/dfe85c5319aac687b953f4bb2bead567415504a2", "created": "2017-08-09T11:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "From the modules team this is the process to release an \"unsupported\" module, which AFAICT is what our testing module will be classified as.\n\nhttps://confluence.puppetlabs.com/display/systemsEngineering/Module+Release+Process", "created": "2017-08-09T11:17:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Following the release workflow I've created an additional release prep PR that should allow us to use the module teams release automation here: https://github.com/puppetlabs/puppetlabs-grafanadash/pull/2", "created": "2017-08-09T15:18:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The release workflow worked like a charm (and now that the module is set up to use it releasing is trivial, just make sure the repo is tagged and then run this job with the obvious parameters https://jenkins-modules.puppetlabs.com/view/release%20to%20forge/job/forge-module_puppetlabs-manualadminjob_init-tag_generic-push-forge/)\n\nthe module is accessible here: https://forge.puppet.com/puppetlabs/grafanadash", "created": "2017-08-10T16:31:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to puppetserver/master at https://github.com/puppetlabs/puppetserver/commit/d945f372df7dae18ea93b422c50cdaa38c2a9c1c", "created": "2017-08-10T17:30:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to pe-pse/2016.4.x at https://github.com/puppetlabs/pe-puppet-server-extensions/commit/ac330ed704d1dd34451b0f0b6e88482c243eb8ab", "created": "2017-08-10T17:31:00.000000"}], "components": [], "created": "2017-08-08T22:57:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "pe-puppet-server-extensions"}, {"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c7b4fb2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmwf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_1103135006_*|*_1_*:*_1_*:*_7191_*|*_10007_*:*_2_*:*_1121160_*|*_3_*:*_1_*:*_152125791_*|*_5_*:*_1_*:*_1897332713_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_2442700"}], "description": "Our pipelines for both puppetserver and pe-puppet-server-extensions install the cprice404-grafanadash module to configure graphite and grafana and use them to test our graphite integration/operability.\n\nEPEL packages that these depend on have disappeared ([~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] can't find them either, I don't think this is just me). No one seems to interested in them and frankly this module is in the namespace of someone who no longer works here and depends on modules that are deprecated and/or over three years old at this point.\n\nTo fix this situation we should:\n  - pull this testing module into the puppetlabs namespace\n  - update it's dependencies to a modern modules/versions\n  - retarget its desired platform from CentOS 6 to 7 so we can be on a more modern OS\n  - release this new module to the forge\n  - update our tests to use it\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16841", "fixedVersions": ["SERVER 5.1.0"], "id": "16841", "issueType": "CI Blocker", "key": "SERVER-1920", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-08-23T12:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "grafanadash module no longer works", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Hi [~accountid:61bbace0755091006a2b896a], there were a number of hiera-related issues fixed in puppet-agent 1.10.2 and later versions. For example: https://docs.puppet.com/puppet/4.10/release_notes.html#hiera. So I'm curious if moving to a later version would help. Also [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] do you have suggestions for debugging?", "created": "2017-08-07T16:50:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "hmm okay, but i don't understand what the puppet client has to do with the compile time of the puppet server? it requests the catalog and waits until this is compiled and delivered, so that it can deploy it? am i right?\n\nbut i will ugrade a node tomorrow to puppet-agent 1.10.2 or latest and test this.\n\nif there are any other thing i should test or provide, i'm more than willing to help...\n\nactivated profiling in the puppet server and did some \"--debug --profile\" runs... it shows, that it needs veeeeeeery long to include or contain classes from forge modules. like saz-sudo or puppetlabs-ntp. i only include these classes in my base profile for all nodes. i provide nessesary data for these via hiera. so basicly no big magic here....", "created": "2017-08-07T17:11:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "puppet-agent provides the ruby puppet code that puppet server uses to compile catalogs. I recommend moving to 1.10.5 as there were a number of issues in between .2 and .5.", "created": "2017-08-07T17:28:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "last run with 1.10.1\n{code}\n2017-08-08 02:01:14,947 INFO  [qtp1380442726-802] [puppetserver] Puppet Compiled catalog for puppet4.example.com in environment production in 124.30 seconds\n{code}\n\nrun where puppet upgraded itself to 1.10.5\n{code}\n2017-08-08 02:12:51,651 INFO  [qtp1380442726-860] [puppetserver] Puppet Compiled catalog for puppet4.example.com in environment production in 106.87 seconds\n{code}\n\nfirst run with 1.10.5\n{code}\n2017-08-08 02:15:50,882 INFO  [qtp1380442726-836] [puppetserver] Puppet Compiled catalog for puppet4.example.com in environment production in 118.02 seconds\n{code}\n\nsecond rund with 1.10.5\n{code}\n2017-08-08 02:21:23,869 INFO  [qtp1380442726-843] [puppetserver] Puppet Compiled catalog for puppet4.example.com in environment production in 134.13 seconds\n{code}\n\nno improvements, but will upgrade all other clients, to get a coherent environment", "created": "2017-08-07T18:33:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "I would expect a significant increase in the debug output after the switch since it now contains lookup explanations for all automatic parameter assignments, hiera calls, and of course, lookup calls. This output will take some time to produce so I'd recommend not using --debug when profiling.\n", "created": "2017-08-08T08:33:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Hi [~accountid:61bbace0755091006a2b896a] - one other thing to confirm is that you restarted puppet server after upgrading the puppet agent, to ensure it has loaded the new compiler code. (the need for this restart is a bug, https://puppet.atlassian.net/browse/SERVER-1756).", "created": "2017-08-08T08:56:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "okay... will will try a restart of the puppetserver ... do i need to clear some caches or something?", "created": "2017-08-09T03:42:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "Updated all nodes... did a stop and start on the server ... still no change... but now i also got the logs filled up like in  SERVER-1912\n{code}\n2017-08-09 15:31:18,021 INFO  [qtp560087052-218] [puppetserver] Puppet Compiled catalog for puppet4 in environment production in 111.57 seconds\n{code}\n{code}\n[root@puppet4 puppetserver]# time puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nWarning: Facter: timeout option is not supported for custom facts and will be ignored.\nInfo: Caching catalog for puppet4\nNotice: /Stage[main]/Aws_icinga2::Config/Tidy[delete-conf-files-in-etc-icinga2-conf-d]: Tidying 0 files\nInfo: Applying configuration version '1502285366'\nNotice: /Stage[main]/Aws_icinga2::Config::Checks/File[/opt/puppetlabs/puppet/cache]/owner: owner changed 'puppet' to 'root'\nNotice: /Stage[main]/Aws_icinga2::Config::Checks/File[/opt/puppetlabs/puppet/cache]/group: group changed 'puppet' to 'icinga'\nNotice: Applied catalog in 98.57 seconds\n\nreal\t3m45.177s\nuser\t0m23.950s\nsys\t0m3.172s\n{code}", "created": "2017-08-09T07:36:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] Puppetserver always runs puppet in debug mode and just lets logback decide what messages to log. See here: https://github.com/puppetlabs/puppetserver/blob/master/src/ruby/puppetserver-lib/puppet/server/puppet_config.rb#L32-L33", "created": "2017-08-09T16:08:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "I added SERVER-1922 to track the fact that puppet server always use debug mode.", "created": "2017-08-10T03:25:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "/cc [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] and [~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c]", "created": "2017-08-10T11:07:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] Thanks for the ticket. FWIW puppetserver has *always* done this, since the very first commit.", "created": "2017-08-10T11:09:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "What's new is that Puppet now generate an extensive amount of formatted output conditionally. In debug mode, all hiera lookups and automatic parameter assignments generate a full explaination. In a complex system, this will stress the CPU and GC a great deal.", "created": "2017-08-10T14:05:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "can i do something to deactivate this behavior or do i have to wait for a new release of puppetserver to get this fixed?", "created": "2017-08-11T10:58:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Hi [~accountid:61bbace0755091006a2b896a] sorry for the radio silence there. We're still working to identify the possible causes of the slow down and it seems like a number of things may be contributing, including the internal logging behavior noted earlier. We haven't heard of similar performance degradations from other users, but its possible something(s) in your code/environment is triggering a behavior in puppet or puppetserver that has gotten slower, and others haven't hit it (yet). A couple questions - first, would you be willing to share enough code and info from your setup so that we can create a reproduction scenario for profiling/debug purposes? And second, do you have a testing environment where you would be willing/able to deploy a patch or custom build from us to validate possible fixes we might find?", "created": "2017-08-14T10:26:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "Hi [~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c], to share some code is no probelm and i wanted to setup a second master anyways, so yeah, i will have a test environment soon.\n\nso basically: yeah, i'm ready to debug! :)", "created": "2017-08-15T09:10:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "Hi, completed my test setup and there is now a server to play around with...", "created": "2017-08-16T05:53:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "thanks [~accountid:61bbace0755091006a2b896a]! I think our first step will be to take on SERVER-1922, which [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] has suggested a reasonable path forward on. When we have a build with that in it, I'll send it your way to deploy in the test environment. I'm afraid I can't guarantee exactly when that will be (it's immediately next on my list but you know how complex some of this can be) but hopefully soon -\n ideally on the order of weeks, if not days. In the interim if you're finding that your environment cannot sustain the version you upgraded to because of the perf issue, it might be worth considering rolling back to your previous version, sadly. ", "created": "2017-08-16T09:41:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "just wanted to say, that i will be on vacation the next week. so i may not respond until 28.08.2017.\n\nbtw.: \ntried to roll back. but 1.10.5 agents wont work with 2.6.0 server and i do not know which was the last working version with puppetserver 2.6.0.\nAlso tried puppetserver 5.0.0 und puppet-agent 5.0.1: same problem with the compiles ", "created": "2017-08-18T10:30:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "tested update to 2.8.0\n\nagent\n{code}\n[root@puppet4-devmybet ~]# time puppet agent -t --server puppet4.devmybet.com\nInfo: Using configured environment 'develop'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nWarning: Facter: timeout option is not supported for custom facts and will be ignored.\nInfo: Caching catalog for puppet4.devmybet.com\nInfo: Applying configuration version '1504602650'\nNotice: /Stage[main]/Motd/File[/etc/motd]/content:\n--- /etc/motd\t2017-08-16 17:51:34.901937834 +0200\n+++ /tmp/puppet-file20170905-2724-1aqtryn\t2017-09-05 11:11:26.442866723 +0200\n@@ -1,2 +1,2 @@\n Welcome to puppet4.devmybet.com  -  CentOS 7.3.1611 (x86_64).\n-This node is under the control of puppet 4.10.5.\n+This node is under the control of puppet 4.10.6.\n\nNotice: /Stage[main]/Motd/File[/etc/motd]/content: content changed '{md5}7693847012cad2fda48d7f1606be1ca7' to '{md5}709add12dd15ca70d397f57996568373'\nNotice: /Stage[main]/Ntp::Service/Service[ntp]/ensure: ensure changed 'stopped' to 'running'\nInfo: /Stage[main]/Ntp::Service/Service[ntp]: Unscheduling refresh on Service[ntp]\nNotice: /Stage[main]/Aws_puppet4::Install/Package[puppet-agent]/ensure: ensure changed '1.10.6-1.el7' to '1.10.5'\nNotice: Applied catalog in 20.57 seconds\n\nreal\t1m5.878s\nuser\t0m21.365s\nsys\t0m2.975s\n{code}\n\nserver:\n{code}\n2017-09-05 11:11:24,581 INFO  [qtp2031111896-68] [puppetserver] Puppet Compiled catalog for puppet4.devexample.com in environment develop in 33.99 seconds\n{code}", "created": "2017-09-05T03:14:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "i found the issue... this is a rather strange one to me...\n\nit's the hiera.yaml format. i had a version 3 configuration in 2.6 and i think in 2.7.x hiera handling was changed somehow. Hiera5 runs with the version 3 config, but slows down. After migrating to version 5 format, catalogue compile times are fast again! ", "created": "2017-09-08T08:14:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:61bbace0755091006a2b896a] wow that's really surprising. yes, hiera 5 was available in the puppet 4.10 series but my understanding is it was effectively dark and so your performance shouldn't have been affected by keeping your existing hiera 3 config.\n\nWe may need to dig into why that slowdown happened and make sure that we warn/document it. [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] does this scenario ring a bell for you? Also ping [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] for perf considerations on your project", "created": "2017-09-08T09:20:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "No bells are ringing but it would be interesting to take a look at the configuration files for Hiera 3 if that's possible. Perhaps I'm able to understand the drastic slowdown once I see how they are constituted.", "created": "2017-09-08T09:34:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "version 3 yaml:\n\nbackends:\n* https://github.com/voxpupuli/hiera-file\n* https://github.com/sihil/hiera-eyaml-gpg\n\n{code}\n---\n:backends:\n  - eyaml\n  - yaml\n  - file\n\n:hierarchy:\n  - \"normal/%{::machinetype}/%{::fqdn}\"\n  - \"protected/ssl/apache/certs\"\n  - \"protected/ssl/apache/%{::fqdn}\"\n  - \"protected/ssl/apache/%{::domain}\"\n  - \"protected/ssl/user\"\n  - \"protected/domains/%{::domain}/%{::fqdn}\"\n  - \"protected/domains/%{::domain}\"\n  - \"protected/hosts/%{::fqdn}\"\n  - \"protected/roles/%{::httpserver_role}\"\n  - \"protected/roles/%{::role}\"\n  - \"protected/common-%{::machinetype}\"\n  - \"protected/common\"\n  - \"normal/ssl/apache/%{::fqdn}\"\n  - \"normal/ssl/apache/%{::domain}\"\n  - \"normal/ssl/apache/common\"\n  - \"normal/domains/%{::domain}/%{::fqdn}\"\n  - \"normal/domains/%{::domain}\"\n  - \"normal/hosts/%{::fqdn}\"\n  - \"normal/environments/%{::environment}\"\n  - \"normal/roles/%{::httpserver_role}\"\n  - \"normal/roles/%{::role}\"\n  - \"normal/rewrites\"\n  - \"normal/common-%{::machinetype}\"\n  - \"normal/common\"\n\n:eyaml:\n  :extension: 'yaml'\n  :datadir:\n  :encrypt_method: gpg\n  :gpg_gnupghome: '/opt/puppetlabs/server/data/puppetserver/.gnupg'\n\n# datadir is empty here, so hiera uses its defaults:\n# - /etc/puppetlabs/code/environments/%{environment}/hieradata on *nix\n:yaml:\n  :datadir:\n\n:file:\n  :interpolate: false # defaults to true\n  :datadir:\n\n:logger: puppet\n{code}\n\nin version 5 i removed hiera-file and eyaml ftm ... but i'm planing to use eyaml again.\n\n{code}\n---\nversion: 5\ndefaults:\n  datadir: data\n  data_hash: yaml_data\n\nhierarchy:\n  - name: \"certificates\"\n    paths:\n      - \"normal/ssl/certs.yaml\"\n      - \"normal/ssl/apache/%{::fqdn}.yaml\"\n      - \"normal/ssl/apache/%{::domain}.yaml\"\n      - \"normal/ssl/apache/common.yaml\"\n\n  - name: \"ssh priv keys\"\n    path: \"normal/ssl/ssh_priv_keys.yaml\"\n\n  - name: \"ssh pub keys\"\n    path: \"normal/ssl/ssh_pub_keys.yaml\"\n\n  - name: \"Per-node data\"\n    paths:\n      - \"protected/hosts/%{::fqdn}.yaml\"\n      - \"normal/hosts/%{::fqdn}.yaml\"\n      - \"protected/domains/%{::domain}/%{::fqdn}.yaml\"\n      - \"normal/domains/%{::domain}/%{::fqdn}.yaml\"\n      - \"normal/%{::machinetype}/%{::fqdn}.yaml\"\n\n  - name: \"Per-domain data\"\n    paths:\n      - \"protected/domains/%{::domain}.yaml\"\n      - \"normal/domains/%{::domain}.yaml\"\n\n  - name: \"Per-role data\"\n    paths:\n      - \"protected/roles/%{::role}.yaml\"\n      - \"normal/roles/%{::role}.yaml\"\n\n  - name: \"Per-environment data\"\n    paths:\n      - \"normal/environments/%{::environment}.yaml\"\n\n  - name: \"common data\"\n    paths:\n      - \"protected/common-%{::machinetype}.yaml\"\n      - \"protected/common.yaml\"\n      - \"normal/common-%{::machinetype}.yaml\"\n      - \"normal/common.yaml\"\n{code}", "created": "2017-09-08T09:53:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "i reimplemented eyaml... and now the compile times are on the rise again...\n\ni added a block like this ... is globbing a rather bad idea? \nWe store our encrypted keys in the same yaml as our other values. so a differentiation like \"*.yaml\" and and \"*.eyaml\" does not make sense for us.\n\n{code}\n  - name: \"Encrypted data\"\n    lookup_key: eyaml_lookup_key\n    options:\n      encrypt_method: gpg\n      gpg_gnupghome: '/opt/puppetlabs/server/data/puppetserver/.gnupg'\n    globs:\n      - \"**/*.yaml\"\n{code}\n\nwithout eyaml\n{code}\n2017-09-11 13:33:32,765 INFO  [qtp847596593-60] [puppetserver] Puppet Compiled catalog for puppet4.devmybet.com in environment bugfix_debug_puppetserver in 5.25 seconds\n2017-09-11 13:34:32,053 INFO  [qtp847596593-59] [puppetserver] Puppet Compiled catalog for puppet4.devmybet.com in environment bugfix_debug_puppetserver in 4.85 seconds\n{code}\n\nwith eyaml\n{code}\n2017-09-11 13:38:00,104 INFO  [qtp847596593-62] [puppetserver] Puppet Compiled catalog for puppet4.devmybet.com in environment bugfix_debug_puppetserver in 16.72 seconds\n2017-09-11 13:38:37,044 INFO  [qtp847596593-61] [puppetserver] Puppet Compiled catalog for puppet4.devmybet.com in environment bugfix_debug_puppetserver in 16.61 seconds\n{code}", "created": "2017-09-11T05:39:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "[~accountid:61bbace0755091006a2b896a], can you provide some rough estimates on how many .yaml files that this glob would expand to? How many of them contains encrypted values? Size, number of keys might be helpful too.", "created": "2017-09-11T08:26:00.000000"}, {"author": "61bbace0755091006a2b896a", "body": "[~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] there are 244 yamls to parse...\n\nbut i ended up with a explicit hierarchy like this:\n{code}\n---\nversion: 5\ndefaults:\n  datadir: data\n  data_hash: yaml_data\n\nhierarchy:\n  - name: \"Encrypted data\"\n    lookup_key: eyaml_lookup_key\n    options:\n      encrypt_method: gpg\n      gpg_gnupghome: '/opt/puppetlabs/server/data/puppetserver/.gnupg'\n    paths:\n      - \"ssl/certs.yaml\"\n      - \"ssl/apache/%{::fqdn}.yaml\"\n      - \"ssl/apache/%{::domain}.yaml\"\n      - \"ssl/apache/common.yaml\"\n      - \"ssl/ssh_priv_keys.yaml\"\n      - \"ssl/ssh_pub_keys.yaml\"\n      - \"hosts/%{::fqdn}.yaml\"\n      - \"roles/%{::role}.yaml\"\n      - \"domains/%{::domain}/%{::fqdn}.yaml\"\n      - \"%{::machinetype}/%{::fqdn}.yaml\"\n      - \"domains/%{::domain}.yaml\"\n      - \"environments/%{::environment}.yaml\"\n      - \"common-%{::machinetype}.yaml\"\n      - \"common.yaml\"\n\n  - name: \"Unencrypted data\"\n    paths:\n      - \"ssl/certs.yaml\"\n      - \"ssl/apache/%{::fqdn}.yaml\"\n      - \"ssl/apache/%{::domain}.yaml\"\n      - \"ssl/apache/common.yaml\"\n      - \"ssl/ssh_priv_keys.yaml\"\n      - \"ssl/ssh_pub_keys.yaml\"\n      - \"hosts/%{::fqdn}.yaml\"\n      - \"roles/%{::role}.yaml\"\n      - \"domains/%{::domain}/%{::fqdn}.yaml\"\n      - \"%{::machinetype}/%{::fqdn}.yaml\"\n      - \"domains/%{::domain}.yaml\"\n      - \"environments/%{::environment}.yaml\"\n      - \"rewrites.yaml\"\n      - \"common-%{::machinetype}.yaml\"\n      - \"common.yaml\"\n{code}\n\nand with that, all my troubles are gone for the moment...\n\nalso my cpu load dropped from like 6.0-7.0 to 0.5", "created": "2017-09-11T09:52:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I'd like to note that during the change from hiera 3 to hiera 5 the number of levels in the hierarchy went from 72 down to 29.  That could account for a total perf increase that leveled out some other performance regression.  \n\nI wouldn't bet that upgrading to hiera 5 was the main perf difference here but rather the reduction of levels in the hierarchy.  ", "created": "2017-10-02T10:33:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I believe the logging issues have been resolved in both 5.x and the 2.x/1.10.x server/agent stream. It looks like this was effectively resolved but that the ticket was never appropriately updated? Is that true? I'm going to close this as resolved and if that's incorrect please reopen.", "created": "2018-02-07T13:55:00.000000"}], "components": ["Puppet Server"], "created": "2017-08-07T11:35:00.000000", "creator": "61bbace0755091006a2b896a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7854f053"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyloon:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_625350079_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_15284291573"}], "description": "After updateing my server from puppetserver 2.6.0 to 2.7.2 my catalog compile times are up to 10x slower and worse...\n\nbefore update\n{code}\n2017-06-28 14:43:38,176 INFO  [qtp2097319013-16890] [puppetserver] Puppet Compiled catalog for ip-xxx-xxx-xxx-xxx.eu-central-1.compute.internal in environment develop in 2.98 seconds\n2017-06-28 14:43:48,517 INFO  [qtp2097319013-16922] [puppetserver] Puppet Compiled catalog for puppet4.example.com in environment production in 13.46 seconds\n2017-06-28 14:45:08,696 INFO  [qtp2097319013-16922] [puppetserver] Puppet Compiled catalog for xxx.eu-central.xxx.example.com in environment develop in 12.10 seconds\n2017-06-28 14:45:20,066 INFO  [qtp2097319013-16922] [puppetserver] Puppet Compiled catalog for ip-xxx-xxx-xxx-xxx.eu-central-1.compute.internal in environment develop in 3.54 seconds\n{code}\n\nafter update:\n{code}\n2017-06-28 14:49:50,941 INFO  [qtp1863995460-70] [puppetserver] Puppet Compiled catalog for ip-xxx-xxx-xxx-xxx.eu-central-1.compute.internal in environment develop in 41.90 seconds\n2017-06-28 14:49:53,102 INFO  [qtp1863995460-69] [puppetserver] Puppet Compiled catalog for ip-xxx-xxx-xxx-xxx.eu-central-1.compute.internal in environment production in 36.93 seconds\n2017-06-28 14:49:53,534 INFO  [qtp1863995460-118] [puppetserver] Puppet Compiled catalog for mon-icinga.example.com in environment production in 47.04 seconds\n2017-06-28 14:50:20,289 INFO  [qtp1863995460-68] [puppetserver] Puppet Compiled catalog for xxx.eu-central.example.com in environment develop in 62.65 seconds\n{code}\n\ni tried several things, mostloy i tried all the hints and things from SERVER-993. but nothing helps.\n\ntried: \ncompile.mode: jit\ncompat-version: \"2.0\"\n2,4,8GB xmx\ndisabling eyaml\nadd more entropy with haveged", "environment": "Centos 7.3.1611 with Kernel  3.10.0-514.26.2.el7.x86_64\nAWS: c4.2xlarge\n8 vCPU / 16Gb Ram\n\njvm settings: standard, untouched\n\njava:\njava-1.8.0-openjdk-headless-1.8.0.141-1.b16.el7_3.x86_64\n\npuppet setup:\npuppetdb-termini-4.4.0-1.el7.noarch\npuppetlabs-release-pc1-1.0.0-2.el7.noarch\npuppet-agent-1.10.1-1.el7.x86_64\npuppetdb-4.4.0-1.el7.noarch\npuppetserver-2.7.2-1.el7.noarch\n\nactive Nodes 140\nmax-active-instances: 6\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16562", "fixedVersions": [], "id": "16562", "issueType": "Bug", "key": "SERVER-1919", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "61bbace0755091006a2b896a", "resolution": "Fixed", "resolutionDate": "2018-02-07T13:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "10x higher compile times after update from 2.6.0 to 2.7.2 ", "timeSpent": "PT0S", "updated": "2018-02-07T13:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to 5.1.x at https://github.com/puppetlabs/puppetserver/commit/c5ccc6c7068811e21e8ed727a48f1c2a266650fb", "created": "2017-10-10T17:42:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "pe-puppetserver clj-parent bump merged to hoyt at https://github.com/puppetlabs/pe-puppetserver/commit/9dd2e7a11e3e1dc6e783cdc440df6d541d17a158", "created": "2017-10-11T11:26:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] please add release notes for this issue, if applicable. Thanks!", "created": "2017-10-23T11:40:00.000000"}], "components": [], "created": "2017-08-02T15:38:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f6aa189"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyle3r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Tasks available from versioned code will be served via the static file content endpoint, rather than out of Puppet's file serving. This should reduce resources used to serve tasks."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_756653723_*|*_1_*:*_1_*:*_4304419762_*|*_10007_*:*_1_*:*_1639349463_*|*_3_*:*_1_*:*_25218452_*|*_5_*:*_1_*:*_1096004118_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_536353545"}], "description": "Tasks should be served from static-file-content via code-id when available. This improves the performance of file serving and prevents serving out-of-date task files to a long-running task job.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16000", "fixedVersions": ["SERVER 5.1.4"], "id": "16000", "issueType": "Improvement", "key": "SERVER-1993", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Fixed", "resolutionDate": "2017-10-25T16:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Static content endpoint for task contents", "timeSpent": "PT0S", "updated": "2017-11-07T08:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-08-02T15:38:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26902d65"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1924"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzften:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1718183932_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Puppet Server API for Tasks", "estimate": "PT0S", "externalId": "15344", "fixedVersions": ["SERVER 5.1.0"], "id": "15344", "issueType": "New Feature", "key": "SERVER-1931", "labels": [], "originalEstimate": "PT0S", "parent": "15350", "parentSummary": "Puppet Server API for Tasks", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2017-08-22T12:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement API detailed error handling", "timeSpent": "PT0S", "updated": "2017-08-22T12:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Deferring this to Server 5.2 seeing as it's been de-prioritized (and likely won't directly result in code changes).", "created": "2017-08-29T07:39:00.000000"}, {"author": "557058:adac4e58-01ac-4fce-8be9-94131c26c73d", "body": "Due to the preferred puppetserver implementation, there are limited ways to make performance improvements, closing this as \"won't do\" until this becomes an issue. cc [~accountid:557058:1381f112-1c4e-4869-ba34-30602d945124]", "created": "2017-09-08T12:26:00.000000"}], "components": [], "created": "2017-08-02T15:37:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68174ce3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1924"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym0un:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3185340534_*|*_6_*:*_1_*:*_0"}], "description": "make sure we're evaluating task data lazily wherever possible and test performance (todo: record notes on rough performance goals from last sync meeting)\n\n- also test serving large files\n\nThis could potentially expand to us wanting to implement some simple caching, but developing the rules for that may inspire debate.", "epicLinkSummary": "Puppet Server API for Tasks", "estimate": "PT0S", "externalId": "15114", "fixedVersions": [], "id": "15114", "issueType": "New Feature", "key": "SERVER-1930", "labels": [], "originalEstimate": "PT0S", "parent": "15350", "parentSummary": "Puppet Server API for Tasks", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2017-09-08T12:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "[SPIKE] performance data/improvements", "timeSpent": "PT0S", "updated": "2018-02-13T09:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:1b6a0394-68a9-4406-a8a3-8564328379a2", "body": "this is no longer needed for the gui in the first iteration. ", "created": "2017-08-16T14:31:00.000000"}], "components": [], "created": "2017-08-02T15:34:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1570ac87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1924"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfplb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1205800976_*|*_6_*:*_1_*:*_0"}], "description": "Aggregate all tasks in all environments. Similar to environment_classes implementation in Puppet Server. Return data should look like:\n\n[{\"name\": \"module::taskA\", \"environment\": [{\"name\": \"foo\", \"code_id\": \"<SHA>_foo\"}, ...]}, ...]", "epicLinkSummary": "Puppet Server API for Tasks", "estimate": "PT0S", "externalId": "16560", "fixedVersions": [], "id": "16560", "issueType": "New Feature", "key": "SERVER-1929", "labels": [], "originalEstimate": "PT0S", "parent": "15350", "parentSummary": "Puppet Server API for Tasks", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Won't Do", "resolutionDate": "2017-08-16T14:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server endpoint: all tasks in all environments", "timeSpent": "PT0S", "updated": "2017-08-16T14:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Updated ticket body to reflect the actual path to request tasks from, and remove code_id for now, as that should only show up in params map when we provide a static file content route for tasks, which we aren't currently doing.", "created": "2017-08-30T16:47:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:0e68498a-af24-40c4-a3ec-8d424adeeabb] please provide release notes for this issue, if needed. Thanks!", "created": "2017-09-06T14:59:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] please provide release notes for this issue, if needed. Thanks!", "created": "2017-09-06T15:00:00.000000"}], "components": ["Puppet Server"], "created": "2017-08-02T15:32:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f5707f0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1924"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzga3j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_569617449_*|*_1_*:*_1_*:*_1970230301_*|*_10007_*:*_1_*:*_114667658_*|*_3_*:*_1_*:*_518142811_*|*_5_*:*_1_*:*_520595955_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_7973986"}], "description": "Response body:\n\n{code}\n{\"metadata\": {...},\n\"files:\" [{\n  \"filename\": \"task.exe\",\n  \"sha256\": \"...\",\n  \"size_bytes\": 256,\n  \"uri\": {\"path\": \"/puppet/v3/file_content/tasks/<mod>/task.exe\",\n          \"params\": {\"environment\": \"<env>\"}}\n}]}\n{code}\n\nfind all matching-named exec files and return their name, URI, path, size, SHA\noutput content of metadata if exists. Expect only JSON for now.\nalso return code_id key but keep null for now", "epicLinkSummary": "Puppet Server API for Tasks", "estimate": "PT0S", "externalId": "15999", "fixedVersions": ["SERVER 5.1.0"], "id": "15999", "issueType": "New Feature", "key": "SERVER-1927", "labels": [], "originalEstimate": "PT0S", "parent": "15350", "parentSummary": "Puppet Server API for Tasks", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Fixed", "resolutionDate": "2017-09-08T11:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Return task data: Puppet server API", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Unclear on scope of this, would be clarified by mini-spike in PE-21829", "created": "2017-08-02T15:50:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] is the scope more clear now that PE-21829 is resolved?", "created": "2017-08-21T14:22:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Yup, it is. I'm hoping to have a PR up today.", "created": "2017-08-21T15:01:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] I think I'm a little confused about the versioning here. Is the Server 5.1.0 version what's going into the \"platform\" 5.2.0 release?", "created": "2017-08-22T12:37:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] yes, that's correct. I know it's a little confusing. :(", "created": "2017-08-22T12:44:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] I don't see anything about sorting. Is it fair to say the results will be unordered?", "created": "2017-08-22T17:04:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Yeah, we never specified. Does it need to be ordered?", "created": "2017-08-22T17:13:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Doesn't need to. We're going to display it sorted, deciding where that should happen.", "created": "2017-08-22T17:33:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Right, we can always do that in the orch API if we want.", "created": "2017-08-22T17:41:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to puppetserver/master at https://github.com/puppetlabs/puppetserver/commit/14be168bb5c94461a3e5b9069a876b2ebd2ab607", "created": "2017-08-25T17:22:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "If all goes well, we expect this will be promoted into PE 2017.3.x later today.", "created": "2017-08-31T12:16:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] please provide release notes for this issue, if needed. Thanks!", "created": "2017-09-11T10:00:00.000000"}], "components": [], "created": "2017-08-02T15:29:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c4f125f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1924"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzga3b:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1178866191_*|*_1_*:*_1_*:*_699076829_*|*_10007_*:*_1_*:*_258104936_*|*_3_*:*_1_*:*_1036785138_*|*_5_*:*_1_*:*_520608756_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_7960034"}], "description": "out of scope: implement \"errors\" key\nout of scope: code_id. Make it always null. Normally \"<SHA>_<environment>\".\n\nenvironment object lists all modules, module lists its tasks (only name (\"<module>::<task_file>\" needed)\n\nresponse body:\n{code}\n[{\"name\": \"module::taskA\", \"environment\": [{\"name\": \"foo\", \"code_id\": null}]}]\n{code}\n\nUtilize existing error handling (like \"environment not found\" error in environment_classes workflow) to return full error responses where possible.\n\nOut of scope:\n- Elaborate error handling. Even when things don't make \"sense\" (like metadata without tasks), try to naively return data. Only error if data is unparseable.\n- code_id. Make it always null. Normally \"<SHA>_<environment>\".\n", "epicLinkSummary": "Puppet Server API for Tasks", "estimate": "PT0S", "externalId": "15689", "fixedVersions": ["SERVER 5.1.0"], "id": "15689", "issueType": "New Feature", "key": "SERVER-1925", "labels": [], "originalEstimate": "PT0S", "parent": "15350", "parentSummary": "Puppet Server API for Tasks", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Fixed", "resolutionDate": "2017-09-08T11:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "List all tasks: Puppet Server API", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0e68498a-af24-40c4-a3ec-8d424adeeabb", "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "For SHA: https://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/checksums.rb#L7", "created": "2017-08-09T12:53:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] since it looks like the PR was merged, should this be moved to 'Ready for CI'?", "created": "2017-08-24T09:49:00.000000"}], "components": [], "created": "2017-08-02T15:26:00.000000", "creator": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@435c921d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1924"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyllon:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_593229815_*|*_10007_*:*_1_*:*_192959300_*|*_3_*:*_2_*:*_596068220_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_520324061"}], "description": "In Puppet server, return task information about the executable files (size in bytes, URI: {\"path\": \"/module/task.exe\", \"params\": {\"environment\": \"production\"}}, SHA256)\n\nURI still needs to be defined, but we can probably define whatever we want in that ticket.", "epicLinkSummary": "Puppet Server API for Tasks", "estimate": "PT0S", "externalId": "15113", "fixedVersions": ["SERVER 5.1.0"], "id": "15113", "issueType": "New Feature", "key": "SERVER-1926", "labels": [], "originalEstimate": "PT0S", "parent": "15350", "parentSummary": "Puppet Server API for Tasks", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "resolution": "Done", "resolutionDate": "2017-08-24T15:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Calculate file info: for Server task-data endpoint", "timeSpent": "PT0S", "updated": "2017-08-24T15:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I've got a functional spike put together here:\n\nhttps://github.com/Sharpie/puppetserver-clj-file-server\n\nTagged releases include Puppet module that will patch the prototype into the {{pe-puppetserver}} service:\n\nhttps://github.com/Sharpie/puppetserver-clj-file-server/releases/download/0.2.1/sharpie-clj_file_server-0.2.1.tar.gz\n\nTested with 2017.2 and 2017.3. Version 0.2.1 of the prototype should handle just about all \"happy path\" requests. Handling for authorization, missing files, bad permissions, bad request parameters, etc. isn't there so this absolutely should not be run anywhere near a production environment. However, it should be usable for performance testing in order to quantify the potential gain from moving file serving from Ruby to Clojure.\n\nA good real-world scenario would be to install the [puppetlabs-windows|https://forge.puppet.com/puppetlabs/windows] module along with its dependencies and take a Gatling recording of the initial check-in of a node. The Windows modules result in a lot of pluginsync activity, so replaying multiple concurrent nodes using that recording should show us what happens when the JRuby bottleneck is removed.", "created": "2017-10-02T15:22:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The team has changed dramatically since I initially took on this ticket, this ticket informally became \"figure out what to do and get us to a place where we can start doing it\". Here is a summary of that work:\n\nI tweaked Charlie's spike to include environment configuration reloading and caching, performance tested the result, and investigated other avenues.\n\nThe direct port saw a reduction in time pluginsyncing the windows module of >75%. Memory allocations during serving a file in a module went from ~3.4 Mbs + the size of the file to 5 Kb. And the processing time on the server for serving a single file in a module (excluding the networking stack) went from 80-100 milliseconds to close to a millisecond.\n\nThe complexity of maintaining a second pool of JRubies for shorter, non-compilation related requests was abandoned after further discussions.\n\nFurther research was done to decide what work would be needed to effectively remove Charlie's \"Ruby shims\" in a supportable way. This involved Puppet settings and configuration file loading, environment lifecycles as they relate to deployment workflows and how they interact with Puppet Server's JRuby architecture. A walk through of the problems in that space and a recommendation lives in https://docs.google.com/document/d/1v4S0uiL0dPQhGbUJimEdSsp2TMrF6-MjvaNFFrWKTkU/edit (apologies as it was largely written to provide the context for an in person conversation).\n\nThe general recommendations in that doc were approved by the technical team in attendance. We've gotten verbal approval for user facing changes from our product owner. I will be continuing out of of the scope of this already vastly expanded ticket to itemize the exact user facing changes, formalize product's approval, bring these changes to CS for review, and work with the PE team to plan enterprise uptake.\n\nContinued work will take place within the epic SERVER-2026 which is scheduled to have an initial grooming on 11/27.", "created": "2017-11-22T12:28:00.000000"}], "components": [], "created": "2017-08-01T16:29:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "see in scope"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d4e3a65"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1860"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzi3uf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10559_*|*_3_*:*_1_*:*_4396778128_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3546115656_*|*_10005_*:*_1_*:*_1809454455"}], "description": "*Notes*\n* serving the files requested by an agent during pluginsync is currently done by a jruby leveraging the puppet code\n* this is inefficient as all of the files must be loaded entirely memory and then served as opposed to streamed directly, plus the overhead of puppet\n\n*In Scope*\n* investigate possible performance improvement and complexity of a generic jruby pool for file serving specifically\n* vs the possible performance gains and complexity of straight file serving in puppet server\n\n*Acceptance Criteria*\n* Notify team of findings from in scope and suggest selected path forward", "epicLinkSummary": "Improve Performance of File Serving in PuppetServer", "estimate": "PT0S", "externalId": "14731", "fixedVersions": [], "id": "14731", "issueType": "Task", "key": "SERVER-1918", "labels": ["the-goods"], "originalEstimate": "PT0S", "parent": "17357", "parentSummary": "Improve Performance of File Serving in PuppetServer", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-11-22T12:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "(spike) investigate options to improve file serving performance", "timeSpent": "PT0S", "updated": "2017-11-22T12:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "body": "I've linked PUP-8003 to this ticket, we should consider trying when we start doing profiling", "created": "2017-10-17T16:02:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We need to figure out where the results live, if they exist.", "created": "2017-12-04T11:18:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Using this ticket as a spot to record what we saw over the past two days:\n\nWe profiled a few minutes of gatling runs on jruby 1.7 and 9k and compared the two.\nThe only obvious finding to come out of this was that there was significantly more time spent in garbage collection (more frequent and longer pauses) in 9k, as well as a much higher rate of object allocation in 9k (~0.8-1.2M/s vs. 3K/s peak for 1.7).\n\nThere was no obvious culprit for this, however. Following the call tree we see a lot of activity up until the point of JRuby's InterpretedIRMethod calling its \"call\" method (https://github.com/jruby/jruby/blob/jruby-9.1.11.0/core/src/main/java/org/jruby/internal/runtime/methods/InterpretedIRMethod.java#L95). But lower in the stack, there is nothing clearly responsible for excess. We do see that Regex objects and the joni library in general do take up a significant portion of GCed size, but yourkit doesn't seem to want to aggregate these in a way that's useful for us, so that's an educated guess.\n\nWe also tried to profile a run with JRuby's reify classes option turned on in the hopes that we'd be able to see more clearly what the various \"*RubyObject*\" classes actually were in Ruby, but while that changed the results slightly, we didn't get any clarity from it.\n\n[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] would you mind linking the 9k snapshot here? I can't seem to find the email about sharing it", "created": "2017-12-06T11:44:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "We've since created several other tickets to cover the work described here, see the rest of the epic.", "created": "2018-03-05T16:06:00.000000"}], "components": [], "created": "2017-08-01T16:11:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26d8149d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyloqv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16281_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_7879659312_*|*_10006_*:*_1_*:*_8975506469_*|*_10005_*:*_1_*:*_1810512605"}], "description": "*In Scope*\n* Review documents & profiling data for hotspots in terms of\n** time spent in various phases of the request(s) lifecycle(s)\n** time spent in various ruby functions\n** object allocations during various endpoint serving(s) ie pluginsync, catalog compilation, report submission/processing\n** _note_ : see https://github.com/puppetlabs/puppetserver-memmeasure results / repo\n\n* Identify any areas that are obvious candidates for cleanup, ie reduce object allocation / garbage, inefficient code flow and superfluous IO, serialization, etc\n* Either fix if easy for file tickets to improve problem areas", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16559", "fixedVersions": [], "id": "16559", "issueType": "Task", "key": "SERVER-1917", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Duplicate", "resolutionDate": "2018-03-05T16:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Analyze jruby memory usage and function time profiling results ", "timeSpent": "PT0S", "updated": "2018-03-05T16:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "cc [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]", "created": "2017-07-28T11:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The ticket sounds good.\n\nI'm wondering what the pros and cons are between toggling this feature in a bootstrap config vs a hocon setting?\n\nAlso, IIRC, the bug in Java 7 was the misreporting of changed paths when events happen while registering other/nested paths. Shouldn't that be resolved by not recursively registering this watcher? ie, won't using TK-448 make Java 7 usable for this feature?\n\nI should point out that I'm all for dark shipping CRL reloading in 2.x save for PE and/or advanced users, I'm just not quite following the why.", "created": "2017-07-28T11:46:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "{quote}\nI should point out that I'm all for dark shipping CRL reloading in 2.x save for PE and/or advanced users, I'm just not quite following the why.\n{quote}\n\nI'll defer to [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] on that one - in discussion yesterday he said they intentionally avoided Java 7 due to bugs & instability. I think since this is effectively the terminal release of the 2 series, it would be best to avoid anything that could possibly destabilize the platform - most folks will expect it to Just Work now.", "created": "2017-07-28T12:01:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]I'm happy to defer to your judgement there.\nI'm wary of using java 7 on one codepath through tk-fs-watcher (non-recursive) and not through others (recursive). It feels like if we can't get tk-fs-watcher tests passing reliably on java 7, then we should ship it disabled by default in 2.x with the option for users to turn it on if they are on java 8.\n\nIf tk-fs-watcher tests just work and pass on java 1.7 then i'd have no objections.", "created": "2017-08-01T12:30:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] that's a good point about not testing different features across different JVM versions.\n\nI also don't mean to interrupt your work, I was just interested in catching up on the reasoning. ", "created": "2017-08-01T12:44:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "fyi one outcome of this is that we've decided to move the associated test to a PE test where we only need to test against java 8", "created": "2017-08-14T09:59:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "the first PR for this was merged  - https://github.com/puppetlabs/puppetserver/pull/1475\n\nA second set of PR will be inbound to move the associated test(s)", "created": "2017-08-14T10:02:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] should this have the 2.8 fix version?", "created": "2017-08-15T13:57:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "yes", "created": "2017-08-15T14:58:00.000000"}], "components": [], "created": "2017-07-28T11:01:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d1286f9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfm27:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1042369236_*|*_10007_*:*_1_*:*_422709917_*|*_3_*:*_1_*:*_778627205_*|*_5_*:*_1_*:*_0"}], "description": "The trapperkeeper watch service was intentionally not shipped/supported on Java 7 due to bugginess and instability of the underlying java file watcher library on that platform. When the CRL reload functionality was added to puppetserver 2.x and trapperkeeper-webserver-jetty9 in TK-149, it was with the intent to support a feature required in puppet enterprise, with ships with Java 8. However, the implication of shipping the feature in puppetserver 2.x is that it can/will be installed on environments running Java 7, as java 7 has been supported through the 2.x series. Only in puppetserver 5 is support for java 7 dropped.\n\nWe have already seen test failures running the new crl reload functionality against java 7.\n\nThe proposed solution is to only leverage the CRL reload functionality by default in PE for the server 2.x series, where we know Java 8 is present. We will do so by conditionally loading based on the presence of the trapper keeper watch service, and then not adding this service to the FOSS 2.x bootstrap config by default. Documentation should note that FOSS users of 2.x running java 8 can enable the functionality by adding the trapperkeeper watch service to their bootstrap config.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15341", "fixedVersions": ["SERVER 2.8.0"], "id": "15341", "issueType": "Task", "key": "SERVER-1916", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-08-23T10:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "In 2.x only do CRL reload if FS watcher service is present", "timeSpent": "PT0S", "updated": "2017-08-23T14:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This was worked under the id of the original ticket that introduced this test here: https://github.com/puppetlabs/puppet/pull/6094", "created": "2017-07-31T22:35:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This work was merged into Puppet and when Puppet Server 5.0.x was bumped to use the updated version of Puppet passed.", "created": "2017-08-08T23:15:00.000000"}], "components": [], "created": "2017-07-27T10:42:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@329b3e91"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automate"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfkw7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_639740489_*|*_1_*:*_1_*:*_388352152_*|*_10007_*:*_1_*:*_53901791_*|*_5_*:*_1_*:*_0"}], "description": "In https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_full-jruby9k-master/28/#showFailuresLink\n\nWe see acceptance/tests/environment/negative/agent_run_should_fail_if_env_unreadable.rb fail because the bug it attempts to highlight has been fixed in JRuby 9k (the test is testing that the bug still exists). This is mentioned in the original ticket and is merely an oversight of the test implementation.\n\nWe should update the test to skip JRuby 9k", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15391", "fixedVersions": [], "id": "15391", "issueType": "CI Blocker", "key": "SERVER-1915", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-08-08T23:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PUP-6241 acceptance test erroneously runs on JRuby 9k", "timeSpent": "PT0S", "updated": "2017-08-09T11:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "Interim update: \n\nAttempts to switch over to Bouncy Castle JSSE and JCE providers (from the default Sun/Java providers) by just making configuration changes have not been successful. Based on the errors seen in puppet server logs & their investigation till, it appears some code changes would be required. That is WIP.  ", "created": "2017-08-01T18:26:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "Documenting what has been attempted till. \n\n+Method1+: Setup a PE instance using a recent PE 2017.3.x build and then tweaked java security configuration file to prefer Bouncy Castle Providers over Sun's counterpart versions. Relevant BC jars were installed properly. While this drop-in method should have had worked, based on the errors seen it pointed to how the SSLContext was being initialized within java server code and thus needed some changes. \nThat led to Method 2 of running Puppet Server from sources since otherwise it would have required doing the following: make the code changes in puppet server, do the packaging and an installable. \n\n+Method 2+: There were some hiccups with getting Puppet Server to run from source per the documented steps. Apparently there were some (accidental) breaking changes introduced that had to be triaged and resolved. Once that in place however the same set of changes to switch to Bouncy Castle providers like done in Method 1 yield different symptoms - very different exception trace than seen in Method1. So that has thrown some wrench with the planned code changes approach identified in Method1.  \n", "created": "2017-08-03T10:16:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "Non-pertinent notes: Wrote a simple java application that initialized SSLContext while using BouncyCastle providers successfully. \nHowever that could not be carried over to getting Puppet Server to start successfully. While it (some minor code change mimicing them from the sample app) took care of one issue (exception) seen during startup, there continue to be some more exceptions. And at this stage, we are at a point where we have done whatever we could by adjusting JRE configuration and resolving these issues would require further code changes to get our Java based services to use Bouncy Castle", "created": "2017-08-09T09:56:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:71582ab7-ed41-48f8-a53e-545356d7dee4] Is this still in progress?", "created": "2018-02-07T16:18:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Moved back to \"Ready for Engineering\" for the moment since it hasn't seen updates since August.", "created": "2018-02-08T17:12:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "No this got shelved a bit as enabling FIPS compliant agent became 1st priority although I was trying to work on it in parallel as much as I could. Now that FIPS agent work is almost wound up, we might revive it but need to see if there are other priorities.\u00a0", "created": "2018-02-14T08:33:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "You may get some good reference material from\u00a0https://github.com/RedHatGov/fips-compliant-vault", "created": "2019-04-26T15:05:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Updated this to be blocked on PDB-4357 because the first pass at refactoring our ssl-utils library is being down under that ticket. Once ssl-utils' current functionality works in FIPS we can look into bringing it into puppetserver and what additional extensions to ssl-utils we'll need for the CA (if we go that route).", "created": "2019-07-01T10:37:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Puppet Server has taken up all of the pre-requisite library changes and is testing FIPS and nonFIPS versions per commit in Travis, though we still only build packages for nonFIPS.\u00a0PE-27100\u00a0is the ticket for finishing the PE build work.", "created": "2019-09-03T12:40:00.000000"}], "components": [], "created": "2017-07-25T13:51:00.000000", "creator": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57c9852c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2524"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl1j3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_673038606_*|*_1_*:*_1_*:*_3520040_*|*_10007_*:*_1_*:*_2229129734_*|*_3_*:*_2_*:*_17657109223_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_45960977982"}], "description": "As part of FIPS work, we want our java based services to be able to use appropriate FIPS compliant crypto providers. The FIPS Bouncy Castle provider will be the only supported provider for FIPS enabled PE:\n\nThis is now available in artifactory and ready for internal download and usage.\n * The FIPS bouncy castle provider should be selectable and pass all acceptance testing.\n\n\u00a0", "epicLinkSummary": "FIPS-Enabled Puppet Server Side", "estimate": "PT0S", "externalId": "17204", "fixedVersions": ["SERVER 6.6.0"], "id": "17204", "issueType": "Task", "key": "SERVER-1914", "labels": [], "originalEstimate": "PT0S", "parent": "16326", "parentSummary": "FIPS-Enabled Puppet Server Side", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "resolution": "Fixed", "resolutionDate": "2019-09-03T12:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable using FIPS Bouncy Castle crypto provider ", "timeSpent": "PT0S", "updated": "2019-09-03T12:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:90f4d662-e003-4126-bd89-77e992fecc39", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "From that stack trace\n{code}\nCould not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]:\n    cannot link Java class com.puppetlabs.Facter,\n    probable missing dependency: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2:\n    /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: wrong ELF class:\n    ELFCLASS64 (Possible cause: architecture word width mismatch)\n{code}\n\nI'm curious how/where you got the packages you installed and what architecture are they verses the arch of the machine you're running on. It looks like there is a mismatch between the architecture of Puppet Server, the Puppet Agent, and the machine they're installed on.", "created": "2017-07-25T10:08:00.000000"}, {"author": "557058:ad9611db-aa6c-48e4-8ca3-89c7cc83bee4", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89]not sure what you're looking for from me. Please reach out and let me know what the question is.", "created": "2017-07-25T10:52:00.000000"}], "components": ["Puppet Server"], "created": "2017-07-25T09:59:00.000000", "creator": "557058:90f4d662-e003-4126-bd89-77e992fecc39", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b080b3a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfj9j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_96278107_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_16889937940"}], "description": "I'm facing a problem with puppetserver, the puppetserver failt to start with the following logs.\n\nI tried to reinstall puppetserver multiple times but no way\n\n\n{code:java}\n2017-07-25 16:55:34,309 INFO  [main] [o.e.j.u.log] Logging initialized @18134ms\n2017-07-25 16:55:37,135 INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Initializing web server(s).\n2017-07-25 16:55:37,184 INFO  [async-dispatch-2] [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2017-07-25 16:55:37,192 WARN  [async-dispatch-2] [p.s.j.jruby-puppet-core] The jruby-puppet.use-legacy-auth-conf setting is set to 'true'. Support for the legacy Puppet auth.conf file is deprecated and will be removed in a future release. Change this setting to false and migrate your authorization rule definitions in the /etc/puppetlabs/puppet/auth.conf file to the /etc/puppetlabs/puppetserver/conf.d/auth.conf file.\n2017-07-25 16:55:37,212 INFO  [async-dispatch-2] [p.s.j.jruby-pool-manager-service] Initializing the JRuby service\n2017-07-25 16:55:37,255 INFO  [clojure-agent-send-pool-0] [p.s.j.i.jruby-internal] Creating JRubyInstance with id 1.\n2017-07-25 16:55:56,872 WARN  [clojure-agent-send-pool-0] [puppetserver] Puppet Support for ruby version 1.9.3 is deprecated and will be removed in a future release. See https://docs.puppet.com/puppet/latest/system_requirements.html#ruby for a list of supported ruby versions.\n   (at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:167:in `Puppet')\n2017-07-25 16:55:56,976 INFO  [clojure-agent-send-pool-0] [puppetserver] Puppet Puppet settings initialized; run mode: master\n2017-07-25 16:55:57,755 ERROR [clojure-agent-send-pool-0] [puppetserver] Puppet Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter, probable missing dependency: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)\norg/jruby/javasupport/JavaClass.java:204:in `for_name'\norg/jruby/javasupport/JavaUtilities.java:34:in `get_proxy_class'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/jruby/java/java_package_module_template.rb:4:in `const_missing'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.rb:12:in `value'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine/variable.rb:21:in `facter_value'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine/variable.rb:57:in `test_value'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine/variable.rb:45:in `valid?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine_collection.rb:48:in `valid?'\norg/jruby/RubyEnumerable.java:575:in `detect'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confine_collection.rb:48:in `valid?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/confiner.rb:44:in `suitable?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:1960:in `suitableprovider'\norg/jruby/RubyHash.java:1342:in `each'\norg/jruby/RubyEnumerable.java:705:in `find_all'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:1959:in `suitableprovider'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:1747:in `defaultprovider'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:1912:in `default'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:834:in `set_default'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type.rb:2387:in `initialize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file.rb:491:in `initialize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource.rb:488:in `to_ral'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:640:in `to_catalog'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:632:in `to_catalog'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:513:in `to_ral'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:995:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/puppet_config.rb:46:in `initialize_puppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/master.rb:29:in `initialize'\njruby_puppet_core.clj:133:in `invoke'\njruby_internal.clj:131:in `invoke'\njruby_internal.clj:109:in `invoke'\njruby_agents.clj:59:in `invoke'\njruby_agents.clj:46:in `invoke'\njruby_agents.clj:186:in `invoke'\ninternal.clj:393:in `invokeStatic'\ninternal.clj:368:in `invoke'\ninternal.clj:378:in `invokeStatic'\ninternal.clj:368:in `invoke'\ninternal.clj:433:in `shutdown_on_error'\ninternal.clj:401:in `invoke'\ninternal.clj:401:in `invoke'\ncore.clj:2516:in `invoke'\ncore.clj:2515:in `invoke'\njruby_agents.clj:40:in `invoke'\ncore.clj:1941:in `invoke'\n2017-07-25 16:55:57,775 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Unable to borrow JRubyInstance from pool\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval26521$borrow_from_pool_BANG__STAR___26526$fn__26527.invoke(jruby_internal.clj:182)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval26521$borrow_from_pool_BANG__STAR___26526.invoke(jruby_internal.clj:169)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval26568$borrow_from_pool_with_timeout__26573$fn__26574.invoke(jruby_internal.clj:216)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval26568$borrow_from_pool_with_timeout__26573.invoke(jruby_internal.clj:205)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval27753$borrow_from_pool_with_timeout__27758$fn__27759.invoke(jruby_core.clj:199)\n\tat puppetlabs.services.jruby_pool_manager.jruby_core$eval27753$borrow_from_pool_with_timeout__27758.invoke(jruby_core.clj:186)\n\tat puppetlabs.services.config.puppet_server_config_core$eval32312$get_puppet_config__32317$fn__32318$fn__32319.invoke(puppet_server_config_core.clj:107)\n\tat puppetlabs.services.config.puppet_server_config_core$eval32312$get_puppet_config__32317$fn__32318.invoke(puppet_server_config_core.clj:107)\n\tat puppetlabs.services.config.puppet_server_config_core$eval32312$get_puppet_config__32317.invoke(puppet_server_config_core.clj:102)\n\tat puppetlabs.services.config.puppet_server_config_service$reify__32347$service_fnk__5222__auto___positional$reify__32358.init(puppet_server_config_service.clj:25)\n\tat puppetlabs.trapperkeeper.services$eval5024$fn__5025$G__5012__5028.invoke(services.clj:8)\n\tat puppetlabs.trapperkeeper.services$eval5024$fn__5025$G__5011__5032.invoke(services.clj:8)\n\tat puppetlabs.trapperkeeper.internal$eval13792$run_lifecycle_fn_BANG___13799$fn__13800.invoke(internal.clj:204)\n\tat puppetlabs.trapperkeeper.internal$eval13792$run_lifecycle_fn_BANG___13799.invoke(internal.clj:187)\n\tat puppetlabs.trapperkeeper.internal$eval13821$run_lifecycle_fns__13826$fn__13827.invoke(internal.clj:238)\n\tat puppetlabs.trapperkeeper.internal$eval13821$run_lifecycle_fns__13826.invoke(internal.clj:215)\n\tat puppetlabs.trapperkeeper.internal$eval14291$build_app_STAR___14300$fn$reify__14310.init(internal.clj:588)\n\tat puppetlabs.trapperkeeper.internal$eval14337$boot_services_for_app_STAR__STAR___14344$fn__14345$fn__14347.invoke(internal.clj:616)\n\tat puppetlabs.trapperkeeper.internal$eval14337$boot_services_for_app_STAR__STAR___14344$fn__14345.invoke(internal.clj:615)\n\tat puppetlabs.trapperkeeper.internal$eval14337$boot_services_for_app_STAR__STAR___14344.invoke(internal.clj:609)\n\tat clojure.core$partial$fn__4761.invoke(core.clj:2521)\n\tat puppetlabs.trapperkeeper.internal$eval13860$initialize_lifecycle_worker__13871$fn__13872$fn__13958$state_machine__11832__auto____13959$fn__13961.invoke(internal.clj:255)\n\tat puppetlabs.trapperkeeper.internal$eval13860$initialize_lifecycle_worker__13871$fn__13872$fn__13958$state_machine__11832__auto____13959.invoke(internal.clj:255)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:1012)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:1011)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:1016)\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:1014)\n\tat clojure.core.async$ioc_alts_BANG_$fn__12000.invoke(async.clj:383)\n\tat clojure.core.async$do_alts$fn__11946$fn__11949.invoke(async.clj:252)\n\tat clojure.core.async.impl.channels.ManyToManyChannel$fn__6756$fn__6757.invoke(channels.clj:95)\n\tat clojure.lang.AFn.run(AFn.java:22)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: org.jruby.embed.InvokeFailedException: (NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter, probable missing dependency: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)\ncannot link Java class com.puppetlabs.Facter, probable missing dependency: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(EmbedRubyObjectAdapterImpl.java:318)\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(EmbedRubyObjectAdapterImpl.java:170)\n\tat org.jruby.embed.ScriptingContainer.callMethod(ScriptingContainer.java:1528)\n\tat com.puppetlabs.jruby_utils.jruby.ScriptingContainer.callMethodWithArgArray(ScriptingContainer.java:33)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval28131$get_initialize_pool_instance_fn__28136$fn__28137$fn__28138.invoke(jruby_puppet_core.clj:133)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval26357$create_pool_instance_BANG___26362$fn__26363.invoke(jruby_internal.clj:131)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_internal$eval26357$create_pool_instance_BANG___26362.invoke(jruby_internal.clj:109)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval26747$prime_pool_BANG___26752$fn__26756.invoke(jruby_agents.clj:59)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval26747$prime_pool_BANG___26752.invoke(jruby_agents.clj:46)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval26944$send_prime_pool_BANG___26949$fn__26950$fn__26951.invoke(jruby_agents.clj:186)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:393)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:378)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:368)\n\tat puppetlabs.trapperkeeper.internal$eval14146$shutdown_service__14151$fn$reify__14153$service_fnk__5222__auto___positional$reify__14158.shutdown_on_error(internal.clj:433)\n\tat puppetlabs.trapperkeeper.internal$eval14076$fn__14088$G__14068__14096.invoke(internal.clj:401)\n\tat puppetlabs.trapperkeeper.internal$eval14076$fn__14088$G__14067__14105.invoke(internal.clj:401)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2516)\n\tat clojure.core$partial$fn__4759.invoke(core.clj:2515)\n\tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval26722$send_agent__26727$fn__26728$agent_fn__26729.invoke(jruby_agents.clj:40)\n\tat clojure.core$binding_conveyor_fn$fn__4676.invoke(core.clj:1941)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114)\n\tat clojure.lang.Agent$Action.run(Agent.java:163)\n\t... 3 common frames omitted\nCaused by: org.jruby.exceptions.RaiseException: (NameError) Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter, probable missing dependency: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)\ncannot link Java class com.puppetlabs.Facter, probable missing dependency: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: /opt/puppetlabs/puppet/lib/libfacter.so.3.6.2: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)\n2017-07-25 16:55:57,783 ERROR [clojure-agent-send-pool-0] [p.t.internal] shutdown-on-error triggered because of exception!\n{code}\n", "environment": "Linux RedHat 7", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16310", "fixedVersions": [], "id": "16310", "issueType": "Bug", "key": "SERVER-1913", "labels": ["puppetserver"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:90f4d662-e003-4126-bd89-77e992fecc39", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-06T23:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PuppetServer fail to start", "timeSpent": "PT0S", "updated": "2018-02-06T23:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I have broken this work down into a series of tickets that I have added to this epic. I believe these tickets supersede this one, being much more granular. I'm going to update this ticket to reflect that task and resolve it.", "created": "2017-08-31T14:55:00.000000"}], "components": [], "created": "2017-07-24T16:10:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Tickets detailing the granular steps of the work to enable auto-promotion have been filed in this epic"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c4d56f2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1833"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylmvb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1572702_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3277520434"}], "description": "Open questions:\n  - What are the individual project promotions needed to get a server commit to a pe build?\n  - What are the tests that make us confident to continue promoting each step of the way?\n  - What are the actual lein/rake tasks/jenkins jobs that need to be executed to do this\n  - What are the job/pipeline changes needed for this\n\nNB, the remaining tickets in this epic are probably a good first draft of answering the final two questions.", "epicLinkSummary": "Increase frequency of Server promotions into PE", "estimate": "PT0S", "externalId": "15112", "fixedVersions": [], "id": "15112", "issueType": "Task", "key": "SERVER-1911", "labels": [], "originalEstimate": "PT0S", "parent": "15151", "parentSummary": "Increase frequency of Server promotions into PE", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2017-08-31T15:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ticket work to auto-promote server into PE", "timeSpent": "PT0S", "updated": "2017-08-31T15:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330] [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] does this look familiar? ", "created": "2017-07-21T14:18:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Outdated version of gettext-setup would be my guess. Server 2.7.2 brings in gettext-setup 0.8, but the {{translation_repository}} stuff was added in 0.17 (see https://github.com/puppetlabs/gettext-setup-gem/commit/0fcb0971faf094b0689bf302b04327a09de41c0e). [~accountid:557058:42c68e91-7f1c-4767-895c-70596db6f3d8] This might cause problems for module translation support in the LTS stream, depending on what server version they're sticking with. I know the agent got bumped (to 1.10.x), is server staying  2.7.x? If so, is it possible to update gem dependencies in a Z release? The gem list is here: https://github.com/puppetlabs/puppetserver/blob/2.x/resources/ext/build-scripts/gem-list.txt", "created": "2017-07-21T14:26:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Noted, thanks [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]. Old gettext-setup is old.", "created": "2017-07-21T15:17:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Though that may not exactly be the problem, because apparently master is only on 0.10... Are there other \"sources of truth\" for dependencies that could be out of date?", "created": "2017-07-21T15:21:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Do you have a job link?", "created": "2017-07-21T15:26:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Unfortunately no because this isn't causing any failures in CI - its not showing up in CI output. Should be able to see it though just by installing a glisan PE build and looking at the puppetserver.log", "created": "2017-07-24T10:31:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "Merged to puppetserver#2.x at https://github.com/puppetlabs/puppetserver/commit/f1adc9be94b89008ab98466a8125620d3544c808.", "created": "2017-07-24T21:42:00.000000"}, {"author": "557058:df0ca97c-ab4c-4727-927f-cb7fe43c6d87", "body": "Hi,\n\nI noticed this problem with current pc1 RPM packages for EL6 and a 3.8.7 agent on Debian wheezy:\n\nServer: puppetserver-2.7.2-1.el6.noarch\n\nAgent: \n\n% apt-cache policy puppet\npuppet:\n  Installed: 3.8.7-1puppetlabs1\n  Candidate: 3.8.7-1puppetlabs1\n  Version table:\n *** 3.8.7-1puppetlabs1 0\n\nIt would be great to have updated RPMs soon.", "created": "2017-08-03T03:22:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The PR has been merged, packages as soon as we work through a couple other bugs in the current 2.7.2 build.", "created": "2017-08-03T10:20:00.000000"}, {"author": "557058:8f1e0495-1d4a-4123-bbad-727b7f49f370", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] does this need a release note?", "created": "2017-08-03T12:01:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I don't think so.", "created": "2017-08-03T12:05:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "I pulled down version 5.0.1-0.1SNAPSHOT.2017.08.06T0835 (which is one of the most recent builds on master) and unpacked it, and it looks like we still have 0.10.0 installed, based on the presence of {{./opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems/specifications/gettext-setup-0.10.gemspec}}. Was this change propagated up to master?\n\nI'm unable to check 2.7.x right now, as we don't have any current builds of that on builds.delivery. We'll need to get the 2.x pipelines fixed before we can verify this.", "created": "2017-08-07T14:47:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "sorry for the confusion [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] - this has not been merged up yet. waiting on the slew of prs related to TK-149 before merge-up ", "created": "2017-08-07T14:57:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Is this a regression that we shipped in a version of PE, or are we about to ship this as a regression in an upcoming version of PE?", "created": "2017-08-07T15:09:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "If 4.10.5 actually went into a PE release, we shipped it. If not, we will ship it as soon as an Agent goes out in PE without a server update.", "created": "2017-08-07T15:27:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Hi [~accountid:557058:3c7b6e34-de5c-45e8-86c5-b3529fff42e3] - yes, the suggested workaround is to do: `/opt/puppetlabs/server/bin/puppetserver gem install gettext-setup:0.26`. you may need to restart the puppet server service", "created": "2017-08-23T13:50:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "A workaround is to do {{puppetserver gem install gettext-setup}} which should pull down the latest version (0.26). The bundled gem we shipped was a very old version which doesn't provide the method. We're shipping an updated version with the next release.", "created": "2017-08-23T13:51:00.000000"}, {"author": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "body": "I installed PE {code}puppetserver version: 2017.2.0.24{code} which still had version 0.20 of gettext and was still seeing the error messages in the /var/log/puppetlabs/puppetserver/puppetserver.log file\n\npuppetserver.log:2017-08-25 17:56:44,721 WARN  [qtp1510467634-137] [puppetserver] Puppet GettextSetup initialization for puppet_enterprise failed with: undefined method `translation_repositories' for GettextSetup:Module\n\nWhen I applied the workaround  puppetserver gem install gettext-setup  to the system the problem went away. So the current build of PE doesn't appear to be pulling in a new enough version of gettext.", "created": "2017-08-25T12:13:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think we also need to update https://github.com/puppetlabs/pe-puppet-server-extensions/blob/glisan/resources/ext/build-scripts/gem-list.txt#L6", "created": "2017-08-25T12:50:00.000000"}, {"author": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "body": "Tested with puppet-enterprise-2017.3.0-rc9-3-ge6f34ee-el-7-x86_64 fixed.", "created": "2017-09-07T12:10:00.000000"}], "components": [], "created": "2017-07-21T14:17:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45912acc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-1104"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyljdz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "## Errors logged about GettextSetup initialization failures\n\nModules can log hundreds of error messages similar to:\n\n```\n2017-07-21 18:45:47,398 WARN  [qtp316072116-68] [puppetserver] Puppet GettextSetup initialization for pe_install failed with: undefined method `translation_repositories' for GettextSetup:Module\n```\n\nTo resolve this issue, update the gettext-setup gem to version 0.26, then restart the `puppetserver` service:\n\n```\n/opt/puppetlabs/server/bin/puppetserver gem install gettext-setup:0.26\n```"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_2719119015_*|*_1_*:*_2_*:*_2133502_*|*_10007_*:*_1_*:*_253788632_*|*_3_*:*_1_*:*_12265093_*|*_5_*:*_1_*:*_602899757_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_881135988_*|*_10004_*:*_1_*:*_271197382"}], "description": "The puppetserver log on current PE glisan builds is fills up with hundreds of entries like this:\n\n{code}\n2017-07-21 18:45:47,398 WARN  [qtp316072116-68] [puppetserver] Puppet GettextSetup initialization for pe_install failed with: undefined method `translation_repositories' for GettextSetup:Module\n{code}\n\nThis error {{undefined method `translation_repositories' for GettextSetup:Module}} is repeated apparently for all the PE modules? or all modules installed? \n\nServer 2.7.x with Agent 4.10.5", "epicLinkSummary": "Translate Puppet Agent components - Phase 2", "estimate": "PT0S", "externalId": "15390", "fixedVersions": ["SERVER 2.8.0", "SERVER 5.1.0"], "id": "15390", "issueType": "Bug", "key": "SERVER-1912", "labels": [], "originalEstimate": "PT0S", "parent": "59217", "parentSummary": "Translate Puppet Agent components - Phase 2", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-09-07T12:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "server logs filled with undefined method `translation_repositories' for GettextSetup:Module", "timeSpent": "PT0S", "updated": "2017-10-05T12:34:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2017-07-20T14:43:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e8ba89f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffyv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2262_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3700819025"}], "description": "(Initial planned release date: 2017-07-26)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.8.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14730", "fixedVersions": [], "id": "14730", "issueType": "Sub-task", "key": "SERVER-1910", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-09-01T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2017-07-20T14:43:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@554db84c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffyn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2703_*|*_5_*:*_1_*:*_63109389_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3637708548"}], "description": "(Initial planned release date: 2017-07-26)\n\nUpdate dujour to notify users to use 2.8.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17360", "fixedVersions": [], "id": "17360", "issueType": "Sub-task", "key": "SERVER-1909", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-31T17:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.8.0 (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Sent!\n\nPuppet Server 2.8.0 is now available.  This is a backwards-compatible feature release for Puppet 4.x sites, which contains one notable new feature and a few bugfixes as well.\n\nThe headline feature is that the puppetserver now automatically reloads the CRL (certificate revocation list) when a node's certificate is revoked, where previously a revoked cert was considered valid until the puppetserver was restarted. This feature should make it easier to reprovision nodes with the same name/certificate identity as a revoked node, plus reduce manual work when revoking. (TK-149)\n\nA special community thank-you goes to Matthias H\u00f6rmann, who reported and helped troubleshoot SERVER-1671, which is also fixed in this release.\n\n\nFor the full list of changes, check out the release notes: https://docs.puppet.com/puppetserver/2.8/release_notes.html#puppet-server-280\n\nTo download and install puppet server, follow these instructions: https://docs.puppet.com/puppetserver/2.8/install_from_packages.html\n\n\nEric Sorenson - eric@puppet.com \ndirector of product, ecosystem and platform\n", "created": "2017-08-31T18:18:00.000000"}], "components": [], "created": "2017-07-20T14:43:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4083f6c1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffyf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2174_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3641702927"}], "description": "(Initial planned release date: 2017-07-26)\n\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17203", "fixedVersions": [], "id": "17203", "issueType": "Sub-task", "key": "SERVER-1908", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-31T18:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-08-31T18:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2017-07-20T14:43:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2baf9b87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffy7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2246_*|*_5_*:*_1_*:*_59918175_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3640902542"}], "description": "(Initial planned release date: 2017-07-26)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16840", "fixedVersions": [], "id": "16840", "issueType": "Sub-task", "key": "SERVER-1907", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-31T18:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:254cdefb-9532-46cb-b4ac-84c3df97d6af", "attachments": [], "comments": [], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@296ea002"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffxz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2351_*|*_5_*:*_1_*:*_64884909_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3635935189"}], "description": "(Initial planned release date: 2017-07-26)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16557", "fixedVersions": [], "id": "16557", "issueType": "Sub-task", "key": "SERVER-1906", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-08-31T16:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:254cdefb-9532-46cb-b4ac-84c3df97d6af", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] has already done this", "created": "2017-08-31T14:15:00.000000"}, {"author": "557058:254cdefb-9532-46cb-b4ac-84c3df97d6af", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] This should be shipped and publicly available now!", "created": "2017-08-31T16:41:00.000000"}], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cf21cd1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffxr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2394_*|*_5_*:*_2_*:*_73678893_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3627141031"}], "description": "(Initial planned release date: 2017-07-26)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16309", "fixedVersions": [], "id": "16309", "issueType": "Sub-task", "key": "SERVER-1905", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-08-31T14:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@744555cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffxj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2320_*|*_5_*:*_1_*:*_79617190_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3621202546"}], "description": "(Initial planned release date: 2017-07-26)\n\nThis should happen Monday-Thursday, before noon PST. We should not be shipping anything after noon PST or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:1db5c8e0-e1c5-41a9-9ae9-281047124514]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15998", "fixedVersions": [], "id": "15998", "issueType": "Sub-task", "key": "SERVER-1904", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-31T12:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "tested on cent7 and debian 8", "created": "2017-08-31T10:12:00.000000"}], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@476409d1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffxb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2339_*|*_3_*:*_1_*:*_84717935_*|*_5_*:*_1_*:*_88213227_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3527888814"}], "description": "(Initial planned release date: 2017-07-26)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15686", "fixedVersions": [], "id": "15686", "issueType": "Sub-task", "key": "SERVER-1903", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-31T10:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] I'm assigning this ticket to you. You have everything you need to both create packages and to tag.\n\nTo created the packages, I'm sure you already know you just need to remove `SNAPHOT` from the version string in project.clj\n\nTo tag the release, make sure you know a) the long sha of the commit you want to tag, and b) the version string for the new tag. This should match the final version of the packages (i.e., 2.8.0)\n\nIn the release-new hipchat channel, type\n{code}\n! tag puppetserver 2.8.0 at <longsha> with '2.8.0'\n{code}", "created": "2017-08-25T15:07:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Thanks [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]!", "created": "2017-08-25T15:17:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "2.8.0 tagged at https://github.com/puppetlabs/puppetserver/commit/7e572840b0fee18a5b18523625096b79ebd2eff0", "created": "2017-08-29T16:12:00.000000"}], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1040dbfd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffx3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2340_*|*_5_*:*_1_*:*_239452195_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3461367996"}], "description": "(Initial planned release date: 2017-07-26)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15389", "fixedVersions": [], "id": "15389", "issueType": "Sub-task", "key": "SERVER-1902", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-29T16:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8f1e0495-1d4a-4123-bbad-727b7f49f370", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "CC [~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] [~accountid:557058:8f1e0495-1d4a-4123-bbad-727b7f49f370]", "created": "2017-07-31T13:30:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "This should be unblocked now", "created": "2017-08-28T12:34:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Actually, there's a PR up to add some docs here https://github.com/puppetlabs/puppetserver/pull/1497", "created": "2017-08-28T12:36:00.000000"}], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5390f0cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffwv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2298_*|*_3_*:*_1_*:*_858484581_*|*_5_*:*_1_*:*_59908178_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1642586637_*|*_10005_*:*_1_*:*_1139840773"}], "description": "(Initial planned release date: 2017-07-26)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15111", "fixedVersions": [], "id": "15111", "issueType": "Sub-task", "key": "SERVER-1901", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-31T18:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "attachments": [], "comments": [], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1951d7cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffwn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2328_*|*_3_*:*_1_*:*_2285533_*|*_5_*:*_1_*:*_237145085_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3461388072"}], "description": "(Initial planned release date: 2017-07-26)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14729", "fixedVersions": [], "id": "14729", "issueType": "Sub-task", "key": "SERVER-1900", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-08-29T16:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Since this is off the 2.x branch, there's no other branch to merge into. We'll do a regular merge up from 2.x the next time it seems appropriate", "created": "2017-08-31T14:13:00.000000"}], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17eb3501"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffwf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2345_*|*_5_*:*_1_*:*_73745040_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3627070325"}], "description": "(Initial planned release date: 2017-07-26)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17359", "fixedVersions": [], "id": "17359", "issueType": "Sub-task", "key": "SERVER-1899", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Won't Do", "resolutionDate": "2017-08-31T14:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Put up a PR to update the version. CI is green, the relevant work is merged. Seems like the code is ready to go", "created": "2017-08-28T15:28:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Updated at https://github.com/puppetlabs/puppetserver/commit/7e572840b0fee18a5b18523625096b79ebd2eff0", "created": "2017-08-29T16:09:00.000000"}], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6114c0cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffw7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2280_*|*_10007_*:*_1_*:*_88972452_*|*_5_*:*_1_*:*_239565387_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3372277288"}], "description": "(Initial planned release date: 2017-07-26)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17202", "fixedVersions": ["SERVER 2.8.0"], "id": "17202", "issueType": "Sub-task", "key": "SERVER-1898", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-29T16:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2018-01-29T14:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "All the unreconciled commits have been accounted for ", "created": "2017-08-28T12:33:00.000000"}], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5cf203bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffvz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2347_*|*_3_*:*_1_*:*_1887034_*|*_5_*:*_1_*:*_338924024_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3360003747"}], "description": "(Initial planned release date: 2017-07-26)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16839", "fixedVersions": [], "id": "16839", "issueType": "Sub-task", "key": "SERVER-1897", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-28T12:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40f452a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzffvr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2292_*|*_3_*:*_1_*:*_1744328_*|*_5_*:*_1_*:*_339018573_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3360016884"}], "description": "(Initial planned release date: 2017-07-26)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.8.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16555", "fixedVersions": [], "id": "16555", "issueType": "Sub-task", "key": "SERVER-1896", "labels": [], "originalEstimate": "PT0S", "parent": "16308", "parentSummary": "Puppet Server 2.8.0 2017-08-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-08-28T12:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.8.0)", "timeSpent": "PT0S", "updated": "2017-09-01T10:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "fyi [~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578]", "created": "2017-07-20T14:45:00.000000"}, {"author": "557058:254cdefb-9532-46cb-b4ac-84c3df97d6af", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] Puppet Server 2.8.0 is shipped and publicly available now!", "created": "2017-08-31T16:42:00.000000"}], "components": [], "created": "2017-07-20T14:42:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@561d9962"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyll67:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2173_*|*_3_*:*_1_*:*_256047222_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3444846481"}], "description": "Puppet Server 2.8.0 2017-09-01 Release\n\nDependencies included in this release: TK-JETTY9 1.8.1 and TK-FS-WATCHER 1.1.0\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16308", "fixedVersions": ["SERVER 2.8.0"], "id": "16308", "issueType": "Task", "key": "SERVER-1895", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Done", "resolutionDate": "2017-09-01T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 2.8.0 2017-08-31 Release", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to 5.0.x at https://github.com/puppetlabs/puppetserver/pull/1466#pullrequestreview-51047519", "created": "2017-07-19T15:32:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged up to master at https://github.com/puppetlabs/puppetserver/commit/d17916700e9de06631c110f4578ea6236601796a", "created": "2017-07-19T16:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Passed CI for [master|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_full-5.0.x/30/], 5.0.x is blocked on broken upstream spec tests. There should be no difference between master and 5.0.x in this regard though.", "created": "2017-07-20T10:59:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] which fix version(s) should this issue have?", "created": "2017-07-27T08:34:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This was a test fix, no production code changes", "created": "2017-07-27T10:16:00.000000"}], "components": [], "created": "2017-07-19T10:38:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64ccbaf6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfekn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_66419782_*|*_1_*:*_1_*:*_5831456_*|*_10007_*:*_1_*:*_15436962_*|*_5_*:*_1_*:*_4840790285_*|*_6_*:*_1_*:*_0"}], "description": "On July 17th a new version of the postgresql module came out which defaults to using https for the apt repo url. This will cause apt-get to fail unless it has the {{apt-transport-https}} addon installed. This failure is causing our PuppetDB installation/smoke test to fail to install postgresql. Because we're install PDB in a \"test\" instead of the \"pre-suite\" the run continues after unsuccessfully installing PDB.\n\nRelevant bit from the log\n{code}\n    Notice: /Stage[main]/Postgresql::Repo::Apt_postgresql_org/Apt::Pin[apt_postgresql_org]/Apt::Setting[pref-apt_postgresql_org]/File[/etc/apt/preferences.d/apt_postgresql_org.pref]/ensure: defined content as '{md5}734220c11c6ee4e5e2e2d022e6880efd'\n    Notice: /Stage[main]/Postgresql::Repo::Apt_postgresql_org/Apt::Source[apt.postgresql.org]/Apt::Key[Add key: B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 from Apt::Source apt.postgresql.org]/Apt_key[Add key: B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 from Apt::Source apt.postgresql.org]/ensure: created\n    Notice: /Stage[main]/Postgresql::Repo::Apt_postgresql_org/Apt::Source[apt.postgresql.org]/Apt::Setting[list-apt.postgresql.org]/File[/etc/apt/sources.list.d/apt.postgresql.org.list]/ensure: defined content as '{md5}cc833cad29d829f0ef6a7144e4655341'\n    Info: /Stage[main]/Postgresql::Repo::Apt_postgresql_org/Apt::Source[apt.postgresql.org]/Apt::Setting[list-apt.postgresql.org]/File[/etc/apt/sources.list.d/apt.postgresql.org.list]: Scheduling refresh of Class[Apt::Update]\n    Info: Class[Apt::Update]: Scheduling refresh of Exec[apt_update]\n    Notice: /Stage[main]/Apt::Update/Exec[apt_update]/returns: E: The method driver /usr/lib/apt/methods/https could not be found.\n    Error: /Stage[main]/Apt::Update/Exec[apt_update]: Failed to call refresh: '/usr/bin/apt-get update' returned 100 instead of one of [0]\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17201", "fixedVersions": ["SERVER 5.1.0"], "id": "17201", "issueType": "CI Blocker", "key": "SERVER-1894", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-07-20T11:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "apt-transport-https needs to be installed on debian boxes when installing pdb", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to 5.0.x at https://github.com/puppetlabs/puppetserver/commit/ab6142349fd661eb4d1e312a7ac3789e04014c13", "created": "2017-07-19T15:44:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged up to master at https://github.com/puppetlabs/puppetserver/commit/d17916700e9de06631c110f4578ea6236601796a", "created": "2017-07-19T16:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Upgrade test runs weekly, next run with this code will be Saturday July 22nd.", "created": "2017-07-20T17:01:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Infrastructure issues prevented this from running this weekend", "created": "2017-07-24T16:02:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[5.0.x Upgrade JRuby 9k job|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_upgrade-jruby9k-5.0.x] passed using 5.0.1.SNAPSHOT.2017.07.29T2233", "created": "2017-07-31T15:32:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[Master Upgrade JRuby 9k job|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_upgrade-jruby9k-master/] has not passed since after the merge up on on 2017-07-19.", "created": "2017-07-31T15:35:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The failure in the master branch relates to the issue described in SERVER-1915 and the PR open for it should resolve that issue in both the full acceptance job and the upgrade job.", "created": "2017-07-31T22:39:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The issue ", "created": "2017-08-08T23:07:00.000000"}], "components": [], "created": "2017-07-19T10:27:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78bdaa8d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylol3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1754571978_*|*_1_*:*_1_*:*_8691957_*|*_3_*:*_1_*:*_10323495_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_32647"}], "description": "The relevant bits of the last log\n{code}\nJul 16 00:18:57 udsn1k3l6r5kp30 puppetserver[13494]: Caused by: java.lang.UnsupportedClassVersionError: com/puppetlabs/puppetserver/ShellUtils : Unsupported major.minor version 52.0\n...snip...\nJul 16 00:18:57 udsn1k3l6r5kp30 puppetserver[13494]: ... 127 more\nJul 16 00:18:57 udsn1k3l6r5kp30 puppetserver[13494]: Background process 13501 exited before start had completed\nJul 16 00:18:57 udsn1k3l6r5kp30 systemd[1]: puppetserver.service: control process exited, code=exited status=1\nJul 16 00:18:57 udsn1k3l6r5kp30 systemd[1]: Failed to start puppetserver Service.\nJul 16 00:18:57 udsn1k3l6r5kp30 systemd[1]: Unit puppetserver.service entered failed state.\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16307", "fixedVersions": [], "id": "16307", "issueType": "CI Blocker", "key": "SERVER-1893", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-08-08T23:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "upgrade job not selecting the correct jdk on debian jessie", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "attachments": [], "comments": [], "components": [], "created": "2017-07-19T10:07:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@349e987e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfek7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_9500900650_*|*_1_*:*_1_*:*_35112_*|*_10007_*:*_1_*:*_204119_*|*_3_*:*_2_*:*_6038011_*|*_5_*:*_1_*:*_0"}], "description": "Our new \"puppetserver (<branch>) 11: JRuby 9k update puppet submodule\" jobs fail with\n{code}\n+ run_me_maybe_resources beaker LAYOUT_AXIS /var/lib/jenkins/workspace/platform_puppetserver_periodic-singleton_jruby9k-5.0.x/resources.props\n/tmp/hudson2623345791474180096.sh: line 60: run_me_maybe_resources: command not found\nBuild step 'Execute shell' marked build as failure\n{code}\n\nBecause the new job ([defined here|https://github.com/puppetlabs/ci-job-configs/blob/19593373277c218f67fbb13b54637e13d168e117/resources/job-templates/init.yaml#L43]) uses the [init-workspace.sh|https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/init-workspace.sh] that attempts to initialize the workspace for acceptance testing. We should either use a different workspace initialization script, our own, or refactor the one we're currently using. We should not need run_me_maybe for these jobs.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15684", "fixedVersions": [], "id": "15684", "issueType": "CI Blocker", "key": "SERVER-1892", "labels": ["failure_mode:test"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-11-06T10:00:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet submodule bump job attempts, and fails, to use run_me_maybe", "timeSpent": "PT0S", "updated": "2017-11-06T10:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think I'm going to refile this ticket in a different context: extracting some of that submodule update stuff out in such a way that it might be usable from other libraries, because we need submodule update automation for jar-jar and pe-pse too, and they have other janky or manual ways of doing it now, that could be standardized with these.", "created": "2020-01-29T09:13:00.000000"}], "components": [], "created": "2017-07-17T12:36:00.000000", "creator": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "*given* methods added in PR 1458 \n*then* should not be in rakefile\n*then* should handle same use cases as PR 1465\n*then* shall have unit/integration tests"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@79a7a466"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfd73:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15530654_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_79982278910"}], "description": "*as a* rakefile developer/user\n*i want* a clean rakefile and well tested helper libraries\n*so that* i can easily use the rakefile\n*so that* i can easily update the helper libraries and rakefile\n\nthis:\nhttps://github.com/puppetlabs/puppetserver/pull/1465\nshould be merged with the methods in the Rakefile for updating the puppet submodule added here:\nhttps://github.com/puppetlabs/puppetserver/pull/1458\n\nthey should probably live in the acceptance helper.  \nif going a step further, they should probably live in a beaker library that knows about puppetlabs infrastructure.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "15388", "fixedVersions": [], "id": "15388", "issueType": "Improvement", "key": "SERVER-1891", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "resolution": "Won't Do", "resolutionDate": "2020-01-29T09:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "tech-debt: merge Rakefile methods for submodule update with acceptance helpers", "timeSpent": "PT0S", "updated": "2020-01-29T09:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-07-11T15:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5980abe3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzf9ev:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521689048_*|*_5_*:*_1_*:*_0"}], "description": "The puppet agent team has been using the ci triage helper tool that the PE Integration team put together, http://pe-ci.slice.puppetlabs.net/, and been happy with that.  We should look into whether the tool might be helpful for Puppet Server CI triage.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16554", "fixedVersions": [], "id": "16554", "issueType": "Task", "key": "SERVER-1886", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-07-17T16:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate using integration triage helper", "timeSpent": "PT0S", "updated": "2017-07-17T16:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We are not going to prioritize creating a job to check our dependencies at this point. This would be especially bad for JRuby since we package two different versions and have to include it in a dependency of a dependency.", "created": "2018-02-20T11:43:00.000000"}], "components": [], "created": "2017-07-11T12:58:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f10b49c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfpmf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_181054256_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_19171605501"}], "description": "JRuby 9k has a fairly quick release cadence, and we don't want to fall behind too far in JRuby releases in Puppetserver. We should add a CI job that runs nightly or weekly that compares the version of JRuby 9K that we're shipping in master that will fail if we're too far behind.\n\nThis might be a little be tricky for the 5.0.x branch as we might not want to track the latest release too closely; we might just want to have this CI job monitoring the master branch.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14728", "fixedVersions": [], "id": "14728", "issueType": "Task", "key": "SERVER-1885", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Won't Do", "resolutionDate": "2018-02-20T11:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create CI job to check for JRuby 9k releases", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] You mentioned that there are probably a few changes we'll need to make as part of this work, like finding a replacement for the use of the [install_puppetlabs_release_repo helper|https://github.com/puppetlabs/puppetserver/blob/56ee2195b67db4fd865985081357736d779c3183/acceptance/suites/pre_suite/upgrade/10_install_puppet.rb#L2].  Could you add a comment with anything else you know of off the top of your head that we'd need to look at?  Also, do you have a sense of how urgent this is?", "created": "2017-07-10T14:46:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Ah, so, I may have been wrong about when things will break. It looks like a lot of the foss utilities were moved to beaker-puppet, which is a dependency of beaker now. So you should still have these utilities available. ", "created": "2017-07-10T14:52:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "It does look like `:dev_builds_repos` hasn't been used in a while, so it should be safe to remove all instances of that. It's more a red herring left as is in the tests", "created": "2017-07-10T14:59:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Hello! Beaker-puppet 0.8.0 has been released! You actually don't need to be on the latest version of beaker to get this in. You need at least beaker 3.19.0, which should be a lot less painful as you are currently running beaker 3.17.0 on the 5.1.x branch of puppetserver. This should get you the utilities you need to enable the puppet5 repos on apt.puppetlabs.com and yum.puppetlabs.com for testing purposes.", "created": "2017-10-13T12:03:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] I'm not really sure who else is on the server team these days. This bump will get you access to the puppet5 repos on apt.puppetlabs.com and yum.puppetlabs.com for testing purposes. I assume you'll be wanting to do this soon. I'll leave you to update your tests, but let me know if you run into any issues, and I'll do my best to help out", "created": "2017-10-13T12:51:00.000000"}], "components": [], "created": "2017-07-10T14:43:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2075f3df"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzf887:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_369537582_*|*_1_*:*_1_*:*_612421955_*|*_10007_*:*_1_*:*_233933172_*|*_3_*:*_1_*:*_6407412_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_9065871969"}], "description": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] has been looking into some changes needed for allowing CI to use the new Puppet 5 repos.  It seems likely that some changes may need to be made to beaker.  We're currently running 3.17.0.  It would be good for us to try to update to the latest beaker version, 3.19.0?, since any subsequent beaker changes would likely be applied on top of that version.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15387", "fixedVersions": ["SERVER 5.1.5", "SERVER 5.2.0"], "id": "15387", "issueType": "Task", "key": "SERVER-1881", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2017-11-06T15:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate beaker 3.19 upgrade for CI", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged at https://github.com/puppetlabs/ci-job-configs/commit/7512a80954e9a984e38462cac8958d57c3adf66f", "created": "2017-07-18T10:58:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "First job using this was ran here https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/366/\n\nThe two runs since implementing this have been ~50 minutes compared to ~120 minutes for the week prior to this merge.", "created": "2017-07-20T16:50:00.000000"}], "components": [], "created": "2017-07-10T09:50:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53d94e7d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylszr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_193929527_*|*_1_*:*_1_*:*_25878275_*|*_10007_*:*_1_*:*_73270438_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_596117569"}], "description": "We have just finished auditing the Puppet acceptance suite and tagging tests that should run within the server pipeline with 'server'. The Server pipelines should be updated to only run those tests (either in ci-job-configs or in its rake task).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15682", "fixedVersions": [], "id": "15682", "issueType": "Task", "key": "SERVER-1879", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-07-20T16:50:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update Server runs of Puppet acceptance tests to only run tests tagged 'server'", "timeSpent": "PT0S", "updated": "2017-07-24T16:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "What would be the correct behavior here? It seems potentially dangerous to run with an error in place as you might end up compiling catalogues that break other parts of the system. I understand the desire to keep puppet running if you are managing puppet with puppet.", "created": "2017-07-10T17:01:00.000000"}, {"author": "557058:aaeb61c9-652e-4d96-a168-4350ed105621", "body": "It shouldn't essentially hang Puppet. If there is an error in the env.conf it needs to log that in the console or throw some sort of error. \n\nCan always backup the env.conf file periodically and if there is an error it reverts back to the last known good configuration. If it does detect an error, it can always error and prompt the user if they want to revert.", "created": "2017-07-11T01:45:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This issue would be superseded by the Clojure Fileserving work as we'd revamp our environment.conf parsing during that.\n\n\u00a0", "created": "2018-02-20T11:34:00.000000"}], "components": [], "created": "2017-07-05T22:17:00.000000", "creator": "557058:aaeb61c9-652e-4d96-a168-4350ed105621", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3508f1f9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzf5mn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1017064360_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_18819940277"}], "description": "Any typo in environment.conf will require all puppet services to be restarted.\n\nError reported:\n\npuppetserver.log:2017-07-03 20:51:18,042 ERROR [qtp2116445878-61] [puppetserver] Puppet Server Error: Error converting value for param 'modulepath': Could not find value for $basemodeulepath\n--\npuppetserver.log-http.clj:152:in `invoke'\npuppetserver.log-http.clj:148:in `invoke'\npuppetserver.log-comidi.clj:336:in `invoke'\npuppetserver.log-jetty9_core.clj:423:in `invoke'\npuppetserver.log-normalized_uri_helpers.clj:81:in `invoke'\npuppetserver.log:2017-07-03 20:56:18,062 ERROR [qtp2116445878-65] [puppetserver] Puppet Server Error: Error converting value for param 'modulepath': Could not find value for $basemodeulepath", "environment": "OS = \"CentOS Linux release 7.3.1611 (Core)\"\nPuppet Version = 4.9.4\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16838", "fixedVersions": [], "id": "16838", "issueType": "Bug", "key": "SERVER-1878", "labels": ["environment", "master", "puppet-server"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aaeb61c9-652e-4d96-a168-4350ed105621", "resolution": "Duplicate", "resolutionDate": "2018-02-20T11:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "broken environment.conf file breaks the ability to use puppet until fixed and all services restarted", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2017-07-06T16:37:00.000000", "name": "jruby1.7.27-compile-mode-off-summary.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10964"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2017-07-06T16:37:00.000000", "name": "jruby1.7.27-vs-jruby9.1.11.0-compile-mode-off-summary.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10885"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2017-07-06T16:45:00.000000", "name": "jruby9.1.0.0-compile-mode-off-summary.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11048"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2017-07-06T16:37:00.000000", "name": "jruby9.1.0.0-vs-jruby9.1.11.0-compile-mode-off-summary.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10811"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2017-07-06T16:37:00.000000", "name": "jruby9.1.11.0-compile-mode-off-summary.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10740"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I put up a [PR|https://github.com/puppetlabs/puppetserver-memmeasure/pull/3] with changes which allow the tool to run with Puppet Server 5 dependencies.\n\nI also ran the {{/dev/run.sh}} script with the default settings, using {{compile-mode: off}}, for both JRuby 1.7.27 and 9.1.11.0 and attached the resulting summary files.\n\nI diffed the 9.1.11.0 numbers against the 9.1.0.0 summary that I'd taken back when doing the work for SERVER-1377, attached as jruby9.1.0.0-vs-jruby9.1.11.0-compile-mode-off-summary.json.  A couple of things stuck out from that:\n\n1) The overhead for creating a new ScriptingContainer and initializing it with Puppet code has unfortunately increased by 2 - 3 MiB with JRuby 9.1.11.0 vs. JRuby 9.1.0.0.\n\n2) The overhead for compiling catalogs has, fortunately, generally appeared to decrease with JRuby 9.1.11.0 vs. 9.1.0.0.  For example, the overhead of compiling 5 \"small\" perf-control repo catalogs in 5 environments has decreased by about 6 MiB per JRuby.  When considered with the extra overhead for the ScriptingContainer itself, there's a net reduction for 9.1.11.0 of about 3 MiB.\n\nIt may be that some of the reduction in memory usage is due to changes in Puppet 5 vs. the Puppet 4-based code which was used for the 9.1.0.0 measurements.\n\n--\n\nI also diffed the numbers for JRuby 1.7.27 vs. 9.1.11.0, both running Puppet Server / Puppet 5.0 code.  Generally speaking, there's still significantly higher memory usage with 9.1.11.0 in this comparison - about 14 MiB more memory for initializing a ScriptingContainer with Puppet code and 12 MiB more memory per JRuby for 5 \"small\" perf-control repo catalog compilations in 5 environments.", "created": "2017-07-06T16:56:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've merged this and since this does not have CI I'm going to move directly to resolved.", "created": "2017-07-20T17:09:00.000000"}], "components": [], "created": "2017-07-05T16:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@528552ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8mj3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_8280_*|*_10007_*:*_1_*:*_1210381252_*|*_3_*:*_1_*:*_87517311_*|*_5_*:*_1_*:*_0"}], "description": "The [puppetserver-memmeasure|https://github.com/puppetlabs/puppetserver-memmeasure] tool was originally developed for measuring memory usage at a time when JRuby 9k support was not available directly from Puppet Server (and before jruby-utils existed).  This should be updated to work with the latest Puppet/Server 5 release. \n\n", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "14727", "fixedVersions": [], "id": "14727", "issueType": "Task", "key": "SERVER-1877", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-07-20T17:09:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver-memmeasure for Puppet 5", "timeSpent": "PT0S", "updated": "2017-07-20T17:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:f05c356e-ae8e-44d6-a3e7-a6f746b0070f", "attachments": [{"attacher": "557058:c939efdc-9cc2-41be-b28c-6e8fc86fca71", "created": "2017-07-02T11:20:00.000000", "name": "puppetserver-2017-07-01.0.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10583"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For Puppet Server 5, the following setting is expected to be present in the {{/etc/puppetlabs/puppetserver/conf.d/web-routes.conf}} file:\n\n{code:hocon}\nweb-router-service: {\n...\n    # This controls the mount point for the metrics API\n    \"puppetlabs.trapperkeeper.services.metrics.metrics-service/metrics-webservice\": \"/metrics\"\n}\n{code}\n\nIf the above line is not present in your configuration after the upgrade to Puppet Server 5, I'm guessing that the \"web-routes.conf\" file had been modified at some point after the original Puppet Server installation had occurred.\n\nIf you uncomment the {{puppetlabs.trapperkeeper.services.metrics.metrics-service/metrics-webservice}} line in the {{/opt/puppetlabs/server/apps/puppetserver/config/services.d/bootstrap.cfg}} file and ensure that the corresponding entry is present in the {{/etc/puppetlabs/puppetserver/conf.d/web-routes.conf}} file, does the puppetserver service start properly for you?", "created": "2017-07-02T13:12:00.000000"}, {"author": "557058:c939efdc-9cc2-41be-b28c-6e8fc86fca71", "body": "Yes, the metrics-webservice line was not present in {{web-routes.conf}}, so when I added it in and uncommented the {{puppetlabs.trapperkeeper.services.metrics.metrics-service/metrics-webservice}} line, then puppetserver restarted successfully.\n\n\nI'm not sure what could have modified it yet. Also, just as a side note I noticed that there was no {{web-routes.conf.rpmnew}} present after the upgrade.\n\n\nThanks!", "created": "2017-07-02T14:43:00.000000"}, {"author": "557058:c939efdc-9cc2-41be-b28c-6e8fc86fca71", "body": "I just tracked down what removed the metrics-webservice after finding that the changes were reverted again after a puppet-agent run.\n\nThe latest version of theforeman-puppet module on the Forge (currently 7.1.1), manages the {{web-routes.conf}}. It looks like this is already being addressed as management of the file has been removed altogether in the commit below on the master branch:\n\nhttps://github.com/theforeman/puppet-puppet/commit/9c5e77cbe26fc3a800f25d6266384a488df9cc63", "created": "2017-07-02T19:59:00.000000"}], "components": ["Puppet Server"], "created": "2017-07-02T11:20:00.000000", "creator": "557058:c939efdc-9cc2-41be-b28c-6e8fc86fca71", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39c3febb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzf46n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_258692706_*|*_5_*:*_1_*:*_0"}], "description": "After upgrading all Puppet packages from the latest public 4.x release (puppetserver-2.7.2) to Puppet 5.x (puppetserver-5.0.0), I received the following error when attempting to start the puppetserver service:\n\n\n\n{code:java}\n2017-07-01 20:27:34,450 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\njava.lang.IllegalArgumentException: service :puppetlabs.trapperkeeper.services.metrics.metrics-service/metrics-webservice does not appear in configuration\n        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\n        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\n        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\n        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)\n        at clojure.lang.Reflector.invokeConstructor(Reflector.java:180)\n        at puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$get_endpoint_and_server_from_config.invokeStatic(webrouting_service_core.clj:54)\n        at puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$get_endpoint_and_server_from_config.invoke(webrouting_service_core.clj:38)\n        at puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$get_route.invokeStatic(webrouting_service_core.clj:99)\n        at puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$get_route.invoke(webrouting_service_core.clj:96)\n        at puppetlabs.trapperkeeper.services.webrouting.webrouting_service$reify__34668$service_fnk__5261__auto___positional$reify__34676.get_route(webrouting_service.clj:37)\n        at puppetlabs.trapperkeeper.services.webrouting.webrouting_service$eval34398$fn__34562$G__34382__34568.invoke(webrouting_service.clj:10)\n        at puppetlabs.trapperkeeper.services.webrouting.webrouting_service$eval34398$fn__34562$G__34381__34575.invoke(webrouting_service.clj:10)\n        at clojure.core$partial$fn__4759.invoke(core.clj:2515)\n        at puppetlabs.trapperkeeper.services.metrics.metrics_service$reify__39318$service_fnk__5261__auto___positional$reify__39329.init(metrics_service.clj:64)\n        at puppetlabs.trapperkeeper.services$eval5063$fn__5064$G__5051__5067.invoke(services.clj:8)\n        at puppetlabs.trapperkeeper.services$eval5063$fn__5064$G__5050__5071.invoke(services.clj:8)\n        at puppetlabs.trapperkeeper.internal$eval13831$run_lifecycle_fn_BANG___13838$fn__13839.invoke(internal.clj:204)\n        at puppetlabs.trapperkeeper.internal$eval13831$run_lifecycle_fn_BANG___13838.invoke(internal.clj:187)\n        at puppetlabs.trapperkeeper.internal$eval13860$run_lifecycle_fns__13865$fn__13866.invoke(internal.clj:238)\n        at puppetlabs.trapperkeeper.internal$eval13860$run_lifecycle_fns__13865.invoke(internal.clj:215)\n        at puppetlabs.trapperkeeper.internal$eval14330$build_app_STAR___14339$fn$reify__14349.init(internal.clj:588)\n        at puppetlabs.trapperkeeper.internal$eval14376$boot_services_for_app_STAR__STAR___14383$fn__14384$fn__14386.invoke(internal.clj:616)\n        at puppetlabs.trapperkeeper.internal$eval14376$boot_services_for_app_STAR__STAR___14383$fn__14384.invoke(internal.clj:615)\n        at puppetlabs.trapperkeeper.internal$eval14376$boot_services_for_app_STAR__STAR___14383.invoke(internal.clj:609)\n        at clojure.core$partial$fn__4761.invoke(core.clj:2521)\n        at puppetlabs.trapperkeeper.internal$eval13899$initialize_lifecycle_worker__13910$fn__13911$fn__13997$state_machine__11871__auto____13998$fn__14000.invoke(internal.clj:255)\n        at puppetlabs.trapperkeeper.internal$eval13899$initialize_lifecycle_worker__13910$fn__13911$fn__13997$state_machine__11871__auto____13998.invoke(internal.clj:255)\n        at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:1012)\n        at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:1011)\n        at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:1016)\n        at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:1014)\n        at clojure.core.async$ioc_alts_BANG_$fn__12039.invoke(async.clj:383)\n        at clojure.core.async$do_alts$fn__11985$fn__11988.invoke(async.clj:252)\n        at clojure.core.async.impl.channels.ManyToManyChannel$fn__6795$fn__6796.invoke(channels.clj:95)\n        at clojure.lang.AFn.run(AFn.java:22)\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n        at java.lang.Thread.run(Thread.java:748)\n2017-07-01 20:27:34,476 INFO  [main] [p.t.internal] Beginning shutdown sequence\n{code}\n\n\n\nThough I understand the file below is not intended to be tampered with, I found that after commenting out the metrics-webservice in the bootstrap.cfg, then the puppetserver successfully started:\n\n\n{code:bash}\n// /opt/puppetlabs/server/apps/puppetserver/config/services.d/bootstrap.cfg\n#puppetlabs.trapperkeeper.services.metrics.metrics-service/metrics-webservice\n{code}", "environment": "os => {\n  architecture => \"x86_64\",\n  family => \"RedHat\",\n  hardware => \"x86_64\",\n  name => \"CentOS\",\n  release => {\n    full => \"7.3.1611\",\n    major => \"7\",\n    minor => \"3\"\n  },\n\nPackages:\nrpm -qa | grep puppet\npuppetdb-termini-5.0.1-1.el7.noarch\npuppetdb-5.0.1-1.el7.noarch\npuppet-agent-oauth-0.5.1-3.el7.noarch\ntfm-rubygem-puppetdb_foreman-3.0.2-1.fm1_15.el7.noarch\npuppet5-release-5.0.0-1.el7.noarch\npuppetserver-5.0.0-1.el7.noarch\npuppet-agent-5.0.0-1.el7.x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16230", "fixedVersions": [], "id": "16230", "issueType": "Bug", "key": "SERVER-1876", "labels": ["puppet-server"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c939efdc-9cc2-41be-b28c-6e8fc86fca71", "resolution": "Won't Do", "resolutionDate": "2017-07-05T11:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Error When Starting Puppet Server 5 - metrics-webservice", "timeSpent": "PT0S", "updated": "2018-03-26T15:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "61b104456d002b006b47d72c", "attachments": [{"attacher": "623a4aca562ab90069f7e460", "created": "2021-04-14T05:50:00.000000", "name": "dedupe_crl.py", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10715"}], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Thanks, [~accountid:557058:f23b0b7f-9386-48b3-bd71-4399766356f4], yes this is caused because we do not write to the file atomically. So it is entirely likely for multiple writers to interleave, causing the kind of corruption described here and in PUP-2189. I'm going to close this as a dup of the earlier ticket.", "created": "2017-06-30T15:50:00.000000"}, {"author": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "body": "[~accountid:63d40628f6e1b543161789a7] Just a clarification, the duplicate entries can be produced without multiple writers though.  It occurs simply by attempting to purge a certificate name that has already been revoked. ", "created": "2017-06-30T16:41:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Sorry, yeah this is a different issue. The {{puppet node clean}} command calls {{puppet cert clean}} which will revoke already revoked certs:\n\n{noformat}\n[root@ma9lddhbmxqglv2 ~]# puppet cert generate foobar\nNotice: Signed certificate request for ca\nNotice: foobar has a waiting certificate request\nNotice: Signed certificate request for foobar\nNotice: Removing file Puppet::SSL::CertificateRequest foobar at '/etc/puppetlabs/puppet/ssl/ca/requests/foobar.pem'\nNotice: Removing file Puppet::SSL::CertificateRequest foobar at '/etc/puppetlabs/puppet/ssl/certificate_requests/foobar.pem'\n[root@ma9lddhbmxqglv2 ~]# puppet cert clean foobar\nNotice: Revoked certificate with serial 2\nNotice: Removing file Puppet::SSL::Certificate foobar at '/etc/puppetlabs/puppet/ssl/ca/signed/foobar.pem'\nNotice: Removing file Puppet::SSL::Certificate foobar at '/etc/puppetlabs/puppet/ssl/certs/foobar.pem'\nNotice: Removing file Puppet::SSL::Key foobar at '/etc/puppetlabs/puppet/ssl/private_keys/foobar.pem'\n[root@ma9lddhbmxqglv2 ~]# puppet cert clean foobar\nNotice: Revoked certificate with serial 2\n[root@ma9lddhbmxqglv2 ~]# puppet cert clean foobar\nNotice: Revoked certificate with serial 2\n[root@ma9lddhbmxqglv2 ~]# openssl crl -in /etc/puppetlabs/puppet/ssl/crl.pem -noout -text\nCertificate Revocation List (CRL):\n        Version 2 (0x1)\n    Signature Algorithm: sha1WithRSAEncryption\n        Issuer: /CN=Puppet CA: ma9lddhbmxqglv2.delivery.puppetlabs.net\n        Last Update: Jun 30 23:21:33 2017 GMT\n        Next Update: Jun 29 23:21:34 2022 GMT\n        CRL extensions:\n            X509v3 Authority Key Identifier:\n                keyid:A3:67:5B:F5:31:E2:CF:5B:C9:81:A4:1E:03:9B:D6:85:31:61:59:57\n\n            X509v3 CRL Number:\n                4\nRevoked Certificates:\n    Serial Number: 02\n        Revocation Date: Jun 30 23:21:19 2017 GMT\n        CRL entry extensions:\n            X509v3 CRL Reason Code:\n                Key Compromise\n    Serial Number: 02\n        Revocation Date: Jun 30 23:21:30 2017 GMT\n        CRL entry extensions:\n            X509v3 CRL Reason Code:\n                Key Compromise\n    Serial Number: 02\n        Revocation Date: Jun 30 23:21:32 2017 GMT\n        CRL entry extensions:\n            X509v3 CRL Reason Code:\n                Key Compromise\n{noformat}\n\nThis is probably just a bug in the {{cert}} application that it shouldn't revoke already revoked certs (in the CRL).\n", "created": "2017-06-30T17:24:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This should be done in both Puppet Server (threaded through to jvm-ssl-utils) in addition to Puppet.", "created": "2017-11-22T16:11:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "Yes, just run into this via SERVER-115 and PUP-2569 and associates. I now have a 8.5 MB CRL that contains ~ 180,000 individual revocations and as many as ~ 500 duplicate revocations for specific certificate serial numbers. I've used {{puppet cert reinventory}} to clean down {{inventory.txt}} so most of the old certificate serials are forgotten. Is it possible to rebuild the CRL and de-dupe it to just contain one of each serial number as I'm continually hitting the problem documented in SERVER-115 whereby any time I perform a {{puppet node clean}} it triggers a CRL rebuild that causes issues for any other connecting client(s), the size of the CRL can't not be contributing to this so the smaller I can make it the better.", "created": "2017-12-20T05:11:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "{{puppetserver ca revoke}} will revoke already revoked certificates, so moving this to SERVER project.\n\n{noformat}\n$ ./bin/puppetserver ca revoke --certname agent-66\nRevoked certificate for agent-66\n$ ./bin/puppetserver ca revoke --certname agent-66\nRevoked certificate for agent-66\n$ ./bin/puppetserver ca revoke --certname agent-66\nRevoked certificate for agent-66\n$ ./bin/puppetserver ca revoke --certname agent-66\nRevoked certificate for agent-66\n$ openssl crl -in /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem -noout -text\n...\n    Serial Number: 6B\n        Revocation Date: Mar 29 03:44:40 2019 GMT\n        CRL entry extensions:\n            X509v3 CRL Reason Code:\n                Key Compromise\n    Serial Number: 6B\n        Revocation Date: Mar 29 03:44:43 2019 GMT\n        CRL entry extensions:\n            X509v3 CRL Reason Code:\n                Key Compromise\n    Serial Number: 6B\n        Revocation Date: Mar 29 03:44:45 2019 GMT\n        CRL entry extensions:\n            X509v3 CRL Reason Code:\n                Key Compromise\n    Serial Number: 6B\n        Revocation Date: Mar 29 03:44:47 2019 GMT\n        CRL entry extensions:\n            X509v3 CRL Reason Code:\n                Key Compromise\n{noformat}", "created": "2019-03-28T21:51:00.000000"}, {"author": "623a4aca562ab90069f7e460", "body": "We've run into issues due to this when migrating our CA from Puppet 4 to Puppet 7:\n\nThe CRL at the time was 14MB, containing ~300k revoked serials, on the Puppet 4 CA we had started running into SERVER-2565, resulting in a 0 byte CRL.\n\nWhile testing I noticed that with that CRL, the Puppet 7 CA/server was much slower than the Puppet 4 CA", "created": "2021-04-14T05:55:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "[~accountid:623a4aca562ab90069f7e460]\u00a0thank you for the script. I've run this on our Puppet CA and it has reduced it a bit:\n{noformat}\n$ for crl in crl.pem new_crl.pem", "created": "2021-04-16T05:21:00.000000"}], "components": [], "created": "2017-06-30T10:50:00.000000", "creator": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ac9980f"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "5 - $$$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "2 - 5-25% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This is causing problems with a number of very large scale customers. The way the CRL is handled is very inefficient."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Rank", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "16000.0"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2998"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykebj:4090000694a942zy"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously the Puppet CA would add duplicate CRL entries.  After the fix, we prevent duplicate entries and thus keep the CRL smaller.  "}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_518516475_*|*_1_*:*_1_*:*_18020259_*|*_10007_*:*_1_*:*_5618077_*|*_3_*:*_1_*:*_908218786_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_5602018_*|*_10006_*:*_3_*:*_102380644999_*|*_10005_*:*_3_*:*_25850670974"}], "description": "Using the 'puppet node purge' command it is possible to put duplicate revoked certificates in Puppet's CRL.  For example:\n\n{noformat}\n# puppet cert generate testcert\nNotice: testcert has a waiting certificate request\nNotice: Signed certificate request for testcert\n{noformat}\n\nNow purge the node / certificate:\n\n{noformat}\npuppet node purge testcert\nNotice: Revoked certificate with serial 650\nNotice: Removing file Puppet::SSL::Certificate testcert at '/etc/puppetlabs/puppet/ssl/ca/signed/testcert.pem'\nNotice: Removing file Puppet::SSL::Certificate testcert at '/etc/puppetlabs/puppet/ssl/certs/testcert.pem'\nNotice: Removing file Puppet::SSL::Key testcert at '/etc/puppetlabs/puppet/ssl/private_keys/testcert.pem'\nNode \"testcert\" was purged.\n{noformat}\n\nBut if we purge it again...\n\n{noformat}\npuppet node purge testcert\nNotice: Revoked certificate with serial 650\n{noformat}\n\nYou can see that additional lines are added by looking at the output before / after the purge:\n\n{noformat}\nopenssl crl -in ca_crl.pem -noout -text | grep Serial | wc -l\n{noformat}\n\nI suspect that PUP-2189 might contribute to this.  I also suspect that the larger a CRL file gets the more likely it is to become corrupted, as it takes longer to hold open the file and add a long list of redundant serial numbers.\n\n*Outcomes*\n* Attempting to revoke a cert whose serial number is already in the CRL should be a no-op.\n* Include an output message when the above is attempted (probably INFO level).\n\n*Implementation notes*\n* want to check the performance when making sure we're not adding a duplicate serial. This is especially important for the batch revoke endpoint, to make sure it doesn't get super slow when revoking a lot of certs at once (the whole point of that endpoint was to be fast).", "epicLinkSummary": "Fix duplicate entries in CRLs", "estimate": "PT0S", "externalId": "17358", "fixedVersions": ["SERVER 6.17.0", "SERVER 7.3.0"], "id": "17358", "issueType": "Bug", "key": "SERVER-2509", "labels": ["ca", "docs-reviewed", "froyo_intern"], "originalEstimate": "PT0S", "parent": "15171", "parentSummary": "Fix duplicate entries in CRLs", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f23b0b7f-9386-48b3-bd71-4399766356f4", "resolution": "Fixed", "resolutionDate": "2021-08-09T11:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prevent duplicate entries in Puppet CA's CRL", "timeSpent": "PT0S", "updated": "2021-08-10T16:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2017-06-30T10:48:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c333d74"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzf2yf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_347698272_*|*_1_*:*_1_*:*_15402_*|*_10007_*:*_1_*:*_509784348_*|*_3_*:*_1_*:*_29401071_*|*_5_*:*_1_*:*_0"}], "description": "We have a gatling-puppet-load-test job called [oss-puppetserver-stable|https://github.com/puppetlabs/gatling-puppet-load-test/blob/489c23f58d50e11795990f2de876842484cc52d4/jenkins-integration/jenkins-jobs/scenarios/oss-puppetserver-stable/Jenkinsfile#L11] which is configured to run against the puppetserver stable branch.  As of today, that branch no longer exists.  We should update the job to work with the new 2.x and 5.0.x branches.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17200", "fixedVersions": [], "id": "17200", "issueType": "Task", "key": "SERVER-1875", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-07-10T17:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change oss-puppetserver-stable gatling job to work with 2.x / 5.0x branches", "timeSpent": "PT0S", "updated": "2017-07-10T17:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "9.1.14.0 has been released since this ticket was made, so lets move to that version.", "created": "2017-11-29T16:46:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Something changed with racc between 9.1.12.0 and 9.1.13.0 that has caused racc to spew debug info everywhere. I tracked it down to this commit: https://github.com/jruby/jruby/commit/baeaad12f32842a5b714c463558feeb2f7b34c0b#diff-df676ae7e31e30355063432f8c0e53c3, but I haven't yet figured out what is happening.", "created": "2017-11-30T13:46:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] And I have been pairing on this some. We've narrowed it down quite a bit. I'll add some details here tomorrow.", "created": "2017-11-30T18:18:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I've opened https://github.com/jruby/jruby/pull/4881 to get the racc issue resolved. The longer story is there in the commit message. The C racc parser conditionally emits debug info based on whether or not it was compiled with the DEBUG flag, and the ruby parser ignores the debug argument entirely. The java racc parser decides whether or not to emit debug info based on the argument passed into its racc_yyparse_c method, which changed to always be true instead of always be false.", "created": "2017-12-01T15:01:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "https://gist.github.com/haus/9c2edbe3a00ebc192af5e1f24c1d0069 is an example of the generated output.", "created": "2017-12-01T15:02:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] Since the racc bug is fixed, can we do this? also -- the ticket doc says upgrade to 9.1.15.0, did we want that instead?", "created": "2017-12-06T11:33:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] I think we should update the ticket to say 9.1.15.0 and i'll probably kick it out of the sprint into the hopper until the 9.1.15.0 release is available (unless we wanted to try to update to a snapshot version, which i don't think we should yet).", "created": "2017-12-06T15:37:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I moved this into blocked and kicked it out of the sprint.", "created": "2017-12-06T17:02:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "9.1.15.0 has been released, so this is now unblocked assuming nothing else is broken", "created": "2017-12-08T16:42:00.000000"}], "components": [], "created": "2017-06-29T18:30:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43dd2b91"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymavr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_491849829_*|*_10007_*:*_1_*:*_416482360_*|*_3_*:*_2_*:*_860685945_*|*_5_*:*_1_*:*_4996658590_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_171636594_*|*_10006_*:*_2_*:*_12986212374"}], "description": "JRuby 9.1.12.0 has a fix for an issue that would sometimes cause gems to fail to install properly, and 9.1.15.0 should include the fix for the racc debug printing issue we were seeing.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15386", "fixedVersions": ["SERVER 5.2.0"], "id": "15386", "issueType": "Task", "key": "SERVER-1874", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2018-02-15T07:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade to JRuby 9.1.15.0", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-06-27T18:08:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@479c63c2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Trust store improvements for HTTP client connections"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbon:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_54941509009_*|*_6_*:*_1_*:*_0"}], "description": "This epic captures a few items related to improving support for how trust stores are used to validate the server for any HTTP client connections that a Puppet agent or server would make.  This includes the ability to control whether or not the full \"system\" truststore, e.g., the common root CA certificate bundle shipped with the linux ca-certificates package, should be considered for a given HTTP client connection - see SERVER-1543 and PUP-5069.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15385", "fixedVersions": [], "id": "15385", "issueType": "Epic", "key": "SERVER-2152", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2019-03-25T15:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Trust store improvements for HTTP client connections", "timeSpent": "PT0S", "updated": "2021-08-23T10:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged to puppetlabs-puppetserver_perf_driver at [ef7ab8f|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_driver/commit/ef7ab8fe4bad90feee3e9b69a2ec52922ecf1f8b] and rolled out to the puppet managed perf driver nodes in the puppetlabs-modules repo at [3baaa9|https://github.com/puppetlabs/puppetlabs-modules/commit/3baaa9913a37d2c943d26cd990b394b4c949eda3].  Marking this resolved.", "created": "2017-06-28T17:10:00.000000"}], "components": [], "created": "2017-06-27T14:44:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33ec0f87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzezgn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5973_*|*_10007_*:*_2_*:*_31235803_*|*_3_*:*_1_*:*_63906312_*|*_5_*:*_1_*:*_0"}], "description": "Per the work being done in SERVER-1861 to upgrade our gatling-puppet-load-test environment to the use of Gatling 2.2.5, we'll also need to ensure that Java 8 is configured on both our dev and production Gatling drivers.  The newer Gatling versions have moved from Java 7 to Java 8 as a minimum requirement.  This ticket would involve updating our puppetized Gatling driver setup code to ensure that Java 8 is being setup properly.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16552", "fixedVersions": [], "id": "16552", "issueType": "Task", "key": "SERVER-1871", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2017-06-28T17:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Install java 8 for gatling driver", "timeSpent": "PT0S", "updated": "2017-06-28T17:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "based upon conversation with [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7]:\n\nat some regular cadence (daily):\nfind latest passing puppet component SHA:\n(something like https://github.com/er0ck/dotfiles/blob/master/shell/aliases#L150-L167)\n{code}\n# get latest agent sha given component branch name\nget_latest_sha() {\n  if [ $# -lt 1 ]", "created": "2017-06-29T15:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "If we do the bumping of the Puppet submodule in a job which is separate from the logic that Puppet Server uses to find the latest puppet-agent package to install, which is done [here|https://github.com/puppetlabs/puppetserver/blob/fb4e4c6d5b3571831637fca0b19d951079321fe0/acceptance/suites/pre_suite/foss/00_setup_environment.rb#L4-L8], do we run the risk that the version of Puppet tests that we run from the submodule might not be in sync with the puppet-agent package?  To mitigate that risk, would it make sense to have this CI job not only bump the submodule commit but bump the puppet-agent [pins|https://github.com/puppetlabs/puppetserver/blob/fb4e4c6d5b3571831637fca0b19d951079321fe0/acceptance/lib/helper.rb#L28-L36] that the Puppet Server has for the agent package as well?", "created": "2017-06-29T15:53:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "sounds good to me.\n\n[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] you had mentioned this should only run about once a day.  we could try to figure out if it's a daily job in the pre-suite, but that seems like a smell.  thoughts?", "created": "2017-06-30T10:59:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "we also decided, via hipchat this should be a rake task such that it can be run locally.  the ci job can use the rake task.", "created": "2017-06-30T15:31:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "leaving this in merging as there are two other PRs to merge against it.", "created": "2017-07-17T14:49:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged up to puppetserver/master at https://github.com/puppetlabs/puppetserver/commit/26233c11c67342344207d44002ccef6a00094f25", "created": "2017-07-18T14:12:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "ci-job-configs change merged to master at https://github.com/puppetlabs/ci-job-configs/commit/653485d01cdf8896c6c03965d75d3ee2f856bb06", "created": "2017-07-18T14:18:00.000000"}], "components": [], "created": "2017-06-27T11:54:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24b3644"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1832"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8mhz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_83794164_*|*_1_*:*_1_*:*_17279234_*|*_10007_*:*_3_*:*_407909143_*|*_3_*:*_1_*:*_1217044535_*|*_10009_*:*_1_*:*_12116375_*|*_5_*:*_1_*:*_4917960449_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_168641972"}], "description": "We need to automatically update the Puppet submodule version to track the latest version of the Puppet agent in order to run the latest versions of the Puppet acceptance test. This should be done by creating a nightly CI job that checks if a submodule version bump is suitable (Puppet code has changes) and can be done (Puppet acceptance tests are passing). If the criteria are met then CI should bump and push the submodule commit.", "epicLinkSummary": "Tooling & preparation for monthly external Server release cadence", "estimate": "PT0S", "externalId": "16550", "fixedVersions": ["SERVER 5.1.0"], "id": "16550", "issueType": "Task", "key": "SERVER-1870", "labels": [], "originalEstimate": "PT0S", "parent": "16225", "parentSummary": "Tooling & preparation for monthly external Server release cadence", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-07-19T13:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add CI job for automatically bumping puppet submodule commit", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-06-26T18:22:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a369958"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzexrr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_80331104_*|*_10007_*:*_1_*:*_7203192_*|*_3_*:*_1_*:*_1228459_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1199587782"}], "description": "We have lingering CI configurations for Puppetserver 1.x in the ci-job-configs page as well as the Waylon radiator page. Since we're unlikely to do any 1.x releases we can remove them; if we have to cut a new release we can resurrect that configuration by reverting the deletion commits.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17199", "fixedVersions": [], "id": "17199", "issueType": "Task", "key": "SERVER-1869", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Done", "resolutionDate": "2017-07-11T16:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Puppetserver 1.x CI jobs", "timeSpent": "PT0S", "updated": "2017-07-24T16:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Pretty sure this is not going to happen.", "created": "2017-09-21T17:15:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "A shared cache would be a huge win in RAM usage if we could get it working. Seems like the result of parsing Puppet Manifests could be stable enough to share. Also, Ruby 2.3 introduced the ability to dump and load ruby bytecode which JRuby 9000 might give us access to:\n\nhttps://github.com/Shopify/bootsnap/tree/v1.1.3#compilation-caching", "created": "2017-09-25T12:44:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Agreed, implementing something like this would theoretically allow us to run Puppet Server on 512 - 1024MB of heap instead of 512MB * num jrubies.  \n\nI think there are reasons to believe this is possible.  ", "created": "2017-09-25T13:53:00.000000"}], "components": [], "created": "2017-06-26T13:44:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b12a690"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1203"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzeymv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_98047575_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_7431417177"}], "description": "One of the more expensive uses of memory for JRubies running under Puppet Server is the caching of data parsed from Puppet code for directory environments.  In many cases, we end up caching what is likely the same / very similar data for the same environment across multiple JRubies in the server runtime.  It would be interesting to see if it were viable to create a global environment data cache which can be stored to / read from across all of the JRuby instances that Puppet Server is managing.  I don't currently have a good sense of what issues may arise just from exchanging objects created under one JRuby ScriptingContainer in another ScriptingContainer.  This ticket would start as an exploration into whether the idea is feasible and, if so, could spawn additional implementation tickets.", "epicLinkSummary": "Performance Optimization", "estimate": "PT0S", "externalId": "15997", "fixedVersions": [], "id": "15997", "issueType": "Task", "key": "SERVER-1868", "labels": [], "originalEstimate": "PT0S", "parent": "14701", "parentSummary": "Performance Optimization", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2017-09-21T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate sharing environment cache across JRubies", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] and I are pairing on this", "created": "2017-06-26T11:27:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "The appropriate commits have been merged into the {{acceptance_audit}} topic branch on the {{puppet}} repo. Next steps are:\n\n# Merge-up {{acceptance_audit}} to {{master}}\n## Leave {{acceptance_audit}} branch in place until [~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] has worked out progress tooling\n# Add {{--test-tag-and server}} to the puppetserver acceptance CI pipeline Beaker invocations\n# Add {{--test-tag-exclude server}} to the puppet and puppet-agent acceptance CI pipeline Beaker invocations\n\n[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], does this course of action match your expectations?", "created": "2017-07-10T00:50:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] Yes, that matches my expectations.\n\nIs there any ceremony wrt to merging into master? I assume one can just open a PR?\n\nI've created SERVER-1879 for the server side of CI updates (I can create a PUP one as well if you'd like).", "created": "2017-07-10T09:51:00.000000"}], "components": [], "created": "2017-06-26T10:45:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6cce77e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8mif:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2497057_*|*_10007_*:*_1_*:*_308205931_*|*_3_*:*_1_*:*_862808248_*|*_10009_*:*_1_*:*_645896493_*|*_5_*:*_1_*:*_0"}], "description": "Tag beaker acceptance tests in the puppet, puppetserver, and pe-puppet-server-extensions.\n\nTag with high, medium, or low risk.\nTag with \"refactor\" if we should evaluate whether or not to move into a non-beaker integration test (clojure tk, or ruby spec).\nTag with \"server\" if test requires a running server (and should be ran within the puppetserver pipeline/excluded in the puppet pipeline).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14726", "fixedVersions": [], "id": "14726", "issueType": "Task", "key": "SERVER-1867", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-07-17T12:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Audit Acceptance Tests", "timeSpent": "PT0S", "updated": "2017-07-17T12:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] Can you review these?", "created": "2017-07-14T11:10:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to 2.x at https://github.com/puppetlabs/puppetserver/commit/6a233e5cfbfe71fb5289a1f9c3dbd90f969133e7", "created": "2017-07-19T15:35:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] We'll be promoting a voom build today, but will need another promotion following the actual FOSS release.", "created": "2017-07-20T10:59:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This ended up getting reverted due to some oddness around java 7. I believe there is some conversation happening in TK-149 about how to move it forward.", "created": "2017-07-27T14:49:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "New PR up to server 2.x to optionally reload crl based on presence of fs watcher in bootstrap.cfg, disabled by default", "created": "2017-08-07T12:23:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "A separate PE issue, https://puppet.atlassian.net/browse/PE-21894, will track ensuring the bootstrap.cfg lists the file system watcher service in PE ", "created": "2017-08-07T12:27:00.000000"}], "components": [], "created": "2017-06-23T18:24:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4daf8725"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automate"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyll5z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_618082029_*|*_1_*:*_1_*:*_339681520_*|*_10007_*:*_2_*:*_2573811377_*|*_3_*:*_1_*:*_320065866_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_438977826_*|*_10006_*:*_1_*:*_1389353739"}], "description": "When certificate revocation actions are performed on the server, the file corresponding to the Puppet [cacrl|https://docs.puppet.com/puppet/latest/configuration.html#cacrl] file is updated.  During CA service initialization at the next service startup, there is some logic which copies the cacrl file to the file corresponding to the [hostcrl setting|https://github.com/puppetlabs/puppetserver/blob/2.7.2/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L744-L752].  In order to facilitate the ability for the CRL file to be updated at runtime -- without requiring a reload / restart of Puppet Server -- this ticket proposes the following:\n\n1) Use the [trapperkeeper-filesystem-watcher|https://github.com/puppetlabs/trapperkeeper-filesystem-watcher] service to listen for changes to the cacrl file.\n\n2) On receipt of a change, invoke the logic to copy the content of the cacrl file to the file at the hostcrl setting.\n\nThis ticket would enable the work being done for TK-149 to refresh the CRL file being used by the Jetty webserver at runtime.  Note that the work in this ticket would not be particularly useful without the work for TK-149 being in place first, so it would probably be best to start with TK-149.\n\nAs a further optimization, we may consider adding functionality to the trapperkeeper-webserver-jetty9 API which would allow a consuming service like Puppet Server's certificate authority service to prod Jetty's CRL file to be reloaded.  This may not be needed, though, if Puppet Server's CA has a listener for updates to the cacrl file and trapperkeeper-webserver-jetty9 has a listener for updates to the file given to it as the {{ssl-crl-path}}, which would ideally correspond to the {{hostcrl}} setting used by Puppet Server.\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16837", "fixedVersions": ["SERVER 2.8.0"], "id": "16837", "issueType": "Task", "key": "SERVER-1866", "labels": ["AWS1"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-08-28T12:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Copy cacrl to hostcrl file immediately after cacrl file changes - Server 2.x", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-07-31T10:49:00.000000", "name": "Screen Shot 2017-07-31 at 9.48.43 AM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11277"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-07-31T10:50:00.000000", "name": "Screen Shot 2017-07-31 at 9.50.00 AM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11208"}], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "During this testing, I ran a variety of scenarios. Here I'll summarize the interesting results. For the raw data, see https://docs.google.com/spreadsheets/d/11gasaTM30OdDEgNYqqU9l1lM5QG6v4UQew4YD0Zifdo/edit#gid=0\n\nh2. tl", "created": "2017-07-31T10:55:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0], should this be assigned to a particular individual responsibly for the review?", "created": "2017-07-31T12:53:00.000000"}], "components": [], "created": "2017-06-23T10:55:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6478cf54"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylokv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_367115767_*|*_3_*:*_1_*:*_1108029049_*|*_10009_*:*_1_*:*_782457603_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1808022771_*|*_10005_*:*_2_*:*_41577"}], "description": "Now that we have jruby 9k integrated with puppetserver, there are some performance tuning questions we'd like to answer using gatling. Using this ticket as a dumping ground for ideas. Depending on the work involved we might need to split them into new tickets.\n\n9k jobs we'd like to run:\n\n* jruby-puppet.compile-mode: jit vs. force vs. off.\n* Different java garbage collectors: at least Parallel GC vs. G1 GC.\n* [JRuby compile.invokedynamic|https://github.com/jruby/jruby/wiki/PerformanceTuning#enabling-invokedynamic]: true vs. false.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16229", "fixedVersions": [], "id": "16229", "issueType": "Task", "key": "SERVER-1864", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2017-08-09T12:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Jruby 9k gatling testing", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-06-22T13:03:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b359815"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzeu27:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_81601434_*|*_1_*:*_1_*:*_6825_*|*_10007_*:*_1_*:*_1240789_*|*_3_*:*_1_*:*_342487988_*|*_6_*:*_1_*:*_0"}], "description": "When Puppetserver 5.0 is released we'll need to merge master into stable, but right now our CI pipelines for the stable branch are meant for Puppetserver 2.x. In order to release Puppetserver 5 while allowing for Puppetserver 2.x bugfix releases we need a new branch for 2.x, matching pipelines for 2.x, and updated CI jobs for the Puppetserver stable branch.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15110", "fixedVersions": [], "id": "15110", "issueType": "Task", "key": "SERVER-1863", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-27T11:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add CI pipelines for Puppetserver 2.x branch", "timeSpent": "PT0S", "updated": "2017-06-27T11:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2017-06-22T12:36:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e170738"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzeu1j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_117749_*|*_10007_*:*_1_*:*_436130943_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11950660"}], "description": "Per SERVER-1831, we now have a way for OSS jobs to specify the {{agent_version}} that a gatling job should use, where {{latest}} (the default if not specified) currently means that the last released version of puppet-agent (e.g., 1.10.2) be used.  We have a need now, though, to be able to run gatling jobs where the latest available puppet-agent nightly build is used instead, e.g., for pre-release testing.  For this ticket, we would try to change the definition of {{latest}} to mean \"latest good nightly\" vs. {{latest-release}} meaning the last puppet-agent release.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16836", "fixedVersions": [], "id": "16836", "issueType": "Task", "key": "SERVER-1862", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2017-06-27T17:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support latest vs. latest-release for agent_version in OSS gatling jobs", "timeSpent": "PT0S", "updated": "2017-06-27T17:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I carved off SERVER-1871 for the specific work needed to ensure that Java 8 is installed properly for the Gatling driver setup.", "created": "2017-06-27T14:45:00.000000"}], "components": [], "created": "2017-06-20T16:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@55a88545"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9ny7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3690800_*|*_10007_*:*_2_*:*_1173747967_*|*_3_*:*_2_*:*_106932881_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_515938738"}], "description": "In trying to take recordings of Puppet 5 agents talking to Puppet Server 5 masters, we've found that several of the request headers that the agent sends through the Gatling proxy recorder do not end up in the .scala file that the recorder generates.  We're currently using gatling version 2.1.7, which is nearly two years old now.  I upgraded to gatling version 2.2.5 locally and found that in a gatling recording I took, the headers which were missing from the 2.1.7-based recording appeared to be in place.\n\nThis ticket would involve upgrading gatling-puppet-load-test to use version 2.2.5.  In the process of doing the upgrade, we should ensure that the recording and playback all works properly on the new version.  We should also take a look at our existing recordings in the repo to ensure that they all work properly on the new version or, where they don't, take new ones that will work properly.\n\nOne special thing to look for is that the Gatling 2.2 series appears to require the use of JDK 8 as a minimum.  I'm not sure if JDK 7 is being used in either or dev or production gatling environments currently but we'd need to look into that.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16548", "fixedVersions": [], "id": "16548", "issueType": "Task", "key": "SERVER-1861", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-07-11T12:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate gatling-puppet-load-test upgrade to Gatling 2.2.5", "timeSpent": "PT0S", "updated": "2017-07-11T12:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] Can you tell us what's happening with customers that makes you suspect there would be significant upside to doing this?", "created": "2017-06-20T17:01:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c]  When you are deciding how many jrubies to allocate inside of Puppetserver there is very fuzzy math to decide.  The default is CPUs -1 and that's a reasonable default but if you happen to serve a lot of file resource then you probably have to increase the number of JRubies beyond the number of CPUs you have because catalog compiliation is very CPU intensive but service files costs almost no CPU and spends its time waiting on disk for the file.  \n\nSo, we have two types of tasks that have opposite resource usage profiles but they are conflated together.  If I have 12 Jrubies and on average 4 of them are serving files then I'm wasting RAM storing puppet code in the 4 that serve files.  We estimate a need for 512MB of RAM ( but some customer needs much more if they have a lot of puppet code ) for each JRuby.  In this scenario I'm wasting 2GB of the 6GB heap on these file serving JRubies because I can't segregate them out.  \n\nIn reality we see more problematic situations where the customer has 16 JRubies and 30GB of heap.  They need more JRubies to saturate the CPU but they are already maxed out on RAM and thus can't reach the full potential of their Puppetserver.  \n\nTo try to summarize, file serving is not CPU intensive and requires little RAM but needs to wait on disk to complete.  Catalog compilation is CPU intensive and needs lots of RAM.  When these two tasks draw from the same resource pool ( JRubies ) you end up having file serving, which should be a low resource activity, turn into a high resource activity because it ends up eating through RAM ( because the same JRuby needs to be able to compile a catalog or serve files ).  ", "created": "2017-06-20T17:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] We've talked a fair amount over the years about the idea of doing a pure Clojure implementation of file serving to replace the Ruby Puppet-based implementation. One of the reasons I think we held off on doing this was that we were expecting that the [static catalogs|https://docs.puppet.com/puppet/4.10/static_catalogs.html] feature might alleviate the need for it.  With static catalogs enabled, the Ruby Puppet code, during catalog compilation, inlines file metadata for various file resources that the agent needs when it applies its catalog.\n\nTo obtain file content, the agent makes a call to the [static_file_content|https://docs.puppet.com/puppet/4.10/static_catalogs.html#configuring-codeid-and-the-staticfilecontent-endpoint] endpoint.  The implementation of this endpoint is in pure-Clojure and does not require borrowing or executing code in a JRuby instance.\n\nFor cases where the agent has already downloaded the latest version of a file - where the checksum returned in the catalog response matches the one the agent has previously applied - the agent should not make a file_metadata call back to the server.  This again avoids the need to use additional JRuby instances outside of the original catalog request in order to evaluate file resources.\n\nHave you seen limitations with the static catalogs feature which lead to you to believe that doing a pure-Clojure implementation of the legacy file serving APIs would still be beneficial?  If so, I'd be curious to hear what those are.  In that case, it might make more sense to spend effort on improving the static catalogs feature as opposed to doing what this ticket calls for.", "created": "2017-06-21T09:05:00.000000"}, {"author": "70121:9c658341-861b-467e-8f57-dfcff20944cb", "body": "The AWS/OpsWorks related impact of this is they are looking at situations with 100+ node being spun up at the same time, if puppetserver is also serving up the agent package installations, this would be 100+ agent rpms being downloaded within seconds of each other, then the plugin sync happening, then finally catalog process to happen.\n\nIn AWS/OpsWorks this scale event is frequent and the common practice for AWS users.\n\n([~accountid:557058:8e854cc9-8371-4e6f-b838-748fbf4ec178] [~accountid:557058:182fed4d-0782-4cf4-a2cd-3083b91d0452] this is going to hit us early with OpsWork)", "created": "2017-06-21T11:38:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] as we discussed offline, static catalogs does not apply to 2 important cases.\n\n1.  Pluginsync.  This means that installing new agents will deplete jrubies to 0 and wait while the Puppetserver has capacity to serve the files that can't be accessed because we're constrained by RAM and not wanting too many Jrubies above CPUs. \n\n2.  The puppet_enterprise module is installed outside of filesync and thus is not eligible for static_catalogs.  Every agent in a PE install receives puppet code from that module and is why I'm still seeing millions / billions of hits to file_metadata in customers metrics after enabling static_catalogs.  \n\nIt's possible that pluginsync could re-factored to not use file resources and it's possible that the puppet_enterprise module could be stored in a different file sync repo ( if that'd make it eligible for static catalogs.)  \n\nThe other option to resolve the root cause would be to reduce need for so much RAM by somehow loading all code one time instead of per jruby.  This means the marginal cost of a JRuby would just be the ruby code for running the master and having more JRubies wouldn't be so costly.  This solution would miss the ability to specifically constrain how many concurrent catalog compilations are possible but I suspect the win in reduced RAM would probably be a great enough win we might not care.  ", "created": "2017-06-23T09:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}if puppetserver is also serving up the agent package installations, this would be 100+ agent rpms being downloaded within seconds of each other{quote}\n\nI believe these are served up via the \"/packages\" endpoint which is hosted as static content under Puppet Server's Jetty webserver.  Requests to the \"/packages\" endpoint do not utilize JRubies and, therefore, would seem to be outside of the scope of what this ticket is describing.  It may be worth separating the \"/packages\" endpoint to a different webserver / process / node if that itself becomes a major bottleneck, not sure.  Might be worth carving off a separate ticket to investigate that piece.", "created": "2017-06-26T13:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}2. The puppet_enterprise module is installed outside of filesync and thus is not eligible for static_catalogs. Every agent in a PE install receives puppet code from that module and is why I'm still seeing millions / billions of hits to file_metadata in customers metrics after enabling static_catalogs.{quote}\n\nI think if the PE module were installed in an environment and manageable by file-sync that it would be eligible for use with static_catalogs as well.  I had thought there was some discussion about some point about doing something like this but I don't recall exactly what the technical limitations were.  [~accountid:63d40628f6e1b543161789a7] or [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] - do you have any more background on this?", "created": "2017-06-26T13:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}The other option to resolve the root cause would be to reduce need for so much RAM by somehow loading all code one time instead of per jruby. This means the marginal cost of a JRuby would just be the ruby code for running the master and having more JRubies wouldn't be so costly. This solution would miss the ability to specifically constrain how many concurrent catalog compilations are possible but I suspect the win in reduced RAM would probably be a great enough win we might not care. {quote}\n\nThis would be an interesting idea to explore.  We have done some marginal investigation in the past around the possibility of just configuring JRuby's ScriptingContainer to use variations of [LocalContextScope|http://jruby.org/apidocs/org/jruby/embed/LocalContextScope.html] which allows it to reuse memory across containers, rather than the {{SINGLETHREAD}} mode that we use today.  That effort failed quickly as we discovered several spots just during initialization where memoization of code initialized in one pass caused subsequent containers to fail to initialize properly.\n\nWhile in theory, I think it would be possible to do this, I expect that this could involve a lot of effort around rewriting portions of the Ruby Puppet codebase to eliminate and/or add synchronized access to various elements of global state that it manages today.  As a potentially more tightly scoped effort, we might consider just protecting access to the environment cache, such that it might be reusable across containers in the JRuby runtime.  This might also help inform us about general issues we might see with creating objects in one container and referencing them from another - something which we don't do today.  I carved off a separate ticket, SERVER-1868, as a ticket we could try doing a spike on.", "created": "2017-06-26T13:57:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm supportive overall of the idea of pulling the existing file serving functionality from Ruby Puppet into a Clojure-based implementation which lives in Puppet Server and would propose that we convert this ticket into an epic to that effect - even if this spawns other tickets for further optimizations we may want to consider separately.  As we might pick up this effort, I think it would be worth looking into potentially reusing some of a PR that was put up but closed about 2 1/2 years ago for a pure Clojure implementation of the file_metadata endpoint, https://github.com/puppetlabs/puppetserver/pull/346.", "created": "2017-06-26T14:03:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "{quote}\nbq. if puppetserver is also serving up the agent package installations, this would be 100+ agent rpms being downloaded within seconds of each other\nI believe these are served up via the \"/packages\" endpoint which is hosted as static content under Puppet Server's Jetty webserver. Requests to the \"/packages\" endpoint do not utilize JRubies and, therefore, would seem to be outside of the scope of what this ticket is describing. It may be worth separating the \"/packages\" endpoint to a different webserver / process / node if that itself becomes a major bottleneck, not sure. Might be worth carving off a separate ticket to investigate that piece.{quote}\n\nThere are two Puppet fileserver mountpoints currently added by PE:\n\n* pe_modules - this is left over from PE installation prior to the pe-modules packages existing and I believe can be removed -- it is referenced in the replica profile, but I think that's an oversight.\n* pe_packages - this allows catalogs composed for compile masters and replica to copy the package repositories from the primary, and also allows the puppet_agent module to get files during upgrades.  I think that the Puppet File resource can src arbitrary http urls and we could replace these references and drop this mount?\n", "created": "2017-06-26T14:09:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "{quote}\nbq. 2. The puppet_enterprise module is installed outside of filesync and thus is not eligible for static_catalogs. Every agent in a PE install receives puppet code from that module and is why I'm still seeing millions / billions of hits to file_metadata in customers metrics after enabling static_catalogs.\n\nI think if the PE module were installed in an environment and manageable by file-sync that it would be eligible for use with static_catalogs as well. I had thought there was some discussion about some point about doing something like this but I don't recall exactly what the technical limitations were. Josh Cooper or Joshua Partlow - do you have any more background on this?\n{quote}\n\nI'm not sure how to do that", "created": "2017-06-26T14:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}pe_packages - this allows catalogs composed for compile masters and replica to copy the package repositories from the primary, and also allows the puppet_agent module to get files during upgrades. I think that the Puppet File resource can src arbitrary http urls and we could replace these references and drop this mount?{quote}\n\nI'm very likely confused/wrong about how agents use the packages mountpoint.  When I use the curl/bash approach for installing a PE agent (latest Hoyt code), I see the agent node make requests like this back to the master:\n\n{quote}GET /packages/2017.3.0-rc2-166-g419d166/el-7-x86_64/puppet-agent-4.99.0.360.g8b1a987-1.el7.x86_64.rpm{quote}\n\nThe \"/packages\" endpoint here is configured as a static endpoint that Puppet Server's Jetty webserver hosts.  I believe the PE module does that [here|https://github.com/puppetlabs/puppetlabs-puppet_enterprise/blob/21d112065070b5aa854ea82b3d2f4c9e24578d86/manifests/profile/master.pp#L353].  Requests made to this endpoint would be served directly by the Jetty webserver and would not require the use of a JRuby instance.  For any cases where Puppet code being applied during an agent run were to use resources with 'puppet:///pe_packages' references, though, I believe a JRuby instance would be required to obtain the content - presumably via the {{file_content}} endpoint.  I don't have a good feel at this point as to what requests still may use 'puppet://pe_packages' vs. just the '/packages' endpoint.  If those could transparently be replaced with 'http://.../packages' URLs instead, though, maybe that would be a good way to go at this point?\n\n\n", "created": "2017-06-26T14:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}I'm not sure how to do that", "created": "2017-06-26T17:16:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "{quote}\nbq. GET /packages/2017.3.0-rc2-166-g419d166/el-7-x86_64/puppet-agent-4.99.0.360.g8b1a987-1.el7.x86_64.rpm\n\nThe \"/packages\" endpoint here is configured as a static endpoint that Puppet Server's Jetty webserver hosts. I believe the PE module does that here. Requests made to this endpoint would be served directly by the Jetty webserver and would not require the use of a JRuby instance. For any cases where Puppet code being applied during an agent run were to use resources with 'puppet:///pe_packages' references, though, I believe a JRuby instance would be required to obtain the content - presumably via the file_content endpoint. I don't have a good feel at this point as to what requests still may use 'puppet://pe_packages' vs. just the '/packages' endpoint. If those could transparently be replaced with 'http://.../packages' URLs instead, though, maybe that would be a good way to go at this point?\n{quote}\n\nYes, the frictionless installer scripts are just curling the Jetty /packages endpoint.  However replica need to be able to \ncopy all packages (including the original tarball packages) [here|https://github.com/puppetlabs/puppetlabs-puppet_enterprise/blob/2017.3.0-rc1/manifests/profile/primary_master_replica.pp#L50]), where we use a File resource with a puppet://pe_packages.  And recently (PE-18753) pe_repo was updated to pull packages from the master [packages_mountpoint|https://github.com/puppetlabs/puppetlabs-pe_repo/blob/2017.3.0-rc1/manifests/repo.pp#L60] as well so that compile masters can get their packages structure set up without access to the Internet (for the original puppet-agent packages).\n\nAnd finally puppet_agent makes use of that mountpoint to download packages for os's without package managers that have handling of networked repositories.  But we should be able to make use of the feature change in PUP-1072 now instead.\n", "created": "2017-06-26T17:42:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Linking to jruby 9k implementation epic ", "created": "2017-08-01T16:24:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] i'm going to update the description to reflect some of the conversation and make it a bit more directed - let me know if this seems off", "created": "2017-08-01T16:30:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] my understanding is that there are two ways to consider optimizing file serving in puppetserver ( which includes pluginsync since it uses a catalog that uses a recursive file resource to sync the directories). \n\n1.  Rewrite file serving completely in Clojure\n2.  Rewrite code loading so puppet code is loaded once instead of loaded into each jruby.  \n\nGranted 2 wouldn't fit the title of the ticket but it's the other option I think.  ", "created": "2017-08-01T17:11:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "few years back the file-serving issue could be worked around with putting a apache in front and redicrecting file content serving directly to a apache/nginx (http://www.masterzen.fr/2010/03/21/more-puppet-offloading/ - but worked only for single environment/module root.\n\nis there any impact expected for puppet apply with file resources with {{source => \"puppet:///$\\{module_name\\}/file_blibla.txt\"}}\n\nWhat about just having a dedicated jruby pool for the file serving endpoint ? There is some jruby pool ticket but related to environment isolation SERVER-1697.\n\n", "created": "2017-08-22T13:32:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] we had a discussion in a meeting about this ticket and opted to rename the epic to one that didn't imply a specific path forward in case during spike/investigation we end up finding a better path forward ", "created": "2017-09-21T16:56:00.000000"}, {"author": "557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c", "body": "Work detailed in SERVER-2026", "created": "2017-11-27T16:18:00.000000"}], "components": [], "created": "2017-06-20T11:52:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@985cfdf"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - $$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "5 - >90% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "File serving is one of the areas we see impacting performance. This really shows up when you are adding a lot of new nodes and they all have to pluginsync a large number of modules. This can sometime take 5 minutes per node for just the DSC module. This takes up all the available jrubies. By doing this in clojure it would likely perform much better.\n\nBy moving file serving away from using jrubies it might also give you a sort of control on how much performance will be used for catalog compilation rather than file serving."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - Serious"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-8"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Improve Performance of File Serving in PuppetServer"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_purple"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbqf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3644939192_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_10197932833_*|*_10012_*:*_1_*:*_655377"}], "description": "h1.  The Problem\n\nTuning the number of JRubies required for PuppetServer is very difficult because serving files require borrowing a JRuby but adding extra JRubies to handle serving more files requires more heap and puppet code will be loaded into those JRubies.  \n\nAs a result you need more heap and you get more garbage created and collected because there is no way to separate the resources for file serving and catalog compilation.  \n\nAlso generally speaking, the current file serving implementation is not optimal because files are loaded into memory and then served\n\nh1.  In Scope\n\n1. Investigate which file serving functions would yield the most benefit from being in pure clojure instead of delegating to puppet / jruby\n** starting point is pluginsync\n** then files resources with a source attribute not stored in a module that is file synced\n\n2.  Rewrite the file serving for these endpoints in Clojure so they do not require borrowing a jruby\n\nh1.  Possible Benefits\n\nEither solution will lower heap requirements and improve the stability of Puppet Server by segregating the resource needs.  \n\nFor small installs of PE we'll be able to more effectively run with lower resources.  \n\nFor large installs of PE we'll be able to drastically lower the heap requirements.  \n\nImprove file serving from its current implementation to a more generic file-server like approach, hopefully reducing/removing the need to load full files into memory as opposed to streaming them off disk \n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17357", "fixedVersions": [], "id": "17357", "issueType": "Epic", "key": "SERVER-1860", "labels": ["backup-restore"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Duplicate", "resolutionDate": "2017-11-27T16:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve Performance of File Serving in PuppetServer", "timeSpent": "PT0S", "updated": "2018-03-08T09:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a4f5b51"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep9r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2168_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1053230410"}], "description": "(Initial planned release date: 2017-06-27)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%225.0.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15384", "fixedVersions": [], "id": "15384", "issueType": "Sub-task", "key": "SERVER-1859", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-28T16:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "This looks like it was done automatically, or someone beat me to the punch.", "created": "2017-06-28T16:38:00.000000"}], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34cf2fee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep9j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2232_*|*_3_*:*_1_*:*_10471643_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1041765786"}], "description": "(Initial planned release date: 2017-06-27)\n\nUpdate dujour to notify users to use 5.0.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15109", "fixedVersions": [], "id": "15109", "issueType": "Sub-task", "key": "SERVER-1858", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-28T16:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 5.0.0 (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7462537d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep9b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2159_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1047322394"}], "description": "(Initial planned release date: 2017-06-27)\n\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14725", "fixedVersions": [], "id": "14725", "issueType": "Sub-task", "key": "SERVER-1857", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-28T15:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Docs are live as of 4:55 p.m. PDT", "created": "2017-06-27T17:54:00.000000"}], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a6e8770"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep93:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2224_*|*_3_*:*_1_*:*_2501625_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_967926899"}], "description": "(Initial planned release date: 2017-06-27)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17431", "fixedVersions": [], "id": "17431", "issueType": "Sub-task", "key": "SERVER-1856", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-27T17:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c38d4e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep8v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2216_*|*_3_*:*_1_*:*_12190732_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_954434666"}], "description": "(Initial planned release date: 2017-06-27)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17198", "fixedVersions": [], "id": "17198", "issueType": "Sub-task", "key": "SERVER-1855", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-27T16:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a0a531b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep8n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2161_*|*_3_*:*_1_*:*_750139_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_954433250"}], "description": "(Initial planned release date: 2017-06-27)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16835", "fixedVersions": [], "id": "16835", "issueType": "Sub-task", "key": "SERVER-1854", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-27T13:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Got the green light from all participants.", "created": "2017-06-27T13:20:00.000000"}], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@761a31c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep87:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2220_*|*_3_*:*_1_*:*_1068700_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_952948886"}], "description": "(Initial planned release date: 2017-06-27)\n\nThis should happen Monday-Thursday, before noon PST. We should not be shipping anything after noon PST or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16228", "fixedVersions": [], "id": "16228", "issueType": "Sub-task", "key": "SERVER-1853", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-27T13:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Smoke tested on all supported platforms, including upgrade paths.", "created": "2017-06-27T13:20:00.000000"}], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b5df4fc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep7z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2170_*|*_3_*:*_1_*:*_6799905_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_947200571"}], "description": "(Initial planned release date: 2017-06-27)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15681", "fixedVersions": [], "id": "15681", "issueType": "Sub-task", "key": "SERVER-1852", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-27T13:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "http://builds.puppetlabs.lan/puppetserver/5.0.0/\n\nWith ezbake projects, final-versioned packages are automatically created with the merge of this commit https://github.com/puppetlabs/puppetserver/commit/53f50a8fe4d10d66d731328d791c69b7f82335e6", "created": "2017-06-27T10:39:00.000000"}], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dc54808"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep7r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2207_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_944329195"}], "description": "(Initial planned release date: 2017-06-27)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15383", "fixedVersions": [], "id": "15383", "issueType": "Sub-task", "key": "SERVER-1851", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-27T10:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] confirmed in HipChat that tickets for this release have release notes, so I'm collating them now for docs.", "created": "2017-06-21T17:50:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] PR up with release notes and associated docs edits.", "created": "2017-06-22T02:13:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Release notes were merged to puppetserver#master at [9670a6|https://github.com/puppetlabs/puppetserver/commit/9670a6f4803492c01c5a0023e2a7a8a19eebdc95] so closing this.", "created": "2017-06-23T10:28:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Search for introduced in Server 5.0.0: https://puppet.atlassian.net/issues/?filter=27216#\n\nSearch for Fixes for Server 5.0.0: https://puppet.atlassian.net/issues/?filter=27217", "created": "2017-06-23T16:45:00.000000"}], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34aee18"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep7j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2175_*|*_3_*:*_1_*:*_30199251_*|*_10009_*:*_1_*:*_116124757_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_451768181"}], "description": "(Initial planned release date: 2017-06-27)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15108", "fixedVersions": [], "id": "15108", "issueType": "Sub-task", "key": "SERVER-1850", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-23T10:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ced786a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep7b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2199_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_863010511"}], "description": "(Initial planned release date: 2017-06-27)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14724", "fixedVersions": [], "id": "14724", "issueType": "Sub-task", "key": "SERVER-1849", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-26T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Master merged into the 5.0.x branch.", "created": "2017-06-23T16:38:00.000000"}], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@183d3953"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep73:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2808_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_620275295"}], "description": "(Initial planned release date: 2017-06-27)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17430", "fixedVersions": [], "id": "17430", "issueType": "Sub-task", "key": "SERVER-1848", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-23T16:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22c5c058"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep6v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2189_*|*_3_*:*_1_*:*_92351312_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_527954345"}], "description": "(Initial planned release date: 2017-06-27)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17197", "fixedVersions": [], "id": "17197", "issueType": "Sub-task", "key": "SERVER-1847", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-23T16:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "All flagged tickets have a reasonable source (tickets created in another project, tickets that have been moved to another project) and open tickets are epics whose remaining tickets are documentation related.", "created": "2017-06-22T15:58:00.000000"}], "components": [], "created": "2017-06-16T12:20:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27aea266"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep6n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2174_*|*_3_*:*_1_*:*_97904936_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_433616147"}], "description": "(Initial planned release date: 2017-06-27)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16834", "fixedVersions": [], "id": "16834", "issueType": "Sub-task", "key": "SERVER-1846", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-22T15:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-06-16T12:19:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48c594ae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep6f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2289_*|*_3_*:*_1_*:*_97256603_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_433623326"}], "description": "(Initial planned release date: 2017-06-27)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%225.0.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16530", "fixedVersions": [], "id": "16530", "issueType": "Sub-task", "key": "SERVER-1845", "labels": [], "originalEstimate": "PT0S", "parent": "16227", "parentSummary": "puppetserver 5.0.0 2017-06-27 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-22T15:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 5.0.0)", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-06-16T12:19:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@648234fa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzezgf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2069_*|*_3_*:*_1_*:*_532285986_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_521019444"}], "description": "puppetserver 5.0.0 2017-06-27 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16227", "fixedVersions": [], "id": "16227", "issueType": "Task", "key": "SERVER-1844", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-06-28T16:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 5.0.0 2017-06-27 Release", "timeSpent": "PT0S", "updated": "2017-06-28T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "The http client metrics feature, available in Puppet Server 5 and PE Hoyt, allows users to get metrics on how long requests Puppet Server makes to other services - e.g. PuppetDB and the Classifier - are taking.\n\nAll of these metrics are of the form puppetlabs.<server-id>.http-client.experimental.with-metric-id.<metric id>.full-response. The metric id tells what specifically the metric is for. metric-ids are represented in the status endpoint as an array of strings, and in the metric itself the strings are joined together with periods, so `[puppetdb resource search]` as metric id would yield a metric name puppetlabs.<server-id>.http-client.experimental.with-metric-id.puppetdb.resource.search.full-response\n\nDuring the course of handling a Puppet agent run, Puppet Server makes several calls to other services to get or store information.\n\n\n\n* During handling of a /puppet/v3/node request, Puppet Server will issue:\n    ** a `facts find` to PuppetDB to get facts about the node, if it does not already have these cached (so typically the first time it makes a node request for the node). This request is now timed with an http client metric with metric id `[puppetdb facts find]`\n   ** in Puppet Enterprise, a `node find` request to classifier, to get node data (metric id `[classifier nodes]`).\n* During handling of a /puppet/v3/catalog request, Puppet Server will issue several requests:\n    ** a PuppetDB `replace facts` request, to replace the facts for the agent in PuppetDB with the facts it received from the agent. (Metric id `[puppetdb, command, replace_facts]`.\n    ** a  PuppetDB `resource search` request, to search for resources if exported resources are used. (Metric id `[puppetdb, resource, search]`)\n    ** a PuppetDB `query` request, if the puppetdb_query function is used in Puppet code. (Metric id `[puppetdb, query]`)\n    ** a PuppetDB `replace catalog` request, to replace the catalog for the agent in PuppetDB with the newly compiled catalog. (Metric id `[puppetdb, command, replace_catalog]`)\n* During handling of a /puppet/v3/reports request, Puppet Server will issue:\n    ** a PuppetDB `store report` request, to store the submitted report (Metric id `[puppetb command store_report]`).\n    ** a request to the configured reports_url to store the report, if the http report processor is enabled (Metric id `[puppetdb report http]`).\n\nhttp client metrics are enabled by default, but can be disabled under the `http-client` section of the puppetserver config settings, set `metrics-enabled` to `false`.\n\nIn addition, http client metrics depend on the `server-id` setting in the `metrics` section of the config. This is automatically set in PE, but in OSS Puppet Server, this defaults to `localhost` and users must change this setting.\n\nThis data is all available via the status endpoint, at `https://<master hostname>:8140/status/v1/services/master?level=debug` (pe-master for PE). There is now an `http-client-metrics` keyword in the map, with data such as:\n\n{code}\n\"http-client-metrics\": [\n  {\n    \"aggregate\": 407,\n    \"count\": 1,\n    \"mean\": 407,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"facts\",\n      \"find\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.facts.find.full-response\"\n  },\n  {\n    \"aggregate\": 66,\n    \"count\": 1,\n    \"mean\": 66,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"command\",\n      \"replace_facts\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.command.replace_facts.full-response\"\n  },\n  {\n    \"aggregate\": 60,\n    \"count\": 2,\n    \"mean\": 30,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"resource\",\n      \"search\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.resource.search.full-response\"\n  },\n  {\n    \"aggregate\": 53,\n    \"count\": 1,\n    \"mean\": 53,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"query\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.query.full-response\"\n  },\n  {\n    \"aggregate\": 22,\n    \"count\": 1,\n    \"mean\": 22,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"command\",\n      \"store_report\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.command.store_report.full-response\"\n  },\n  {\n    \"aggregate\": 16,\n    \"count\": 1,\n    \"mean\": 16,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"command\",\n      \"replace_catalog\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.command.replace_catalog.full-response\"\n  },\n  {\n    \"aggregate\": 2,\n    \"count\": 1,\n    \"mean\": 2,\n    \"metric-id\": [\n      \"puppet\",\n      \"report\",\n      \"http\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppet.report.http.full-response\"\n  }\n],\n{code}\n\nIf metrics are not enabled, or if Puppet Server has not issued any requests yet, then this array will be empty, like so: `\"http-client-metrics\": []`.\n\nIn the example Grafana Dashboard, there is a graph `External HTTP Communications` that graphs all these metrics. The tooltip describes each one.", "created": "2017-06-15T19:19:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "ping [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] - brain-dumped a whole bunch of stuff above because I wasn't sure where to put it. You have until tomorrow to ask me questions.", "created": "2017-06-15T19:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think we can scratch the \"(pe-master for PE)\" part.  For the next PE release, we're expecting various metrics to appear under both \"master\" and, only for backward compatibility at this point, \"pe-master\".  Hopefully, we'll be able to get rid of the \"pe-master\" one at some point in the future so we can just be using the same names for both OSS and PE.  Until then, I think it would be good for folks to start referencing \"master\".", "created": "2017-06-16T15:05:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Will these also age out? So like, will the `http-client-metrics` field be an empty array if it's been more than 12 hours since the last request?", "created": "2017-06-16T15:45:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Waiting for base metrics docs reviews (SERVER-1830, SERVER-1829, SERVER-1797) before incorporating this, potentially post-release.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Did you guys get answers to those questions?", "created": "2017-06-21T17:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Will these also age out? So like, will the `http-client-metrics` field be an empty array if it's been more than 12 hours since the last request?{quote}\n\n[~accountid:557058:104b5720-714d-4539-b455-df472251ec89], not sure if you talked to Ruth already about this but I believe the answer is that the metrics will persist once created, that they will not be aged out.  I believe Dropwizard will age out older measurements for individual counters over time but that a metric-id once created will remain until the server is reloaded or restarted, even if there is a prolonged period of inactivity for a specific counter.  Did you ever vet this?", "created": "2017-06-21T18:47:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "bq. Did you ever vet this?\n\nNo I haven't. I can check on Thursday.", "created": "2017-06-21T22:53:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] Do you need this reviewed by someone? Or do you need to review? /cc [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]", "created": "2017-07-06T14:42:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] I'm in progress", "created": "2017-07-06T14:48:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "(and by done, I mean finishing the predocs review and putting a PR up to the server repo for tech review)", "created": "2017-07-06T14:49:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] PR is up and linked, targeting master.", "created": "2017-07-10T17:08:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We merged this to the puppetserver#master branch at [db48218|https://github.com/puppetlabs/puppetserver/commit/db48218c08fc90475160945638c7176ac798f553].  Closing this out...", "created": "2017-07-13T16:40:00.000000"}], "components": ["DOCS"], "created": "2017-06-14T11:20:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20533773"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1739"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8min:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Comment on this ticket contains pre-docs for the new http client metrics feature in Server 5 and PE Hoyt."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1144571_*|*_10007_*:*_1_*:*_189072541_*|*_3_*:*_1_*:*_28022236_*|*_10009_*:*_3_*:*_2220415324_*|*_5_*:*_1_*:*_5425138990_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_86165598"}], "description": "Write up pre-docs on http client metrics included in Server 5.", "epicLinkSummary": "Http Client Metrics in Puppet Server", "estimate": "PT0S", "externalId": "17196", "fixedVersions": ["SERVER 5.1.0"], "id": "17196", "issueType": "Task", "key": "SERVER-1842", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": "17005", "parentSummary": "Http Client Metrics in Puppet Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-09-14T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pre-docs on http client metrics", "timeSpent": "PT0S", "updated": "2017-10-09T18:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2017-06-14T11:17:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57264ccc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1739"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3exz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_49811948_*|*_1_*:*_1_*:*_2672724_*|*_10007_*:*_1_*:*_908796_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_27221661"}], "description": "With the 0.9 release of clj-http-client we can disable reporting of url based metrics (url and url + method).\n\nWe should bring in the version of clj-parent that includes that release and configure our requests to disable url metrics.", "epicLinkSummary": "Http Client Metrics in Puppet Server", "estimate": "PT0S", "externalId": "15996", "fixedVersions": [], "id": "15996", "issueType": "Task", "key": "SERVER-1841", "labels": [], "originalEstimate": "PT0S", "parent": "17005", "parentSummary": "Http Client Metrics in Puppet Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2017-06-15T09:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Disable url metrics from clj-http-client (using version 0.9)", "timeSpent": "PT0S", "updated": "2017-06-15T16:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [5d4e4e|https://github.com/puppetlabs/puppetserver/commit/5d4e4e8f39cdf8c7568eb9f458a643d5a7df9928].  Resulting acceptance runs both for JRuby 1.7 and the updated 9k both passed.  See [this job|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-jruby9k-master/16/] for the latest 9k job run results.\n\nI also repeated some of the memory leak testing that I originally did for SERVER-1778 and was able to confirm that the leaks found for SERVER-1792 and SERVER-1821 were no longer present.  I also did not see any new memory leaks with those tests.\n\nI'm going to mark this resolved.", "created": "2017-06-15T13:05:00.000000"}], "components": [], "created": "2017-06-14T10:08:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67a3e521"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ey7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_8424900_*|*_1_*:*_1_*:*_11608_*|*_10007_*:*_1_*:*_54483710_*|*_5_*:*_1_*:*_1123933847_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34114760"}], "description": "JRuby 9.1.11.0 was just released [today|https://lists.ruby-lang.org/pipermail/jruby/2017-June/000629.html].  We should consider upgrading to it before Puppet 5 ships in order to roll up the fixes for a couple of significant memory leak issues that we have been seeing - SERVER-1792 and SERVER-1821.", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "16528", "fixedVersions": ["SERVER 5.0.0"], "id": "16528", "issueType": "Task", "key": "SERVER-1840", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update to JRuby 9.1.11.0", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-06-13T09:55:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@323d6f30"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1836"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzeluf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24665673_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3302_*|*_10005_*:*_1_*:*_8029475501"}], "description": "Waylon was build with optional memcached based caching so that multiple copies of the same radiator would reuse the same Jenkins query. I've no idea if this is used at all, but if it isn't we should turn this on. Effectively caching Jenkins queries means that we'll be able to support more open dashboards without increasing the load on the Jenkins servers.", "epicLinkSummary": "Waylon maintenance and updates", "estimate": "PT0S", "externalId": "15107", "fixedVersions": [], "id": "15107", "issueType": "Improvement", "key": "SERVER-1839", "labels": ["waylon"], "originalEstimate": "PT0S", "parent": "16226", "parentSummary": "Waylon maintenance and updates", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Won't Fix", "resolutionDate": "2017-09-14T15:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ensure waylon radiators are using memcached for performance", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-06-13T09:52:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63246ab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1836"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzelu7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_47134_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_8054272069"}], "description": "When viewing a job in Waylon there's no information about upstream or downstream jobs. Given how heavily we rely on upstream/downstream jobs to build CI pipelines this is a pretty big omission. Waylon should provide optional modals for jobs so that one can easily navigate between related jobs.", "epicLinkSummary": "Waylon maintenance and updates", "estimate": "PT0S", "externalId": "17428", "fixedVersions": [], "id": "17428", "issueType": "Improvement", "key": "SERVER-1838", "labels": ["waylon"], "originalEstimate": "PT0S", "parent": "16226", "parentSummary": "Waylon maintenance and updates", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Won't Fix", "resolutionDate": "2017-09-14T15:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Waylon jobs should include more upstream/downstream information", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-06-13T09:49:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58ca1da3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1836"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymawf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_219036_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_8029175426_*|*_10005_*:*_1_*:*_25089320"}], "description": "When you click on a job in Waylon, the page navigates to the Jenkins job inside of the current window. If you have a persistent Waylon tab this constantly navigates away from the radiator, which is kind of a pain.\n\nWaylon should change to opening jobs in new tabs.", "epicLinkSummary": "Waylon maintenance and updates", "estimate": "PT0S", "externalId": "16526", "fixedVersions": [], "id": "16526", "issueType": "Improvement", "key": "SERVER-1837", "labels": ["waylon"], "originalEstimate": "PT0S", "parent": "16226", "parentSummary": "Waylon maintenance and updates", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Won't Fix", "resolutionDate": "2017-09-14T15:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Waylon should open Jenkins jobs in new tabs", "timeSpent": "PT0S", "updated": "2017-09-14T15:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-06-13T09:46:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1665fdd1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Maintain Waylon"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyqhhz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_8054696801_*|*_6_*:*_1_*:*_0"}], "description": "Waylon hasn't received much love since 2014 or 2015 when it was created, and has started to rot. In the long run we may be switching to the Jenkins Blue Ocean UI but this isn't in the immediate future; we should throw some work at Waylon to get it functional for the next 6 months to a year.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16226", "fixedVersions": [], "id": "16226", "issueType": "Epic", "key": "SERVER-1836", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Won't Fix", "resolutionDate": "2017-09-14T15:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Waylon maintenance and updates", "timeSpent": "PT0S", "updated": "2018-02-06T17:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-06-13T09:44:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b8a6adc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1836"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymaw7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_491175_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_8029194202_*|*_10005_*:*_1_*:*_25065053"}], "description": "Waylon frequently fails to fetch the status of jobs, and off the cuff it looks like the unfetchable jobs are those that are in progress. Hinting at this is the fact that in progress jobs are never displayed, which definitely worked back when Waylon was newer.\n\nThere are two fixes for this. First, when a job cannot be fetched, more information should be available to determine why it couldn't be fetched (potentially via a modal). Second, in progress jobs should be viewable and should provide a running progress report of the job.", "epicLinkSummary": "Waylon maintenance and updates", "estimate": "PT0S", "externalId": "15995", "fixedVersions": [], "id": "15995", "issueType": "Bug", "key": "SERVER-1835", "labels": ["waylon"], "originalEstimate": "PT0S", "parent": "16226", "parentSummary": "Waylon maintenance and updates", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Won't Fix", "resolutionDate": "2017-09-14T15:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Waylon seems to return HTTP 503s for running jobs", "timeSpent": "PT0S", "updated": "2017-09-14T15:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-06-12T14:16:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@553be979"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Integrate Puppet Server into the platform more regularly"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbsf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6663030972_*|*_6_*:*_1_*:*_0"}], "description": "For Platform 5, we want to make sure that the full platform is being integrated more regularly. Handle integration failure at the component level, and run acceptance tests against other components' nightlies.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15680", "fixedVersions": [], "id": "15680", "issueType": "Epic", "key": "SERVER-1834", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Done", "resolutionDate": "2017-08-28T17:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Integrate Puppet Server into the platform more regularly", "timeSpent": "PT0S", "updated": "2017-08-28T17:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-06-12T14:08:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@167a29b9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Increase frequency of Server promotions into PE"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbd3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9077255170_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_3024262600"}], "description": "As we move towards moar continuous delivery, we need to take some steps to improve the PE - Puppet server test/release processes. For instance, we need to minimize bad builds being promoted into PE.\n\nThis will automate the end to end promotion into PE once the stories within the epic are complete.", "duedate": "2017-11-08T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15151", "fixedVersions": [], "id": "15151", "issueType": "Epic", "key": "SERVER-1833", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2017-10-30T15:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Increase frequency of Server promotions into PE", "timeSpent": "PT0S", "updated": "2018-02-06T17:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-06-12T13:49:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56b88fbb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Prep for monthly external Server releases"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbfz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20748332303_*|*_6_*:*_1_*:*_0"}], "description": "Includes setting up CI pipelines which replace some of the manual processes done today: (SERVER-1053) package release pipeline and (SERVER-1055) package upgrade tests.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16225", "fixedVersions": [], "id": "16225", "issueType": "Epic", "key": "SERVER-1832", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2018-02-07T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tooling & preparation for monthly external Server release cadence", "timeSpent": "PT0S", "updated": "2018-02-07T16:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "attachments": [], "comments": [], "components": [], "created": "2017-06-08T20:08:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@db4644"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzejyv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_419614451_*|*_10007_*:*_1_*:*_66645577_*|*_5_*:*_1_*:*_0"}], "description": "It is useful to be able to specify the agent version that should be installed alongside a puppet server version for gatling tests, especially if we expect changed agent code to result in a measurable performance delta.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14723", "fixedVersions": [], "id": "14723", "issueType": "Improvement", "key": "SERVER-1831", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-06-14T11:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support specifying agent version in Jenkinsfile for gatling jobs", "timeSpent": "PT0S", "updated": "2017-06-14T11:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Filed a PR on [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]'s predocs branch, and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] is also reviewing.", "created": "2017-06-21T10:51:00.000000"}], "components": ["DOCS"], "created": "2017-06-06T17:17:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5328b22e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ezz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_30749_*|*_10007_*:*_1_*:*_121351221_*|*_3_*:*_1_*:*_441616456_*|*_5_*:*_1_*:*_569245069_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_754191442"}], "description": "Ticket for documenting this is DOC-3051. We should write up some predocs for how to use the endpoint, which was added in TK-404.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "15679", "fixedVersions": ["SERVER 5.0.0"], "id": "15679", "issueType": "Task", "key": "SERVER-1829", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-21T23:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Write pre-docs on Jolokia-based /metrics/v2 endpoint", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:63d40628f6e1b543161789a7] - is there a good ticket or epic that you think would be good to link this to for the core Ruby Puppet-related work?", "created": "2017-06-02T16:28:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Added link to puppet ticket", "created": "2017-06-02T17:59:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:63d40628f6e1b543161789a7], this looks like it fell through the cracks on the 5.0 switch, should we figure out how to work it into the Platform 6 roadmap?", "created": "2018-02-20T17:12:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] We want to switch the agent over to sending compressed reports (PUP-7931) as much of the information in the report is duplicated. The part I'm not sure about is whether jetty already handles HTTP expect/continue and whether it will correctly reply with HTTP 415 if we try to send a {{Content-Encoding}} that the server doesn't support.", "created": "2018-02-20T22:48:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Yes that would be good, as it's a blocker to the agent sending compressed reports.", "created": "2018-08-30T15:19:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The GZip handler that we use only conditionally gzips responses if the responses are successful, gzipping is enabled locally, and accepted by the agents ([docs|https://www.eclipse.org/jetty/documentation/9.4.x/gzip-filter.html]).\n\nHandling continuations and 415s would, I think, have to happen in the application or framework logic.\n\nThe liberator framework that we use for CA endpoints should be relatively easy to add support for. The report endpoint however would need to be plumbed through our custom route handling, which would be more work. For future selves, I believe this would be in request-handler-service.\n\n/cc [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]", "created": "2018-09-04T14:37:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Closing ticket due to age/priority\n\nWe can re-consider & re-open if there is enough interest from the community", "created": "2021-12-22T11:54:00.000000"}], "components": [], "created": "2017-06-02T16:25:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25fd00d7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzef5j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_347661508_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_143409294976"}], "description": "For most Puppet Server endpoints today, we don't have any code in place to:\n\n* Return an HTTP 406 if the {{Accept}} header that the request provides does not include the MIME type that the server would use in the response - e.g., client sends {{Accept: application/xml}} but the server is only capable of responding with an \"application/json\" MIME type.\n\n* Return an HTTP 415 if the request provides a value for the {{Content-Type}} header that the server is unable to support - e.g., client sends {{Content-Type: application/xml}} but the server is only capable of parsing a response containing {{application/json}}.\n\nFor the endpoints we have which are backed by liberator, I believe we basically get this for free.  Most of the endpoints which we handle in Clojure today, however, do not use liberator and do not consistently validate the MIME type in each direction.\n\nFor this ticket, we would audit each of the existing Clojure-backed endpoints for places where 406/415 handling could be added and, where appropriate, add in that logic - maybe with some reusable middleware in place of liberator since we've been moving away from it.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16224", "fixedVersions": [], "id": "16224", "issueType": "Task", "key": "SERVER-1828", "labels": ["final_triage", "http", "usability"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2021-12-22T11:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add HTTP 406 / HTTP 415 handling for Clojure-based endpoints", "timeSpent": "PT0S", "updated": "2021-12-22T11:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] is this required for the 5.0.0 release (in which case it should be pulled into the current sprint and assigned a 5.0.0 fix version)?", "created": "2017-06-13T12:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] I don't think it's critical to get into Puppet 5 per-se but since it is technically a breaking (but desirable) change it might be best to get it done before Puppet 5 ships.  I can pull it into the sprint.  Should be able to get it done very quickly - hopefully a one-line change.", "created": "2017-06-13T15:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [051f04c|https://github.com/puppetlabs/puppetserver/commit/051f04c77ca620e25660b3fe2da28333b167f315].  The subsequent [Jenkins test run|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/309/] was green, so I'm marking this as \"resolved\".", "created": "2017-06-16T12:16:00.000000"}], "components": [], "created": "2017-06-02T16:12:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33527d51"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3852"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ezb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_146381907_*|*_1_*:*_1_*:*_348335688_*|*_10007_*:*_1_*:*_90635683_*|*_3_*:*_1_*:*_5506623_*|*_5_*:*_1_*:*_1040434704_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_604621625"}], "description": "If a request is made to the {{certificate_status}} endpoint with no {{Accept}} header, the certificate authority service includes a default {{Content-Type}} of [text/pson|https://github.com/puppetlabs/puppetserver/blob/2.7.2/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L126].  Along with the changes being made elsewhere in Puppet 5 to default to JSON instead of PSON, it would seem best likewise to change this default to {{application/json}}.\n\nNote that support should be preserved for handling a legacy client sending a {{text/pson}} or {{pson}} value in the {{Accept}} header.  The change for this ticket would only affect what the server would return for cases where the client does not explicitly specify an {{Accept}} header.", "epicLinkSummary": "Switch from PSON to JSON as default serialization format", "estimate": "PT0S", "externalId": "15678", "fixedVersions": ["SERVER 5.0.0"], "id": "15678", "issueType": "Task", "key": "SERVER-1827", "labels": [], "originalEstimate": "PT0S", "parent": "29908", "parentSummary": "Switch from PSON to JSON as default serialization format", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change default Content-Type for certificate_status endpoints to application/json", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [fa6982|https://github.com/puppetlabs/puppetserver/commit/fa6982452a6d8d3e92ef56499dfed4e3f1323307].", "created": "2017-06-14T09:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The full acceptance test suite run with this change [passed|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/306/], so I'm going to mark this resolved.", "created": "2017-06-14T09:04:00.000000"}], "components": [], "created": "2017-06-02T16:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b5ed820"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3exr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The responses for any requests made to the puppet/v3/static_file_content endpoint previously did not include a Content-Type header.  Now, responses for successful requests will include a Content-Type header with a value of \"application/octet-stream\".  Error responses from this endpoint will include a Content-Type of \"text/plain\". "}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_80450722_*|*_1_*:*_1_*:*_348990289_*|*_10007_*:*_1_*:*_85792362_*|*_3_*:*_1_*:*_240368231_*|*_5_*:*_1_*:*_1224747722_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_256240786"}], "description": "In responses made to the {{static_file_content}} endpoint today, no value for the {{Content-Type}} header is defined.  See [this map|https://github.com/puppetlabs/puppetserver/blob/2.7.2/src/clj/puppetlabs/services/master/master_core.clj#L399-L400] definition.  In turn, it does not appear that either Ring middleware or the underlying Jetty webserver add in a default value for the header either.  For example, I see this on the wire for a request:\n\n{noformat}\n\"GET /puppet/v3/static_file_content/modules/something/files/somefile.txt?environment=production&code_id=1234 HTTP/1.1\\r\\nAccept: binary\\r\\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\\r\\nUser-Agent: Ruby\\r\\nHost: my-host:8140\\r\\n\\r\\n\"\n-> \"HTTP/1.1 200 OK\\r\\n\"\n-> \"Date: Fri, 02 Jun 2017 20:27:49 GMT\\r\\n\"\n-> \"X-Puppet-Version: 5.0.0\\r\\n\"\n-> \"Content-Length: 5\\r\\n\"\n-> \"Server: Jetty(9.4.4.v20170414)\\r\\n\"\n-> \"\\r\\n\"\nreading 5 bytes...\n-> \"test\\n\"\n{noformat}\n\nFor good form, we should add a {{Content-Type}} header to the response.  Since the content which is provided is translated as an input stream into raw bytes, the best {{Content-Type}} to use here is probably {{application/octet-stream}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17427", "fixedVersions": ["SERVER 5.0.0"], "id": "17427", "issueType": "Bug", "key": "SERVER-1826", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-14T09:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add application/octet-stream MIME type to static_file_content response", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2017-06-01T15:34:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73cf057d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1832"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9nyf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_431873078_*|*_1_*:*_1_*:*_17437_*|*_10007_*:*_1_*:*_63808307_*|*_3_*:*_1_*:*_12910274_*|*_5_*:*_1_*:*_6134654583_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2414643062"}], "description": "We've had a fairly high number of failures recently for Jenkins runs of the JRuby Spec test jobs.  The reason for the failures isn't obvious from looking at the console output, but it seems like it might be a network / rubygems issue leading the bundler command to hang / eventually be timed out.\n\nFrom [this job|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_unit-jruby_master/JDK=oraclejdk8,label=unit/345/console], for example, we see this output:\n\n{noformat}\n      PATH='/tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/vendor/test_gems/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/local/rvm/gems/ruby-2.3.1/bin:/usr/local/rvm/gems/ruby-2.3.1@global/bin:/usr/local/rvm/rubies/ruby-2.3.1/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'       BUNDLE_GEMFILE='/tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/ruby/puppet/Gemfile'       GEM_HOME='/tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/vendor/test_gems' GEM_PATH='/tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/vendor/test_gems'       lein run -m org.jruby.Main         -S bundle install --without extra development --path='/tmp/jenkins/workspace/platform_puppetserver_unit-jruby_master/JDK/oraclejdk8/label/unit/vendor/test_bundle'\n...\nThe dependency win32-service (= 0.8.8) will be unused by any of the platforms Bundler is installing for. Bundler is installing for java but the dependency is only for x86-mingw32. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32`.\nThe dependency minitar (~> 0.6.1) will be unused by any of the platforms Bundler is installing for. Bundler is installing for java but the dependency is only for x86-mingw32. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32`.\nBuild timed out (after 40 minutes). Marking the build as aborted.\nBuild was aborted\n{noformat}\n\nInformally, we've seen a number of one-off rubygems.org connectivity issues of late.\n\nWe are currently using rubygems.org as the {{GEM_SOURCE}} for these jobs.  We may see significantly less network-related failures if we instead switch to using the Puppet rubygems mirror, {{http://rubygems.delivery.puppetlabs.net}}.  For this ticket, we would investigate using the Puppet rubygems mirror for this job instead.", "epicLinkSummary": "Tooling & preparation for monthly external Server release cadence", "estimate": "PT0S", "externalId": "17195", "fixedVersions": ["SERVER 5.1.0"], "id": "17195", "issueType": "Improvement", "key": "SERVER-1825", "labels": [], "originalEstimate": "PT0S", "parent": "16225", "parentSummary": "Tooling & preparation for monthly external Server release cadence", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-09-14T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use internal rubygems mirror for JRuby spec tests", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-05-31T14:05:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6670c2e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzecz3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_41562962942_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_31537997591_*|*_10005_*:*_1_*:*_69452447037"}], "description": "Throughout Puppet as well as the PuppetDB termini and other termini (e.g. the NC node terminus) we make a lot of {{Puppet::Util::Profiler.profile}} calls. In Puppet Server, each one of these creates a dropwizard/metrics metric. We ultimately end up creating multiple metrics for every resource, every certname, every environment, every query. In many cases, this granularity of metrics isn't needed or used. In other cases, we don't actually have any idea what we are timing with these metrics. We should go through the profiler metrics and audit them to understand better what we are gathering metrics on, whether these metrics are useful, and what these metrics mean.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "16223", "fixedVersions": [], "id": "16223", "issueType": "Task", "key": "SERVER-1824", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Won't Fix", "resolutionDate": "2021-12-06T11:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Audit profiler metrics", "timeSpent": "PT0S", "updated": "2021-12-06T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-05-31T14:00:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b4694ef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymagv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_353262270_*|*_1_*:*_1_*:*_120314_*|*_10007_*:*_1_*:*_200068986_*|*_3_*:*_2_*:*_136578705_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_444192259"}], "description": "Most of the metric ids added for PDB-3419 and PE-18346 include the certname of the agent. This means that we're creating 3 additional  http client metrics for every certname, and there isn't much use case for tracking metrics per-certname, especially because we have profiler metrics that cover some of the same things. In order to reduce memory usage, we should remove the certname from the metric ids in the termini in PuppetDB and the Classifier.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15150", "fixedVersions": ["SERVER 5.0.0"], "id": "15150", "issueType": "Task", "key": "SERVER-1823", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-13T17:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove certnames from http client metric ids", "timeSpent": "PT0S", "updated": "2017-06-13T17:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [{"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-20T16:56:00.000000", "name": "Screen Shot 2017-06-20 at 3.53.20 PM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10581"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-20T16:56:00.000000", "name": "Screen Shot 2017-06-20 at 3.54.12 PM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10665"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-07-06T12:37:00.000000", "name": "Screen Shot 2017-07-06 at 11.37.08 AM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11276"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-22T16:01:00.000000", "name": "chart (1).png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10582"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-20T18:13:00.000000", "name": "oss-latest-1497632202399-json.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10738"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-22T16:03:00.000000", "name": "oss-latest-9k-12g-heap-1498095806600.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10666"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-20T18:13:00.000000", "name": "oss-latest-9k-1497564704641.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10809"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-22T16:03:00.000000", "name": "oss-latest-9k-2g-heap-1498077819952.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10739"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-20T18:13:00.000000", "name": "oss-latest-9k-3g-heap-1497918569037.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11047"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-20T18:13:00.000000", "name": "oss-latest-9k-4g-heap-1497926388386.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10963"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-20T18:13:00.000000", "name": "oss-latest-9k-6g-heap-1497934489661.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10884"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-06-22T16:03:00.000000", "name": "oss-latest-9k-8g-heap-1498087135047.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10810"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-07-06T12:36:00.000000", "name": "oss-latest-jruby-1.7-for-comparison-vs-9k-1498760019131.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10584"}, {"attacher": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "created": "2017-07-06T12:36:00.000000", "name": "oss-latest-jruby-9k-for-comparison-vs-1.7-1498768542108.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10667"}], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Summary of gatling results I've collected so far. I've attached archives of some of the gatling results, with the full details\n\nMean agent run times (1250 agents - 2 hour simulation):\noss puppetserver, jruby 1.7, puppet 4 agent: 4540ms\noss puppetserver, jruby 1.7, puppet 5 agent: 4905ms\n\noss puppetserver, jruby 9k, puppet 4 agent, 2GB heap(Default): 945688ms\n\noss puppetserver, jruby 9k, puppet 5 agent, 3GB heap: 820113ms \noss puppetserver, jruby 9k, puppet 5 agent, 4GB heap: 523097ms \noss puppetserver, jruby 9k, puppet 5 agent, 6GB heap: 230281ms\n\nI'm waiting on some new numbers from a 9k puppet 5 simulation at 2GB of heap (got lost in some jenkins job shuffling), but I think the 2 orders of magnitude difference between jruby 1.7 and 9k at larger than normal heap sizes shows how far behind it is, regardless of whether or not a puppet 4/5 agent is being used\n\nI'm not sure if the slowdown between jruby 1.7 with puppet 4 vs puppet 5 is significant. The mean times seem to fluctuate from between 4-5 seconds anyways. I think we expected a good speedup though.\n\nWhy is jruby-9k so slow? Hard to say, but here's a comparison between 1.7 and 9k from gatling\n1.7, puppet 5 at 2GB heap\n!Screen Shot 2017-06-20 at 3.54.12 PM.png|thumbnail!\n\n9k, puppet 5 at 3GB heap\n!Screen Shot 2017-06-20 at 3.53.20 PM.png|thumbnail!\n\nYou can see that the 9k simulation starts at response times similar to jruby 1.7, but eventually they begin to slow down more and more. The improved performance at higher heap sizes seems to only come from delaying the onset of this slowdown", "created": "2017-06-20T16:55:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Some more data\n\noss puppetserver, jruby 9k, puppet 5 agent, 2GB heap: 1050087\noss puppetserver, jruby 9k, puppet 5 agent, 12GB heap: 7527\n\nThis shows how important the heap size is for jruby's performance right now.\n\nThe 12GB heap data is the only gatling data that doesn't show the massive slowdowns (although if the run was longer than 2 hours it seems likely that it would manifest again)\n\nPerformance of jruby 9k at various heap sizes:\n!chart (1).png|thumbnail!\n\nI'm not sure how meaningful it is to worry about the difference between the puppet 4/5 runs at 2GB heap, since those numbers are so massive. Any speedups from the new json parsing are going to swallowed up", "created": "2017-06-22T16:02:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Update:\nHere's a screenshot of the oss-latest jruby 1.7 vs 9k job.\n!Screen Shot 2017-07-06 at 11.37.08 AM.png|thumbnail!\n\nThe mean agent run time for 9k has come down quite a bit (but is still very high). Those values are {{630k seconds}} and {{860k seconds}}. The last two data points are from the same simulation, so there's a lot of variability between runs. \n\nI'm going to close this ticket since the data collection is finished.", "created": "2017-07-06T12:41:00.000000"}], "components": [], "created": "2017-05-31T11:25:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f04767b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9nxz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20107_*|*_3_*:*_1_*:*_2320712207_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_794277456"}], "description": "Once the work from SERVER-1802 to capture an agent recording which uses JSON for all network comms, we should change the JRuby 1.7 / 9k Gatling job being created for SERVER-1779 to use it and rerun the 1.7 / 9k job to see what the resulting perf looks like.  We're hoping for a significant performance boost from the use of JSON.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16222", "fixedVersions": ["None"], "id": "16222", "issueType": "Task", "key": "SERVER-1822", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2017-07-06T12:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Re-run JRuby 1.7 vs 9k job with JSON agent recording", "timeSpent": "PT0S", "updated": "2018-03-21T08:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This was addressed in the bump to JRuby 9.1.11.0 for SERVER-1840. Marking this as resolved.", "created": "2017-06-15T13:08:00.000000"}], "components": [], "created": "2017-05-30T14:47:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10fd8dfd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzebon:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We haven't released versions of Puppet Server with this leak, fortunately, so we shouldn't need to document it in the release notes."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_188109_*|*_1_*:*_1_*:*_55023_*|*_5_*:*_1_*:*_1123676457_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_1376306031"}], "description": "Per some work memory leak testing work done in SERVER-1778, we found a case where a {{TransientNativeMemory::Magazine}} object stored as a {{ThreadLocal}} was leaked each time the corresponding thread fell out of scope - e.g., when the Jetty web server would naturally recycle threads or if a service reload were performed.  Roughly 1K of memory is leaked each time.\n\nA [fix|https://github.com/jnr/jnr-ffi/commit/68419ee0023f039e36e4eecfe61a7a922ac0b227] for this has been rolled into the latest version of jnr-ffi, 2.1.6.  We should keep this ticket open to track the rollup of the newer jnr-ffi version into a newer version of JRuby 9k that can be bumped into Puppet Server.", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "16525", "fixedVersions": ["SERVER 5.0.0"], "id": "16525", "issueType": "Bug", "key": "SERVER-1821", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-15T13:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Track fix for TransientNativeMemory::Magazine leak in new JRuby 9k release", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] FYI.", "created": "2017-05-29T15:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:6217ba0a71554c00695601a8] This is known to be the case for Debian Jessie, unfortunately.\n\nFor Puppet Server 5, we wanted to take the opportunity to move our underlying Jetty webserver dependency to a version which is still under active community support.  The only supported versions - the 9.3.x and 9.4.x series - are built with JDK 8, not JDK 7.  Because of this, we also needed to start building Puppet Server 5 packages with JDK 8 (instead of JDK 7, with which Puppet Server 2.x and earlier have been built) - as well as include package dependencies for openjdk-8 only (and not openjdk-7).  We expect that other major dependencies of Puppet Server may start moving to JDK 8 as a base over time as well, so moving to JDK 8 for the 5 series helps with that transition.\n\nAs you noted, unfortunately, the standard Jessie repository does not contain openjdk-8", "created": "2017-05-30T09:52:00.000000"}, {"author": "6217ba0a71554c00695601a8", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] many thanks for the update. Having the backports dependency described in docs is sufficient. Should this ticket be moved to docs and get a better name? Is there already a ticket on this issue within docs?", "created": "2017-06-02T01:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:6217ba0a71554c00695601a8].  We're definitely going to be updating docs for this change.  I can leave this ticket open for tracking the docs update for now.\n\nfyi, I updated the \"Release Notes\" section for SERVER-1738 with some packaging implications of the change to building Puppet Server with JDK 8.  Those notes will be rolled up into our documentation for the Puppet Server 5 release.", "created": "2017-06-08T18:53:00.000000"}, {"author": "61ba0348acc926006a06fc59", "body": "Additional solution could be to install the backports repo with the .deb package adding the puppetlabs repo", "created": "2017-06-14T08:03:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "[~accountid:61ba0348acc926006a06fc59] my experience on things like automatically installing package repos is that between automatically installing a repository or requiring users to add the repo themselves, people prefer to have control over the repo installation and don't like having repo configuration forced on them. My inclination is to rely on documentation to handle this for the Puppetserver 5.0 release and see how that goes", "created": "2017-06-14T11:35:00.000000"}, {"author": "61ba0348acc926006a06fc59", "body": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] I totally agree. The Debian Package Policy allows to add a check in the PostInst script. So it is possible to check if the Backports are allready added to the Server and print an output if they are missing.  ", "created": "2017-06-15T01:37:00.000000"}, {"author": "6217ba0a71554c00695601a8", "body": "I totally agree with [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7]: especially due to the case that some organizations might use local mirrors of repository servers.\nI am fine with adding this information to the documentation and mark this as a hard pre-requirement.", "created": "2017-06-15T03:57:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2017-05-28T05:22:00.000000", "creator": "6217ba0a71554c00695601a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d222da1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ezj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_818928976_*|*_10007_*:*_1_*:*_170231023_*|*_3_*:*_1_*:*_508135833_*|*_5_*:*_1_*:*_1046075283_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_163523016"}], "description": "Using puppet 5 nightly builds on a base Debian Jessie installation fails to install puppetserver:\n\n{quote}\nroot@psick:~# apt-get install puppetserver\nReading package lists... Done\nBuilding dependency tree\nReading state information... Done\nSome packages could not be installed. This may mean that you have\nrequested an impossible situation or if you are using the unstable\ndistribution that some required packages have not yet been created\nor been moved out of Incoming.\nThe following information may help to resolve the situation:\n\nThe following packages have unmet dependencies:\n puppetserver : Depends: openjdk-8-jre-headless but it is not installable\nE: Unable to correct problems, you have held broken packages.\nroot@psick:~#\n{quote}\n\nopenjdk-8-jre-headless is available in backports only.", "environment": "Base Debian Jessie installation without backports", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15149", "fixedVersions": ["SERVER 5.0.0"], "id": "15149", "issueType": "Task", "key": "SERVER-1820", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6217ba0a71554c00695601a8", "resolution": "Fixed", "resolutionDate": "2017-06-16T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver non installable on jessie without backports", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Pulling this into the sprint so we don't forget about it.", "created": "2017-05-22T10:00:00.000000"}], "components": [], "created": "2017-05-22T09:30:00.000000", "creator": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@587b1be9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hze593:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "\nIn puppet 5.0, by default puppet will no longer write node yaml files to its cache. This cache was once used in workflows with external tooling needing a list of nodes, but with the advent of puppetdb that is now the best/correct way to retrieve information about nodes. If a user wishes to retain the 4.x behavior, add the setting `node_cache_terminus = write_only_yaml`. Note that `write_only_yaml` is deprecated, and users are encouraged to migrate to puppetdb based workflows for retrieving node information."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_777914941_*|*_1_*:*_1_*:*_10765_*|*_10007_*:*_1_*:*_1753000_*|*_6_*:*_1_*:*_0"}], "description": "This is the Puppet Server ticket tracking work related to PUP-6060. From that ticket:\n\n{quote}\nI recently had some conversations with [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] and others about scaling PE to tens of thousands of nodes.  One of the issues they ran into was that the disk got filled up by the YAML files containing the facts for nodes.\n\nMy belief was that these YAML files were necessary because of the way the indirector works for the catalog terminus; that it would save the facts out to YAML and then later on load them back from the YAML file to use in the compile.\n\nHowever, in discussing this with [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] and others, it seems like that is not actually the case.  It seems like it's no longer required from a technical perspective, but was added back in because there were user workflows where people had built external tools that relied on scraping data from those YAML files.\n\nIn today's world, it's much more likely that people would want to use PuppetDB for those sorts of tasks, which means there is probably not much value in those files for most users.\n\nWe should consider having a setting to disable the creation of these files, or, if we already have some setting ({{node_cache_terminus}}?) that can do this, we should consider disabling them by default.\n\n[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] points out that this would also result in a performance improvement as these files can be rather large and we would no longer need to write them during catalog compiles.\n{quote}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15677", "fixedVersions": ["SERVER 5.0.0"], "id": "15677", "issueType": "Task", "key": "SERVER-1819", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "resolution": "Fixed", "resolutionDate": "2017-05-31T10:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change node_cache_terminus default to nil (Server ticket)", "timeSpent": "PT0S", "updated": "2018-03-08T18:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Server team is not going to have time to review this PR by tomorrow, and as it's unassigned, replacing the 5.1 label with 5.2.", "created": "2017-08-02T11:40:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is all the agent-side work for this done? /cc [~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330]", "created": "2018-01-30T16:20:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], it looks like there's still pending agent-side work for Debian-based\u00a0agents.\u00a0[~accountid:557058:7ed56b44-735e-4cdb-b168-470ef48d5112] is looking into\u00a0PA-1130 to\u00a0confirm what needs to happen there. Once that's complete, all agent-side work\u00a0should be done.\u00a0", "created": "2018-02-08T23:42:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T10:41:00.000000"}], "components": [], "created": "2017-05-19T19:04:00.000000", "creator": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d09f07"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1756"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6h1j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1547352095_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1105086_*|*_10006_*:*_2_*:*_35078895235_*|*_10005_*:*_2_*:*_114891686146"}], "description": "In support of SERVER-1756:\n* For RPM, update server to listen/watch for puppet-agent package updates.\n* For Deb, update server to consume a trigger produce by puppet-agent.\n\nAs suggested by [~accountid:62438a418678e9007059bcca] in SERVER-1756, we may want to consider adding the following {{%triggerpostun}} for RPM: \n\n{code:title=%triggerpostun for puppetserver.spec|borderStyle=solid}\n%triggerpostun -- puppet-agent\nif [ $2 -ge 1 ]; then\n  # Do one of the following, depending on whether this is a systemd or SysVInit system:\n  #systemctl try-restart puppetserver || :\n  #/sbin/service puppetserver condrestart || :\nfi\n{code}\n\n...and for Deb, we may want to something similar to the {{postinst}} described in [this Stack Overflow post|https://stackoverflow.com/questions/15276535/dpkg-how-to-use-trigger].", "epicLinkSummary": "Restart/HUP puppetserver on upgrades to puppet-agent package", "estimate": "PT0S", "externalId": "16523", "fixedVersions": [], "id": "16523", "issueType": "Improvement", "key": "SERVER-1818", "labels": ["nice-to-have", "reliability"], "originalEstimate": "PT0S", "parent": "17130", "parentSummary": "Restart/HUP puppetserver on upgrades to puppet-agent package", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Listen for Puppet Agent updates and triggers", "timeSpent": "PT0S", "updated": "2022-03-08T10:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Ping [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] any thoughts on this?", "created": "2017-05-23T17:07:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Do you think there's anything Puppet Server related in this ticket? The team thinks it's Heira config.", "created": "2017-05-30T16:48:00.000000"}, {"author": "557058:5a8f659a-2de7-48cf-8a7c-aa7079e34a6f", "body": "Yesterday I reinstalled a plain Puppet environment with backend hiera-http. Now it works. I think, the puppetserver doesn't include the hiera-http module (mentioned in the README) correctly. But that was a fault of mine - sorry for that and thanks for your help guys.", "created": "2017-05-30T23:20:00.000000"}, {"author": "557058:5a8f659a-2de7-48cf-8a7c-aa7079e34a6f", "body": "Oh and you can close the ticket. thanks!", "created": "2017-05-30T23:20:00.000000"}], "components": ["Puppet Server"], "created": "2017-05-19T08:03:00.000000", "creator": "557058:5a8f659a-2de7-48cf-8a7c-aa7079e34a6f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e2bd56"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hze4c7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1038305206_*|*_6_*:*_1_*:*_0"}], "description": "We are using http backend for hiera. Therefore we are using the newest version available, version 5.\n\n/etc/puppetlabs/puppet/hiera.yaml\n{code:java}\n---\nversion: 5\ndefaults:\n  datadir: hieradata\n  data_hash: yaml_data\n:hierarchy:\n  - name: \"Config Api\"\n    hiera3_backend: http\n    paths:\n      - \"/rest/hiera/%{::fqdn}\"\n    options:\n      :host: api.localhost.localnet\n      :use_ssl: true\n      :use_auth: true\n      :ssl_verify: false\n      :auth_user: user\n      :auth_pass: pass\n      :port: 443\n      :output: json\n      :cache_timeout: 10\n      :ignore_404: true\n{code}\n\nTo make this feature available, we installed the hiera-http in two ways for testing purposes.\n\nWay 1\n{code}# puppetserver gem install hiera-http {code}\n\nWay 2\n{code}# /opt/puppetlabs/puppet/bin/gem install hiera-http{code}\n\nThen we tested it with following command\n{code}# puppet lookup profile::test --explain{code}\n\nAnd get 2 different errors.\nWith installation over '/opt/puppetlabs/puppet/bin/gem install':\n{code}Error: Could not run: undefined method `map' for nil:NilClass{code}\n\nWith installation over 'puppetserver gem install':\n{code}Searching for \"lookup_options\"                             \n  Global Data Provider (hiera configuration version 5)\n    Using configuration \"/etc/puppetlabs/puppet/hiera.yaml\"\n    Hierarchy entry \"Config Api\"                      \n      Path \"/rest/hiera/puppet-osa01vp.noris.net\"                                         \n        Original path: \"/rest/hiera/%{::fqdn}\"\n        Unable to load backend 'http': cannot load such file -- hiera/backend/http_backend\n{code}\n\nVia puppetserver, there are no logical link for the backend. If this backend is manually set, the \"main\" error shows up.\n\nCan you help me please?\n\nThank you very much,\nLudwig\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17426", "fixedVersions": [], "id": "17426", "issueType": "Bug", "key": "SERVER-1817", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5a8f659a-2de7-48cf-8a7c-aa7079e34a6f", "resolution": "Done", "resolutionDate": "2017-05-31T08:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Hiera http backend installation failed", "timeSpent": "PT0S", "updated": "2017-05-31T08:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "Thank you for filling this.\n\nIt looks like this there is an upstream bug filed at https://bugs.launchpad.net/ubuntu/+source/openjdk-7/+bug/1691126 and a proposed fix has been made available in ubuntu-security-proposed PPA repositories.\n\n\n", "created": "2017-05-18T11:11:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "Closing this as a duplicate of SERVER-1720.", "created": "2017-05-18T11:15:00.000000"}], "components": [], "created": "2017-05-17T18:10:00.000000", "creator": "557058:d69e8a23-e9d3-4b67-8184-ddc368f830f1", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14922df"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hze2z3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_61482338_*|*_6_*:*_1_*:*_0"}], "description": "With the latest openjdk version (auto installed dependency), the server starts up but attempting to make any SSL connections fails, and puppetserver.log contains:\n2017-05-18 11:49:50,570 WARN  [qtp929974220-65] [o.e.j.u.t.QueuedThreadPool] \njava.lang.ExceptionInInitializerError: null\n\tat sun.security.ssl.HelloExtensions.<init>(HelloExtensions.java:85)\n\tat sun.security.ssl.HandshakeMessage$ClientHello.<init>(HandshakeMessage.java:240)\n\tat sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:219)\n\tat sun.security.ssl.Handshaker.processLoop(Handshaker.java:961)\n\tat sun.security.ssl.Handshaker$1.run(Handshaker.java:901)\n\tat sun.security.ssl.Handshaker$1.run(Handshaker.java:899)\n\tat java.security.AccessController.doPrivileged(Native Method)\n\tat sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1333)\n\tat org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:612)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:239)\n\tat org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)\n\tat java.lang.Thread.run(Thread.java:745)\nCaused by: java.lang.IllegalArgumentException: System property jdk.tls.namedGroups(null) contains no supported elliptic curves\n\tat sun.security.ssl.SupportedEllipticCurvesExtension.<clinit>(SupportedEllipticCurvesExtension.java:154)\n\t... 14 common frames omitted\n2017-05-18 11:49:50,571 WARN  [qtp929974220-65] [o.e.j.u.t.QueuedThreadPool] Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@75b62093 in qtp929974220{STARTED,8<=8<=200,i=5,q=0}\n2017-05-18 11:50:28,513 WARN  [qtp929974220-70] [o.e.j.u.t.QueuedThreadPool] \njava.lang.NoClassDefFoundError: Could not initialize class sun.security.ssl.SupportedEllipticCurvesExtension\n\tat sun.security.ssl.HelloExtensions.<init>(HelloExtensions.java:85)\n\tat sun.security.ssl.HandshakeMessage$ClientHello.<init>(HandshakeMessage.java:240)\n\tat sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:219)\n\tat sun.security.ssl.Handshaker.processLoop(Handshaker.java:961)\n\tat sun.security.ssl.Handshaker$1.run(Handshaker.java:901)\n\tat sun.security.ssl.Handshaker$1.run(Handshaker.java:899)\n\tat java.security.AccessController.doPrivileged(Native Method)\n\tat sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1333)\n\tat org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:612)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:239)\n\tat org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)\n\tat java.lang.Thread.run(Thread.java:745)\n2017-05-18 11:50:28,513 WARN  [qtp929974220-70] [o.e.j.u.t.QueuedThreadPool] Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@75b62093 in qtp929974220{STARTED,8<=8<=200,i=5,q=0}\n\nDowngrading the JRE solves the problem, but is clearly sub-optimal (especially as we go back to base OS version; the u121 version deb has been removed from the repos and is hard to come by).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16833", "fixedVersions": [], "id": "16833", "issueType": "Bug", "key": "SERVER-1816", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d69e8a23-e9d3-4b67-8184-ddc368f830f1", "resolution": "Duplicate", "resolutionDate": "2017-05-18T11:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The latest OpenJDK JRE (7u131-2.6.9-0ubuntu0.14.04.1) on Ubuntu 14.04 completely breaks puppetserver SSL", "timeSpent": "PT0S", "updated": "2017-05-18T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "puppetserver's JRuby dependency was bumped to 9.1.9.0 in [f3b2bb7|https://github.com/puppetlabs/puppetserver/commit/f3b2bb7723af1c5100894914b5f7338df3e25247].  The resulting full acceptance test suite for JRuby 9k [passed|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-jruby9k-master/4].  Marking this ticket resolved.  ", "created": "2017-05-22T11:31:00.000000"}], "components": [], "created": "2017-05-17T17:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@120e4116"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdxgn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20343_*|*_3_*:*_1_*:*_257296373_*|*_5_*:*_1_*:*_3203158003_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_153251502"}], "description": "JRuby [9.1.9.0|http://lists.ruby-lang.org/pipermail/jruby/2017-May/000586.html] was just released.  We should update Puppet Server to use it.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "17194", "fixedVersions": ["SERVER 5.0.0"], "id": "17194", "issueType": "Task", "key": "SERVER-1815", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade JRuby 9k dependency to 9.1.9.0", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:63d40628f6e1b543161789a7] - could you take a look at the proposed new rules that I listed in the description for this and confirm that they look like what you would expect?  Note that tk-auth rules have to use HTTP methods rather than indirector methods since tk-auth has no concept of / interaction with the indirector.", "created": "2017-05-17T17:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [e50a61|https://github.com/puppetlabs/puppetserver/tree/e50a61b08a118d2c18009ad0b094dcefefd0d110].", "created": "2017-06-09T16:24:00.000000"}], "components": [], "created": "2017-05-12T11:55:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7029193"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymagn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Security Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The default authorization rules in the auth.conf file have been updated to reflect that access to the \"delete\" HTTP method for endpoints whose paths start with \"/puppet/v3/file_\" cannot be granted even if an auth.conf rule permits it.  This access is always forbidden due to a hard-coded restriction in the Ruby Puppet endpoint code.  For clarity, the \"file_\" rules have been split into different definitions per endpoint in order to reflect the valid methods that each supports, including file_bucket_file, file_content, and file_metadata."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_347947938_*|*_1_*:*_1_*:*_453368345_*|*_10007_*:*_1_*:*_322831653_*|*_3_*:*_1_*:*_37708430_*|*_5_*:*_1_*:*_1282441130_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1621459818"}], "description": "In doing some fileserver.conf research in PUP-6359, we discovered that the default auth.conf which is delivered with Puppet Server does not accurately reflect some of the file endpoint authorization that Ruby Puppet uses.\n\nThe [current \"file*\" rule|https://github.com/puppetlabs/puppetserver/blob/2.7.2/ezbake/config/conf.d/auth.conf#L59-L71] is defined as:\n\n{noformat}\n{\n     # Allow nodes to access all file services; this is necessary for\n     # pluginsync, file serving from modules, and file serving from\n     # custom mount points (see fileserver.conf). Note that the `/file`\n     # prefix matches requests to file_metadata, file_content, and\n     # file_bucket_file paths.\n     match-request: {\n         path: \"/puppet/v3/file\"\n         type: path\n     }\n     allow: \"*\"\n     sort-order: 500\n     name: \"puppetlabs file\"\n},\n{noformat}\n\n[~accountid:63d40628f6e1b543161789a7], however, found the following:\n\n{quote}NOTE: the default {{auth.conf}} grants everyone access for all terminus methods (find, search, save, delete), the fileserver is hardcoded to [only allow find and search|https://github.com/puppetlabs/puppet/blob/4.10.0/lib/puppet/indirector/file_server.rb#L12]. This means we can't stop calling the fileserver's {{authorized?}} method, since it's effectively part of the authz policy. ... I'm thinking we should ... update the default {{auth.conf}} to only allow find/search for {{file_content}} and {{file_metadata}}, and find/search/save for {{file_bucket_file}}. Probably don't want to grant delete since {{file_bucket_file}} doesn't implement that method.{quote}\n\nIn tk-auth terms, a better representation of these rules would probably be:\n\n{noformat}\n{\n     match-request: {\n         path: \"/puppet/v3/file_bucket_file\"\n         type: path\n         method: [get, head, post, put]\n     }\n     allow: \"*\"\n     sort-order: 500\n     name: \"puppetlabs file bucket file\"\n},\n{\n     match-request: {\n         path: \"/puppet/v3/file_content\"\n         type: path\n         method: [get, post]\n     }\n     allow: \"*\"\n     sort-order: 500\n     name: \"puppetlabs file content\"\n},\n{\n     match-request: {\n         path: \"/puppet/v3/file_metadata\"\n         type: path\n         method: [get, post]\n     }\n     allow: \"*\"\n     sort-order: 500\n     name: \"puppetlabs file metadata\"\n},\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16221", "fixedVersions": ["SERVER 5.0.0"], "id": "16221", "issueType": "Task", "key": "SERVER-1808", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-13T17:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Correct file endpoint rules in default tk-auth.conf file", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "body": "Do we need to do bug fix docs on this [~accountid:557058:263afade-3e4f-46c6-b50a-cf2982192562]?", "created": "2017-05-12T12:33:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "We're currently not planning on doing any further Puppet Server 2.7.x releases, so I think we'll only be doing this in Puppet Server 5.", "created": "2017-05-12T12:35:00.000000"}, {"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "Your call on the docs [~accountid:557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709].  I believe PE-18165 covered it though (I guess PE already pulled in the updated hocon gem in its packaging somehow based on that ticket?)", "created": "2017-05-12T17:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Merged to puppetserver#master at https://github.com/puppetlabs/puppetserver/commit/b52bf96db31dc76a689312c37a8bc6ad25327a3c", "created": "2017-05-18T11:07:00.000000"}], "components": [], "created": "2017-05-12T11:50:00.000000", "creator": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b137831"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-6718"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdya7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "hocon gem version 1.2.5 is now being embedded in the default Puppet Server gem path in place of the hocon version used in Puppet Server 2.7.2, 1.1.3."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_345118194_*|*_1_*:*_1_*:*_2727976_*|*_10007_*:*_1_*:*_513102246_*|*_5_*:*_1_*:*_3205099901_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3171"}], "description": "Bump up the component version\n\nAs of this date, stable branch of puppet-server has hocon 1.1.2 and master has hocon 1.2.4\n\nTo address a UTF-8 issue, at a minimum, the next version targeted for release with Puppet 5 should be updated to 1.2.5.", "epicLinkSummary": "Phase 1 Puppet Unicode Adoption Blockers", "estimate": "PT0S", "externalId": "15676", "fixedVersions": ["SERVER 5.0.0"], "id": "15676", "issueType": "Task", "key": "SERVER-1807", "labels": ["i18n", "utf-8"], "originalEstimate": "PT0S", "parent": "25002", "parentSummary": "Phase 1 Puppet Unicode Adoption Blockers", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "resolution": "Fixed", "resolutionDate": "2017-05-22T10:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump HOCON gem to 1.2.5", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-05-12T10:45:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e6b8c5e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymatj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_318200_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_23957595905"}], "description": "For SERVER-1803, we discovered a case where we had some duplicate content in the puppet-server-release.jar and JRuby jars - a subset of the classes in org.ow2.asm/asm-all.  We caught this problem in manual testing but should have some sort of a test / process to catch this in an automated fashion.  Maybe the easiest thing to do would be to write a beaker test, similar to what we do with the [validate-jruby-jar-deps-excluded-from-uberjars|https://github.com/puppetlabs/puppetserver/blob/927ad842f9363a42ff9393b6213fff18bb2e3ced/acceptance/suites/tests/00_smoke/validate-jruby-jar-deps-excluded-from-uberjars.rb] test, which does a list of the puppet-server-release.jar content and fails if any file found in it matches a file in either the jruby-1_7.jar or jruby-9k.jar file.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17193", "fixedVersions": [], "id": "17193", "issueType": "Task", "key": "SERVER-1806", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-13T16:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add duplicate content test for package uberjars", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "attachments": [], "comments": [{"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "Being cloned to keep the convention of using correct  ticket/comment for open source projects. ", "created": "2017-05-11T14:35:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "PR: https://github.com/puppetlabs/puppetserver/pull/1395 merged. This will be revisited in future to come up with a better approach of doing static scans. ", "created": "2017-05-31T17:15:00.000000"}], "components": [], "created": "2017-05-11T14:07:00.000000", "creator": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The scans should be able to identify any usage of read-string w/ or w/o qualifiers of clojure.core. Should not generate any false positives."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7720b3b2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylvh3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_21020260_*|*_1_*:*_1_*:*_522521918_*|*_3_*:*_1_*:*_1195737110_*|*_5_*:*_1_*:*_2404949611_*|*_6_*:*_1_*:*_0"}], "description": "The capability to do some basic security code scanning, as developed in the parent ticket now, needs to be enabled on various Clojure projects. This needs to be done in piecemeal manner to allow some testing and prevent wide scale issues, if any. \nCode scanning would be enabled on following Clojure projects:\n- Classifier\n- PCP-Broker\n- PE-RBAC-Service\n- pe-console-service", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16832", "fixedVersions": ["SERVER 5.0.0"], "id": "16832", "issueType": "Task", "key": "SERVER-1805", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable code scans for Puppetserver", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Changes to the org.ow2.asm dependencies for JRuby were merged to puppetserver#master in [f3b2bb7|https://github.com/puppetlabs/puppetserver/commit/f3b2bb7723af1c5100894914b5f7338df3e25247].  The resulting full acceptance test suites for both JRuby [1.7|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/271/] and [9k|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-jruby9k-master/4].  Marking this ticket resolved.  ", "created": "2017-05-22T11:36:00.000000"}], "components": [], "created": "2017-05-10T10:54:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dbd6850"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdvdb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_316269_*|*_10007_*:*_1_*:*_419208297_*|*_3_*:*_1_*:*_619804387_*|*_5_*:*_1_*:*_3202855431_*|*_6_*:*_1_*:*_0"}], "description": "Puppet Server has two dependencies on org.ow2.asm.* packages whose versions currently conflict with each other:\n\n1) puppetlabs/trapperkeeper includes the following transitive dependencies:\n\n{noformat}\n  [org.clojure/core.async \"0.2.391\"]\n     [org.clojure/tools.analyzer.jvm \"0.6.10\"]\n       [org.ow2.asm/asm-all \"4.2\"]\n{noformat}\n\n2) jruby-core version 1.7.26 includes the following dependencies:\n\n{noformat}\n   [org.ow2.asm/asm-analysis \"5.0.3\"]\n   [org.ow2.asm/asm-commons \"5.0.3\"]\n     [org.ow2.asm/asm-tree \"5.0.3\"]\n   [org.ow2.asm/asm-util \"5.0.3\"]\n   [org.ow2.asm/asm \"5.0.3\"]\n{noformat}\n\nThe org.ow2.asm/asm-all package is a superset of the discrete asm* packages that jruby-core includes.\n\njruby-core for the latest jruby9k release, 9.1.8.0, has its own vendored version of the asm* packages.  It appears, however, that this will be replaced with the discrete org.ow2.asm ones in future jruby9k release, though.\n\nWhen running latest Puppet Server in 1.7.26 or 9.1.8.0 mode, we haven't seen any test issues so far.  Theoretically, though, we could see jruby-specific issues for 1.7.26 since the asm code that would be used is from version 4.2 instead of from the newer 5.0.3 that is bundled in JRuby 1.7.\n\nWhen running latest Puppet Server with a 9.1.9.0-SNAPSHOT uberjar built from the current HEAD of the jruby branch, however, we would get a conflict on jruby code's attempt to use a signature for a method which doesn't exist in the older asm version 4.2 but does in the later 5.x releases.\n\nWe should look into reworking the org.ow2.asm/asm dependencies so that a sufficiently recent one that will work with the JRuby 1.7 and 9k versions we are bundling will get used in the puppet-server-release uberjar - and also probably exclude the org.ow2.asm dependencies from the jruby-deps uberjars just so that we don't potentially have multiple versions of classes in two different uberjars on the classpath - which could lead to difficult to diagnose loading issues sometime in the future.\n", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "15675", "fixedVersions": ["SERVER 5.0.0"], "id": "15675", "issueType": "Task", "key": "SERVER-1803", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-05-22T11:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Resolve org.ow2.asm conflict between core.async and jruby", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The biggest open question for me after going through our docs and general FIPS information, is around key management for the CA and cert private keys. Is it:\n\n1) is required as part of our install\n2) should just be supported in case the user wants to use key management.\n    2.a) If so, what kind do we need to support? Software? Hardware modules?\n3) neither\n", "created": "2019-05-01T09:43:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] Not sure if I'm reading your comment quite right but:\n * If you want to use certs from another CA, then you just need to worry about the FIPS 140-2 requirements on your crypto. You can defer key protection to the underlying OS or add something into your config files, use Java keystores, or whatever.\n * If you want to BE a CA, then I would start at https://csrc.nist.gov/publications/detail/sp/800-15/final", "created": "2019-05-01T10:07:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think you did understand. Generally, Puppet does act as a CA, at least for its own infrastructure, so I'll definitely take a look at that doc. Thanks!", "created": "2019-05-01T10:30:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I would highly recommend making it easier for users to use an external, established, CA that uses SCEP or CMC as well as supporting at least OCSP for revocation services.\n\nThere are both FOSS and commercial CAs that support these protocols, DogTag (core of FreeIPA) and Active Directory being the most prominent that I know of in those two domains.", "created": "2019-05-01T11:09:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Seems like the biggest piece we are missing for FIPS compliance in Puppet's own CA is a registration authority for verifying the identity of CSRs coming in, unless our policy autosigner counts as this (but I don't think it does).\n\nThat being said, I agree that the best way forward is probably to work out delegation to an external CA. We already have other reasons why we would want to support that (including high availability, HSM support, and OCSP, as Trevor mentions). See SERVER-2144.", "created": "2019-05-06T11:52:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It's still unclear to me if the agent's private key storage would also need to be changed from on-disk storage for FIPS, or just the CA key. On the server side, this would affect the way we generate and access the master's host key and cert. [~accountid:63d40628f6e1b543161789a7] have you seen guidance on this?", "created": "2019-05-06T11:57:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "I'm +1: do the work the in #1 now while we figure out answers to questions on #2", "created": "2019-05-07T13:58:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "For the CA key, I'd assume we can use Java's PKCS#11 provider, which provides a generic interface for accessing private keys on hardware devices. Oracle's docs indicate it supports FIPS mode if the underlying NSS libraries are configured in FIPS mode, [\"if the NSS secmod.db has been set to FIPS-140 compliant mode\"|https://docs.oracle.com/javase/9/security/pkcs11-reference-guide1.htm#JSSEC-GUID-7989F8B4-7260-4908-8203-99056B2D060E]. BouncyCastle seems like another possibility.\n\nI am not sure about the agent's private key. For example, mozilla's NSS libraries support FIPS mode and they say, [\"A FIPS-140 compliant application must do ALL of its cryptography in a FIPS-140 certified \"device\"...   It must generate or derive cryptographic keys and store them internally... Except for \"public keys\", it must not allow any keys to leave it (to get outside of it) unless they are encrypted (\"wrapped\") in a special way.|https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/FIPS_Mode_-_an_explanation#What_is_FIPS_Mode_all_about]. My interpretation is storing private keys in plaintext in the filesystem is not ok, but is ok if they are password protected. I assume \"wrapped in a special way\" is referring to using an approved password based key derivation function and cipher to generate a symmetric key. It is also possible to use an openssl-pkcs11 engine to access the HSM. The agent work for that is fairly easy, but not implemented yet.", "created": "2019-05-15T17:13:00.000000"}], "components": [], "created": "2017-05-10T00:20:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51df712b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2524"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsxbb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_579385184_*|*_3_*:*_1_*:*_932380554_*|*_10009_*:*_1_*:*_79058914_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_259154778_*|*_10005_*:*_1_*:*_61083972750"}], "description": "Currently, the Java-based components of our stack are not FIPS-aware. The nature of the J2EE stack, though, presents a possibly low-effort path to enabling FIPS-certified crypto libraries for our packages with either build-time or run-time toggles. This ticket covers the work necessary to understand the options and quantify the costs/benefits of each.\n\n\u00a0\n\nExplore and estimate work needed to eliminate md5 use, switch to using only rhel7-fips system ssl-libs, etc with the general list of requirements being:\n|Symmetric Key Algorithms|\n|Asymmetric Key Algorithms|\n|Message Authentication|\n|Hashing|\n|Random Number Generators|\n|Deterministic Random Bit Generators|\n|Key Management|\n\n\u00a0\n\nfor each project Server Team maintains determine work needed to:\n\nuse bouncy-castle and/or system openssl libs (use sha-1 instead of md5), enable use of oracle jvm/jre8\n\ndon't store private keys, possibly certs, locally (support use of external KMI, key store)\n\n\u00a0", "epicLinkSummary": "FIPS-Enabled Puppet Server Side", "estimate": "PT0S", "externalId": "15148", "fixedVersions": ["None"], "id": "15148", "issueType": "Task", "key": "SERVER-2523", "labels": [], "originalEstimate": "PT0S", "parent": "16326", "parentSummary": "FIPS-Enabled Puppet Server Side", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Done", "resolutionDate": "2019-05-08T09:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Explore puppet-server FIPS compliance work", "timeSpent": "PT0S", "updated": "2022-10-27T08:26:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think it would be best to wait until PUP-7487 has landed before we pick this up.  That ticket will involve having an agent send its facts payload within a catalog request in JSON instead of PSON and so would be good to factor into our Puppet 5 perf measurement efforts.", "created": "2017-05-04T10:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "A PR is up for PUP-7487 now, https://github.com/puppetlabs/puppet/pull/5923.  If that PR hasn't landed before we are able to pick up this ticket, we could just manually apply the changes from the PR to an installed agent for purposes of capturing a JSON-only agent run.", "created": "2017-05-31T11:21:00.000000"}], "components": [], "created": "2017-05-04T10:08:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11b71f87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ez3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2656112_*|*_10007_*:*_1_*:*_1018248618_*|*_3_*:*_1_*:*_1229079597_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2419454053"}], "description": "For Puppet 5 perf testing, we should take some new FOSS gatling recordings with an agent and server that use JSON across endpoints (instead of the legacy PSON) and have the oss-puppetserver-latest* Jenkins jobs start using them.\n\nI think we should preserve the current recordings which use PSON as well, though, so that we can continue to run those for the oss-puppetserver-stable job for some period of time / maybe have around for Puppet 4 agent simulation posterity as may be needed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15382", "fixedVersions": ["None"], "id": "15382", "issueType": "Improvement", "key": "SERVER-1802", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-27T11:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Take new OSS gatling recordings using json for Puppet 5", "timeSpent": "PT0S", "updated": "2018-03-21T08:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "This behavior appears to be consistent across all of the Ruby versions I have available, which rules out an implementation quick of JRuby:\n\n{code}\n#!/usr/bin/env ruby\n# addrinfo.rb\n\nrequire 'socket'\n\nputs \"Ruby engine: #{RUBY_ENGINE}, Ruby version: #{RUBY_VERSION}\"\n\naddr = Addrinfo.getaddrinfo('dione.exsilia.net', 'ssh', Socket::AF_UNSPEC, :STREAM)\nputs \"All address info: #{addr.inspect}\"\nputs \"First IP address: #{addr.first.ip_address}\"\n{code}\n\n{noformat}\n1.9.3-p551>> ./addrinfo.rb\nRuby engine: ruby, Ruby version: 1.9.3\nAll address info: [#<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 89.188.23.92\n\n2.1.10>> ./addrinfo.rb\nRuby engine: ruby, Ruby version: 2.1.10\nAll address info: [#<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 89.188.23.92\n\n2.2.3>> ./addrinfo.rb\nRuby engine: ruby, Ruby version: 2.2.3\nAll address info: [#<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 89.188.23.92\n\n2.3.3>> ./addrinfo.rb\nRuby engine: ruby, Ruby version: 2.3.3\nAll address info: [#<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 89.188.23.92\n\n2.4.0>> ./addrinfo.rb\nRuby engine: ruby, Ruby version: 2.4.0\nAll address info: [#<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 89.188.23.92\n\njruby-1.7.26>> ./addrinfo.rb\nRuby engine: jruby, Ruby version: 1.9.3\nAll address info: [#<Addrinfo: 89.188.23.92:22>, #<Addrinfo: 2a01:1b0:9201:0:0:0:0:92:22>]\nFirst IP address: 89.188.23.92\n{noformat}\n\nI'll look into the specification of the underlying {{getaddrinfo}} call because I don't know what the expected behavior should be", "created": "2017-05-04T10:55:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "[~accountid:617849975800630069754f0a] what do you get when you invoke {{getent ahosts dione.exsilia.net}} on the system running Puppetserver?\n\nIn addition, do you have a globally scoped ipv6 address on your Puppetserver host?", "created": "2017-05-04T13:55:00.000000"}, {"author": "617849975800630069754f0a", "body": "Here is the output from getent:\n\n{code:java}\nroot@puppet:~# getent ahosts dione.exsilia.net\n2a01:1b0:9201::92 STREAM dione.exsilia.net\n2a01:1b0:9201::92 DGRAM  \n2a01:1b0:9201::92 RAW    \n89.188.23.92    STREAM \n89.188.23.92    DGRAM  \n89.188.23.92    RAW    \n{code}\n\nThe Puppet server does have a global scoped IPv6 Address:\n\n\n{code:java}\n2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000\n    inet6 2001:67c:6b8:100::98/64 scope global \n       valid_lft forever preferred_lft forever\n    inet6 fe80::250:56ff:fe8e:ebc/64 scope link \n       valid_lft forever preferred_lft forever\n{code}\n\n", "created": "2017-05-05T01:54:00.000000"}, {"author": "617849975800630069754f0a", "body": "I ran the same script you ran, but I get different results:\n\nPuppet server (Debian 8):\n{code:java}\nroot@puppet:/tmp# ruby 1801.rb \nRuby engine: ruby, Ruby version: 2.1.5\nAll address info: [#<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 2a01:1b0:9201::92\n{code}\n\nRandom agent/node:\n\nDebian 8 machine:\n{code:java}\nroot@metis:/tmp# ruby 1801.rb \nRuby engine: ruby, Ruby version: 2.1.5\nAll address info: [#<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 2a01:1b0:9201::92\n{code}\n\nDebian 9 machine:\n{code:java}\nroot@ocs:/tmp# ruby test.rb \nRuby engine: ruby, Ruby version: 2.3.3\nAll address info: [#<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 2a01:1b0:9201::92\n{code}\n\nDebian 8 machine with Puppet from PuppetLabs (instead of Debian repo):\n\n{code:java}\n/opt/puppetlabs# puppet/bin/ruby /tmp/addrinfo.rb \nRuby engine: ruby, Ruby version: 2.1.9\nAll address info: [#<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 2a01:1b0:9201::92\n{code}\n", "created": "2017-05-05T02:03:00.000000"}, {"author": "617849975800630069754f0a", "body": "I am able to reproduce your output, but only on machines that do not have globally scoped IPv6 address:\n\n\n{code:java}\nroot@test:/tmp# ruby test.rb\nRuby engine: ruby, Ruby version: 2.1.5\nAll address info: [#<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 89.188.23.92\n\nroot@test:/tmp# ip -6 addr show\n1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 \n    inet6 ::1/128 scope host \n       valid_lft forever preferred_lft forever\n2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000\n    inet6 fe80::1c87:69ff:fe48:a5c9/64 scope link \n       valid_lft forever preferred_lft forever\n\n{code}\n", "created": "2017-05-05T02:18:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "I was seeing the prioritization of the ipv4 addresses because my developer laptop doesn't have an ipv6 address, but the output of {{getent ahosts dione.exsilia.net}} was what I expected on a node that does have ipv6 set up.\n\nCould you run {{/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver ruby addrinfo.rb}} on your Puppetserver node to isolate the behavior of {{getaddrinfo}} under JRuby? And does your {{/etc/gai.conf}} have any modifications or is it using the default configuration? The output of {{getent ahosts}} indicates that it's probably the default but I'd like to get as many things ruled out as possible.", "created": "2017-05-05T12:18:00.000000"}, {"author": "617849975800630069754f0a", "body": "JRuby seems to be returning me the incorrect results:\n\n{code:java}\nroot@puppet:/tmp# /opt/puppetlabs/server/apps/puppetserver/bin/puppetserver ruby addrinfo.rb\nRuby engine: jruby, Ruby version: 1.9.3\nAll address info: [#<Addrinfo: 89.188.23.92:22>, #<Addrinfo: 2a01:1b0:9201:0:0:0:0:92:22>]\nFirst IP address: 89.188.23.92\n{code}\n\nJust to clarify, when I run this script using 'regular' Ruby, I get different (the expected) output (also ran on the puppetserver0\n\n{code:java}\nroot@puppet:/tmp# ruby addrinfo.rb \nRuby engine: ruby, Ruby version: 2.1.5\nAll address info: [#<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 2a01:1b0:9201::92\n{code}\n\nMy /etc/gai.conf is default (all options are commented out, so effectively no configuration in /etc/gai.conf)\n", "created": "2017-05-07T03:24:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "I was able to confirm this behavior with JRuby on an instance with an ipv6 address and I see the same variation that you've seen:\n\n{noformat}\n\u2514> ruby addrinfo.rb \nRuby engine: jruby, Ruby version: 1.9.3\nAll address info: [#<Addrinfo: 89.188.23.92:22>, #<Addrinfo: 2a01:1b0:9201:0:0:0:0:92:22>]\nFirst IP address: 89.188.23.92\n\u250c[adrien\u262eyggdrasil]-(~)\n\u2514> rbenv shell system\n\u250c[adrien\u262eyggdrasil]-(~)\n\u2514> ruby addrinfo.rb  \nRuby engine: ruby, Ruby version: 2.1.5\nAll address info: [#<Addrinfo: [2a01:1b0:9201::92]:22 TCP (dione.exsilia.net:ssh)>, #<Addrinfo: 89.188.23.92:22 TCP (dione.exsilia.net:ssh)>]\nFirst IP address: 2a01:1b0:9201::92\n{noformat}\n\nI'm filing a bug report with the upstream JRuby project and will update this comment with the link when that's complete.\n\n**EDIT**: See https://github.com/jruby/jruby/issues/4594", "created": "2017-05-08T15:28:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Since this is an issue with JRuby itself and can't be bypassed by manipulating {{/etc/gai.conf}} we might not be able to do much about this, but for now I'll leave the ticket open while we figure out next steps.", "created": "2017-05-08T15:54:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Per headius's comment at https://github.com/jruby/jruby/issues/4594#issuecomment-300222602 this is a behavior of Java itself, and not something that neither the JRuby team nor we can directly fix. However headius did provide a workaround of providing the {{-DJava.net.preferIpv6Addresses=true}} option and I've verified it:\n\n{noformat}\n\u2514> jruby -J-Djava.net.preferIPv6Addresses=true addrinfo.rb \nRuby engine: jruby, Ruby version: 2.3.1\nAll address info: [#<Addrinfo: [2607:f8b0:4005:806::200e]:22>, #<Addrinfo: 216.58.195.238:22>]\nFirst IP address: 2607:f8b0:4005:806::200e\n{noformat}\n\nYou can add this setting to the Puppetserver JVM options by editing {{/etc/sysconfig/puppetserver}} and adding the appropriate option to the {{JAVA_ARGS}} variable.\n\nSince this can't be fixed by us nor upstream but has a simple workaround I'm going to close this issue", "created": "2017-05-09T15:17:00.000000"}], "components": ["Puppet Server"], "created": "2017-05-04T03:51:00.000000", "creator": "617849975800630069754f0a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6eb41187"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdruf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_36244837_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_436948462"}], "description": "I am facing an issue which I cannot really pinpoint properly. I have the following code in a Puppet module I am modifying:\n\n\n{code:java}\n    $backup_server_ipv6 = inline_template(\"<%= Addrinfo.getaddrinfo('dione.exsilia.net', 'ssh', Socket::AF_UNSPEC, :STREAM).first.ip_address %>\") \n\n    notify { \"ipv6: $backup_server_ipv6\": }\n{code}\n\nThis results in:\n\n{code:java}\nNotice: ipv6: 89.188.23.92\nNotice: /Stage[main]/Rsnapshot::Client::User/Notify[ipv6: 89.188.23.92]/message: defined 'message' as 'ipv6: 89.188.23.92'\n{code}\n\nI would expect an IPv6 address here.\n\nWhen I replace .first.ip_address with .last.ip_address I get the actual IPv6 address I am looking for. This seems contrary to the documentation which states:\n\n\"allowing the IPv6 information to be returned first if host is reachable via IPv6, and IPv4 information otherwise\"\n\nI am unable to reproduce this issue by a manually Ruby execution. eg on both the server and the client I get the same output:\n\n\n{code:java}\n# /opt/puppetlabs/puppet/bin/ruby  -e \"require 'socket'; p Addrinfo.getaddrinfo('dione.exsilia.net', 'ssh', Socket::AF_UNSPEC, :STREAM).first.ip_address \"\n\n\"2a01:1b0:9201::92\"\n{code}\n\nThis issue looks identical to me to issue [https://projects.puppetlabs.com/issues/21679], which should have been resolved 3 years ago.\n", "environment": "Debian Jessie, AMD64, dual-homed (native) systems.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16831", "fixedVersions": [], "id": "16831", "issueType": "Bug", "key": "SERVER-1801", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "617849975800630069754f0a", "resolution": "Won't Fix", "resolutionDate": "2017-05-09T15:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver - Addrinfo AF_UNSPEC incorrect results", "timeSpent": "PT0S", "updated": "2017-05-09T15:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I spent some time today looking into this and identified a few issues:\n\n1) The jar built for the trapperkeeper-webserver-jetty9 jar, which we had thought was build with JDK 8, was actually built with JDK 7 instead.\n\nFrom the [console output for that lein release job|https://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_trapperkeeper-webserver-jetty9_release-clj_master/2/console]:\n\n{noformat}\nCompiling 2 source files to /var/lib/jenkins/workspace/enterprise_trapperkeeper-webserver-jetty9_release-clj_master/target/classes\nwarning: /var/lib/jenkins/workspace/enterprise_trapperkeeper-webserver-jetty9_release-clj_master/tmp/m2-local/org/eclipse/jetty/jetty-util/9.4.4.v20170414/jetty-util-9.4.4.v20170414.jar(org/eclipse/jetty/util/component/LifeCycle.class): major version 52 is newer than 51, the highest major version supported by this compiler.\n  It is recommended that the compiler be upgraded.\nwarning: /var/lib/jenkins/workspace/enterprise_trapperkeeper-webserver-jetty9_release-clj_master/tmp/m2-local/org/eclipse/jetty/jetty-server/9.4.4.v20170414/jetty-server-9.4.4.v20170414.jar(org/eclipse/jetty/server/RequestLog.class): major version 52 is newer than 51, the highest major version supported by this compiler.\n  It is recommended that the compiler be upgraded.\nwarning: /var/lib/jenkins/workspace/enterprise_trapperkeeper-webserver-jetty9_release-clj_master/tmp/m2-local/org/eclipse/jetty/jetty-util/9.4.4.v20170414/jetty-util-9.4.4.v20170414.jar(org/eclipse/jetty/util/annotation/ManagedObject.class): major version 52 is newer than 51, the highest major version supported by this compiler.\n  It is recommended that the compiler be upgraded.\nwarning: /var/lib/jenkins/workspace/enterprise_trapperkeeper-webserver-jetty9_release-clj_master/tmp/m2-local/org/eclipse/jetty/jetty-util/9.4.4.v20170414/jetty-util-9.4.4.v20170414.jar(org/eclipse/jetty/util/annotation/ManagedOperation.class): major version 52 is newer than 51, the highest major version supported by this compiler.\n  It is recommended that the compiler be upgraded.\n4 warnings\n{noformat}\n\nThe core problem there is that the builders being used for the various Clojure / TK library projects only have a JDK 7 available currently.  QENG-4382 tracks some work that will need to be completed in order for JDK 8 to be available on those builders.\n\nAdditionally, there currently is no support in either the \"lein release\" or \"lein voom\" jobs for controlling the version of the JDK that the job should be run with.  I put up a [ci-job-configs PR|https://github.com/puppetlabs/ci-job-configs/pull/2830] which would add support for specifying the JDK version on a per-release/voom job basis. \n\nOnce both QENG-4382 is complete and the ci-job-config PR is merged, I think we'd need to do another tk-webserver-jetty9 release, built with JDK 8 this time, and promote that up into Puppet Server.\n\n2) As mentioned in the ticket description, the Puppet Server uberjar is still being built with JDK 7.\n\nIn this case, the underlying ezbake job has support for specifying the version of the JDK which can be used and the underlying builders do appear to have an appropriate JDK 8 build in place.  I put up a second, much simpler [ci-job-configs PR|https://github.com/puppetlabs/ci-job-configs/pull/2829] which ensures that JDK 8 is used instead of JDK 7 to build the Puppet Server uberjar.  If we were to merge this PR currently, though, we'd most likely break our builds for Jessie since the Jessie build server image does not currently have JDK 8 available on it.  RE-8816 would cover the work to enable JDK 8 builds for Jessie.\n\n3) As also mentioned in the ticket description, the Debian 8 additional build dependencies include openjdk7-jre | openjdk8-jre.  The openjdk7-jre dependency seems like it could be removed now since we should only be building for JDK 8.  I put up a [Puppet Server PR|https://github.com/puppetlabs/puppetserver/pull/1386] to do this.  Again, though, we probably shouldn't merge this until RE-8816 gets sorted out or we might break Jessie builds.\n\nSince we're waiting on resolutions to QENG-4382 and RE-8816 to make further progress on this issue, I'm going to move this ticket to \"needs information\".", "created": "2017-05-04T18:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Per work completed for RE-8816, our [latest Puppet Server builds|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_full-master/247/] for our full matrix (including Jessie) appear to now be built by JDK 8 and are passing all tests.  I inspected the [output of the lein ezbake job|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_packaging-os-clj_lein-ezbake_master/295/consoleFull] to see that JDK 8 was being selected for the build:\n\n{noformat}\njdk_switcher use oraclejdk8\n...\n+ echo 'Switching to oraclejdk8'\nSwitching to oraclejdk8\n+ echo '$JAVA_HOME will be set to '\\''/usr/lib/jvm/java-8-oracle'\\'''\n$JAVA_HOME will be set to '/usr/lib/jvm/java-8-oracle'\n+ echo '$PATH will be set to '\\''/usr/lib/jvm/java-8-oracle/bin:/usr/local/rvm/gems/ruby-2.3.1/bin:/usr/local/rvm/gems/ruby-2.3.1@global/bin:/usr/local/rvm/rubies/ruby-2.3.1/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'\\'''\n$PATH will be set to '/usr/lib/jvm/java-8-oracle/bin:/usr/local/rvm/gems/ruby-2.3.1/bin:/usr/local/rvm/gems/ruby-2.3.1@global/bin:/usr/local/rvm/rubies/ruby-2.3.1/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'\n+ export JAVA_HOME=/usr/lib/jvm/java-8-oracle\n+ JAVA_HOME=/usr/lib/jvm/java-8-oracle\n+ export PATH=/usr/lib/jvm/java-8-oracle/bin:/usr/local/rvm/gems/ruby-2.3.1/bin:/usr/local/rvm/gems/ruby-2.3.1@global/bin:/usr/local/rvm/rubies/ruby-2.3.1/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n+ PATH=/usr/lib/jvm/java-8-oracle/bin:/usr/local/rvm/gems/ruby-2.3.1/bin:/usr/local/rvm/gems/ruby-2.3.1@global/bin:/usr/local/rvm/rubies/ruby-2.3.1/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n+ java -version\njava version \"1.8.0_121\"\n{noformat}\n\nI cracked open the puppet-server-release.jar from one of the recent builds, http://builds.puppetlabs.lan/puppetserver/5.0.0.master.SNAPSHOT.2017.05.05T1134, and inspected one of the class files built from Puppet Server source, EnvironmentRegistry.class.  I confirmed from the appearance of 0x34 at bytes 6-7 that the .class file was built with a JDK 8 compiler, see the table on [this page|https://en.wikipedia.org/wiki/Java_class_file].\n\nNote that the work for QENG-4382 is still in progress and we do not yet have the ability to rebuild trapperkeeper-webserver-jetty9 with JDK 8, so holding this ticket in \"needs information\" for now.", "created": "2017-05-08T10:13:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We did a release of trapperkeeper-webserver-jetty9 2.0.1 which was built using OpenJDK 8.  A [resulting PR|https://github.com/puppetlabs/puppetserver/pull/1399] which bumped puppetserver to tk-jetty9 2.0.1 was merged.  The [resulting pipeline run|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/257/] following that merge was green.\n\nMarking this issue resolved.\n\n\n", "created": "2017-05-17T15:13:00.000000"}], "components": [], "created": "2017-05-03T16:24:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28e22170"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1738"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdr87:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Deprecation"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server is now being built with JDK 8 and will, therefore, no longer run on a Java 7 runtime. Puppet Server packages now depend upon openjdk-8-jre-headless exclusively, not openjdk-7-jre-headless or openjdk8-jre-headless.  See: SERVER-1738."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16036_*|*_3_*:*_1_*:*_25244844_*|*_5_*:*_1_*:*_3621728038_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1112023736_*|*_10006_*:*_1_*:*_68178223"}], "description": "It seems like the ezbake job building puppetserver master isn't using the {{JDK_AXIS }} param which we have set to {{oraclejdk8}} - it seems to still be using openjdk7. https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_packaging-os-clj_lein-ezbake_master/286/consoleFull\n\nWe should make sure it builds using jdk8. At the moment this may not cause problems, but once we have any java code in puppetserver that relies on jdk 8 it will be bad.\n\nWe should also remove the debian dependency on jdk 7 - https://github.com/puppetlabs/puppetserver/blob/master/resources/ext/ezbake.conf#L39 to ensure the puppetserver is installed with jdk 8.", "epicLinkSummary": "Drop support for running on JDK 7", "estimate": "PT0S", "externalId": "17192", "fixedVersions": ["SERVER 5.0.0"], "id": "17192", "issueType": "Task", "key": "SERVER-1800", "labels": [], "originalEstimate": "PT0S", "parent": "16508", "parentSummary": "Drop support for running on JDK 7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-05-17T15:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make sure puppetserver packages are being built with JDK 8", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "The team thinks we need the tests to be defined before this ticket is actionable. Is that right and what's the status? Is there a ticket we should block on, [~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8]?", "created": "2017-06-14T10:52:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "Yeah, this isn't actionable until we have that full platform integration suite. That's not likely to appear until the acceptance audit is underway, AFAIK (unless devs push it forward sooner than QA gets to it). [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] Is there a ticket we can block on for this yet?", "created": "2017-06-14T11:36:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Per team backlog grooming, given we are already integration testing against pdb and puppet-agent, we're going to close this and can reopen when we need that work.", "created": "2017-08-28T17:07:00.000000"}], "components": [], "created": "2017-05-02T12:26:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14758f2e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1834"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9nyn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16165524_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_10195869207"}], "description": "For Platform 5, we want to make sure that the full platform is being integrated more regularly. This means that we should consider any integration failure to be a failure of the component.\n\nWe discussed basing this on PuppetDB's integration smoke job.", "epicLinkSummary": "Integrate Puppet Server into the platform more regularly", "estimate": "PT0S", "externalId": "16830", "fixedVersions": [], "id": "16830", "issueType": "Task", "key": "SERVER-1799", "labels": [], "originalEstimate": "PT0S", "parent": "15680", "parentSummary": "Integrate Puppet Server into the platform more regularly", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Won't Do", "resolutionDate": "2017-08-28T17:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gate puppetserver promotion on a platform integration test", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f][~accountid:557058:104b5720-714d-4539-b455-df472251ec89] This is the ticket. Should it say \"against latest\"? Or just move this out and make a new ticket for that?", "created": "2017-06-16T11:27:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I think saying \"against latest\" would be good. [~accountid:62438584f813eb006928dc81]?", "created": "2017-06-16T12:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yep, agreed.  I think we should target running against \"latest\" and not just \"latest nightly\".", "created": "2017-06-16T14:31:00.000000"}], "components": [], "created": "2017-05-02T12:26:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ffc3f2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1834"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9nxj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16171332_*|*_10007_*:*_1_*:*_1187795588_*|*_3_*:*_1_*:*_16108022_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_3630092194_*|*_10006_*:*_1_*:*_244856929"}], "description": "For Platform 5, we want to make sure that the full platform is being integrated more regularly. As part of that, we should stop pinning Puppetserver to specific agent and DB versions, and just pull in the promoted latest version.", "epicLinkSummary": "Integrate Puppet Server into the platform more regularly", "estimate": "PT0S", "externalId": "16220", "fixedVersions": ["SERVER 5.1.0"], "id": "16220", "issueType": "Task", "key": "SERVER-1798", "labels": [], "originalEstimate": "PT0S", "parent": "15680", "parentSummary": "Integrate Puppet Server into the platform more regularly", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2017-06-30T11:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver should run its acceptance against latest puppet-agent and PuppetDB", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "created": "2017-06-09T20:41:00.000000", "name": "dashboard-sample-puppetserver-metrics-dashboard.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11046"}], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Attached a grafana dashboard to be used for OSS Puppet Server. This will need to go in our docs somewhere....\n\nTo test this, I modified the docker setup in [puppet metrics viewer|https://github.com/puppetlabs/puppet-metrics-viewer]. My branch can be found [here|https://github.com/puppetlabs/puppet-metrics-viewer/tree/setup-grafana-for-puppetserver] - running the `build-grafana.sh` script will stand up graphite + grafana, with grafana visible at {{localhost:3000}} with username/password {{admin/admin}} and with this dashboard added as {{Puppet Server}}.\n\nI ran Puppet Server locally from source and connected it to PuppetDB (also running from source locally), and pointed it at the Graphite instance provided by docker.\n\nI then added the following to my {{site.pp}}:\n\n{code}\nnode default {\n  @@notify { \"Hello\": }\n  $counts = puppetdb_query(['from', 'catalogs', ['extract', [['function', 'count']]]])\n  notice($counts)\n  notify { \"countsssss are $counts\": }\n}\n\nNotify <<| |>>\n{code}\n\nThis code triggers a puppetdb query and a puppetdb resource search (to collect the exported notify resource), allowing those to be viewable in the new {{External HTTP Communications}} graph.", "created": "2017-06-09T20:47:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Closing as resolved since the PR was reviewed and merged.", "created": "2017-06-22T17:46:00.000000"}], "components": [], "created": "2017-05-02T10:59:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56a78a9a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3eyn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The json Grafana dashboard attached to this ticket needs to be added to the docs in the metrics docs.\n\nExample Grafana dashboard for Puppet Server. Puppet Server 5 has metrics for the first time, and users can download and modify this dashboard (changing the hostname from `master.example.com` to their master's `server-id`) and use it in their Grafana instance - in conjunction with turning on Graphite metrics - to get a very pretty dashboard that is hopefully useful."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_87167163_*|*_3_*:*_1_*:*_1103318192_*|*_10009_*:*_1_*:*_887941865_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2352440846"}], "description": "Update the grafana dashboard included in the docs for open source Puppet Server - this probably will just be removing the file sync metrics graph and the classifier http client metric.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "15994", "fixedVersions": ["SERVER 5.0.0"], "id": "15994", "issueType": "Task", "key": "SERVER-1797", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-22T17:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update grafana dashboard for open source server", "timeSpent": "PT0S", "updated": "2017-06-22T17:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This was addressed in the bump to JRuby 9.1.11.0 for SERVER-1840.  Marking this as resolved.", "created": "2017-06-15T13:07:00.000000"}], "components": [], "created": "2017-04-28T15:13:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22f8ed84"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdo0n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We haven't released versions of Puppet Server with this leak, fortunately, so we shouldn't need to document it in the release notes."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_352324242_*|*_5_*:*_1_*:*_1123780894_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_3787374844"}], "description": "After each {{ScriptingContainer}} instance is recycled in JRuby 9k (at least as of 9.1.8.0), at least 5 additional strings are added to the JVM's {{DeleteOnExitHook}} hash - one for each of the temp jars JRuby's ClassLoader creates a copy of which should be deleted when the Java process is terminated.  Over time, this could theoretically OOM a Puppet Server since the hash could grow without bounds when a user has set the {{max-requests-per-instance}} jruby setting to anything other than 0.\n\nI submitted a [PR|https://github.com/jruby/jruby/pull/4578] to the JRuby project with an attempt to address this issue.  This ticket just serves to track the upstream JRuby project work.\n\nThis ticket is also related to the stdlib file descriptor leak described in SERVER-1777.", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "15674", "fixedVersions": ["SERVER 5.0.0"], "id": "15674", "issueType": "Bug", "key": "SERVER-1792", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-15T13:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby9k ClassLoader deleteOnExit / temp file leak", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [], "components": [], "created": "2017-04-27T11:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18565426"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymmjb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21763927_*|*_3_*:*_1_*:*_500389235_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_24729862314"}], "description": "The 010-puppetserver-cli/subcommand/foreground.rb test has failed both of the known times it has been run for Yakkety.\n\nHere is a link to one failure:\n\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-master/LAYOUT=ubuntu1610-64ma-32a,LDAP_TYPE=default,label=beaker/277/consoleFull\n\nIt appears that the Puppet Server process is failing to startup at the point where the settings that the JRubyPool is being initialized with are typically written to the log:\n\n{noformat}\n2017-04-27 09:29:37,953 DEBUG [async-dispatch-2] [p.t.internal] Running lifecycle function 'init' for service ':PuppetServerConfigService'\n2017-04-27 09:29:37,978 ERROR [clojure-agent-send-pool-0] [p.t.internal] shutdown-on-error triggered because of exception!\n  java.lang.ClassCastException: clojure.pprint.proxy$java.io.Writer$IDeref$PrettyFlush$4923d848 cannot be cast to clojure.pprint.PrettyFlush\n  \tat clojure.pprint$pretty_writer$fn__4765.invoke(pretty_writer.clj:391)\n  \tat clojure.pprint.proxy$java.io.Writer$IDeref$PrettyFlush$4923d848.flush(Unknown Source)\n  \tat clojure.core$flush.invokeStatic(core.clj:3609)\n  \tat clojure.core$flush.invoke(core.clj:3603)\n  \tat clojure.core$prn.invokeStatic(core.clj:3620)\n  \tat clojure.core$prn.doInvoke(core.clj:3612)\n  \tat clojure.lang.RestFn.invoke(RestFn.java:397)\n  \tat clojure.pprint$pprint.invokeStatic(pprint_base.clj:252)\n  \tat clojure.pprint$pprint.invoke(pprint_base.clj:241)\n  \tat puppetlabs.kitchensink.core$pprint_to_string.invokeStatic(core.clj:118)\n  \tat puppetlabs.kitchensink.core$pprint_to_string.invoke(core.clj:116)\n  \tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33529$prime_pool_BANG___33534$fn__33538.invoke(jruby_agents.clj:57)\n  \tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33529$prime_pool_BANG___33534.invoke(jruby_agents.clj:48)\n  \tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33775$send_prime_pool_BANG___33780$fn__33781$fn__33782.invoke(jruby_agents.clj:230)\n  \tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:393)\n  \tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:368)\n  \tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invokeStatic(internal.clj:378)\n  \tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:368)\n  \tat puppetlabs.trapperkeeper.internal$eval20477$shutdown_service__20482$fn$reify__20484$service_fnk__11281__auto___positional$reify__20489.shutdown_on_error(internal.clj:433)\n  \tat puppetlabs.trapperkeeper.internal$eval20407$fn__20419$G__20399__20427.invoke(internal.clj:401)\n  \tat puppetlabs.trapperkeeper.internal$eval20407$fn__20419$G__20398__20436.invoke(internal.clj:401)\n  \tat clojure.core$partial$fn__533.invoke(core.clj:2516)\n  \tat clojure.core$partial$fn__533.invoke(core.clj:2515)\n  \tat puppetlabs.services.jruby_pool_manager.impl.jruby_agents$eval33504$send_agent__33509$fn__33510$agent_fn__33511.invoke(jruby_agents.clj:42)\n  \tat clojure.core$binding_conveyor_fn$fn__438.invoke(core.clj:1941)\n  \tat clojure.lang.AFn.applyToHelper(AFn.java:154)\n  \tat clojure.lang.RestFn.applyTo(RestFn.java:132)\n  \tat clojure.lang.Agent$Action.doRun(Agent.java:114)\n  \tat clojure.lang.Agent$Action.run(Agent.java:163)\n  \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n  \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n  \tat java.lang.Thread.run(Thread.java:745)\n{noformat}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15993", "fixedVersions": [], "id": "15993", "issueType": "Bug", "key": "SERVER-1791", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2018-02-13T16:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "foreground test fails on yakkety", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR which fixes the logic which had failed to find / install the latest puppet-agent build properly and corrections to account for the new {{use-legacy-auth-conf}} setting default of {{false}} was integrated.  Gatling test is being re-run and passing without any KOs so far with [this job|http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest/31/].  This appears to fix the original issues, then.  Can open a follow-up issue if anything new pops up.", "created": "2017-05-03T11:51:00.000000"}], "components": [], "created": "2017-04-26T23:48:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48e1501b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdmkn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_401045430_*|*_10007_*:*_1_*:*_93642311_*|*_3_*:*_1_*:*_67133008_*|*_5_*:*_1_*:*_0"}], "description": "The last 4 runs of the oss-puppetserver-latest job on the [perf-driver55 node|http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest/] all show 100% KOs for each of the requests but the resulting job is showing in Jenkins as passing.  We should figure out why the KOs are happening and also look into whether we can allow for the result of the Jenkins job to show failure when any KOs occur.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16219", "fixedVersions": [], "id": "16219", "issueType": "CI Blocker", "key": "SERVER-1790", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-05-03T11:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "oss-puppetserver-latest test failing for last 4 runs", "timeSpent": "PT0S", "updated": "2017-05-03T11:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The three tickets still open are actively being worked on. They're mostly around answering remaining questions than prompting more code changes. Hopefully they will wrap up in the next week or so.", "created": "2018-03-20T15:08:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Yup, the open tickets should give us more answers as to how to best tune for more environments instead of just the simulated one we had, but it's not anything that needs to ship, these are going to be settings values.", "created": "2018-03-20T15:24:00.000000"}], "components": ["Puppet Server"], "created": "2017-04-26T15:47:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@576b64c6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Characterize JRuby performance problems"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynben:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19439643117_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_10609698398"}], "description": "Performance goal is to meet parity with Jruby 1.7\n\nWhat we know:\n- Problem is with JRuby's new interpreter. They expect us to use JIT, which has diminishing returns with max-requests-per-instance (a necessary setting in PE because customer code can be leaky).\n- We know there's a lot more garbage than before, and that in 9k we spend much more time in GC pauses. It's known by maintainers that 9k uses more memory.\n- We get better behavior with JIT no matter what. Turning this on seems safe.\n\nOur approach going forward:\n- Try to optimize max-requests-per-instance behavior by staggering jruby instance lifecycles\n- Investigate further where JRuby interpreter might be poorly optimized by profiling particular functionality in Puppet server in smaller chunks (since we only saw the big aggregation from Gatling before)\n- Investigate code patterns in Puppet: benchmark with jruby to see if there are patterns we use that are particularly problematic\n\nWe still want to decide:\n- How we're going to mitigate or optimize the problem after we know more about the nature of it: tuning jruby compiler and JVM, moving ruby code into clojure, improving puppet's code\n- What we're going to test in terms of catalogs and environments: both for making sure our solution is sufficient and for watching for regressions", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15992", "fixedVersions": ["SERVER 5.3.0"], "id": "15992", "issueType": "Epic", "key": "SERVER-1789", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Done", "resolutionDate": "2018-04-09T10:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Characterize JRuby performance problems", "timeSpent": "PT0S", "updated": "2018-04-09T10:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c", "attachments": [], "comments": [{"author": "5a15cc24b87a44359db09635", "body": "For reference, the relevant part of [RFC 2818|https://tools.ietf.org/html/rfc2818] appears to be section 3.1. Specifically:\nbq. If a subjectAltName extension of type dNSName is present, that MUST be used as the identity. Otherwise, the (most specific) Common Name field in the Subject field of the certificate MUST be used. Although the use of the Common Name is existing practice, it is deprecated and Certification Authorities are encouraged to use the dNSName instead.\n\nSo, if {{subjectAltName}} is present only values in there are used, and usage of the {{Common Name}} at all is deprecated.", "created": "2017-12-11T10:13:00.000000"}, {"author": "623e76b0866b810069e575bf", "body": "This bug is blocking our infrastructure update to puppet 5 (from puppet 3.8.7).\nIt is extremely convenient in auto-sign environments to re-use the puppet certificates for services such as apache, or in our case etcd.\n\nCurrently, I monkey patch using the following code, but now that it's all in java (closure) I'm hesitant to do it again.\n\n{code:ruby}\nrequire 'puppet/ssl/certificate_factory'\n\n# subjectAltName must always be used (RFC 3280 4.2.1.7, 1. paragraph)\n# Allows reuse of puppet managed certs for other internal services\n\nmodule Puppet::SSL::CertificateFactory\n  class <<self\n    alias :__add_extensions_to :add_extensions_to\n  end\n\n  def self.add_extensions_to(cert, csr, issuer, extensions)\n    unless issuer.is_a?(OpenSSL::X509::Request)\n      requested_exts = csr.request_extensions.inject({}) do |hash, re|\n        if re[\"oid\"] == 'subjectAltName'\n          names = re[\"value\"].split(/\\s*,\\s*/).map(&:strip) + [\"DNS:#{csr.name}\"]\n          re[\"value\"] = names.sort.uniq.join(\", \")\n        end\n        hash[re[\"oid\"]] = [re[\"value\"], re[\"critical\"]]\n        hash\n      end\n      unless requested_exts.key?(\"subjectAltName\")\n        extensions[\"subjectAltName\"] = [\"DNS:#{csr.name}\", nil]\n      end\n    end\n    self.__add_extensions_to(cert, csr, issuer, extensions)\n  end\nend\n{code}\n", "created": "2018-01-17T12:00:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "Just for the reference: One related PR with a possible solution is at https://github.com/puppetlabs/puppet/pull/6438", "created": "2018-07-23T15:56:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Seems like this would be best handled in the clojure CA implementation, to ensure that certificates it issues always contain a subject alt name. /cc [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]. This way it would work with any version of agent.", "created": "2018-09-26T19:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We currently add the CN for any cert that has other alt names. Do you want it to always add at least one alt name, the CN? (also we only have a Clojure implementation now :) )\n\nEdit: read the ticket, see that that is what you meant. Will put this on the radar.", "created": "2018-09-26T19:54:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Do we officially support submitting CSR to third party PKI like letencrypt? If so, I'm wondering if the agent should also be updated the generate the CSR correctly?", "created": "2019-04-08T12:36:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "hey people. Is is correct that this is still not implemented in Puppetserver 7? Or does newer puppet-agent always add their common name as subject alternative name as well to the certificate?", "created": "2020-10-21T01:48:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It is not, though thanks for bringing it forward again, there might still be time to do this.\n\nThe biggest open question for me is whether to just flip {{allow-subject-alt-names}} to true by default, as opposed to updating it to allow a single or a specific alt name. I think we are already doing this in PE at this point. Does anyone here have concerns about changing that default? I'll also be checking in with our security folks.", "created": "2020-10-21T10:57:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "hey [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69],\nmy personal opinion is that SAN should be allowed/enabled by default if it's identical to the common name. if the SAN contains multiple/different names it should still default to false.", "created": "2020-10-21T11:09:00.000000"}, {"author": "557058:9d1d227b-434f-481d-8279-a026a8ca4bbd", "body": "Recent release of golang 1.15 has completely deprecated certs without SANs, you have to set a debug flag to override that and even that will not be supported long.\n\nThis means things like the PuppetDB API would become inaccessible to standard go applications.\u00a0 Would really like to see this fixed.\n\n\u00a0\n\nReference https://golang.org/doc/go1.15#commonname", "created": "2020-12-28T13:57:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "hey people,\nwhat are the chances that this will be included in puppet 7.2 or 7.3?", "created": "2021-01-06T07:20:00.000000"}, {"author": "5f0d5b350b38b1002298860c", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0you made the last status change to this ticket in 2019. Do you know if there is any new information about this topic available?\u00a0", "created": "2021-01-06T09:30:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'll bring this up in our grooming this week.", "created": "2021-01-06T10:16:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] will add more details on a path forward for fixing this. ", "created": "2021-01-08T12:07:00.000000"}, {"author": "5f0d5b350b38b1002298860c", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0do you have an rough estimate for a possible release or start of developement of this feature? I'm planning a larger puppet deployment and I have to make decisions based on the progress of this ticket.\n\nThis is no call for faster progress. It is okay if you say not this year. It is just about having some kind of information for planning.\n\n\u00a0", "created": "2021-01-18T02:02:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're planning to work on this in the next sprint or two, after the recent conversation. So I would expect it to be released in the next quarter to both the Puppet 6/PE 2019.8 and Puppet 7/PE 2021 streams.", "created": "2021-01-19T09:40:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c] would you mind putting some release notes on this?", "created": "2021-02-09T17:39:00.000000"}], "components": [], "created": "2017-04-26T12:01:00.000000", "creator": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@151007ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0678v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When the Puppetserver now signs any incoming CSR, it will always add an extension for subject-alternative-name, or SAN, when signing. Then SAN extension will always contain AT LEAST the Common Name, or CN, as a dns-name on the certificate. \n\nIn the case when the certficate signing request, or CSR, comes with its own SAN extensions, the Puppetserver will sign those that came with the request and ensure that the CN for the CSR is also included in the SAN extension."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Dec/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_69615145_*|*_1_*:*_1_*:*_1688703438_*|*_10007_*:*_1_*:*_94130725_*|*_3_*:*_1_*:*_879589967_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_3550811544_*|*_10005_*:*_2_*:*_113474545287"}], "description": "Recently Chrome 58 was released and https://www.chromestatus.com/feature/4981025180483584 states the following:\n\nbq. RFC 2818 describes two methods to match a domain name against a certificate - using the available names within the subjectAlternativeName extension, or, in the absence of a SAN extension, falling back to the commonName. The fallback to the commonName was deprecated in RFC 2818 (published in 2000), but support still remains in a number of TLS clients, often incorrectly.\n\nUnfortunately this means that PuppetCA-issued certificates are considered invalid by Chrome 58, because by default they don't have the {{subjectAlternativeName}} extension and therefore don't include the certificate's common name (CN) as a SAN field.\n\nThe implication is that many (usually internal) services that use PuppetCA-issued certificates as server certificates are now inaccessible with Chrome. Typical examples include Foreman, Puppetboard and other such services. I imagine this is also a problem for PE and its various web interfaces, but we are not PE users so I can't say for sure.\n\nIn order for PuppetCA certificates to be compliant with RFC 2818 the SAN extension should always be added and it should contain at least one {{DNS:}} entry matching the certificate's common name (CN) when issuing a new certificate.\n\nThis probably also means that the autosign restriction (which requires the {{--allow-dns-alt-names}} flag for {{puppet cert sign}} when SANs are present) should be relaxed and only apply when the more than one SAN is present that does not match the certificate's CN.\n\nExample certificate as it should look:\n\n{code}\nCertificate:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 6 (0x6)\n    Signature Algorithm: sha256WithRSAEncryption\n        Issuer: CN=Puppet CA: puppet.example.com\n        ...\n        Subject: CN=foo.example.com\n\n        ...\n        X509v3 extensions:\n            Netscape Comment: \n                .(Puppet Ruby/OpenSSL Internal Certificate\n            X509v3 Subject Alternative Name: \n                DNS:foo.example.com\n        ...\n{code}", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "15991", "fixedVersions": ["SERVER 6.15.3", "SERVER 7.1.0"], "id": "15991", "issueType": "Improvement", "key": "SERVER-2338", "labels": [], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c1aa8056-6473-479b-bb79-3ce6e45bce2f", "resolution": "Fixed", "resolutionDate": "2021-02-10T12:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PuppetCA should issue certs with Subject Alternative Name containing the CN for compliance with RFC 2818", "timeSpent": "PT0S", "updated": "2022-01-05T16:35:00.000000", "votes": "6", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2017-04-24T15:45:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "pe-puppet-server-extensions"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cdf2929"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdjrj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_519728_*|*_10007_*:*_1_*:*_89954668_*|*_3_*:*_1_*:*_617575_*|*_5_*:*_1_*:*_5516026988_*|*_6_*:*_1_*:*_0"}], "description": "The collect_default_metrics acceptance test fails when run in the PE Puppet Server acceptance test pipeline because the grafanadash module attempts to setup the graphite web server on port 80 but port 80 is already taken by the PE console on a monolithic PE installation.  The test should be updated to setup the graphite web server on a different port so that it can be run in the PE Puppet Server acceptance test pipeline.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15673", "fixedVersions": ["SERVER 5.0.0"], "id": "15673", "issueType": "CI Blocker", "key": "SERVER-1788", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-04-25T17:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "collect_default_metrics test fails in PE because of port 80 collision", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-04-24T14:40:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9b6c5f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hze5n3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_75642176_*|*_1_*:*_1_*:*_699784041_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2590339189"}], "description": "The Puppet 3 compatibility tests fail to install Puppet 3.8 on EL with Beaker 3.12+. This is due to the change in https://github.com/puppetlabs/beaker/commit/688a1c8b4042723fb578f2ded19e63c8e0c32ed4#diff-27026e05f9aa40b65dcfab171a40e73c.\n\nIn the Puppet 3 compat tests we set {{type}} to {{aio}}. However, the agent we run is technically not {{aio}} - it needs to install Puppet 3.8. So we need the non PC1 url. We need to figure out how to set the agent/modify the agent so it has {{type}} {{foss}} or {{nil}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14722", "fixedVersions": ["SERVER 5.0.0"], "id": "14722", "issueType": "Bug", "key": "SERVER-1787", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-02T13:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix Puppet 3 Compatibility tests error installing puppet 3.8 on EL with Beaker 3.12", "timeSpent": "PT0S", "updated": "2017-06-21T12:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Since Adrien is out and I could use a gentle intro Jeremy asked me to address a lingering comment on the open PRs. They're linked in the side bar.", "created": "2017-05-30T20:53:00.000000"}], "components": [], "created": "2017-04-21T17:49:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28df4a92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylvpj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_427725635_*|*_1_*:*_1_*:*_341920142_*|*_10007_*:*_1_*:*_1708407615_*|*_3_*:*_1_*:*_417946630_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_862863756_*|*_10005_*:*_1_*:*_102716478"}], "description": "Similar to the Puppet 3 compatibility tests we run, we should run some tests with a Puppet 4 agent running against a Puppet Server 5 master.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16521", "fixedVersions": ["SERVER 2.8.0", "SERVER 5.0.0", "SERVER 5.1.0"], "id": "16521", "issueType": "Task", "key": "SERVER-1786", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-05T10:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add jenkins job to test compatibility of Puppet 4 agent running against Puppet Server 5", "timeSpent": "PT0S", "updated": "2017-09-08T10:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4], [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - The puppetserver team talked about this and was thinking for now about adding the work to setup jessie-backports, etc. as a pre-suite step in the Puppet Server pipeline.  But the disadvantage of doing that is that presumably other teams would need to do something similar in each of their pipelines as well.  Do you think we should try to get this baked into our vmpooler images / somehow integrate into beaker to make this more common.\n\n/CC [~accountid:63d40628f6e1b543161789a7] and [~accountid:557058:18109e62-1b97-4fa3-8217-9c25de3a4710].", "created": "2017-04-21T12:09:00.000000"}], "components": [], "created": "2017-04-21T12:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32013057"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1738"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdhsf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_344441099_*|*_1_*:*_1_*:*_18490027_*|*_5_*:*_1_*:*_5516586877_*|*_6_*:*_1_*:*_0"}], "description": "After updating Puppet Server to use openjdk-8 dependency changes in the newest ezbake, we started seeing CI failures related to the inability to install openjdk-8-jre-headless on Jessie:\n\nFrom [this job|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-master/258/LAYOUT=debian8-64ma-32a,LDAP_TYPE=default,label=beaker/testReport/junit/(root)/acceptance_suites_pre_suite_foss/70_install_puppet_rb/], we see:\n\n{noformat}\nThe following packages have unmet dependencies:\n\t puppetserver : Depends: openjdk-8-jre-headless but it is not installable\n{noformat}\n\nThe problem appears to be that for Jessie, we need to configure the jessie-backports repo and install openjdk-8-jre-headless via it.  On the VM that failed to install puppetserver, I did the following:\n\n{noformat}\necho \"deb http://ftp.debian.org/debian jessie-backports main\" > /etc/apt/sources.list.d\napt-get update\napt-get -t jessie-backports install \"openjdk-8-jdk-headless\"\napt-get install --force-yes  -y puppetserver\n{noformat}\n\nNote that I had to do the \"apt-get -t jessie-backports\" command before the puppetserver one because apt did not appear to want to install openjdk-8-jdk-headless from the backports repo without it:\n\n{noformat}\nSome packages could not be installed. This may mean that you have\nrequested an impossible situation or if you are using the unstable\ndistribution that some required packages have not yet been created\nor been moved out of Incoming.\n{noformat}", "epicLinkSummary": "Drop support for running on JDK 7", "estimate": "PT0S", "externalId": "15381", "fixedVersions": ["SERVER 5.0.0"], "id": "15381", "issueType": "CI Blocker", "key": "SERVER-1785", "labels": [], "originalEstimate": "PT0S", "parent": "16508", "parentSummary": "Drop support for running on JDK 7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-04-25T16:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Debian 8 test failure with openjdk-8-jre-headless missing", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "/cc [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]", "created": "2017-04-21T07:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I don't think there's any work for us to do for Fedora 23 or EL 4 here since they were already not in our build matrix for Puppet Server.\n\nWe had already started the process of removing Ubuntu 12.04 for OSS Puppet Server's master branch for Puppet 5.  Since it sounds like the plan is to remove it for all future releases (even Zs), we could remove this both for the other OSS Puppet Server branches (with just stable being active currently) as well as for all PE Puppet Server branches.", "created": "2017-04-21T12:35:00.000000"}], "components": [], "created": "2017-04-21T07:02:00.000000", "creator": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a837e07"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdhi7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24030347_*|*_3_*:*_1_*:*_357714121_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5595"}], "description": "Per Puppet\u2019s [Platform Support Lifecycle|https://puppet.com/content/platform-support-lifecycle], the following OS platforms have reached end-of-life:\n\n* Ubuntu 12.04\n* Fedora 23\n* EL 4\n\nPlease update projects and CI pipelines to remove these EOL OS platforms (if applicable).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15147", "fixedVersions": [], "id": "15147", "issueType": "Task", "key": "SERVER-1784", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "resolution": "Fixed", "resolutionDate": "2017-04-25T17:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Platform EOL for EL4, Fedora 23, and Ubuntu 12.04", "timeSpent": "PT0S", "updated": "2017-04-25T17:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4], [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], or [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] - any thoughts on this one?", "created": "2017-04-19T10:51:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "Missed something silly, PR/testing now.", "created": "2017-04-19T11:48:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "This should be fixed now on all of the deb builders. The PR hasn't been merged yet but running on that branch on all of the builders.", "created": "2017-04-19T13:55:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] have you tried reenabling yakkety yet?", "created": "2017-04-20T15:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] No, I hadn't yet - thanks for the ping.  [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7], whenever you get a minute, could you add yakkety back into the ci-job-config matrix for puppetserver so we can see if it will work now?", "created": "2017-04-20T16:09:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Readded in https://github.com/puppetlabs/ci-job-configs/pull/2762", "created": "2017-04-25T16:51:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "PuppetDB doesn't yet have packages for yakkety, PR 1380 (https://github.com/puppetlabs/puppetserver/pull/1380) drops yakkety from the {{puppetdb_supported_platforms}} list.", "created": "2017-04-25T16:52:00.000000"}], "components": [], "created": "2017-04-19T10:50:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f17de3b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdfq7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_433609827_*|*_1_*:*_1_*:*_108232846_*|*_3_*:*_1_*:*_69424273_*|*_6_*:*_1_*:*_0"}], "description": "For the first time after upgrading Puppet Server's ezbake dependency to 1.2.0, we experimented with having ezbake try to do builds for yakkety.  [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] had indicated that he thought it could work.  However, the build attempt failed, apparently due to the following error:\n\n{noformat}\ncannot canonicalize filename /var/cache/pbuilder/base-yakkety-i386.cow, does not exist\n{noformat}\n\nSee [this CI job|http://jenkins-release.delivery.puppetlabs.net/job/puppetserver-packaging-2017-04-19-16-19-37-5.0.0.master.SNAPSHOT.2017.04.19T1619/command=pl_deb%20COW=base-yakkety-i386.cow/1/] for more details.\n\nNot sure if including yakkety in Puppet Server builds is viable yet.  We may just avoid including it for now if not.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14721", "fixedVersions": ["SERVER 5.0.0"], "id": "14721", "issueType": "CI Blocker", "key": "SERVER-1783", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-04-26T12:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to build ezbake packages for yakkety", "timeSpent": "PT0S", "updated": "2017-06-08T19:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4], [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], or [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] - could one of you look into this for us?  [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] indicated that he thought we might need to be running -SP2- SP1 of SLES 12 in order to pull in the java-1.8.0-openjdk-headless package properly.  Not sure if our rpm builders in CI are actually doing that yet or, if not, what it would take to get that to happen.", "created": "2017-04-19T10:45:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "Yep, my bad - I updated the PE mocks but not the FOSS mocks to use sles-12-sp2. Fixes are being submitted now.", "created": "2017-04-19T11:53:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "This should be fixed on all the RPM builders at this point.", "created": "2017-04-19T12:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] and [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] - thanks for jumping on this so quickly.  Does this mean that we should be good to go for trying to build SLES12 again for Puppet Server?  Are any ezbake changes required for the fix(es)?", "created": "2017-04-19T13:54:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] shouldn't need any ezbake changes, just missed a few module updates for setting up the mocks/cows", "created": "2017-04-19T13:56:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "And yup, should be good to try again!", "created": "2017-04-19T13:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Hi [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab], we turned SLES-12 back on for our overnight run but appear to have gotten the same failure:\n\n{noformat}\nError: No Package found for java-1.8.0-openjdk-headless\n{noformat}\n\nSee [this job|http://jenkins-release.delivery.puppetlabs.net/job/puppetserver-packaging-2017-04-20-10-11-28-5.0.0.master.SNAPSHOT.2017.04.20T1011/command=pl_mock%20MOCK=pl-sles-12-x86_64/1/console] for more details.\n\nIs there anything on our side you can see that might be causing this?\n\nThanks again!", "created": "2017-04-20T09:37:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "Oh, looks like we need to tweak the package name for sles-12:\n{code}\nhttp://osmirror.delivery.puppetlabs.net/sles-12-sp2-x86_64/RPMS.os/java-1_8_0-openjdk-headless-1.8.0.101-14.3.x86_64.rpm\n{code}\nWe'll submit a fix to ezbake ASAP", "created": "2017-04-20T09:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Cool, thanks [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4].  fyi, I moved this JIRA ticket to the \"System Engineering\" team so that it would appear on our scrum board for visibility but we can move things around if needed to track this from the \"Release Engineering\" side.", "created": "2017-04-20T10:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "With the bump to lein-ezbake 1.2.1, it appears that SLES 12 is building again - see [this build directory|http://builds.puppetlabs.lan/puppetserver/5.0.0.master.SNAPSHOT.2017.04.20T1936/artifacts/sles/12/PC1/x86_64/].  I'll keep this ticket open long enough to confirm that build gets through CI successfully but looking good at this point.  Thanks again [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] and [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4]!", "created": "2017-04-20T15:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Now that we've moved beyond just having the ability to build SLES 12 packages, we're getting failures installing the packages in CI.  Here's the error, from [this Jenkins job|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-master/258/LAYOUT=sles12-64m-64a,LDAP_TYPE=default,label=beaker/testReport/junit/(root)/acceptance_suites_pre_suite_foss/70_install_puppet_rb/], that we see:\n\n{noformat}\nProblem: nothing provides java-1_8_0-openjdk-headless needed by puppetserver-5.0.0.master-0.1SNAPSHOT.2017.04.21T1009.sles12.noarch\n{noformat}\n\nWhen I logged onto the failing VM, it appeared to me that the VM had not been upgraded to SP1:\n\n{noformat}\nSUSE Linux Enterprise Server 12 (x86_64)\nVERSION = 12\nPATCHLEVEL = 0\n{noformat}\n\nWe definitely need SP1 for JDK 1.8 on SLES 12, right, [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e]?  I don't see any flavor of java 1.8 on the SLES 12 SP 0 VM when I do a {{zypper search -s java}}, so it doesn't seem to be an issue of just a typo in our version dependency.\n\nDo we need to work with SysOps to get SP1 used as a base on the SLES 12 pooler VMs? \n\n", "created": "2017-04-21T10:31:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Yes we need to either move sles 12 pooler images to sp1 or add a new pool for sp1. I think a new ticket is required there, but i don't know what project it would go in. [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] do you know?", "created": "2017-04-21T10:39:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "I'm on it. I'll move the sles-12 images to SP1 (or 2)", "created": "2017-04-21T11:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Awesome, thanks [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4].  fyi, [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7].", "created": "2017-04-21T11:33:00.000000"}], "components": [], "created": "2017-04-19T10:43:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25d1f248"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1738"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdfpj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_137910744_*|*_1_*:*_1_*:*_86229711_*|*_3_*:*_2_*:*_385189923_*|*_6_*:*_1_*:*_0"}], "description": "After upgrading Puppet Server's master branch to ezbake version 1.2.0, we're unable to build packages correctly for SLES12.  See [this build failure|http://jenkins-release.delivery.puppetlabs.net/job/puppetserver-packaging-2017-04-19-16-19-37-5.0.0.master.SNAPSHOT.2017.04.19T1619/command=pl_mock%20MOCK=pl-sles-12-x86_64/1/console].  In particular, this appears to be due to the following error message:\n\n{noformat}\nError: No Package found for java-1.8.0-openjdk-headless\n{noformat}", "epicLinkSummary": "Drop support for running on JDK 7", "estimate": "PT0S", "externalId": "16519", "fixedVersions": ["SERVER 5.0.0"], "id": "16519", "issueType": "CI Blocker", "key": "SERVER-1782", "labels": [], "originalEstimate": "PT0S", "parent": "16508", "parentSummary": "Drop support for running on JDK 7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-04-26T11:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to build ezbake packages for SLES 12 since no java-1.8.0-openjdk-headless", "timeSpent": "PT0S", "updated": "2017-06-08T19:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I looked into this one further today.  The root cause appears to be that for these tests, Jetty's GzipHandler was gzip-compressing the response body but, before doing so, was not properly decoding the bytes to be compressed as UTF-8.  After decompressing the gzip response, the agent would see invalid UTF-8 bytes and would return an error.\n\nThe problem appeared to be introduced by the switch from \"text/pson\" to \"application/json\" as the default Content-Type for responses.  With the \"application/json\" response, the absence of a \"charset\" parameter in the Content-Type (from the Ruby Puppet layer) would lead to the UTF-8 content being mangled.  If the Content-Type were set as \"application/json", "created": "2017-04-18T18:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The three failing tests started passing again in recent puppetserver builds following the update of our Jetty version from 9.2.10 to 9.4.4 as [this PR|https://github.com/puppetlabs/puppetserver/pull/1379] was merged. \n\nSee [this job|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_full-master/228/].\n\nAlthough I'm hoping we'll continue to pursue the work in PUP-7261 to append a charset from Puppet along with the \"application/json\" Content-Type in responses, I think we can mark this issue as resolved since the tests are no longer failin.g", "created": "2017-04-26T09:41:00.000000"}], "components": [], "created": "2017-04-18T12:22:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2785bf88"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym2ef:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18859290_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_662722077"}], "description": "After upgrading puppetserver's puppet pins to [8e8866b|https://github.com/puppetlabs/puppet/commit/8e8866b3da044f405a4e651cf374ab24a435767f], we started experiencing failures for three Ruby Puppet acceptance tests:\n\n* language.binary_data_type.rb\n* utf8.utf8-in-catalog.rb\n* file.ticket_6448_file_with_utf8_source.rb\n\nSee [this CI job link|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/215/].\n\nIn each case, it seems that the agent is somehow having issues handling UTF-8 bytes returned from the server.  For example, the following error appears in the agent output for the utf8-in-catalog.rb test:\n\n{noformat}\nRuntimeError: PuppetAcceptance::DSL::Helpers.with_puppet_running_on failed (check backtrace for location) because: Host 'b1nf7ehap0olkfb.delivery.puppetlabs.net' exited with 1 running:\n             env LANG=\"en_US.UTF-8\" puppet agent -t --vardir /tmp/agent_vardir.GoyIjI --server b1nf7ehap0olkfb.delivery.puppetlabs.net\n            Last 10 lines of output were:\n            \tInfo: Using configured environment 'production'\n            \tInfo: Retrieving pluginfacts\n            \tInfo: Retrieving plugin\n            \tError: Could not retrieve catalog from remote server: Could not intern from application/json: invalid byte sequence in UTF-8\n{noformat} ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14720", "fixedVersions": [], "id": "14720", "issueType": "CI Blocker", "key": "SERVER-1781", "labels": ["failure_mode:product"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-04-26T09:42:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "utf8 test failures after upgrading puppet pin", "timeSpent": "PT0S", "updated": "2017-05-31T11:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This was pulled back into 5.1.5 as a ride-along to the UTF-8 parsing fix (SERVER-2081) (they both came as part of a bump to our jruby-utils library). We're going to dark ship this as its disabled by default and wait until Platform 5.4.0 to document how users can turn it on.", "created": "2018-01-29T20:20:00.000000"}], "components": [], "created": "2017-04-17T16:46:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cfe737b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl78f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Profiling at the jruby level can be enabled in the jruby-puppet section of puppetserver.conf. This can be used to profile all of puppet, including custom ruby code. It will likely generate a lot of output and probably slow down the application considerably (50% to 100%), so should not be done in production.\n\nThere are two new settings to worry about with this feature: profiling-mode and profiling-output-file.\nprofiling-mode defaults to off, but can be set to one of:\n`api`, `flat`, `graph`, `html`, `json`, `off`, and `service`.\nprofiling-output-file can be set to anywhere the puppet user can write to, but will default to a random name within the puppet user working directory. One file will be created per jruby.\n\nThe api profiling mode can be used to profile custom user code as shown here: https://github.com/jruby/jruby/wiki/Profiling-JRuby#profiling-specific-code-in-an-application\n\nThere are some resources on profiling jruby code:\nhttp://danlucraft.com/blog/2011/03/built-in-profiler-in-jruby-1.6/\nhttps://github.com/jruby/jruby/wiki/Profiling-JRuby\n\nThere are also some config setting docs here: https://github.com/puppetlabs/puppetserver/pull/1581/files (https://github.com/puppetlabs/puppetserver/blob/5.1.x/documentation/config_file_puppetserver.markdown). This might benefit from a concrete example of custom user code being profiled, which I'm happy to produce at some point."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1550206499_*|*_1_*:*_1_*:*_88345777_*|*_10007_*:*_1_*:*_264051381_*|*_3_*:*_2_*:*_1947361831_*|*_5_*:*_1_*:*_3300191135_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_18249756560"}], "description": "JRuby has a built in profiler which can be used to measure performance for individual method calls made in Ruby, including the associated callers of each method.  See https://github.com/jruby/jruby/wiki/Profiling-JRuby and http://blog.headius.com/2011/01/flat-and-graph-profiles-for-jruby-16.html.  We should look into integrating the use of this feature into Puppet Server's profiling/metrics functionality.\n\nIn particular, it could be useful to add an option to the jruby-puppet config section which would turn on JRuby profiling.  This would need to be disabled by default since enabling it has a non-trivial impact on performance.  When enabled, the jruby-metrics config section could have a \"method-metrics\" section, broken down by Puppet endpoint (e.g., catalog, report, node, ...), with info per method similar to what the puppet-profiler has for [Puppet functions|https://docs.puppet.com/pe/latest/status_api.html#get-statusv1servicespe-puppet-profiler].\n\nThis functionality could be particularly useful for doing JRuby method-level comparisons with different configurations of Puppet Server - i.e., with JRuby 1.7 vs. 9k configured.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "15990", "fixedVersions": ["SERVER 5.1.5", "SERVER 5.2.0"], "id": "15990", "issueType": "Task", "key": "SERVER-1780", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2018-02-05T15:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add support for JRuby profiler", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "fyi, [~accountid:623c08e1562ab90069f8aed4].  I'm assuming that the development team will take the first crack at the \"pre-docs\" form of this.  Not sure if you're the right person from a docs (and maybe UX?) perspective to be involved?", "created": "2017-04-17T16:04:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Ay, thanks for the ping. This will likely be [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] picking this up, wearing his puppetserver maintenance hat. ", "created": "2017-04-17T18:13:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] I'm going to take a swag at some initial docs for this and put up a PR for review.  I'll ping you on that once it's up.", "created": "2017-05-30T15:05:00.000000"}], "components": ["DOCS"], "created": "2017-04-17T16:02:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4530e485"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylvp3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_90999790_*|*_10007_*:*_1_*:*_1110254682_*|*_3_*:*_1_*:*_169998485_*|*_5_*:*_1_*:*_1218914067_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3620753016"}], "description": "Related to the work being done for SERVER-1630, we should create some user docs related to the configuration of JRuby 9k for Puppet Server.  In the Puppet 5 timeframe, we're planning on adding support for configuring the use of JRuby 9k for Puppet Server but still having JRuby 1.7 be used as the default.  Items that we'll need to cover in documentation include:\n\n1) Noting that rpms/deb packages will be significantly larger than what users have seen in the past because we'll be bundling both JRuby 1.7 and 9k dependencies in the packages.  The JRuby 9k jar locally appears to add about 17 MB but we'll need to confirm what the actual size increase is once we're building this into packages.\n\n2) Advising users about how to configure JRuby 9k, pending work being done for SERVER-1630 and SERVER-1772.  This will likely consist of telling users how to set a specific value for a classpath-related environment variable in the /etc/sysconfig/puppetserver or /etc/default/puppetserver file (depending upon their OS distribution).\n\n3) Any particular caveats that we might want to note to users about the current state of JRuby 9k integration with Puppet Server - including any known functional, performance, or memory usage regressions vs. JRuby 1.7.", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "17146", "fixedVersions": ["SERVER 5.0.0"], "id": "17146", "issueType": "Task", "key": "SERVER-1779", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-14T10:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby 9k configuration docs", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2017-05-24T11:19:00.000000", "name": "loop_agent_run_with_restarts.sh", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10664"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2017-05-24T11:19:00.000000", "name": "loop_agent_runs_no_restarts.sh", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10737"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did some memory leak testing both with JRuby 9.1.9.0 and JRuby 1.7.27 patched into the [latest Puppet Server code|https://github.com/puppetlabs/puppetserver/tree/1eb289b6829a6fa292ac34e7fe6c9a31c53e6c85] and [recent Puppet code|https://github.com/puppetlabs/puppet/tree/9c22ca38700bbeaccc792c4c72560b34e1e0caa8].\n\nFor the tests, I ran the attached scripts, which do the following:\n\n*loop_agent_run_with_restarts.sh*\n\n- Start puppetserver from source (lein trampoline)\n- Loop 10 times:\n-- Take memory snapshot\n--- Loop 7 times:\n---- Do agent run\n---- HUP/reload puppetserver\n\n*loop_agent_runs_no_restarts.sh*\n\n- Start puppetserver from source (lein trampoline)\n- Loop 10 times:\n-- Take memory snapshot\n--- Loop 7 times:\n---- Do agent run\n\nLooking at the memory snapshots, the only definitive leak I encountered was the one for JRuby 9k only which was already spun off as SERVER-1792 - where the JRubyClassLoader leaks path strings related to temp files.  A fix for that has already been merged to JRuby's master branch and is currently slated for the 9.2.0.0 release.\n\nThe only other possible suspect that I found was again with JRuby 9k only.  I saw frequent, although somewhat non-linear, increases between snapshots in the number of {{jnr.ffi.provider.jffi.TransientNativeMemory$Magazine}} objects which had a strong reference.  I only saw these in the snapshots taken for the scenario where HUP/reloads were occurring between snapshots.\n\nThe {{Magazine}} objects are derivatives of {{PhantomReferences}} and are held redundantly as strong references from a static Map inside of the TransientNativeMemory class.  I believe [this line of code|https://github.com/jnr/jnr-ffi/blob/jnr-ffi-2.1.4/src/main/java/jnr/ffi/provider/jffi/TransientNativeMemory.java#L71] is where they are added into the Map.  I believe they should eventually be freed during reference finalization by [this line of code|https://github.com/jnr/jnr-ffi/blob/jnr-ffi-2.1.4/src/main/java/jnr/ffi/provider/jffi/TransientNativeMemory.java#L152].  The {{Magazine}} objects are stashed in a [ThreadLocal variable|https://github.com/jnr/jnr-ffi/blob/jnr-ffi-2.1.4/src/main/java/jnr/ffi/provider/jffi/TransientNativeMemory.java#L72].  Those references appear to eventually be cleaned up, though, and I don't see any increase in the number of threads in the process across snapshots.\n\nI didn't see any differences in the {{TransientNativeMemory}} implementation between the version of jnr-ffi we had been using in JRuby 1.7.2.6, 2.0.9, and what JRuby 9.1.9.0 is using, 2.1.4.  I'm inclined at this point to think that with sufficient memory pressure that these objects would get cleaned up and am inclined to not investigate this potential leak further for now.  This may be something to keep an eye on down the road, though.\n\n", "created": "2017-05-24T12:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "After looking into this further, I found that the {{TransientNativeMemory$Magazine}} objects were actually leaking, not just getting cleaned up after more exhaustive GC was being performed.  I submitted a [fix|https://github.com/jnr/jnr-ffi/commit/68419ee0023f039e36e4eecfe61a7a922ac0b227] for this to the jnr-ffi project which was fixed in the jnr-ffi 2.1.6 release.  I spun off a separate ticket, SERVER-1821, to track the rollup of this fix into a new JRuby release.\n\nAs I was unable to identify further memory leaks from this investigation, I'm going to now close out this issue.", "created": "2017-05-30T14:57:00.000000"}], "components": [], "created": "2017-04-17T15:53:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61f85654"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdjs7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_91549403_*|*_3_*:*_1_*:*_1115428374_*|*_5_*:*_1_*:*_2499585210_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2504903676"}], "description": "We should do some more specific testing for potential memory leaks with JRuby 9k running in Puppet Server.  For SERVER-1777, we discovered that there is a leak related to jar file descriptors across ScriptingContainers.  We should do some similar testing where we create a ScriptingContainer, exercise some Puppet code within the container (e.g., initialize Puppet and compile a catalog), destroy the container, repeat, ...", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "14719", "fixedVersions": ["SERVER 5.0.0"], "id": "14719", "issueType": "Task", "key": "SERVER-1778", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby 9k memory leak testing", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "The work of putting up a PR is finished so I'm closing this, since we can't predict how long it might take to get reviewed. Will keep an eye out for a response from the jruby folks", "created": "2017-08-24T11:34:00.000000"}], "components": [], "created": "2017-04-17T15:35:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9daf56f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylnpr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_92619712_*|*_3_*:*_1_*:*_1730212896_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_9308331480"}], "description": "When initially investigating migration from JRuby 1.7 to 9k in Puppet Server, we found that JRuby has a significant memory (and disk usage) leak related to the caching of jars for each new ScriptingContainer.  We submitted [this jruby issue|https://github.com/jruby/jruby/issues/3928] nearly 10 months ago but the issue has yet to be addressed.  It seems likely that the issue will remain unaddressed by the JRuby community since disposing of ScriptingContainers at run-time does not seem to be a common use case outside of Puppet Server.\n\nFor the work in progress in SERVER-1630, we're likely going to need to implement some sort of hack in Puppet Server to avoid this memory leak.  Longer term, though, we should work on getting a fix implemented in core JRuby code.  For this ticket, we'll likely need to look into implementing a fix ourselves and submitting a PR to the JRuby team for review.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "16518", "fixedVersions": ["None"], "id": "16518", "issueType": "Task", "key": "SERVER-1777", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2017-08-24T11:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate better fix for stdlib file descriptor leak in JRuby 9k", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2017-04-17T15:15:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5076635d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzddkn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_93806262_*|*_10007_*:*_1_*:*_513013816_*|*_3_*:*_1_*:*_1227117511_*|*_5_*:*_1_*:*_2415978537_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1963809543"}], "description": "We should create a Gatling perf job which compares the performance when running with JRuby 1.7 vs. 9k.  This job could be based on the [oss-puppetserver-latest|https://github.com/puppetlabs/gatling-puppet-load-test/tree/faae9e7a1249d146c3c8f7df3988c3f3a00697e9/jenkins-integration/jenkins-jobs/scenarios/oss-puppetserver-latest] job - only running the medium/1250 agent/2 hour config for both 1.7 and 9.x, plotting the perf for each.  See the [compile-mode jit on/off job|https://github.com/puppetlabs/gatling-puppet-load-test/blob/faae9e7a1249d146c3c8f7df3988c3f3a00697e9/jenkins-integration/jenkins-jobs/scenarios/compare-oss-puppetserver-stable-jit-on-off/Jenkinsfile] for an example of a job which varies the value for a config parameter.\n\nIt probably would be best to wait until the work to [switch from PSON to the native JSON parser/generator|https://github.com/puppetlabs/puppet/pull/5800] in PUP-7258 is merged into a puppet-agent build that can be exercised with this gatling simulation.  We're expecting a significant performance bump from this work, hopefully making the delta between 1.7 and 9k much smaller.\n\nNote that as we saw from prior Gatling perf work tests run for SERVER-1274 that we may need to bump up Puppet Server's heap size for the JRuby 9k experiments in order to see performance good enough to allow requests to succeed without any KOs.", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "17425", "fixedVersions": ["SERVER 5.0.0"], "id": "17425", "issueType": "Task", "key": "SERVER-1776", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-05-31T14:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Gatling JRuby 1.7 vs 9k job", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "my first inclination would be to run these at least nightly until we understand the impact of the upgrade and the performance issues are known.\n\ndo we think there would be any value in running the server acceptance tests against both/multiple JRuby versions?", "created": "2017-04-18T11:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] I definitely think there's value in having the server acceptance tests be run with both JRuby 1.7 and 9k and was hoping to achieve that as part of this ticket.  I'd like to see our standard mergely/nightly jobs continue to be run with JRuby 1.7 but add on the ability to run through the same pipeline but with JRuby 9k being used instead.  I'd be okay with starting the JRuby 9k ones be run on a nightly basis.  My biggest concern at this point is about what the overall run time for the jobs will look like.  Also, I don't expect many changes in general to break only when running against JRuby 9k but not when running with JRuby 1.7.  For those reasons, we may decide that running the JRuby 9k configuration even less frequently may make sense.", "created": "2017-04-18T11:55:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] thanks.  that's why i asked about acceptance specifically.  above you referenced unit test run times. so my answer was mostly around unit test run times allowing them to run nightly pretty easily.  \n\ni too am concerned with the run time of acceptance being twice as slow as against JRuby 1.7, or even equal, unless the jobs are run in parallel.  which theoretically, we could achieve, either way.\n\nif you don't expect tests to fail in one version vs. the other, i see no reason to run them more than weekly, in general.  ", "created": "2017-04-18T15:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The new full JRuby 9k weekly job has been integrated and run through manually a couple of times, with all tests passing for all cells.  See [this Jenkins job|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-jruby9k-master/2/].  Moving this to resolved.", "created": "2017-05-12T10:34:00.000000"}], "components": [], "created": "2017-04-17T14:55:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1470d476"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "QA Risk Assessment Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "covered by existing tests"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzddqv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_234664810_*|*_1_*:*_1_*:*_95022839_*|*_10007_*:*_1_*:*_2665328_*|*_3_*:*_1_*:*_367741474_*|*_5_*:*_1_*:*_4070578595_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1444268283"}], "description": "We should setup a Jenkins CI pipeline which covers the standard OSS Puppet Server pipeline but with JRuby 9k being used instead of JRuby 1.7.  The ability to do this will depend upon the initial support for this being completed in SERVER-1630 and SERVER-1772.\n\nTest jobs run under JRuby 9k have so far been seen to be considerably slower (up to 2x slower for just the Clojure unit tests) than when running with JRuby 1.7.  We'll probably want to setup the JRuby 9k pipeline to run disconnected from and less frequently than the standard mergely/nightly pipelines, which would continue to run with JRuby 1.7.  It may be sufficient for now to just have a \"weekly\" JRuby 9k job, with the ability to manually trigger that job just before a release if needed.  We should consult with some QA folks, e.g, [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] and [~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715], for their opinions as to what the frequency of the job should be.", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "15989", "fixedVersions": ["SERVER 5.0.0"], "id": "15989", "issueType": "Task", "key": "SERVER-1775", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Setup Jenkins CI job for Puppet Server with JRuby 9k", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The ci-job-configs [PR|https://github.com/puppetlabs/ci-job-configs/pull/2849] was merged to ci-job-configs#master at [7e126e|https://github.com/puppetlabs/ci-job-configs/commit/7e126e1cece2ad3ea77b69d93332ffbf03441b3a] and the jobs are now live on the Jenkins server.\n\nWe've successfully done releases both for [1.7.x|https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/job/enterprise_jruby-deps_release-clj_1.7.x/1/] and [9.x|https://cinext-jenkinsmaster-enterprise-prod-1.delivery.puppetlabs.net/job/enterprise_jruby-deps_release-clj_9.x/1/].\n\nMarking this resolved.", "created": "2017-05-19T14:31:00.000000"}], "components": [], "created": "2017-04-17T14:44:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c8fb382"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzddr3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_95655240_*|*_10007_*:*_1_*:*_856472587_*|*_3_*:*_1_*:*_438003776_*|*_5_*:*_1_*:*_3451563960_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1373882477"}], "description": "The new [puppetlabs/jruby-deps|https://github.com/puppetlabs/jruby-deps] project would house a leiningen project file for use in publishing a Maven artifact representing the JRuby-related dependencies that we would bundle together for producing an uberjar that can be used in conjunction with a Puppet Server jar file.  We should add some basic CI support to the jruby-deps project.  This could include a simple Travis job that just does a {{lein deps :tree}} and a Jenkins pipeline which includes a {{lein release}} job for releasing a Maven artifact of the JRuby dependencies to clojars.\n\nThe Jenkins CI pipeline could be similar to the ones done for the Trapperkeeper projects.  Note that for the release job we would need to look into having the default for version bumps be {{qualifier}} instead of {{patch}} - see SERVER-1773.", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "16829", "fixedVersions": ["SERVER 5.0.0"], "id": "16829", "issueType": "Task", "key": "SERVER-1774", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add CI for jruby-deps project", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:45:00.000000"}], "components": [], "created": "2017-04-17T14:20:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c0c3fd5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym2e7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10069952_*|*_10007_*:*_1_*:*_609394493_*|*_3_*:*_1_*:*_686687724_*|*_5_*:*_1_*:*_4910738634_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_162450"}], "description": "For the work to enable JRuby 1.7 vs. 9k support for Puppet Server, we're intending to maintain a specific Maven artifact (via a leiningen project) which rolls up related JRuby dependencies for each version - e.g., for jruby-core and jruby-stdlib.  The Maven artifact's version number should match up with the corresponding JRuby version.  We should also have the ability to roll out more than one Maven artifact per JRuby version - e.g., in case we messed up the dependency info in the original artifact and need to update it.\n\nFor JRuby 9k, the base version number already has 4 parts.  With the [lein-release-4digit-version plugin|https://github.com/puppetlabs/lein-release-4digit-version], we have the ability to bump release version numbers in the project.clj file via leiningen.  Unlike the standard \"3-part\" lein-release plugin, the lein-release-4digit-version plugin, however, does not have the ability to bump the \"qualifier\" portion of a version.  The work for this ticket would involve adding support to the lein-release-4digit-version plugin for bumping the qualifier portion of a project version.\n\nFor example, using a \"3-part version number\" with a value of \"1.7.26-1-SNAPSHOT\" (where the \"-1\" is the qualifier version), if I run the following command:\n\n{quote}lein change version leiningen.release/bump-version qualifier{quote}\n\n... the value is bumped to \"1.7.26-2-SNAPSHOT\".\n\nIf I try to run the same 'lein change' command with a \"4-part\" version number that has a qualifier in the project.clj, e.g., 9.1.8.0-1-SNAPSHOT, I get an error:\n\n{quote}Unrecognized version string: 9.1.8.0-1-SNAPSHOT{quote}", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "15146", "fixedVersions": ["SERVER 5.0.0"], "id": "15146", "issueType": "Task", "key": "SERVER-1773", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-05-02T17:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add :qualifier support to lein-release-4digit-version plugin", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For a prototype implementation of this with Puppet Server, I did the following:\n\n1) Broke out the contents of the puppet-server-release.jar that we normally ship in Puppet Server packages into three different jar files:\n\n- puppet-server-release.jar (just Puppet Server-specific code and its immediate non-JRuby related dependencies)\n- jruby-1_7.jar (just JRuby 1.7.26 dependencies)\n- jruby-9k.jar (just JRuby-9k dependencies)\n\n2) Added some code to the start bash script (/opt/puppetlabs/server/apps/puppetserver/cli/apps/start) to compute the argument that it passes for the -cp to the Java service.  The basic uberjar is always included in the -cp argument.  When an environment variable named {{EXTRA_CLASSPATH}} is set and non-empty, its contents are appended to the classpath.  When the {{EXTRA_CLASSPATH}} environment variable is not defined, a 'default' value - for Puppet Server this would be the path to \"jruby-1_7.jar\" but this would be empty / not used for other packages not needing to add on extra jars by default - is added onto -cp:\n\n{noformat}\nCLASSPATH=${INSTALL_DIR}/puppet-server-release.jar\nif [ -z \"$EXTRA_CLASSPATH\" ]", "created": "2017-04-19T16:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "On the question about whether we could just have a Puppet Server-specific environment variable like {{JRUBY_JAR}} be used, I had another idea.\n\nThe basic idea is that we would provide an option for a package being ezbaked to provide its own \"cli-defaults.sh.erb\" file as a jar resource, like how app-specific cli apps are done by being embedded in {{./resources/ext/cli}}.  When the resource is present, it would be evaluated and dropped into {{/opt/puppetlabs/server/<package name>/cli}} at installation time.  The {{start}} and {{foreground}} scripts in ezbake proper - and any other custom apps, as desired - would be updated to be able to source the defaults script.  The default app scripts could then be modified to have something like:\n\n{code:bash}\n...\nCLASSPATH=${INSTALL_DIR}/puppet-server-release.jar\n\nif [ -e \"${INSTALL_DIR}/cli/cli-defaults.sh\" ]", "created": "2017-04-19T18:28:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Oh, interesting. So if I'm understanding this right: instead of trying to come up with a one-size-fits-all ezbake setting for classpath shenanigans, you're suggesting we add a shim that lets ezbake apps designate their own environment variables (and default values) for doing any form of pre-JVM-startup shenanigans. Right?\n\nI think I'm in favor of that. I expect anyone else who's doing something like this for their app is going to want the same kind of error message specificity that I was asking for in that meeting, and this sounds like a good way to provide that? ", "created": "2017-04-24T16:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c08e1562ab90069f8aed4] - yeah, that's what I was thinking of for this case at least.  This approach would also allow us to be able to do other things like app-specific error detection / compensation for the values for other environment variables that are used to build up the full command line argument, like JAVA_ARGS, if needed/desired.\n\nI think there's still some value in having an additional but more generic {{EXTRA_CLASSPATH}} variable for users to add on other optional jars that aren't required for the base service to work, like the mysql case mentioned in SERVER-249.  I think we can defer the more generic capability out to whenever we design a solution for that ticket.  The more I think about it, the more I like the idea of having the {{JRUBY_JAR}} setting be separate from an {{EXTRA_CLASSPATH}} one.  I'm thinking it would be nice for a user to be able to add on more optional jars without having to re-specify - and possibility unintentionally mess up - the jruby jar that they want to be used as well.", "created": "2017-04-24T16:53:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "{quote}\nI'm thinking it would be nice for a user to be able to add on more optional jars without having to re-specify - and possibility unintentionally mess up - the jruby jar that they want to be used as well.\n{quote}\n\nYeah!! This is my thinking exactly. ", "created": "2017-04-24T17:24:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:45:00.000000"}], "components": [], "created": "2017-04-12T16:03:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4dc1e11e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylzhz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Added ezbake option to specify additional uberjars which should be built and installed along-side the main project\n* Allows puppetserver to include 2 jars for jruby 1.7 and jruby 9k dependencies"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_515911761_*|*_1_*:*_1_*:*_35085_*|*_10007_*:*_1_*:*_194465612_*|*_3_*:*_1_*:*_1624669035_*|*_5_*:*_1_*:*_4307759610_*|*_6_*:*_1_*:*_0"}], "description": "In looking into the work to support the configuration of JRuby 1.7 vs. 9k uberjars for SERVER-1630, we realized that we're going to need some changes made to ezbake.  The ezbake work will likely consist of:\n\n1) Provide an optional mechanism in a project's ezbake profile config to specify:\n\n- A set of Maven coordinates (or maybe GitHub repo + treeish) for a set of \"additional jar dependencies\" to retrieve.\n- A default set of files to add to the Java classpath for the start, foreground, ruby, irb, and gem scripts.\n\n2) Provide a way for users to configure a new environment variable in the sysconfig/default script which, when set, is appended to the Java classpath in place of any default configured in the project ezbake configuration.\n\n3) For any \"additional jar dependencies\" set in the ezbake configuration, modify ezbake to:\n\n- Retrieve project source or Maven artifact (immediate jar + pom.xml/project.clj dependencies).\n- Build an uberjar (immediate jar + any upstream dependencies) of each retrieved project. \n- Package up each additional uberjar alongside the main project's uberjar.\n\n4) Modify the ezbake.manifest to include information for any additional uberjars which might be built into the package.\n", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "15672", "fixedVersions": ["SERVER 5.0.0"], "id": "15672", "issueType": "Task", "key": "SERVER-1772", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enhance ezbake to support extra uberjars for JRuby 1.7 vs 9k", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Ping [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e].  Were you going to setup a meeting with [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] and me at some point to discuss this further?  No rush...", "created": "2017-04-17T13:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] I know you're intending to do some more work on this one soon.  Do you think we should carry this one over into our next Puppet Server sprint (which starts tomorrow)?", "created": "2017-04-18T18:34:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Metrics are going into FOSS, some of which existed in PE. ", "created": "2017-04-23T19:00:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] are you working on this (in which case it should be assigned to you)?", "created": "2017-06-15T07:51:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Or [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]?", "created": "2017-06-15T08:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] was going to try to write a few things up for this over the next couple of days.  We can hand that off to [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] after that and talk about what we want to do with this next.  I'll assign this ticket to [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] for now.", "created": "2017-06-15T10:03:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] alright, here's a pretty rough brain dump of a bunch of stuff - hopefully this is helpful.\n\nThe first thing to look at with regards to metrics is what is performance like - is the server able to handle the number of requests that are coming in? To determine this, look at the `number of JRubies free` and the `average number of JRubies free`. The number of jrubies free should be above 0 - that is there, should always be a JRuby instance available to service a request. `average number of JRubies free` should be above 1 - if it is below one that means that more often than not there is not a JRuby instance free.\n\nIf there are not enough free JRubies, any request that Puppet Server has to handle that requires a JRuby (which is most of them) will be backed up waiting for one to become available.\n\nThe next thing to look at is why are there not enough JRubies available? There are two main possibilities here. If your Puppet infrastructure was previously fairly healthy, the easiest way to determine what is going on is to be looking at these metrics over time (e.g. using Graphite/Grafana or some other tool for tracking and visualizing metrics). There are two metrics to look at here - average jruby borrow time and average jruby wait time. Borrow time refers to the amount of time Puppet Server holds a JRuby for (how long is \"borrows\" the JRuby from the pool for). Wait time is how long Puppet Server has to wait for a JRuby to come available to service the request.\n\nThe first possibility for why you don't have enough JRubies is that you have added more Puppet agents than the server is able to handle with its current number of JRubies. In this case, you'll see the wait time go up, but the borrow time will remain the same. The second possibility is that something has happened to decrease the performance of the system - either the system as a whole, or some part of the system (the handling of certain types of requests). In this case, both the borrow time and the wait time will increase. The borrow time increase because of whatever the underlying cause for why the request is taking longer to handle. The wait time will increase because since each JRuby is held for longer, there are overall fewer JRubies free, so new requests have to wait longer.\n\nIf you are setting up Puppet Server for the first time, then you'll want to get your system healthy (by adding JRubies/compile masters) before looking into how to improve performance. Once your system is healthy and able to handle all requests, you can start looking into what improvements you can make.\n\nYou'll want to either add JRuby instances or add compile masters until you've got your free jruby metrics looking good (again, number free above 0, average number free above 1). You need enough memory and enough CPUs to add more JRuby instances - Puppet Server is automatically tuned to use (number of CPUs - 1) with a max of 4 for number of JRubies, but this setting can be tweaked in the puppetserver.conf jruby-puppet `max-active-instances` setting. We don't recommend that you set this to be greater than the number of CPUs (because if there aren't enough processes available then it won't matter how many JRubies in the pool there are, they won't be able to be used). In addition, each JRuby has a certain amount of memory overhead that it needs in order to be able to load Puppet's Ruby code, as well as your Puppet code. This means that this memory overhead is going to be dependent on how much Puppet code you have. However, a rough estimate is that adding a JRuby will take a bare minimum of 40MB (see SERVER-1388 - amount of memory for the scripting container + puppet's ruby code, + an additional 5MB from SERVER-1390 just for compiling an almost-empty catalog), with at least 15MB more for doing anything slightly \"real\" in that catalog compilation. If you don't have the additional capacity on your master to add more JRubies, you'll want to add another compile master.\n\nIf the borrow time has gone up, you'll want to understand why. If you are looking at these metrics over time, you may be able to see a point when the borrow time increased - and perhaps correlate this to other events in your system, e.g. pushing a Puppet Code change.\n\nThere are several different places where you might see increases in request time.  You can look at the http metrics in the status endpoint or the requests graph in the Grafana dashboard to try to get an idea of what has gone up. Unfortunately, once one request type increases, most request types will increase - these http metrics include the *total* time for the server to handle the request, including waiting for a jruby instance to become available, and as discussed above, once borrow time increases, wait time will increases - so once borrow time for one type of request increases, wait times for all requests will increase.\n\nThe most common type of request to start taking longer is catalog compilation - since so much happens during a catalog compilation, there are many things that could go wrong. The middle graph in the second row of the Grafana dashboard is focussed on catalog compilation. Several things could cause catalog compilation to borrow a jruby instance for longer. 1) a Puppet Code change has caused a major slowdown. One common Puppet Code problem is with functions. The middle graph of the second row of the Grafana dashboard should show if functions start taking a lot longer. The experimental dashboad and the status endpoint also show the top 10/top 40 function calls (respectively) (based on aggregate time) - you can look at that to see what is taking the most time. While custom functions are one of the frequent causes of compilation time slowdowns/memory leaks, other changes in Puppet Code can also cause slowdowns - e.g. adding significantly more file resources will often cause things to slow down. In a case like this there may be a more efficient way to right your Puppet Code, or it may be the case that you are doing so much with Puppet that it's time to add more JRubies/compile masters, even if you aren't adding more agents.\n\nSlowdowns in PuppetDB can also cause catalog compilations to take more time: if you use exported resources or the puppetdb_query function, and PuppetDB has a problem, then you will see catalog compilation times increase. In addition, during a catalog compilation, Puppet Server will send the agents' facts to PuppetDB and the compiled catalog to PuppetDB. Metrics on the time for these operations can be found in the status endpoint for the master service, under `http-client-metrics`, and in the Grafana dashboard in the \"External HTTP Communications\" graph. Other http requests Puppet Server makes to PuppetDB include finding facts (which happens during handling of a node request) and submitting a report (during handling of a report request). \n\nIf you have an http report processor set up, the Grafana dashboard will show metrics for `Http report processor` or in the status endpoint under http-client-metrics in the master service, for metric-id `['puppet', 'report', 'http']`. If the report processor is having problems, this will slow down handling by Puppet Server of report requests.\n\nAnother issue that might be happening is that there is a memory leak or increased memory pressure. In this case, the JVM will spend more time doing GC - the GC time and GC CPU % will increase. Unfortunately we are not currently visualizing these in our Grafana graph... but these are available in the experimental dashboard and in the status endpoint, and in the /metrics/v1/mbeans endpoint.\n\nIn PE, one other potential cause of a slow down is from File Sync. The File Sync client holds a lock on the pool while syncing code from its datadir to the codedir. When you have a lot of environments, this can start to take longer. You'll see this reflected in the `lock held` metrics in the Grafana dashboard in the JRuby timers graph and in the `file sync client sync` graph in the File Sync graph in the PE version of the Grafana dashboard. In addition, the `jruby-metrics` section of the status endpoint lists out the `requested-instances` - this shows what requests have come in that are waiting to borrow a JRuby instance. In addition, this part of the status endpoint lists out the status of the lock, how many times it has been requested, and how long it has been held for. If it is currently being held, and has been held for a while, you may see requests starting to stack up in the `requested-instances` section.", "created": "2017-06-15T11:36:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Moving to this one now that my first review of the endpoint docs in SERVER-1829 is done.", "created": "2017-06-21T10:50:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Waiting for base metrics docs reviews (SERVER-1830, SERVER-1829, SERVER-1797) before incorporating this, potentially post-release.", "created": "2017-06-21T17:52:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]Anything else you're waiting for us on for this one?", "created": "2017-07-06T14:51:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] Not from you guys! Just need to find the time to finish and post it up for review.", "created": "2017-07-06T14:55:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] PR up and linked to this ticket. I have a feeling this will be a really fun review for everyone involved", "created": "2017-07-10T18:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged to the puppetserver#master branch at [6faaf97|https://github.com/puppetlabs/puppetserver/commit/6faaf97a6ec8663e4b2134e76463b2ab765cfbc2].  Since the PR didn't have any code changes associated with it, I'm going to mark this resolved.", "created": "2017-07-13T18:22:00.000000"}], "components": ["DOCS"], "created": "2017-04-05T12:10:00.000000", "creator": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e4e1301"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8miv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2366127_*|*_10007_*:*_1_*:*_195218474_*|*_3_*:*_2_*:*_3033099839_*|*_10009_*:*_1_*:*_61922635_*|*_5_*:*_1_*:*_5419000961_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_5283374827"}], "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "15145", "fixedVersions": ["SERVER 5.1.0"], "id": "15145", "issueType": "Improvement", "key": "SERVER-1771", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "resolution": "Fixed", "resolutionDate": "2017-09-14T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Integrate scaling and performance docs with new metrics", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Between the perf oss-stable and oss-latest jobs there was almost no performance difference. The stable job had a mean response time of 33ms with a standard deviation of 189, while the latest job had a mean response time of 35ms with a standard deviation of 196. With respect to individual requests catalog compilation was slower on oss-latest but requests like file metadata was about equivalently fast, which makes me believe that any performance issues between stable are latest are unrelated to the jetty bump.", "created": "2017-06-08T12:55:00.000000"}], "components": [], "created": "2017-04-05T10:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@502e8de4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1738"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylvpb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_171828_*|*_3_*:*_1_*:*_2924691856_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2612978642"}], "description": "For this ticket, we would do some preliminary perf testing around the use of Jetty 9.4.x in Puppet Server. This would involve:\n\n# Assuming SERVER-1741 has not been completed yet, create a custom build of Puppet Server with its Jetty dependency bumped up to 9.4.x (via a preliminary tk-jetty9 2.x).\n# Do a couple of moderate-length Gatling runs, one with Puppet Server having the same Jetty as in the OSS Puppet Server 2.7.2 release, 9.2.10, vs. one with Puppet Server having the latest Jetty 9.4.x release.\n \nFor these, we could just start with some simple 2 hour runs - simulating up to 1200 agents doing perf-control medium catalog compilations like the [current oss-puppetserver-latest Jenkins job|https://github.com/puppetlabs/gatling-puppet-load-test/blob/faae9e7a1249d146c3c8f7df3988c3f3a00697e9/jenkins-integration/jenkins-jobs/scenarios/oss-puppetserver-latest/Jenkinsfile] does.  As we get closer to the Puppet Server 5 release, we should look into some longer-duration runs, e.g., a week long run, but I think the shorter A/B comparison run for now to get a pulse on Jetty performance is good enough.\n", "epicLinkSummary": "Drop support for running on JDK 7", "estimate": "PT0S", "externalId": "17145", "fixedVersions": ["SERVER 5.0.0"], "id": "17145", "issueType": "Task", "key": "SERVER-1770", "labels": [], "originalEstimate": "PT0S", "parent": "16508", "parentSummary": "Drop support for running on JDK 7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-08T12:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling perf testing with Jetty 9.4.x in Puppet Server", "timeSpent": "PT0S", "updated": "2017-06-08T12:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "After much poking and prodding I wasn't able to locate any memory leaks with tk-ws-jetty9.", "created": "2017-05-05T16:30:00.000000"}], "components": [], "created": "2017-04-05T10:22:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e8a97dc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1738"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylzif:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1022213_*|*_3_*:*_1_*:*_686320215_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1926727657"}], "description": "For this ticket, we would do some preliminary memory testing around the use of Jetty 9.4.x in Puppet Server.  This would involve:\n\n# Assuming SERVER-1741 has not been completed yet, create a custom build of Puppet Server with its Jetty dependency bumped up to 9.4.x (via a preliminary tk-jetty9 2.x).\n# Do some simple start/reload tests, mixing in some agent requests to exercise basic web service functionality and interleaving heap dumps to measure memory usage at various points.  Compare the heap dumps across iterations to hopefully ensure that no new memory leaks are present.", "epicLinkSummary": "Drop support for running on JDK 7", "estimate": "PT0S", "externalId": "14718", "fixedVersions": ["SERVER 5.0.0"], "id": "14718", "issueType": "Task", "key": "SERVER-1769", "labels": [], "originalEstimate": "PT0S", "parent": "16508", "parentSummary": "Drop support for running on JDK 7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-05-05T16:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Memory leak testing with Jetty 9.4.x in Puppet Server", "timeSpent": "PT0S", "updated": "2017-06-08T19:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Initial thought at a solution for this is to add a ring handler to the puppet server routes that compares the current request backlog to a configured limit. If the limit has been exceeded, a 503 Service Unavailable response is returned to the agent with the Retry-After header set to a random number of seconds. On the PUP side, the HTTP client could be updated to respond to a 503 with Retry-After by sleeping for the specified number of seconds --- this would achieve the effect of splaying out an agent herd.", "created": "2017-04-03T09:21:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "After some good discussion in the PR, we've agreed this is a good first approach for server-side mitigation of thundering herds. I'll clean up the code in the PR so that it is production-ready and have filed PUP-7451 for having the agent respect {{Retry-After}} headers.", "created": "2017-04-17T18:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [2bd9eb|https://github.com/puppetlabs/puppetserver/commit/2bd9ebe73106405b10ba445d268260e84692a870].", "created": "2017-07-05T17:46:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Does this need Release notes? [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]", "created": "2017-07-07T11:47:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] Release note added. This is a new feature, but a bit tricky since it requires PUP-3454 on the agent side to be useful. I'm hoping to get a PR for that up in the next couple of days.", "created": "2017-07-07T12:45:00.000000"}], "components": ["Puppet Server"], "created": "2017-04-03T09:19:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3dd23086"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymmjr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server can optionally return 503 responses for incoming requests when the backlog of outstanding requests for JRuby instances exceeds a configurable limit. These responses can be configured to include a {{Retry-After}} header indicating a randomized amount of time that the requester should sleep before retrying the request. Both of these behaviors can be configured through the new {{max-queued-requests}} and {{max-retry-delay}} settings in the {{jruby-puppet}} configuration."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_429682978_*|*_1_*:*_1_*:*_113498021_*|*_10007_*:*_2_*:*_1138412413_*|*_3_*:*_1_*:*_6721429955_*|*_5_*:*_1_*:*_5682712601_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_92317805"}], "description": "When a group of agents start their puppet runs together they form a \"thundering herd\" which can exceed server resources. This results in a growing backlog of requests from puppet agents that are waiting for a JRuby instance to become free. If this backlog exceeds the size of the Jetty thread pool, other requests such as status checks will start timing out. The agent herd will tend to persist until a human manually remediates the situation using a rolling restart to space out the agents involved.\n\nPuppet Server should send a signal to agents when it is over capacity that indicates they should back off for a random period of time before resuming requests. This would allow a thundering herd to be automatically re-splayed without human intervention.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16218", "fixedVersions": ["SERVER 5.1.0"], "id": "16218", "issueType": "New Feature", "key": "SERVER-1767", "labels": ["backup-restore"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2017-09-14T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add ability to re-splay agents during thundering herd events", "timeSpent": "PT0S", "updated": "2018-12-19T12:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Waiting on https://github.com/puppetlabs/puppetserver/pull/1369 to include the changes made to the puppet agent source code.", "created": "2017-04-17T16:07:00.000000"}], "components": [], "created": "2017-03-30T17:22:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b269b5b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzd0i7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10775_*|*_10007_*:*_1_*:*_411350533_*|*_3_*:*_1_*:*_618099698_*|*_10009_*:*_1_*:*_102022077_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_6770_*|*_10006_*:*_1_*:*_508166067"}], "description": "Commit a1c2066ba3457bdee0d5449730f063c5f1304dc5 in puppetserver fixed a regression introduced by defaulting the {{use-legacy-auth-conf}} setting to false, but it was a very blunt solution to a problem that would benefit from being more carefully handled. We should replace the blanket use of {{use-legacy-auth-conf}} in the tests by either using it only when necessary or replacing the use of the legacy auth.conf file with tk-auth rules.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15671", "fixedVersions": [], "id": "15671", "issueType": "Task", "key": "SERVER-1766", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Fixed", "resolutionDate": "2017-04-18T16:50:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Don't use legacy auth.conf rules for puppet acceptance tests", "timeSpent": "PT0S", "updated": "2017-04-18T16:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "ezbake 1.2.0 should have the support that we'll need to build for JDK 8 platforms only.  We'll need to bump Puppet Server to using that version as part of the work for this ticket.", "created": "2017-04-17T17:05:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "ci-job-configs PR at https://github.com/puppetlabs/ci-job-configs/pull/2730", "created": "2017-04-17T17:21:00.000000"}], "components": [], "created": "2017-03-28T12:20:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f97d705"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1738"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcxvj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_170251048_*|*_1_*:*_1_*:*_15795842_*|*_10007_*:*_1_*:*_68524361_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1813608507"}], "description": "We'll need to make several changes to support building Puppet Server packages for JDK 8+ only (i.e., dropping JDK 7 support).  This includes:\n\n1) Bump to a new version of ezbake which has JDK 8 build configuration changes.  This will need to wait until RE-8191 has been finished - including its [open PR|https://github.com/puppetlabs/ezbake/pull/396].\n\n2) Remove java 7 from the [.travis.yml config|https://github.com/puppetlabs/puppetserver/blob/2.7.2/.travis.yml#L4-L5] for master branch. We should probably keep 7 for stable for now.\n\n3) Update the JDK axis to jdk8 for puppetserver master branch builds.  See [how this was done for tk-jetty9|https://github.com/puppetlabs/ci-job-configs/pull/2486] when updating for JDK 8 builds, as an example.  Changes would likely affect [this file|https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/jenkins-master-prod-1/projects/puppetserver.yaml].\n\n", "epicLinkSummary": "Drop support for running on JDK 7", "estimate": "PT0S", "externalId": "16217", "fixedVersions": ["SERVER 5.0.0"], "id": "16217", "issueType": "Task", "key": "SERVER-1765", "labels": [], "originalEstimate": "PT0S", "parent": "16508", "parentSummary": "Drop support for running on JDK 7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-04-21T10:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update build config for drop of JDK 7", "timeSpent": "PT0S", "updated": "2017-06-08T19:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] I carved off this epic from some of the tickets in the larger SERVER-974 in hopes of identifying a more specific list of improvements that we want to make around Intermediate CA support.  Would appreciate your input on any other tickets you know of which should be linked into this epic - or any items that you think would fit here which don't have a JIRA ticket yet.", "created": "2017-03-27T12:06:00.000000"}], "components": [], "created": "2017-03-27T11:44:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e26da37"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-8"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Improve Intermediate CA Support"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyltzj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9699678481_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_6787617630"}], "description": "This epic includes a set of tickets related to improving support for the use of the Puppet CA service when the issuing cert is from an intermediate CA, as opposed to the self-signed root CA that the service self-generates by default.  Some more far-reaching improvements to the CA service are covered in a related epic, SERVER-974.", "duedate": "2017-09-20T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16828", "fixedVersions": [], "id": "16828", "issueType": "Epic", "key": "SERVER-1764", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-10-04T07:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve Intermediate CA Support", "timeSpent": "PT0S", "updated": "2018-02-06T17:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Released in ezbake 1.1.8. Acceptance tests passed in https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/181/.", "created": "2017-03-23T11:44:00.000000"}], "components": [], "created": "2017-03-22T11:54:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b0040f2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzctwv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_55184_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_85703667"}], "description": "CI failure after bumping to puppet master for submodule pin seen on SLES 12 (https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/176/LAYOUT=sles12-64m-64a,LDAP_TYPE=default,label=beaker/) - which is only run nightly. This is the first time we've bumped to a puppet SHA tracking master branch, which is the first time we're actually running tests that require the gems we are now vendoring.\n\nIt turns out that due to reasons (no ca certificates in the default mock instance for SLES so as soon as you require openssl with jruby - which installing gems does - you get an exception about trust anchors being empty) the vendored gems aren't actually being installed on SLES 12.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15670", "fixedVersions": [], "id": "15670", "issueType": "CI Blocker", "key": "SERVER-1763", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-03-23T11:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server vendored gems not being installed on SLES 12", "timeSpent": "PT0S", "updated": "2017-03-23T11:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:40:00.000000"}], "components": ["Puppet Server"], "created": "2017-03-21T18:17:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f8827ca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylzi7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_536735598_*|*_1_*:*_1_*:*_599651776_*|*_10007_*:*_1_*:*_87704250_*|*_3_*:*_1_*:*_66310807_*|*_5_*:*_1_*:*_4306967631_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2938244529"}], "description": "Once PUP-7259 goes through, we should be able to update all our tests to use json in headers rather than pson. There might be other things in tests that use pson too... we should get rid of it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14717", "fixedVersions": ["SERVER 5.0.0"], "id": "14717", "issueType": "Task", "key": "SERVER-1762", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update server tests to use json rather than pson", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:38:00.000000"}], "components": [], "created": "2017-03-20T18:09:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53bfc6c7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzctx3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver 5 enables profiling by default. Profiling was enabled via configuration in Puppet Enterprise without impact, and as such is being made default behavior for open source Puppetserver."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_522997611_*|*_1_*:*_1_*:*_83032026_*|*_10007_*:*_1_*:*_12387175_*|*_3_*:*_1_*:*_427683288_*|*_5_*:*_1_*:*_7414958788_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_161417713"}], "description": "This ticket covers two changes to the Puppet profiler service implementation:\n\n1) Change the default for the {{profiler.enabled}} Trapperkeeper setting to {{true}}.\n\nPreviously, the default for the {{profiler.enabled}} Trapperkeeper setting had been {{false}}.  In PE, we've been setting the default to {{true}} since the initial release of metrics functionality in Puppet Server.  Where that has not seemed to create any known functional issues and having it set to {{true}} by default would make it easier for users to utilize the new status/metric endpoint and dashboard functionality being done for SERVER-1259, changing the default to {{true}} seems reasonable to do.\n\n2) Remove the [debug logging|https://github.com/puppetlabs/puppetserver/blob/010bfa26616ea26e3e27d7280ba41ebcc4e0462f/src/java/com/puppetlabs/puppetserver/MetricsPuppetProfiler.java#L56-L57] being done in the {{MetricsPuppetProfiler}} class for profiled metrics.\n\nIn the PE metrics implementation, the {{PuppetProfiler}} class [does not do any debug logging|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/9c1b335e090922798961e7db8082fc263b68547f/src/java/com/puppetlabs/enterprise/MetricsPuppetProfiler.java#L42-L49] for profiled metrics either.\n\nCurrent OSS users that might have been setting the [profiler.enabled setting|https://docs.puppet.com/puppetserver/2.7/config_file_puppetserver.html#settings] in the puppetserver.conf file to {{true}} in order to get the extra debug output would now need to set the puppet.conf [profile|https://docs.puppet.com/puppet/latest/configuration.html#profile] setting to {{true}} instead, as PE users have done to date.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "16516", "fixedVersions": ["SERVER 5.0.0"], "id": "16516", "issueType": "Bug", "key": "SERVER-1761", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-04-03T17:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change profiler.enabled setting default to 'true' and remove extra profile logging", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2017-03-20T12:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3acef1fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcr7b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The puppetserver CLI subcommands now exit with the same return code as the underlying ruby command would have used. Previously the exit codes were discarded, which could swallow errors from commands like `puppetserver gem`."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_259692410_*|*_1_*:*_1_*:*_104225037_*|*_10007_*:*_1_*:*_195304040_*|*_3_*:*_1_*:*_5157150_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_665278458"}], "description": "When any of the CLI subcommands are run, the exit code generated from the call to {{.run}} on the org.jruby.Main instance is not propagated all the way back out to the shell.  This causes commands which fail to errantly always return a 0 (success) exit code, for example:\n\n{noformat}\n> puppetserver gem install nananana\nJava HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0\nERROR:  Could not find a valid gem 'nananana' (>= 0) in any repository\n> echo $?\n0\n{noformat}\n\nIf run via MRI Ruby, the exit code would be \"2\" instead of \"0\" for this case.\n\nThis issue affects all of the CLI subcommands - irb, gem, and ruby.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14795", "fixedVersions": ["SERVER 5.0.0"], "id": "14795", "issueType": "Bug", "key": "SERVER-1759", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-04-03T17:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CLI subcommands do not return exit code to shell", "timeSpent": "PT0S", "updated": "2017-06-21T12:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Merged in 2c9d20d6666727cb9c5b46f73dc116309eb62e65.", "created": "2017-06-21T12:44:00.000000"}], "components": [], "created": "2017-03-16T16:55:00.000000", "creator": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3926f633"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcot3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Puppetserver `/v3/environment_modules` endpoint has been modified to make the environment query parameter optional. If the endpoint is queried without the environment parameter, puppetserver will respond with all modules in all environments."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_346826943_*|*_10007_*:*_1_*:*_8018886147_*|*_5_*:*_1_*:*_606810008_*|*_6_*:*_1_*:*_0"}], "description": "Add an endpoint that leverages the {{/v3/environment_modules}} endpoint to return all installed puppet modules, if authorized. It should be the same endpoint, but if the query param is left off it will assume all modules.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16246", "fixedVersions": ["SERVER 5.0.0"], "id": "16246", "issueType": "Task", "key": "SERVER-1758", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "resolution": "Fixed", "resolutionDate": "2017-06-21T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add puppetserver endpoint that returns all environment_modules", "timeSpent": "PT0S", "updated": "2018-10-29T11:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Thanks, John!", "created": "2017-06-22T11:06:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've kicked this back to \"Ready for Engineering\" because there's no longer an open PR for this work. This testing work is largely done in John's branch but is blocked on the agent side work in\u00a0PA-1130 to enable\u00a0the feature\u00a0first. Once that's in we can revist this ticket and John's work.", "created": "2018-02-08T11:38:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Closing ticket due to age/priority\n\nWe can re-consider & re-open if there is enough interest from the community", "created": "2021-12-22T11:48:00.000000"}], "components": [], "created": "2017-03-15T12:12:00.000000", "creator": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* passing tests in acceptance suite"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f872706"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1756"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automate"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcn8n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5978314927_*|*_10007_*:*_1_*:*_15635547300_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_20654292103_*|*_10005_*:*_1_*:*_108329229721"}], "description": "Add acceptance tests to ensure that puppetserver is restarted when puppet-agent is installed or upgraded on the node hosting puppetserver.", "epicLinkSummary": "Restart/HUP puppetserver on upgrades to puppet-agent package", "estimate": "PT0S", "externalId": "16827", "fixedVersions": ["SERVER 5.y"], "id": "16827", "issueType": "Task", "key": "SERVER-1757", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": "17130", "parentSummary": "Restart/HUP puppetserver on upgrades to puppet-agent package", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "resolution": "Won't Fix", "resolutionDate": "2021-12-22T11:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "acceptance: add tests ensuring puppetserver restarts when new puppet-agent installed", "timeSpent": "PT0S", "updated": "2021-12-22T11:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There is a unit test for the other non-text data cases here: https://github.com/puppetlabs/puppetserver/blob/2.7.2/test/unit/puppetlabs/services/request_handler/request_handler_core_test.clj#L119-L130. I'm going to update it to include the \"application/x-msgpack\" content type. Do we also want an integration level test, or is that sufficient?", "created": "2017-07-28T15:41:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "I would expect the unit test for this to be adequate.", "created": "2017-07-31T15:39:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Verified that a Puppet agent using msgpack can fetch a catalog from Puppetserver with the changes applied.", "created": "2017-08-07T12:19:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] please provide release notes for this issue, if needed. Thanks!", "created": "2017-08-17T08:15:00.000000"}], "components": [], "created": "2017-03-13T15:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@709d2546"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "QA Risk Assessment Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Covered by spec tests"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfi6v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When the puppet agent is set to send data in Msgpack format, previously the server wouldn't handle it correctly, because it tried to interpret the binary data as UTF-8. We now have a special case for msgpack data, so it is passed along as binary, just as it came in."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jul/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_603524786_*|*_1_*:*_1_*:*_695550665_*|*_10007_*:*_1_*:*_247838757_*|*_3_*:*_1_*:*_15739122_*|*_5_*:*_1_*:*_3280833932_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11124962044"}], "description": "Currently, if a request body with a {{Content-Type}} of \"application/x-msgpack\" is sent into Puppet Server, it will inappropriately be decoded into a string as UTF-8.  Instead, like is done for {{application/octet-stream}}, the raw bytes of the request body should be passed on through the indirector in Ruby Puppet, without any preliminary decoding.\n\nThe production code change for this ticket may just involve changing [this line|https://github.com/puppetlabs/puppetserver/blob/2.7.2/src/clj/puppetlabs/services/request_handler/request_handler_core.clj#L68] to:\n\n{code:clojure}\n(nil \"\" \"application/octet-stream\" \"application/x-msgpack\") body\n{code}\n\nAlong with this change, some sort of automated \"integration\" test should be written to validate that the msgpack payload is preserved / handled correctly through the request pipeline.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16514", "fixedVersions": ["SERVER 5.1.0"], "id": "16514", "issueType": "Bug", "key": "SERVER-1755", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-08-07T12:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Avoid decoding msgpack request body as UTF-8", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [], "components": [], "created": "2017-03-13T12:34:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34c87ee2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym85b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_172981347_*|*_1_*:*_1_*:*_77495774_*|*_5_*:*_1_*:*_8472453761_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_524480860"}], "description": "Currently, the master branch of puppet server has a fairly outdated version of puppet in its submodule. We should bump to whatever passing of the master branch of puppet is, to ensure that nothing in Puppet 5 so far is broken under puppet server - in particular, the symbol monkeypatch issue (PUP-5973).\n\nWe should also bump hiera to a new version, if we can. We probably can't bump facter any further do to cfacter, but we should check.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17144", "fixedVersions": ["SERVER 5.0.0"], "id": "17144", "issueType": "Task", "key": "SERVER-1754", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-03-22T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump puppet submodule on master", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [830eec6|https://github.com/puppetlabs/puppetserver/commit/830eec69d77b96fb9e05e589b4dfc5d4725c3279].  Tests still passing so marking resolved.", "created": "2017-03-17T10:04:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:39:00.000000"}], "components": [], "created": "2017-03-13T12:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20e67a28"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzckrr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24752_*|*_10007_*:*_1_*:*_242820720_*|*_3_*:*_1_*:*_2738363_*|*_5_*:*_1_*:*_8910751860_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_92116025"}], "description": "Along with open-sourcing the Puppet Server implementation of metrics, we should also add the metrics-webservice to the bootstrap and web-routing config so that any metrics available via JMX can be queried via the [HTTP endpoint|https://github.com/puppetlabs/trapperkeeper-metrics/blob/1.0.0/documentation/index.md#low-level-http-api] that the tk-metrics service hosts.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "15669", "fixedVersions": ["SERVER 5.0.0"], "id": "15669", "issueType": "New Feature", "key": "SERVER-1753", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add metrics-webservice to bootstrap and web-routing config", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:39:00.000000"}], "components": [], "created": "2017-03-13T09:21:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62a3e2b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym853:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Adds certain memory related metrics to OSS puppetserver"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_145820766_*|*_1_*:*_1_*:*_24324_*|*_10007_*:*_1_*:*_366625655_*|*_3_*:*_1_*:*_10286170_*|*_5_*:*_1_*:*_8472882138_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_263358914"}], "description": "PE Puppet Server registers some [memory-related metrics|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/b43bcfb820939a87f009d5ff5183c9e384fed6cc/src/clj/puppetlabs/enterprise/services/master/master_core.clj#L54-L94] that we have [documented for end users|https://docs.puppet.com/pe/2016.5/puppet_server_metrics.html#other-metrics].  Even though these are somewhat redundant now that the status service has a superset of these metrics in its [jvm-metrics|https://github.com/puppetlabs/trapperkeeper-status/blob/0.7.1/documentation/metrics.md#jvm-metrics] section and these metrics are also available through JMX, we should probably retain the memory-related metrics under the \"master\" service implementation for backward compatibility - to avoid breaking existing PE users.\n\nThere are a set of jvm-metrics tests that we should copy over to OSS as well.  Because these exercise the [graphite sender|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/b43bcfb820939a87f009d5ff5183c9e384fed6cc/test/integration/puppetlabs/enterprise/services/master/master_service_test.clj#L309-L391], it might be best to wait on doing this ticket until we've updated OSS Puppet Server to use a version of trapperkeeper-metrics which supports graphite integration.  This should happen as part of SERVER-1721.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "16512", "fixedVersions": ["SERVER 5.0.0"], "id": "16512", "issueType": "New Feature", "key": "SERVER-1752", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-03-22T11:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Port memory metrics from PE to OSS", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] - I'd like to get your take on this one.\n\nI think this behavior has existed back to the beginning of Puppet Server / Ruby Puppet integration - not a more recent regression due to anything specific in one or the other.\n\nI believe what is happening is that when the {{/puppet/v3/environments}} endpoint is being hit, the [Puppet::Environments::EnvironmentLoader::Cached.list()|https://github.com/puppetlabs/puppet/blob/4.9.4/lib/puppet/network/http/api/master/v3/environments.rb#L11-L19] method is being called and the resulting {{Environment}} objects returned are initialized with data from the \"environment.conf\" settings cached in {{Puppet::Settings}}.\n\nWhen other HTTP requests like {{/puppet/v3/catalog}} are made, the Puppet::Environments::EnvironmentLoader::Cached.get() method is called.  The logic behind the get() call will expire cache info for an environment, if appropriate, including a call to [Puppet.settings.clear_environment_settings|https://github.com/puppetlabs/puppet/blob/4.9.4/lib/puppet/environments.rb#L339-L391] to purge info previously cached from the environment's \"environment.conf\" file.  The environment-cache endpoint in Puppet Server hooks into the \"cache_expiration_service\" which is behind the {{Cached.get()}} call mentioned above.  None of this cache expiration logic is run in the context of the list() call which occurs for a call to the {{/puppet/v3/environments}} endpoint.\n\nThe behavior I see seems to follow from how the cache expiration logic is hooked up.  Here are some example steps, running Puppet 4.9.4 and Puppet Server 2.7.2:\n\n1) Set \"environment_timeout = 0\" (expire immediately) in both the puppet.conf and .../environment/production/environment.conf file.\n\n2) Set \"config_version\" in the .../environment/production/environment.conf file to \"/bin/echo is1\".\n\n3) Make a request to the .../puppet/v3/environments endpoint.\n\nNote that \"environments.production.settings.config_version\" value in the response is \"/bin/echo is1\".\n\n4) Change the \"config_version\" in the  .../environment/production/environment.conf file to \"/bin/echo is2\".\n\n5) Make a request to the .../puppet/v3/environments endpoint.\n\nNote that \"environments.production.settings.config_version\" value in the response is still \"/bin/echo is1\", where \"/bin/echo is2\" was expected since the environment_timeout was set to 0.  I see the same results if I repeat this request an arbitrary number of times.\n\n6) Make a request to the .../puppet/v3/catalog/...?environment=production endpoint.\n\nNote that the \"version\" value in the response in the response is the expected new value for config_version, \"is2\".\n\n7) Make another request to the .../puppet/v3/environments endpoint.\n\nNote that \"environments.production.settings.config_version\" value in the response is now \"/bin/echo is2\", the latest value.\n\nI believe this behavior occurs because the catalog request invalidates the Puppet::Settings cache for the production environment, allowing the next request to the environments endpoint to return the latest data.\n\nI agree that it would be nice to have the environment.conf settings invalidated as part of a call to the environment-cache endpoint that Puppet Server hosts.  Ideally, we could do this in such a way where the cache expiration service integration that Puppet Server already uses with Ruby Puppet could just be considered in the context of requests made to the environments endpoint as well - keeping the work that Puppet Server needs to do to invalidate the cache fairly lightweight.\n\nI experimented with a change to the implementation of the [Cached.list()|https://github.com/camlow325/puppet/commit/23d171071637fbff8c8b43c93c377ae5fe55db00] method.  This is certainly not the most optimal solution but it did appear to have the effect I expected.  Specifically, I found that with these changes, I could change values in the \"environment.conf\" file and, with \"environment_timeout = unlimited\", hit the \"environment_cache\" endpoint and have a subsequent call to the \"/puppet/v3/environments\" endpoint return the latest data from the environment.conf file on disk.\n\n[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] - do you think that some sort of solution for this could be done inside of the {{Puppet::Environments::EnvironmentLoader::Cached}} class, avoiding the need to do anything different in Puppet Server or other parts of the Ruby Puppet code base?  If so, I could move this ticket over to the PUP project.  Would you think that the PDE team might take ownership of this one if a solution internal to the {{Cached}} class could be done?  Thanks!", "created": "2017-03-15T13:37:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This issue would be resolved by refactoring necessary for the Clojure File Serving epic.", "created": "2018-02-20T11:29:00.000000"}], "components": ["Puppet Server"], "created": "2017-03-10T09:44:00.000000", "creator": "623c0bb950bb2b0070b6af99", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b20e519"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzch8v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_973468249_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_29013571646"}], "description": "When one calls \"https://$PUPPET_SERVER:8140/puppet/v3/environments\" for each environment the \"config_version\" is displayed from the environment.conf file. However if this file changes, the API call will intermittently display the old and new settings.\n\nI've tracked this down to the jruby pool. I have \"max-requests-per-instance\" set which probably explains the intermittent results (when a new jruby is spawned it picks up the new value). Furthermore if I call the API to flush jruby (https://docs.puppet.com/puppetserver/latest/admin-api/v1/jruby-pool.html) then the new value is reflected immediately and consistently.\n\nI also tried calling the environment cache flush API (https://docs.puppet.com/puppetserver/latest/admin-api/v1/environment-cache.html) but this does not seem to have any effect, either flushing the specific environment that was changed, or calling without an argument and thereby flushing all environments.\n\nSince flushing the jruby pool is an expensive operation, I would suggest that flushing the environment cache for a particular environment should cause the environment.conf for that environment to get re-read and reflected in the API.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14793", "fixedVersions": [], "id": "14793", "issueType": "Improvement", "key": "SERVER-1751", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0bb950bb2b0070b6af99", "resolution": "Duplicate", "resolutionDate": "2018-02-20T11:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "config_version change not consistently reflected in environments API call", "timeSpent": "PT0S", "updated": "2018-02-20T11:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "On Puppet Server we also want to be able to get to MsgPack from Java. Hopefully the JRuby version of MsgPack is based on the regular MsgPack for Java.", "created": "2017-03-10T02:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] It looks like the msgpack gem that JRuby uses is backed by a Java implementation, but apparently a \"made for JRuby\" one.  The JRuby msgpack gem includes a {{msgpack.jar}} file, whose source appears to be maintained [here|https://github.com/msgpack/msgpack-ruby/tree/v1.1.0/ext/java/org/msgpack/jruby].  I'm assuming that may be different, then, than the msgpack for Java that you are thinking of, i.e., [this code|https://github.com/msgpack/msgpack-java/tree/0.8.12].  Do you think that poses a problem?", "created": "2017-03-13T15:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330], [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] - should we create some sort of \"msgpack support\" epic to gather any server / agent-side work - like we did for the JSON work in PUP-3852.  Is completing all of the enabling msgpack work considered opportunistic at this point for \"Puppet 5\"?", "created": "2017-03-13T15:38:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] We probably need both - one to be able to talk MsgPack in Ruby (with the Ruby API), and one to be able to use MsgPack in Java, with the Java API. This because we don't want code that we are adding in Java to depend on the JRuby version (it needs to also work on a JVM where there is no JRuby present).\n\nDid not drill down into the JRuby implementation to see if it uses the official JVM version or not. (The latest version, 7, is faster).", "created": "2017-03-14T07:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}We probably need both - one to be able to talk MsgPack in Ruby (with the Ruby API), and one to be able to use MsgPack in Java, with the Java API. This because we don't want code that we are adding in Java to depend on the JRuby version (it needs to also work on a JVM where there is no JRuby present).{quote}\n\nThanks, [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd].  That makes sense to me.  I had been thinking you were suggesting that both JRuby and pure Clojure/Java code paths should use the same underlying MsgPack implementation.  I agree with you, though, that we'll probably want to let the MsgPack for Ruby code be used under JRuby vs. MsgPack for Java, where needed, for pure Clojure/Java code paths.  In Puppet Server, we've definitely avoided trying to establish any JRuby-specific dependencies except for cases where it is absolutely necessary - i.e., for execution of Ruby Puppet code in JRuby containers.", "created": "2017-03-14T09:56:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:63d40628f6e1b543161789a7] Are we still planning on having an overarching msgpack epic?", "created": "2017-03-28T16:49:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:63d40628f6e1b543161789a7], I think you were talking about prioritizing msgpack for\u00a0Platform 6, wanted to make sure this ticket is on your radar wrt that. Don't know if you have a general epic for it?", "created": "2018-02-20T11:25:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Given the work [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] and server team has been doing with multi-json, jrjackson, etc I'm not sure this is needed anymore. I am fine closing. [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] since this ticket blocks PUP-5908, what are your thoughts?", "created": "2018-02-28T22:11:00.000000"}], "components": ["Puppet Server"], "created": "2017-03-09T15:42:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@150e23fc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcgsf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1642054115_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_38190210510_*|*_10005_*:*_1_*:*_109879712498"}], "description": "In order to facilitate PUP-5908 we need to vendor the msgpack gem in puppetserver. Note a similar change is being made for the agent in PA-706.\n\nThis will also make it possible to opt-into msgpack for agent/master communication.\n\nNote msgpack has native extensions. Also puppetserver will need to prefer the JRuby version of the gem as opposed to the one packaged into puppet-agent.\n\n/cc [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16826", "fixedVersions": ["SERVER 5.y"], "id": "16826", "issueType": "New Feature", "key": "SERVER-1750", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Won't Fix", "resolutionDate": "2021-12-06T10:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Vendor JRuby compatible msgpack gem", "timeSpent": "PT0S", "updated": "2021-12-06T10:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9], [~accountid:70121:ef2e2611-7893-499f-94ad-b7b2245beace] - care to take a look at this one?  I'm going to move this over to the SERVER project since I think any rework around this would need to be done there and not in core Ruby Puppet.", "created": "2017-03-08T10:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Although maybe we should also have a PDB ticket for this one for any PuppetDB checkin logic we may have, /CC [~accountid:557058:dc666788-5651-476c-a211-ec5b44a7b0dd]?", "created": "2017-03-08T10:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] - I'd be curious to know more about the \"crash\" that you saw when Puppet Server was unable to make the request to the updates server?  I would expect to see some error info and possibly a stack trace (depending upon the logging verbosity configured in your logback.xml file) logged when Puppet Server is unable to make a call to the updates server but I would not expect Puppet Server to crash.  Do you have a stack trace or other logging info that you can post here around when the crash occurred?", "created": "2017-03-08T10:40:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Unfortunately, I don't have the stack trace. I had a network switch and I seem to remember the error being something like \"could not resolve updates.puppet.com\" and then EPIC FAIL NOISES Clojure hates my screen.", "created": "2017-03-08T10:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] - ah, okay, thanks.  It may be that you had just seen the \"could not resolve\" message as an error in the log but that the Puppet Server process did not crash as a result.  If you are able to reproduce the crash, could you append any extra details you may see from the log to this ticket?", "created": "2017-03-08T12:25:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] It definitely crashed. I was running with {{puppetserver foreground -d}} and I had to {{^C}} out of it and restart it to resume testing. If it happens again, I'll capture a trace.", "created": "2017-03-08T12:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9], [~accountid:70121:ef2e2611-7893-499f-94ad-b7b2245beace] - have you come to any conclusions yet as to when / whether we should change the defaults for the {{check-for-updates}} logic?", "created": "2017-03-15T13:12:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't believe this still causes Puppet Server to fail.\u00a0", "created": "2018-02-20T11:22:00.000000"}], "components": [], "created": "2017-03-08T07:04:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet components do not default to sending information without a user's explicit consent."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d2bee2c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcfav:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4784200499_*|*_6_*:*_3_*:*_93637_*|*_10004_*:*_1_*:*_25384775103"}], "description": "When testing in a VM while traveling, I had the Puppet Server crash on me when trying to access updates.puppet.com.\n\nWe took a look at why this was happening, and found this update https://github.com/puppetlabs/puppetserver/blob/39ce94ca88f9a53e2a3e4bae6c62340bc260cfdf/documentation/config_file_product.markdown.\n\nI would like to request that {{check-for-updates}} be disabled by default since automatically attempting to phone home is a red flag in many environments.\n\nAdditionally, I would split this into two options {{check-for-updates}} which does what you expect and {{send-performance-metrics}}. Some environments may be just fine checking for updates but not OK with sending any level of performance metrics.\n\nIn Puppet Enterprise, I would suggest making this a prompt in the installer.", "environment": "Any", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16510", "fixedVersions": [], "id": "16510", "issueType": "Bug", "key": "SERVER-1748", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-20T11:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reporting back to updates.puppet.com should be opt-in", "timeSpent": "PT0S", "updated": "2018-02-20T11:22:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I believe this has already been addressed in a later version of ezbake, 1.1.6, than what we had been using in Puppet Server 2.7.2.  See [this commit|https://github.com/puppetlabs/ezbake/commit/3158a92dde3386cad73c885ef046a3f0f156185b].\n\n[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4], [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] - that sound right to you?", "created": "2017-03-08T11:38:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] yes, that sounds right. This will be fixed in the next puppetserver release.", "created": "2017-03-08T11:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Excellent, thanks, [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab].  Where we've already bumped to ezbake 1.1.6 on the master branch of puppetserver, see [here|https://github.com/puppetlabs/puppetserver/blob/bb21b3824532d4c52295c348e8caf231ee584d76/project.clj#L159], I think any of our latest [nightlies|http://nightlies.puppetlabs.com/puppetserver/] could be tested to confirm the fix.  Marking this issue as resolved for the Puppet Server 5.0 release.", "created": "2017-03-08T12:11:00.000000"}, {"author": "5a5a7126a42ac966073e9e8d", "body": "Thanks for that :) Any chance to see a new *package* release to add this dependency?", "created": "2017-03-08T12:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:5a5a7126a42ac966073e9e8d] We'll fix this in the next Puppet Server release, planned to be 5.0.  We don't have any specific plans for another 2.x release at this point but we could definitely look to include this fix when/if we would have one.", "created": "2017-03-08T12:48:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:53:00.000000"}], "components": ["Puppet Server"], "created": "2017-03-08T02:24:00.000000", "creator": "5a5a7126a42ac966073e9e8d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@208a90c9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcf53:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously, Puppet Server rpm package installs could fail when performed on a system where \"which\" has not already been installed:\n\n  /var/tmp/rpm-tmp.P9rUht: line 12: which: command not found\n\nPuppet Server packages now include a requirement for \"/usr/bin/which\", ensuring that it will be in place when the Puppet Server as the service scripts reference it."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_35235405_*|*_5_*:*_1_*:*_9677167103_*|*_6_*:*_1_*:*_0"}], "description": "Hello,\n\nThe command `which` is required by the `puppetserver` package to check for the `puppet` unix user:\n\n```\nInstalling : 1:java-1.8.0-openjdk-headless-1.8.0.121-0.b13.el7_3.x86_64                                        12/13 \n/var/tmp/rpm-tmp.P9rUht: line 12: which: command not found\nuseradd: invalid shell '--comment'\n  Installing : puppetserver-2.7.2-1.el7.noarch                                                                   13/13 \nwarning: user puppet does not exist - using root\n[....]\nwarning: user puppet does not exist - using root\ninstall: invalid user 'puppet'\n```\n\nSince this command is shipped by the `which` package, please add this as a dependency of the `puppetserver` package.", "environment": "CentOS 7 x86_64\nSetup with puppetlabs-release-pc1 package: https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm\nDocker environment and/or minimal CentOS 7 installations, i did many installs, this is not an isolated case.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17424", "fixedVersions": ["SERVER 5.0.0"], "id": "17424", "issueType": "Bug", "key": "SERVER-1746", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5a5a7126a42ac966073e9e8d", "resolution": "Fixed", "resolutionDate": "2017-03-08T12:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Missing puppetserver RPM package dependency", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [], "components": [], "created": "2017-03-07T08:45:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44f17ad8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1739"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym3hz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Testing ticket."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1040857189_*|*_1_*:*_1_*:*_92841583_*|*_10007_*:*_1_*:*_236943781_*|*_3_*:*_1_*:*_538486988_*|*_5_*:*_1_*:*_6121650418_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1745153106"}], "description": "Add integration test to PuppetDB for http client metrics, to ensure that PuppetDB metrics make it into the status endpoint. The code on the PuppetDB side is in the terminus and is only exercised during certain types of Puppet runs (e.g. with exported resources - which does a resource search, using the PuppetDB query function), so this test should live in PuppetDB.", "epicLinkSummary": "Http Client Metrics in Puppet Server", "estimate": "PT0S", "externalId": "17143", "fixedVersions": ["SERVER 5.0.0"], "id": "17143", "issueType": "Task", "key": "SERVER-1745", "labels": [], "originalEstimate": "PT0S", "parent": "17005", "parentSummary": "Http Client Metrics in Puppet Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-04-18T16:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add PuppetDB integration test for http client metrics", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4], thanks for filing this ticket.  I agree that an upgrade should not cause this break.\n\n[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091], I think this may be related to when we added the {{metrics}} section to the {{resources/ext/config/conf.d/puppetserver.conf}} file in [83df83|https://github.com/puppetlabs/puppetserver/commit/83df83f7cb13d31ee2a1d942bf71b24c53c89d98].  In PE Puppet Server, I see that we've been putting {{metrics}} into its own {{metrics.conf}} file.  For consistency between the two, what would you think of doing the same for the OSS implementation?  That by itself may alleviate this upgrade issue since the metrics.conf file would not have existed in older Puppet Server packages.  Even with that change, though, I think it might be reasonable to maybe have the tk-metrics {{get-server-id}} sub in a default value (along with some sort of warning/notification in the log), e.g., \"localhost\", if the value is not present in the config file.  [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] - WDYT?", "created": "2017-03-06T09:32:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Hmm... well, I don't think having {{get-server-id}} sub in a value is a great idea because it's not going to actually fix the problem, which is that the service doesn't have the proper configuration to start up. We could make `server-id` not required, but that seems like not the greatest idea because it seems like most people won't bother to configure it and then anyone who wants to export these metrics somewhere and who is running multiple puppet server instances is going to have the metrics conflict.\n\nBut on top of that, with the other work we're doing in the `OSS Server metrics` epic, we're going to have additional configuration in the `metrics` section that we'll want. I think that splitting up this configuration into a separate file is probably the best idea? We already have separate `auth.conf` and a couple other files, right, so it would just be adding an additional file into https://github.com/puppetlabs/puppetserver/tree/master/ezbake/config/conf.d, and then it should get added to the packages?", "created": "2017-03-07T10:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think even if we make {{server-id}} required but lay it down with a value of {{localhost}} in the default configuration that there is a decent likelihood some people will not think to change it before setting up a multi-server configuration.  Although we don't have a very good track record for this in puppetserver, I like to consider ways to make any new configuration settings that we add be \"optional\" (using sane defaults where possible) so that nothing breaks on upgrade.  That said, though, I think putting this configuration in a separate metrics.conf file should be sufficient to avoid breaking users on upgrade.  So I'm good with just doing that for now.", "created": "2017-03-07T14:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [301d592|https://github.com/puppetlabs/puppetserver/commit/301d592cddd6a3982a7fce81695bfeef0b425533].  Tests still passing so marking resolved.", "created": "2017-03-14T09:40:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "Confirmed on puppetserver-2.7.2.master-0.1SNAPSHOT.2017.03.10T1105.el7.noarch, my tests are now passing.", "created": "2017-03-14T09:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Excellent, thanks again for reporting the bug and confirming the fix, [~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4].", "created": "2017-03-14T09:44:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:42:00.000000"}], "components": ["Puppet Server"], "created": "2017-03-06T02:36:00.000000", "creator": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@cfbd6e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzc39b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_496094867_*|*_1_*:*_1_*:*_201138692_*|*_10007_*:*_1_*:*_6696624_*|*_3_*:*_1_*:*_1940609_*|*_5_*:*_1_*:*_9171389959_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_7219516"}], "description": "When the metrics server-id is missing from puppetserver.conf, the Puppet Server service now fails to start:\n\n{noformat}\n2017-03-06 04:26:59,528 INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Initializing web server(s).\n2017-03-06 04:26:59,576 INFO  [async-dispatch-2] [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2017-03-06 04:26:59,602 INFO  [async-dispatch-2] [p.s.j.jruby-pool-manager-service] Initializing the JRuby service\n2017-03-06 04:26:59,644 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\nclojure.lang.ExceptionInfo: Input to init-metrics does not match schema: [(named (not (instance? java.lang.String nil)) hostname) nil nil nil]\n        at puppetlabs.services.jruby.jruby_metrics_core$eval39039$init_metrics__39044.invoke(jruby_metrics_core.clj:267)\n        at puppetlabs.services.jruby.jruby_metrics_service$reify__39178$service_fnk__5255__auto___positional$reify__39193.init(jruby_metrics_service.clj:30)\n        at puppetlabs.trapperkeeper.services$eval5057$fn__5058$G__5045__5061.invoke(services.clj:8)\n        at puppetlabs.trapperkeeper.services$eval5057$fn__5058$G__5044__5065.invoke(services.clj:8)\n        at puppetlabs.trapperkeeper.internal$eval13825$run_lifecycle_fn_BANG___13832$fn__13833.invoke(internal.clj:204)\n        at puppetlabs.trapperkeeper.internal$eval13825$run_lifecycle_fn_BANG___13832.invoke(internal.clj:187)\n        at puppetlabs.trapperkeeper.internal$eval13854$run_lifecycle_fns__13859$fn__13860.invoke(internal.clj:238)\n        at puppetlabs.trapperkeeper.internal$eval13854$run_lifecycle_fns__13859.invoke(internal.clj:215)\n        at puppetlabs.trapperkeeper.internal$eval14324$build_app_STAR___14333$fn$reify__14343.init(internal.clj:588)\n        at puppetlabs.trapperkeeper.internal$eval14370$boot_services_for_app_STAR__STAR___14377$fn__14378$fn__14380.invoke(internal.clj:616)\n        at puppetlabs.trapperkeeper.internal$eval14370$boot_services_for_app_STAR__STAR___14377$fn__14378.invoke(internal.clj:615)\n        at puppetlabs.trapperkeeper.internal$eval14370$boot_services_for_app_STAR__STAR___14377.invoke(internal.clj:609)\n        at clojure.core$partial$fn__4761.invoke(core.clj:2521)\n        at puppetlabs.trapperkeeper.internal$eval13893$initialize_lifecycle_worker__13904$fn__13905$fn__13991$state_machine__11865__auto____13992$fn__13994.invoke(internal.clj:255)\n        at puppetlabs.trapperkeeper.internal$eval13893$initialize_lifecycle_worker__13904$fn__13905$fn__13991$state_machine__11865__auto____13992.invoke(internal.clj:255)\n        at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:1012)\n        at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:1011)\n        at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:1016)\n        at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:1014)\n        at clojure.core.async$ioc_alts_BANG_$fn__12033.invoke(async.clj:383)\n        at clojure.core.async$do_alts$fn__11979$fn__11982.invoke(async.clj:252)\n        at clojure.core.async.impl.channels.ManyToManyChannel$fn__6789$fn__6790.invoke(channels.clj:95)\n        at clojure.lang.AFn.run(AFn.java:22)\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n        at java.lang.Thread.run(Thread.java:745)\n{noformat}\n\nThis is a problem when upgrading from the current Puppet Server 2.7.2 to the nightly/snapshot version (and hence future release) and using the existing configuration file. Ideally the existing config should work gracefully with a sensible default for the server-id (localhost, to match the example config).\n\nAdding this section to the running config from the example config file does fix the service startup:\n\n{noformat}\nmetrics: {\n    server-id: \"localhost\"\n}\n{noformat}", "environment": "puppetserver-2.7.2.master-0.1SNAPSHOT.2017.03.05T1104.el7.noarch", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "14791", "fixedVersions": ["SERVER 5.0.0"], "id": "14791", "issueType": "Bug", "key": "SERVER-1744", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "resolution": "Fixed", "resolutionDate": "2017-03-14T09:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Missing metrics server-id in config (on upgrade) causes service failure", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9], [~accountid:70121:ef2e2611-7893-499f-94ad-b7b2245beace] - any concerns if the \"Puppet Server\" team takes this on for Puppet Server 5?", "created": "2017-03-03T17:53:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "No, seems fine.", "created": "2017-03-03T18:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [17e18a|https://github.com/puppetlabs/puppetserver/commit/17e18a668d215a2c42919bf8acbaa2a9965f36cf].  Tests still passing so marking resolved.", "created": "2017-03-14T09:38:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:41:00.000000"}], "components": [], "created": "2017-03-03T17:53:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48c9b3ce"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzc393:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_406390867_*|*_1_*:*_1_*:*_405309028_*|*_10007_*:*_1_*:*_75156905_*|*_3_*:*_1_*:*_21666888_*|*_5_*:*_1_*:*_9171520530_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_8632057"}], "description": "As we complete the work to migrate the puppetserver metrics implementation from PE into OSS, I'd like to be able to have the master-service in OSS puppetserver be used directly in PE puppetserver, avoiding the duplication of logic that occurs between the master and pe-master services today - CA initialization, Puppet HTTP route registrations, etc.\n\nOne major difference between the OSS and PE master services today is that the OSS master service does a {{check-for-updates}} call to dujour whereas in PE, the dujour work is done from a separate \"analytics\" trapperkeeper service.  For this ticket, I'd like to mirror that approach in OSS puppetserver - moving the {{check-for-updates}} call into an OSS-specific \"analytics\" trapperkeeper service.  We'd only bootstrap the appropriate service for the target puppetserver package - OSS vs. PE.\n\n[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] and [~accountid:70121:ef2e2611-7893-499f-94ad-b7b2245beace] have been discussing moving the analytics service in pe-puppet-server-extensions into its own repo at some point.  Maybe it would make sense to move an OSS-based analytics service out to a new repo as well at some point.  In the short term, though, I think at least separating the OSS {{check-for-updates}} work into a new TK service would allow for the OSS master service to be reusable in PE - with the possibility of the OSS analytics service potentially being moved to somewhere else later on.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "16245", "fixedVersions": ["SERVER 5.0.0"], "id": "16245", "issueType": "Improvement", "key": "SERVER-1743", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Separate check-for-updates call into new TK service", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] Is this something the RE team could look at?", "created": "2017-03-07T16:56:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "We'll take a look, yes", "created": "2017-03-07T17:32:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "[~accountid:557058:991ae385-804f-446b-b406-589b9562159e] - what OS and version are you seeing this on?", "created": "2017-03-07T17:33:00.000000"}, {"author": "557058:991ae385-804f-446b-b406-589b9562159e", "body": "OS is CentOS 6.8, Kernel is 4.4.x.\n\nIt seems to only happen when the JVM is deadlocked trying to GC (heap size is 32g).  I can't reproduce it when it's healthy.\n\nLMK what other info you need.", "created": "2017-03-07T17:35:00.000000"}, {"author": "557058:991ae385-804f-446b-b406-589b9562159e", "body": "So sounds like the time between kill -9 and start isn't long enough.", "created": "2017-03-07T17:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] - I wonder if we need to have some logic that loops over looking for the pid to not exist for some period of time rather than doing a one-time check after 1 second.  See [this code|https://github.com/puppetlabs/ezbake/blob/1.1.6/resources/puppetlabs/lein-ezbake/template/global/ext/ezbake-functions.sh.erb#L97-L105].  Apparently even a {{kill -9}} can take significantly longer if the process is busy enough.\n\nThere's probably also some cleanup we should do to bail out if the {{stop}} fails without continuing on to trying the {{start}} again.  For example, in the [RedHat FOSS script|https://github.com/puppetlabs/ezbake/blob/1.1.6/resources/puppetlabs/lein-ezbake/template/foss/ext/redhat/init.erb#L102-L103], we just call {{start}} right after {{stop}} without checking for any {{stop}} failures.", "created": "2017-03-07T17:47:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "If I understand correctly, the JVM will ignore signals during a GC run, which would explain a 'kill -9' taking a bit. So there is probably some room to be a bit smarter in how we handle those cases. We'll take a look.", "created": "2017-03-09T09:41:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "Looking at things like http://bugs.java.com/view_bug.do?bug_id=6392332 - I may have been technically wrong, it's not ignoring signals during GC, but they don't get resources to execute during heavy GC operations. ", "created": "2017-03-09T10:23:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks for looking into that [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4].  I think the Java bug you linked was talking about the SIGTERM being slow.  Wasn't sure if that applied to SIGKILL as well?\n\nI'm thinking maybe we could just extend the existing logic which waits up to the stop_timeout for the {{kill -TERM}} for the process to die, bailing out earlier than the timeout if the process is dead, to do a similar loop up to the stop_timeout after the secondary {{kill -9}}.  It seems like we should still have an upper bound on how long we wait for the process to die, e.g., so a \"stop\" command doesn't potentially run \"forever\".\n\nWe wait up to [60 seconds|https://github.com/puppetlabs/ezbake/blob/1.1.6/src/puppetlabs/ezbake/core.clj#L447] by default for the -TERM to finish today.  Up to another 60 seconds by default - but again configurable via the stop_timeout - seems like it might be okay to wait for the {{kill -9}} to complete.  If that turns out not to be enough, maybe we could bump the timeout up to something higher later on.  Seems nice to avoid having two timeouts until we'd have proof that we need them.  WDYT?", "created": "2017-03-09T13:17:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "Something like https://github.com/puppetlabs/ezbake/pull/395 might be close?\n\nThat should also make the 'restart' fail if the service doesn't stop. \n\nThe timeout itself can be tuned in the /etc/sysconfig/ file, in the SERVICE_STOP_RETRIES variable", "created": "2017-03-10T14:12:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "This has been merged and released in ezbake 1.1.7 - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] do you want a PR to puppetserver to pull in that release?", "created": "2017-03-15T11:57:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] Sure, that'd be great.  Thanks so much for taking this on!", "created": "2017-03-15T11:59:00.000000"}], "components": [], "created": "2017-03-03T14:31:00.000000", "creator": "557058:991ae385-804f-446b-b406-589b9562159e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f6b2b55"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcbl3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When the sysvinit script for Puppetserver was used to restart Puppetserver, it would always try to start the service even if stopping the service failed. In addition there are some cases where Puppetserver might not terminate immediately when sent a SIGKILL, which exacerbated the issue with starting Puppetserver when it failed to stop. This has been resolved by waiting for a grace period after Puppetserver has been SIGKILLed to ensure that it did actually exit, and only attempting to start the service when the stop action succeeds."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_603661058_*|*_3_*:*_1_*:*_8889945841_*|*_5_*:*_1_*:*_607157695_*|*_6_*:*_1_*:*_0"}], "description": "PuppetServer init script sometimes doesn't restart the process:\n\n{code}\nhost \u00bb sudo service puppetserver restart\nStopping puppetserver: Process 25720 not terminated gracefully after 60 seconds\nProcess 25720 not killed after SIGKILL\n                                                           [FAILED]\nStarting puppetserver:                                     [  OK  ]\nhost :: ~ \u00bb ps -ef | grep java\n343277 50061 49554  0 21:29 pts/1  00:00:00 grep java\nhost :: ~ \u00bb\n{code}\n\nRunning restart again actually starts it.", "environment": "Puppet Server 2.7.2\nJava 1.8.0-112\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15144", "fixedVersions": ["SERVER 2.8.0", "SERVER 5.0.0"], "id": "15144", "issueType": "Bug", "key": "SERVER-1742", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:991ae385-804f-446b-b406-589b9562159e", "resolution": "Fixed", "resolutionDate": "2017-06-21T12:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SysVinit script doesn't restart the process", "timeSpent": "PT0S", "updated": "2017-08-28T12:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2017-03-03T13:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e343c2e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1738"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcbj3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server is now using a newer version of the Jetty web server components, 9.4.4.  This in turn requires that Puppet Server be built for use on Java 8 rather than Java 7.  See SERVER-1738 for packaging changes related to Java 8."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_107450_*|*_10007_*:*_1_*:*_69800100_*|*_3_*:*_1_*:*_341333065_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_83597868_*|*_10006_*:*_2_*:*_4161362298"}], "description": "This ticket builds on the work being done to support Jetty 9.4.x in trapperkeeper-webserver-jetty9, integrating the new tk-jetty9 into Puppet Server.  As part of this ticket, we'll need to upgrade Puppet Server to be built for JDK 8.  We may need to wait on this until supporting work in ezbake is done in RE-8191.  We should also do some work to validate perf with the new tk-jetty9 although we may want to do that as a follow-up linked ticket for which we do a gatling A/B run.", "epicLinkSummary": "Drop support for running on JDK 7", "estimate": "PT0S", "externalId": "17141", "fixedVersions": ["SERVER 5.0.0"], "id": "17141", "issueType": "Improvement", "key": "SERVER-1741", "labels": [], "originalEstimate": "PT0S", "parent": "16508", "parentSummary": "Drop support for running on JDK 7", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-04-26T11:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade to Jetty 9.4.x", "timeSpent": "PT0S", "updated": "2017-06-08T19:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I can't say I've seen this issue.  Where it sounds like the issue only pops up every few days, I wonder if this may be due to a memory leak.  If you let the puppetserver continue to run while in that state, does the puppetserver process eventually crash, e.g., with a \"java.lang.OutOfMemoryError: Java heap space\" error?\n\nOne possibility may be that some memory may be inappropriately held onto even after a JRuby instance is recycled, when the {{max-requests-per-instance}} threshold is hit for the instance.  If that were the case, it may be that just the accumulation of additional JRuby instances with their associated JITed code segments eventually exhausts heap space.  I don't think we saw if the JIT compile-mode setting specifically exacerbated this condition, but we had seen a memory leak that persists across the use of JRuby instances with versions of the hiera-eyaml gem older than 2.1.0, in SERVER-1154.\n\nIdeally, for best performance, you could use a {{max-requests-per-instance}} value of 0 (disabled) - also the default - minimizing the need to re-JIT Ruby code segments over time.  Have you tried running with that setting disabled and seen whether that has an effect on performance / rate of run-up to a memory out condition?\n\nFor the case where catalog compilation is slow with JIT compilation disabled, is this something which happens on every catalog compile or does that only happen after some number of catalog compilations have occurred - again maybe indicating the possibility of a memory leak if the slow performance is due to excessive Garbage Collection being performed as the process starts to run out of heap space?\n\nIs there any sort of a simplified reproducer that you could attach to this ticket which could allow us to help diagnose this further?\n\nI wonder if this ticket may be related to the compile times mentioned in SERVER-1736.  It may be better to look into the performance problems more generally and have a comment thread on just this ticket or the other one until we can figure out more specifically what is happening.  /CC [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7].", "created": "2017-03-15T14:31:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:991ae385-804f-446b-b406-589b9562159e] It's been a while since we heard anything from you on this - is there any further information you can provide, or have you been able to look into any of the suggestions Jeremy made?", "created": "2017-04-18T16:59:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:991ae385-804f-446b-b406-589b9562159e] We are going to close this ticket, you can reopen if you are still having an issue.", "created": "2017-04-25T16:42:00.000000"}], "components": ["DOCS"], "created": "2017-03-03T12:04:00.000000", "creator": "557058:991ae385-804f-446b-b406-589b9562159e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@121e98cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcbfr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4592303842_*|*_6_*:*_1_*:*_0"}], "description": "Can anyone provide some guidance around the settings for Code cache size?  We run into this issue every few days or so on a moderately busy puppet master:\n\n{code}\nJava HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled.\nJava HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize=\nCodeCache: size=2097152Kb used=2088471Kb max_used=2089485Kb free=8680Kb\n bounds [0x00007f0a9c000000, 0x00007f0b1c000000, 0x00007f0b1c000000]\n total_blobs=146735 nmethods=146066 adapters=570\n compilation: enabled\n{code}\n\nWe've already increased to the max amount of 2g.\n\nHere's our JVM args;\n\n{code}\nJAVA_ARGS=\"-Xms32g -Xmx32g -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=2g\n{code}\n\nAnd we still get this error and there's nothing to do besides restart the entire puppetserver process.\n\n{code}\n    max-active-instances: 15\n    max-requests-per-instance: 500\n    compile-mode: jit\n{code}\n\nWhen the compiler is disabled, we get compilation times like this:\n\n{code}\n2017-03-03 17:59:55,793 severity=INFO thread=qtp1270041535-5373 class=puppetserver message=\"Puppet Compiled catalog for blahblahblah in environment develop in 6272.99 seconds\"\n{code}\n\nAnyone run into this?\n\n\n", "environment": "Oracle JDK 1.8.0-112\nPuppet Server 2.7.2\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15987", "fixedVersions": [], "id": "15987", "issueType": "Improvement", "key": "SERVER-1740", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:991ae385-804f-446b-b406-589b9562159e", "resolution": "Incomplete", "resolutionDate": "2017-04-25T16:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Suggest guidance around ReservedCodeCacheSize", "timeSpent": "PT0S", "updated": "2017-04-25T16:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Can also disable diffie-hellman (ping [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7])....", "created": "2017-03-03T10:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] Per [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091]'s last comment, were there some specific changes that you wanted to have made to the [default cipher suite for Jetty|https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/1.7.0/src/puppetlabs/trapperkeeper/services/webserver/jetty9_config.clj#L67-L74] now that we'll be able to assume JDK 8 as a minimum?  If so, could you carve off a new ticket in this epic for that so we don't forget?  Thanks!", "created": "2017-03-27T10:41:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] is it safe to assume that all of the issues in this epic are targeted for completion as part of Puppet Server 5?", "created": "2017-03-28T10:43:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] yes. I'll be making some additional tickets this afternoon - a couple of them will be for updating PE things (orchestrator and console services) and will be targeted at PE Hoyt. I can put those in a separate epic though if you'd prefer that.", "created": "2017-03-28T10:53:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Thanks, [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091]. Yeah, I think it's better for PE-specific tickets to be in PE-specific epics (not in FOSS).", "created": "2017-03-28T11:15:00.000000"}], "components": [], "created": "2017-03-03T09:42:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37e2d305"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Drop Java 7"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyna13:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Deprecation"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server is now being built with JDK 8 and will, therefore, no longer run on a Java 7 runtime.  Puppet Server packages now depend upon openjdk-8-jre-headless exclusively, not openjdk-7-jre-headless or openjdk8-jre-headless.  The primary motivation for this change was to allow Puppet Server to update to later versions of its dependencies which are still being supported by their upstream maintainers.  In particular, this allows Puppet Server to use the latest Jetty series, 9.4.x, which is likewise built for use on Java 8.  See: SERVER-1741.\n\nBecause no Java 8 runtime packages exist in their respective OS repositories, Puppet Server packages are no longer being built for Debian 7 (Wheezy), Ubuntu 12.04 (Precise), or Ubuntu 14.04 (Trusty).\n\nJava 8 runtime packages do not exist in the standard repositories for Debian 8 (Jessie).  In order to install Puppet Server for Jessie, users would need to first configure the jessie-backports repository (see: https://backports.debian.org/Instructions/), which does have openjdk-8.  The following steps should install Puppet Server properly for Jessie:\n\n  echo \"deb http://ftp.debian.org/debian jessie-backports main\" > /etc/apt/sources.list.d\n  apt-get update\n  apt-get -t jessie-backports install \"openjdk-8-jdk-headless\"\n  apt-get install --force-yes  -y puppetserver\n\nUsers will need to be running SP1 or later in order to be able to install openjdk8 properly for SLES 12.\n"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2931085924_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_6581279323"}], "description": "This ticket covers whatever work will be needed to drop support in OSS Puppet Server 5 for running on JDK 7.\n\nAt a minimum, we'll configure Travis/Jenkins CI and ezbake builds to target JDK 8.  Opportunistically, we should also consider pulling in a trapperkeeper-webserver-jetty9 version which is built to include Jetty 9.4.x, work covered in TK-369.  Being able to use a non-EOLed version of Jetty is the primary short-term driver for targeting JDK 8 as the minimum supported version.\n\nWe'll likely need to do some adjustments to the exact OS distros that we'll be able to support with JDK 8 since some we currently package Puppet Server 2.x for -- including Precise, Trusty, and Wheezy -- do not have a JDK 8 package.  We should update the full list of distros here once we have agreement from RE and Product.\n\nThere's a closely related RE ticket for this, RE-8191.  Putting a ticket in the server project here so that we can tag a Server 5 fix version on it for visibility.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16508", "fixedVersions": ["SERVER 5.0.0"], "id": "16508", "issueType": "Epic", "key": "SERVER-1738", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-21T13:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Drop support for running on JDK 7", "timeSpent": "PT0S", "updated": "2017-06-29T09:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:991ae385-804f-446b-b406-589b9562159e", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "We've discussed how this could be implemented and it turns out that this isn't the most clean thing to build. In addition this feature probably wouldn't get widespread use", "created": "2017-03-08T14:17:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "[~accountid:557058:991ae385-804f-446b-b406-589b9562159e] it's been a few weeks since we've heard back on this (and SERVER-1740 which seems to be related). Is this an issue that still needs addressing?", "created": "2017-03-22T13:08:00.000000"}, {"author": "557058:991ae385-804f-446b-b406-589b9562159e", "body": "Yeah, we'd still like to look at performance issues.  We've found that changing our JAVA_ARGS and setting the max-requests-per-instance to 0 causes the memory leaks to stop:\n\narguments:\n{code}\nJAVA_ARGS=\"-server -Xms32g -Xmx32g -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=512m -XX:CodeCacheExpansionSize=1m -XX:+PrintCodeCacheOnCompilation -XX:+UseG1GC -XX:-UseBiasedLocking -XX:+PrintAdaptiveSizePolicy -XX:+PrintReferenceGC -XX:+PrintFlagsFinal -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -Xloggc:/var/log/puppetlabs/puppetserver/gc.log \"\n{code}\n\nin puppetserver.conf:\n{code}\n# (optional) maximum number of JRuby instances to allow\nmax-active-instances: 20\nmax-requests-per-instance: 0\n{code}\n\nWe found that any number above 0 for max-instances-per-requests causes the JVM to leak memory and eventually get into a perpetual GC state causing multiple hours for a catalog compilation.  The normal state from puppet 3 -> was 7 seconds to 35 seconds, but at least now it's stable.\n", "created": "2017-03-24T14:41:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:991ae385-804f-446b-b406-589b9562159e] By any chance are you using hiera-eyaml? Prior to version 2.1.0 hiera-eyaml had a pretty serious memory leak that would was worsened by max-requests-per-instance.\n\nAlso, what version of Puppet Server are you running?", "created": "2017-03-27T12:50:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Hey [~accountid:557058:991ae385-804f-446b-b406-589b9562159e],  we haven't heard anything from you in a while. Is there any further information you can provide us?", "created": "2017-04-18T16:54:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:991ae385-804f-446b-b406-589b9562159e] We are going to close this, you can reopen if you are still having an issue.", "created": "2017-04-25T16:43:00.000000"}], "components": [], "created": "2017-03-02T00:02:00.000000", "creator": "557058:991ae385-804f-446b-b406-589b9562159e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a4c58c9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzc9bb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_569737015_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_4152355477"}], "description": "It would be great if we could configure puppetserver to kill the catalog compilation process after a given amount of time and have an error returned to the client.\n\nCatalogs are taking anywhere between 15 seconds and 600(!) seconds to compile on puppetserver (which is a huge regression from 3.7).\n\nIt seems once puppetserver gets into this situation, it just needs to get restarted, which is unfortunate.  I would like to see puppet give up after a while, kill the compilation, and let another client have a chance.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16244", "fixedVersions": [], "id": "16244", "issueType": "New Feature", "key": "SERVER-1736", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:991ae385-804f-446b-b406-589b9562159e", "resolution": "Incomplete", "resolutionDate": "2017-04-25T16:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Max compilation time setting", "timeSpent": "PT0S", "updated": "2017-04-25T16:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "For this ticket I did two types of testing, perf testing with Gatling and memory testing using a curl script.\n\nFor the performance testing I set up Gatling jobs with http-client-metrics enabled and disabled and ran them on our perf hardware. The two jobs are described in this branch: https://github.com/rlinehan/gatling-puppet-load-test/tree/SERVER-1735-http-client-metrics\n\nThe job reports can be seen on http://puppetserver-perf-driver68-dev.delivery.puppetlabs.net:8080/job/http-client-metrics/. I did two runs through the whole suite, which contained 500, 1000, and 1250 agents. Overall, in each scenario the mean agent response time between the runs with metrics enabled and metrics disabled was within a standard deviation of each other. Thus, it seems that having the metrics enabled doesn't affect performance.\n\nIn addition, I did some memory testing by running a curl script after installing Puppet Server + PuppetDB on two separate vmpooler instances. One one I had http client metrics enabled, on the other metrics were disabled.\n\nOn each machine, I ran the following script, which curled the master's /puppet/v3/catalog endpoint with a different agent each time. After 500 agents it dumped the output of the status service to a json file. This was run 150 times, for a total of 75,000 catalog requests.\n\n{code}\n\nfor j in {1..150}\ndo\n  for i in {1..500}\n  do\n    z=$(($i*$j))\n    curl --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem \\\n      --cert /etc/puppetlabs/puppet/ssl/certs/`hostname -f`.pem \\\n      --key /etc/puppetlabs/puppet/ssl/private_keys/`hostname -f`.pem \\\n      https://`hostname -f`:8140/puppet/v3/catalog/agent$z?environment=production &>/dev/null\n  done\n  echo $j\n  curl -k -s https://localhost:8140/status/v1/services/status-service?level=debug | python -m json.tool >> output.json\ndone\n{code}\n\n(Note that for this to work you need to change the trapperkeeper auth.conf to make the {{/puppet/v3/catalog}} directive more permissive, e.g.\n\n{code}\n\n{\n            # Allow nodes to retrieve their own catalog\n            match-request: {\n                path: \"/puppet/v3/catalog\"\n                type: path\n                method: [get, post]\n            }\n            allow: \"*\"\n            sort-order: 500\n            name: \"puppetlabs catalog\"\n }\n{code} )\n\n\nEach catalog request in this script with a different agent generates 3 http-client metrics:  1) with-metric-id puppetdb.facts.find.<certname>, 2) with-url pdb/query/v4/nodes/<certname>/facts, 3) with-url-and-method pdb/query/v4/nodes/certname/facts.GET. (Note that were the catalog to compile, additional url metrics - e.g. sending the catalog to puppetdb - would be generated. However, in these requests the catalog did not actually compile.)\n\nIn an actual agent run, 9 http client metrics are generated per certname: 5 with-metric-id, 2 with-url, and 2 with-url-and-method\n\n[:classifier :nodes :<node name>] - POST /v1/classified/nodes/<certname>\n[:puppetdb :facts :find :<node name>] - GET /pdb/query/v4/nodes/<certname>/facts\n[:puppetdb :command :replace_catalog <certname>]\n[:puppetdb :command :replace_facts <certname>]\n[:puppetdb :command :store_report <certname>]\n\n(metric ids are in the vectors)\n\nSince each request in my simulation created 3 metrics, and I ran 75,000 requests, I was simulating differences in memory usage from http client metrics for 25,000 nodes.\n\nThe data I collected can be found in a Google Docs spreadsheet here: https://docs.google.com/spreadsheets/d/1Yun7uuxMRGUl0T19MrXHuXNNHzchWTM73BMu94KtgXU\n\nUltimately, this data shows a couple things: 1) there's about an increase of around 300-500 MB in heap memory used when http client metrics are enabled, 2) there's an increase in GC total time of about 22%, 3) GC CPU averaged over the second half of runs (averaging over the second half since there was a lot of variation in the first half) is 9% when http client metrics are enabled and 6% when disabled.\n\nInitially, I thought that since we don't have any real use for the with-url metrics in puppetserver (since we use the metric id metrics), perhaps it would make sense to add the ability to disable the automatic creation of those to the http client library. However, unfortunately that turned out to be slightly more difficult than I expected (still doable, but not the 2 hours I was hoping).\n\nFurthermore, eliminating those would eliminate 4 of the 9 http client metrics we currently create per-certname. Another option for reducing the number of metrics we create would be to not include the certname in any of the metric ids. Furthermore, in addition to these metrics we create quite a few other per-certname, or per-resource, per-puppetdb query metrics via the puppet profiler metrics. It might be best for us to do an audit of all of the profiler metrics we currently provide an whittle some of those out.", "created": "2017-05-24T18:38:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "I did some further memory testing and looked at the heap dumps with YourKit to see whether the additional memory used when http client metrics are turned on will ultimately get cleaned up when there's enough memory pressure - i.e. is it from strong references, weak references, etc.\n\nWith the same setup as above, I ran the following script:\n\n{code}\nfor j in {1..150}\ndo\n  for i in {1..500}\n  do\n    z=$(($i*$j))\n    curl --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem \\\n      --cert /etc/puppetlabs/puppet/ssl/certs/`hostname -f`.pem \\\n      --key /etc/puppetlabs/puppet/ssl/private_keys/`hostname -f`.pem \\\n      https://`hostname -f`:8140/puppet/v3/catalog/agent$z?environment=production &>/dev/null\n  done\n  echo $j\n  curl -k -s https://localhost:8140/status/v1/services/status-service?level=debug | python -m json.tool >> output.json\ndone\nrunuser -l puppet -c 'jmap -dump:live,format=b,file=/tmp/<name>.hprof <pid>'\n{code}\n\n(I needed to modify the puppet user to give it a login shell first).\n\nThe hprofs generated can be found [here|https://drive.google.com/open?id=0Bxg3lvuxaclYUXNpazZIMm9JQ2M], with {{enabled.hprof}} being when http client metrics were enabled.\n\nWith http client metrics enabled, 587 MB was used, with 496 MB (shallow size) / 584 MB (retained size) reachable via strong references.\n\nWith http client metrics disabled, 387 MB was used, with 293 MB (shallow size) / 383 MB (retained size) reachable via strong references.\n\nThis is unfortunately a pretty sizeable difference :(, and looking at the difference between the two, the additional objects present do seem to all come from metrics (rather than some fluke in the run).\n\nIn order to combat this additional memory usage and leave http client metrics enabled my default, I have filed 4 tickets. The first two should be handled for Puppet Server 5, the second two are later improvements:\n1. SERVER-1823: remove certnames from http client metric ids (will reduce number of metrics created per-certname by 50%)\n2. TK-442: bump dropwizard/metrics version (there's a memory leak in our version of metrics which we may be hitting)\n3. TK-443: add a setting to clj-http-client to turn off url metrics (to further reduce the number of metrics created per-certname)\n4. SERVER-1824: audit profiler metrics (because we create a *lot* by default and we may not have any use for many of them)\n", "created": "2017-06-01T12:57:00.000000"}], "components": [], "created": "2017-02-28T10:16:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@41ab7ff4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1739"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylzhj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_23986517_*|*_3_*:*_1_*:*_4394670411_*|*_10009_*:*_1_*:*_588038082_*|*_5_*:*_1_*:*_2416727795_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2951830301"}], "description": "Run a gatling A/B performance test to ensure that adding http client metrics hasn't dramatically affected performance.", "epicLinkSummary": "Http Client Metrics in Puppet Server", "estimate": "PT0S", "externalId": "15380", "fixedVersions": ["SERVER 5.0.0"], "id": "15380", "issueType": "Task", "key": "SERVER-1735", "labels": [], "originalEstimate": "PT0S", "parent": "17005", "parentSummary": "Http Client Metrics in Puppet Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Performance testing with http client metrics enabled", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:41:00.000000"}], "components": [], "created": "2017-02-24T14:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43310a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3852"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzc38f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_506635137_*|*_3_*:*_2_*:*_446870774_*|*_5_*:*_1_*:*_9148801943_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_602197106"}], "description": "For \"Puppet 5\", there are plans to switch from PSON to JSON as the default MIME type - in the {{Accept}} header sent to the master for requests and as the {{Content-Type}} for PUT/POST requests with bodies.  I'm not immediately aware of anything which will need to be changed to support this in Puppet Server but we should evaluate what impact this would have.  \n\n", "epicLinkSummary": "Switch from PSON to JSON as default serialization format", "estimate": "PT0S", "externalId": "16825", "fixedVersions": ["SERVER 5.0.0"], "id": "16825", "issueType": "Task", "key": "SERVER-1734", "labels": [], "originalEstimate": "PT0S", "parent": "29908", "parentSummary": "Switch from PSON to JSON as default serialization format", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-03-14T15:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate use of json content-type / accept header for various Puppet APIs", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Here's a simple script I wrote which does all of the updates from the description and then runs tests to ensure nothing bad happens after the changes have been made:\n\n{code:bash}\n#! /bin/bash\n\ngit checkout -b \"maint/master/SERVER-1733-update-to-i18n-0.7.1\"\n\nsed -i '' 's/clj-parent .*\"/clj-parent \"0.4.3\"/", "created": "2017-03-20T14:25:00.000000"}], "components": [], "created": "2017-02-24T14:12:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32d72099"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym83r:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_45925_*|*_3_*:*_2_*:*_237623386_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_1996629389"}], "description": "We need to update the SERVER and TK-related projects to the latest i18n release, 0.7.1.  \n\nThe latest i18n release has currently been added to clj-parent but no clj-parent release has been done with it yet.  We should do a clj-parent release with that if it hasn't been done by the time we pick up this ticket.\n\nManual instructions of what needs to be done to perform the update:\n\n# Update clj-parent and i18n plugin deps in project.clj file.\n# Run {{lein i18n init}} (this will update the .sh files)  \n# Run {{make update-pot}} after {{lein i18n init}} to change the name of the POT file, since {{make i18n}} no longer covers the POT file.\n# Verify addition to the project of project-name.pot\n# Delete locales/messages.pot and locales/messages.pot-e (if you have it).\n# Add/commit the new locales/<project-name>.pot, dev-resources/Makefile.i18n to the repo.\n# The new clj-i18n release requires a PO file to be checked in.  Since none of these projects has one yet, we can generate a placeholder Esperanto PO file for now by running {{make locales/eo.po}}.\n\nThe following repos will need to be updated:\n\n* OSS puppetserver\n* PE pe-puppet-server-extensions\n* clj-http-client\n* jruby-utils\n* jvm-ssl-utils\n* ring-middleware\n* trapperkeeper\n* tk-auth\n* tk-filesystem-watcher\n* tk-metrics\n* tk-scheduler\n* tk-status\n* tk-webserver-jetty9", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16824", "fixedVersions": [], "id": "16824", "issueType": "Task", "key": "SERVER-1733", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-03-22T11:50:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update SERVER and TK projects to i18n 0.7.1", "timeSpent": "PT0S", "updated": "2017-03-22T11:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I wonder if we should go a step further with this by enforcing that tk-auth is always used in Puppet Server 5.  We could just ignore the value of the {{use_legacy_auth_conf}} setting, logging a warning if it is still present in the configuration.  We already logged deprecation warnings when the setting was configured to use Ruby auth.conf under Puppet Server 2.x and we want people to move off of it as soon as possible.  Given that, forcing tk-auth to always be used for Puppet Server 5 would seem okay to me.  [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], what do you think?", "created": "2017-02-25T07:38:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "That sounds good to me [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]", "created": "2017-03-01T18:27:00.000000"}], "components": ["Puppet Server"], "created": "2017-02-24T09:19:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c180346"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzc2e7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Deprecation"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The default value that Puppet Server uses for the \"jruby-puppet.use-legacy-auth-conf\" setting, when not specified in the puppetserver.conf file, has changed from \"true\" to \"false\".  By default, the HOCON-based auth.conf file which uses trapperkeeper-authorization will now be used for evaluating security access to HTTP endpoints instead of the legacy Puppet auth.conf file."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_429599774_*|*_1_*:*_1_*:*_2184017570_*|*_10007_*:*_1_*:*_534432740_*|*_3_*:*_1_*:*_11634470_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_150575419"}], "description": "For Puppet 5/Server 5: set {{use_legacy_auth_conf}} to false by default (current default for OSS in Puppet 4/Server 2.x is true).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15379", "fixedVersions": ["SERVER 5.0.0"], "id": "15379", "issueType": "Task", "key": "SERVER-1732", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-04-03T17:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Set use_legacy_auth_conf to default to false", "timeSpent": "PT0S", "updated": "2017-06-08T18:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This sounds like a good idea, but without any community involvement it will not get prioritized. Closing until we get that signal.", "created": "2018-02-20T11:08:00.000000"}], "components": [], "created": "2017-02-22T17:56:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5203e360"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzc0nz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_143695_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_31338552550"}], "description": "In the jruby-utils library, used by Puppet Server, we turn off JRuby's ability to load jar files from within gems.  See [these lines|https://github.com/puppetlabs/jruby-utils/blob/0.7.0/src/clj/puppetlabs/services/jruby_pool_manager/jruby_core.clj#L109-L127] in the jruby-utils.  We do this in order to avoid potential conflicts with Puppet Server's own jar dependencies - e.g., so that the versions of bouncycastle and snakeyaml which are bundled with the Puppet Server uberjar are used and not (most likely by accident) different versions of those which may be present in a custom gem loaded on the server.  A side effect of this change, though, is that even jar files loaded in gems which would not conflict with the ones bundled in Puppet Server would not be loadable.  To support this use case, I think it might be good to allow for the \"JAR_(NO_)REQUIRE\" disable behavior to be overridden via an optional setting in Puppet Server configuration.  I still think the default behavior for Puppet Server should be to disable jar loading - to protect against jar collisions as we have been doing to date.  With an optional, user-configurable setting - heavily caveated in documentation - users that have a specific need to load gems which have jars in them could be supported.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15378", "fixedVersions": [], "id": "15378", "issueType": "Improvement", "key": "SERVER-1731", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-20T11:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide option for loading gems which bundle jars", "timeSpent": "PT0S", "updated": "2018-02-20T11:08:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a25808ca-0471-45f1-8654-b257f9b5d756], from reading the link you provided, it sounds like the issue that you encountered may be fixed in {{jruby-openssl}} 0.9.18 and later.  Is that correct?  Per a currently open ticket, SERVER-1661, we are intending to upgrade to JRuby 1.7.27, which we believe will include {{jruby-openssl}} version 0.9.19, as soon as the JRuby community releases it.\n\nPer your broader comments about Puppet Server's integration with JRuby OpenSSL, it is true that we intentionally had tried to avoid its use during the early days of Puppet Server development because of various issues we had encountered at the time. At the same time, we had a burgeoning Clojure/Java stack which had needs for various SSL functionality - where used in http client requests and certificate handling, for example.  We consolidated on that functionality in Clojure/Java but I wouldn't say we have done anything since try to preclude the use of JRuby::OpenSSL for extension purposes, as you mentioned.  We'd definitely like to stay current with JRuby::OpenSSL via the JRuby ecosystem, though, going forward.  Hope we'll be able to move forward with JRuby 1.7.27 soon.", "created": "2017-02-10T12:31:00.000000"}, {"author": "557058:4a153bcd-f20d-4f39-8f04-cd80be2dcea3", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Thanks for the quick response. I apologize if I was a bit terse in my ticket description, but I had opened it after struggling for quite a while trying to work around this and, thus, perhaps a bit grumpy.\n\nIt would be great if you were to allow end users to upgrade these packages out of band, even at our own risk.\n\nCurrently, there is no reasonable approach for a user to take in order to override this package, or, any other package that requires replacing Jars on the classpath. It's actually incredible, the lengths you guys have gone to make sure of this fact! Though, I don't believe that was really the goal, just an unfortunate side effect of solving other issues.\n\nSo, as a user, if I want to upgrade `jruby-openssl` without having to maintain my own built-from-source Puppet Server package, do you know what it takes?\n\nThe first thing we tried was installing the newer version via `puppetserver gem install jruby-openssl -v 0.9.18`, which actually works great. Until, of course, you try to `require openssl` anywhere in jruby code. In which case, it explodes because it can't find a Bouncy Castle class that it requires. Which is weird considering it:\n\na) Relies on the same version of Bouncy Castle as Puppet's SSL util repo, which I assume should be included\nb) Actually comes packaged with the required jars in the gem itself!\n\nAfter a long while debugging (I'm neither a ruby nor a clojure expert), it turns out that while you guys rely on the same version of Bouncy Castle, you only include the `bcpkix` jar while `jruby-openssl` requires the latest version of the `bcprov` jar, as well. \n\nWorse, in an effort to ensure that the built-in Bouncy Castle of JRuby isn't loaded in favor of the the one you guys require in your SSL Utils package, every possible executable is locked down with `LOAD_JARS=false` (I forget the exact name of the env param) which means `jar-dependencies` internal `Jars.require` property is set to `false`, making `require_jar` a complete, nil-returning, no-op! This is, of course, why the `jruby-openssl` gem we installed wasn't able to load its jar dependencies. In fact, in the current Puppet Server version, *nothing* can load Jars into the classpath from JRuby code under without changing that setting back, which means you're out of luck if you need any jruby gem that comes packaged with Jars.\n\nWell, once we figured ths out, we, of course, tried to just flip that property back to `true` and manually include the Jar in our user land code before we required `openssl`. But, because `puppet/util` monkey patches `openssl` and, thus, requires it long before any of our user code runs, Puppet Server simply exploded before it even had a chance to think about our code!\n\nOur solution? We decided a small patch to the jruby-openssl gem to flip that switch was easier to maintain than our own fork of Puppet and less annoying than patching every individual shell launcher script created by Puppet Server's package. We hate it, but it gets is moving.\n\nSo, the point of this long windedness? It has been a very frustrating experience to move to JRuby for us thus far, but that frustration has been compounded exponentially by how difficult it has proven to tweak things at runtime currently with Puppet Server.\n\nI'm very happy that you guys are looking ahead at JRuby 1.7.27 and are looking to stay current with OpenSSL, since that directly affects us, but please consider ways in which you might give users back some runtime freedom, at our own peril (some of us are devs, after all :) ), without us resorting to maintaining our own forks.\n\n(I know this got away from the original topic of this issue, but I appreciate your time and hope it illuminates end-user frustrations you guys may not have considered!)", "created": "2017-02-11T13:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4a153bcd-f20d-4f39-8f04-cd80be2dcea3] Thanks for the great writeup on all of the issues that you have run into.  Sorry to hear that the upgrade to Puppet Server has been so painful.  We'd definitely like to work on making this better.\n\n{quote}So, as a user, if I want to upgrade `jruby-openssl` without having to maintain my own built-from-source Puppet Server package, do you know what it takes?\nThe first thing we tried was installing the newer version via `puppetserver gem install jruby-openssl -v 0.9.18`, which actually works great. Until, of course, you try to `require openssl` anywhere in jruby code. In which case, it explodes because it can't find a Bouncy Castle class that it requires. Which is weird considering it:\na) Relies on the same version of Bouncy Castle as Puppet's SSL util repo, which I assume should be included{quote}\n\nThe latest released version of Puppet Server, 2.7.2, is using an older version of BouncyCastle, 1.50, than is bundled in jruby-openssl 0.9.18, 1.55.  Note that all of the versions of packages which are built into the puppetserver jar can be seen in the {{/opt/puppetlabs/server/apps/puppetserver/ezbake.manifest}} file, which for the 2.7.2 release has:\n\n{noformat}\n   [puppetlabs/ssl-utils \"0.8.2\"]\n      [org.bouncycastle/bcpkix-jdk15on \"1.50\"]\n         [org.bouncycastle/bcprov-jdk15on \"1.50\"]\n{noformat}\n\nStarting with the \"puppetlabs/ssl-utils\" 0.8.3 release, we've upgraded the bouncycastle dependencies from 1.50 to 1.55.  We did that specifically so that we could align the bouncycastle dependencies in our JVM libraries with what we hope to see with the latest jruby-openssl version in the next JRuby 1.7 release.  If you'd be interested in using those, we do have \"nightly\" versions of Puppet Server, https://nightlies.puppetlabs.com/puppetserver/, which are embedding the bouncycastle 1.55 dependencies.\n\n---\n\nI'm not sure what specific problems you may run into with this approach, but it may be possible for you to do a gem install of jruby-openssl 0.9.18 like you tried and also upgrade the bouncycastle jar dependencies to 1.55 in order to resolve the missing class problem that you had encountered.\n\nLocally, I was able to get Puppet Server 2.7.2 running without it exploding on a {{require openssl}} call by installing the jruby-openssl 0.9.18 gem as you did and modifying the classpath used when puppetserver is started to include the new bouncycastle jars.  Specifically, I modified the \"-cp\" option around line 52 in {{/opt/puppetlabs/server/apps/puppetserver/cli/apps/start}} with this:\n\n{noformat}\n-cp /opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/jruby-openssl-0.9.18-java/lib/org/bouncycastle/bcprov-jdk15on/1.55/bcprov-jdk15on-1.55.jar:/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/jruby-openssl-0.9.18-java/lib/org/bouncycastle/bcpkix-jdk15on/1.55/bcpkix-jdk15on-1.55.jar:${INSTALL_DIR}/puppet-server-release.jar\n{noformat}\n\nHaving to modify one of the package-provided scripts in order to augment the classpath is obviously not ideal.  We have a separate ticket open, SERVER-249, for which we intend to allow that to be done in a better way.\n\nThe idea of having different versions of bouncycastle jars be loadable from different locations in the classpath makes me a bit nervous - with the prospect of mismatched content from the each of the two potentially being loaded together.  But it may prove to be a sufficient workaround before Puppet Server can be upgraded to a newer JRuby version.\n\n{quote}After a long while debugging (I'm neither a ruby nor a clojure expert), it turns out that while you guys rely on the same version of Bouncy Castle, you only include the `bcpkix` jar while `jruby-openssl` requires the latest version of the `bcprov` jar, as well.{quote}\n\nIt is true that we only specify a leiningen-level dependency on \\[org.bouncycastle/bcpkix-jdk15on\\], but that should transitively be pulling in \\[org.bouncycastle/bcprov-jdk15on \"1.50\"\\] per the [pom file|http://repo1.maven.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.50/bcpkix-jdk15on-1.50.pom].  The same should be true for the 1.55 version as well.\n\n{quote}Worse, in an effort to ensure that the built-in Bouncy Castle of JRuby isn't loaded in favor of the the one you guys require in your SSL Utils package, every possible executable is locked down with `LOAD_JARS=false` ... In fact, in the current Puppet Server version, nothing can load Jars into the classpath from JRuby code under without changing that setting back, which means you're out of luck if you need any jruby gem that comes packaged with Jars.{quote}\n\nI think you're right that it may be too heavy-handed to disable the {{JARS_REQUIRE}} check with no way for an end-user to override it.  As you noted, we did that specifically to enforce that our preferred versions of the BC dependencies are what Puppet Server uses, as opposed to the ones provided by JRuby.  At the time we first did that, JRuby was bundling an older version of the BC dependencies than we needed for our Clojure/Java utils in Puppet Server, where the JRuby-provided version had specific API incompatibilities with the newer versions.   While that's no longer the case with the latest versions of BC in JRuby and our Clojure/Java utils, it is possible that we may end up in that quandary again in the future.  Because of that, I'm leery of just unwinding the work to disable the {{JARS_REQUIRE}} functionality by default.  I'm open to the idea of making this a user-configurable setting in Puppet Server configuration, though - allowing power-users like yourself the ability to disable that check but, as a result, potentially needing to resolve any issues that may result from JRuby gems having jars be loaded whose contents conflict with the dependencies of other Clojure/Java code in Puppet Server.  Do you think this would be a reasonable approach?", "created": "2017-02-17T14:54:00.000000"}, {"author": "557058:4a153bcd-f20d-4f39-8f04-cd80be2dcea3", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] \n\n{quote}The latest released version of Puppet Server, 2.7.2, is using an older version of BouncyCastle, 1.50, than is bundled in jruby-openssl 0.9.18, 1.55. {quote}\n\nAh, sorry, I left out that I was working from Puppet Server source. I'm not sure if I was an unreleased tag or master, but the version specified was 1.55 so far as I could tell. Good to know about the ezbake config! I believe I was looking at the project.clj file.\n\n{quote}Having to modify one of the package-provided scripts in order to augment the classpath is obviously not ideal. We have a separate ticket open, SERVER-249, for which we intend to allow that to be done in a better way.{quote}\n\nI think being able to modify classpath easily would be incredibly useful.\n\n{quote}It is true that we only specify a leiningen-level dependency on [org.bouncycastle/bcpkix-jdk15on], but that should transitively be pulling in [org.bouncycastle/bcprov-jdk15on \"1.50\"] per the pom file. The same should be true for the 1.55 version as well.{quote}\n\nSo far as I could tell this wasn't the case, but it could be a misunderstanding on my part with Clojure's handling of the classpath via Lein. I was running from source using the Lein repl at the time.\n\n{quote}Do you think this would be a reasonable approach?{quote}\n\nI agree that rolling back those changes would just put you guys in the same situation again, most likely. For the standard user, I absolutely understand the desire to make sure everything loaded is as expected without surprises. For those who are willing to (or required to, depending on their situation) take on the risks of using untested versions of various JARs at runtime, I think it'd be extremely helpful to provide a simple way for us to do so. Some way of overriding this flag's behavior along with some way of easily overriding the classpath would seem to strike a great balance between keeping the standard distro \"safe\" while allowing for case-by-case adaptability when necessary.\n\nOnce again, I really appreciate your taking the time to read and understand our use case!\n", "created": "2017-02-17T15:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}It is true that we only specify a leiningen-level dependency on \\[org.bouncycastle/bcpkix-jdk15on\\], but that should transitively be pulling in \\[org.bouncycastle/bcprov-jdk15on \"1.50\"\\] per the pom file. The same should be true for the 1.55 version as well. ...\nSo far as I could tell this wasn't the case, but it could be a misunderstanding on my part with Clojure's handling of the classpath via Lein. I was running from source using the Lein repl at the time.{quote}\n\nIt seemed to work ok running from source for me from the current [HEAD|https://github.com/puppetlabs/puppetserver/tree/78dd43a4623491e4bbe0575100a66db499afa642] of the puppetserver master branch as well.  I just ran the following quick commands to see that a {{require openssl}} was working okay with the new gem being loaded:\n\n{noformat}\n\u203a lein gem install jruby-openssl -v 0.9.18\nJava HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m", "created": "2017-02-17T16:43:00.000000"}, {"author": "557058:4a153bcd-f20d-4f39-8f04-cd80be2dcea3", "body": "I just went back to take a look at what I had running. It turns out I had the 2.7.2 tag checked out (sha: 934ab0). I now see that you are correct in that 2.7.2 pulls in version 1.50 of Bouncy Castle - I had previously followed the dependency chain manually and, apparently, was looking at jvm-ssl-utils master instead of 0.8.2, which is what gets pulled into 2.7.2 via clj-parent 0.1.7. By looking at jvm-ssl-utils master, I erroneously concluded we were using Bouncy Castle 1.55.\n\nIt also appears that I incorrectly assumed that the error I was seeing was due to a missing bcprov-jdk15on jar, a conclusion I reached when I manually added the 1.55 version of that jar things stopped blowing up. It's clear to me now that it wasn't that the jar was missing, it was just the wrong version: 1.50 vs 1.55.\n\nUsing HEAD of master, things are as you describe. Master's dependency chain pulls in 1.55 of Bouncy Castle, both jars are on the class path, and even though jrubyp-openssl can't install its own jars, it works nonetheless because they just happen to be available already.\n\nThat is good news for my particular use case, as it means as soon as there's a new release with this version of Bouncy Castle I can roll back my hack, or I can use a nightly in the meantime as you had suggested prior. That's very helpful.\n\nYou've been a great help!\n\nAre you planning to create a ticket for tracking the feature for overriding the JARS_REQUIRE flag as a configuration / runtime option? I'd like to track that ticket if so.\n\n\n\n", "created": "2017-02-17T20:06:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4a153bcd-f20d-4f39-8f04-cd80be2dcea3] I filed SERVER-1731 to track the separate capability for turning off the JARS_REQUIRE override.  With SERVER-1731 and SERVER-249 in the system, do you see a need to keep this ticket open?  Thanks again for all of the great feedback.", "created": "2017-02-22T17:58:00.000000"}, {"author": "557058:4a153bcd-f20d-4f39-8f04-cd80be2dcea3", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I think this ticket can be closed in favor of the others which are more actionable, as my concerns have been addressed. Thanks!", "created": "2017-02-24T01:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:557058:4a153bcd-f20d-4f39-8f04-cd80be2dcea3].  Closing this out...", "created": "2017-02-25T08:33:00.000000"}], "components": ["Puppet Server"], "created": "2017-02-10T10:56:00.000000", "creator": "557058:4a153bcd-f20d-4f39-8f04-cd80be2dcea3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3657efc7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbv1j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1287416012_*|*_6_*:*_1_*:*_0"}], "description": "As noted in several tickets, Puppet code has been refactored to avoid calls to JRuby's OpenSSL library when code is running in Puppet Server contex. This is due to several bugs associated with this implementation. Example of one of these tickets: https://puppet.atlassian.net/browse/PUP-3676\n\nUnfortunately, there are valid use cases for user code to need to access this functionality. In our case, we have a custom Puppet function which generates certificates as part of an automated SSL provisioning process. This code has run fine for us in Puppet 3, but as we are just now getting the chance to upgrade to Puppet 4, we need to figure out how to make this code work when running under Puppet Server.\n\nThe bug we ran into was with Subject Alt-Name, referenced here: https://github.com/jruby/jruby-openssl/issues/102\n\nFor us, having Puppet Server use this version of JRuby OpenSSL would solve our issue. But, the bigger issue is that the Puppet dev team seems to have decided that JRuby's OpenSSL is simply tainted and should be avoided all-together, so no attempts are made to improve it nor are any suitable alternatives provided when running under Puppet Server. This leaves users like us in a really bad place. Puppet Server forces JRuby on us and give us seemingly no recourse for patching this behavior.\n\nMoving to JRuby makes sense for Puppet Server, but you guys can't just pretend such a core JRuby lib doesn't exist, imho.\n\nThere needs to be a way for users like us to work around this easily.\n\nOr, if there is already such an option, it should be documented specifically due to the nature of this particular lib and the way Puppet has chosen to handle it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16823", "fixedVersions": [], "id": "16823", "issueType": "Bug", "key": "SERVER-1728", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4a153bcd-f20d-4f39-8f04-cd80be2dcea3", "resolution": "Duplicate", "resolutionDate": "2017-02-25T08:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "All-together avoiding OpenSSL:X509 is not an acceptable solution in user-space as user code may need to use this library", "timeSpent": "PT0S", "updated": "2017-02-25T08:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:557058:f1da38bd-da30-46b9-888b-e55c1deca0d3], for the ticket.  I'm guessing that you may have found that setting by navigating through the \"Configuring the Webserver Service\" link on the https://docs.puppet.com/puppetserver/latest/config_file_webserver.html page to the [Jetty webserver config page|https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/master/doc/jetty-config.md#ssl-protocols].  It may be better to make this documentation more visible to future users somehow, /CC [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e].  However, where the use of SSLv3 is not recommended at this point and where Puppet 3.x series has now reached its support end-of-life date per the last version of Puppet Enterprise which used it, 3.8, recently moving to [end-of-life status|https://puppet.com/misc/puppet-enterprise-lifecycle] as well, I'm not sure that we want to add anything explicit to the documentation about enabling SSLv3 for Puppet 3.x series support at this point.  /CC [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] for your thoughts on that.", "created": "2017-02-09T09:40:00.000000"}, {"author": "557058:f1da38bd-da30-46b9-888b-e55c1deca0d3", "body": "Correct, I found the necessary knob there. I'm not actually sure why it uses (only) SSLv3, since OpenSSL on SLES11SP4 is perfectly capable of at least TLSv1. Unfortunately there is no official repo with Agents for SLES. This could be an issue with this specific 3rd party repo.", "created": "2017-02-09T09:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I had thought we had done work a while back in the agent-side code to disable the use of SSLv3.  [~accountid:557058:f1da38bd-da30-46b9-888b-e55c1deca0d3], do you know if this issue exists with the latest supported Puppet agent version, [1.9.0|https://docs.puppet.com/puppet/4.9/release_notes_agent.html#puppet-agent-190], on SLES11SP4?  If it does, this definitely seems like an issue we should pursue a fix for.  /CC [~accountid:63d40628f6e1b543161789a7].  [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], we do still provide SLES 11 packages for the latest Puppet Agent, right?", "created": "2017-02-09T10:09:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:f1da38bd-da30-46b9-888b-e55c1deca0d3] I'm not sure how much this helps, but we do have sles (11 and 12) packages for puppet agent 1.6.0 and onward in our public yum repo. This corresponds to Puppet 4.6.0 and later. They can be found here: http://yum.puppetlabs.com/sles/11/PC1/x86_64/ and there is a release package to add the repo to zypper here: http://yum.puppetlabs.com/puppetlabs-release-pc1-sles-11.noarch.rpm", "created": "2017-02-09T10:32:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "We removed SSLv3 support in PUP-3467 (in both webrick and agent-side) first released in puppet 3.7.2 (prior to AIO packages).", "created": "2017-02-09T11:03:00.000000"}, {"author": "557058:f1da38bd-da30-46b9-888b-e55c1deca0d3", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] Thanks, I had not found this (probably because I was looking at the Puppet Server page (which only mentions Redhat), not in the Agent documentation).\n\nPuppet 3.8.2 from the third-party repo still tries to use SSLv3 ([~accountid:63d40628f6e1b543161789a7]).\n\n{code}\npac3:~ # puppet agent --test\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A\n{code}\n\nbut using Puppet Agent 1.9.0 from your repo works, so I'll go with this [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]", "created": "2017-02-10T02:18:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:f1da38bd-da30-46b9-888b-e55c1deca0d3], it sounds like you were able to get the newer Puppet agent to work with TLS without having to downgrade Puppet Server's supported protocols.  Given that, I'm going to close out this issue.  Thanks!", "created": "2017-02-22T18:01:00.000000"}], "components": [], "created": "2017-02-09T08:36:00.000000", "creator": "557058:f1da38bd-da30-46b9-888b-e55c1deca0d3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e1cc143"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbudb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1157116970_*|*_6_*:*_1_*:*_0"}], "description": "Due to even recent Puppet Agent versions (3.8.2) still using SSLv3 on SLES11 SP4 I had to reenable SSLv3 on my newly migrated Puppetserver installation (Puppetserver 2.7.2 on Debian Jessie).\n\nThe steps descripted in https://docs.puppet.com/puppetserver/latest/configuration.html are not sufficient, I also had to add\n\n{code}\nssl-protocols: \"SSLv3, TLSv1, TLSv1.1, TLSv1.2\"\n{code}\n\nto /etc/puppetlabs/puppetserver/conf.d/webserver.conf", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17423", "fixedVersions": [], "id": "17423", "issueType": "Bug", "key": "SERVER-1725", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f1da38bd-da30-46b9-888b-e55c1deca0d3", "resolution": "Cannot Reproduce", "resolutionDate": "2017-02-22T18:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Documentation update for SSLv3 connections", "timeSpent": "PT0S", "updated": "2017-02-22T18:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] how is work on this progressing?", "created": "2017-06-15T07:50:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "I'm working on metrics, performance, and scaling docs together in SERVER-1771 with predocs from Ruth arriving on Friday, which got jumped in my work queue by a docs team demo request and a laptop issue but were in progress again as of yesterday afternoon.\n\n[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] provided predocs about 45 minutes ago in SERVER-1829 for the Jolokia endpoints and I'm editing those right now.", "created": "2017-06-20T14:05:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "PR filed.", "created": "2017-06-21T17:54:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Closing as fixed since the PR has been reviewed and merged.", "created": "2017-06-22T17:47:00.000000"}], "components": ["DOCS"], "created": "2017-02-01T16:49:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9c55013"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzep67:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1016479045_*|*_3_*:*_1_*:*_8386772165_*|*_10009_*:*_1_*:*_87943488_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2691104164"}], "description": "For the epic SERVER-1259, we'll want to move (or copy?) the docs we have on metrics for puppet server from PE to open source.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "15985", "fixedVersions": ["SERVER 5.0.0"], "id": "15985", "issueType": "Task", "key": "SERVER-1830", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-22T17:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pull pe-puppetserver metrics docs to open source", "timeSpent": "PT0S", "updated": "2017-06-22T17:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [113f4a2|https://github.com/puppetlabs/puppetserver/commit/113f4a27e115936f85f64ae0424080aa6d73a1e6].  Tests still passing so marking resolved.", "created": "2017-03-17T10:09:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:43:00.000000"}], "components": ["Puppet Server"], "created": "2017-02-01T16:37:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@461686b2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzc38n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Gives puppetserver support for graphite exporting and metric filtering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4830002_*|*_10007_*:*_1_*:*_150632919_*|*_3_*:*_1_*:*_425204977_*|*_5_*:*_1_*:*_8910585350_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_3194033260"}], "description": "Add a call to {{initialize-registry-settings}} (from the tk-metrics service) to the master service. This should provide values to {{default-metrics-allowed}} to allow through all the metrics we want.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "15377", "fixedVersions": ["SERVER 5.0.0"], "id": "15377", "issueType": "Task", "key": "SERVER-1721", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add initialize-registry-settings to master-service", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62438a418678e9007059bcca", "body": "Also: we restarted the Puppet CA Server after applying the OpenJDK package updates. So this brokenness isn't a result of the OpenJDK package changing from underneath a running instance of the Puppet CA Server.", "created": "2017-02-01T10:18:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:62438a418678e9007059bcca] Thanks for the report. I'll be investigating this today.", "created": "2017-02-01T10:23:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "No problem, [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e]. If it's helpful, here's a quick link to Red Hat's errata for the 1.8.0_121 update:\n\nhttps://rhn.redhat.com/errata/RHSA-2017-0180.html\n\nThere's no mention of any changes to class bundling (the NoClassDefFoundError warning for sun.security.ssl.SupportedEllipticCurvesExtension would seem to imply that class is no longer present), but a fair number of the bugs addressed relate to SSL/TLS.", "created": "2017-02-01T10:42:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:62438a418678e9007059bcca]I haven't been able to reproduce this yet.\n\nSo here are a few followup questions that may help me to reproduce it and narrow it down:\n\n- Was your CA cert generated by puppet server, or was it generated by some other means?\n- Have you customized the cipher-suites for puppetserver's webserver at all? (this would appear in /etc/puppetlabs/puppetserver/conf.d/webserver.conf)\n- What version of puppet-agent is connecting to the server and do they all generate the same error?", "created": "2017-02-01T10:51:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "In order:\n\n# I _think_ we originally let the CA server auto-generate its CA cert, but I can't assert that with authority, as that was almost 18 months ago.\n# We have not customized the cipher-suites in any way.\n# We're using a mix of puppet 4.8.1 and 4.8.2.", "created": "2017-02-01T11:18:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "After I downgraded the Java RPMs back to 111, and then re-upgraded to 121, now I can no longer reproduce the problem.\n\nRed Hat's OpenJDK RPMs have fairly complicated scriptlets that fire on upgrades. My guess is that those scriptlets did the wrong thing for the 111 to 121 upgrade, and produced a 121 install that was subtly broken. I'd further guess that downgrading back to 111 and re-upgrading to 121 probably managed to overcome whatever issue the first upgrade attempt got wrong.\n\n(Unfortunately, if this is indeed a Red Hat OpenJDK packaging bug, reproducing it might require a specific series of package updates performed in a specific order, which will be exceedingly challenging to reproduce.)\n\nSo, at least for now, I apologize for the fire drill, and feel free to close this ticket\u2014if Red Hat attempts to point the blame at Puppet, I can reopen it.", "created": "2017-02-01T11:39:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "I tweaked the title to hopefully make it easier for any future RHEL people to find this bug report if they encounter the same problem.", "created": "2017-02-01T11:42:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Thanks for digging into it further [~accountid:62438a418678e9007059bcca]. I'll close it out for now.", "created": "2017-02-01T11:50:00.000000"}, {"author": "557058:50c090cf-cef8-462c-8d1e-3bbb82602402", "body": "I am also getting this same error, also on RedHat (7.3). OpenJDK was updated to java-1.8.0-openjdk-headless.x86_64 on 1/23 and the Puppet server was working yesterday. Not sure why it stopped working today, not sure if it was restarted or not. \n\nFrom java 111 to 121 they appear to have added a few things to the disabled protocols list:\n111- jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768\n121 - jdk.tls.disabledAlgorithms=SSLv3, DH keySize < 768, EC, ECDHE, ECDH\n\nI get the following exception above the one posted above (see caused by):\n\n{code}\n2017-02-03 12:00:36,327 WARN  [qtp301185845-62] [o.e.j.u.t.QueuedThreadPool]\njava.lang.ExceptionInInitializerError: null\n        at sun.security.ssl.HelloExtensions.<init>(HelloExtensions.java:82)\n        at sun.security.ssl.HandshakeMessage$ClientHello.<init>(HandshakeMessage.java:245)\n        at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:220)\n        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026)\n        at sun.security.ssl.Handshaker$1.run(Handshaker.java:966)\n        at sun.security.ssl.Handshaker$1.run(Handshaker.java:963)\n        at java.security.AccessController.doPrivileged(Native Method)\n        at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1416)\n        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:612)\n        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:239)\n        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)\n        at java.lang.Thread.run(Thread.java:745)\nCaused by: java.lang.IllegalArgumentException: System property jdk.tls.namedGroups(null) contains no supported elliptic curves\n        at sun.security.ssl.SupportedEllipticCurvesExtension.<clinit>(SupportedEllipticCurvesExtension.java:154)\n        ... 14 common frames omitted\n{code}\n\nSo far I have tried reinstalling 121 but that hasn't fixed it. I will try downgrading to 111. ", "created": "2017-02-03T11:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Looks like an OpenJDK bug with a very similar exception in it was opened just 2 days ago: https://bugs.openjdk.java.net/browse/JDK-8173783.  It was reported against Java 6 but I wonder if the same error affects the latest Java 8 as well.  For those seeing this error, it would be interesting if the error were reproducible with the simple standalone Java source example on the OpenJDK ticket.", "created": "2017-02-03T11:08:00.000000"}, {"author": "557058:50c090cf-cef8-462c-8d1e-3bbb82602402", "body": "I just tried the sample code and got the attached output, you can see error on the EchoServer side is same. I removed a couple organization specific trusted certs from the output.\n\n{noformat}\n\n[root@puppet ~]# java -Djavax.net.debug=ssl EchoServer\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_NULL_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_NULL_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_RC4_128_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_NULL_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_anon_WITH_NULL_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_anon_WITH_RC4_128_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_anon_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_anon_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_RC4_128_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_NULL_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_RC4_128_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_RC4_128_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\nIgnoring unavailable cipher suite: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\nIgnoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\ntrustStore is: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64/jre/lib/security/cacerts\ntrustStore type is : jks\ntrustStore provider is :\ninit truststore\nadding as trusted cert:\n  Subject: CN=Hongkong Post Root CA 1, O=Hongkong Post, C=HK\n  Issuer:  CN=Hongkong Post Root CA 1, O=Hongkong Post, C=HK\n  Algorithm: RSA", "created": "2017-02-03T11:19:00.000000"}, {"author": "557058:50c090cf-cef8-462c-8d1e-3bbb82602402", "body": "I downgraded Java to 111 and the puppetserver is working again. I am not going to re-upgrade to 121 to see if that works because I suspect it might stop working at some point (since I was working with 121 for a week or so). \n\nFor those who have never had to downgrade anything before:\n{code}\nyum downgrade java-1.8.0-openjdk java-1.8.0-openjdk-headless\n{code}\n\n(I said earlier I was running RedHat but this particular server is CentOS, not that it matters). ", "created": "2017-02-03T12:04:00.000000"}, {"author": "557058:50c090cf-cef8-462c-8d1e-3bbb82602402", "body": "Here is the release notes issue for the change that is probably causing this problem, although I think I tried changing the disabled algorithms list back to what it was in 111 and that didn't fix the problem. \n\nhttps://bugs.openjdk.java.net/browse/JDK-8148912\n\n\n\n", "created": "2017-02-03T12:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The OpenJDK bug linked earlier, https://bugs.openjdk.java.net/browse/JDK-8173783, has had JDK versions 7u131 and 8u121 added to it.", "created": "2017-02-06T13:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For those following this ticket, it appears that a fix for the OpenJDK bug is forthcoming in 7u161 and 8u152.  Would be good for others to verify this fix when those are available for testing.", "created": "2017-02-25T08:42:00.000000"}, {"author": "623a4b377910a200718ac3ad", "body": "For what it's worth, this OpenJDK bug also affected our RHEL5 puppetserver-1.1.1-1.el5 instance.\n\nRolling the java-1.7.0-openjdk RPM from release 131 back to 121 seemed to correct the issue.\n", "created": "2017-02-28T09:48:00.000000"}, {"author": "623c1745d32a94006a649c0c", "body": "As an input, I'm seeing this issue with Puppet {{2.7.2-1puppetlabs1}} on Ubuntu 14.04.05 with {{openjdk-7-jre}} {{7u131-2.6.9-0ubuntu0.14.04.1}}.\n\nThis is the only version available in the Ubuntu Trusty repos, breaking the default {{puppetserver}} install on that platform.", "created": "2017-05-16T08:45:00.000000"}, {"author": "557058:f14d25de-f54e-4c5d-8d70-e90e711c4569", "body": "Same issue here, I downgraded to {{openjdk-7-jre-headless=7u51-2.4.6-1ubuntu4}} for testing from archive.ubuntu.com (not recommended for live enviroment!) to verify the cause to be openjdk.\n\n-Another try: I installed puppet-agent 1.10.1-1trusty and it seemed to work.-", "created": "2017-05-16T09:35:00.000000"}, {"author": "557058:a4354ee3-832e-44ba-9a3a-efca62a3ab79", "body": "I am also seeing this on Puppet 2.7.2-1puppetlabs1 on Ubuntu 14.04 with openjdk-7-jre-headless 7u131-2.6.9-0ubuntu0.14.04.1", "created": "2017-05-16T21:18:00.000000"}, {"author": "557058:f14d25de-f54e-4c5d-8d70-e90e711c4569", "body": "[~accountid:557058:a4354ee3-832e-44ba-9a3a-efca62a3ab79] [~accountid:623c1745d32a94006a649c0c]\nIssue has been filed at launchpad:\nhttps://bugs.launchpad.net/ubuntu/+source/openjdk-7/+bug/1691126", "created": "2017-05-17T01:39:00.000000"}, {"author": "557058:a4354ee3-832e-44ba-9a3a-efca62a3ab79", "body": "Updated package (pushed to normal update channels today) from Ubuntu fixes this.", "created": "2017-05-19T02:00:00.000000"}, {"author": "557058:1b6a0394-68a9-4406-a8a3-8564328379a2", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] is this something you can look at and ID the appropriate team? ", "created": "2018-01-09T12:43:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:1b6a0394-68a9-4406-a8a3-8564328379a2] Looks like the distros have finally fixed this, so it might just mean flagging it as a known issue for foss users if we do that sort of thing. /CC [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]", "created": "2018-01-09T12:47:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] Can do. Is 2.7.2 as far back as this issue goes?", "created": "2018-01-09T16:53:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] I think it is anything with java 8, but puppetserver 5 wasn't out when this issue appeared, so probably 2.8 and earlier?", "created": "2018-01-09T17:07:00.000000"}], "components": ["Puppet Server"], "created": "2017-02-01T10:09:00.000000", "creator": "62438a418678e9007059bcca", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e14a41b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymqdr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_805029_*|*_3_*:*_1_*:*_5261359_*|*_6_*:*_2_*:*_9152929971_*|*_10004_*:*_1_*:*_23438231345"}], "description": "This morning, our Puppet CA server, a RHEL7 box, updated its java packages from:\n\n{noformat}\njava-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64\njava-1.8.0-openjdk-headless-1.8.0.111-2.b15.el7_3.x86_64\n\nopenjdk version \"1.8.0_111\"\nOpenJDK Runtime Environment (build 1.8.0_111-b15)\nOpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)\n{noformat}\n\nTo:\n\n{noformat}\njava-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64\njava-1.8.0-openjdk-headless1.8.0.121-0.b13.el7_3.x86_64\n\nopenjdk version \"1.8.0_121\"\nOpenJDK Runtime Environment (build 1.8.0_121-b13)\nOpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)\n{noformat}\n\nThis was a security update only. It should not have changed any Java functionality. But this update completely broke our Puppet CA Server.\n\nSpecifically, when Puppet Server is running using openjdk version 1.8.0_121, new Puppet clients cannot submit certificates for signing. Instead, they return this error:\n\n{noformat}\nError: Could not request certificate: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A\n{noformat}\n\nOn the Puppet CA Server, the following is logged:\n\n{noformat}\n2017-02-01 11:36:41,728 WARN  [qtp2094712335-181] [o.e.j.u.t.QueuedThreadPool] \njava.lang.NoClassDefFoundError: Could not initialize class sun.security.ssl.SupportedEllipticCurvesExtension\n        at sun.security.ssl.HelloExtensions.<init>(HelloExtensions.java:82)\n        at sun.security.ssl.HandshakeMessage$ClientHello.<init>(HandshakeMessage.java:245)\n        at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:220)\n        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026)\n        at sun.security.ssl.Handshaker$1.run(Handshaker.java:966)\n        at sun.security.ssl.Handshaker$1.run(Handshaker.java:963)\n        at java.security.AccessController.doPrivileged(Native Method)\n        at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1416)\n        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:612)\n        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:239)\n        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)\n        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)\n        at java.lang.Thread.run(Thread.java:745)\n2017-02-01 11:36:41,729 WARN  [qtp2094712335-181] [o.e.j.u.t.QueuedThreadPool] Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@1b278e22 in qtp2094712335{STARTED,8<=8<=200,i=5,q=0}\n{noformat}\n\nIf we stop the Puppet CA Server, downgrade the OpenJDK packages back to 1.8.0_111, and then restart the Puppet CA Server, all functionality is restored, and the Puppet CA Server works correctly, without logging the above messages.\n\nIf it matters: we use autosigning for our hosts, and we have a separate Puppet CA Server.\n\nI suspect that one (or both) of the following is true:\n\n* The OpenJDK 1.8.0_121 update is broken (either by OpenJDK, or by Red Hat).\n* The Puppet CA Server code is broken, but no version of OpenJDK before 1.8.0_121 managed to step on the brokenness.\n\nIs this Puppet's fault? Or do we need to go yell at Red Hat and/or the OpenJDK folks?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14788", "fixedVersions": [], "id": "14788", "issueType": "Bug", "key": "SERVER-1720", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "62438a418678e9007059bcca", "resolution": "Fixed", "resolutionDate": "2018-02-13T16:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "RHEL7 Java 1.8.0_121 update causes Java class errors for CA server; Java downgrade/re-upgrade resolves", "timeSpent": "PT0S", "updated": "2018-02-13T16:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:79cfdf4b-b7db-45b4-904b-68a82fb46933", "body": "[~accountid:557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213] [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] Do either of you have more specificity or thoughts on this?", "created": "2017-01-26T10:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Assuming this is one of the more commonly used tools for troubleshooting, one option for this might be to change the Puppet Server [foreground|https://docs.puppet.com/puppetserver/latest/subcommands.html#foreground] command to use a smaller maximum JVM heap size - and maybe an unbound minimum heap size - by default.\n\nI'd definitely like to get your thoughts what the most ideal approach would be, including any recommendations on min/max heap sizes that seem practical for development.  I'm sure [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] has some pretty specific ideas for these based on his past low memory testing.", "created": "2017-01-31T14:23:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] how does the foreground choose the java args it does use?  Does it read sysconfig or defaults? \n\n[~accountid:557058:79cfdf4b-b7db-45b4-904b-68a82fb46933] I'm not clear what the use case is.  Seems like the right play is documentation on the settings that need to be changed ( jrubies to 1 and a smaller heap ).  If we make some new command for low memory debugging then we still have educate users about it and it seems better to just educate them on the existing settings in my mind.  \n\n", "created": "2017-01-31T17:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}how does the foreground choose the java args it does use? Does it read sysconfig or defaults?{quote}\n\n[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], it just uses the existing $\\{JAVA_ARGS\\} set from sysconfig/defaults, so you'd get the same args for the foreground subcommand as you would for Puppet Server when started as a service.\n\nhttps://github.com/puppetlabs/ezbake/blob/1.1.6/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb#L9\nhttps://github.com/puppetlabs/ezbake/blob/1.1.6/resources/puppetlabs/lein-ezbake/template/global/ext/cli/foreground.erb#L19", "created": "2017-01-31T17:47:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:62438584f813eb006928dc81] How would you determine the correct heap size for foreground and also allow it to be overridden if it needs to change?  If we could have a FOREGROUND_JAVA_ARGS that could override the formula we use for the determining the heap I could see value in that.  \n\nAssuming foreground only uses 1 jruby then the heap calculation would just be ( normal heap / jrubies ) right? ", "created": "2017-02-01T10:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The more I think about it, I wonder if what this ticket is asking for would fold nicely into what we were discussing in SERVER-570.  In that ticket, we discussed having a separate puppetserver CLI subcommand {{puppetserver debug}} for which selected Trapperkeeper configuration settings - e.g., swapping in 1 jruby in place of the default number for production - could be applied.  We could add onto that new command a way for a more tailored set of JAVA_ARGS for debugging - e.g., reduced heap size values - to be used.  I think separating the {{debug}} front-end from {{foreground}} could still be valuable in that {{foreground}} would still give you an easy way to spin up Puppet Server with the same settings used when running as a service, just with the added convenience of seeing log output in the foreground.\n\nWhat do others think?  Would it make sense to close this in lieu of SERVER-570 and just add into that ticket the idea of using a separate set of JAVA_ARGS for the {{debug}} command which would have smaller heap size values?", "created": "2017-02-03T08:39:00.000000"}, {"author": "557058:79cfdf4b-b7db-45b4-904b-68a82fb46933", "body": "That does sounds like roughly what the reasoning for this ticket was. I can't speak to all the technical details but here is a try at a user story.\n\nAs a user of the webrick master for simple debugging/development/testing of master side code I want to have a similarly lightweight way to do this with puppet server so that I can develop locally without needing a dedicated VM or taking a ton of memory on my laptop.", "created": "2017-02-08T12:59:00.000000"}], "components": ["Puppet Server"], "created": "2017-01-26T10:12:00.000000", "creator": "557058:79cfdf4b-b7db-45b4-904b-68a82fb46933", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d82e40c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1313"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbixr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_457656145_*|*_6_*:*_2_*:*_34512_*|*_10005_*:*_2_*:*_67709888334"}], "description": "By default puppet server (and other related services) have a pretty big memory footprint. This can make it difficult to fit on a laptop for local debugging. It is possible to tune these settings down a bit but at this time that requires knowledge that many users are unlikely to have.\n\nThere should be a simpler way to start up puppet server with reduced memory settings for local debugging.", "epicLinkSummary": "Improved JRuby Debugging UX", "estimate": "PT0S", "externalId": "16506", "fixedVersions": ["SERVER 5.y"], "id": "16506", "issueType": "Improvement", "key": "SERVER-1719", "labels": [], "originalEstimate": "PT0S", "parent": "14734", "parentSummary": "Improved JRuby Debugging UX", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:79cfdf4b-b7db-45b4-904b-68a82fb46933", "resolution": "Won't Fix", "resolutionDate": "2019-03-26T10:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide a simple to use low memory footprint option for local debugging", "timeSpent": "PT0S", "updated": "2019-03-26T10:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c0dfe50bb2b0070b6b0b3] This sounds like an issue which was introduced in the 2.7.0 release but resolved in the 2.7.1 release.  See SERVER-1644 and [this release note|https://docs.puppet.com/puppetserver/2.7/release_notes.html#bug-fix-set-puppetserver-gem-java-arguments-separately-from-the-server-service].  Do you agree this is the same issue?", "created": "2017-01-26T10:12:00.000000"}, {"author": "623c0dfe50bb2b0070b6b0b3", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] that does indeed look like a solution to this problem. \nThanks.", "created": "2017-01-27T01:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks for confirming, [~accountid:623c0dfe50bb2b0070b6b0b3].  I'm going to close this issue out.", "created": "2017-01-31T14:24:00.000000"}], "components": ["Puppet Server"], "created": "2017-01-26T09:51:00.000000", "creator": "623c0dfe50bb2b0070b6b0b3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e1d5819"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbixj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_448430754_*|*_5_*:*_1_*:*_0"}], "description": "\nCurrently JAVA_ARGS is typically specified in /etc/sysconfig/puppetserver e.g\n\nJAVA_ARGS=\"-Xms4608m -Xmx4608m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom\"\n\n4 gig of memory on say a 7 gig dedicated to be puppetserver is perfectly reasonable\nfigure.\n\nA problem arises however when the puppet agent kicks in and runs\npuppetserver gem list --local as part of puppetserver_gem package provider.\n\nThis is also tries to grab 4 gig and results in a \n\n{quote}\nOpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006e0000000, 3221225472, 0) failed; error='Cannot allocate memory' (errno=12)\n#\n# There is insufficient memory for the Java Runtime Environment to continue.\n# Native memory allocation (malloc) failed to allocate 3221225472 bytes for committing reserved memory.\n# An error report file with more information is saved as:\n# /tmp/jvm-31934/hs_error.log\n{quote}\n\nwhich is not that surprising 4+4 > 7.\n\nIt's currently not possible to specify different heap limits for the puppetserver command and\nthe puppetserver service. Since the systemd \n\n/lib/systemd/system/puppetserver.service\n\nfile sources the file\n\n/etc/sysconfig/puppetserver\n\nas well as /usr/bin/puppetserver via \n\n/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver\n\npuppetserver gem clearly needs a lot a less memory than the multicore puppetserver start\nso being able to tune these values independently makes sense and allows more\nthan half the memory to be allocated to the puppetserver.\n\nCurrently the unit file\n\n /lib/systemd/system/puppetserver.service\n\nsources /etc/sysconfig/puppetserver and passes JAVA_ARGS\nto puppet server start makes sense.\n\nHowever the /usr/bin/puppetserver \n\nshould probably not fish the values out of /etc/sysconfig/puppetserver since it is\nthe property service.\n\nThere are probably other more radical ways of changing this and avoid starting up a new java machine just to check what gems are installed.\n\n\n\n\n\n\n\n\n\n\n", "environment": "CentOS 7\njava-1.7.0-openjdk-headless-1.7.0.121-2.6.8.0.el7_3.x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15984", "fixedVersions": [], "id": "15984", "issueType": "Improvement", "key": "SERVER-1718", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0dfe50bb2b0070b6b0b3", "resolution": "Duplicate", "resolutionDate": "2017-01-31T14:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": " puppetserver gem grabs same amount of memory as puppetserver start", "timeSpent": "PT0S", "updated": "2017-01-31T14:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "what if you add {{-Djava.security.egd=file:/dev/./urandom}} (yes this \"/./\" is needed) to java args?\n\nthere is an epic discussion with opinions about /dev/random and /dev/urandom and what is the right thing to use if you google for it. ", "created": "2017-02-03T02:36:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "http://www.2uo.de/myths-about-urandom/ :\n\ntldr", "created": "2017-02-03T02:38:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "puppetserver gem is a wrapper for jruby's gem command and this will never be as fast as MRI gem. jruby just takes some more time to start. but it should not be so slow. ", "created": "2017-02-03T02:48:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "there was a change recently about CLI and Daemon JAVA_ARGS: https://puppet.atlassian.net/browse/SERVER-1644 ", "created": "2017-02-03T02:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:afa80a20-2814-4f2f-bbdd-ad5db4190123] and [~accountid:557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53] - thanks very much for raising this issue!\n\nWe have actually been including {{-Djava.security.egd=/dev/urandom}} in the JAVA_ARGS when running puppetserver (and puppetdb) as a service for a long time now - 3+ years.  See \nhttps://github.com/puppetlabs/ezbake/blob/1.1.6/resources/puppetlabs/lein-ezbake/template/global/ext/cli/start.erb#L50.  We did that because performance with heavy SSL operations - lots of https requests - dramatically improved and, like [~accountid:557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53] mentioned has been noted from various research into the subject, the security benefits of using {{/dev/random}} over {{/dev/urandom}} have seemed inconclusive from all of the research which has been done on the topic.\n\nWe have not, however, ever been including a {{-Djava.security.egd}} setting for the gem subcommand, not even before the JAVA_ARGS bug related to SERVER-1644 was introduced:\n\nhttps://github.com/puppetlabs/puppetserver/blob/2.7.2/resources/ext/cli/gem.erb#L5-L8\n\nIncluding the {{-Djava.security.egd}} JAVA_ARG in the gem subcommand made a huge difference for me in gem installs with Java 8 (1.8.0_111-b15, openjdk) on a CentOS 7 vmpooler VM.\n\nInstalling / uninstalling the cri gem in a loop, I saw real times for the install that varied wildly - from 12+ seconds to sometimes over 1 minute - when the {{-Djava.security.egd}} arg was not set (the default).  I also saw {{/proc/sys/kernel/random/entropy_avail}} values frequently drop well below {{/proc/sys/kernel/random/read_wakeup_threshold}} values as the install loop was running.\n\nWhen I set {{-Djava.security.egd=/dev/urandom}} in the gem command line, installs were much more consistently in the 19-20 second range and {{entropy_avail}} consistently stayed well above the {{read_wakeup_threshold}}.\n\nWhen I set {{-Djava.security.egd=file:/dev/./urandom}} instead, the install times were consistently in the 12-13 second range.  {{entropy_avail}} remained consistently above the {{read_wakeup_threshold}} as before.\n\nTBH, this is the first I'd heard of using {{file:/dev/./urandom}} instead of {{/dev/urandom}}.  I suppose [this old OpenJDK bug report|https://bugs.openjdk.java.net/browse/JDK-6202721?focusedCommentId=12175800&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12175800] is related?  I see at least a few instances of {{SecureRandom.getInstance(\"SHA1PRNG\")}} calls in JRuby code - may be some elsewhere in our underlying stack as well, not sure.\n\nI'm very curious now about how using {{file:/dev/./urandom}} instead of {{/dev/urandom}} might bear out in a load test of Puppet Server.  I'm going to spend a bit of time spinning one of those up and see what I find.\n\nIn any event, I definitely think this is something we can/should change in the {{gem}} command JAVA_ARGS - and maybe add {{file:/dev/./urandom}} instead of {{/dev/urandom}} to the service JAVA_ARGS in ezbake as well.\n\n", "created": "2017-02-03T10:13:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I'd vote to add {{-Djava.security.egd=/dev/urandom}} to the gem command and any other commands that run java to match what we're doing when we run puppetserver as a service and close out this ticket.  \n\nThen make a new ticket to investigate the advantages of {{/dev/./urandom}}.  Seems like {{/dev/urandom}} is an obvious win and the {{/dev/./urandom}} might take some more research that I wouldn't want to hold up getting the easy win.  ", "created": "2017-02-03T10:23:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I actually don't know if it is required anymore. It was required to have /./ becaues it just ignored the setting if one specified /dev/urandom . Tells the problem exists in Java 6 and 7 but does not list 8: https://access.redhat.com/solutions/2066163 . For JDK 8 it refers to http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/0f93bd5cc8d7 and http://openjdk.java.net/jeps/123 which shall include a fix.", "created": "2017-02-03T10:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53], thanks for those links.  Yeah, I had my doubts, too, about whether it would help with Java 8 to use {{file://dev/./urandom}} over just {{/dev/urandom}} but it did still seem to help from the cursory experiment with installing gems in a loop that I mentioned above.  I'll spend a bit of time seeing if that bears out at all when running puppetserver as a service with load being directed at it to see if that seems like a worthwhile path to pursue further.", "created": "2017-02-03T10:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I ran some of our puppetserver performance tests for about 4 hours today with the {{file:/dev/./urandom}} change.  OpenJDK 1.8.0_11-b13 was installed on CentOS 7 for the system under test.  I didn't see any discernible difference in mean agent run time with this vs. the prior runs that we've been doing with {{/dev/urandom}}.  I'm inclined not to investigate the difference between the two further at this point.\n\nAs [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] suggested, I think we should just add {{/dev/urandom}} to the Java command line in each of the Puppet Server subcommands, like we have done (and tested extensively) when running processes as a service for multiple years now.  I'll work up a couple of PRs for that.", "created": "2017-02-03T16:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I have PRs up to add the {{/dev/urandom}} option to the gem, irb, ruby, and foreground subcommands.  gem, irb, and ruby are in the puppetserver repo.  foreground will require a release of ezbake and an update to the ezbake dependency in puppetserver.", "created": "2017-02-03T18:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PRs for this ticket have landed in each of the repos - OSS puppetserver, PE puppetserver, and ezbake.  Since no CI failures emerged as a result, moving this ticket to resolved.", "created": "2017-02-17T15:30:00.000000"}], "components": ["Puppet Server"], "created": "2017-01-18T18:34:00.000000", "creator": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76f1178"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymc93:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "By default the Puppetserver CLI subcommands used /dev/random for entropy. On systems that have limited sources of entropy, such as VMs, these subcommands could drain the entropy pool rapidly and then would block while the pool gradually refilled. For all practical purposes /dev/urandom provides enough entropy for our needs, so the Puppetserver CLI subcommands have been updated to use /dev/urandom over /dev/random."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_786980857_*|*_1_*:*_1_*:*_1375410454_*|*_10007_*:*_1_*:*_411812306_*|*_3_*:*_1_*:*_6784062_*|*_5_*:*_1_*:*_11306904467_*|*_6_*:*_1_*:*_0"}], "description": "Installing gems in the puppetserver is incredibly, amazingly slow. When deploying new masters for my personal use, runs take many minutes upon provisioning, the majority of which is the installation of two gems. I can't see why it should take this long. Here are some examples:\n\nThese were run with machines in SLICE so network speeds should be a non-issue\n\n{code}\n[root@master centos]# time /opt/puppetlabs/server/bin/puppetserver gem install cri\nFetching: colored-1.2.gem (100%)\nSuccessfully installed colored-1.2\nFetching: cri-2.7.1.gem (100%)\nSuccessfully installed cri-2.7.1\n2 gems installed\n\nreal    3m22.958s\nuser    0m38.800s\nsys     0m0.701s\n\n[root@master centos]# time /opt/puppetlabs/puppet/bin/gem install cri\nFetching: cri-2.7.1.gem (100%)\nSuccessfully installed cri-2.7.1\nParsing documentation for cri-2.7.1\nInstalling ri documentation for cri-2.7.1\nDone installing documentation for cri after 0 seconds\n1 gem installed\n\nreal    0m3.152s\nuser    0m1.623s\nsys     0m0.105s\n{code}\n\nIn this case installing the 2 gems was 67x slower than it was using puppet's gem command. Even if it involved a restart of the Puppetserver it shouldn't be anywhere near that slow:\n\n{code}\n[root@master centos]# time systemctl restart pe-puppetserver\n\nreal    0m35.280s\nuser    0m0.009s\nsys     0m0.014s\n{code}\n\nAfter a bit of digging we can see a heap of calls like this:\n\n{code}\n0.050128 futex(0x7ff9a80ccc28, FUTEX_WAKE_PRIVATE, 1) = 0 <0.000016>\n[pid 30514]      0.000118 futex(0x7ff9a80ccc54, FUTEX_WAIT_BITSET_PRIVATE, 1, {614513, 99881915}, ffffffff) = -1 ETIMEDOUT (Connection timed out) <0.050022>\n{code}\n\nThe beginning of these calls happening coincides with the available entropy in /dev/random being completely depleted. It then keeps waiting until there is about ~60 entropy available and depletes it again, this happens two or three times and the everything continues from where it left off.\n\nWhile this is a pain in the ass for installing gems it makes you wonder; what else is hanging because java is depleting {{/dev/random}} instead of using {{/dev/urandom}}\n\nAfter installing {{haveged}} to generate more entropy we have a phenomenal increase ins speed:\n\n{code}\n[root@master centos]# time /opt/puppetlabs/server/bin/puppetserver gem install cri\nFetching: colored-1.2.gem (100%)\nSuccessfully installed colored-1.2\nFetching: cri-2.7.1.gem (100%)\nSuccessfully installed cri-2.7.1\n2 gems installed\n\nreal    0m11.302s\nuser    0m38.741s\nsys     0m0.606s\n{code}\n\nThen turning off the {haveged} daemon and running again (It doesn't even have to install this time, it's already there):\n\n{code}\n[root@master centos]# time /opt/puppetlabs/server/bin/puppetserver gem install cri\nSuccessfully installed cri-2.7.1\n1 gem installed\n\nreal    0m54.294s\nuser    0m39.811s\nsys     0m0.578s\n{code}\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16822", "fixedVersions": ["SERVER 5.0.0"], "id": "16822", "issueType": "Bug", "key": "SERVER-1723", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver gem uses all the entropy and then hangs", "timeSpent": "PT0S", "updated": "2018-06-20T11:36:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [], "components": [], "created": "2017-01-11T14:43:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6467c40"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb6pb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_8270492_*|*_3_*:*_1_*:*_1200960492_*|*_5_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15143", "fixedVersions": [], "id": "15143", "issueType": "Task", "key": "SERVER-1713", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2017-01-25T14:36:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Haus has a CI goalie shift for Server maintenance team", "timeSpent": "PT0S", "updated": "2017-01-25T14:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The i18n plugin version has been bumped and i18n CI job has been added to both the OSS puppetserver and pe-puppet-server-extensions mergely pipelines.  The job has been running on each of the pipelines without failure so far so I'm going to close this out.", "created": "2017-02-03T15:49:00.000000"}], "components": [], "created": "2017-01-11T10:18:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a5599e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymddb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_35335_*|*_10007_*:*_1_*:*_271327213_*|*_3_*:*_1_*:*_1210518149_*|*_5_*:*_1_*:*_12515359562_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_525216058"}], "description": "OSS and PE Puppet Server should be updated to the latest clj-i18n version, 0.5.1 and have their CI pipelines updated to include the [i18n-clj template|https://github.com/puppetlabs/ci-job-configs/blob/master/resources/job-templates/i18n-clj.yaml].  This will allow the locale POT files to be updated automatically by CI whenever any externalized strings need to be changed based on the latest Clojure code in the projects.  This avoids the need to update the files at compile time and include those changes on a per-PR basis.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14786", "fixedVersions": ["SERVER 2.8.0", "SERVER 5.0.0"], "id": "14786", "issueType": "Task", "key": "SERVER-1712", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update to i18n 0.5.1 and add i18n-clj job to CI pipeline", "timeSpent": "PT0S", "updated": "2017-08-28T12:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2017-01-09T11:04:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f14c562"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1697"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb3t3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2057337_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34061201193"}], "description": "For the manual environment isolation pooling configuration being done for SERVER-1697, we should do some measurement under load to gauge what the differences in performance / memory utilization would be - as compared to the non-environment isolated pooling configuration which exists today.\n\nAgent runs done through the simulations captured through the gatling-puppet-load-test framework today typically only exercise a specific environment, production.  Performance under a single environment may be similar for both the isolated and non-environment isolated pooling configurations - assuming an equivalent number of JRuby instances being used for both.  It would seem more interesting to compare the environment vs. non-environment isolated pooling configurations with a simulation where multiple environments are concurrently being exercised on the server, where at least some of the environments being exercised might hit the dynamic / failover pool.\n\nA simple approach for this might just involve adding multiple jobs to the same gatling-puppet-load-test scenario configuration, where the different jobs use simulations which target different environments.  It might be better, though, to add some support for multiple environment configuration to the scenario file itself, reusing the same underlying simulations but subbing the desired environment into the playback of the simulation dynamically.  This could allow existing simulations to be reused much more easily.  To support this, we'd probably need to have some support in the startup framework for making multiple copies of an environment to different names on the server.", "epicLinkSummary": "Manual configuration of per-environment pools for isolation", "estimate": "PT0S", "externalId": "16504", "fixedVersions": [], "id": "16504", "issueType": "New Feature", "key": "SERVER-1711", "labels": [], "originalEstimate": "PT0S", "parent": "17419", "parentSummary": "Manual configuration of per-environment pools for isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate adding multi-environment agent runs to gatling-puppet-load-test framework", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2017-01-09T10:32:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25c168e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1697"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb3qv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4014208_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34061200321"}], "description": "This ticket would involve creating some beaker tests for puppetserver which can be used to validate that the manual pooling configuration for the SERVER-1697 epic adequately addresses the issues that isolation is intended to resolve.\n\nThese tests could include:\n\n* Differing puppet type definitions between environments.  There's some prior art here which was done in pe-puppet-server-extensions tests for the 'puppet generate types' feature which could be reused for this.  [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] has more details on this.\n\n* Differing Ruby code helpers between environments.  The differing helpers could be attached to various Puppet extension points which are exercised on the master.  Custom functions might be the easiest way to do this.\n\nFor these tests, it would be good to confirm that with today's \"non-isolated\" pooling configuration that the tests fail due to the code collisions among environments whereas the tests pass with no code collisions when the alternate manual pooling configuration for environment isolation is being used.", "epicLinkSummary": "Manual configuration of per-environment pools for isolation", "estimate": "PT0S", "externalId": "14783", "fixedVersions": [], "id": "14783", "issueType": "Task", "key": "SERVER-1710", "labels": [], "originalEstimate": "PT0S", "parent": "17419", "parentSummary": "Manual configuration of per-environment pools for isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Environment isolation beaker tests", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2017-01-09T10:13:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13bd57a3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1697"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb3pz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5112064_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34061200336"}], "description": "This work would build on the LRU-based environment isolation added to the dynamic pool in SERVER-1708.  With this ticket, a \"subpool\" behind the dynamic pool would maintain a queue of \"hot\" unused instances which, as a performance enhancement, can be replenished asynchronously from an incoming borrow request.\n\nWith the work in SERVER-1708, an unused instance would be given out when a borrow is performed and no matching used instance is available in the pool at the time the borrow is done.  This ticket would involve having an instance asynchronously created and inserted back into the dynamic pool to replace the unused instance which was assigned to a key for a borrow request.\n\nWith the work in prior tickets, the dynamic pool would have been populated at startup with a static number of instances which would all eventually transition from the state of unused to used.  Where the work for this ticket would entail having used instances replenished as needed with new instances, this ticket should set constraints on the sizes of the used vs. unused instances in the dynamic pool separately.\n", "epicLinkSummary": "Manual configuration of per-environment pools for isolation", "estimate": "PT0S", "externalId": "16501", "fixedVersions": [], "id": "16501", "issueType": "New Feature", "key": "SERVER-1709", "labels": [], "originalEstimate": "PT0S", "parent": "17419", "parentSummary": "Manual configuration of per-environment pools for isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dynamic pool w/ backing hot pool", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2017-01-09T09:56:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32a93957"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1697"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb3pj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6128902_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34061199765"}], "description": "Based on the work from SERVER-1707, the work in this ticket would involve expanding the dynamic pool behind the KeyedJRubyPool to support isolating instances to use for a single key.  The work from SERVER-1707 would allow dynamic pool instances to be used by multiple keys.\n\nWhen a borrow request is made with a key, the following logic would be evaluated:\n\n- If at least one used instance matching the key resides in the dynamic pool, the least recently used matching instance would be handed out.\n\nelse\n\n- If at least one unused instance resides in the dynamic pool, one of the unused instances would be handed out.\n\nelse\n\n- The least recently used instance in the pool will be handed out.  The borrower would then need to destroy the instance since the instance was used for a different key from the one that the borrower needs.  The borrower would create a new instance in place of the destroyed instance and return that to the caller.  This instance would be returned to the dynamic pool when the borrower is finished using it.", "epicLinkSummary": "Manual configuration of per-environment pools for isolation", "estimate": "PT0S", "externalId": "15406", "fixedVersions": [], "id": "15406", "issueType": "New Feature", "key": "SERVER-1708", "labels": [], "originalEstimate": "PT0S", "parent": "17419", "parentSummary": "Manual configuration of per-environment pools for isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dynamic pool w/ LRU environment isolation", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2017-01-09T09:41:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11d389ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1697"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb3ov:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7055404_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34061200119"}], "description": "With this ticket, we'd be adding support for a \"dynamic\" pool behind the KeyedJRubyPool class whose instances would be handed out whenever a request is made to borrow an instance from the KeyedJRubyPool for an key that was not specifically configured during pool construction.  In this pass, we'd just created a fixed-sized \"dynamic\" pool, probably just using an instance of a {{JRubyPool}} behind the borrow requests, and not provide per-key isolation for the \"dynamic\" pool instances.", "epicLinkSummary": "Manual configuration of per-environment pools for isolation", "estimate": "PT0S", "externalId": "17422", "fixedVersions": [], "id": "17422", "issueType": "New Feature", "key": "SERVER-1707", "labels": [], "originalEstimate": "PT0S", "parent": "17419", "parentSummary": "Manual configuration of per-environment pools for isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dynamic pool w/o environment isolation support", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-01-06T17:45:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ba80d27"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz85jz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_342048649_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34715545072"}], "description": "In Puppet Server today, some optional settings in the configuration files shipped in packages are listed uncommented.  Per a discussion in SERVER-1700, there was agreement that it would be good for these cases to instead still include the setting with its default value but commented out.  This ticket would cover commenting out the appropriate optional settings in packaged Puppet Server config files.\n\nAn example where this would apply is the {{master-conf-dir}} setting.  Currently, the configuration file lists the following by default:\n\n{noformat}\n# (optional) path to puppet conf dir; if not specified, will use\n# /etc/puppetlabs/puppet\nmaster-conf-dir: /etc/puppetlabs/puppet\n{noformat}\n\nPer this ticket, this would change to:\n\n{noformat}\n# (optional) path to puppet conf dir; if not specified, will use\n# /etc/puppetlabs/puppet\n# master-conf-dir: /etc/puppetlabs/puppet\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16243", "fixedVersions": [], "id": "16243", "issueType": "Bug", "key": "SERVER-1706", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-16T11:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Comment out optional settings in config files", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "Is {{environment}} the right name? Will jruby pools forever be tight to an environment name? Isn't the jruby pool name a thing of its own and should not be named the same like an environment to prevent (future) confusion?", "created": "2017-01-09T23:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Copying over a related comment from [~accountid:557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53] from [here|https://puppet.atlassian.net/browse/SERVER-1697?focusedCommentId=394665&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-394665].\n\n{quote}Regarding the recycling of the overflow pool (or fallback pool) I could imaging unclear situations like it works on one agent (served by already recycled process since last environment update) vs. it works not (not recycled since last environment update). I'd like to see Puppet Server: Admin API: JRuby Pool to support recycling the overflow-pool too. So I can call the API after updating a overflow-pool environment.{quote}", "created": "2017-01-10T09:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Is environment the right name? Will jruby pools forever be tight to an environment name? Isn't the jruby pool name a thing of its own and should not be named the same like an environment to prevent (future) confusion?{quote}\n\nMy thinking on this had been that the {{environment}} parameter would qualify which JRuby instances should be flushed from the pool and would only apply when a JRuby pooling strategy which isolates the use of a specific environment to a specific JRuby instance is configured.  With the default pooling strategy that we have today, JRuby pool instances are not restricted to being used with a single environment and so, for this configuration, I think the use of the {{environment}} parameter should be unsupported, returning some sort of error (like an HTTP 409) if used.\n\nDid you have an alternate name / strategy in mind that might make this API less confusing?\n\n{quote} I'd like to see Puppet Server: Admin API: JRuby Pool to support recycling the overflow-pool too. So I can call the API after updating a overflow-pool environment.{quote}\n\nDo you think it would be useful to selectively flush the entire overflow/fallback pool or might it be more useful to flush just the specific instances within the overflow/fallback pool which have been assigned to an environment?  The latter is what I had had in mind.  So, for example, consider if \"dev\" were not configured as one of the \"dedicated-environments\" for the pool but the overflow / fallback pool were to contain 2 pool instances for the \"dev\" environment and 3 pool instances for the \"qa\" environment.  Assuming one were to do a code update for the \"dev\" environment, I had been thinking it might be most useful / performant to do a JRuby pool flush with an environment parameter of \"dev\" and have only the 2 \"dev\" instances from the overflow / fallback pool be flushed and not the 3 \"qa\" instances.\n\nDoes that use case make sense to you?\n\n/CC [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]", "created": "2017-01-10T10:14:00.000000"}], "components": ["Puppet Server"], "created": "2017-01-04T13:11:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7509a7d7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1697"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb1k7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_426473455_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34061200061"}], "description": "With the introduction of per-environment jruby-pools in SERVER-1697, we should be able to offer, as an optimization, an ability to supply a parameter to the [jruby-pool endpoint|https://docs.puppet.com/puppetserver/2.7/admin-api/v1/jruby-pool.html] which would allow for flushes to be done only for the instances which have been mapped to a specific environment.  For consistency with the {{environment-cache}} endpoint, we might just allow for an optional {{environment}} query-parameter to specify the desired environment to flush instances for.\n\nI think it would make most sense to return an HTTP error (maybe a 409/Conflict) if the environment parameter is specified but the server has not been configured to use per-environment JRuby pools.\n\nIf per-environment JRuby pools have been configured but no instances that could be flushed exist for the specified environment, we could either return an HTTP 404 error or just a 200 OK since the absence of available instances to flush might not be an error per-se and might complicate error handling for a user.  I think I'd lean toward a 404 since it seems a little more accurate but could go either way.", "epicLinkSummary": "Manual configuration of per-environment pools for isolation", "estimate": "PT0S", "externalId": "17421", "fixedVersions": [], "id": "17421", "issueType": "New Feature", "key": "SERVER-1705", "labels": [], "originalEstimate": "PT0S", "parent": "17419", "parentSummary": "Manual configuration of per-environment pools for isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Per-environment jruby-pool flushing", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. The request for a JRuby pool lock should terminate with an error message after a reasonable timeout instead of blocking incoming requests to the pool indefinitely.\n\nI agree that this is an improvement we should make.  In general, I think any blocking call like this in the server should have a timeout.  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] - sound reasonable?\n", "created": "2016-12-28T14:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "What do we think should happen if the {{lock}} request times out in the context of code update that needs to be synched into the master's live code directory?  It would seem inappropriate to go ahead and perform the sync when that happens.  Should file sync wait for some period of time and automatically try to obtain the lock again and apply the code update?  The potentially dangerous thing about opening up this whole code path is that a code update might be postponed indefinitely while agents continue to have catalogs compiled against an old (and possibly undesirable/inappropriate) version of Puppet code.  If we end up doing this work, I think we should make it user configurable since it would seem possible to me that for some customers, the idea of indefinitely postponing a code update and using old code might be unacceptable.\n\nAnother thing we might look into instead of this (or in conjunction with this) is the possibility of setting some sort of a max-duration for an active web request.  This might be a tricky thing to do well.  For the case of a thread that has been parked - blocked indefinitely on i/o - it might be possible to have a monitor at the web server layer send an interrupt to a worker thread if it has not completed a request within a reasonable period of time.  It's possible that this might not work in some cases, though - e.g., if the thread refuses to acknowledge the interrupt and keeps on chugging.  If the interrupt did allow for the long running request to be terminated, though, it could allow for the lock to eventually be granted (and code updated) in the case of a pending file sync code update.", "created": "2017-01-03T10:49:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. What do we think should happen if the lock request times out in the context of code update that needs to be synched into the master's live code directory? It would seem inappropriate to go ahead and perform the sync when that happens. Should file sync wait for some period of time and automatically try to obtain the lock again and apply the code update? The potentially dangerous thing about opening up this whole code path is that a code update might be postponed indefinitely while agents continue to have catalogs compiled against an old (and possibly undesirable/inappropriate) version of Puppet code. If we end up doing this work, I think we should make it user configurable since it would seem possible to me that for some customers, the idea of indefinitely postponing a code update and using old code might be unacceptable.\n\nI think it'd be best to just go ahead and sync {{codedir}} without the lock, but I would be okay with just giving up on the sync too.  I'd vote for avoiding an extra configuration option for this until there's a user-demonstrated need for it.  Also, I'd really like to avoid any sort of retry logic - if the lock request times-out, I see no reason to retry it.\n\nbq. Another thing we might look into instead of this (or in conjunction with this) is the possibility of setting some sort of a max-duration for an active web request\n\nDoesn't Jetty already provide something along these lines?  Perhaps it's not exactly what you're describing. ", "created": "2017-01-03T11:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}I think it'd be best to just go ahead and sync codedir without the lock, but I would be okay with just giving up on the sync too. I'd vote for avoiding an extra configuration option for this until there's a user-demonstrated need for it. Also, I'd really like to avoid any sort of retry logic - if the lock request times-out, I see no reason to retry it.{quote}\n\nSynching the codedir without the lock still sounds dangerous to me.  I understand the concern about adding more configuration, though.  Not sure if there's someone from the product team who could weigh in on what they think the ideal behavior should be in this case.  Is [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] still involved in file-sync / code-manager related things these days?\n\n{quote}Another thing we might look into instead of this (or in conjunction with this) is the possibility of setting some sort of a max-duration for an active web request{quote}\n{quote}Doesn't Jetty already provide something along these lines?{quote}\n\nI haven't seen anything directly which Jetty provides for this.  It has an [idle-timeout-milliseconds|https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/1.6.0/doc/jetty-config.md#idle-timeout-milliseconds] that we expose via the Trapperkeeper webserver configuration.  That setting only controls how long Jetty will allow a socket connection to remain idle before shutting it down.  For the case that Jetty has routed a request down into a handler from one of its worker threads, though, I think it will let that request proceed indefinitely.  Jetty does have logic to interrupt worker threads that it uses during a prolonged shutdown, but I haven't seen any cases where it invokes that logic for long-running requests where the server remains running afterward.  I'm not sure how plausible this approach would be but it does seem to get more at the cause of the problem if it is tractable.\n", "created": "2017-01-03T14:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We talked about this in the Puppet Server backlog grooming meeting yesterday, and I believe the following is the approach we're recommending for this issue.  /CC [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] and [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] to keep me honest on this:\n\n1) In jruby-utils (the library that Puppet Server uses to access the pool lock functionality), we'll add an overload of the {{JRubyPool.lock()}} method which accepts a timeout argument.  If the {{lock()}} request is parked up until the timeout is reached, an exception will be thrown.  Java's {{TimeoutException}} seems appropriate to me for this.\n\n2) For each of the places where {{lock()}} is called where a timeout is desired, we should provide a timeout parameter.\n\nOutside of test code, I think the only place we do this today is from file-sync during a client code sync.  Starting with the work in PE-13552 that [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] is currently working on to refactor the JRuby pool implementation to use a single pool, though, we'll have a couple of other places where pool locking will be done - for a full JRubyPool flush request and a shutdown/reload.  The work for PE-13552 will probably land before this ticket is completed.  We should retrofit the use of a lock timeout at least for flush requests.  Not sure we need / desire it for shutdown/reload, however, because failing to lock the pool would result in JRubies not being cleaned up / putting the app in an unstable state (at least in the context of a reload).\n\nI believe we agreed that the timeouts should be exposed as optional parameters in configuration.  Following the example of the {{borrow-timeout}} used in the {{jruby-puppet}} configuration for Puppet Server (https://docs.puppet.com/puppetserver/2.7/config_file_puppetserver.html#puppet-server-configuration-files:-puppetserver.conf), we could implement two new pool lock timeouts:\n\na) For full JRuby pool flush requests, a {{jruby-puppet.flush-timeout}} setting.\n\nb) For {{file-sync}} code updates, a {{pe-puppetserver.file-sync-lock-timeout}} setting.\n\nBoth new timeouts could default to the 20 minute value we use for the {{borrow-timeout}} in Puppet Server, if that would seem reasonable.\n\n3) For a lock timeout encountered in a flush pool request, the web request could just abort, returning an HTTP error (500).\n\n4) For a lock timeout encountered in a file sync code update request, the sync would attempt would fail.  No retries would be attempted.  In order for new code to be synced again, a new commit would need to be made to the file sync storage service (and signaled to the file sync client service for update).  The rationale for this is that other kinds of asynchronous deployment failures through Code Manager / File Sync already result in the client being left in this state.\n\n5) Specific to file sync, we should do any necessary work to ensure that a failure due to the lock timeout being reached is appropriately logged and is clearly decipherable from the status endpoint for the file sync client info.  [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] and [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] would have a much better idea than I do at this point as to what that should look like, so I'll leave it to them to elaborate on that part.\n\n---\n\nUltimately, I think it would be good to have two tickets for this work:\n\n1) OSS work (jruby-utils and puppetserver).  I think this ticket could be used to track these parts of the work.\n\n2) pe-puppet-server-extensions work (and pe-file-sync, if necessary): a new PE ticket to be submitted.\n\nComments / concerns about any of this?", "created": "2017-01-04T10:48:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "This sounds good to me. As long as the TimeoutException is logged in the usual places, this should resolve one of the main pain points with this issue which is that the root cause is pretty difficult to deduce without a solid understanding of the File Sync architecture and metrics data available to rule out other performance issues.", "created": "2017-01-04T14:59:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. 4) For a lock timeout encountered in a file sync code update request, the sync would attempt would fail. No retries would be attempted. In order for new code to be synced again, a new commit would need to be made to the file sync storage service (and signaled to the file sync client service for update)\n\nWorth noting that a new commit isn't strictly required, a {{/force-sync}} would work too.\n\nbq. 5) Specific to file sync, we should do any necessary work to ensure that a failure due to the lock timeout being reached is appropriately logged and is clearly decipherable from the status endpoint for the file sync client info.\n\nI think that no work will actually be required for this - the proper error handling should already be in-place.  But that should certainly be verified.", "created": "2017-01-04T17:18:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I filed CODEMGMT-1013 to cover the PE file-sync related work for this ticket.", "created": "2017-01-09T18:02:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Moved this into the current sprint since it wasn't there and there's a PR up.", "created": "2017-02-21T09:36:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "The puppetserver/jruby-utils side of this work is done. jruby-utils 0.8.0 was released with the functionality necessary to complete the CODEMGMT-1013 part of the work", "created": "2017-03-02T12:03:00.000000"}], "components": ["File Sync", "Puppet Server"], "created": "2016-12-28T14:02:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13322bb7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym99b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "If a single JRuby instance in the JRuby pool was hung and a request to lock all instances was made, the resulting lock attempt would stall indefinitely. This would effectively deadlock all of Puppetserver and required manual intervention to release the lock. This scenario would occur when a JRuby instance was blocked on an external call (such as an external call to a process that slept indefinitely) and the file sync service attempted to lock the JRuby pool in order to make a code sync.\n\nThis has been resolved by adding a timeout to the pool lock request, and upon expiration of that request an exception would be thrown. This prevents Puppetserver from completely locking up when a single JRuby instance is stalled."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_618733715_*|*_10007_*:*_1_*:*_1713944221_*|*_3_*:*_1_*:*_606288984_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2583505518"}], "description": "When the Puppet Server JRuby pool lock is requested, notably by the File Sync client during code deployment, all incoming requests are blocked and the call to {{lock-pool}} blocks until all currently borrowed instances are returned to the pool. If a single JRuby instance is stalled waiting for an operation that won't complete, access to the entire pool will be locked indefinitely until some action is taken to clear the stalled instance.\n\nh2. Reproduction Case\n\n*  Install PE 2016.5.1, enable Code Manager, and set up a user account that can execute {{puppet code deploy}}.\n*  Add the following node definition to the site manifest of the production environment and deploy it via Code Manager:\n{code:puppet}\nnode \"blocking.test\" {\n\n  $will_never_return = generate('/bin/sleep', 'infinity')\n\n}\n{code}\n*  Generate a certificate that matches the added node definition: {{puppet cert generate blocking.test}}\n*  Execute an agent run using the generated certificate, it will time out:\n{code:bash}\npuppet agent -t --certname=blocking.test --configtimeout=15s\n{code}\n*  Trigger a code deployment via: {{puppet code deploy --all --wait}}\n*  When the deployment finishes, try a normal agent run via {{puppet agent -t}}\n\nh3. Outcome\n\nThe call to {{puppet agent -t}}, along with any other agent request that requires a JRuby will hang until the JRuby borrow timeout kicks in and fails the request. A request to {{/status/v1/services/pe-jruby-metrics?level=debug}} will show that a JRuby pool lock has been requested, but there is still a borrowed instance working on catalog compilation for {{blocking.test}}.\n\nh3. Expected Outcome\n\nThe request for a JRuby pool lock should terminate with an error message after a reasonable timeout instead of blocking incoming requests to the pool indefinitely.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15982", "fixedVersions": ["SERVER 5.0.0"], "id": "15982", "issueType": "Bug", "key": "SERVER-1704", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Done", "resolutionDate": "2017-03-02T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby pool lock request will block indefinitely for a stalled interpreter", "timeSpent": "PT0S", "updated": "2017-06-21T13:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5b5371bbd09e562c1b7b7922", "body": "Kindly close the ticket. I was reading 'Learning Puppet 4' and the author suggested changing few directories. After those changes, i was unable to start Puppet server. Restoring default seems to be working. Apologies for the confusion.", "created": "2016-12-25T22:24:00.000000"}], "components": ["Puppet Server"], "created": "2016-12-25T10:14:00.000000", "creator": "5b5371bbd09e562c1b7b7922", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40913bb9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzawvj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_776382734_*|*_6_*:*_1_*:*_0"}], "description": "I installed Puppet server from the following repo:\nhttp://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm\n\n------------------------------------------------------------------------------------\n\nWhen i try to start the Puppet server, i get the following error:\n# systemctl start puppetserver\nJob for puppetserver.service failed because the control process exited with error code. See \"systemctl status puppetserver.service\" and \"journalctl -xe\" for details.\n\nSo i tried seeing what the above two commands logged.\n\n# systemctl status puppetserver.service\n\u25cf puppetserver.service - puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/puppetserver.service; enabled; vendor preset: disabled)\n   Active: activating (start) since Sun 2016-12-25 22:41:00 IST; 15s ago\n  Control: 24435 (bash)\n   CGroup: /system.slice/puppetserver.service\n           \u251c\u250024435 bash /opt/puppetlabs/server/apps/puppetserver/cli/apps/start\n           \u251c\u250024442 /usr/bin/java -Xms2g -Xmx2g -XX:MaxPermSize=256m -Djava.security.egd=/dev/urandom -XX:OnOutOfMemoryError=kill -9 %p -cp /opt/puppetlabs/server/...\n           \u2514\u250024491 sleep 1\n\nDec 25 22:41:00 gc.xyz.com systemd[1]: Starting puppetserver Service...\nDec 25 22:41:00 gc.xyz.com puppetserver[24435]: OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0\n\n------------------------------------------------------------------------------------\n\n# # journalctl -xe\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.core$apply.invoke(core.clj:641)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at puppetlabs.trapperkeeper.main$_main.invokeStatic(main.clj:7)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:4)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.lang.RestFn.invoke(RestFn.java:512)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.lang.Var.invoke(Var.java:409)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.lang.AFn.applyToHelper(AFn.java:178)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.lang.Var.applyTo(Var.java:700)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.core$apply.invokeStatic(core.clj:646)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.main$main_opt.invokeStatic(main.clj:314)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.main$main_opt.invoke(main.clj:310)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.main$main.invokeStatic(main.clj:421)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.main$main.doInvoke(main.clj:384)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.lang.RestFn.invoke(RestFn.java:619)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.lang.Var.invoke(Var.java:430)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.lang.AFn.applyToHelper(AFn.java:195)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.lang.Var.applyTo(Var.java:700)\nDec 25 22:41:47 gc.xyz.com puppetserver[24556]: at clojure.main.main(main.java:37)\nDec 25 22:41:48 gc.xyz.com puppetserver[24556]: Background process 24563 exited before start had completed\nDec 25 22:41:48 gc.xyz.com systemd[1]: puppetserver.service: control process exited, code=exited status=1\nDec 25 22:41:48 gc.xyz.com systemd[1]: Failed to start puppetserver Service.\n-- Subject: Unit puppetserver.service has failed\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n--\n-- Unit puppetserver.service has failed.\n--\n-- The result is failed.\nDec 25 22:41:48 gc.xyz.com systemd[1]: Unit puppetserver.service entered failed state.\nDec 25 22:41:48 gc.xyz.com systemd[1]: puppetserver.service failed.\nDec 25 22:41:48 gc.xyz.com systemd[1]: puppetserver.service holdoff time over, scheduling restart.\nDec 25 22:41:48 gc.xyz.com systemd[1]: Starting puppetserver Service...\n-- Subject: Unit puppetserver.service has begun start-up\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n--\n-- Unit puppetserver.service has begun starting up.\nDec 25 22:41:48 gc.xyz.com puppetserver[24614]: OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0\nlines 1073-1109/1109 (END)\n", "environment": "CentOS Linux release 7.2.1511 (Core)\n\npuppetlabs-release-pc1-1.1.0-4.el7.noarch\npuppetserver-2.7.2-1.el7.noarch\npuppet-agent-1.8.2-1.el7.x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15668", "fixedVersions": [], "id": "15668", "issueType": "Bug", "key": "SERVER-1703", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b5371bbd09e562c1b7b7922", "resolution": "Cannot Reproduce", "resolutionDate": "2017-01-03T09:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to start Puppet server", "timeSpent": "PT0S", "updated": "2017-01-03T09:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-12-22T13:54:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46d6a7be"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1697"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzawg7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1547070455_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34061199899"}], "description": "This ticket builds on the work in SERVER-1701 to create the initial structure for the {{KeyedJRubyPool}}.  For this ticket, we would be adding in the work to exercise per-key JRuby subpools - creating the pools as well as the ability to register new instances with, borrow from, return to, and lock the subpools.\n\nThe {{KeyedJRubyPool}} would, during construction, create an internal map of key -> {{JRubyPool}} objects.  Consumers would interact with the {{KeyedJRubyPool}}, which would funnel key-specific requests (register, borrow, return) on to the appropriate {{JRubyPool}} object.\n\nThe JRubyPool class currently has a {{register}} method with a single argument representing the object to register.  We could add an overload of this method which accepts two arguments, a key and an object to register.  When the overload is called, the object would be registered in the {{JRubyPool}} object matching the key in the map populated during {{KeyedJRubyPool}} class construction.\n\nWe'll have to decide how we want to handle being able to return instances to the appropriate pool.  Some options include:\n\n1) For each borrowed instance, return a composite object (could be a map) which contains the actual pool instance as well as a key identifier that could be pulled from the instance during return to decide which {{JRubyPool}} the instance should be inserted into.\n\n2) In the {{KeyedJRubyPool}} instance, maintain an internal map which backreferences each registered pool instance to the corresponding {{JRubyPool}} object.  Something like this would seem preferable in terms of keeping the return value from the borrow method compatible with the return type of instances being borrowed in the 'single pool' implementation today.\n\nFor cases where a borrow request is made for a key that has no corresponding pool available, we could just throw an {{UnsupportedOperationException}} for now.  In later tickets, we'll implement support for a \"failover\" JRuby pool.\n\nNon-key specific methods like clear, lock, and getRegisteredElements should operate across all of the instances in the sub-pools.  The lock method should lock all of the subordinate sub-pools before returning to the caller.\n\nWhen the {{lock}} method is called on the JRubyPool today, it waits until all instances have been returned to the pool before returning to the caller.  At the point a {{lock}} call is made, any subsequent borrow requests to the pool are held off - giving the {{lock}} caller priority over the pending borrowers.  We should preserve this semantic in the {{KeyedJRubyPool}} implementation - with a {{lock}} call being made to the {{KeyedJRubyPool}} class resulting in corresponding {{lock}} calls to the underlying {{JRubyPool}} classes being made, with the locker-to-be superceding any pending borrow requests.", "epicLinkSummary": "Manual configuration of per-environment pools for isolation", "estimate": "PT0S", "externalId": "15405", "fixedVersions": [], "id": "15405", "issueType": "New Feature", "key": "SERVER-1702", "labels": [], "originalEstimate": "PT0S", "parent": "17419", "parentSummary": "Manual configuration of per-environment pools for isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support for per-key JRuby subpools", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-12-22T13:14:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2db40ca1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1697"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtx3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1549472065_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34061199010"}], "description": "For this ticket, we would create a new {{JRubyPool}} wrapper class, could be named {{KeyedJRubyPool}}, which would be the parent container that borrowers would interact with when the \"manual/explicit\" pooling strategy is configured.  This ticket would involve modifying the Clojure helper functions which create a pool to be able to either create a {{JRubyPool}} instance, as is done today, or a {{KeyedJRubyPool}} based on configuration data provided for the pool.  The new, optional configuration data could just include a map of key objects to pool capacity.  The new {{KeyedJRubyPool}} class could just interact with a single backing {{JRubyPool}} class, not actually creating or using any key-specific subpools for now (work to be done in a later ticket).  As a result of the work in this ticket, it should be possible for a consumer to have a {{KeyedJRubyPool}} created, by configuration, while preserving existing functionality for the legacy 'single pool' configuration.", "epicLinkSummary": "Manual configuration of per-environment pools for isolation", "estimate": "PT0S", "externalId": "17139", "fixedVersions": [], "id": "17139", "issueType": "New Feature", "key": "SERVER-1701", "labels": [], "originalEstimate": "PT0S", "parent": "17419", "parentSummary": "Manual configuration of per-environment pools for isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create KeyedJRubyPool class and hook up to pool creation functions", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "70121:f130aa04-9de7-46da-a6ea-80df0a977d31", "created": "2016-12-22T04:28:00.000000", "name": "apt.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11207"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Presuming that you want to keep your prior customizations to the 'puppetserver.conf' file in place after the upgrade is complete but you want to avoid having the prompt appear during the upgrade, you could perform the upgrade from the command line like this:\n\n{code}\napt-get install -o Dpkg::Options::='--force-confold' -y --force-yes puppetserver\n{code}\n\nThis behavior would also be implicit by default if you were using Puppet itself to upgrade the puppetserver package.  For example, if you had customized the 'puppetserver.conf' file, had a version older than 2.7.2 installed, and ran {{puppet apply}} for the following manifest...\n\n{code:puppet}\npackage { 'puppetserver':\n  ensure => '2.7.2-1puppetlabs1',\n  name => 'puppetserver',\n}\n{code}\n\n... the upgrade should complete without intervention.  The \"puppetserver.conf\" file in place should be the same as the one before the upgrade with the new package version of \"puppetserver.conf\" stored at {{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf.dpkg-dist}} for reference.  In some cases, you may want to reconcile the differences between the \"puppetserver.conf\" and \"puppetserver.conf.dpkg-dist\" file after the upgrade has completed, for example, to enable the use of a new feature.\n\n{quote}To avoid this error I have tried to create another configuration file in /etc/puppetlabs/puppetserver/conf.d/ to overwrite the default parameters in puppetserver.conf, however after doing this the service puppetserver did not like it and it refuses to start.{quote}\n\nWe don't currently have support for overriding individual settings from the packaged version of the \"puppetserver.conf\" file in the manner you have described.  In this case, Puppet Server will see the same setting name defined in multiple files and fail to start because it doesn't know which would be the appropriate one to choose.\n\nThe concept of overrides for individual settings in configuration files and assuming that files under {{/etc/}} would always be user-managed and would override corresponding settings from package-managed files under {{/opt/}} has been discussed on SERVER-1240.  You may want to chime in with additional comments on that ticket.\n\nWhen changes to the content of the configuration files are necessary to make, we try to make them in such way that if an older version of the configuration file is still in place that a reasonable default value can be implied.  We have certainly not always been consistent about doing that in past releases, though, but are very conscious of the impact this has caused for users on past upgrades and will certainly keep this in mind with respect to future releases.\n\nDoes any of this information help?  Thank you for the feedback and sorry for the issues you have encountered on past upgrades.", "created": "2016-12-22T09:27:00.000000"}, {"author": "70121:f130aa04-9de7-46da-a6ea-80df0a977d31", "body": "Thanks [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] for the response :)\nHowever in this case and in my humble opinion I think it will make sense to comment out the settings in puppetserver.conf (bellow) as they are just set to the default value. This will make it possible to set them in another file if needed. This tweak may not be possible for other configuration files in the conf.d folder but at least it will ( partially ) fix the issue for puppetserver.conf. Please let me know what you think.\n\n    # (optional) path to puppet conf dir", "created": "2016-12-23T02:02:00.000000"}, {"author": "70121:f130aa04-9de7-46da-a6ea-80df0a977d31", "body": "Hello [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f],\n\nKind request: Would you mind to answer my previous answer please ?\nI am a bit confused about the issue.\n\nThanks in advance.\n\nBR,\n\n", "created": "2017-01-03T09:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Hi [~accountid:70121:f130aa04-9de7-46da-a6ea-80df0a977d31].\n\n{quote}However in this case and in my humble opinion I think it will make sense to comment out the settings in puppetserver.conf (bellow) as they are just set to the default value. This will make it possible to set them in another file if needed. This tweak may not be possible for other configuration files in the conf.d folder but at least it will ( partially ) fix the issue for puppetserver.conf.{quote}\n\nYes, you are right that for any settings that are commented out in the puppetserver.conf file, you would be able to define the settings in a different .conf file in the same directory and have the settings in the separate .conf file be used.  For example, if the {{jruby-puppet.master-conf-dir}} setting were commented out in the \"puppetserver.conf\" file but a setting named {{jruby-puppet.master-conf-dir}} were set to \"/home/user/conf\" in a file named \"puppetserver-overrides.conf\" in the same directory, Puppet Server would use \"/home/user/conf\" as the master's conf directory.\n\nWe have in the past discussed whether or not it is desirable behavior to allow for a single configuration section to be defined across multiple configuration files like this.  It is still possible that we may change the behavior to disallow this behavior but the likelihood of that happening seems pretty low to me at this point.  I still think that some of the possibilities being discussed in SERVER-1240 might be a better long-term solution to this problem but I think the approach you have suggested may be reasonable for now.\n\nIn any event, I am supportive of the idea of having the value for settings in a .conf file which are optional be commented out as delivered in the original file from the package.  I've seen this approach used with a number of other packages as well.  [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - do you have any preferences on this?  Assuming we decide to go forward with this, I can submit a new ticket which specifically describes the work to comment out values for optional settings.", "created": "2017-01-03T10:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Hi [~accountid:70121:f130aa04-9de7-46da-a6ea-80df0a977d31], to your other question....\n\n{quote}One more question, why puppet server needs a setting for puppet code \"master-code-dir\", as according to https://docs.puppet.com/puppetserver/2.7/configuration.html it honors most of the settings in puppet.conf ? and it seems to honor basemodulepath from puppet.conf already. And I am a bit confused by this.{quote}\n\nAs you probably saw from the configuration page that you linked, the default value for {{basemodulepath}} derives from the value of the \"codedir\" setting.  From https://docs.puppet.com/puppet/latest/configuration.html#basemodulepath, the default is documented as {{$codedir/modules:/opt/puppetlabs/puppet/modules}}.\n\nWe had made a decision some time back that we would duplicate the \"top-level\" settings in the puppet.conf, settings whose values are commonly used in computing the default value for another setting, in the puppetserver.conf file for puppetserver.  These settings include:\n\n|| puppet.conf setting || corresponding puppetserver.conf setting ||\n| confdir | master-conf-dir |\n| codedir | master-code-dir |\n| vardir | master-var-dir |\n| rundir | master-run-dir |\n| logdir | master-log-dir |\n\nFor these settings, the implicit defaults are different when the conf file is used in the context of a Puppet agent vs. a Puppet master.  For Puppet 4.x / Puppet Server 2.x, it had seemed inappropriate to impose default values for these settings when used in the context of \"master\" operations from the \"puppet-agent\" package - as this is a package which has shared agent/master ownership.  So, instead, we chose for these to introduce mirrored settings in puppetserver.conf whose values would supercede those from the puppet.conf file.  The hope at the time was that we would eventually eliminate the ambiguity entirely by removing the use of the puppet.conf version of these settings in any mode where Puppet tooling runs as the \"master\", although I don't know how soon or even if that might happen at this point.\n\nAs is mentioned in [this section|https://docs.puppet.com/puppetserver/latest/puppet_conf_setting_diffs.html#overriding-puppet-settings-in-puppet-server] of the Puppet Server documentation, it is best to ensure that all of these settings are defined such that the same values would be used both for the puppet.conf and corresponding puppetserver.conf versions of these settings.  Ideally, it would be best to not customize these settings at all and use the values put in place at package install time.\n ", "created": "2017-01-03T10:34:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Yep, I'm generally in favor of config files which display every available config option with their defaults in a commented-out line.", "created": "2017-01-04T19:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0].  I submitted SERVER-1706 to cover the idea of commenting out optional settings in Puppet Server config files.\n\n[~accountid:70121:f130aa04-9de7-46da-a6ea-80df0a977d31], since I think we may have covered your initial questions with this ticket, I'm going to close this out.  Thanks again for your suggestions.", "created": "2017-01-06T17:46:00.000000"}], "components": ["Puppet Server"], "created": "2016-12-22T04:30:00.000000", "creator": "70121:f130aa04-9de7-46da-a6ea-80df0a977d31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7747a085"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz85k7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1343460531_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_325822"}], "description": "Hello,\n\nSome times when I upgrade the puppetserver package on my debian server apt prompts me if I want to keep my version of puppetserver.conf or the new package version (If changed). I have attached the message to this ticket.\n\nTo avoid this error I have tried to create another configuration file in /etc/puppetlabs/puppetserver/conf.d/ to overwrite the default parameters in puppetserver.conf, however after doing this the service puppetserver did not like it and it refuses to start.\n\npuppetserver[9045]: 11:23:22.526 [main] DEBUG puppetlabs.trapperkeeper.core - Finished TK main lifecycle, shutting down Clojure agent threads.\npuppetserver[9045]: Exception in thread \"main\" java.lang.IllegalArgumentException: Duplicate configuration entry: [:jruby-puppet :master-var-dir]\n\nIs it possible to fix this in the next future release please, this really important for me as I am will to enable automatique upgrads for the server.\n\nBest regards,", "environment": "My setup:\n\n* Debian Jessie.\n* Using apt.puppetlabs.com APT repository in /etc/apt/sources.list.d/.\n* Fully patched system.\n* Puppet server version: 2.7.2-1puppetlabs1\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16821", "fixedVersions": [], "id": "16821", "issueType": "Improvement", "key": "SERVER-1700", "labels": ["puppetlabs-apt"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:f130aa04-9de7-46da-a6ea-80df0a977d31", "resolution": "Done", "resolutionDate": "2017-01-06T17:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Debian APT prompts if the local version of puppetserver.conf has been modified", "timeSpent": "PT0S", "updated": "2017-01-06T17:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "i18n support was merged to the jruby-utils#master branch at [e8d4086|https://github.com/puppetlabs/jruby-utils/commit/e8d4086c58b896a2ebe3f3c4b554bb3ea4d765a8].  i18n CI job was also added for jruby-utils. I ran the pipeline once and confirmed that the job ran and passed successfully. Closing this issue out...", "created": "2017-02-08T10:39:00.000000"}], "components": [], "created": "2016-12-21T16:47:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b3aa4e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1550"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymdd3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_81641361_*|*_1_*:*_1_*:*_16269_*|*_10007_*:*_1_*:*_90026252_*|*_3_*:*_1_*:*_5785007_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4034042618"}], "description": "Same work as was done for other repos in SERVER-1550 but for the jruby-utils repo.", "epicLinkSummary": "String externalization for Internationalization in SysEng-related repos", "estimate": "PT0S", "externalId": "15142", "fixedVersions": [], "id": "15142", "issueType": "Improvement", "key": "SERVER-1699", "labels": [], "originalEstimate": "PT0S", "parent": "15316", "parentSummary": "String externalization for Internationalization in SysEng-related repos", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2017-02-08T10:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Externalize user facing strings in the jruby-utils repo", "timeSpent": "PT0S", "updated": "2017-02-08T10:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623a43fbb75ca80070560103] - is your concern that puppetserver is now logging the STDOUT from a process launched by the generate() function (which occurred as of the work done for SERVER-1571)?  Or do you have a broader concern that puppetserver is logging STDOUT and STDERR which is generated by the spawned process.  We definitely intend to fix the issue of STDOUT being logged but we haven't determined whether a change around the logging of STDERR is warranted.  We have a separate ticket related to this question, SERVER-1671.  I'm thinking it might be best to close this issue and cover any follow-up comments you may have as part of the conversation on SERVER-1671. ", "created": "2016-12-21T10:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "To suppress these messages from the log in the interim, you could add a line to the {{/etc/puppetlabs/puppetserver/logback.xml}} file which turns logging off for messages in the {{ShellUtils}} namespace:\n\n{code:xml}\n<configuration scan=\"true\">\n  ...\n  <logger name=\"org.apache.http\" level=\"INFO\"/>\n  <logger name=\"com.puppetlabs.puppetserver.ShellUtils\" level=\"ERROR\"/>\n\n  <root level=\"info\">\n  ...\n</configuration>\n{code}\n\nThis would ensure that only ERROR-level messages from the ShellUtils namespace - not including the WARN-level at which the shell output is logged - end up in the log.", "created": "2016-12-21T11:05:00.000000"}, {"author": "623a43fbb75ca80070560103", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Sorry for the duplicate, I didn't find the issue SERVER-1671. The Jira search doesn't allow () and the generate keyword yields too many results. \n\nActually I didn't like the change made by SERVER-1571 because for me having STDERR in a generate() function means you will most likely have garbage in the output that you are trying to parse in your manifest. But it's seems the changes where made for compatibility reason.\n\nNow regarding the issue of having the output logged to puppetserver, I think the options discussed in SERVER-1671 are fine by me. \n\nThank you for your support and the workaround. \nYou can close this issue. I will continue to monitor the discussion on the subject.\nRegards.", "created": "2016-12-22T07:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:623a43fbb75ca80070560103].  Closing this one out...", "created": "2016-12-22T08:31:00.000000"}], "components": ["Puppet Server"], "created": "2016-12-21T04:58:00.000000", "creator": "623a43fbb75ca80070560103", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ac6ef9d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzav8v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_99235377_*|*_5_*:*_1_*:*_0"}], "description": "With the modification to the generate() function in this issue SERVER-1571, the puppetserver now log the complete output to the puppetserver.log as STDERR. This is an issue because generate() can be use to generate sensitive data which is now logged on the server.\nThis is also an issue if generate produce a lot of data.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17420", "fixedVersions": [], "id": "17420", "issueType": "Bug", "key": "SERVER-1698", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a43fbb75ca80070560103", "resolution": "Duplicate", "resolutionDate": "2016-12-22T08:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Function generate() logs output to puppetserver error log", "timeSpent": "PT0S", "updated": "2016-12-22T08:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "\n* I would like to be able to specify name globbing (\\*, ?) characters to match environment names. Normally all my dev/test branches have a common prefix (eg. {{test_\\*}}, {{feature_\\*}}) which would maybe enable me to limit the usage on these.\n* If I can configure dedicated jruby pools it could make sense to be able to restart a named  jruby pool with the [Puppet Server: Admin API: JRuby Pool|https://docs.puppet.com/puppetserver/2.7/admin-api/v1/jruby-pool.html] API. For example the test environment could require to be restarted way more frequently than production.", "created": "2016-12-23T02:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53] Thanks much for the feedback!\n\n{quote}If I can configure dedicated jruby pools it could make sense to be able to restart a named jruby pool with the Puppet Server: Admin API: JRuby Pool API. For example the test environment could require to be restarted way more frequently than production.{quote}\n\nWe've had similar discussions about this and agree with the suggestion.  I created a separate ticket under this epic, SERVER-1705, to capture this work specifically.\n\n{quote}I would like to be able to specify name globbing (*, ?) characters to match environment names. Normally all my dev/test branches have a common prefix (eg. test_*, feature_*) which would maybe enable me to limit the usage on these.{quote}\n\nThe way we had envisioned this would work is that for the \"dedicated-environments\", we would allocate fixed capacity for the named environments at startup.  We had not planned on doing any specific discovery on disk as to whether the specified environments already exist at the time the service is being started up - or if they are created after the server is already up and running.\n\nIf you had somewhat short-lived environments mapped to {{test_\\*}} or {{feature_\\*}} branches, instances for those could be spun up out of the {{overflow-pool}} as needed but rotated out as they are no longer being actively used.  The maximum number of these could still be capped per the size of the {{overflow-pool}}.\n\nDo you think this would be sufficient for your needs?\n\n/CC [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] for awareness and any feedback you might want to provide around this use case.\n", "created": "2017-01-04T13:27:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I think I got it now. I intepreted {{overflow-pool-size}} to be used by environments not specified {{dedicated-environments}} AND by requests that can not satisfied by configured {{pool-size}} in {{dedicated-environments}} (\"the overflow\").\n\nIf I configure a dedicated jruby pool for a environment only this pool will serve requests for this environment. Is this correct? If this is true, wouldn't the term {{fallback-pool-size}} (or {{other-environments-pool-size}}) be more descriptive?\n\nRegarding the recycling of the overflow pool (or fallback pool) I could imaging unclear situations like it works on one agent (served by already recycled process since last environment update) vs. it works not (not recycled since last environment update). I'd like to see  Puppet Server: Admin API: JRuby Pool to support recycling the overflow-pool too. So I can call the API after updating a overflow-pool environment.", "created": "2017-01-10T00:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}I think I got it now. I intepreted overflow-pool-size to be used by environments not specified dedicated-environments AND by requests that can not satisfied by configured pool-size in dedicated-environments (\"the overflow\").\n\nIf I configure a dedicated jruby pool for a environment only this pool will serve requests for this environment. Is this correct? If this is true, wouldn't the term fallback-pool-size (or other-environments-pool-size) be more descriptive?{quote}\n\nYes, that's right.  Considering the example from the ticket description...\n\n{noformat}\n{\n  jruby-puppet:\n    {pooling-strategy: configured-environments\n     dedicated-environments: {\n        production: {pool-size: 4}\n        test: {pool-size: 4}\n        staging: {pool-size: 4}\n     }\n     overflow-pool-size: 4\n     pre-warmed-pool-size: 2\n}\n\n{noformat}\n\n... any requests that need to use the \"production\" environment would draw instances from the \"subpool\" created for \"dedicated-environments.production\".  If the \"dedicated-environments.production\" subpool were empty at the point the request were made, the request would block until an instance is returned to the \"dedicated-environments.production\" pool - and would not draw from the subpool created for overflow/fallback.  Likewise, if a request were made for the \"dev\" environment - which is not one of the configured \"dedicated-environments\" - the request would only draw instances from the overflow/fallback \"subpool\".\n\nI think the names you mentioned - {{fallback-pool-size}} or {{other-environments-pool-size}} - may be a better fit, thanks for the suggestion.  I expect we may tweak these names a bit before the implementation is complete.  We'll be working with our UX team here on the final presentation of this configuration.  /CC [~accountid:70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2] for visibility on this feedback.\n\n{quote}I'd like to see Puppet Server: Admin API: JRuby Pool to support recycling the overflow-pool too. So I can call the API after updating a overflow-pool environment.{quote}\n\nTo keep the comments organized, I think it would be best to discuss the feature to provide more surgical JRuby pool flushing on SERVER-1705.  I'll copy your previous comment over to that ticket and respond there.\n\nThanks again for the feedback!", "created": "2017-01-10T09:57:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I would like to propose that the {{production}} environment get its own {{dedicated-environment}} by default.\n\nI also think that the 'globbing' proposed by [~accountid:557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53] is a good idea.\n\nIt might be worth taking a look at how Passenger solved this issue as well and drag that into the discussion thread for analysis.", "created": "2018-02-06T18:08:00.000000"}], "components": [], "created": "2016-12-19T16:31:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b8241ba"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Isolate 1 environment per JRuby"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbpb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_164570331284_*|*_6_*:*_1_*:*_0"}], "description": "This \"sub-epic\" is an offshoot from one of the comments on SERVER-94, from here: https://puppet.atlassian.net/browse/SERVER-94?focusedCommentId=329083&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-329083.  Text below is copied pretty liberally from that comment:\n\nThis \"sub-epic\" would expand our JRuby pooling to allow a user to configure a pooling \"strategy\".  The default strategy would, for some period of time, continue to be the current \"single-pool\" strategy under which the same JRuby instance can be exercised by multiple environments.\n\nThis \"sub-epic\" would introduce a new manual/explicit pooling \"strategy\".  In this approach, the user would be responsible for setting up their configuration to list what the most common (and performance-sensitive) environments were, and tell us how many JRubies to keep around dedicated to those environments. Then, there'd be a sort of 'overflow' pool for uncommonly used environments. The user could also configure the size of this pool. Whenever we got an agent request from an environment that isn't on the 'dedicated' list, we'd use this overflow pool, which we'll flush instances out of using an LRU strategy.  We can keep a couple of JRubies warm to make the process of cycling things in and out of this overflow pool faster.\n\nThe config might look something like this (credit to [~accountid:557058:1fdc76f4-b360-4f3a-a4b5-990542a56609] as this was his idea, probably like 3 years ago now):\n\n{noformat}\n{\n  jruby-puppet:\n    {pooling-strategy: configured-environments\n     dedicated-environments: {\n        production: {pool-size: 4}\n        test: {pool-size: 4}\n        staging: {pool-size: 4}\n     }\n     overflow-pool-size: 4\n     pre-warmed-pool-size: 2\n}\n{noformat}\n\nThe upside of this approach is that the implementation should be fairly simple and easy to debug, and the configurability should be sufficient for tuning for most users needs.  The downside is that it will require some knowledge and configuration on the part of the user.  But, since it should be faster to get out the door, and should serve as a valuable stepping stone towards any other strategies we want to implement.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17419", "fixedVersions": [], "id": "17419", "issueType": "Epic", "key": "SERVER-1697", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Manual configuration of per-environment pools for isolation", "timeSpent": "PT0S", "updated": "2022-03-08T10:30:00.000000", "votes": "6", "watchers": []}, {"affectedVersions": [], "assignee": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "attachments": [], "comments": [{"author": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "body": "/cc [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]", "created": "2016-12-16T17:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:70121:ef2e2611-7893-499f-94ad-b7b2245beace].\n\nTo make it a bit more consistent with the environment_classes endpoint, which I think is good to do since it's one of the more recently implemented endpoints, we might do something like:\n\n{noformat}\nGET /puppet/v3/environment_modules?environment=someenv\nContent-Type: application/json\n\n{\n    \"modules\": [\n      {\n        \"name\": \"module_a\",\n        \"version\": \"0.1.0\", \n        ... maybe some other interesting metadata ...\n      },\n      {\n        \"name\": \"module_b\",\n        \"version\": \"0.2.0\",\n        ...\n      }\n    ],\n    \"name\": \"someenv\",\n}\n{noformat}\n\nProbably best to have access to it be denied by default like we did with {{environment_classes}} (and {{resource_types}} before that) since it could have info that some users might consider sensitive.  (We only created an allow rule for it in PE for the classifier to access).\n\n/CC [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] for any style points on RESTful design that he might want to chime in with here.", "created": "2016-12-16T17:32:00.000000"}, {"author": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - that makes sense to me!", "created": "2016-12-16T18:05:00.000000"}, {"author": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] hey! I'm not totally ready yet to make a PR, but I figured I would push up my changes from the past two days since I'm at a decent point. Here is my branch\n\nhttps://github.com/briancain/puppet-server/commit/6754477364a06fea0cddb103f78905e18579344a\n\nAt the moment, the code works like this:\n\n{noformat}\nbrian@localhorse:puppet-server % curl -k https://localhost:8140/puppet/v3/environment_modules\\?environment\\=production | python -m json.tool\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   166  100   166    0     0    993      0 --:--:-- --:--:-- --:--:--  1000\n{\n    \"modules\": [\n        {\n            \"forge_name\": \"puppetlabs/ntp\",\n            \"name\": \"ntp\",\n            \"version\": \"6.0.0\"\n        },\n        {\n            \"forge_name\": \"puppetlabs/stdlib\",\n            \"name\": \"stdlib\",\n            \"version\": \"4.14.0\"\n        }\n    ],\n    \"name\": \"production\"\n}\n{noformat}\n\nI still need to write the function that wraps up and handles getting a Jruby so that the analytics service can also use this function. I probably need to do some code cleanup too (and potentially more error handling on the request side?). I'd also like to write up a docs page on the new endpoint too.", "created": "2016-12-20T17:44:00.000000"}, {"author": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "body": "Also FYI: I ended up picking both {{name}} and {{forge_name}} because I figured custom modules that aren't published to the forge might not have that metadata, so just selecting {{forge_name}} keys might end up with null?", "created": "2016-12-20T17:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Having both {{name}} and {{forge_name}} in each module entry makes sense to me.  Not sure if it's best to include {{forge_name}} if the value is null?  If we do include it in that case, not sure if it would be best to use empty string vs. null for the value.  [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9], do you know if we have a current best practice for the JSON payload for cases like this?", "created": "2016-12-22T12:32:00.000000"}, {"author": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "body": "I don't really see anything from our API style guide about null keys.... https://github.com/puppetlabs/puppet-nogui/blob/master/patterns/api_style_guide.md\n\nNot really sure which is better:\n\n# Always have the {{forge_name}} key present, with a {{null}} value\n# If {{forge_name}} is null, remove it from the JSON payload before sending off to the user\n\nBoth cases require the user to be aware of and handle the null case but I'm wondering if removing the key when null would be more confusing than just having the key report as null?", "created": "2017-01-03T16:23:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'd be fine with including the key with a {{null}} value if you want to go that way and our style guide doesn't say what we prefer.  Probably not enough of a benefit in payload size savings over the wire to bother omitting it?", "created": "2017-01-04T14:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] Ping for awareness.  This new endpoint in OSS Puppet Server is inspired by work that the analytics team is doing.  Not sure if you think they need to somehow vet this with the community at large before it becomes part of the standard API set.", "created": "2017-01-05T17:26:00.000000"}], "components": [], "created": "2016-12-16T17:18:00.000000", "creator": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13866745"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymegf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77300068_*|*_1_*:*_1_*:*_1807719390_*|*_10007_*:*_1_*:*_788220636_*|*_3_*:*_1_*:*_329094136_*|*_5_*:*_1_*:*_0"}], "description": "Puppet Server should have the ability to answer the question \"Given an environment, what puppet modules have been installed?\". Similar to the endpoint {{environment_classes}}, this new endpoint would go through the v3 endpoint and be an authorized endpoint.\n\nInternally, the MasterService should be in charge of grabbing a j-ruby thread off the pool and making the proper requests to the function that determines modules on the master. All other clojure consumers (such as the analytics service) would simply call a function from the MasterService and get back a data structure detailing the modules for a given environment and shouldn't have to concern themselves about the j-ruby implementation. That same function that calls into the module list ruby function should be what gets wrapped up as a ring request handler for HTTP consumers.\n\nFor HTTP consumers, they would make an authorized request to the v3 endpoint with a query param {{environment}} and be given back a list that details all modules and their version for the environment. The response body should be formatted so that it's flexible enough to add more module metadata in the future. It should also be careful about any ruby symbols and simply convert those to ruby strings.\n\nMuch of the work that went into implementing {{environment_classes}} can be copy/pasted and modified to implement this ticket and should be looked at. \n\n{noformat}\nGET /puppet/v3/modules_list?environment=:environment\n\n{\n \"module-name\": {\"version\": 0.1.0},\n  ...\n}\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15404", "fixedVersions": [], "id": "15404", "issueType": "Task", "key": "SERVER-1696", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "resolution": "Fixed", "resolutionDate": "2017-01-20T11:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement a function to determine installed modules given an environment and expose API endpoint", "timeSpent": "PT0S", "updated": "2018-10-29T11:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The common problem case here is a cascading failure in a large catalog which can generate some stupendously large reports. Sizes in the range of 1 or 2 GB have been observed --- this is very effective in DOSing an entire compile master pool until the problematic Puppet agents are isolated and fixed.", "created": "2016-12-16T17:13:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Might be good to just offer this as a general webserver-level feature in the trapperkeeper-webserver-jetty9 service so that we could use it across webserver components, not just Puppet Server.  For example, they have a setting for limiting the [maximum form body size|https://wiki.eclipse.org/Jetty/Howto/Configure_Form_Size] although that one appears to be specific to multipart form posts whereas we might want to have something a little more generic that works across content types.", "created": "2016-12-16T17:41:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Yeah. Although, it might be something that we'd want to enforce on a per-route basis depending on whether an API or set of APIs is buffering the entire request body into memory, processing it as a stream, or sending it right to disk.", "created": "2016-12-28T16:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] I think I see where you are coming from in terms of maybe wanting some more granularity around the level at which the limits could be applied.\n\nI still think that this should ultimately be end-user configurable since I'd hate to see a bad assumption that we'd make about the size limit be something that would require a code update to correct.  We don't really have any user-configurable per-route configuration today, though, which would seem like an appropriate place in which to specify the limits.  I'm leery of the complexity it might add for users if we were to create such a configuration. \n\nJust thinking about Puppet Server endpoints for the short term, it seems likely that the biggest benefit to this feature would be in reducing the size for catalog and report requests.  It would seem reasonable to me that a user might come up with an upper bound for the report payloads, for example, that would at least be adequate for catalog requests as well. \n\nI think that even if a restriction on size were done to mitigate memory usage in the event that the backing endpoint were going to just buffer the request payload in memory that there could still be value just in reducing network bandwidth, etc. even for the requests whose bodies may not be buffered in memory on the server.  It still also seems like a natural \"global\" feature of a webserver to be able to configure an upper bound on the request payload across endpoints.\n\nFor simplicity at this point, I'd lean toward just having a new optional setting in the webserver config, named something like {{max-request-body-size}}, which, when set, would apply across all endpoints for the server(s) in which it is set.  The default behavior, if the setting is not specified, could then be to impose no restriction on request body size (as is the case today).  If that proves not to be flexible enough, I think we could look into adding a per-route kind of configuration later on.\n\n[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] - does that sound reasonable to you?\n\n", "created": "2017-01-04T12:31:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Currently this functionality is off by default in PuppetDB, so adding it as something that a user can enable globally sounds like a reasonable first step. That would cover the most common case where we'd want to use this which is to deflect large reports caused by cascading failures so that compilers remain operational while Puppet code is fixed.", "created": "2017-01-05T09:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The new [request-body-max-size|https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/1.7.0/doc/jetty-config.md#request-body-max-size] setting was added to trapperkeeper-webserver-jetty9 in version 1.7.0 and made available for use in OSS puppetserver in [724515d|https://github.com/puppetlabs/puppetserver/commit/724515db59edd5624ca4bacd9ab7c9d578ce58b0].  Moving this ticket to resolved.", "created": "2017-02-06T09:20:00.000000"}], "components": [], "created": "2016-12-16T17:11:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ae81e4a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymdfj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1554294672_*|*_10007_*:*_1_*:*_2239785038_*|*_3_*:*_1_*:*_147613529_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_522852618"}], "description": "Puppet agents can submit large datasets during API requests. When the Puppet Server buffers enough of these into memory, it can end up running out of resources. An option similar to PuppetDB's {{reject-large-commands}} setting would allow the Puppet Server to remain operational by refusing to accept large API submissions and also increases the visibility of problematic agents.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15141", "fixedVersions": [], "id": "15141", "issueType": "New Feature", "key": "SERVER-1695", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Done", "resolutionDate": "2017-02-06T09:20:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add ability to reject API submissions that would lead to memory exhaustion", "timeSpent": "PT0S", "updated": "2017-02-06T09:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-12-13T15:05:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b2788ef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Reduce cost of support escalations"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbp3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_36380849033_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14781", "fixedVersions": [], "id": "14781", "issueType": "Epic", "key": "SERVER-1694", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2018-02-07T16:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Metrics, debugging tools, etc., to reduce frequency and cost of support escalations", "timeSpent": "PT0S", "updated": "2018-02-07T16:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-12-07T13:25:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47edf828"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1237"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymh87:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24390_*|*_3_*:*_1_*:*_599230225_*|*_5_*:*_1_*:*_0"}], "description": "Ticket to track time spent putting together and delivering training to the CS group for the ezbake/reload functionality.", "epicLinkSummary": "HUP service / ezbake integration", "estimate": "PT0S", "externalId": "15140", "fixedVersions": [], "id": "15140", "issueType": "Task", "key": "SERVER-1691", "labels": [], "originalEstimate": "PT0S", "parent": "16403", "parentSummary": "HUP service / ezbake integration", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-12-14T11:52:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support training on ezbake/reload", "timeSpent": "PT0S", "updated": "2016-12-14T11:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [54ec8ff|https://github.com/puppetlabs/puppetserver/commit/54ec8ffa889cc68a799472a3a43fe3ee15cc2a6e].\n\nTests all passing through the full Jenkins pipeline: https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/51/.\n\nLoaded puppetserver 2.7.2.master.SNAPSHOT.2016.12.08T1059 on a CentOS 7 VM and re-ran the test scenario from the description.  Note that the error message is more informative with this change, even if still not the most user-friendly as is the case with Prismatic schema-derived messages in general:\n\n{noformat}\n[root@cn8h8nbrs08ubrn ~]# puppetserver gem env\nException in thread \"main\" clojure.lang.ExceptionInfo: Output of initialize-puppet-config does not match schema: {:master-conf-dir (not (instance? java.lang.String 0))}...\n{noformat}\n\n", "created": "2016-12-08T17:35:00.000000"}], "components": [], "created": "2016-12-05T09:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f6b974b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzajiv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When puppetserver CLI commands were invoked they did not account for errors raised when loading and validating the puppetserver config. Because of this if an invalid configuration was present and a CLI subcommand was run, the subcommand would crash with an unhelpful error message unrelated to the actual config validation failure. This has been fixed so that errors with an unexpected format, such as errors generated while validating the config, are propagated up the stack without modification."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_493935_*|*_10007_*:*_1_*:*_287434826_*|*_5_*:*_1_*:*_17433791476_*|*_6_*:*_1_*:*_0"}], "description": "When one of the CLI subcommands is run and a puppetserver config file which has content that violates a schema is parsed, the resulting failure shown on the command line does not give any indication of what the real error is.\n\nFor example, I ran the following steps in Puppet Server at the 2.7.1 tag, from source:\n\n1) Set the following bogus variable value in the {{./dev/puppetserver.conf}} file:\n\n{noformat}\njruby-puppet: {\n  ...\n  master-conf-dir: 0\n  ...\n}\n{noformat}\n\n2) Ran the gem subcommand as follows:\n\n{noformat}\nlein gem env\n{noformat}\n\n*Expected Result:*\n\nAn error message indicating something about the corrupt {{master-conf-dir}} variable value.\n\n*Actual Result:*\n\n{noformat}\nException in thread \"main\" java.lang.AssertionError: Assert failed: (keyword? kw), compiling:(/private/var/folders/y5/24bhmms53nv2b4g8gyq6tl340000gn/T/form-init6633389292647995039.clj:1:125)\n\tat clojure.lang.Compiler.load(Compiler.java:7391)\n\tat clojure.lang.Compiler.loadFile(Compiler.java:7317)\n\tat clojure.main$load_script.invokeStatic(main.clj:275)\n\tat clojure.main$init_opt.invokeStatic(main.clj:277)\n\tat clojure.main$init_opt.invoke(main.clj:277)\n\tat clojure.main$initialize.invokeStatic(main.clj:308)\n\tat clojure.main$null_opt.invokeStatic(main.clj:342)\n\tat clojure.main$null_opt.invoke(main.clj:339)\n\tat clojure.main$main.invokeStatic(main.clj:421)\n\tat clojure.main$main.doInvoke(main.clj:384)\n\tat clojure.lang.RestFn.invoke(RestFn.java:421)\n\tat clojure.lang.Var.invoke(Var.java:383)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:156)\n\tat clojure.lang.Var.applyTo(Var.java:700)\n\tat clojure.main.main(main.java:37)\nCaused by: java.lang.AssertionError: Assert failed: (keyword? kw)\n\tat puppetlabs.kitchensink.core$without_ns.invokeStatic(core.clj:572)\n\tat puppetlabs.kitchensink.core$without_ns.invoke(core.clj:572)\n\tat puppetlabs.puppetserver.cli.subcommand$run.invokeStatic(subcommand.clj:40)\n\tat puppetlabs.puppetserver.cli.subcommand$run.invoke(subcommand.clj:26)\n\tat puppetlabs.puppetserver.cli.gem$_main.invokeStatic(gem.clj:13)\n\tat puppetlabs.puppetserver.cli.gem$_main.doInvoke(gem.clj:11)\n\tat clojure.lang.RestFn.invoke(RestFn.java:457)\n\tat clojure.lang.Var.invoke(Var.java:394)\n\tat user$eval5.invokeStatic(form-init6633389292647995039.clj:1)\n\tat user$eval5.invoke(form-init6633389292647995039.clj:1)\n\tat clojure.lang.Compiler.eval(Compiler.java:6927)\n\tat clojure.lang.Compiler.eval(Compiler.java:6917)\n\tat clojure.lang.Compiler.load(Compiler.java:7379)\n\t... 14 more\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16500", "fixedVersions": ["SERVER 5.0.0"], "id": "16500", "issueType": "Bug", "key": "SERVER-1690", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-08T17:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CLI subcommands produce confusing failures when puppetserver config corrupted", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:70121:9c658341-861b-467e-8f57-dfcff20944cb] For the meep classisifcation work in Flanders, we don't have plans to use certificate extensions to classify hosts.  Beyond that I don't know.", "created": "2016-12-02T09:36:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:70121:9c658341-861b-467e-8f57-dfcff20944cb] do you have any thoughts on this?", "created": "2018-02-20T11:12:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "I hit this today and spent a *very* long time before I figured out I had to use oids.\u00a0 At the very least, could\u00a0[https://puppet.com/docs/puppetserver/latest/config_file_auth.html]\u00a0be updated?\n\n[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69]\u00a0- Apparently, I should ping you about this issue.\u00a0 Sorry! :)", "created": "2020-08-07T11:50:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We can work on getting a note added to the docs as a stop gap. I think it's pretty unlikely we'll fix this any time soon.\n\nDocs update: https://github.com/puppetlabs/puppetserver/pull/2385", "created": "2020-08-07T14:28:00.000000"}], "components": [], "created": "2016-11-30T11:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b19c0f5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzag3b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_539460544_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_165692286305"}], "description": "When the standard CA service is enabled in Puppet Server, any authorization (auth.conf) rules which utilize short names within an extension in a rule are honored.  If the \"disabled\" or \"reverse proxy\" CA service is configured in place of the \"enabled\" one, however, auth.conf rules using extensions with short names no longer match properly.\n\nSteps to Reproduce:\n\n1) Starting from a stock installation of Puppet Server, store a csr_attributes.yaml file in the {{/etc/puppetlabs/puppet}} directory which has this content:\n\n{noformat}\n---\nextension_requests:\n  pp_uuid: ED803750-E3C7-44F5-BB08-41A04433FE2E\n{noformat}\n\n2) Change the rules in the {{/etc/puppetlabs/puppetserver/conf.d/auth.conf}} to only grant access to endpoints if the \"pp_uuid\" extension from the csr_attributes.yaml file above is in the client certificate:\n\n{noformat}\nauthorization: {\n    version: 1\n    rules: [\n        {\n            match-request: {\n                path: \"/\"\n                type: \"path\"\n            }\n            allow: {\n                extensions: {\n                  pp_uuid: ED803750-E3C7-44F5-BB08-41A04433FE2E\n                }\n             }\n         }\n    ]\n}\n{noformat}\n\n3) Change the \"certname\" for the agent and server to \"localhost\", for convenience, by including the following in a {{/etc/puppetlabs/puppet/puppet.conf}} file:\n\n{noformat}\n[main]\ncertname = localhost\n{noformat}\n\n3) Nuke the {{/etc/puppetlabs/puppet/ssl}} directory and restart Puppet Server.\n\nThis should regenerate a server certificate with CN of \"localhost\", containing the \"pp_uuid\" extension.\n\n4) Use curl to make a request to the node endpoint using the \"localhost\" certificate:\n\n{noformat}\ncurl -k \"https://localhost:8140/puppet/v3/node/localhost?environment=production\" --key /etc/puppetlabs/puppet/ssl/private_keys/localhost.pem --cert /etc/puppetlabs/puppet/ssl/certs/localhost.pem\n{noformat}\n\nThe request should be successful, returning a 200 OK response and content like:\n\n{noformat}\n{\"name\":\"localhost\",\"environment\":\"production\"...\n{noformat}\n\n5) In the {{/etc/puppetlabs/puppetserver/services.d/ca.cfg}} file, configure the \"disabled\" CA service by setting the following content:\n\n{noformat}\n# To enable the CA service, leave the following line uncommented\n#puppetlabs.services.ca.certificate-authority-service/certificate-authority-service\n# To disable the CA service, comment out the above line and uncomment the line below\npuppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service\n{noformat}\n\n6) Restart puppetserver.\n\n7) Perform the same curl request for the \"node\" endpoint as above.\n\nExpected Result:\n\nThe request is successful as before, with a 200 (OK) HTTP status code and a JSON payload containing node information.\n\nActual Result:\n\nThe request fails with an 403 (Forbidden) HTTP status code and a \"Forbidden request: ...\" response body.\n\n---\n\nI think the problem here is that the 'normal' CA service [includes the logic|https://github.com/puppetlabs/puppetserver/blob/2.7.1/src/clj/puppetlabs/services/ca/certificate_authority_service.clj#L22-L23] to register the OID mappings whereas the [disabled|https://github.com/puppetlabs/puppetserver/blob/2.7.1/src/clj/puppetlabs/services/ca/certificate_authority_disabled_service.clj#L25-L27] and ['reverse proxy'|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/2017.1.0.0/src/clj/puppetlabs/enterprise/services/reverse_proxy/reverse_proxy_ca_service.clj#L39-L41] CA services do not.\n\nWe should probably move the logic from the 'normal' CA service to create the auth handler with oid mappings into a common service in the Puppet Server stack which effectively cannot be disabled, like the Puppet Server Config service, since it is a common dependency for the Master, normal CA, and reverse-proxy CA services.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14779", "fixedVersions": [], "id": "14779", "issueType": "Bug", "key": "SERVER-1689", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2022-03-08T10:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Short names in auth.conf rules not honored when non-CA service in use", "timeSpent": "PT0S", "updated": "2022-03-08T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\nThis appears to be a result one of your recent PRs that changes  gem-home value to an array.  ", "created": "2016-11-29T14:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:8872d0b6-d198-4e25-92ad-02776be82d59] Do you know what version of the hocon gem is being installed when you do your beaker runs?  You'll need at least version [1.1.3|https://github.com/puppetlabs/ruby-hocon/blob/master/CHANGELOG.md#113] in order to pick up a fix in it related to the variable substitutions that we're now doing in Puppet Server configuration files.  I think later versions of beaker pick up the later hocon gem versions automatically.  Not sure if you are pinning the hocon version in the Gemfile for your tests or something?", "created": "2016-11-29T14:46:00.000000"}, {"author": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "body": "In this debugger session, I stopped at the point where beaker/dsl/helpers/tk_helpers.rb::modify_tk_config() tries to read and interpret puppetserver.conf.  This step works after changing the line in that config file to what it was before the fix for SERVER-1412.\n\n{code}\n\nValidate Sign Cert\n\n* Ensure puppet is stopped\n\n* Clear SSL on all hosts\n\n* Master: Start Puppet Master\n\nFrom: /Library/Ruby/Gems/2.0.0/gems/beaker-2.40.0/lib/beaker/dsl/helpers/tk_helpers.rb @ line 50 Beaker::DSL::Helpers::TKHelpers#modify_tk_config:\n\n    45:\n    46:             begin\n    47:\n    48: binding.pry\n    49:\n => 50:               tk_conf_hash = read_tk_config_string(file_string)\n    51:             rescue RuntimeError\n    52:               raise \"Error reading trapperkeeper config: #{config_file_path} at host: #{host}\"\n    53:             end\n    54:\n    55:             new_hash.merge!(tk_conf_hash)\n\nh=read_tk_config_string(file_string)\nRuntimeError: Failed to read TrapperKeeper config!\nfrom /Library/Ruby/Gems/2.0.0/gems/beaker-2.40.0/lib/beaker/dsl/helpers/tk_helpers.rb:89:in `read_tk_config_string'\n\nmaster.hostname\n=> \"j244u6kovd43qd3.delivery.puppetlabs.net\"\n.ssh root@j244u6kovd43qd3\nThe authenticity of host 'j244u6kovd43qd3 (10.32.124.223)' can't be established.\nECDSA key fingerprint is SHA256:PSu24AR8HH75ne50aW4VocgT1TuKPZIHndEtnZvmabs.\nAre you sure you want to continue connecting (yes/no)? yes\nWarning: Permanently added 'j244u6kovd43qd3,10.32.124.223' (ECDSA) to the list of known hosts.\nX11 forwarding request failed on channel 0\nLast login: Fri Dec  4 12:55:37 2015 from 10.32.128.239\n[root@j244u6kovd43qd3 ~]# grep gem-path /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf\n    gem-path: [${jruby-puppet.gem-home}, \"/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems\"]\n[root@j244u6kovd43qd3 ~]#\n[root@j244u6kovd43qd3 ~]# vi /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf\n[root@j244u6kovd43qd3 ~]# grep gem-path /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf\n#    gem-path: [${jruby-puppet.gem-home}, \"/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems\"]\n    gem-path: \"/opt/puppetlabs/server/data/puppetserver/jruby-gems:/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems\"\n\n[root@j244u6kovd43qd3 ~]# exit\nlogout\nConnection to j244u6kovd43qd3 closed.\nwhereami\n\nFrom: /Library/Ruby/Gems/2.0.0/gems/beaker-2.40.0/lib/beaker/dsl/helpers/tk_helpers.rb @ line 50 Beaker::DSL::Helpers::TKHelpers#modify_tk_config:\n\n    45:\n    46:             begin\n    47:\n    48: binding.pry\n    49:\n => 50:               tk_conf_hash = read_tk_config_string(file_string)\n    51:             rescue RuntimeError\n    52:               raise \"Error reading trapperkeeper config: #{config_file_path} at host: #{host}\"\n    53:             end\n    54:\n    55:             new_hash.merge!(tk_conf_hash)\n\nfile_string = host.exec( Command.new( \"cat #{config_file_path}\" )).stdout\nh  = read_tk_config_string(file_string)\n=> {\"jruby-puppet\"=>\n  {\"ruby-load-path\"=>[\"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby\"],\n   \"gem-home\"=>\"/opt/puppetlabs/server/data/puppetserver/jruby-gems\",\n   \"gem-path\"=>\n    \"/opt/puppetlabs/server/data/puppetserver/jruby-gems:/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems\",\n   \"master-conf-dir\"=>\"/etc/puppetlabs/puppet\",\n   \"master-code-dir\"=>\"/etc/puppetlabs/code\",\n   \"master-var-dir\"=>\"/opt/puppetlabs/server/data/puppetserver\",\n   \"master-run-dir\"=>\"/var/run/puppetlabs/puppetserver\",\n   \"master-log-dir\"=>\"/var/log/puppetlabs/puppetserver\"},\n \"http-client\"=>{},\n \"profiler\"=>{}}\n{code}", "created": "2016-11-29T14:54:00.000000"}, {"author": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "body": "[~accountid:62438584f813eb006928dc81]\nAha!\nRunning 0.9.3, comes with beaker 2.40.\n\n", "created": "2016-11-29T14:57:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "According to [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], fixed with the new version of the hocon gem.", "created": "2016-11-29T17:16:00.000000"}], "components": [], "created": "2016-11-29T14:33:00.000000", "creator": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24a8379c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaf1r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9790424_*|*_6_*:*_1_*:*_0"}], "description": "After Beaker provisions the test hosts, and puppetmaster is started, modify_tk_config fails.\n\n{code}  RuntimeError: Error reading trapperkeeper config: /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf at host: fh034jxl6yeqbv4.delivery.puppetlabs.net\n  /Users/sgriffin/09-notes/95-161123-puppet-acceptance-testing/01-161123/puppet/acceptance/setup/common/pre-suite/040_ValidateSignCert.rb:6\n  /Library/Ruby/Gems/2.0.0/gems/beaker-2.40.0/bin/beaker:6\n{code}\n\nThe problem seems to be in /etc/puppetlabs/puppetserer/conf.d/puppetserver.conf, line 14,\nhttps://github.com/puppetlabs/puppetserver/blob/master/resources/ext/config/conf.d/puppetserver.conf#L14\n\nwhich was change recently as part of a PR for SERVER-1412.\n\nBy reversing the recent changes to that line the install completes without error.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15403", "fixedVersions": [], "id": "15403", "issueType": "Bug", "key": "SERVER-1688", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "resolution": "Fixed", "resolutionDate": "2016-11-29T17:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Beaker puppetserver install fails because of hocon failure reading puppetserver.conf", "timeSpent": "PT0S", "updated": "2016-11-29T17:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2016-11-29T11:50:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@690de1e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaevr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2291_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_627047106"}], "description": "(Initial planned release date: 2016-12-06)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.7.2%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16820", "fixedVersions": [], "id": "16820", "issueType": "Sub-task", "key": "SERVER-1687", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T18:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2016-11-29T11:50:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4aa36050"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaevj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3937_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_626958168"}], "description": "(Initial planned release date: 2016-12-06)\n\nUpdate dujour to notify users to use 2.7.2.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16499", "fixedVersions": [], "id": "16499", "issueType": "Sub-task", "key": "SERVER-1686", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T17:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.7.2 (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:5f581819110ce00069f59a2a], I assume that you will not be bothering with the release notes for 2.7.2 since it's a Z (some of our docs on doing releases say that Prod's not usually interested in Zs). Wanted to give you a heads up, we're hoping to release tomorrow if that's kosher. The list of features (copied from the docs ticket) is:\n* Packaging: SERVER-1670 - dependencies have been reduced and the erroneous dependency on system ruby has been removed (<--- impetus for this release).\n* Packaging: EZ-102 - we now install systemd service files for Debian Jessie\n* Packaging: EZ-102 - we now install SysV service files along side systemd service files for debian-based systems so customers may choose the service provider after install\n* Packaging: SERVER-1593 - update vendored gettext-setup gem (required for future i18n Ruby-based work)\n* Testing: SERVER-1629 - update tests to use HUP in utility code.", "created": "2016-12-05T12:21:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Sounds good to me [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] - fire at will.", "created": "2016-12-05T12:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Draft here: https://groups.google.com/a/puppet.com/d/msg/puppet-server-staff-archive/9faTcme8vDM/eDEHr58TCgAJ", "created": "2016-12-06T10:42:00.000000"}], "components": [], "created": "2016-11-29T11:50:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61e2619b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaevb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2333_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_626592693"}], "description": "(Initial planned release date: 2016-12-06)\n\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16242", "fixedVersions": [], "id": "16242", "issueType": "Sub-task", "key": "SERVER-1685", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T17:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2016-11-29T11:50:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2956089b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaev3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2401_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_626484768"}], "description": "(Initial planned release date: 2016-12-06)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15981", "fixedVersions": [], "id": "15981", "issueType": "Sub-task", "key": "SERVER-1684", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T17:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2016-12-06T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ca7c244"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaeuv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2598_*|*_3_*:*_1_*:*_4791822_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_617706037"}], "description": "(Initial planned release date: 2016-12-06)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15667", "fixedVersions": [], "id": "15667", "issueType": "Sub-task", "key": "SERVER-1683", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T16:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2016-12-06T16:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78fd56bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaeun:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2238_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_617705198"}], "description": "(Initial planned release date: 2016-12-06)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15402", "fixedVersions": [], "id": "15402", "issueType": "Sub-task", "key": "SERVER-1682", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T15:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2016-12-06T15:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5bca4a93"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaeuf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2304_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_617299759"}], "description": "(Initial planned release date: 2016-12-06)\n\nThis should happen Monday-Thursday, before noon PST. We should not be shipping anything after noon PST or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15139", "fixedVersions": [], "id": "15139", "issueType": "Sub-task", "key": "SERVER-1681", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T15:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2016-12-06T15:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Each platform has had the [foo module at 6ca856a|https://github.com/puppetlabs/puppetlabs-foo/commit/6ca856a98b097f49168439b29b442ba322dbb722] installed on it, and in {{/etc/puppetlabs/code/environments/production/manifests/site.pp}} the content:\n{code}\nnode default {\n    include foo\n    notify { \"hello\": }\n}\n{code}\n\nEach platform has had a host with a local agent installed at 2.7.1 and upgrade to 2.7.2 as well as another agent/master combo with a fresh install of 2.7.2. Each scenario expects the server to plugin sync and do a puppet run correctly. The master is then reloaded and restarted with a successful agent run between each. Expected output for a pluginsync and agent run:\n\n{code}\nroot@jmrdqf7blo61saq:/etc/puppetlabs/code/environments/production# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter]/ensure: created\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/facter/foo_fact.rb]/ensure: defined content as '{md5}7b1f45417508df04735d207cbbd4bf60'\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet]/ensure: created\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/parser]/ensure: created\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/parser/functions]/ensure: created\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/parser/functions/foo_function.rb]/ensure: defined content as '{md5}91114377fdcef7164595f3\nef851756dc'\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider]/ensure: created\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/foo_resource]/ensure: created\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/provider/foo_resource/ruby.rb]/ensure: defined content as '{md5}f3706ded160126ece55e90224\nb9874f2'\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type]/ensure: created\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/type/foo_resource.rb]/ensure: defined content as '{md5}ee7cb7deae637ee7eea3629c525199b2'\nInfo: Loading facts\nInfo: Caching catalog for jmrdqf7blo61saq.delivery.puppetlabs.net\nInfo: Applying configuration version '1481052161'\nNotice: /Stage[main]/Foo/Foo_resource[thing]/ensure: created\nNotice: Version 2 has Property 1: Manifest \"The Fact of Foo II via Foo Function\" Value and Param 1: Manifest Value\nNotice: Version 2 has Property 2: Twos a Pair and Param 2: The Deuce\nNotice: hello\nNotice: /Stage[main]/Main/Node[default]/Notify[hello]/message: defined 'message' as 'hello'\nNotice: Applied catalog in 0.02 seconds\n{code}", "created": "2016-12-06T12:37:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Smoke tested on ubuntu 16.04 Xenial.\nUpgrade tested on {{ideh02z2dfrhoc5.delivery.puppetlabs.net}} and install on {{jmrdqf7blo61saq.delivery.puppetlabs.net}}.\nAll clear so far.", "created": "2016-12-06T12:42:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Successfully smoke tested on EL 7. Upgraded on {{h46dytdoazsfrvh.delivery.puppetlabs.net}} (redhat) and installed on {{pso7kb19dcdwzfu.delivery.puppetlabs.net}} (a centos box).", "created": "2016-12-06T14:45:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Successfully smoke tested on Centos 6. Upgraded on {{ud1pc8w0cetbdu5.delivery.puppetlabs.net}} (x86_64) and installed on {{sd37luz65q4a2xn.delivery.puppetlabs.net}} (an i386 for variety).", "created": "2016-12-06T14:46:00.000000"}], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68e1db90"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaeu7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2253_*|*_3_*:*_1_*:*_14504598_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_600907202"}], "description": "(Initial planned release date: 2016-12-06)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14778", "fixedVersions": [], "id": "14778", "issueType": "Sub-task", "key": "SERVER-1680", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T14:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], heads up I'll be providing the SHA later this afternoon. Would that work for an early morning (ie enough time to smoke test by a noon go/no-go) tagged build of server, or is that pushing it?", "created": "2016-12-05T12:39:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] the only thing you need to do to get packages for smoke testing is merge a PR to remove the `-SNAPSHOT` suffix from the version defined in `project.clj`. The automation then sees that change and will build packages with the final version for you. As for timing, yes, that should be enough time. I don't know how long the puppetserver pipelines take to run, but as long as you start smoke testing this afternoon, you should be good", "created": "2016-12-05T12:44:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It doesn't look like the tag has been created by the automation? Though this is the commit https://github.com/puppetlabs/puppetserver/commit/17a09858d0feb13117d139f18a15112beaf2f608 and here are the packages to smoke test http://builds.delivery.puppetlabs.net/puppetserver/2.7.2/ ", "created": "2016-12-05T17:36:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "The tag isn't pushed out to the github repo. I'll do that manually once we're ready to ship the packages to the public", "created": "2016-12-05T17:39:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": ":thumpsup:", "created": "2016-12-05T17:59:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Packages were built via ezbake automation http://builds.puppetlabs.lan/puppetserver/2.7.2/", "created": "2016-12-06T14:21:00.000000"}], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c25355f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaetz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2240_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_613927032"}], "description": "(Initial planned release date: 2016-12-06)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17418", "fixedVersions": [], "id": "17418", "issueType": "Sub-task", "key": "SERVER-1679", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T14:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2016-12-06T14:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The commits for this release have landed and the required ticket (\"Reconcile git commits and JIRA tickets SERVER-1674) is waiting for an acceptance run to finish to resolve the last remaining ticket.\n\nThe tickets/code changes that are shipping in this release are:\n* Packaging: SERVER-1670 - dependencies have been reduced and the erroneous dependency on system ruby has been removed (<--- impetus for this release).\n* Packaging: EZ-102 - we now install systemd service files for Debian Jessie\n* Packaging: EZ-102 - we now install SysV service files along side systemd service files for debian-based systems so customers may choose the service provider after install\n* Packaging: SERVER-1593 - update vendored gettext-setup gem (required for future i18n Ruby-based work)\n* Testing: SERVER-1629 - update tests to use HUP in utility code.", "created": "2016-12-05T11:45:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e], the first bullet point is the change we discussed when I first mentioned this release to you last week. We ended up getting the next two as a side-effect of bumping our packaging utility to get the code required for the first. The last two are not user facing. Does it still seem feasible to get the docs ready for this release by sometime tomorrow. Is there anything I can help do?\n", "created": "2016-12-05T11:59:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Yep! Can do.", "created": "2016-12-05T12:19:00.000000"}], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5274fb48"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaetr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2325_*|*_10009_*:*_1_*:*_17199326_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_15284_*|*_10006_*:*_1_*:*_609285229"}], "description": "(Initial planned release date: 2016-12-06)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17137", "fixedVersions": [], "id": "17137", "issueType": "Sub-task", "key": "SERVER-1678", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T17:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2016-12-06T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Waiting for the release to actually mark as released.\n\nNot creating new version (a 2.x version exists already and we do not know if the next release will be 2.7.3 or 2.8.0).\n\nQueries:\nFixes for SERVER 2.7.2 = https://puppet.atlassian.net/issues/?filter=23707\nIntroduced in SERVER 2.7.2 = https://puppet.atlassian.net/issues/?filter=23708", "created": "2016-12-06T10:20:00.000000"}], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e2f0baf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaetj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2254_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_599487617"}], "description": "(Initial planned release date: 2016-12-06)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16819", "fixedVersions": [], "id": "16819", "issueType": "Sub-task", "key": "SERVER-1677", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T10:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is not applicable for this Z release.", "created": "2016-11-30T13:10:00.000000"}], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b73c9e4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaetb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2375_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_91254372"}], "description": "(Initial planned release date: 2016-12-06)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16498", "fixedVersions": [], "id": "16498", "issueType": "Sub-task", "key": "SERVER-1676", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2016-11-30T13:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53d6279f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaet3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_14721036_*|*_1_*:*_1_*:*_2316_*|*_10007_*:*_1_*:*_3438799_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_520835921"}], "description": "(Initial planned release date: 2016-12-06)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16241", "fixedVersions": [], "id": "16241", "issueType": "Sub-task", "key": "SERVER-1675", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-05T17:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "\n{code}\nEnter Git From Rev: 2.7.1\nEnter Git To Rev: |master| stable\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: SERVER 2.7.2\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100  2039  100  1930  100   109   2928    165 --:--:-- --:--:-- --:--:--  2933\n** DOCS\n    4876d5f   s/gem/ruby\n    15d7d2a   Link to subcommands docs.\n    1404668   Add 2.7.1 notes, note JAVA_ARGS_CLI in docs.\n** MAINT\n    2e7fbe4   Update puppet submodule to 4.8.1\n    605d838   Update puppet version\n    4ee408b   Pin tests to puppet-agent 1.8.1\n    bdf967e   Bump version to 2.7.2-stable-SNAPSHOT for dev\n-- SERVER-1593 (Resolved)\n    1dd2f73   Update gettext-setup gem to 0.8\n-- SERVER-1629 (Resolved)\n    9921dc5   Bump beaker pin to 3.5.0\n-- SERVER-1670 (Resolved)\n    4652b01   Bump lein-ezbake to fix dependency issues\n---\nALL COMMIT TOKENS WERE FOUND IN JIRA\nALL ISSUES WERE FOUND IN GIT\n{code}", "created": "2016-12-05T13:26:00.000000"}], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78dfdcbb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaesv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2242_*|*_3_*:*_1_*:*_6561378_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_517694427"}], "description": "(Initial planned release date: 2016-12-06)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15979", "fixedVersions": [], "id": "15979", "issueType": "Sub-task", "key": "SERVER-1674", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-05T13:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We need acceptance tests across all of our platforms. The change for this release includes an RPM dependency change and a change to service scripts on the newest Debs.", "created": "2016-11-30T13:12:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "There is no necessary agent bump and everything has passed CI as of https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_smoke-stable/66/", "created": "2016-12-05T13:17:00.000000"}], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@501bf5ef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzaesn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2875547_*|*_1_*:*_1_*:*_2333_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_520840342"}], "description": "(Initial planned release date: 2016-12-06)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.7.2%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14776", "fixedVersions": [], "id": "14776", "issueType": "Sub-task", "key": "SERVER-1673", "labels": [], "originalEstimate": "PT0S", "parent": "17135", "parentSummary": "puppetserver 2.7.2 2016-12-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-05T13:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.7.2)", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [], "components": [], "created": "2016-11-29T11:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66dff8e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymjmv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2261_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_627138458"}], "description": "puppetserver 2.7.2 2016-12-06 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17135", "fixedVersions": [], "id": "17135", "issueType": "Task", "key": "SERVER-1672", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-06T18:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.7.2 2016-12-06 Release", "timeSpent": "PT0S", "updated": "2016-12-06T18:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "It does sound like this would be a consequence of the work done in SERVER-1571.  The [code that launches the process|https://github.com/puppetlabs/puppetserver/blob/master/src/java/com/puppetlabs/puppetserver/ShellUtils.java#L76-L98] uses the same stream object for both stdout and stderr.  There is a conditional which attempts to only output data to the log if data was sent through stderr.  Because the streams have been combined together, though, data sent either to stdout or stderr would cause the message to be logged.\n\nThe problem would only happen in the case that the caller from Ruby code were using the {{Puppet::Util::Execution}} class and either not setting the {{:combine}} option - which specifies whether the stream output should be combined or not - or setting it to true.  The code for the generate() function doesn't set the {{:combine}} option and so it gets the [default behavior|https://github.com/puppetlabs/puppet/blob/4.8.1/lib/puppet/util/execution.rb#L151] of having the streams combined.\n\nI honestly don't know why the default behavior of the generate() function is to combine data from both streams but this has been the behavior for multiple major releases now, so it seems that we should continue with that.  If it is desirable to have more control over that, might be worth filing a separate enhancement request to make this configurable with a future version of the generate() function.\n\nNot sure exactly what the best way forward on this ticket is.  For cases where streams are not being combined, I think the logic to log the content from stderr when not empty still makes sense.  Seems like we should do something different for the cases where streams are being combined, though - like for the generate() function.  Some options:\n\n1) Just change the log message to indicate that content could come from either stream, e.g., \"Executed an external process which logged to STDOUT and/or STDERR\".\n\nThis would be simple to do but would still have the disadvantage of having a message logged when data went to stdout and not stderr, which may not be desirable.\n\n2) Same as 1 but maybe drop the log level from \"warn\" to \"debug\".\n\nHaving the log level at \"debug\" could reduce the frequency at which the messages are written.  Having to bump the log level up in the case that silent errors are happening might be inconvenient though.\n\n3) Only log the message at warn level if the exit code is non-zero, else log at debug level.\n\nThis might reduce the frequency at which messages are logged - assuming many of the 'normal' cases involve a command returning a success (0) exit code and only data from stdout.  This would miss any data being written to stderr in any cases which fall outside of these though, so this might not be a good option either.\n\n4) Continue combining stream output when the {{:combine}} option is set like was done as a result of the work in SERVER-1571 but figure out a way to only log the warn message when data is written to stderr specifically (not just stdout or stderr).\n\nThis seems like the most ideal option but would probably be the most complex to implement as well.  Maybe we could do that by layering the stream that we pass as the stderr stream with a custom object that just sets a flag that we can query back onto to see if any data was written through that custom object on down to the combined stderr/stdout stream it is wrapping?\n\n---\n\nI'd probably opt for looking into option 4 but fall back to one of the simpler options like 1 or 2 as a shorter-term fix if that starts to look too involved.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - WDYT about this one?", "created": "2016-11-29T11:06:00.000000"}, {"author": "623a4b06ee1b5a0070286612", "body": "I made another ticket for a feature suggestion for Puppet to optionally fail (if a new flag is set or in a new variant of generate()) if there is any output in stderr ( https://puppet.atlassian.net/browse/PUP-6949 ). This would be easy to implement if you went with option 4 as well and would make some use cases of generate() more reliable (those where something will break when encountering the stderr output in e.g. a generated config file).", "created": "2016-11-30T02:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] your assessment seems accurate.  I presume we've confirmed that in the old stack (webrick/passenger) that this warning is not logged?\n\nOn the surface, option 4 sounds doable, and I agree it'd be the best thing to look into.  Might also take a peek at the old ruby execution code and see how it was handling this.", "created": "2016-12-06T11:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}I presume we've confirmed that in the old stack (webrick/passenger) that this warning is not logged?{quote}\n\nI ran a test with the generate() function on a WEBrick master running Puppet 4.8.1.  Neither stdout nor stderr produced by the script that the generate() function executed was written into the log.  To be backward compatible with the webrick/passenger stack, then, it would seem that we could just avoid writing stderr to the log at all.  If we were to make that change in the ShellUtils code, however, this would affect pretty much every case in which Puppet Server might spawn an executable, including:\n\n* The {{versioned-code-service}} - used for computing code-ids and getting code content as part of the [static catalogs|https://docs.puppet.com/puppet/latest/static_catalogs.html#configuring-codeid-and-the-staticfilecontent-endpoint] feature.\n* [Custom policy executables for autosigning|https://docs.puppet.com/puppet/latest/ssl_autosign.html#custom-policy-executables] in the Certificate Authority service \n* Any Ruby Puppet extension which uses the {{Puppet::Util::Execution}} module - including the generate() parser function mentioned in this ticket.\n\nI definitely agree with the description in this ticket that we should avoid having Puppet Server log any stdout from spawned executables, as was the case before SERVER-1571 was done.  I still see utility for troubleshooting in having stderr from spawned commands be logged at \"warn\" level although some may argue that even having stderr data written the log might pose a security risk in some scenarios (depending upon what data is being written).  It would possible to control whether or not the logging is done even for stderr by introducing a new configuration option in Puppet Server but it's not clear to me that that would be necessary.\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:63d40628f6e1b543161789a7] - would appreciate your thoughts on the stderr logging question.\n\n", "created": "2016-12-21T10:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "To suppress these messages from the log in the interim, one could add a line to the {{/etc/puppetlabs/puppetserver/logback.xml}} file which turns logging off for messages in the {{ShellUtils}} namespace:\n\n{code:xml}\n<configuration scan=\"true\">\n  ...\n  <logger name=\"org.apache.http\" level=\"INFO\"/>\n  <logger name=\"com.puppetlabs.puppetserver.ShellUtils\" level=\"ERROR\"/>\n\n  <root level=\"info\">\n\n  ...\n</configuration>\n{code}\n\nThis would ensure that only {{ERROR}}-level messages from the {{ShellUtils}} namespace - not including the {{WARN}}-level at which the shell output is logged - end up in the log.  Note that this workaround would suppress both STDOUT and STDERR that the spawned process may produce so this may not be desirable for those who still want to see the STDERR output appear in the log.", "created": "2016-12-22T08:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to master at [ad0c56|https://github.com/puppetlabs/puppetserver/commit/ad0c56b3cdac4b00e4ec3121358bf9c677e32aa1].  Pipeline is still green so I'm going to mark this resolved.", "created": "2017-01-17T17:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For posterity, the change we went with for this ticket was to preserve the work from SERVER-1571 where stdout and stderr produced by the executable spawned by generate is still merged together but that only data written to stderr (and not data written to stdout) would be logged in the puppetserver log file.  In the event that no data is written to stderr, no extra log message is written for the generate command.", "created": "2017-01-17T17:28:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-29T02:00:00.000000", "creator": "623a4b06ee1b5a0070286612", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34afeec7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymein:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "SERVER-1571 updated the generate() function to merge stdout and stderr and return the combined value, but this change had an unintended side effect of logging both stdout and stderr to the puppetserver log file. This has been fixed to preserve the behavior of returning both stderr and stdout from the generate() function call but only logging stderr to puppetserver.log. If a command invoked through generate() does not write to stderr then no log will be generated."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_658105217_*|*_10007_*:*_1_*:*_695438395_*|*_3_*:*_1_*:*_12379816_*|*_5_*:*_1_*:*_13978238557_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2923394856"}], "description": "It seems recent versions of Puppetserver log all stdout and stderr output in lines with\n\n{noformat}\n [c.p.p.ShellUtils] Executed an external process which logged to STDERR:\n{noformat}\n\ninstead of just doing so for generate() calls that actually produce output on stderr.\n\nMy guess would be that this is related to SERVER-1571 where stdout and stderr seem to be merged now in generate calls (not quite sure what the use case is for having error messages or warnings mixed into your output).\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14773", "fixedVersions": ["SERVER 2.8.0", "SERVER 5.0.0"], "id": "14773", "issueType": "Bug", "key": "SERVER-1671", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4b06ee1b5a0070286612", "resolution": "Fixed", "resolutionDate": "2017-01-17T17:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "generate() stdout is written to puppetserver.log", "timeSpent": "PT0S", "updated": "2017-08-28T12:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03] we shouldn't have a dependency on the system ruby - this sounds like a bug.  We will investigate and possibly try to schedule a quick bugfix release.", "created": "2016-11-28T13:10:00.000000"}, {"author": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "body": "I can't even figure out where the .spec file with requires is being generated.", "created": "2016-11-28T13:14:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03] The spec used is here (it's a template): https://github.com/puppetlabs/ezbake/blob/master/resources/puppetlabs/lein-ezbake/template/foss/ext/redhat/ezbake.spec.erb\n\nI believe the issue here is as follows: we started including gems in the puppetserver package in 2.7.0 with /usr/bin/ruby shebangs. This triggered an autorequire in the rpm during packaging because we aren't setting {{AutoReq: 0}} in the spec file.\n\nThe two obvious options are removing the shebangs (which should be fine as they are only used inside jruby and so the shebang is wrong anyway) or adding {{AutoReq: 0}} to the spec template.\n\nI prefer adding {{AutoReq: 0}} to the spec template, as it will also prevent issues like this in the future. Would also be good to get [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] or [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] to weigh in here.", "created": "2016-11-28T13:38:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "Agree with what [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] said, we should have {{ AutoReq: 0 }} in the spec. I'll put up an ezbake PR.", "created": "2016-11-28T15:09:00.000000"}, {"author": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "body": "I would agree with AutoReq: 0 based on my gems that I rpm package to install alongside puppet-agent having the same issue.", "created": "2016-11-29T09:51:00.000000"}, {"author": "70121:c4868211-1a57-40ef-b792-8b187808052e", "body": "I don't know if it's related, but after upgrade to 2.7.1 i have a lot's off errors:\n\n{quote}Execution of '/etc/puppetlabs/puppet/node.rb ...' returned 2: You need the `json` gem to use the Foreman ENC script{quote}\n\nAfter removing /usr/bin/ruby and replacing it with a symlink to /opt/puppetlabs/puppet/bin/ruby, looks like we are back on track.", "created": "2016-12-02T08:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:c4868211-1a57-40ef-b792-8b187808052e] Could be related, not sure about that.  In any event, we are going to be doing a Puppet Server 2.7.2 release soon in which the {{/usr/bin/ruby}} dependency will be eliminated as a package dependency for puppetserver.  We'll be eliminating that dependency via disabiing autorequire at package build time as mentioned in earlier comments on this ticket.  If you continue to see this problem after upgrading to the Puppet Server 2.7.2 release, please let us know / maybe file a new ticket.  Thanks and sorry for the disruptions this issue has caused to all.", "created": "2016-12-02T09:35:00.000000"}, {"author": "70121:c4868211-1a57-40ef-b792-8b187808052e", "body": "No problem, just happens.\nIt only affected one of my Puppet/Foreman servers. I will be watching closely.", "created": "2016-12-02T09:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "On CentOS 7, I installed one of the recent 'mergely' Puppet Server builds, 2.7.2.stable.SNAPSHOT.2016.12.05T1646, which includes the ezbake packaging fix.  From the bash shell, I ran:\n\n{noformat}\nrpm -q --requires puppetserver\n{noformat}\n\nThe output from the command was:\n\n{noformat}\nsystemd\nsystemd\nsystemd\njava-1.8.0-openjdk-headless\nbash\nnet-tools\nprocps\npuppet-agent >= 1.6.0\n/bin/sh\n/bin/sh\n/bin/sh\n/bin/sh\nrpmlib(FileDigests) <= 4.6.0-1\nrpmlib(PayloadFilesHavePrefix) <= 4.0-1\nrpmlib(CompressedFileNames) <= 3.0.4-1\nrpmlib(PayloadIsXz) <= 5.2-1\n{noformat}\n\nNote that unlike previously, {{/usr/bin/ruby}} is no longer listed as a package dependency for puppetserver.  This could also be validated with any of the most recent nightly Puppet Server builds which have this change, e.g., http://nightlies.puppetlabs.com/puppetserver/2.7.2.master.SNAPSHOT.2016.12.05T1100/.", "created": "2016-12-05T10:48:00.000000"}, {"author": "70121:c4868211-1a57-40ef-b792-8b187808052e", "body": "I would love to try it, as this is a blocker in Foreman 13.1 to 13.2 upgrade", "created": "2016-12-05T10:51:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-28T13:03:00.000000", "creator": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56a7d153"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymjmn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_422952985_*|*_1_*:*_1_*:*_101846297_*|*_10007_*:*_1_*:*_152478_*|*_3_*:*_1_*:*_3259427_*|*_5_*:*_1_*:*_112806443_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_68017567"}], "description": "Why does puppetserver now depend on /usr/bin/ruby?  I was ecstatic when upgrading Puppet from 3.x to 4.x it no longer depended on the system's ruby.  Shouldn't whatever requires ruby use the puppet-agent provided ruby instance?\n\nThis is blocking my upgrade to 2.7.x as we no longer provide RHEL's base ruby packages.  A innocent looking, moderate impact change of this scope should be held off to a major release.", "environment": "RHEL 6 x86_64, Puppet Server 2.6.0 upgrading to Puppet Server 2.7.1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16240", "fixedVersions": ["SERVER 2.7.2"], "id": "16240", "issueType": "Bug", "key": "SERVER-1670", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "resolution": "Fixed", "resolutionDate": "2016-12-05T10:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 2.6 to 2.7 dependency change", "timeSpent": "PT0S", "updated": "2017-06-16T16:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-11-23T15:40:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f8367c7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzacrr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_523284822_*|*_6_*:*_1_*:*_0"}], "description": "When Safari has client certificates installed, you're prompted to use one when you attempt to load the dashboard. Whether you present one, or deny the request, the load fails.\n\nThis reminds me of the time period in which the PE Console exhibited the same behavior and was unusable on Safari.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15977", "fixedVersions": [], "id": "15977", "issueType": "Bug", "key": "SERVER-1669", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "resolution": "Won't Fix", "resolutionDate": "2016-11-29T17:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Developer dashboard fails to load when Safari has client certificates installed", "timeSpent": "PT0S", "updated": "2016-11-29T17:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For a bit more context, I believe [~accountid:557058:18109e62-1b97-4fa3-8217-9c25de3a4710] ran into this when finding that the PuppetDB terminus timeout, controlled by the PuppetDB [server_url_timeout setting|https://docs.puppet.com/puppetdb/latest/puppetdb_connection.html#serverurltimeout], basically had no effect when running in Puppet Server.  The implementation for this timeout uses the Ruby [Timeout.timeout|https://github.com/puppetlabs/puppetdb/blob/master/puppet/lib/puppet/util/puppetdb/http.rb#L139] method.  I'm not sure how the implementation for expiring the timeout works in this case - e.g., if a JRuby background thread is used to send a Thread interrupt to try to cancel a potentially blocking operation or the like.\n\nFor this ticket, I think it would be good to consider adding timeout options - both for connect and idle - which can be passed through the [Puppet::Server::HttpClient|https://github.com/puppetlabs/puppetserver/blob/2.7.2/src/ruby/puppetserver-lib/puppet/server/http_client.rb] methods to override the global defaults.  In addition, though, I think it would be good to do a little more investigation into why the {{Timeout.timeout}} call seems to have no effect in this case.  It may be that we need to do some work in the upstream clj-http-client library to interrupt a blocked connection or read call on an open socket.\n\n", "created": "2017-02-25T08:26:00.000000"}], "components": [], "created": "2016-11-21T09:45:00.000000", "creator": "557058:18109e62-1b97-4fa3-8217-9c25de3a4710", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68a01a4b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2124"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza8ov:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_113363545_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_70846498747"}], "description": "The http client used in puppet server has a timeout which can be configured globally using http-client.connect-timeout-milliseconds. But, there are many cases where a different timeout is needed depending on the use. For example, a lower timeout may be needed if the client will try another system when the first one fails. \n\nTo this end, some way to specify the timeout when making a request would be very useful. ", "epicLinkSummary": "Handful or two of improvements to clj-http-client", "estimate": "PT0S", "externalId": "14771", "fixedVersions": [], "id": "14771", "issueType": "Improvement", "key": "SERVER-1666", "labels": ["http"], "originalEstimate": "PT0S", "parent": "16513", "parentSummary": "Handful or two of improvements to clj-http-client", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:18109e62-1b97-4fa3-8217-9c25de3a4710", "resolution": "Won't Do", "resolutionDate": "2019-02-20T16:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "per-request timeouts for HttpClient", "timeSpent": "PT0S", "updated": "2019-02-20T16:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:3dab2ccb-c273-4b35-953e-1b28ea2cf56d] Hi, thanks for filing an issue.\n\nMy guess is that the problem is that OSS Puppet Server, by default, is configured with a 2GB max heap size, and that's too high for your system.\n\nCould you try running {{journalctl -u puppetserver}} and see if you get any more informative error message?  Or check to see if anything shows up in the system log when you try to start the service?\n\nIf the memory settings do indeed turn out to be the culrpit, you can try lowering the max heap size ({{-Xmx}}) in the {{JAVA_ARGS}} in {{/etc/sysconfig/puppetserver}}.", "created": "2016-11-21T10:51:00.000000"}, {"author": "70121:3dab2ccb-c273-4b35-953e-1b28ea2cf56d", "body": "Hi Chris,\n journalctl -u puppetserver\n\nNov 21 17:26:56 218470 systemd[1]: Starting puppetserver Service...\nNov 21 17:26:56 218470 systemd[1251]: Failed at step USER spawning /opt/puppetlabs/server/apps/puppetserver/bin/puppetserver: No such process\nNov 21 17:26:56 218470 systemd[1]: puppetserver.service: control process exited, code=exited status=217\nNov 21 17:26:56 218470 systemd[1]: Failed to start puppetserver Service.\nNov 21 17:26:56 218470 systemd[1]: Unit puppetserver.service entered failed state.\nNov 21 17:26:56 218470 systemd[1]: puppetserver.service failed.\nNov 21 17:26:56 218470 systemd[1]: puppetserver.service holdoff time over, scheduling restart.\nNov 21 17:26:56 218470 systemd[1]: Starting puppetserver Service...\nNov 21 17:26:56 218470 systemd[1253]: Failed at step USER spawning /opt/puppetlabs/server/apps/puppetserver/bin/puppetserver: No such process\nNov 21 17:26:56 218470 systemd[1]: puppetserver.service: control process exited, code=exited status=217\nNov 21 17:26:56 218470 systemd[1]: Failed to start puppetserver Service.\nNov 21 17:26:56 218470 systemd[1]: Unit puppetserver.service entered failed state.\nNov 21 17:26:56 218470 systemd[1]: puppetserver.service failed.\nNov 21 17:26:56 218470 systemd[1]: puppetserver.service holdoff time over, scheduling restart.\n\n[root@dev1 ~]# grep JAVA_ARGS /etc/sysconfig/puppetserver\nJAVA_ARGS=\"-Xms512m -Xmx512m\"\n\n\nIt is already set to 512m and it fails to start", "created": "2016-11-21T21:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:3dab2ccb-c273-4b35-953e-1b28ea2cf56d] I have been able to start the puppetserver process on as little as 512m for the minimum and maximum heap, as you have configured.  I was using a VM with more RAM, though - 4 GB in my case.\n\nCould you check the following additional things?\n\n1) Does an executable file called {{/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver}} exist on your system?  On my CentOS 7 system, it has the following attributes after the initial installation:\n\n{noformat}\n[root@wfjnb230euir3s4 ~]# ls -l /opt/puppetlabs/server/apps/puppetserver/bin/puppetserver\n-rwxr-xr-x. 1 root root 1984 Nov  8 10:50 /opt/puppetlabs/server/apps/puppetserver/bin/puppetserver\n{noformat}\n\n2) In the systemd service definition for puppetserver, {{/usr/lib/systemd/system/puppetserver.service}}, is the {{User}} field under {{\\[Service\\]}} set to \"puppet\"?\n\n3) Does the \"puppet\" user exist on your system?  The user is supposed to be created during the installation of the puppetserver / puppet-agent packages.  On my system, I see the following for the \"puppet\" user's attributes:\n\n{noformat}\n[root@wfjnb230euir3s4 ~]# getent passwd puppet\npuppet:x:998:997:puppetserver daemon:/opt/puppetlabs/server/data/puppetserver:/sbin/nologin\n{noformat}\n\n", "created": "2016-11-22T18:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:3dab2ccb-c273-4b35-953e-1b28ea2cf56d] is there any information in the log files in  {{/var/log/puppetlabs/puppetserver/*}}?  Or in your syslog?\n\nYou could also try running the command {{puppetserver foreground}} to try to start the server in the foreground, and see if that gives you any better error message.", "created": "2016-11-23T07:14:00.000000"}, {"author": "70121:3dab2ccb-c273-4b35-953e-1b28ea2cf56d", "body": "Hi,\n\nThe issue should be good now.\n\nthe user puppet was missing. I had to re-install the puppetserver again.\n\nAlso Can you let me know if i can install puppetserver on openvz VM ?", "created": "2016-11-23T07:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm not sure if anyone's tried openvz.  I know people are running it in docker, and I'm not aware of anything that should prevent it from working in other containers.  Feel free to give it a shot and open another ticket if you have any issues.\n\nThanks and glad you were able to get your other issue sorted out.", "created": "2016-11-23T07:27:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-21T07:01:00.000000", "creator": "70121:3dab2ccb-c273-4b35-953e-1b28ea2cf56d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a203f19"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza8nb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_174344940_*|*_5_*:*_1_*:*_0"}], "description": "Hi\nI am just a new user which want to try some basic puppet functionalities\nSo I have installed on new VM (CENTOS7) the puppet server, but when trying to run : I get this issue :\n\n[root@dev1 ~]# systemctl start puppetserver.service\nJob for puppetserver.service failed because the control process exited with error code. See \"systemctl status puppetserver.service\" and \"journalctl -xe\" for details.\n\n[root@dev1 ~]# journalctl -xe\n\n-- Unit puppetserver.service has begun starting up.\nNov 21 19:29:32 dev1 systemd[1674]: Failed at step USER spawning /opt/puppetlabs/server/apps/puppetserver/bin/puppetserver: No such process\n-- Subject: Process /opt/puppetlabs/server/apps/puppetserver/bin/puppetserver could not be executed\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n--\n-- The process /opt/puppetlabs/server/apps/puppetserver/bin/puppetserver could not be executed and failed.\n--\n-- The error number returned by this process is 3.\nNov 21 19:29:32 dev1 systemd[1]: puppetserver.service: control process exited, code=exited status=217\nNov 21 19:29:32 dev1 systemd[1]: Failed to start puppetserver Service.\n-- Subject: Unit puppetserver.service has failed\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n--\n-- Unit puppetserver.service has failed.\n--\n-- The result is failed.\nNov 21 19:29:32 dev1 systemd[1]: Unit puppetserver.service entered failed state.\nNov 21 19:29:32 dev1 systemd[1]: puppetserver.service failed.\nNov 21 19:29:32 dev1 systemd[1]: puppetserver.service holdoff time over, scheduling restart.\nNov 21 19:29:32 dev1 systemd[1]: start request repeated too quickly for puppetserver.service\nNov 21 19:29:32 dev1 systemd[1]: Failed to start puppetserver Service.\n-- Subject: Unit puppetserver.service has failed\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n--\n-- Unit puppetserver.service has failed.\n--\n-- The result is failed.\nNov 21 19:29:32 dev1 systemd[1]: Unit puppetserver.service entered failed state.\nNov 21 19:29:32 dev1 systemd[1]: puppetserver.service failed.\nlines 3290-3351/3351 (END)\n\n[root@dev1 ~]# free -m\n              total        used        free      shared  buff/cache   available\nMem:           1024          61         865           2          97         842\nSwap:           512           0         512\n[root@dev1 ~]# cat /etc/*-release\nCentOS Linux release 7.2.1511 (Core)\nNAME=\"CentOS Linux\"\nVERSION=\"7 (Core)\"\nID=\"centos\"\nID_LIKE=\"rhel fedora\"\nVERSION_ID=\"7\"\nPRETTY_NAME=\"CentOS Linux 7 (Core)\"\nANSI_COLOR=\"0;31\"\nCPE_NAME=\"cpe:/o:centos:centos:7\"\nHOME_URL=\"https://www.centos.org/\"\nBUG_REPORT_URL=\"https://bugs.centos.org/\"\n\nCENTOS_MANTISBT_PROJECT=\"CentOS-7\"\nCENTOS_MANTISBT_PROJECT_VERSION=\"7\"\nREDHAT_SUPPORT_PRODUCT=\"centos\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"7\"\n\nCentOS Linux release 7.2.1511 (Core)\nCentOS Linux release 7.2.1511 (Core)\n\n[root@dev1 ~]# puppetserver -v\npuppetserver version: 2.7.0\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15401", "fixedVersions": [], "id": "15401", "issueType": "Bug", "key": "SERVER-1665", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:3dab2ccb-c273-4b35-953e-1b28ea2cf56d", "resolution": "Incomplete", "resolutionDate": "2016-11-23T07:27:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver failed to run after first installation", "timeSpent": "PT0S", "updated": "2016-11-23T07:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "[~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49] Would you be able to help us figure out how useful this would be? We're trying to triage old tickets.", "created": "2018-02-14T16:28:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] ^^\n\n[~accountid:557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f] Charlie and Nick might have good context on this one. Of the customers I've worked with Telegraf/InfluxDB has been popular. In 2016 [people on the internet|https://www.wavefront.com/collectd-vs-telegraf-comparing-metric-collection-agents/] seemed to think collectd/telegraf were playing in the same league but put a soft advantage on Telegraf based on is language choice (Go). I kinda think they were right.", "created": "2018-02-15T10:39:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "We already have something very similar in the form of the {{graphite}} reporter. However, the huge drawback of this reporter at the moment is that it is only implemented by Puppet Server. So, anyone who wants to monitor their Puppet installation is going to end up needing a different tool for PuppetDB and PE services --- at which point they may as well use that tool for Puppet Server as well and skip the {{graphite}} reporter altogether.\n\nA {{collectd}} reporter added to Puppet Server would hit the same limitation.\n\nI think the first step to address this sort of issue would be to move the graphite reporter and associated configuration from Puppet Server over to the TrapperKeeper Metrics library so that the functionality is universally available across the puppet stack. Then we could look into adding CollectD, or InfluxDB as additional output formats. ", "created": "2018-02-15T10:57:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Okay, from a prioritization point of view how important are these things [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]?", "created": "2018-02-15T11:13:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "This particular issue enhancement for CollectD is probably blocked until metric reporters are more generally available.\n\nMigrating the reporter functionality to TrapperKeeper metrics would be a separate ticket that I would rank underneath any tickets for adding new performance metrics that would capture stuff we can't see today --- since we already have a good out-of-the-box option for gathering metrics across systems:\n\nhttps://forge.puppet.com/npwalker/pe_metric_curl_cron_jobs", "created": "2018-02-15T11:38:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "Okay thanks! Given that we're closing old tickets we're not likely to be able to work on soon, I'm going to go ahead and close this one.", "created": "2018-02-15T11:44:00.000000"}], "components": [], "created": "2016-11-16T13:53:00.000000", "creator": "557058:7bdae10b-73f2-4aa7-b72c-9998a4526110", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e2e81c8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymqdz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_534529593_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_38856120866"}], "description": "Quoting [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n\n{quote}\nThe library that trapperkeeper-metrics and pe-trapperkeeper-metrics use to do metrics collection / reporting is called \"Dropwizard Metrics\" (formerly Codahale metrics).  It has several different reporters built in, and there are lots of third-party libraries that add additional reporters as well.\n\n...\n\nIt appears that they have a collectd one merged into core now:\n\nhttps://github.com/dropwizard/metrics/commit/0ccbd4cac3405843e14368ad8e385a755dae50c3\n\nIf this or any other reporters would be particularly useful [...], please feel free to file a Jira ticket, I'd very much like for us to add more of them.\n{quote}\n\nSo lets add collectd! :D", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "15666", "fixedVersions": [], "id": "15666", "issueType": "Improvement", "key": "SERVER-1664", "labels": ["metrics"], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:7bdae10b-73f2-4aa7-b72c-9998a4526110", "resolution": "Won't Do", "resolutionDate": "2018-02-15T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add collectd metric plugin to Puppetserver", "timeSpent": "PT0S", "updated": "2018-02-16T08:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:7bdae10b-73f2-4aa7-b72c-9998a4526110", "body": "Should probably open a seperate docs ticket to document how to get gems to an offline Puppetserver...", "created": "2016-11-16T11:25:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I believe that if the user calling {{puppetserver gem}} has a {{.gemrc}} in their home directory then they should be able to override puppetserver's proxy configuration.\n\nIn fact, proxy support was added to the {{puppetserver_gem}} package provider by setting {{$HOME}} when calling puppetserver's gem.\u00a0Ensuring the\u00a0gem command looks in the user's home directory for a {{.gemrc}} when ran under the Puppet.\n\nI've opened a PR to update the docs describing this interaction.", "created": "2018-02-16T16:34:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "PR merged", "created": "2018-02-20T14:59:00.000000"}], "components": [], "created": "2016-11-16T11:18:00.000000", "creator": "557058:7bdae10b-73f2-4aa7-b72c-9998a4526110", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d47d6ca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtvb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_4083246_*|*_1_*:*_1_*:*_543870461_*|*_10007_*:*_2_*:*_335764873_*|*_3_*:*_1_*:*_11219_*|*_5_*:*_1_*:*_2413752440_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_38959959347"}], "description": "The puppetserver gemrc appears to be hidden within the jar file, making it difficult to edit and find more information about.\n\nIt appears to be in:\n\n{code}\n- SYSTEM CONFIGURATION DIRECTORY: file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/etc\n{code}\n\nThe main problem this causes is the difficulty installing gems to puppetserver on machines that don't have direct access to the public internet (and are either using a proxy setting or pointing to a local mirror) \n\nSolution:\n\nAbility to configure gemrc location in puppetserver config, pointing it to a more sensible location or both", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17133", "fixedVersions": ["SERVER 5.3.0"], "id": "17133", "issueType": "Improvement", "key": "SERVER-1663", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:7bdae10b-73f2-4aa7-b72c-9998a4526110", "resolution": "Fixed", "resolutionDate": "2018-02-20T14:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Clarify/configure the gemrc configuration for puppetserver", "timeSpent": "PT0S", "updated": "2018-03-20T14:28:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "After this was merged, I ran the refresh on both puppetserver-perf-driver55 and puppetserver-perf-driver68-dev.  As expected, this resulted in the cron being disabled on the dev blade, but it's still enabled on the prod blade.", "created": "2016-11-18T14:29:00.000000"}], "components": [], "created": "2016-11-16T11:01:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@77be1805"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza5qf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10140160_*|*_10007_*:*_1_*:*_79297019_*|*_3_*:*_1_*:*_95926733_*|*_5_*:*_1_*:*_0"}], "description": "We recently created two new, fully automated perf test jobs that run on a weekly timer.\n\nUnfortunately, we discovered that since the default configuration of these jobs is applied in *all* of our Jenkins dev environments, that any Jenkins server that is up and running when the time window occurs will try to run the job simultaneously, using the same SUT.\n\nLong-term, we need to do some resource locking on the SUT systems to prevent them from being used by more than one job at once.  This is described in SERVER-1548.\n\nIn the short-term there may be some more crude solution that allows us to distinguish between 'dev' and 'prod' environments, and only use the \"real\" SUT hostname in the prod environment.  Need to discuss and see if there is a reasonable short-term fix here or if we will need to dive right into SERVER-1548.  Would prefer to avoid that because I believe there will be some opportunity to use some of the upcoming ci.next work to solve our resource locking problem if we can hold out until it's ready.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15400", "fixedVersions": [], "id": "15400", "issueType": "Bug", "key": "SERVER-1662", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-18T14:30:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "fix collisions in cron'd perf test jobs", "timeSpent": "PT0S", "updated": "2017-01-25T13:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The latest version of JRuby 1.7.x is 1.7.26, which is what we are shipping.  It includes jruby-openssl version 0.9.16, which is not quite the latest version (0.9.18 is available).\n\nWe could vendor the newer version of the gem, but playing around with that locally it appears that doing so causes both versions of the gem to show up on the gem path, and I'm not quite sure how the underlying interpreter decides which one to use.  So, things to look into:\n\n1. Which maven artifact is responsible for bringing in jruby-openssl, and is there a way we can exclude it so that the vendored gem would be the only copy of jruby-openssl?\n2. Failing that, how can we verify which version of the gem gets loaded if both are present?\n3. May be worth a peek at the jruby-openssl CHANGELOG to see what changes are included between 0.9.16 and 0.9.18, and whether or not they are critical.  The affected user was using a version of Puppet Server that shipped with jruby-openssl v0.9.7, so the fix that they needed may be available in 0.9.16?", "created": "2016-11-16T13:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think the affected user wanted jruby-openssl 0.9.18 specifically because it added integration support for BC 1.55.  From https://github.com/jruby/jruby-openssl/blob/master/History.md#0918, I see:\n\n{quote}upgrading BC to 1.55 normalize \"brainpoolP512t1\" curve name for BC 1.55 compatibility{quote}\n\nComment is a bit confusing, though.  Not sure exactly if BC 1.55 was compatible (but maybe with some limitations) pre-0.9.18?", "created": "2016-11-16T14:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The jruby-openssl dependency comes in via {{jruby-stdlib}}.  We could potentially exclude all of the relevant files from our uberjar", "created": "2016-11-16T14:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I chatted with the JRuby maintainers in IRC and they said there will be another 1.7.x release before the end of the year.\n\nI opened an issue and a PR with the upstream to upgrade to jruby-openssl 0.9.18:\n\nhttps://github.com/jruby/jruby/issues/4306\nhttps://github.com/jruby/jruby/pull/4307\n\nAt this point I think the best plan is to wait for these to land, and then update our JRuby version.", "created": "2016-11-16T15:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Moving this to 'blocked' since, for now, my plan is to wait for an upstream JRuby PR merge and release.", "created": "2016-11-16T15:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The aforementioned PR causes a test failure on the JRuby 1.7.x branch", "created": "2016-11-17T11:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "A few more bits of info on this:\n\nThere appears to be an MRI ruby test called `test_x509store.rb` that is duplicated in the {{jruby-openssl}} code base, as well as in the core {{jruby}} code base.  This test seems to fail with {{jruby-openssl}} 0.9.18, both under JRuby 1.7.26 and JRuby 9k.  However, the test does not appear to be run in CI for {{jruby-openssl}} or on the core {{jruby}} master/9k branch, while it *is* run in CI on the {{jruby}} 1.7 branch.", "created": "2016-11-21T13:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Moving this to 'blocked'.  I have a PR up against jruby-openssl that seems like it should fix the test failures, and so far it seems like the maintainers are comfortable with the approach in the PR... so hopefully it will be merged, and they will do another release of jruby-openssl.  When that happens I can update my PR against JRuby core to bump 1.7.x to use the new release of jruby-openssl, and then that change will be included in the next JRuby 1.7.x release (presumably 1.7.27).  Then we'll just need to upgrade to that version of JRuby in our projects.", "created": "2016-11-28T11:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Upstream PRs to {{jruby-openssl}} and {{jruby}} have been merged - the JRuby 1.7.27 release should contain version 0.9.19 of {{jruby-openssl}}.  When that lands, we can upgrade our dependencies.", "created": "2016-12-05T16:29:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "JRuby 1.7.27 has finally been released! http://lists.ruby-lang.org/pipermail/jruby/2017-May/000584.html\n\nWe should get this into Server 5.0.", "created": "2017-05-11T15:29:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I encountered a problem when testing JRuby 1.7.27 with the compat-version set to \"2.0\", see https://github.com/jruby/jruby/issues/4613. I'm soliciting some feedback on others on how we want to proceed with this. In the meantime, going to move this ticket to \"needs information\".", "created": "2017-05-19T10:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We decided to go ahead and bump Puppet Server 5 up to 1.7.27 for its JRuby 1.7 dependencies.  We also removed support for the {{jruby-puppet.compat-version}} setting in the process.  Users who have set {{jruby-puppet.compat-version}} will see a startup error on upgrade which will inform them about how to reconfigure Puppet Server to use JRuby 9k for Ruby language 2+ support.\n\nPR was merged to puppetserver#master at [26809fa|https://github.com/puppetlabs/puppetserver/commit/26809fa701825ee23e47400e10bd512e2dc48e2f] and full pipeline runs have also been [passing|https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/285/].\n\nMarking this resolved.", "created": "2017-05-31T18:18:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-16T10:05:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66b4b004"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylvov:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now includes a newer version of JRuby, 1.7.27.  This in turn includes a newer version of the jruby-openssl gem, 0.9.19.  Newer versions of the bouncycastle libraries, 1.55, are also included for compatibility with the newer jruby-openssl version.\n\nJRuby 1.7.27 breaks support for configuring the \"jruby-puppet.compat-version\" to \"2.0\".  The \"jruby-puppet.compat-version\" setting has been removed.  If the setting is present at puppetserver startup, the service will error out.  For Ruby language 2+ support under Puppet Server, you will now need to configure Puppet Server to use JRuby 9k instead of JRuby 1.7.27.  See: SERVER-1630."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_98316741_*|*_1_*:*_1_*:*_13482240_*|*_10007_*:*_1_*:*_421217406_*|*_3_*:*_4_*:*_1043088099_*|*_5_*:*_1_*:*_2401231996_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_3_*:*_14787717831_*|*_10006_*:*_1_*:*_596568166"}], "description": "There are some security and compatibility fixes in recent versions of bouncycastle and jruby-openssl.  We need to bump bouncycastle to the latest version (1.55), and validate that we are shipping the latest jruby-openssl (and upgrade it if we aren't).\n\nWe already landed [a PR against jvm-ssl-utils|https://github.com/puppetlabs/jvm-ssl-utils/pull/70] that upgrades bouncycastle, so we just need to promote that change up through the dependencies into Puppet Server.\n\nAs for jruby-openssl, I believe that is shipped as part of the core JRuby package, and that we are already on the latest version of the 1.7.x JRuby series, so there may not be any work required there... but as part of this ticket we should verify that, and if the one included with the latest JRuby package isn't the latest version, see what would be necessary to upgrade.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16497", "fixedVersions": ["SERVER 5.0.0"], "id": "16497", "issueType": "Task", "key": "SERVER-1661", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade puppetserver to latest versions of bouncycastle, jruby-openssl, and JRuby 1.7.x", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:30:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4bc61be"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza45r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2817_*|*_3_*:*_1_*:*_128441_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_772319165"}], "description": "(Initial planned release date: 2016-11-21)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.7.1%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16818", "fixedVersions": [], "id": "16818", "issueType": "Sub-task", "key": "SERVER-1660", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-23T14:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-23T14:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ede6162"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza45j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2428_*|*_3_*:*_1_*:*_2253369_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_611521354"}], "description": "(Initial planned release date: 2016-11-21)\n\nUpdate dujour to notify users to use 2.7.1.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16496", "fixedVersions": [], "id": "16496", "issueType": "Sub-task", "key": "SERVER-1659", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-21T17:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.7.1 (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e8f003d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza45b:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2454_*|*_3_*:*_1_*:*_1935297_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_611512104"}], "description": "(Initial planned release date: 2016-11-21)\n\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16239", "fixedVersions": [], "id": "16239", "issueType": "Sub-task", "key": "SERVER-1658", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-21T17:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-21T17:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1cc85a55"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza453:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2433_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_613439254"}], "description": "(Initial planned release date: 2016-11-21)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15976", "fixedVersions": [], "id": "15976", "issueType": "Sub-task", "key": "SERVER-1657", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-21T17:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-21T17:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a4ab1bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza44v:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2421_*|*_3_*:*_1_*:*_787142_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_611510674"}], "description": "(Initial planned release date: 2016-11-21)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15665", "fixedVersions": [], "id": "15665", "issueType": "Sub-task", "key": "SERVER-1656", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-21T17:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-21T17:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b4252cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza44n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2525_*|*_3_*:*_1_*:*_777627_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_611510749"}], "description": "(Initial planned release date: 2016-11-21)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15399", "fixedVersions": [], "id": "15399", "issueType": "Sub-task", "key": "SERVER-1655", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-21T17:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-21T17:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f202672"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza44f:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2423_*|*_3_*:*_1_*:*_1932599_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_611510682"}], "description": "(Initial planned release date: 2016-11-21)\n\nThis should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15138", "fixedVersions": [], "id": "15138", "issueType": "Sub-task", "key": "SERVER-1654", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-21T17:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-21T17:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Smoke test upgrades on Cent7, Cent6, and Ubuntu 14.04.", "created": "2016-11-18T11:01:00.000000"}], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@654d151a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza447:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2420_*|*_3_*:*_1_*:*_11954987_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_325483795"}], "description": "(Initial planned release date: 2016-11-21)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14769", "fixedVersions": [], "id": "14769", "issueType": "Sub-task", "key": "SERVER-1653", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-18T13:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-18T13:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b1bd056"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza43z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2297_*|*_3_*:*_1_*:*_715802_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_611514866"}], "description": "(Initial planned release date: 2016-11-21)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17417", "fixedVersions": [], "id": "17417", "issueType": "Sub-task", "key": "SERVER-1652", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-21T17:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-21T17:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3678d004"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza43r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2351_*|*_3_*:*_1_*:*_23055421_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_590394938"}], "description": "(Initial planned release date: 2016-11-21)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17131", "fixedVersions": [], "id": "17131", "issueType": "Sub-task", "key": "SERVER-1651", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-21T17:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-21T17:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33642f5e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza43j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2438_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_325492644"}], "description": "(Initial planned release date: 2016-11-21)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16817", "fixedVersions": [], "id": "16817", "issueType": "Sub-task", "key": "SERVER-1650", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-18T09:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-18T09:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The work was actually targeted at stable so we don't need a merge-down.  I did file a PR to merge the changes from stable up to master, though.", "created": "2016-11-17T11:58:00.000000"}], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4385dc8c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza433:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2443_*|*_10007_*:*_1_*:*_79042326_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_246553103"}], "description": "(Initial planned release date: 2016-11-21)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16238", "fixedVersions": [], "id": "16238", "issueType": "Sub-task", "key": "SERVER-1649", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-18T09:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-18T09:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@add743"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza42v:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2468_*|*_10007_*:*_1_*:*_73442889_*|*_3_*:*_1_*:*_5454564_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_246441066"}], "description": "(Initial planned release date: 2016-11-21)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15974", "fixedVersions": [], "id": "15974", "issueType": "Sub-task", "key": "SERVER-1648", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-18T09:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-18T09:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{code}\n\u27a4  ruby ../ticketmatch/ticketmatch.rb                                                    11:00:22 AM\nEnter Git From Rev: 2.7.0\nEnter Git To Rev: |master| stable\nEnter JIRA project: |PUP| SERVER\nEnter JIRA fix version: SERVER 2.7.1\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   803  100   694  100   109   1629    255 --:--:-- --:--:-- --:--:--  1629\n** DOCS\n    483fd68   Add Server 2.7 release notes.\n    09db1c6   Add to aux nav.\n    adbb8cd   Add product.conf docs, note in configuration.markdown\n** MAINT\n    c4354ca   Remove 'test/unit/assertions' requires from subcommand tests\n    9939c40   Skip agent_run_before_ssl_files_inited test on PE\n    ccf0276   Bump to 2.7.1-stable-SNAPSHOT\n    10c3101   Drop heap size for Travis testing to 5 GB\n    b2eb9c7   Bump puppet submodule to 02cd1b\n    ddb1317   Bump puppet submodule to 1ea537\n-- SERVER-1644 (Resolved)\n    3b936ec   Add docs about using JAVA_ARGS_CLI from sysconfig/default\n    1ef6d61   Use JAVA_ARGS_CLI env var for Java args in subcommands\n---\nALL COMMIT TOKENS WERE FOUND IN JIRA\nALL ISSUES WERE FOUND IN GIT\n{code}", "created": "2016-11-17T13:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] heads up.  We're shooting for the 2.7.1 OSS release on Monday.  The only ticket in the release is SERVER-1644", "created": "2016-11-17T13:24:00.000000"}], "components": [], "created": "2016-11-14T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45db3045"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza42n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2449_*|*_3_*:*_1_*:*_5470866_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_246296633"}], "description": "(Initial planned release date: 2016-11-21)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15664", "fixedVersions": [], "id": "15664", "issueType": "Sub-task", "key": "SERVER-1647", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-17T13:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-17T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:28:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7359b269"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza42f:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2460_*|*_3_*:*_1_*:*_6061867_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_245401564"}], "description": "(Initial planned release date: 2016-11-21)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.7.1%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15398", "fixedVersions": [], "id": "15398", "issueType": "Sub-task", "key": "SERVER-1646", "labels": [], "originalEstimate": "PT0S", "parent": "15137", "parentSummary": "puppetserver 2.7.1 2016-11-21 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-17T13:20:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.7.1)", "timeSpent": "PT0S", "updated": "2016-11-17T13:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-11-14T15:28:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a4e1453"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza5pz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2362_*|*_3_*:*_1_*:*_527393960_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_245117709"}], "description": "puppetserver 2.7.1 2016-11-21 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15137", "fixedVersions": [], "id": "15137", "issueType": "Task", "key": "SERVER-1645", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-23T14:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.7.1 2016-11-21 Release", "timeSpent": "PT0S", "updated": "2016-11-23T14:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5e98f00263acd40c3fa08559] oh, my.  Thanks for filing this - that's obviously bad.  Probably bad enough for us to try to get a 2.7.1 out ASAP.\n\nI'd like to put a little thought into whether there is a way to solve the original problem that the author of that PR was trying to solve, without causing the obviously very bad side effects that you mentioned, but if we can't come up with anything quickly we might just revert that commit and do a 2.7.1 release.", "created": "2016-11-14T15:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Created tickets for 2.7.1 release: SERVER-1645.  Shooting for early next week.", "created": "2016-11-14T15:33:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "Sounds good and thanks for the quick turn around!", "created": "2016-11-14T16:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and I talked about possible approaches for this a bit. I think we're leaning toward modifying the gem script to utilize a new gem-specific environment variable, e.g., {{GEM_JAVA_ARGS}}, that could be set with any custom Java arguments that should be passed along to the Java process running the gem command while only using the pre-existing {{JAVA_ARGS}} command for the puppetserver service process and foreground command.  If we did that, a user could still make the args to be passed to the gem subcommand semi-persistent by defining a {{GEM_JAVA_ARGS}} variable value in /etc/sysconfig/puppetserver (or /etc/default/puppetserver) -- or just pass them along on with each invocation at the command line.", "created": "2016-11-15T17:59:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "That seems reasonable to me.  Is it possible any other cli tools might need something similar in the future?", "created": "2016-11-15T18:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:5e98f00263acd40c3fa08559] Yeah, good question.  Maybe?  I could see where it might be useful from time to time to be able to pass custom Java args along to the irb or ruby commands, for troubleshooting purposes.  I've done that myself, usually just by hacking up the script locally.  In some cases it might be nice to just run them with the same arguments as the service process would use but there is probably still some utility to being able to run them with different custom args, e.g., if you want to be able to run irb or ruby while the main puppetserver service is still running and not blow out RAM in the process.\n\nMaybe it would be good to just reserve environment variables with a convention based on the name of the subcommand, e.g., {{JAVA_ARGS_GEM}} for the gem subcommand or {{JAVA_ARGS_IRB}} for the irb subcommand?  I still think that having the foreground subcommand share the same {{JAVA_ARGS}} as the service process uses is good since foreground is most often run to replicate the default behavior of the full service application stack, just with logging output being dumped to the foreground instead of to background loggers.\n\nDefinitely interested to hear if you have thoughts on a preferred way that this would work.", "created": "2016-11-15T18:22:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "I think what you've proposed makes sense.  Another option would be to just have a JAVA_ARGS_CLI that could be used instead of the two proposed above, or could be the default for them.", "created": "2016-11-15T18:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "My vote is for either {{JAVA_ARGS_CLI}} or {{CLI_JAVA_ARGS}}, and then expanding out from there if it becomes necessary.", "created": "2016-11-16T07:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm good with a single \"CLI\" variable that we'd have just the gem, irb, and ruby subcommands would use for now and that we could extend to new subcommands, if appropriate.  I tend to prefer {{JAVA_ARGS_CLI}}.  If we were to decide to do subcommand-specific variations sometime later on, it seems like having the fixed {{JAVA_ARGS_*}} prefix might have a somewhat reduced risk of collision with other environment variables.", "created": "2016-11-16T10:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#stable at [62d214c|https://github.com/puppetlabs/puppetserver/commit/62d214cbef0b92cf73a8ba4e9bc22cf4499a500c].", "created": "2016-11-17T09:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] you probably want to add release notes to this ticket?", "created": "2016-11-17T13:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yep, thanks for the reminder.  Added some release notes.", "created": "2016-11-17T13:32:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-14T14:49:00.000000", "creator": "5e98f00263acd40c3fa08559", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e4e25a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3rj3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "In the 2.7.0 release, the JAVA_ARGS from the sysconfig/default file for puppetserver were passed along to the Java process started when running the 'puppetserver gem' command.  This could lead arguments only intended for use when running the full puppetserver service - for example, debug arguments or large memory heap settings - being used when running gem commands, which could cause the gem commands to fail.\n\nFor the 2.7.1 release, any custom arguments that need to be passed into the Java process for the gem command can be set via a new environment variable, JAVA_ARGS_CLI, which can either be set on the command line or manually added to the sysconfig/default file to be made more persistent.  The JAVA_ARGS_CLI environment variable can also be used to control the arguments used when running the 'puppetserver ruby' and 'puppetserver irb' subcommands."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_13838715_*|*_1_*:*_1_*:*_94143867_*|*_10007_*:*_1_*:*_61773498_*|*_3_*:*_1_*:*_11571164_*|*_5_*:*_1_*:*_520952851_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_72548670"}], "description": "This pull request (https://github.com/puppetlabs/puppetserver/pull/1262) changed the puppetserver gem command to use JAVA_ARGS so that options like -Djsse.enableSNIExtension=false would be passed through.  \n\nHowever this means that some are passed through that only make sense for the server itself.  For example, if GC debugging is turned on, then the additional output from puppetserver gem list --local breaks the puppetserver_gem provider.  \n\nWorse yet, if you are running large environments and have changed the default heap size, puppetserver gem list can be broken such that it won't run at all.  For example, our dev puppetmasters have 8GB of ram, with the puppetserver heap set to 4GB minimum.  When we run puppetserver gem list, it fails most of the time because it cannot allocate an additional 4G of ram for the gem list.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15092", "fixedVersions": ["SERVER 2.7.1"], "id": "15092", "issueType": "Bug", "key": "SERVER-1644", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e98f00263acd40c3fa08559", "resolution": "Fixed", "resolutionDate": "2016-11-17T13:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver gem command uses JAVA_ARGS", "timeSpent": "PT0S", "updated": "2020-05-12T17:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Seems like fixing this at the {{print-context}} layer is probably the right approach. Sounds like dissocing the thread-pool from the map would be fine.", "created": "2018-02-16T12:22:00.000000"}], "components": [], "created": "2016-11-10T15:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a0873a4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza2b3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_437195913_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_101060451817"}], "description": "I launched a Clojure REPL via leiningen under Cursive in IntelliJ, ran {{go}} to startup the server, and ran the {{print-context}} helper.  My REPL session spewed a long stream of content before it eventually errored out with a {{StackOverflowError}}.\n\nThe problem seems to be due to some recursive object references in the {{:SchedulerService}} content.  The `:thread-pool` object nests back onto itself:\n\n{noformat}\n:SchedulerService\n  {:pool\n   {:pool-atom\n    #<Atom@1b72ce33: \n      {:thread-pool\n       #object[java.util.concurrent.ScheduledThreadPoolExecutor 0x3fcd7dbe \"java.util.concurrent.ScheduledThreadPoolExecutor@3fcd7dbe[Running, pool size = 2, active threads = 0, queued tasks = 1, completed tasks = 1]\"],\n       :jobs-ref\n       #<Ref@739a419: \n         {1N\n          {:id 1N,\n           :created-at 1478816638522,\n           :ms-period 86400000,\n           :initial-delay 0,\n           :job\n           #object[java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask 0x3ebe11f0 \"java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@3ebe11f0\"],\n           :pool-info\n           {:thread-pool\n            #object[java.util.concurrent.ScheduledThreadPoolExecutor 0x3fcd7dbe \"java.util.concurrent.ScheduledThreadPoolExecutor@3fcd7dbe[Running, pool size = 2, active threads = 0, queued tasks = 1, completed tasks = 1]\"],\n{noformat}\n\nNot sure what the best solution for this is.  Probably not a bug in the scheduler service.  Maybe to make this helper useful we'd need to do some special truncation for the scheduler service state to avoid the recursion?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15090", "fixedVersions": [], "id": "15090", "issueType": "Bug", "key": "SERVER-1643", "labels": ["usability"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2020-01-29T09:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Running \"print-context\" from Clojure REPL causes StackOverflowError", "timeSpent": "PT0S", "updated": "2020-01-29T09:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c152dee1b5a007029373b", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Unfortunately, that argument is required if you are running Puppet Server under JRE 7, and some older distros that we still support don't yet provide official JRE 8 packages.  We are investigating the feasibility of dropping support for JRE 7 but haven't quite ironed out a plan for what to do on the older distros.\n\nOur related release engineering ticket is RE-8191.", "created": "2016-11-10T09:47:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "There is another ticket (SERVER-1294) about removing this flag when we move to Java 9 (which ships next year). Eventually that may force our hand here.", "created": "2016-11-10T12:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We also have a ticket, TK-422, which refers to the removal of support for Java 7.  I'm going to close this issue out as a duplicate of the work that would be done as part of the linked tickets, which would eventually remove the appearance of this warning.", "created": "2016-11-22T18:19:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-10T07:58:00.000000", "creator": "623c152dee1b5a007029373b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48ce5840"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza1xb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1074056501_*|*_5_*:*_1_*:*_0"}], "description": "The JAVA_ARGS option contains deprecated command line options which causes a java warning message when puppetserver is started.\n\nWarning: Could not match OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0\nbq. \n\nThis is resolved by patching /etc/sysconfig/puppetserver with the following changes.\n\n--- puppetserver.orig\t2016-11-10 09:55:02.423836184 -0500\n+++ puppetserver\t2016-11-10 09:55:10.998946594 -0500\n@@ -6,7 +6,7 @@\n JAVA_BIN=\"/usr/bin/java\"\n \n # Modify this if you'd like to change the memory allocation, enable JMX, etc\n-JAVA_ARGS=\"-Xms2g -Xmx2g -XX:MaxPermSize=256m\"\n+JAVA_ARGS=\"-Xms2g -Xmx2g\"\n \n # These normally shouldn't need to be edited if using OS packages\n USER=\"puppet\"", "environment": "CentOS 7.2.1511 x86_64\nrunning puppetserver 2.7.1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16804", "fixedVersions": [], "id": "16804", "issueType": "Bug", "key": "SERVER-1642", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c152dee1b5a007029373b", "resolution": "Duplicate", "resolutionDate": "2016-11-22T18:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Invalid java options in puppetserver config file", "timeSpent": "PT0S", "updated": "2016-11-22T18:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "I'm -1 to agents knowing about masters and automatically restarting services.\n\nThis seems like something that belongs in documentation somewhere, or perhaps an opt-in behavior defined within the puppet-agent module based agent upgrade workflow.\n\nhttps://github.com/puppetlabs/puppetlabs-puppet_agent", "created": "2016-11-09T11:21:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "This is a packaging error.\n\nIf the puppetserver package depends upon the puppet-agent package, and can misbehave if the puppet-agent package is updated while the server is running, then the *puppetserver* RPM (*not* the puppet-agent RPM) must contain a trigger that fires after the puppet-agent package has been updated:\n\n{code:title=%triggerpostun for puppetserver.spec|borderStyle=solid}\n%triggerpostun -- puppet-agent\nif [ $2 -ge 1 ]", "created": "2016-11-29T23:10:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "thank you for the tip [~accountid:62438a418678e9007059bcca]! ", "created": "2016-11-30T10:13:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330] seems like this is something relatively easy we could do that would solve a lot of pain..", "created": "2016-11-30T10:14:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:62438a418678e9007059bcca] That's awesome. I had not heard of triggers before. It looks like debian also has triggers, which means that this can reasonably live in server-side packaging. Unfortunately, the documentation for debian triggers is rather thin. The most helpful links I've found are http://stackoverflow.com/questions/15276535/dpkg-how-to-use-trigger and https://raphaelhertzog.com/2011/05/30/trying-to-make-dpkg-triggers-more-useful-and-less-painful/.\n\nUnfortunately, from my reading of the debian triggers pages, it looks like the two paths for trigger producers are both not awesome. Path 1 would be for the puppet-agent package to produce a trigger that puppetserver consumes. Path 2 would be for the puppetserver package to have a trigger that watched a file on disk for updates, which would in turn produce a trigger (something like version.rb maybe?).\n\n[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] [~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330] A blocking ticket should probably get made in the ezbake project for this work.", "created": "2016-12-02T07:02:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e], based on my reading of the above links, I agree with your assessment of debian triggers.\n\nI would vote for declaring a new global trigger name (e.g., {{puppetserver-restart}}), shipping a consumer trigger for that trigger in the puppetserver package, and shipping a producer for that trigger in the puppet-agent package. The trigger in the puppet-agent package won't have any effect if the puppetserver package isn't installed, and this seems cleaner than finding a directory path for the puppetserver package to watch that is guaranteed to be tripped by upgrading the puppet-agent package.\n\nBut a disclaimer: I have zero debian packaging experience, so I don't know whether triggering on filesystem paths changing is actually the preferred way to construct consumer triggers in debian.\n\nHope that helps.", "created": "2017-01-01T19:28:00.000000"}, {"author": "623cfe6c94742a00683ecb23", "body": "Is it possible to increase priority for this ticket? Every time now when {{puppet-agent}} gets upgraded, it breaks the server.\n\nAlso, on the second note, would you consider package renaming from the current\n{code}\npuppet-agent\npuppetserver\n{code}\n\nto \n{code}\npuppet-base\npuppet-agent   --- just a pseudo-package that installs the base\npuppetserver\n{code}\n\nIt'll be much more logical than current scheme of {{server}} depending on the {{agent}}.", "created": "2017-04-06T13:37:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "This work has now been decomposed into several tasks:\n\n* VANAGON-59 \u201cAdd support for RPM and Debian triggers\u201d\n* EZ-111 \u201cAdd support for RPM and Debian triggers\u201d\n* SERVER-1818 \u201cListen for Puppet Agent updates and triggers\u201d\n* PA-1130 \u201cAdd Debian producer trigger (for consumption by Puppet Server)\u201d\n* SERVER-1757 \"acceptance: add tests ensuring puppetserver restarts when new puppet-agent installed\"\n\n/cc [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e], [~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], [~accountid:557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20], [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]\n\n", "created": "2017-05-22T16:59:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] should this still be targeted for 5.2.0 or should the fix version be updated?", "created": "2018-02-07T13:34:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] It is at least partially blocked on a change to puppet-agent, so I've moved it to 5.y.", "created": "2018-02-07T14:03:00.000000"}, {"author": "557058:7ed56b44-735e-4cdb-b168-470ef48d5112", "body": "FYI for PA-1130 I am moving forward with defining a debian trigger named \"puppetserver-restart\" (per James' comment above) and making the puppet-agent Deb packages produce this trigger.", "created": "2018-02-16T09:48:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] should we be aiming to get this into next month's Platform Platform 5.5 release (which would mean a Puppet Server 5.3, I assume)?", "created": "2018-02-21T11:12:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] I think we should wait for the puppet-agent change to get merged into 5.x (and passing CI) before picking this work up. It looks like the current PR is open against 1.10.x, so I'm not sure how long that would take to get into 5.x. We have 3 weeks before stop ship, which should be enough time.", "created": "2018-02-22T13:33:00.000000"}, {"author": "557058:7ed56b44-735e-4cdb-b168-470ef48d5112", "body": "FYI my puppet-agent PR has just been merged to 1.10.x and should get merged up once CI passes.", "created": "2018-02-22T14:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330] do you know if this is still something we're interested in? No work has been done yet server-side.", "created": "2019-03-28T11:59:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69], I believe so, but I would defer to you and [~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] to make the call. As far as I know, all of the enabling work has already shipped in puppet-agent and ezbake. ", "created": "2019-03-28T14:50:00.000000"}], "components": ["DOCS"], "created": "2016-11-09T10:40:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "- Puppetserver restarts when puppet-agent is installed or upgraded on the node hosting puppetserver.\n- Behavior is documented and included in release notes."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4367e478"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Restart/HUP puppetserver on upgrades to puppet-agent package"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": ["Impediment"]}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automate"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbpj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_4675694510_*|*_6_*:*_1_*:*_0_*|*_10014_*:*_1_*:*_81806144763_*|*_10006_*:*_1_*:*_2795242770_*|*_10005_*:*_1_*:*_13732181054"}], "description": "We've seen a few bugs come in to both the server and puppet projects that boil down to an upgrade to puppet causing puppetserver to misbehave until it is restarted or reloaded. PUP-6865 is a recent example.\nIt would be awesome if the agent package were to HUP or restart the puppetserver if it is present and running on upgrades.\n\nWe could/should also recommend that users who manage puppet-agent with puppet add a notify to the puppetserver service to ensure it is restarted.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17130", "fixedVersions": ["SERVER 5.y"], "id": "17130", "issueType": "Epic", "key": "SERVER-1756", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Won't Do", "resolutionDate": "2020-02-14T16:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Restart/HUP puppetserver on upgrades to puppet-agent package", "timeSpent": "PT0S", "updated": "2022-05-17T10:58:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] thoughts?  This came out of an issue [~accountid:557058:745ad6f8-2461-4691-9873-549d5904bb16] worked.  ", "created": "2016-11-08T18:17:00.000000"}, {"author": "557058:745ad6f8-2461-4691-9873-549d5904bb16", "body": "+1.  The error produced will rarely lead one down the correct path to resolving the issue.  If we are reliant on a CA bundle, we should vendor it to ensure we can trust it rather than falling back to the system provided bundle and tripping over whatever might be there.", "created": "2016-11-09T08:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "It seems to me that this is something the Release Engineering team should decide upon - /CC [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4], [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], and [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab].\n\nI'm not fond of the idea of vendoring a root CA bundle and shipping it in the Puppet Server package.  Having to take on the burden of updating that CA bundle as updates occur - expirations, revocations, renewals, etc. - would seem onerous.  Also, it seems like - at least from a PE perspective - that having a Puppet Server-specific solution as opposed to being able to utilize the same root CA bundle from among various components that use SSL would not be a good way to go.\n\nThat said, though, if we're already vendoring our own CA bundle and have an established process for updating it which would be independent from a Puppet Server roll and there's just a question of reconfiguring the Puppet Server -- presumably along with other components like Puppet DB, Console Services, etc. -- to use that bundle instead of the default one provided via the JDK, I wouldn't have a problem.\n\nI'd definitely like to hear what the RE folks think about this one for next steps.", "created": "2016-11-09T09:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think this particular error message also points to the benefit of continuing with the work we started in PUP-3522 but never really finished - specifically, to remove all execution paths through JRuby's OpenSSL in Ruby Puppet when running under Puppet Server.  If that had been done, the error message above would likely not have even been seen.  Although, if the system's root CA file were corrupt, you might still see the error in a different context (and possibly with an equally unhelpful error message) - e.g., when making an HTTPS connection as part of a {{puppetserver gem install}}.", "created": "2016-11-09T09:24:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Is there any reason puppetserver can't rely on the bundle provided by puppet agent?\n\ncc/ [~accountid:557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4]", "created": "2016-11-09T10:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yeah, that seems possible - for Puppet Server at least.  I didn't realize we do a custom bundle for puppet agent.  Would it be weird for other non-Puppet Server components like Puppet DB, etc., to rely upon a Puppet Agent-provided bundle?  If we had this custom bundle as its own standalone package that could be made a proper package dependency for all Ezbake-built TK apps, maybe that would be the best way to go?", "created": "2016-11-09T11:30:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] [~accountid:557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4] I'm pretty interested in this since I think it can provide some extra stability and guard against some esoteric issues we see in support.  \n\nI put this in the systems engineering team but I'm not sure that's the right place?  Does this need to get into an RE sprint?  Just wondering where it needs to be put so it can be discussed further.  ", "created": "2016-11-16T11:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Putting SysEng team on it will probably reduce visibility.  I'll take that off.  I think it might also be a good idea to move it over to the RE project but was hoping for someone in RE to weigh in first.", "created": "2016-11-16T11:57:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "+1 for using the puppet-agent bundle.\n\nezbake has a built-in dependency on puppet-agent so everything should depend on that anyways. I would definitely prefer that to bundling it separately, since then we'd need to have it in two different places.", "created": "2016-11-16T14:25:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "The dependency on puppet-agent is only for the termini package, unfortunately. Not every project that builds with ezbake has a termini package. \n\nHowever, puppetserver has a dependency on puppet-agent https://github.com/puppetlabs/puppetserver/blob/ad37f1677a5fa0e7c25381d00ab361893b632ede/resources/ext/ezbake.conf#L10\n\nIs this a problem we'll also have to handle for PDB?", "created": "2016-11-16T14:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'd been thinking it would be best to solve this problem for all TK apps that can be built with ezbake - including PuppetDB, Console Services, etc.  Those all have Java components in them and make HTTP client requests using SSL.  Seems like they all should have the ability to use the same system CA bundle as a base?", "created": "2016-11-16T14:34:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I tend to agree it should probably be universal to anything in PE.  I've never actually seen an issue manifest in puppetdb or console-services yet but it seems like consistency is best and we take out a possibility of an issue in the future.  ", "created": "2016-11-16T14:48:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "I don't know what connections are affected with this change. \nBut normaly I distribute/integrate the company root-ca cert on all systems to the OS root ca store. On RHEL 6+7 this is all on /etc/pki and managed/updated with update-ca-trust (https://www.mankier.com/8/update-ca-trust)\nBy defaulting to a vendored in bundle this would remove the trust to the internal certs and possibly prevent company-internal ssl connections.\nI also can think of a case where a company has a ssl-breaking proxy in place which requires these internal root certs for any connection.", "created": "2016-11-17T01:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53], good point, thanks.  I think putting this change in place by default would, at least in Puppet Server, only affect any server extensions that do not configure their own CA truststore for client requests.  Any Ruby extensions that use {{Puppet::Network::HttpPool}} for their requests, including the HTTP and PuppetDB report and Node Classifier terminii in PE, all use {{Puppet::Network::HttpPool}}, which configures its own CA bundle, based on the {{localcacert}} setting in Puppet.  There is a related ticket, SERVER-1543, in which it has been proposed to have Java's default truststore included in the validation for these requests as well.\n\nOne place that I believe would be affected by this, for example, is the CA truststore that rubygems would use to fetch a gem installed via {{puppetserver gem install}}.  In that case, I believe {{Net::HTTP}} via jopenssl would use the default Java CA truststore.\n\nOne way we might implement this would be to add a '-Djavax.net.ssl.trustStore' Java command line argument to the list of {{JAVA_ARGS}} in the /etc/sysconfig|default file for the different app components like Puppet Server, defaulting the value to the Puppet-vendored one.  If we did it this way, users could change the {{JAVA_ARGS}} to point the trustStore at a different file if needed, e.g., one under /etc/pki which includes some company-specific CA certs.  Even if we went with this approach, we'd have to talk about whether or not it would make sense to make this change prior to a new major version.  I think defaulting in a different CA bundle on an upgrade which potentially does not contain some of the certs that some users have depended upon could be considered a breaking change.\n\nI agree with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] that it might make sense to move this ticket over to the RE team.  Not sure what others from the RE team think - [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]?", "created": "2016-11-22T12:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] - any further thoughts on whether you think it makes sense for RE to own this ticket and/or whether we should move this into an RE project?", "created": "2016-11-29T13:25:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "Lately thinkng more about it. Is it really worth not using the system CA store? \n\nHow many \"corrupt\" system CA stores are out there vs. how many breakages are expected when vendoring in CA certs? \n\nHow to handle sites requiring custom Root CA certs (already mentioned)? How to handle adding new root certs in existing installed releases? How to remove bad root certs in case of a security warning/issue? If limiting the included root certs howto decide which ones are required? All of this you get for free with the distros root cert store.\n\nI tend to use pre-requisites checks for configuration which is needed for a puppet profile but is not part of it because its managed by something else (e.g. another puppet profile, it's a distro default, ...). We're using servespec for this and also get the benefit for nice reports.", "created": "2016-11-30T02:08:00.000000"}], "components": [], "created": "2016-11-08T18:15:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@69257088"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza0vz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2413946291_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_37740692582"}], "description": "h1.  The problem\n\nWhen the system ca bundle is corrupt it causes some really strange issues.  \n\nFor example: https://support.puppet.com/hc/en-us/articles/232313528--OpenSSL-X509-StoreError-during-installation-of-Puppet-Enterprise-2016-4\n\nLong story short you might get an error that looks like this: \n\n{code}\n2016-11-08 16:15:40,614 - [Error]: Systemd start for pe-puppetserver failed! \njournalctl log for pe-puppetserver: \n-- Logs begin at Tue 2016-11-08 11:17:21 PST, end at Tue 2016-11-08 16:15:40 PST. -- \nNov 08 16:15:13 y93d9tfm2ejfynr systemd[1]: Starting pe-puppetserver Service... \nNov 08 16:15:40 y93d9tfm2ejfynr java[13585]: OpenSSL::X509::StoreError: setting default path failed: IOError \nNov 08 16:15:40 y93d9tfm2ejfynr java[13585]: set_default_paths at org/jruby/ext/openssl/X509Store.java:185\n{code}\n\nh1.  Possible solution\n\nUse the ca bundle from puppet-agent \n\nhttps://puppet.atlassian.net/browse/PUP-3450\n\nOr I think it's just this: https://github.com/puppetlabs/puppet-ca-bundle so we could include that in puppetserver and use it?  \n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17341", "fixedVersions": [], "id": "17341", "issueType": "Bug", "key": "SERVER-1641", "labels": ["ca", "tcse"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Duplicate", "resolutionDate": "2018-02-16T12:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server shouldn't rely on the system ca bundle ", "timeSpent": "PT0S", "updated": "2018-02-16T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:37:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-08T16:59:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@69936f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1739"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym53j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The master service in the status endpoint at debug level (/status/v1/services/master?level=debug) now includes an `http-client-metrics` key. The value of this is an array of http client metrics showing data about http requests that puppet server makes to other services - e.g. puppetdb and classifier. The output of the status endpoint with http client metrics looks like:\n\n\"http-client-metrics\": [\n  {\n    \"aggregate\": 407,\n    \"count\": 1,\n    \"mean\": 407,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"facts\",\n      \"find\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.facts.find.full-response\"\n  },\n  {\n    \"aggregate\": 66,\n    \"count\": 1,\n    \"mean\": 66,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"command\",\n      \"replace_facts\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.command.replace_facts.full-response\"\n  },\n  {\n    \"aggregate\": 60,\n    \"count\": 2,\n    \"mean\": 30,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"resource\",\n      \"search\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.resource.search.full-response\"\n  },\n  {\n    \"aggregate\": 53,\n    \"count\": 1,\n    \"mean\": 53,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"query\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.query.full-response\"\n  },\n  {\n    \"aggregate\": 22,\n    \"count\": 1,\n    \"mean\": 22,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"command\",\n      \"store_report\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.command.store_report.full-response\"\n  },\n  {\n    \"aggregate\": 16,\n    \"count\": 1,\n    \"mean\": 16,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"command\",\n      \"replace_catalog\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.command.replace_catalog.full-response\"\n  },\n  {\n    \"aggregate\": 2,\n    \"count\": 1,\n    \"mean\": 2,\n    \"metric-id\": [\n      \"puppet\",\n      \"report\",\n      \"http\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppet.report.http.full-response\"\n  }\n],"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_145385_*|*_1_*:*_1_*:*_524372_*|*_10007_*:*_1_*:*_232968212_*|*_3_*:*_1_*:*_870482288_*|*_5_*:*_1_*:*_8386390565_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10537392851"}], "description": "Add http metrics from NC and PuppetDB to the status endpoint and exported to graphite (default metrics-allowed).", "epicLinkSummary": "Http Client Metrics in Puppet Server", "estimate": "PT0S", "externalId": "16495", "fixedVersions": ["SERVER 5.0.0"], "id": "16495", "issueType": "New Feature", "key": "SERVER-1737", "labels": [], "originalEstimate": "PT0S", "parent": "17005", "parentSummary": "Http Client Metrics in Puppet Server", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2017-03-23T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consume http client metrics in Puppet Server", "timeSpent": "PT0S", "updated": "2017-06-28T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b73c203-dcd8-4be4-bb4e-d985cc717ea4", "attachments": [], "comments": [{"author": "557058:1b73c203-dcd8-4be4-bb4e-d985cc717ea4", "body": "We figured out the issue by debugging hiera using irb:\n{code}\npuppetserver irb\nrequire 'hiera'\nhiera = Hiera.new(:config => '/etc/hiera.yaml')\nhiera.lookup('something_encrypted', nil, {})\n{code}\nThe resulting stacktrace lead to SERVER-32: \"java.security.InvalidKeyException: Illegal key size\". The error message was swallowed in the puppet server log (debug enabled), making debugging so hard. Fix was to install the JCE Unlimited Strength policy files.\n\nGo ahead and close. I guess the message was swallowed because we were on an older puppetserver version. Otherwise this should be a feature request to always write out the complete stacktrace.", "created": "2016-11-08T16:36:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-08T13:23:00.000000", "creator": "623c0bca866b810069e434a4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51c297ae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza0on:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_88025292_*|*_6_*:*_1_*:*_0"}], "description": "I am having an issue applying configurations to the agent nodes in my environment. When I run {{puppet agent -t}} on a windows node I get an error before any configurations are applied. The error from the puppet server log is as follows:\n\n{noformat}\n2016-11-08 19:11:53,518 ERROR [qtp114787065-23] [puppet-server] Puppet Server Error: Evaluation Error: Error while evaluating a Function Call, Lookup of key '<some key here>' failed: DataBinding 'hiera': PKCS7[Method: 112, Reason: -1] at /srv/puppet/environments/development/manifests/site.pp:1:1 on node <some fqdn>\norg/jruby/ext/openssl/PKCS7.java:644:in `decrypt'\n/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/encryptors/pkcs7.rb:55:in `decrypt'\n{noformat}\n\nTrouble shooting steps I've already tried:\n* Verify yaml syntax.\n** I used the one liner {{ruby -e \"require 'yaml'; YAML.load_file('common.yaml')\"}} to ensure that every level of hiera is formatted correctly.\n* Ensure that keys exist and are correct\n** {code} hiera -c /etc/hiera.yaml \\\n  --debug \\\n  <key for encrypted value> {code} Returns the correct value, unecrypted.\n** {code}puppet lookup --debug <key for encrypted value>{code} Returns the correct value, encrypted.\n\nMy issue specifically, is this:\nWhy am I able to view/parse encrypted hiera data just fine on the puppetserver, but I am unable to use this data when invoking the puppet agent on a remote node?", "environment": "Puppet Server running version 2.2.1 inside ubuntu 14.04 docker conatiner\nPuppet agent running on Win 2k8 node", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17128", "fixedVersions": [], "id": "17128", "issueType": "Bug", "key": "SERVER-1640", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0bca866b810069e434a4", "resolution": "Fixed", "resolutionDate": "2016-11-09T13:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Issue retrieving encrypted Hiera value", "timeSpent": "PT0S", "updated": "2016-11-09T13:50:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [{"attacher": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "created": "2016-12-12T11:34:00.000000", "name": "600-agents.zip", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10962"}, {"attacher": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "created": "2016-12-12T15:05:00.000000", "name": "900-agents.zip", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11206"}], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "https://github.com/MikaelSmith/gatling-puppet-load-test/tree/pcp exists, but needs some work to report correctly.", "created": "2016-12-02T14:11:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Using MikaelSmith/gatling-puppet-load-test#pcp, I tested two scenarios: startup where each agent run establishes a corresponding PCP connection, and restart where agents all connect at the beginning", "created": "2016-12-12T10:20:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Scaling tests up to 900 agents (900-agents.zip) increased total runtime to 7 minutes, demonstrating increased load on the server that prevented it from running within the 5 minute test window. Adding PCP operations (including sending a message every 15 seconds to simulate ping) during a restart increased that time by 24 seconds or ~6%.\n\nNote: https://github.com/MikaelSmith/gatling-puppet-load-test/commit/900056c59ea66547293c088e226b8359baf97637 used for baseline and restart scenarios.", "created": "2016-12-12T15:07:00.000000"}], "components": [], "created": "2016-11-08T10:57:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@cbd0189"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza0dj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2606399747_*|*_3_*:*_1_*:*_346392984_*|*_5_*:*_1_*:*_0"}], "description": "Perform simple load testing of pcp-broker and puppetserver together using the initial startup scenario previously created, and a basic puppetserver load test.\n\nRecord results to share with the team.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16237", "fixedVersions": [], "id": "16237", "issueType": "Sub-task", "key": "SERVER-1639", "labels": [], "originalEstimate": "PT0S", "parent": "15392", "parentSummary": "Initial component test pcp-broker + puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2016-12-12T15:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Integrate and run initial startup test scenario with basic puppetserver load test", "timeSpent": "PT0S", "updated": "2016-12-12T15:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Doing this is going to require some work on the frameworks for load testing. [gatling-puppet-load-tests|github.com/puppetlabs/gatling-puppet-load-test] needs a way to add additional test scenarios, and [puppet-gatling-jenkins-plugin|https://github.com/puppetlabs/puppet-gatling-jenkins-plugin] needs to be updated to read multiple test scenarios.", "created": "2016-12-09T15:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think that both of them already support multiple scenarios, but there may be (in the jenkins-plugin in particular) some places where it makes faulty assumptions about certain types of requests it expects to always be present in the scenarios.  If you want to set up some time to pair on this with me and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] we can make that happen.", "created": "2016-12-09T17:47:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "It would be helpful if these tests are run with specific file descriptor and JVM memory configuration to detect any deviation in resource use.", "created": "2017-01-19T10:29:00.000000"}, {"author": "557058:adac4e58-01ac-4fce-8be9-94131c26c73d", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] is this still needed?", "created": "2017-10-16T15:41:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "It could be valuable, but involves some work to revive gatling-puppet-load-tests as it's not being used anywhere at the moment. It doesn't feel valuable enough to do all that work solely for pcp-broker testing, but that work would be valuable in general as part of automatic gatling testing /cc [~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f].", "created": "2017-10-16T16:06:00.000000"}], "components": [], "created": "2016-11-08T10:55:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@252c708e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PCP-635"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb80v:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_544134911_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_90031542235_*|*_10005_*:*_1_*:*_1355465695"}], "description": "Initial startup: run a simulation that establishes all PCP connections over 30 minutes and then maintains them, with puppet agent load simulated over that same period. Include some PXP communication (simulate running Orchestrator to initiate all those runs) - send requests, expect provisional and final responses.\n\nRebalancing after a broker fails: start with most PCP connections established, run puppet agent load test and simulate a batch (10-50%?) of PCP connections attempting to establish at once. This should start with a similarly reduced (10-50%) agent load to represent overprovisioning.\n\nServer restart: run puppet agent load test and simulate all PCP connections attempting to establish at once.", "epicLinkSummary": "Integrate pcp-broker with puppetserver", "estimate": "PT0S", "externalId": "15971", "fixedVersions": [], "id": "15971", "issueType": "Task", "key": "SERVER-1638", "labels": [], "originalEstimate": "PT0S", "parent": "31641", "parentSummary": "Integrate pcp-broker with puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Won't Do", "resolutionDate": "2019-10-08T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add pcp-broker performance testing scenarios to gatling-puppet-load-tests", "timeSpent": "PT0S", "updated": "2019-10-08T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Some work at https://github.com/MikaelSmith/gatling-puppet-load-test/tree/pcp. More complex checks will probably need to wait until we switch to PCP v2.", "created": "2016-12-02T14:10:00.000000"}], "components": [], "created": "2016-11-08T10:50:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34cdbf00"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza0db:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1834020619_*|*_3_*:*_1_*:*_251590225_*|*_5_*:*_1_*:*_0"}], "description": "Initial startup: run a simulation that establishes all PCP connections over 30 minutes and then maintains them, with puppet agent load simulated over that same period. Include some PXP communication (simulate running Orchestrator to initiate all those runs) - send requests, expect provisional and final responses.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15663", "fixedVersions": [], "id": "15663", "issueType": "Sub-task", "key": "SERVER-1637", "labels": [], "originalEstimate": "PT0S", "parent": "15392", "parentSummary": "Initial component test pcp-broker + puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2016-12-02T14:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement a test scenario around initial startup with server/broker", "timeSpent": "PT0S", "updated": "2016-12-02T14:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I think https://github.com/puppetlabs/gatling-puppet-pcp is sufficient for testing. We can add checks later once something progresses to useful binary checks.", "created": "2016-11-29T16:17:00.000000"}], "components": [], "created": "2016-11-08T10:27:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ad4ccdd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza0c7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21064_*|*_3_*:*_1_*:*_20592197_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1814771408"}], "description": "Create Gatling Connectors for creating PCP connections, and for sending PCP messages.\n\nSomething similar to these is done for NATS at https://github.com/puppetlabs/gatling-puppet-nats, with prior work to integrate with Clojure at https://github.com/richardc/clojure-gatling-spike.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16494", "fixedVersions": [], "id": "16494", "issueType": "Sub-task", "key": "SERVER-1636", "labels": [], "originalEstimate": "PT0S", "parent": "15392", "parentSummary": "Initial component test pcp-broker + puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2016-11-29T16:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement a Gatling Connector for PCP", "timeSpent": "PT0S", "updated": "2016-11-29T16:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This one probably relates somewhat to the conversation we're having in SERVER-1634 about whether we should document the \"start\" and \"stop\" subcommands as being for troubleshooting / development purposes only and encourage users to only use the service framework start/stop commands instead.\n\nThat said, I think this is one that we \"could\" do by adding something like the following to the [Java command line|https://github.com/puppetlabs/ezbake/blob/1.1.3/resources/puppetlabs/lein-ezbake/template/global/ext/cli/start.erb#L50-L57] in the start subcommand:\n\n{noformat}\n2>>/var/log/puppetlabs/${realname}/${realname}-daemon.log >>/var/log/puppetlabs/${realname}/${realname}-daemon.log\n{noformat}\n\nI'm inclined, though, to think that we shouldn't do this.  One issue is that we only use the \"daemon\" log on pre-systemd systems.  For systemd, stderr / stdout from the Java process today is redirected to the journal.  If we were to put work into the start script to pipe the output to a log file, we might end up with three different locations that users would have to monitor for their log output on systemd systems - journal, daemon log, and service log.  This would seem like a regression to me.\n\n[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4], [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - would be interested in your thoughts on this one.", "created": "2016-11-08T11:20:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-07T14:32:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Warning output from {{puppetserver start}} goes into /var/log/mumble"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1676e793"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9zvr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7353158629_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_32901115507"}], "description": "The {{puppetserver start}} command allows a warning message through to the CLI that should be sent to a log file somewhere. On a CentOS 6.5 system running Puppet Server (FOSS) 2.6.1.master.SNAPSHOT.2016.11.04T2126 and Puppet 4.8.1:\n\n{code}\n# puppetserver --version\npuppetserver version: 2.6.1.master.SNAPSHOT.2016.11.04T2126\n# puppetserver start\nOpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0\nservice puppetserver status\n# service puppetserver status\npuppetserver (pid  16743) is running...\n{code}\n\nSeems like that OpenJDK warning should go to /var/log/mumble.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16236", "fixedVersions": [], "id": "16236", "issueType": "Bug", "key": "SERVER-1635", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Won't Fix", "resolutionDate": "2018-02-16T12:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Stray output from \"puppetserver start\" command", "timeSpent": "PT0S", "updated": "2018-02-16T12:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think we could replace the \"dead but subsys locked\" message with a more pleasant-looking \"is stopped\" message if we added some logic to the [stop subcommand|https://github.com/puppetlabs/ezbake/blob/1.1.3/resources/puppetlabs/lein-ezbake/template/global/ext/cli/stop.erb] to remove the {{/var/lock/subsys/<%= EZBake::Config\\[:project\\] %>}} file, if present.  That said, I'm not sure if that's something we want to do.\n\nThe start and stop subcommand scripts, as I understand it, were instead to encapsulate the platform-agnostic logic for starting and stopping a service.  The \"lock\" file is something which is written by the init scripts for sysvinit systems so putting logic into the \"stop subcommand\" which has knowledge about sysvinit-specific behavior would seem inappropriate to me.  Also, I suspect that we might have to do something different to make this work for systems that use systemd.  TBH, I don't know what it uses other than the PIDFILE to lock service state.\n\n[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4], [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - would like to get your opinion on what you think we should do here.", "created": "2016-11-08T10:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I feel like I'm in over my head on this one, and would prefer for the RE folks to weigh in.\n\nMy gut is that it should be OK for us to document that you should only ever call {{puppetserver start}} and {{puppetserver stop}} as development-type tools, for use *outside* of the service framework, and that if you want to work within the service framework you should stick to calling {{systemctl}} on both sides.  That's definitely not an ideal UX but it seems risky to start blurring the lines of responsibility between the scripts and the service framework.\n\nJust my 2 cents, though, I don't feel confident enough in my understanding of the service frameworks to weigh in strongly on one side or the other.", "created": "2016-11-08T10:58:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I agree with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] here. ", "created": "2016-11-14T15:26:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "In principle, I agree: Tell non-developers stick the to the service framework for starting and stopping puppetserver. I have a harder time imagining only devs will use `puppetserver reload`.", "created": "2016-11-14T18:23:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "+1, stick to one or the other (the service management framework or the scripts) and don't mix the two. It would be great if 'puppetserver reload' worked even if a thing was started using the service management framework, but when I was an admin, at least, we generally only used the service management commands to manage production services. \n\nFWIW, I think apache https supports using the 'apachectl' command or the service management commands (at least older versions did), but  I don't think it's that big a deal to document sticking with one method or the other and to refrain from mixing the two.", "created": "2016-11-15T17:45:00.000000"}], "components": ["Puppet Server"], "created": "2016-11-07T14:26:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* {{puppetserver stop}} command leaves the server stopped, not dead and the /var/run structure unlocked\n"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72230117"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9zvj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7353483730_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_32901105951"}], "description": "The {{puppetserver stop}} command leaves the init/service management system in weird state (_puppetserver dead but subsys locked_) compared to {{service puppetserver stop}} (_puppetserver is stopped_). This might confused third-party scripts (or even our own code) that expect \"stopped\" and \"not \"dead but locked\".\n\nConsider the following sequence of commands (CentOS 6.5, Puppet 4.81, Puppet Server 2.6.1.master.SNAPSHOT.2016.11.04T2126):\n\n{code}\n# service puppetserver status\npuppetserver (pid  16249) is running...\n# service puppetserver stop\nStopping puppetserver:                                     [  OK  ]\n# service puppetserver status\npuppetserver is stopped\n# service puppetserver start\nStarting puppetserver:                                     [  OK  ]\n# service puppetserver status\npuppetserver (pid  16511) is running...\n\n# puppetserver stop\n# service puppetserver status\npuppetserver dead but subsys locked\n# puppetserver start\n# puppetserver start\nOpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0\n# service puppetserver status\npuppetserver (pid  16743) is running...\n{code}\n\nI think the correct(er) behavior is for \"puppetserver stop\" to mimic the behavior of the service/init system.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15662", "fixedVersions": [], "id": "15662", "issueType": "Bug", "key": "SERVER-1634", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Won't Fix", "resolutionDate": "2018-02-16T12:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\"puppetserver stop\" command leaves subsystem locked", "timeSpent": "PT0S", "updated": "2018-02-16T12:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-11-07T14:00:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* {{puppetserver help}} and {{puppetserver --help}} produce the same output\n* ...and a pony"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e4f4155"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9zun:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7355001838_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_54948159601"}], "description": "*tl;dr:* To maintain parity with the {{puppet}} CLI and to reduce the potential for confusion, the {{puppetserver}} CLI should support the {{help}} command.\n\nThe {{puppet}} command supports both the {{--help}} option and the {{help}} command, producing the same output:\n\n{code}\n$ puppet --help > opt\n$ puppet help > cmd\n$ diff opt cmd\n{code}\n\nThe {{puppetserver}} command only supports {{--help}}. It would be really swell if it also supported {{help}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17340", "fixedVersions": [], "id": "17340", "issueType": "Improvement", "key": "SERVER-1633", "labels": ["maintenance", "usability"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Won't Do", "resolutionDate": "2018-10-29T17:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The puppetserver CLI should support the \"help\" command", "timeSpent": "PT0S", "updated": "2018-10-29T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "61af86343618cd006f430854", "body": "Closing ticket due to age/priority\n\nWe can re-consider & re-open if there is enough interest from the community", "created": "2021-12-22T11:39:00.000000"}], "components": [], "created": "2016-11-02T10:54:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36b321e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3rjb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Dec/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_170007_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_50825777882_*|*_10005_*:*_1_*:*_111266729497"}], "description": "This is a spin-off from SERVER-1477.  There is a lot of discussion about how to better deal with the fact that Puppet Server (implicitly via JRuby) requires Java's temp dir to be mounted with execute privileges in order for the server to run properly.  There are several options of improvements we could make on that front, but they all have pros and cons that are taking a while to sort through.\n\nIn the mean time, as suggested by [~accountid:557058:99353691-c8f3-4c51-89d9-230d3b76590e] on SERVER-1477, it should be relatively easy to add a check for this condition at server startup, and simply fail to start the server (with a helpful, actionable error message) if the condition is detected.  This ticket is intended to capture that work, as an intermediate step until we do something better for the long-term.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "14767", "fixedVersions": [], "id": "14767", "issueType": "Task", "key": "SERVER-1631", "labels": ["low-hanging-fruit", "usability"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2021-12-22T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "fail fast with better error message if temp dir is mounted 'noexec'", "timeSpent": "PT0S", "updated": "2021-12-22T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:44:00.000000"}], "components": [], "created": "2016-11-02T10:09:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@995f0b7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1586"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylzhr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server packages now include both the dependencies for JRuby 1.7 (running under Ruby language version 1.9.3) and for JRuby 9k (running under Ruby language version 2.3 or later).  By default, Puppet Server will use JRuby 1.7.  Users can choose to have Puppet Server run with JRuby 9k instead, however, by adding the following environment variable assignment to the \"/etc/sysconfig/puppetserver\" or \"/etc/default/puppetserver\" file and restarting the puppetserver process:\n\n  JRUBY_JAR=\"/opt/puppetlabs/server/apps/puppetserver/jruby-9k.jar\""}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_346274176_*|*_1_*:*_1_*:*_119029_*|*_10007_*:*_1_*:*_350262119_*|*_3_*:*_1_*:*_2234505716_*|*_5_*:*_1_*:*_4307879307_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_13335552285"}], "description": "While we eventually hope to be able to support JRuby 9k as the \"primary\" version of JRuby in Puppet Server, we've encountered some [blocker issues|https://github.com/jruby/jruby/issues/4112#issuecomment-242504130] that are currently impeding that transition.  It is possible, though, that some users may be wiling to live with or may not be too adversely affected by the performance and memory issues we've seen in some internal testing so far and would much rather trade those off for the ability to use MRI Ruby 2.3+ functionality on the server.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and I have talked about the possibility of packaging Puppet Server in such a way that a user could configure it to run with either JRuby 1.7.X or JRuby 9k.  This would likely involve some work with dependency configuration and possibly altering the Java command line used by the ezbake scripts to add in JRuby and its upstream dependencies via an extension to the CLASSPATH - as opposed to just picking those dependencies up via a Puppet Server uberjar.\n\nGiving at least OSS users the ability to at least experiment with JRuby 9k in Puppet Server could help us obtain some valuable feedback on how well this may already work in the \"real world\".\n\n", "epicLinkSummary": "Upgrade Puppet Server to JRuby 9k", "estimate": "PT0S", "externalId": "14765", "fixedVersions": ["SERVER 5.0.0"], "id": "14765", "issueType": "Task", "key": "SERVER-1630", "labels": [], "originalEstimate": "PT0S", "parent": "15657", "parentSummary": "Upgrade Puppet Server to JRuby 9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support user configuration of JRuby 1.7 or 9k in Puppet Server packaging", "timeSpent": "PT0S", "updated": "2018-04-17T08:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged to Beaker for BKR-703 - https://github.com/puppetlabs/beaker/pull/1283.  Moving this to \"blocked\" for now since we're waiting on a new Beaker release with the changes that we'll need to upgrade to in the Puppet Server CI pipeline.", "created": "2016-11-18T08:33:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "From [Build #46 from Nov 30th|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_full-stable/46/LAYOUT=ubuntu1604-64ma-32a,LDAP_TYPE=default,label=beaker/consoleFull] prior to the merge:\n{code}\n              - Test Case Summary for suite 'tests' -\n       Total Suite Time: 11170.54 seconds\n      Average Test Time: 34.37 seconds\n              Attempted: 325\n                 Passed: 264\n                 Failed: 0\n                Errored: 0\n                Skipped: 60\n                Pending: 1\n                  Total: 325\n{code}\n\n\nWhile after the merge in [Build #51 on Dec. 3rd|https://jenkins-master-prod-1.delivery.puppetlabs.net/job/platform_puppetserver_integration-system_no-conditional_full-stable/51/LAYOUT=ubuntu1604-64ma-32a,LDAP_TYPE=default,label=beaker/consoleFull]. The time for primary tests (not counting setup or teardown or waiting for resources) is roughly cut by 45%.\n{code}\n              - Test Case Summary for suite 'tests' -\n       Total Suite Time: 6135.56 seconds\n      Average Test Time: 18.88 seconds\n              Attempted: 325\n                 Passed: 264\n                 Failed: 0\n                Errored: 0\n                Skipped: 60\n                Pending: 1\n                  Total: 325\n{code}\n\nAdditionally, the total test time for the above cell (ubuntu 1604) during the two builds quoted above went from 3 hr 12 min to 1 hr 51 min (-42%). While the total test time for all cells for the same builds went from 3 hr 40 min to 2 hr 26 min (-33%).", "created": "2016-12-05T11:35:00.000000"}], "components": [], "created": "2016-11-02T09:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f3a7834"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1237"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymty7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_344343093_*|*_1_*:*_1_*:*_94721_*|*_3_*:*_1_*:*_335731352_*|*_5_*:*_1_*:*_109482779_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1135388697_*|*_10006_*:*_1_*:*_1045619474"}], "description": "This ticket is intended to track work to be done in Beaker to make use of the \"service reload\" functionality for the Puppet acceptance tests run via Beaker.  The ticket is related to BKR-703 and BKR-950.", "epicLinkSummary": "HUP service / ezbake integration", "estimate": "PT0S", "externalId": "15661", "fixedVersions": ["SERVER 5.0.0"], "id": "15661", "issueType": "Task", "key": "SERVER-1629", "labels": [], "originalEstimate": "PT0S", "parent": "16403", "parentSummary": "HUP service / ezbake integration", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-05T11:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate using reload/HUP for Puppet acceptance tests", "timeSpent": "PT0S", "updated": "2017-06-21T13:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Hi [~accountid:623c0c71a9575800695ac9d1].  A couple questions: first, when does this issue occur?  Is it seemingly random or is it related to some specific event, such as a code manager deployment?  Second, if you disable code manager, does the issue go away?\n\nAlso, if you are a PE customer, I'd suggest opening a ticket with support as they are best equipped to troubleshoot this sort of problem with you.  The SERVER project is for tickets against open-source Puppet Server.", "created": "2016-11-01T17:57:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "We haven't heard anything about this for weeks, or response to questions, closing.", "created": "2016-11-15T16:51:00.000000"}], "components": ["Performance", "Puppet Server"], "created": "2016-11-01T15:52:00.000000", "creator": "623c0c71a9575800695ac9d1", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@271e5dc0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9w8n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1216696217_*|*_6_*:*_1_*:*_0"}], "description": "Hello,\n\nWe have 2 puppet-servers in production and we have been experiencing an issue since last week where the CPU and the IO on Master Servers is suddenly spiking causing all the agents to become unresponsive. \n\nAfter we restart the puppet-services on both the servers, the issue gets resolved. \n\nThis was not happening before. The only recent change that we applied to this environment was to add code-manager.\n\nPlease advise on what could be the issue?", "environment": "Production", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15397", "fixedVersions": [], "id": "15397", "issueType": "Bug", "key": "SERVER-1627", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0c71a9575800695ac9d1", "resolution": "Incomplete", "resolutionDate": "2016-11-15T16:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Agents becoming disconnected due to high CPU and IO", "timeSpent": "PT0S", "updated": "2016-11-15T16:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Thanks Former user for filing this.\n\nWhat version of Puppet Server are you trying to install? Also would you mind including a list of steps to reproduce your issue? \n\ncc [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] ", "created": "2016-10-30T12:47:00.000000"}, {"author": "623cff80866b810069e4c1b8", "body": "Hello Moses,\n\nI am following this link for the installation of puppet on Centos-7.\n\nhttp://www.itzgeek.com/how-tos/linux/centos-how-tos/install-and-configure-puppet-on-centos-7-rhel-7.html\n\n\n\nOn Mon, Oct 31, 2016 at 12:18 AM, Moses Mendoza (JIRA) <\n\n\n\n-- \n*With Regards,*\n*T.V.R.L.PhaniKumar Dadi *\n*E-Mail: phanikumardadi.kumar@gmail.com <phanikumardadi.kumar@gmail.com>*\n*Phone: 9703905266*\n", "created": "2016-10-31T05:10:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Hi Former user, it looks like the page at that link notes that it is outdated, and links to a new one with updated instructions, http://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-install-puppet-4-x-on-centos-7-rhel-7.html. Perhaps try these, or better yet, use the installation docs at puppet.com (https://docs.puppet.com/puppet/latest/reference/install_pre.html) ? ", "created": "2016-11-01T16:20:00.000000"}], "components": ["Puppet Server"], "created": "2016-10-28T15:01:00.000000", "creator": "623cff80866b810069e4c1b8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28059784"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9usf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_164743491_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_40131427039"}], "description": "Hello team,\n\nI am trying to install puppet server on Centos-7 and I got the following error\n\nError: Package: 1:ruby-shadow-2.2.0-2.el6.x86_64 (puppetlabs-deps)\n           Requires: libruby.so.1.8()(64bit)\n You could try using --skip-broken to work around the problem\n You could try running: rpm -Va --nofiles --nodigest\n\nCould you please help me out on resolving this.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14806", "fixedVersions": [], "id": "14806", "issueType": "Bug", "key": "SERVER-1626", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623cff80866b810069e4c1b8", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-06T23:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to install puppet-server on Centos-7", "timeSpent": "PT0S", "updated": "2018-02-06T23:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1814e1a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t7b:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2324_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1208181849"}], "description": "(Initial planned release date: 2016-11-08)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.7.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16493", "fixedVersions": [], "id": "16493", "issueType": "Sub-task", "key": "SERVER-1624", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-10T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d31459e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t73:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2349_*|*_5_*:*_1_*:*_192634_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1207988370"}], "description": "(Initial planned release date: 2016-11-08)\n\nUpdate dujour to notify users to use 2.7.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16235", "fixedVersions": [], "id": "16235", "issueType": "Sub-task", "key": "SERVER-1623", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-10T11:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.7.0 (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b9b3bb0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t6v:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2378_*|*_5_*:*_1_*:*_725320_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1207454255"}], "description": "(Initial planned release date: 2016-11-08)\n\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15969", "fixedVersions": [], "id": "15969", "issueType": "Sub-task", "key": "SERVER-1622", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-10T11:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37d79ca1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t6n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2410_*|*_5_*:*_1_*:*_171061_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1208007039"}], "description": "(Initial planned release date: 2016-11-08)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15660", "fixedVersions": [], "id": "15660", "issueType": "Sub-task", "key": "SERVER-1621", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-10T11:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b8a6ed5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t6f:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2353_*|*_3_*:*_1_*:*_5636081_*|*_5_*:*_1_*:*_81686697_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1120854912"}], "description": "(Initial planned release date: 2016-11-08)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15396", "fixedVersions": [], "id": "15396", "issueType": "Sub-task", "key": "SERVER-1620", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-09T12:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e7e1782"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t67:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2503_*|*_5_*:*_1_*:*_87323120_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1120852028"}], "description": "(Initial planned release date: 2016-11-08)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15089", "fixedVersions": [], "id": "15089", "issueType": "Sub-task", "key": "SERVER-1619", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-09T11:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "All the relevant parties are on board", "created": "2016-11-09T10:58:00.000000"}], "components": [], "created": "2016-10-27T12:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12a247bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t5z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2517_*|*_5_*:*_1_*:*_87472134_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1120702078"}], "description": "(Initial planned release date: 2016-11-08)\n\nThis should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14805", "fixedVersions": [], "id": "14805", "issueType": "Sub-task", "key": "SERVER-1618", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-09T10:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "I manually smoke tested upgrades on cent 5/6 and xenial with the packages at http://builds.delivery.puppetlabs.net/puppetserver/2.7.0/", "created": "2016-11-08T14:21:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Full acceptance tests passed for the build in CI", "created": "2016-11-08T16:04:00.000000"}], "components": [], "created": "2016-10-27T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4abee42e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t5r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2288_*|*_5_*:*_1_*:*_155504888_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1052667383"}], "description": "(Initial planned release date: 2016-11-08)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17339", "fixedVersions": [], "id": "17339", "issueType": "Sub-task", "key": "SERVER-1617", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-08T16:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Packages were created via the automation already", "created": "2016-11-08T17:52:00.000000"}], "components": [], "created": "2016-10-27T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47c9baac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t5j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2303_*|*_5_*:*_1_*:*_149029108_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1059141853"}], "description": "(Initial planned release date: 2016-11-08)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17126", "fixedVersions": [], "id": "17126", "issueType": "Sub-task", "key": "SERVER-1616", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-08T17:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@446d11aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t5b:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2339_*|*_5_*:*_1_*:*_127662_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1208041866"}], "description": "(Initial planned release date: 2016-11-08)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16802", "fixedVersions": [], "id": "16802", "issueType": "Sub-task", "key": "SERVER-1615", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-10T11:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a21dd6b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t53:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2311_*|*_5_*:*_1_*:*_82006403_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1126161046"}], "description": "(Initial planned release date: 2016-11-08)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16492", "fixedVersions": [], "id": "16492", "issueType": "Sub-task", "key": "SERVER-1614", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-09T12:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "CI is green", "created": "2016-11-08T16:05:00.000000"}], "components": [], "created": "2016-10-27T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7359dd24"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t4v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_426356322_*|*_1_*:*_1_*:*_2270_*|*_10007_*:*_1_*:*_16130819_*|*_3_*:*_1_*:*_6597732_*|*_5_*:*_1_*:*_155446237_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_603635042"}], "description": "(Initial planned release date: 2016-11-08)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16234", "fixedVersions": [], "id": "16234", "issueType": "Sub-task", "key": "SERVER-1613", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-08T16:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e7bcf51"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t4n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_13490785_*|*_1_*:*_1_*:*_2349_*|*_3_*:*_1_*:*_341837258_*|*_5_*:*_1_*:*_155424588_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_697412266"}], "description": "(Initial planned release date: 2016-11-08)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15966", "fixedVersions": [], "id": "15966", "issueType": "Sub-task", "key": "SERVER-1612", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-08T16:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Tickets that came up, and reasons not to worry about them:\n\nPE-17071 - Closed, but can't put server fix versions on pe tickets\nQENG-4310 - Not server code\nQENG-4425 - Puppetserver related code has been merged\nSERVER-1542 - Docs changes from support escalation that hasn't been closed\nSERVER-797 - Test improvements, no new code\nUNRESOLVED ISSUES NOT FOUND IN GIT\nSERVER-1582 - Docs changes", "created": "2016-11-03T11:45:00.000000"}], "components": [], "created": "2016-10-27T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49d89457"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t4f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2349_*|*_3_*:*_1_*:*_44224_*|*_5_*:*_1_*:*_606635892_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_601483963"}], "description": "(Initial planned release date: 2016-11-08)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15659", "fixedVersions": [], "id": "15659", "issueType": "Sub-task", "key": "SERVER-1611", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-03T11:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "CI is green, puppet agent dependency is correct, no outstanding code changes in the pipline", "created": "2016-11-03T11:44:00.000000"}], "components": [], "created": "2016-10-27T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ba844cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9t47:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2259_*|*_3_*:*_1_*:*_77728124_*|*_5_*:*_2_*:*_606794464_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_523640254"}], "description": "(Initial planned release date: 2016-11-08)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.7.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15395", "fixedVersions": [], "id": "15395", "issueType": "Sub-task", "key": "SERVER-1610", "labels": [], "originalEstimate": "PT0S", "parent": "15088", "parentSummary": "puppetserver 2.7.0 2016-11-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-03T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.7.0)", "timeSpent": "PT0S", "updated": "2016-11-10T11:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-10-27T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ead8df2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9wr3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2227_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1208257683"}], "description": "puppetserver 2.7.0 2016-11-08 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15088", "fixedVersions": [], "id": "15088", "issueType": "Task", "key": "SERVER-1609", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-10T11:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.7.0 2016-11-08 Release", "timeSpent": "PT0S", "updated": "2016-11-10T11:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-10-27T08:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e7cbbba"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtzb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_464925344_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16800", "fixedVersions": [], "id": "16800", "issueType": "Task", "key": "SERVER-1608", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2016-11-01T17:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add lein-parent to pe-puppet-server-extensions", "timeSpent": "PT0S", "updated": "2016-11-01T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-10-25T11:40:00.000000", "creator": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f3fc8c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-1"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "=============="}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_grey"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbmv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_60610765855_*|*_6_*:*_1_*:*_0"}], "description": "This is a fake epic that we are using for some temp backlog organization. Please ignore. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17338", "fixedVersions": [], "id": "17338", "issueType": "Epic", "key": "SERVER-1607", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "resolution": "Fixed", "resolutionDate": "2018-09-26T23:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "================", "timeSpent": "PT0S", "updated": "2018-09-26T23:59:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-10-25T10:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b23e818"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9pdz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11468_*|*_10007_*:*_1_*:*_166016467_*|*_3_*:*_2_*:*_81345819_*|*_10009_*:*_1_*:*_431354075_*|*_5_*:*_2_*:*_11093429_*|*_10006_*:*_1_*:*_130918"}], "description": "This is an offshoot of SERVER-1557.\n\nThe perf testing jobs need a way to configure the maximum number of builds to retain in their history, to prevent us from using up too much disk space over time.\n\nThis needs to be configurable on a per-job basis, because some types of jobs (short jobs that run for 2  hours or so) should be able to keep a great deal of history around, while long-running jobs (e.g. the week-long runs) need to keep a smaller history.\n\nThis shouldn't be hard to do via the JobDSL plugin, but I'm not sure yet how we will wire it into the individual job definitions.  I suspect we'll need to create a second file that lives alongside the {{Jenkinsfile}}s, perhaps called {{job_properties.json}} or something, that the JobDSL seed job can look for and leverage during the job creation process.  This is going to be necessary for other features related to perf testing automation in the future, so however we implement it w/rt max build history, we need to make sure it's extensible to support other job parameters as well.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17124", "fixedVersions": [], "id": "17124", "issueType": "Bug", "key": "SERVER-1605", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-02T09:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add 'max build history' setting to perf jobs", "timeSpent": "PT0S", "updated": "2017-01-25T13:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-10-25T10:10:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2531ff04"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9o5b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10734_*|*_10007_*:*_1_*:*_61398385_*|*_3_*:*_1_*:*_104609647_*|*_10009_*:*_1_*:*_431350938_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_92842300"}], "description": "This is an offshoot of SERVER-1557.  We decided that a combination of compressing the gatling {{simulation.log}} file and limiting the max build history for jobs would be sufficient for now in terms of dealing with disk usage on the perf driver nodes.\n\nThis ticket covers the work of compressing the {{simulation.log}} files during archiving.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16799", "fixedVersions": [], "id": "16799", "issueType": "Bug", "key": "SERVER-1604", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-02T09:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "compress gatling simulation.log file when archiving", "timeSpent": "PT0S", "updated": "2017-01-25T13:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This  ended up breaking down into a few different issues:\n\n1) If a cent7 repo didn't exist for the latest build on the build server, the job would hang indefinitely due to what appears to be a bug in beaker.  I filed this as BKR-971, with a simpler reproducer, and am otherwise punting on it for now.\n\n2) Filed a PR that adds some logic to check explicitly for the existence of a cent7 repo in the build dir, and fall back to the next most recent build if the cent7 repo isn't there.  This should make it significantly less likely that we run into the issue that caused the hang in the first place.", "created": "2016-10-31T09:38:00.000000"}], "components": [], "created": "2016-10-25T10:01:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1166b618"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9o5j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_453441_*|*_10007_*:*_1_*:*_9918565_*|*_3_*:*_1_*:*_318820110_*|*_10009_*:*_1_*:*_164070220_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_197576886"}], "description": "Lately I'm seeing a handful of jobs that look like this:\n\nhttp://puppetserver-perf-driver68-dev.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest/2/console\n\nWhere the job detects the 'latest' version available of puppetserver is {{2.6.1.master.SNAPSHOT.2016.10.21T1703}}, but then it gets a 404 like this:\n\n{code}\n RuntimeError: Failed to fetch_remote_file 'http://builds.delivery.puppetlabs.net/puppetserver/2.6.1.master.SNAPSHOT.2016.10.21T1703/repo_configs/rpm/pl-puppetserver-2.6.1.master.SNAPSHOT.2016.10.21T1703-el-7-x86_64.repo'\n{code}\n\nWhen this  happens the job seems to hang indefinitely (I've seen it hang for over 24 hours) until you abort it via the Jenkins GUI.\n\nMy guess is that the packaging job for the corresponding SNAPSHOT failed in CI, but that we're detecting the latest version available just from the directory structure.  So, we should do a couple of things here:\n\n1. See if we can figure out why it's hanging instead of exiting - it really should just fail when it gets into that state.\n2. Look into the code that detects the 'latest' version, and have it look for the full path to the {{.repo}} file instead of just the directory structure, so that we don't end up kicking off jobs that can't succeed.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16233", "fixedVersions": [], "id": "16233", "issueType": "Bug", "key": "SERVER-1603", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-02T09:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Perf test jobs hang if \"latest\" build can't be found", "timeSpent": "PT0S", "updated": "2017-01-25T13:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [c48b9b6|https://github.com/puppetlabs/puppetserver/commit/c48b9b669da030d04cc0152c15a86b35ddc6bdf1].  Moving this to resolved.", "created": "2016-10-28T10:55:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Could you add release notes for this ticket?", "created": "2016-11-07T11:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0].  I added a release note to the ticket.", "created": "2016-11-07T19:01:00.000000"}], "components": [], "created": "2016-10-21T13:23:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6080d913"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9pdr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously, if the system's default umask did not permit world-readability for gems that the 'puppetserver gem' subcommand was used to install, the resulting gemspec files might end up not being usable at run-time by the puppetserver service, leading to errors like the following:\n\n> Exception in thread \"main\" org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- trollop\n> Exception in thread \"main\" org.jruby.exceptions.RaiseException: (Errno::EACCES) /opt/puppetlabs/server/data/puppetserver/jruby-gems/specifications/trollop-2.1.2.gemspec\n\nIn this release, a umask of 0022 is now explicitly set when any 'puppetserver gem' command is run, ensuring that any gems installed by the gem subcommand are usable at run-time by puppetserver."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7362105_*|*_10007_*:*_1_*:*_588570535_*|*_5_*:*_1_*:*_0"}], "description": "Per a [recent change in ezbake|https://github.com/puppetlabs/ezbake/pull/368], CLI apps now run with a default umask of 027.  This could be problematic for the puppetserver gem subcommand.  When users run that subcommand, it would very likely be as the root user.  As noted in ENTERPRISE-552, though, if the creation of the \"specification\" gem subdirectory is done as the root user and if the subdirectory is not made world-readable, the puppetserver master process, because it runs as user puppet/pe-puppet, would have insufficient permissions to read gemspec files and would, therefore, fail to load/use a gem properly.\n\nUsing the trollop gem as an example, load errors might look like:\n\n{noformat}\nException in thread \"main\" org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- trollop\nException in thread \"main\" org.jruby.exceptions.RaiseException: (Errno::EACCES) /opt/puppetlabs/server/data/puppetserver/jruby-gems/specifications/trollop-2.1.2.gemspec\n{noformat}\n\nGems installed via the gem subcommand should allow for the installed artifacts to be readable by the puppet/pe-puppet user.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17122", "fixedVersions": ["SERVER 2.7.0"], "id": "17122", "issueType": "Bug", "key": "SERVER-1601", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-10-28T10:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ensure puppetserver gem command allows installed gems to be readable", "timeSpent": "PT0S", "updated": "2017-02-09T15:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-10-20T11:04:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1633fcb8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1577"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9o53:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_344688266_*|*_1_*:*_1_*:*_39513_*|*_10007_*:*_1_*:*_518865915_*|*_3_*:*_1_*:*_7994247_*|*_10009_*:*_1_*:*_147831752_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_99400448"}], "description": "Now that we have had some successful CI runs of a puppetserver build that includes some vendored gems, we need to add {{gettext}} and related gems that will be required for upcoming internationalization work in {{puppet-agent}}.\n\nAfter talking with [~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] I believe this is the list of gems we need:\n\n{code}\nfast_gettext 1.1.0\ngettext-setup 0.6\ngettext 3.2.2\nlocale 2.1.2-2\ntext 1.3.1\n{code}", "epicLinkSummary": "puppetserver gem packaging", "estimate": "PT0S", "externalId": "16797", "fixedVersions": ["SERVER 2.7.0"], "id": "16797", "issueType": "Task", "key": "SERVER-1600", "labels": [], "originalEstimate": "PT0S", "parent": "16793", "parentSummary": "puppetserver gem packaging", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-02T09:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add gettext and related gems to puppetserver packaging", "timeSpent": "PT0S", "updated": "2016-11-02T14:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "The puppet master needs to restart to reload an updated CRL. Could that be what's happening?", "created": "2016-10-25T13:00:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "We have restarted the puppetmaster several times.. (it does not always handle updating functions etc. when we change them :) the cert on puppetdb was updated several months ago - only issue we ever saw, was the puppet node deactivate issue.", "created": "2016-10-26T02:35:00.000000"}, {"author": "623a4603761efb0069cd34da", "body": "This just happend to us as well. Seems this is still broken.", "created": "2017-08-18T07:07:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is the user facing effect of why to do SERVER-215. Closing this as the work itself will be done in SERVER-215 when prioritized, linking the two so we can continue to see the effects on users.", "created": "2018-02-16T12:14:00.000000"}], "components": [], "created": "2016-10-20T06:19:00.000000", "creator": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c960f2e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9ox3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2892525390_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_38950014782"}], "description": "We accidently revoked our puppetdb hosts puppet cert, and we just issued a new one so puppet agent worked again.\n\nBut we had a weird issue with puppet node deactivate complaining that our puppetdb nodes cert was revoked - and yet our exported resources etc. worked just fine.\n\nI found out that since puppetdb SSL setup - is done by getting a copy of the puppet agent certs - it indeed had the old certs - which were revoked.. so it seems puppet does not do CRL checking in its communications with puppetdb. (except for puppet node stuff atleast :)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17016", "fixedVersions": [], "id": "17016", "issueType": "Bug", "key": "SERVER-1628", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "resolution": "Duplicate", "resolutionDate": "2018-02-16T12:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet does not check for revoked cert against puppetdb connection", "timeSpent": "PT0S", "updated": "2018-02-16T12:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:70121:ef2e2611-7893-499f-94ad-b7b2245beace]] Could you add a blerb to the release notes for this ticket?", "created": "2016-11-07T11:35:00.000000"}, {"author": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] - Here's a release note summary!", "created": "2016-11-07T11:41:00.000000"}], "components": [], "created": "2016-10-19T12:11:00.000000", "creator": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ad9333e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9ohb:"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This ticket enables users to opt-out of update checking in puppetserver. If users do not want puppetserver to check for updates from Puppets servers, they can set `check-for-updates` to false in puppetserver.conf and restart puppetserver. Otherwise, update checking will be on by default."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_772428_*|*_10007_*:*_1_*:*_423588434_*|*_6_*:*_1_*:*_0"}], "description": "FOSS puppetserver has never had a way to let its users opt out of data collection. This ticket should be around enabling users to opt-out of data collection. It should function the same way PE puppetserver works, which is to check for a file on disk. If it exists, the user has opted out.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14804", "fixedVersions": ["SERVER 2.7.0"], "id": "14804", "issueType": "Bug", "key": "SERVER-1599", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "resolution": "Fixed", "resolutionDate": "2016-10-24T10:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable FOSS puppetserver users to opt-out of data collection", "timeSpent": "PT0S", "updated": "2016-11-08T13:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The related PUP ticket got moved to server, and since it has more detail, I'm closing this one in favor of that one.", "created": "2019-09-30T11:23:00.000000"}], "components": ["Puppet Server"], "created": "2016-10-17T12:10:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50589dad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9ml3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3388638_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_52200444012_*|*_10005_*:*_1_*:*_40932594670"}], "description": "Per PUP-6824 we should change puppetserver to use v4 UUIDs for certificate serial numbers instead of monotonically increasing serial numbers.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16796", "fixedVersions": [], "id": "16796", "issueType": "Improvement", "key": "SERVER-1595", "labels": ["ca"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Duplicate", "resolutionDate": "2019-09-30T11:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use UUIDs for certificate serial numbers", "timeSpent": "PT0S", "updated": "2019-09-30T11:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:8527c9e8-8e3f-451c-b529-f6fe014233ed", "body": "[~accountid:557058:adac4e58-01ac-4fce-8be9-94131c26c73d] I believe HA is under your purvue now. This is more or less a papercut but could solve some of the complexities in HA that are currently being worked around. [~accountid:557058:18109e62-1b97-4fa3-8217-9c25de3a4710] and I touched on this a bit in our Puppet Conf talk last year https://www.youtube.com/watch?v=lUSPOgXKwV8&t\n\nWe work around this in HA right now by offset indexing, adding 10000(?) to the replica CA so that any certs that get signed will not conflict on with the serials on the primary. However, none of that would be needed if we implement this fairly simple solution where it's not a  consecutive number being incremented. I also feel like when we have locking issues or APIs that are behaving badly, you also wouldn't ever see an issue with duplicate serial numbers being distributed as uuids are often unique across time and space.\n\nI can't see anything backward incompatible about this ticket and as most programming languages have uuid generation support I feel like it would be easy to implement.  Probably the biggest win here might be simplifying failback of primary as there would never be a concern about the serial point in history, you mostly have to only worry about the signed directory on disk. \n", "created": "2017-10-27T18:19:00.000000"}, {"author": "557058:adac4e58-01ac-4fce-8be9-94131c26c73d", "body": "[~accountid:557058:8527c9e8-8e3f-451c-b529-f6fe014233ed] thanks for bringing this to my attention, would this just be a puppet server fix? or something done in enterprise?", "created": "2017-11-02T11:49:00.000000"}, {"author": "557058:8527c9e8-8e3f-451c-b529-f6fe014233ed", "body": "[~accountid:557058:adac4e58-01ac-4fce-8be9-94131c26c73d] The tooling is split between some ruby code `puppet cert` and puppet server (cert API). The only way I'm aware for us to ship this only in PE, would be to make it a PE - Server extension. I don't know of us doing a ruby change like this in PE only though. That's mostly to say it's likely a core puppet change *and* a puppet server change. Once it was done though we would want to create a ticket to fix the \"offset indexing\" we do in PE HA, so those changes will all be in PE only. \n\nThis solves a sort of minor problem that can have major considerations for PE HA over time. I think it's worth mentioning that this is more or less a band-aid but would be a good first step though. Specifically, this might over time allow us to support Active/Active CAs. Given you don't have worry about what number you are at on the primary vs replica it solves the \"who is in charge of signing certs problem\". \n\nIt doesn't solve the \"who is in charge of revoking certs problem\", though for my money I think if we implement the OCSP covered in OPTY-99 would do that in the long term by decentralizing the certificate revocation list.\n\nI think to move to Active / Active HA over time, or at a bare minimum allowing easier fail back in PE HA, would be helped by this ticket as it negates the possible collisions that could occur. ", "created": "2017-11-02T13:21:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The CA code is entirely in Clojure now, in puppetserver. I'll move this ticket to the SERVER project and put it with some other tickets to consider when we start looking at HA again.", "created": "2019-09-30T11:21:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Closing ticket due to age/priority\n\nWe can re-consider & re-open if there is enough interest from the community", "created": "2021-12-22T11:38:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "BouncyCastle requires the [serial number to be a BigInteger|https://www.bouncycastle.org/docs/pkixdocs1.5on/org/bouncycastle/cert/X509v3CertificateBuilder.html], and while it's possible to convert a 128-bit UUID to a BigInteger, it requires plumbing changes to make that happen and isn't as simple as it would seem.\n\n", "created": "2022-12-06T16:59:00.000000"}, {"author": "619528076d002b006b1c1e8d", "body": "Does not move us towards our goal - there are better approaches.", "created": "2023-02-28T12:19:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "[~accountid:619528076d002b006b1c1e8d] which approaches are better? And what's the goal, active/active CA setups?", "created": "2023-02-28T12:34:00.000000"}], "components": [], "created": "2016-10-17T12:06:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@503bfcc2"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - $$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - 50-90% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This would seem to be a simple fix that would help avoid serial collisions and also make HA simpler."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - Serious"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylms7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3624273_*|*_6_*:*_2_*:*_27056350416_*|*_10006_*:*_1_*:*_52200927695_*|*_10005_*:*_2_*:*_121623515214"}], "description": "Puppet has historically used a monotonically increasing serial number when signing certificates, which is the default behavior for the underlying library, OpenSSL. However [RFC 5280 4.1.2.2|https://tools.ietf.org/html/rfc5280#section-4.1.2.2] indicates that serial numbers need only be 20 byte non-negative integers. We should switch to using 16 byte v4 UUIDs to reduce the likelihood of serial number collisions and make it easier to sign CSRs on multiple masters with the same CA certificate and key pair.\n\nSee also [redmine #6725|https://projects.puppetlabs.com/issues/6725].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16232", "fixedVersions": [], "id": "16232", "issueType": "Improvement", "key": "SERVER-2640", "labels": ["ca", "final_triage", "the-goods"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "resolution": "Won't Do", "resolutionDate": "2023-02-28T12:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use UUIDs for certificate serial numbers", "timeSpent": "PT0S", "updated": "2023-02-28T12:34:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] You may also want to bump \"semantic_puppet\" to the latest version in the PR that you put up for this.  I didn't do that because the changelog for semantic_puppet seems to imply that the latest version has a dependency on gettext.", "created": "2016-10-13T12:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Note: I spaced out and forgot this ticket existed", "created": "2016-10-20T11:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm going to repurpose this ticket to track updating the gettext-setup gem to the new version needed for the string externalization work in puppet (see PUP-6474).", "created": "2016-11-30T15:37:00.000000"}], "components": ["Puppet Server"], "created": "2016-10-13T12:31:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f82fab7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "QA Risk Assessment Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Enabling work for changes tested elsewhere"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynxy7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_351212121_*|*_1_*:*_1_*:*_468265339_*|*_10007_*:*_1_*:*_66211219_*|*_5_*:*_1_*:*_102909176_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_3700359745"}], "description": "In order for i18n to work server-side, we will need to vendor gettext-setup in the puppet-server. That work is currently blocked on the Gem vendoring work being done in SERVER-1412.\n\n*Update:* the gettext gems were vendored as part of SERVER-1600 as mentioned in the comments, but in the course of adding the gem to Puppet itself, we discovered we needed a few modifications. Puppet now depends on gettext-setup > 0.7, so the gem version will need to be updated in puppet-server.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17015", "fixedVersions": ["SERVER 2.7.2"], "id": "17015", "issueType": "Task", "key": "SERVER-1593", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2016-12-05T13:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update gettext-setup gem puppet-server", "timeSpent": "PT0S", "updated": "2016-12-06T18:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [], "components": [], "created": "2016-10-12T17:28:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13c00cd9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9ihb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3733_*|*_3_*:*_1_*:*_86147030_*|*_5_*:*_1_*:*_0"}], "description": "Put together a support training on metrics improvements for Puppet Server in Davis - to be delivered 13 October.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17013", "fixedVersions": [], "id": "17013", "issueType": "Improvement", "key": "SERVER-1592", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-10-13T17:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support training on metrics", "timeSpent": "PT0S", "updated": "2016-10-13T17:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-10-10T15:36:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50c3953c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymrzj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_318611_*|*_10007_*:*_1_*:*_78608819_*|*_3_*:*_1_*:*_7582767_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_45259"}], "description": "On our first attempt to build an ezbake package from a project that uses {{lein-parent}}, we ran into an error:\n\n{code}\nUberjar aborting because jar failed: nil\nError encountered performing task 'ezbake' with profile(s): 'ezbake'\nUberjar aborting because jar failed: nil\n{code}\n\nI'm guessing that maybe lein-ezbake has a dependency on an older version of leiningen that doesn't support {{:managed-dependencies}}, but I need to debug.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16491", "fixedVersions": ["SERVER 2.7.0"], "id": "16491", "issueType": "Bug", "key": "SERVER-1591", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-10-11T15:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "ezbake builds fail on projects using lein-parent", "timeSpent": "PT0S", "updated": "2016-11-07T18:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I tested this here:\n\nhttp://puppetserver-perf-driver68-dev.delivery.puppetlabs.net:8080/job/oss-puppetserver-latest/\n\nIn case that job ever gets deleted, the tl", "created": "2016-10-11T16:25:00.000000"}], "components": [], "created": "2016-10-10T12:11:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e15ef9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9cvr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_17322_*|*_10007_*:*_1_*:*_3050_*|*_3_*:*_1_*:*_101562201_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_19246"}], "description": "We currently have 3 boxes we use for automated perf testing: puppetserver-perf-sut54, puppetserver-perf-sut56, and puppetserver-perf-sut57.\n\nThese boxes should all have exactly the same hardware and therefore should be roughly interchangeable for use in perf testing.  However, it would be valuable to have a baseline run that we perform against all 3 of them to validate that the numbers come out roughly the same.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16795", "fixedVersions": ["None"], "id": "16795", "issueType": "Task", "key": "SERVER-1590", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-10-11T16:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate that our 3 SUT boxes are interchangeable", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [e68571|https://github.com/puppetlabs/puppetserver/commit/e685713814f354e127337cff3235cc2c6a8dafb6].  Full Jenkins acceptance test suite passed at https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/249/.  Moving this to resolved...", "created": "2016-10-12T00:31:00.000000"}], "components": [], "created": "2016-10-09T09:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@749e4c00"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1237"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9cvj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppet Server log file archives return to using the .gz extension\n* The maximum size a log file can reach before it is archived has been bumped to 200MB"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_81970185_*|*_10007_*:*_1_*:*_140095726_*|*_3_*:*_1_*:*_4309142_*|*_5_*:*_1_*:*_0"}], "description": "After some discussions with other Puppet component teams (including PuppetDB) for the work in the SERVER-1237 epic, we've decided that we want to use the following parameters for logback log rotation:\n\n- maxFileSize: 200 MB\n- maxHistory: 90\n- totalSizeCap: 1 GB\n- fileNamePattern extension: .gz\n\nOSS PuppetDB has already been using \".gz\" for the {{fileNamePattern}} extension in their logback log rotation and {{logrotate}} configuration for Puppet components has been using \".gz\" as well.  For Puppet Server 2.6.0, we used the agreed upon values for {{maxHistory}} and {{totalSizeCap}}, however, we had gone with 10 MB for the {{maxFileSize}} and \".zip\" for the {{fileNamePattern}} extension.  We should update these two parameters in the Puppet Server log configuration so that it will be consistent with that used for other Puppet components.", "epicLinkSummary": "HUP service / ezbake integration", "estimate": "PT0S", "externalId": "14803", "fixedVersions": ["SERVER 2.7.0"], "id": "14803", "issueType": "Task", "key": "SERVER-1589", "labels": [], "originalEstimate": "PT0S", "parent": "16403", "parentSummary": "HUP service / ezbake integration", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-10-12T00:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Switch logback log rotation to 200 MB maxFileSize and .gz file type", "timeSpent": "PT0S", "updated": "2016-11-07T11:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-10-04T09:59:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61e9df8b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Upgrade Puppet Server to JRuby 9k"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbc7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19349705396_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_3277438976"}], "description": "This is a continuation of the \"Investigate upgrading to JRuby 9k\" epic, SERVER-1122.  Coming out of that work, we submitted some [blocker issues|https://github.com/jruby/jruby/issues/4112#issuecomment-242504130] to the JRuby community which would block our immediate migration to JRuby 9000.  This ticket will need to be fleshed out more but for now can serve as a placeholder for the various items that we may need to do to complete the transition.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15657", "fixedVersions": [], "id": "15657", "issueType": "Epic", "key": "SERVER-1586", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-23T07:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade Puppet Server to JRuby 9k", "timeSpent": "PT0S", "updated": "2018-01-11T16:32:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] fyi, I put up the puppetserver repo PR for this ticket at https://github.com/puppetlabs/puppetserver/pull/1250.  So you shouldn't need to worry about doing that.", "created": "2016-10-20T13:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [9cb6853|https://github.com/puppetlabs/puppetserver/commit/9cb6853e6774ccfa635066bdbc3779b83c49fd64].  Tests were green at that point in time, so marking this resolved.", "created": "2016-10-25T12:14:00.000000"}], "components": [], "created": "2016-10-04T09:26:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@420ee3bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymn1b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Allow JRuby compat-version to be configured via puppetserver.conf"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_30080889_*|*_10007_*:*_1_*:*_426674546_*|*_3_*:*_1_*:*_506375762_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_861398373"}], "description": "In Puppet Server and the jruby-utils library it uses, JRuby 1.7 has been hardcoded to work in \"1.9\" MRI Ruby compatibility mode.  JRuby 1.7.x supports the ability to run in MRI Ruby emulation version 1.8, 1.9, or 2.0, though.\n\nEventually, we would like to be able to upgrade Puppet Server to use JRuby 9000, which supports MRI Ruby 2.3.  As we still have some [blockers in JRuby|https://github.com/jruby/jruby/issues/4112#issuecomment-242504130] that are preventing us from being able to do this migration and are seeing an increasing number of newer gems that require 2.0 or greater MRI Ruby version support -- see SERVER-1544 -- it seems worthwhile to consider making the \"compat mode\" version externally configurable.  This would allow users to at least have an option to try to use MRI Ruby 2.0 features in Puppet Server until it is viable to switch to using JRuby 9000 instead.\n\nThis ticket would involve work both in Puppet Server and in the JRuby Utils library.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16794", "fixedVersions": ["SERVER 2.7.0"], "id": "16794", "issueType": "Improvement", "key": "SERVER-1585", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-10-25T12:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow JRuby compat-version to be configurable", "timeSpent": "PT0S", "updated": "2016-11-07T11:50:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "An example Pry configuration that re-produces or works around these issues can be found here:\n\nhttps://gist.github.com/Sharpie/7b9baf8fb14e65634c99", "created": "2016-10-03T17:47:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I actually would still like to get something like this in. I haven't used this workflow in a long time, partially because I know it doesn't work well.", "created": "2020-01-29T09:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We can reopen this if we ever actually get around to it, but for now, closing because it's super low down on the list.", "created": "2021-02-18T16:50:00.000000"}], "components": ["Puppet Server"], "created": "2016-10-03T17:44:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19e9474f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1313"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz98dj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_689542864_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_137464417460"}], "description": "Puppet Server currently requires a couple of tweaks in order for the {{pry-nav}} debugger to run cleanly:\n\n  - The {{TERM}} environment variable has to be restored to something like {{xterm}}. Pry checks the value of this variable and disables syntax highlighting if it can't determine that ANSI escape sequences are supported.\n\n  - Tab-completion doesn't work for some reason --- likely due to issues with Readline support. This is odd because tab-completion works fine in a pry shell running directly under JRuby.\n\n  - Pry falls back to a very basic more-like pager under JRuby. This can be clunky enough that disabling paging altogether can provide a smoother debugging flow.", "epicLinkSummary": "Improved JRuby Debugging UX", "estimate": "PT0S", "externalId": "17337", "fixedVersions": [], "id": "17337", "issueType": "Improvement", "key": "SERVER-1584", "labels": [], "originalEstimate": "PT0S", "parent": "14734", "parentSummary": "Improved JRuby Debugging UX", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Won't Fix", "resolutionDate": "2021-02-18T16:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve pry debugger functionality under puppetserver foreground", "timeSpent": "PT0S", "updated": "2021-02-18T16:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:623c130a562ab90069f8b377], I can't tell from that stack trace where exactly it's raising, but my guess is here: https://github.com/puppetlabs/puppetserver/blob/2.6.0/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1242 which would mostlikely come from the {{:shortname}} field not being set in the csr_attributes.yaml file. Could that be an issue?", "created": "2016-10-18T15:44:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "FWIW, I've opened a PR here https://github.com/puppetlabs/puppetserver/pull/1246 to add the shortname mappings to the clj CA as well.", "created": "2016-10-18T15:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] - I think I was the one who pasted in that stack trace.  Sorry I didn't dig into it any further at the time.  I think all I did to recreate that was to include a short name in my csr_attributes.yaml file that wasn't one of the ones in the hardcoded list in the Puppet Server code.  For example, without the changes in your PR, I think I would have been able to reproduce this by putting {{pp_role: somerole}} as an {{extension_requests}} element in the csr_attributes.yaml file.  Might be that any arbitrary short name string that can't be matched to a keyword in the {{puppet-short-names}} function would lead to an error like that. ", "created": "2016-10-18T16:13:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Thanks [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], working on reproducing now.", "created": "2016-10-19T11:11:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Mmm... I'll look more into this but I haven't yet been able to reproduce it. Steps I've taken so far:\n\nOn a fresh 2016.4.0 build:\n\nTried to restart pe-puppetserver with a totally bogus csr_attributes.yaml:\n{code}\n[root@x468323pq2egc4k puppet-enterprise-2016.4.0-el-7-x86_64]# cat /etc/puppetlabs/puppet/csr_attributes.yaml\ncustom_attributes:\n    1.2.840.113549.1.9.7: mySuperAwesomePassword\n    1.3.6.1.4.1.34380.1.1.19: 'whatever'\n    whats_going_on: 'yeah, whats going on'\nextension_requests:\n    pp_instance_id: foo\n    pp_image_name:  bar\n    1.3.6.1.4.1.34380.1.1.20: yeah\n    pp_how_do_computers_even_work: 'I have no idea what Im doing'\n\n[root@x468323pq2egc4k puppet-enterprise-2016.4.0-el-7-x86_64]# systemctl restart pe-puppetserver.service\n\n[root@x468323pq2egc4k puppet-enterprise-2016.4.0-el-7-x86_64]# systemctl status pe-puppetserver.service                                                                                                     \npe-puppetserver.service - pe-puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/pe-puppetserver.service", "created": "2016-10-19T11:58:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "So the error seems not to be restarting the server and reading the file but when first starting the server and generating its certificates (a crucial distinction that I missed on my first read/repro attempt). I am able to create a stacktrace and have the start up fail both locally in the repl and in PE 2016.4.0 by placing the bogus csr_attributes.yaml shown above in the master's confdir, removing the contents of the ssldir, and then restarting the master service. However, in both instances I do not see the unfriendly stacktrace from above, instead I see:\n{code}\n2016-10-19 15:18:06,596 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\nclojure.lang.ExceptionInfo: throw+: {:kind :disallowed-extension, :msg \"Found extensions that are not permitted: pp_how_do_computers_even_work\"}\n        at puppetlabs.puppetserver.certificate_authority$eval20720$validate_extensions_BANG___20725$fn__20726.invoke(certificate_authority.clj:562)\n{code}\n\nWhich seems friendly enough to me. [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and I were guessing that the error he's seeing has something to do with something in kitchensink. But I believe it's relatively unrelated to this issue.", "created": "2016-10-19T16:25:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] could you add a blerb to the release notes tab for this ticket?", "created": "2016-11-07T11:51:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "If it needs one that is", "created": "2016-11-07T11:51:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:623c0b72bef8a60068c796ce], it's probably not worth it, but I added a blurb about it in case.", "created": "2016-11-07T12:16:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2016-10-02T06:51:00.000000", "creator": "623c130a562ab90069f8b377", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b4cd334"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymnhz:"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The Puppet Server CA will now display the short names for all of Puppet's pp_* custom cert extensions. Previously it did not honor the short names of:: pp_region, pp_datacenter, pp_zone, pp_network, pp_securitypolicy, pp_cloudplatform, pp_apptier, and pp_hostname."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_512637581_*|*_1_*:*_1_*:*_212990350_*|*_10007_*:*_1_*:*_89589698_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1201989254"}], "description": "Puppet Server's CA service maintains a list of the oid to mnemonic mappings in the {{puppet-short-names}} function, duplicating the same list from the `Puppet::SSL::Oids` namespace in Puppet Ruby code.  Several OIDs were added to the Puppet Ruby list in PUP-5355 - see [here|https://github.com/puppetlabs/puppet/blob/4.7.0/lib/puppet/ssl/oids.rb#L56-L63] for the list as of Puppet 4.7.0 - but were not added to the corresponding Puppet Server CA list - see [here|https://github.com/puppetlabs/puppetserver/blob/2.6.0/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L141-L162] for the list as of Puppet Server 2.6.0.  This makes it not possible to use the names in a csr_attributes.yaml file when Puppet Server's CA creates the master certificate and in any Trapperkeeper Authorization rules which reference the names in certificate extensions.  The missing mappings should be added to the Puppet Server CA service.\n\nAlong with doing this work, we should also consider improving the behavior that you see when the csr_attributes.yaml file contains a name that does not match the list.  Currently you see a startup error like this:\n\n{noformat}\nException in thread \"main\" java.lang.AssertionError: Assert failed: (keyword? kw), compiling:(/private/var/folders/y5/24bhmms53nv2b4g8gyq6tl340000gn/T/form-init2323869083754856717.clj:1:125)\n       \tat clojure.lang.Compiler.load(Compiler.java:7239)\n       \tat clojure.lang.Compiler.loadFile(Compiler.java:7165)\n       \tat clojure.main$load_script.invoke(main.clj:275)\n ... \nCaused by: java.lang.AssertionError: Assert failed: (keyword? kw)\n       \tat puppetlabs.kitchensink.core$without_ns.invoke(core.clj:566)\n       \tat puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:175)\n       \tat clojure.lang.RestFn.invoke(RestFn.java:421)\n       \tat clojure.lang.Var.invoke(Var.java:383)\n       \tat clojure.lang.AFn.applyToHelper(AFn.java:156)\n       \tat clojure.lang.Var.applyTo(Var.java:700)\n       \tat clojure.core$apply.invoke(core.clj:630)\n       \tat puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7)\n       \tat clojure.lang.RestFn.invoke(RestFn.java:421)\n       \tat clojure.lang.Var.invoke(Var.java:383)\n       \tat user$eval5609.invoke(form-init2323869083754856717.clj:1)\n       \tat clojure.lang.Compiler.eval(Compiler.java:6782)\n       \tat clojure.lang.Compiler.eval(Compiler.java:6772)\n       \tat clojure.lang.Compiler.load(Compiler.java:7227)\n       \t... 11 more\n{noformat}\n\nErroring out at startup rather than creating a certificate / auth rule with unintended content seems reasonable.  We should come up with a more descriptive error message than this which highlights what the problem is.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15394", "fixedVersions": ["SERVER 2.7.0"], "id": "15394", "issueType": "Bug", "key": "SERVER-1583", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c130a562ab90069f8b377", "resolution": "Fixed", "resolutionDate": "2016-10-25T15:11:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add missing CA oid mappings from PUP-5355", "timeSpent": "PT0S", "updated": "2016-11-07T12:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "/CC [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] for your thoughts on what all might be necessary to cover here.", "created": "2016-09-30T12:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [8e70505|https://github.com/puppetlabs/puppetserver/commit/8e70505547040162a5a72418f57afcca8ea35b35].  Closing...", "created": "2016-11-11T16:58:00.000000"}], "components": [], "created": "2016-09-30T12:55:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@447649b6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1237"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymlov:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_249857351_*|*_10007_*:*_1_*:*_1575313724_*|*_3_*:*_1_*:*_3957984_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1817868838"}], "description": "We currently have user docs in the Puppet Server repo which cover the {{kill -HUP}} method for reloading a Puppet Server: https://github.com/puppetlabs/puppetserver/blob/2.6.0/documentation/restarting.markdown.\n\nWe should update this documentation to cover the new \"service reload\" wrapper on top of {{kill -HUP}} for our next release.", "epicLinkSummary": "HUP service / ezbake integration", "estimate": "PT0S", "externalId": "17011", "fixedVersions": ["SERVER 2.7.0"], "id": "17011", "issueType": "Task", "key": "SERVER-1582", "labels": ["docs"], "originalEstimate": "PT0S", "parent": "16403", "parentSummary": "HUP service / ezbake integration", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-11-11T16:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create user docs for service reload", "timeSpent": "PT0S", "updated": "2016-11-11T16:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I changed the [bounce_service()|https://github.com/puppetlabs/beaker/blob/2.50.0/lib/beaker/dsl/helpers/puppet_helpers.rb#L322-L334] helper method in Beaker to attempt a reload of the service, falling back to a stop/start on failure:\n\n{code:ruby}\ndef bounce_service host, service, curl_retries = nil, port = nil\n  curl_retries = 120 if curl_retries.nil?\n  port = options[:puppetserver_port] if port.nil?\n  if host.graceful_restarts?\n    apachectl_path = host.is_pe? ? \"#{host['puppetsbindir']}/apache2ctl\" : 'apache2ctl'\n    host.exec(Command.new(\"#{apachectl_path} graceful\"))\n  else\n    result = host.exec(Command.new(\"service #{service} reload\"),\n                       :acceptable_exit_codes => [0,1,3])\n    if result.exit_code == 0\n      return result\n    else\n      host.exec puppet_resource('service', service, 'ensure=stopped')\n      host.exec puppet_resource('service', service, 'ensure=running')\n    end\n  end\n  curl_with_retries(\" #{service} \", host, \"https://localhost:#{port}\", [35, 60], curl_retries)\nend\n{code}\n\nWith this implementation, almost all cases in which existing Puppet acceptance tests currently do a full restart would be replaced with a reload when run against a Puppet Server service which supports reload.  It might be okay to go ahead and put this in Beaker essentially like this since it should work even for older versions of Puppet Server which don't support reload.\n\nWith these changes, all of the tests in the Puppet acceptance suite still passed against a reload-enabled version of Puppet Server on CentOS 7.  In a recent Jenkins beaker run against Puppet Server on CentOS 7, the time spent running the tests (post pre-suite) was 2 hours and 20 minutes.  With the above beaker changes in place, a local beaker run (from my MacBook laptop) against a CentOS 7 vmpooler VM took only 55 minutes running the same tests - about a 60% decrease in run time.\n\n/CC [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced], [~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715], and [~accountid:63d40635a05386069cdb69d6] on the above.  Hoping one of the QA folks might be able to run with this from here to work this into Beaker, etc.\n\n", "created": "2016-10-01T15:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "fyi, the build of Puppet Server that I used for this test was http://builds.delivery.puppetlabs.net/puppetserver/2.6.0.master.SNAPSHOT.2016.09.30T0316/.  This was a recent nightly build from Puppet Server's master branch.  All of the recent builds from this branch are service reload-capable.", "created": "2016-10-01T15:11:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "Opened BKR-950 for the Beaker service reload enhancement.", "created": "2016-10-03T09:39:00.000000"}], "components": [], "created": "2016-09-30T11:57:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d6a1db4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1237"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz96dr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2009866_*|*_3_*:*_1_*:*_94653004_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2802304"}], "description": "To get a bit more test coverage / confidence on the service reload features, this ticket would cover a one-off exploratory run of the Puppet acceptance tests against a \"reload\"-enabled Puppet Server build with beaker's common helper functions hacked up to use service reload instead of service restart, as they do today.  This would also be interesting just in forecasting the potential time savings benefit that we could get from this work when switching over to doing this \"for real\" in Beaker later - hopefully something that we'll be able to coordinate with the QA team to have done in a separate ticket.", "epicLinkSummary": "HUP service / ezbake integration", "estimate": "PT0S", "externalId": "15929", "fixedVersions": ["SERVER 2.7.0"], "id": "15929", "issueType": "Task", "key": "SERVER-1581", "labels": [], "originalEstimate": "PT0S", "parent": "16403", "parentSummary": "HUP service / ezbake integration", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-10-01T15:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate service reload against Puppet acceptance suite w/ beaker changes", "timeSpent": "PT0S", "updated": "2016-11-07T18:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [2d3466|https://github.com/puppetlabs/puppetserver/commit/2d346632782c2de3f4256cfe28e97e66f38ff6c2].", "created": "2016-11-15T10:50:00.000000"}], "components": [], "created": "2016-09-30T09:00:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38cc322d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1577"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymksn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_94362275_*|*_1_*:*_1_*:*_376738482_*|*_10007_*:*_1_*:*_494128475_*|*_3_*:*_1_*:*_783983640_*|*_5_*:*_1_*:*_19351047144_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2329677197"}], "description": "Once we have the gems integrated into the puppetserver ezbake build (SERVER-1412), we will need to make some changes to the dev environment in order to get the gems installed properly for developers.\n\nWhile we're messing with this stuff we might as well go ahead and make all the changes outline in the recent email thread on the clojure dev list: https://groups.google.com/a/puppet.com/forum/#!topic/org-product-and-engineering/85-Z3EGuVqs", "epicLinkSummary": "puppetserver gem packaging", "estimate": "PT0S", "externalId": "15656", "fixedVersions": ["SERVER 5.0.0"], "id": "15656", "issueType": "Improvement", "key": "SERVER-1580", "labels": [], "originalEstimate": "PT0S", "parent": "16793", "parentSummary": "puppetserver gem packaging", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-16T13:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add dev-setup script to install gems for puppetserver in dev environment", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-09-30T08:51:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b660b52"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyncwf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2659950_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_38044281440"}], "description": "Would be nice to get a notification in hipchat when a perf test job completes, especially since some of them can be very long-running.  Look into whether or not the JobDSL plugin has any kind of support for this.  Might also require adding a hipchat plugin to the driver nodes.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15393", "fixedVersions": [], "id": "15393", "issueType": "Improvement", "key": "SERVER-1579", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2017-12-14T16:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add hipchat notifications to gatling automation jenkins  jobs", "timeSpent": "PT0S", "updated": "2017-12-14T16:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "This epic is needed for other teams to complete work on i18n, so moving in priority to account for that dependency.", "created": "2016-11-03T10:07:00.000000"}], "components": [], "created": "2016-09-30T08:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6616ef3b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "puppetserver gem packaging"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymwc7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_12749113_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_2_*:*_6579447014_*|*_10014_*:*_2_*:*_347624282"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16793", "fixedVersions": [], "id": "16793", "issueType": "Epic", "key": "SERVER-1577", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-12-19T14:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver gem packaging", "timeSpent": "PT0S", "updated": "2016-12-19T14:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-09-30T07:36:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@664f2503"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1550"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz991r:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_327037010_*|*_1_*:*_1_*:*_382295419_*|*_10007_*:*_1_*:*_17135201_*|*_3_*:*_1_*:*_175343475_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_665499440"}], "epicLinkSummary": "String externalization for Internationalization in SysEng-related repos", "estimate": "PT0S", "externalId": "16490", "fixedVersions": [], "id": "16490", "issueType": "Task", "key": "SERVER-1576", "labels": [], "originalEstimate": "PT0S", "parent": "15316", "parentSummary": "String externalization for Internationalization in SysEng-related repos", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-10-18T10:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Externalize user facing strings in tk-status repo", "timeSpent": "PT0S", "updated": "2016-10-18T10:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Results noted in SERVER-1639.", "created": "2016-12-12T15:14:00.000000"}], "components": [], "created": "2016-09-28T20:36:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Quantify the effect of having agents connected in terms of capacity of puppetserver handling agent requests for a selected resource class (memory, cpus)."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b5dc7e7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PCP-635"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymjjb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_507162377_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5957106164"}], "description": "Conduct load testing of puppetserver with agents connected to evaluate effect on capacity.", "epicLinkSummary": "Integrate pcp-broker with puppetserver", "estimate": "PT0S", "externalId": "15392", "fixedVersions": [], "id": "15392", "issueType": "Story", "key": "SERVER-1573", "labels": [], "originalEstimate": "PT0S", "parent": "31641", "parentSummary": "Integrate pcp-broker with puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2016-12-12T15:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Initial component test pcp-broker + puppetserver", "timeSpent": "PT0S", "updated": "2016-12-12T15:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-09-28T20:35:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Be able to connect pxp-agent when running puppetserver from source."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a584415"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PCP-635"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb813:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4055356259_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_91387029375"}], "description": "Add pcp-broker as a dependency of Puppet Server and provide configuration to enable it.\n\nWe expect pcp-broker in the puppetserver package to be disabled by default until open-source orchestrator ships.\n\nSome initial work was done at https://github.com/puppetlabs/puppetserver/compare/master...MikaelSmith:integrate-pcp. It will need an update after PCP-636 is merged.", "epicLinkSummary": "Integrate pcp-broker with puppetserver", "estimate": "PT0S", "externalId": "15087", "fixedVersions": [], "id": "15087", "issueType": "New Feature", "key": "SERVER-1572", "labels": [], "originalEstimate": "PT0S", "parent": "31641", "parentSummary": "Integrate pcp-broker with puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2019-10-08T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add pcp-broker to Puppet Server", "timeSpent": "PT0S", "updated": "2019-10-08T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:8527c9e8-8e3f-451c-b529-f6fe014233ed", "created": "2016-09-27T15:11:00.000000", "name": "screenshot-1.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10882"}], "comments": [{"author": "557058:8527c9e8-8e3f-451c-b529-f6fe014233ed", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] ping", "created": "2016-09-27T15:12:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Given that dashboard gets the data from the /status endpoint, and the status endpoint only has a truncated list, we can't sort through the entire list. However, the status endpoint has 40 functions, rather than 10, so we could at least sort through that when clicking the headers.", "created": "2016-10-04T18:00:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We recently removed this dashboard entirely.", "created": "2018-12-19T12:44:00.000000"}], "components": ["GUI", "Puppet Server"], "created": "2016-09-27T15:10:00.000000", "creator": "557058:8527c9e8-8e3f-451c-b529-f6fe014233ed", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@77c6d041"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz92un:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_614860448_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_69623152491"}], "description": "!screenshot-1.png|thumbnail!\n\nWhen viewing the 8140/puppet/experimental/dashboard.html , the top ten lists have clickable sort options of \"count\" , \"mean\" and \"aggregate\". The default sort uses aggregate, and truncates the list to that. \n\nCurrent Behaviour:\nCurrently when clicking the count header or mean header, the originally truncated list sorted by the default sort ( aggregate ) is then sorted. \n\nExpected Behaviour:\nWhen clicking the count column header, I would expect the entire list to be resorted by that header.\n\n\nSo with a JSON dump from the API like so:\n\n{code}\n\n[\n            {\n                \"aggregate\": 0,\n                \"count\": 6956,\n                \"function\": \"pe_empty\",\n                \"mean\": 0\n            },\n            {\n                \"aggregate\": 0,\n                \"count\": 4700,\n                \"function\": \"defined\",\n                \"mean\": 0\n            },\n            {\n                \"aggregate\": 0,\n                \"count\": 4559,\n                \"function\": \"regsubst\",\n                \"mean\": 0\n            },\n            {\n                \"aggregate\": 0,\n                \"count\": 4324,\n                \"function\": \"pe_is_string\",\n                \"mean\": 0\n            },\n            {\n                \"aggregate\": 0,\n                \"count\": 3995,\n                \"function\": \"pe_validate_re\",\n                \"mean\": 0\n            },\n            {\n                \"aggregate\": 0,\n                \"count\": 3995,\n                \"function\": \"include\",\n                \"mean\": 0\n            },\n            {\n                \"aggregate\": 0,\n                \"count\": 2444,\n                \"function\": \"pe_is_bool\",\n                \"mean\": 0\n            },\n            {\n                \"aggregate\": 0,\n                \"count\": 2397,\n                \"function\": \"pe_is_integer\",\n                \"mean\": 0\n            },\n            {\n                \"aggregate\": 0,\n                \"count\": 2209,\n                \"function\": \"pe_validate_bool\",\n                \"mean\": 0\n            },\n            {\n                \"aggregate\": 0,\n                \"count\": 1927,\n                \"function\": \"pe_concat_getparam\",\n                \"mean\": 0\n            }\n        ]\n\n{code}\n\nI would expect the count header link would redo the sort and show pe_empty as the top of the list.\n\n", "environment": "PE 2016.2.1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14802", "fixedVersions": [], "id": "14802", "issueType": "Bug", "key": "SERVER-1569", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8527c9e8-8e3f-451c-b529-f6fe014233ed", "resolution": "Won't Fix", "resolutionDate": "2018-12-19T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Top Ten Functions columns only allow changing the sort key for the existing truncated set. ", "timeSpent": "PT0S", "updated": "2018-12-19T12:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This appears to basically be the same as SERVER-1381.  [~accountid:63d40635a05386069cdb69d6], do you agree?", "created": "2016-09-26T15:25:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I agree :-D\n\nSorry for missing that in my search.", "created": "2016-09-26T15:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Not a problem, thanks, [~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9].  I'm going to go ahead and close this one as a duplicate of the other one.", "created": "2016-09-26T16:26:00.000000"}], "components": ["Puppet Server"], "created": "2016-09-26T13:39:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The {{puppet}} user and group ID should be {{52}}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42e46736"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz91x3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10101019_*|*_5_*:*_1_*:*_64945117_*|*_6_*:*_1_*:*_0"}], "description": "The {{puppetserver}} RPM now creates the {{puppet}} user and group.\n\nHowever, it does *not* correctly assign the reserved UID and GID of {{52}} to the {{puppet}} user and group.\n\nThis can cause issues with existing systems to have issues with shared filesystems that depend on a consistent UID and GID.\n\nFrom the scripts of the {{puppetserver-2.6.0-1.el7.noarch}} RPM:\n\n{code}\nrpm -q --scripts puppetserver                                                 \npreinstall scriptlet (using /bin/sh):\n# Note: changes to this section of the spec may require synchronisation with the\n# install.sh source based installation methodology.\n#\n# Add puppet group\ngetent group puppet > /dev/null || \\\n  groupadd -r puppet || :                      <----- Fix this\n# Add puppet user\nif getent passwd puppet > /dev/null; then\n  usermod --gid puppet --home /opt/puppetlabs/server/data/puppetserver \\\n  --comment \"puppetserver daemon\" puppet || :\nelse\n  useradd -r --gid puppet --home /opt/puppetlabs/server/data/puppetserver --shell $(which nologin) \\\n    --comment \"puppetserver daemon\"  puppet || :   <------- Fix this too\nfi\npostinstall scriptlet (using /bin/sh):\n/opt/puppetlabs/server/apps/puppetserver/scripts/install.sh postinst_redhat\n# Reload the systemd units\nsystemctl daemon-reload >/dev/null 2>&1 || :\n\nif [ $1 -eq 1 ] ; then \n        # Initial installation \n        systemctl preset puppetserver.service >/dev/null 2>&1 || : \nfi\npreuninstall scriptlet (using /bin/sh):\n\nif [ $1 -eq 0 ] ; then \n        # Package removal, not upgrade \n        systemctl --no-reload disable puppetserver.service > /dev/null 2>&1 || : \n        systemctl stop puppetserver.service > /dev/null 2>&1 || : \nfi\npostuninstall scriptlet (using /bin/sh):\n\nsystemctl daemon-reload >/dev/null 2>&1 || : \nif [ $1 -ge 1 ] ; then \n        # Package upgrade, not uninstall \n        systemctl try-restart puppetserver.service >/dev/null 2>&1 || : \nfi\n{code}", "environment": "* CentOS 7.2 x86_64\n* RPM install from {{yum.puppetlabs.com}} (not using the global installer, just direct)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16489", "fixedVersions": [], "id": "16489", "issueType": "Bug", "key": "SERVER-1567", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Duplicate", "resolutionDate": "2016-09-26T16:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The 'puppet' user and group should use the registered UID and GID for Puppet", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I ran the job on our dev driver here, puppetserver-perf-driver68-dev.delivery.puppetlabs.net, with puppetserver-perf-sut54.delivery.puppetlabs.net as the SUT.  Job instance: http://puppetserver-perf-driver68-dev.delivery.puppetlabs.net:8080/job/couch-environment-timeout/2.\n\nThe job varies the environment_timeout setting between 0 and unlimited for three different agent loads - 500, 1000, and 1250.  The couch 'medium' role catalog against the puppetserver-perf-control repo is used for each simulation.  Here's a breakdown of the mean agent run times for each:\n\n|| env_timeout setting || agent load || mean agent run time ||\n| unlimited | 500  | 2548 ms |\n| unlimited | 1000 | 2580 ms |\n| unlimited | 1250 | 2770 ms |\n| 0 | 500 | 3495 ms |\n| 0 | 1000 | 3975 ms | \n| 0 | 1250 | 4317 ms |\n\nSeems to show that the environment_timeout setting of 'unlimited' is much more performant than the setting of '0', with the setting of '0' showing exponentially worse performance as the agent load increases.  This seems like a reasonable result given the benefits of caching that we'd expect to see with the 'unlimited' setting.\n\nSince this job ran fine on the dev server, I'm going to load it up on the production server and run it from there.", "created": "2016-11-22T11:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "/cc [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] since you may be interested in this data.\n\n/cc [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] because I think Jeremy's provided a good example of how we might try to capture some output from runs of these types of A/B jobs before we close out tickets in the future.", "created": "2016-11-23T07:33:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Thanks [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - looks like what would be expected. Hard to tell why 0 timeout grows exponentially - just closer to the edge probably.", "created": "2016-11-23T16:19:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "Since a zero timeout means reparsing everything on every load, I'm somewhat worried that the exponential growth is caused by ASTs not being released as they should. [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], would it be possible to also include memory consumption in the results? And perhaps also continue the sequence up to, say 2500 and see what happens?", "created": "2016-11-24T01:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did a re-run of that job from our \"production\" Jenkins server, puppetserver-perf-driver55.delivery.puppetlabs.net.  Results are [here|http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/couch-environment-timeout/2/].  The results look about the same as the ones from the prior run on the the dev server.  I think this job is working okay at this point, then, and so am closing out this issue.", "created": "2016-11-29T14:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d], the Gatling reports that we run do try to include some information on used heap - taken as polled measurements throughout the life of the job.  We currently have a bug, though, in the Gatling Puppet Jenkins plugin which overlays the results of different jobs together so the view for this probably won't make too much sense but [here's a link|http://puppetserver-perf-driver55.delivery.puppetlabs.net:8080/job/couch-environment-timeout/2/] anyway if you're curious.\n\nThese are all pretty short runs - 2 hours for each combination of puppet agent load vs. environment timeout setting.  2 hours may not be long enough to observe a trend toward memory out without corresponding hprofs that someone could look at for more specific info.\n\nI can say, though, that we ran this same catalog with a load of 1250 agents for a full week solid prior to our OSS Puppet Server 2.6.0 release with default settings, which would have used an {{environment_timeout}} value of {{0}}.  [Here|https://puppet.atlassian.net/browse/SERVER-1515?focusedCommentId=344868&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-344868] was my writeup at the time for that.  That simulation ran without any errors.\n\nAt some point, we'll probably want to run these simulations on later OSS and PE code to see if these results hold up.  Not sure how soon we'll be able to get back around to that, though.", "created": "2016-11-29T15:01:00.000000"}], "components": [], "created": "2016-09-20T13:20:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@506221a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymksv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14829_*|*_10007_*:*_1_*:*_21007233_*|*_3_*:*_1_*:*_1386597281_*|*_10009_*:*_1_*:*_942701282_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3705745290"}], "description": "Add a scenario for testing perf with and without Puppet's \"environment_timeout\" setting enabled.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16197", "fixedVersions": ["None"], "id": "16197", "issueType": "Improvement", "key": "SERVER-1563", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-11-29T14:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "A-B test for environment_timeout", "timeSpent": "PT0S", "updated": "2016-11-29T15:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-09-20T13:19:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@31de3d78"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymlpj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9999_*|*_10007_*:*_1_*:*_16645005_*|*_3_*:*_1_*:*_331484106_*|*_10009_*:*_1_*:*_419224895_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4156061842"}], "description": "Add a scenario that compares perf with jruby's JIT mode enabled vs. disabled.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15927", "fixedVersions": ["None"], "id": "15927", "issueType": "Improvement", "key": "SERVER-1562", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-16T11:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "A-B test for enabling jruby's JIT mode", "timeSpent": "PT0S", "updated": "2016-11-16T11:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3fe45d2b-0347-4870-944c-6f32a658bdab] thanks, we're looking into it.  What are the perms on the parent directories?", "created": "2016-09-20T12:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I was unable to reproduce this today.  I installed Puppet Server 2.6.0 - fresh install, not an upgrade - on Ubuntu 16.04.  Here are some files from my {{/var/log/puppetlabs/puppetserver}} directory after a few rotations of the puppetserver.log and puppetserver-access.log file had been done:\n\n{noformat}\n-rw-r----- 1 puppet puppet 1597 Sep 20 11:48 puppetserver-2016-09-20.0.log.zip\n-rw-r----- 1 puppet puppet  627 Sep 20 11:48 puppetserver-2016-09-20.1.log.zip\n-rw-r----- 1 puppet puppet  682 Sep 20 11:48 puppetserver-2016-09-20.2.log.zip\n...\n-rw-r----- 1 puppet puppet  697 Sep 20 11:58 puppetserver-access-2016-09-20.0.log.zip\n-rw-r----- 1 puppet puppet  551 Sep 20 11:58 puppetserver-access-2016-09-20.1.log.zip\n-rw-r----- 1 puppet puppet 1062 Sep 20 11:58 puppetserver-access.log\n-rw-r----- 1 puppet puppet  727 Sep 20 11:58 puppetserver.log\n{noformat}\n\nThe /var/log/puppetlabs/puppetserver directory also was not world-accessible:\n\n{noformat}\nroot@hbv1fuldtbma420:~# ls -l /var/log/puppetlabs/\ntotal 12\n...\ndrwxr-x--- 2 puppet puppet 4096 Sep 20 11:58 puppetserver\n...\n{noformat}\n\nNot sure if this has something to do with doing an upgrade vs. a fresh install?", "created": "2016-09-20T13:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "One other thing I noticed is that the rotated log files are not made world readable if I start the puppetserver service as a daemon through systemd - i.e., via {{service puppetserver start}} - but that the rotated log files are world readable if I start the service via {{/opt/puppetlabs/server/bin/puppetserver foreground}}.  This is probably because - unlike the systemd service definition for the puppetserver service - the 'bin/puppetserver' script doesn't explicitly set a umask which excludes world permissions.\n\n[~accountid:557058:3fe45d2b-0347-4870-944c-6f32a658bdab], can you also confirm how you were starting the service?\n\nSeems like we should also set the umask in the puppetserver script for consistency with the service framework options.", "created": "2016-09-20T13:13:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:3fe45d2b-0347-4870-944c-6f32a658bdab], another thing you might check is whether the following setting appears within the {{\\[Service\\]}} section of the {{/lib/systemd/system/puppetserver.service}} file:\n\n{noformat}\n#set default privileges to -rw-r-----\nUMask=027\n{noformat}\n\nWe added this setting in Puppet Server 2.5.0 and later.  It is possible that if you had customized this file before performing the package upgrade that this setting was not picked up - leaving files written by the puppetserver Java process to be world-readable per a default umask on your system.\n\nCan you check if this is the case?", "created": "2016-09-20T14:53:00.000000"}, {"author": "557058:3fe45d2b-0347-4870-944c-6f32a658bdab", "body": "I'm uising Systemd with the Unit file. The unit file contains the \"UMask=027\".\n\nThe parent directory is just fine:\ndrwxr-x--- 2 puppet puppet 4096 Sep 21 07:22 /var/log/puppetlabs/puppetserver/\n\nI noticed:\n-rw-r----- 1 puppet puppet  616163 Sep 21 07:22 puppetserver-access-2016-09-21.0.log.zip\n-rw-r----- 1 puppet puppet 3107774 Sep 21 09:33 puppetserver-access.log\n-rw-rw---- 1 puppet puppet       0 Aug 18 10:32 masterhttp.log\n-rw-r----- 1 puppet puppet  458954 Sep 10 00:00 puppetserver-2016-09-09.0.log.zip\n\nthe files with .zip are OK, perhaps the wrong perms are from a older puppetserver version.\n\nI will delete all rotated logfiles inside the directory and check it in a few days again.\n\nThanks for your work!\n\n\n\n", "created": "2016-09-21T01:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}One other thing I noticed is that the rotated log files...are world readable if I start the service via /opt/puppetlabs/server/bin/puppetserver foreground. This is probably because - unlike the systemd service definition for the puppetserver service - the 'bin/puppetserver' script doesn't explicitly set a umask which excludes world permissions.{quote}\n\nI put up a PR to the ezbake project to address this issue: https://github.com/puppetlabs/ezbake/pull/368.", "created": "2016-09-29T17:51:00.000000"}], "components": ["Puppet Server"], "created": "2016-09-20T00:25:00.000000", "creator": "557058:3fe45d2b-0347-4870-944c-6f32a658bdab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fd3becb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8x8n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_121452332_*|*_6_*:*_1_*:*_0"}], "description": "The puppetserver.log has the correct permissions, but after the logfile is rotated by logback the files are world readable:\n\n-rw-r----- 1 puppet puppet    1469 Sep 20 08:11 puppetserver.log\n-rw-r--r-- 1 puppet puppet   40007 Aug 19 15:33 puppetserver.log-20160821.gz\n-rw-r--r-- 1 puppet puppet    3891 Sep  1 13:42 puppetserver.log-20160902.gz\n-rw-r--r-- 1 puppet puppet    1098 Sep  2 13:16 puppetserver.log-20160904.gz\n\n/etc/logrotate.d/puppetserver was deleted after the upgrade to 2.6.0\n", "environment": "Ubuntu  16.04\nii  puppet-agent                       1.6.2-1xenial                   amd64\nii  puppetdb                           4.2.2-1puppetlabs1              all  \nii  puppetdb-termini                   4.2.2-1puppetlabs1              all  \nii  puppetserver                       2.6.0-1puppetlabs1              all  \n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15086", "fixedVersions": [], "id": "15086", "issueType": "Bug", "key": "SERVER-1561", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3fe45d2b-0347-4870-944c-6f32a658bdab", "resolution": "Cannot Reproduce", "resolutionDate": "2016-09-21T10:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "rotated logfiles: worldreadable", "timeSpent": "PT0S", "updated": "2016-09-29T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] So I setup a cent7 VM with r10k and and the perf control repo. After the first puppet run in the production environment, I was able to see the tomcat welcome page on port 8080. Could it be a difference between the vmpooler vms and the way the hardware SUTs are provisioned? Have you seen tomcat not working on a cent7 vm?", "created": "2016-11-14T16:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] interesting.  I could have sworn I'd mostly seen it on vmpooler VMs.\n\nMaybe you could test it on one of the bare metal SUTs?  If your perf job is finished, you can use 57, if not, I don't think anyone's using 56 right now?\n\nThe razor commands to provision the box look like this:\n\nhttps://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/jenkins-jobs/common/scripts/job-steps/000_provision_sut.sh#L37-L42\n\n", "created": "2016-11-14T17:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "What version of the JDK was being installed during this setup?  I was thinking it only happened with the later JDK 7 (1.7.0.111 specifically) for Cent7.  I don't think the latest JDK 8 was affected by the nss problem - at least the last time I looked at it.\n\nAlso, I've seen evidence from the RHEL community that the newest JDK 7 builds also fix the problem - https://rhn.redhat.com/errata/RHBA-2016-2140.html.  I haven't verified that myself, though.", "created": "2016-11-14T17:14:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "looks like it's java 1.8.0_111 on my vm, so maybe explains it?\n\nI'll test it out on the hardware too", "created": "2016-11-15T11:39:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Well tomcat works out of the box on the real hardware too. \n\nI:\n* Installed r10k\n* Deployed the perf control repo\n* Ran puppet\nand tomcat is available \n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] is there anything more to be done with this ticket?", "created": "2016-11-17T11:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I guess not, we can just \"close/can't repro\" for now, and keep an eye out for it in the future.  Thanks for investigating, I guess something in the centos7 world has changed to fix this since I originally filed the ticket.", "created": "2016-11-17T11:53:00.000000"}], "components": [], "created": "2016-09-19T17:17:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e53380f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymku7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16428_*|*_3_*:*_1_*:*_519497635_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4562379181"}], "description": "The puppetserver perf control repo that we use for our perf testing has a role that installs a postgres server and a tomcat server.  With the current version of the module code, the tomcat server that gets installed won't actually start, because the {{nss}} package is out of date and there is some kind of issue with the certs.\n\nWe should add something to the profile that explicitly enforces a certain version of the nss package.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "14801", "fixedVersions": ["None"], "id": "14801", "issueType": "Improvement", "key": "SERVER-1560", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Cannot Reproduce", "resolutionDate": "2016-11-17T11:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add puppet code to update nss in puppetserver perf control repo", "timeSpent": "PT0S", "updated": "2016-11-17T11:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to gatling-puppet-load-test#master at [4eafca0|https://github.com/puppetlabs/gatling-puppet-load-test/commit/4eafca0554322be4660671d56b5bd73d4819ff8c].  Moving to resolved...", "created": "2016-09-27T15:14:00.000000"}], "components": [], "created": "2016-09-19T15:38:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1aa439ac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymu4f:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_50168_*|*_10007_*:*_1_*:*_76749995_*|*_3_*:*_2_*:*_766847540_*|*_10009_*:*_1_*:*_387110832_*|*_5_*:*_2_*:*_76978874"}], "description": "We've been wanting to set up an A-B perf test for static catalogs; since static catalogs are already in play in the pe33 vs. couch scenario, it would make sense to just add it there so that we can see all three data points together.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16488", "fixedVersions": ["None"], "id": "16488", "issueType": "Improvement", "key": "SERVER-1559", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-10-04T18:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add \"couch without static catalogs\" scenario to pe33 v. couch run", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Collecting some thoughts on this in order to decide how to proceed.\n\nIssue A: disk partitioning.  The driver boxes appear to set up two disk partitions by default", "created": "2016-10-18T15:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Issue B: file sizes inside of the build history directories, regardless of which partition they are on.\n\nA very informal sampling confirms that the vast majority of the file size is all accounted for by the {{simulation.log}} files that Gatling generates.  Our typical runs that last for 2 hours look like they will yield a {{simulation.log}} file on the order of 90MB.  This file will compress down with gzip to about 6MB.\n\nThe memory-focused runs that we leave running for a week appear to generate a {{simulation.log}} file in the ballpark of 7GB.  This compresses down to about 500MB.\n\nI can imagine that we might eventually set up a job that runs for 2 weeks", "created": "2016-10-18T16:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For Issue A, I kind of like option #3 if it's feasible.  Would be nice to have the ability to change it to a different location later on if we find a more appropriate one.  I'm okay with moving over the existing data.\n \nFor Issue B, I'm good with capping build history as a way of limiting disk usage.", "created": "2016-10-18T16:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm going to resolve this ticket now.  The jenkins user's home directory was moved into the {{/home}} partition via https://github.com/puppetlabs/puppetlabs-modules/pull/6531 and some pink sombrero'ing.\n\nI created SERVER-1605 to capture the work of setting the max build history for a job, and SERVER-1604 to capture the work of compressing the {{simulation.log}} files during archiving.", "created": "2016-10-25T10:18:00.000000"}], "components": [], "created": "2016-09-14T17:48:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30bd9fb0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymn4v:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1360638011_*|*_3_*:*_1_*:*_600043270_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1565809648"}], "description": "After only doing a few runs so far of perf jobs on puppetserver-perf-driver55, we've already consumed 57% of the disk space on the partition where artifacts for job runs are being written.  We should investigate options for keeping the disk utilization under control - especially as we consider the possibility of running jobs more frequently - like via a nightly cron job.\n\nItems to consider:\n\n1) The currently used partition, root, has about 50 GiB of storage available while the 'home' partition has over 224 GiB free.  Might be good to migrate stored data to the other partition.  We should think about automating the provisioning via our puppet / razor setup for the future.  Since we have some existing data, though, we should consider how/if we might want to migrate that data to another partition for now.\n\n2) We might consider purging - or at least compressing - the simulation.log files from the output of each Gatling run.  For a week long 1250 agent run, the simulation.log was about 7 GiB.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17009", "fixedVersions": ["None"], "id": "17009", "issueType": "Task", "key": "SERVER-1557", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-10-25T13:23:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate disk usage for run artifacts on driver55", "timeSpent": "PT0S", "updated": "2016-10-25T13:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-09-14T16:13:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f917110"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1550"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz991j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_65761669_*|*_1_*:*_1_*:*_1733653634_*|*_10007_*:*_1_*:*_18035233_*|*_3_*:*_1_*:*_4498569_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1096697216"}], "epicLinkSummary": "String externalization for Internationalization in SysEng-related repos", "estimate": "PT0S", "externalId": "16792", "fixedVersions": [], "id": "16792", "issueType": "Improvement", "key": "SERVER-1556", "labels": [], "originalEstimate": "PT0S", "parent": "15316", "parentSummary": "String externalization for Internationalization in SysEng-related repos", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Done", "resolutionDate": "2016-10-18T10:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Externalize user facing strings in the http-client repo", "timeSpent": "PT0S", "updated": "2016-10-18T10:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-09-14T16:13:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@147b6783"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1550"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz991b:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_80045040_*|*_1_*:*_1_*:*_1733669059_*|*_10007_*:*_1_*:*_77963106_*|*_3_*:*_2_*:*_21445200_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1094875003"}], "epicLinkSummary": "String externalization for Internationalization in SysEng-related repos", "estimate": "PT0S", "externalId": "16487", "fixedVersions": [], "id": "16487", "issueType": "Improvement", "key": "SERVER-1555", "labels": [], "originalEstimate": "PT0S", "parent": "15316", "parentSummary": "String externalization for Internationalization in SysEng-related repos", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2016-10-19T11:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Externalize user facing strings in the jvm-ssl-utils repo", "timeSpent": "PT0S", "updated": "2016-10-19T11:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-09-14T16:11:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2577448c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1550"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9913:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_79217744_*|*_1_*:*_1_*:*_1733797485_*|*_10007_*:*_1_*:*_331174980_*|*_3_*:*_1_*:*_23077600_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_840855566"}], "epicLinkSummary": "String externalization for Internationalization in SysEng-related repos", "estimate": "PT0S", "externalId": "16195", "fixedVersions": [], "id": "16195", "issueType": "Improvement", "key": "SERVER-1554", "labels": [], "originalEstimate": "PT0S", "parent": "15316", "parentSummary": "String externalization for Internationalization in SysEng-related repos", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2016-10-19T11:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Externalize user facing strings in the tk-auth repo", "timeSpent": "PT0S", "updated": "2016-10-19T11:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to pe-puppet-server-extensions#everett at [3531fa0|https://github.com/puppetlabs/pe-puppet-server-extensions/commit/3531fa00ce20c99b662595569edc9ef3d1b4daaa].", "created": "2016-10-20T11:06:00.000000"}], "components": [], "created": "2016-09-14T15:28:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44638aa6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1550"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymn3r:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_429461274_*|*_1_*:*_1_*:*_1736328802_*|*_10007_*:*_1_*:*_158372812_*|*_3_*:*_1_*:*_13381770_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1186553452"}], "epicLinkSummary": "String externalization for Internationalization in SysEng-related repos", "estimate": "PT0S", "externalId": "14800", "fixedVersions": [], "id": "14800", "issueType": "Improvement", "key": "SERVER-1552", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": "15316", "parentSummary": "String externalization for Internationalization in SysEng-related repos", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2016-10-25T10:23:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Externalize user facing strings in the pe-puppetserver-extensions repo", "timeSpent": "PT0S", "updated": "2016-10-25T10:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-09-14T15:20:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@722fecdf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1550"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymn3j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_343019230_*|*_1_*:*_1_*:*_1736853897_*|*_10007_*:*_1_*:*_244475347_*|*_3_*:*_1_*:*_83912998_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1116361826"}], "description": "Users should be able to read all messages intended to be read by humans in the language of their locale.", "epicLinkSummary": "String externalization for Internationalization in SysEng-related repos", "estimate": "PT0S", "externalId": "17007", "fixedVersions": ["SERVER 2.7.0"], "id": "17007", "issueType": "Improvement", "key": "SERVER-1551", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": "15316", "parentSummary": "String externalization for Internationalization in SysEng-related repos", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2016-10-25T10:23:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Externalize user facing strings in the puppetserver repo", "timeSpent": "PT0S", "updated": "2016-11-07T18:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-09-14T15:02:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3565b18b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-1"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "i18n String externalization for SysEng repos"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_grey"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn9zj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3709399183_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_1729581364"}], "description": "User-facing strings should not be hard coded. They should be easily externalized into resource files for review and translation into other languages. This is a major blocker to offering PE to users in their local language.\n\nBased on the i18n guidelines created for each programming language, wrap user-facing strings in our existing code base with the appropriate string externalization function.\n\nIn scope:\nStrings that appear in the GUI, reports, error and informational messages (in the GUI/CLI tools/APIs), and log entries \nComments in PE modules\n\nOut of scope:\nUser-facing strings pulled in from third party software/libraries\nPuppet DSL keywords\nCLI tool commands\nAPI keys\nDebugging messages intended only for internal use by Puppet\nStrings in code that will reach end of life by June 2017", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15316", "fixedVersions": [], "id": "15316", "issueType": "Epic", "key": "SERVER-1550", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2016-11-16T12:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "String externalization for Internationalization in SysEng-related repos", "timeSpent": "PT0S", "updated": "2017-02-02T13:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-09-12T15:49:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4be68cce"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymlpr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_152325526_*|*_10007_*:*_2_*:*_132634670_*|*_3_*:*_2_*:*_43675037_*|*_10009_*:*_1_*:*_528383592_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4059063495"}], "description": "Now that we have an automated perf test for OSS Puppet server's nightlies, we should update the gatling automation / job definition to automatically run that job at a certain interval (e.g., once per week).", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17006", "fixedVersions": ["None"], "id": "17006", "issueType": "Task", "key": "SERVER-1549", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-08T12:24:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Set up OSS-latest perf test to run on a cron", "timeSpent": "PT0S", "updated": "2016-11-08T12:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-09-12T13:01:00.000000", "name": "agent5.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10960"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-09-12T13:01:00.000000", "name": "agent6.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11044"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-10-22T09:21:00.000000", "name": "ca.crl.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10883"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-09-12T13:01:00.000000", "name": "ca_crt.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10580"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-09-12T13:01:00.000000", "name": "ca_crt_intermediate.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11205"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-09-12T13:01:00.000000", "name": "ca_crt_root.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11275"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-09-12T13:01:00.000000", "name": "ca_key.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10662"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-10-22T09:21:00.000000", "name": "intermediate.crl.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10961"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - fyi, here's another issue I ran into when trying to use an Intermediate CA certificate to issue certificates in Puppet Server.", "created": "2016-09-12T13:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I stumbled across an [ask puppet post|https://ask.puppet.com/question/17938/puppetserver-autosigned-certificate-differs-puppetmaster-autosigned-cert/] from a user who had run into this problem a while back.  In this case, the user had just been using a non-Puppet generated CA, although not necessarily one from an intermediate CA.  The user cited this as a blocker in being able to migrate from Puppet v3 to Puppet Server so seems like one we should try to prioritize.", "created": "2016-09-24T09:29:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR which fixes the problem of the order being incorrect for the CA issuer subject in the client certificate was merged to puppetserver#master at [6c00da|https://github.com/puppetlabs/puppetserver/commit/6c00dae37b8778af454af070bb98dc691051260e].  The full Jenkins test suite passed - https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/277/.  Moving this to resolved...", "created": "2016-10-28T11:11:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] does this need release notes?", "created": "2016-11-07T12:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] - thanks for the ping.  I added some release notes to the ticket.", "created": "2016-11-07T18:46:00.000000"}], "components": [], "created": "2016-09-12T11:50:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36619841"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8sbz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously, when the Puppet Server CA service issued a client certificate from a CA having multiple attributes in its certificate Subject's distinguished name (DN), the attributes in the client certificate's Issuer DN were in reverse order from the corresponding attributes in the CA certificate's Subject DN.  For example, if the Subject DN in the CA certificate were \"/C=US/CN=myca.org\", the Issuer DN in the client certificate would be \"/CN=myca.org/C=US\".  The improper attribute order would cause SSL connections made with the client certificate to fail validation.  With this fix, the attributes in the Issuer DN for newly generated client certificates would be formatted in the same order as in the corresponding CA Subject DN.  The fix enables SSL connections made with newly issued client certificates to be validated properly and, therefore, for connections to succeed."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_167139832_*|*_10007_*:*_1_*:*_348929363_*|*_3_*:*_1_*:*_255028877_*|*_5_*:*_2_*:*_11997393970_*|*_10004_*:*_1_*:*_963498903_*|*_10006_*:*_1_*:*_3200937834"}], "description": "I roughly went through the examples from [this site|https://jamielinux.com/docs/openssl-certificate-authority/index.html] to generate a Root CA and a subordinate Intermediate CA.  I dropped the resulting files into the /etc/puppetlabs/puppet/ssl/ca directory on a Puppet Server:\n\n* private key of the Intermediate CA - attached as ca_key.pem\n* CA bundle (Root + Intermediate CA certificates) - attached as ca_crt.pem\n* CA CRL (Root + Intermediate CRLs) - attached as ca_crl.pem\n\nWhen I initially did a new agent run - without any prior ssl artifacts in place on the agent - against a master using the Root + Intermediate CA artifacts, I ran into SERVER-1315, which documents how having multiple CA certificates in the ca_crt.pem file causes either the Puppet Server autosigning or certificate_status endpoint requests to fail.  I removed the Root CA from the ca_crt.pem file - resulting in contents like the attached ca_crt_intermediate.pem file - and tried a certificate_status signing request again.  The signing process was successful.  Subsequent agent runs against the master, however, still failed with the following error:\n\n{noformat}\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect SYSCALL returned=5 errno=0 state=unknown state\n{noformat}\n\nThe error in this case appears to be due to the master not trusting the agent certificate.  If I had instead signed the certificate via the command line with {{puppet cert sign}}, however, the resulting agent certificate could successfully be used to complete subsequent agent runs.\n\nI\u2019ve attached two certificates signed with the Intermediate CA certificate:\n\n- agent5.pem (signed by calling certificate_status with a PUT request)\n- agent6.pem (signed by running `puppet cert sign` from the command line)\n\nI found via running the openssl verify command that the \u2018agent5\u2019 certificate was considered invalid:\n\n{noformat}\nopenssl verify -CAfile ca_crt_root.pem -untrusted ca_crt_intermediate.pem agent5.pem\nagent5.pem: CN = agent5\nerror 20 at 0 depth lookup:unable to get local issuer certificate\n{noformat}\n\nThe \u2018agent6\u2019 certificate, however, was considered valid:\n\n{noformat}\nopenssl verify -CAfile ca_crt_root.pem -untrusted ca_crt_intermediate.pem agent6.pem\nagent6.pem: OK\n{noformat}\n\nI\u2019m thinking that the critical difference between the two signed certificates is that the format of the Issuer field on the certificate signed via certificate_status does not match the Subject of the Intermediate CA whereas the Issuer field on the certificate signed via {{puppet cert sign}} is identical to the Intermediate CA subject:\n\n{noformat}\n> openssl x509 -in ca_crt_intermediate.pem -noout -subject\nsubject= /C=US/ST=Oregon/O=Puppet/CN=intermediateca.example.org/emailAddress=intermediateca@example.org\n> openssl x509 -in agent5.pem -noout -issuer\nissuer= /emailAddress=intermediateca@example.org/CN=intermediateca.example.org/O=Puppet/ST=Oregon/C=US\n> openssl x509 -in agent6.pem -noout -issuer\nissuer= /C=US/ST=Oregon/O=Puppet/CN=intermediateca.example.org/emailAddress=intermediateca@example.org\n{noformat}\n\nI think we\u2019d need to look into why - only for certificates issued from Puppet Server's CA - the contents of the Issuer field is generated in reverse order from the Intermediate CA subject.", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "17004", "fixedVersions": ["SERVER 2.7.0"], "id": "17004", "issueType": "Bug", "key": "SERVER-1545", "labels": ["Maintenance"], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-03-27T11:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Certificate issued from Intermediate CA cert via Puppet Server CA service fails validation", "timeSpent": "PT0S", "updated": "2017-03-27T11:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:596a4c24-5039-45a7-8af8-a7181a4f3048], Puppet Server currently uses a version of JRuby, 1.7.x series, in a mode which is only compatible with MRI 1.9.3.  Effectively, then, you could only install pure-Ruby gems for use with Puppet Server which are MRI 1.9.3-compatible.  For any gems which include native (C) extensions, you would need to install a gem specifically built for JRuby.  See [this page|https://docs.puppet.com/puppetserver/latest/gems.html#gems-with-native-c-extensions] for more information on gems with native (C) extensions.\n\nEventually, we hope to upgrade Puppet Server to use a newer version of JRuby, the 9.X.X.X series, which has MRI 2.3+ compatibility.  We don't have a target date for this work yet, though.  Where I think rest-client is a pure-Ruby gem, I think you'd have to, for now, find an earlier version of it to use which is MRI 1.9.3-compatible.  I was able to at least install the 1.8.0 version successfully with:\n\n{quote}/opt/puppetlabs/server/bin/puppetserver gem install rest-client -v v1.8.0{quote}\n\nDoes this help?", "created": "2016-09-08T17:01:00.000000"}, {"author": "557058:596a4c24-5039-45a7-8af8-a7181a4f3048", "body": "Thank you very much for your detailed explaination.\n\nI was not aware of that fact... Your suggestion using rest-client 1.8.0 is a feasible solution.", "created": "2016-09-09T00:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:596a4c24-5039-45a7-8af8-a7181a4f3048], great, glad that works for you.  With that in mind, I'm going to close out this issue.", "created": "2016-09-14T11:42:00.000000"}, {"author": "557058:9bb14e37-d7b6-465f-a8b7-9b28a1c2a4c1", "body": "Hi Jeremy Barlow,\n\nWe are facing issues while installing the gem 'google-api-client'. The work around you have mentioned above to use the lower version doesn't help us, as we develop custom resources based on the latest google ruby api client (0.9.15). \n\nPFB the details below,\n\npuppetserver version: 2.6.0\nPuppet v4.7.0\n\nLogs,\n\ngouthams@puppet4-server-magento:~$ sudo -i puppetserver gem install google-api-client --no-ri --no-rdoc\nFetching: retriable-2.1.0.gem (100%)\nSuccessfully installed retriable-2.1.0\nFetching: uber-0.0.15.gem (100%)\nSuccessfully installed uber-0.0.15\nFetching: representable-2.3.0.gem (100%)\nSuccessfully installed representable-2.3.0\n{color:red}Fetching: google-api-client-0.9.15.gem (100%)\nERROR:  Error installing google-api-client:\n        google-api-client requires Ruby version ~> 2.0.{color}\n\nKindly, let us know a turn around for this. Or is there any way we could upgrade the jruby so that it can support ruby > 2.0.\n\nThanks and Regards,\nGoutham S", "created": "2016-10-03T08:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:9bb14e37-d7b6-465f-a8b7-9b28a1c2a4c1], we hope to be able to migrate Puppet Server to using JRuby 9000, which supports MRI Ruby 2.3+ emulation.  In the process of testing it, however, we have encountered a few blockers in JRuby that have prevented us from completing this migration - see https://github.com/jruby/jruby/issues/4112#issuecomment-242504130.\n\nOne possibility we have discussed as an intermediate approach would be to make the MRI \"compatibility mode\" configurable in the JRuby 1.7 version in Puppet Server uses.  Assuming the [MIGRATING|https://github.com/google/google-api-ruby-client/blob/0.9.15/MIGRATING.md#jruby] doc for the google-api-client gem is up to date, this might be a viable option for you.  I created a separate ticket, SERVER-1585, to track this work.", "created": "2016-10-04T09:33:00.000000"}, {"author": "557058:9bb14e37-d7b6-465f-a8b7-9b28a1c2a4c1", "body": "Hi Jeremy,\n\nThanks for your immediate response. Came you please help on the using Ruby 2.0 with Jruby 1.7. Though the steps are there (export JRUBY_OPTS=--2.0) I am unable to install the gem using 'puppetserver gem' command, as the agent refers to the puppet server's gem.\n\nDo I miss anything? if so please assist me.\n\nThanks and Regards,\nGoutham S", "created": "2016-10-05T13:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Hi [~accountid:557058:9bb14e37-d7b6-465f-a8b7-9b28a1c2a4c1].  Unfortunately, there isn't a way with Puppet Server today to set the MRI compatibility mode to 2.0 for JRuby 1.7 without a change to source code.  The compatibility mode is hardcoded to 1.9 [here|https://github.com/puppetlabs/jruby-utils/blob/0.2.1/src/clj/puppetlabs/services/jruby_pool_manager/impl/jruby_internal.clj#L20].  You could change this line to {{(CompatVersion/RUBY2_0)}}, rebuild the jruby-utils library that Puppet Server uses from source, and then rebuild the Puppet Server jar with the jruby_utils library change.  Assuming you want to avoid rebuilding Puppet Server from source, though, you'd probably need to wait for the work in SERVER-1585 to be completed and roll into a new Puppet Server release.  We are actively working on SERVER-1585 but do not have a target release date for the next Puppet Server yet.  You may want to continue watching SERVER-1585 for further updates.", "created": "2016-10-05T13:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It would also be possible to unzip the jar file of a current release of Puppet Server, change the line referenced above, and then either re-assemble the jar or change the classpath to point to the exploded jar directory.  These aren't ideal workarounds but if it's critical for you to be able to try to do something prior to our next release, that is an option.", "created": "2016-10-05T14:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Since we're tracking the work to expose the MRI compatibility version for Puppet Server in SERVER-1585, I'm going to re-close this ticket in favor of that one.", "created": "2016-10-20T13:53:00.000000"}], "components": ["Puppet Server"], "created": "2016-09-08T04:30:00.000000", "creator": "557058:596a4c24-5039-45a7-8af8-a7181a4f3048", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71f0a431"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8qef:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_2033366447_*|*_5_*:*_2_*:*_1119123080_*|*_6_*:*_1_*:*_510112611"}], "description": "I want to install the gem \"rest-client\" into the server ruby environment:\n\n{code}\npuppetserver gem install rest-client --no-rdoc --no-ri -p http://proxy.mycompany.com:8080/ --debug\n\nNOTE:  Debugging mode prints all exceptions even when rescued\nException `Resolv::DNS::Config::NXDomain' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/resolv.rb:530 - _rubygems._tcp.api.rubygems.org\nException `Resolv::DNS::Config::NXDomain' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/resolv.rb:530 - _rubygems._tcp.api.rubygems.org.materna.com\nException `Resolv::ResolvError' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/resolv.rb:481 - DNS result has no information for _rubygems._tcp.api.rubygems.org\nException `Gem::InstallError' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/installer.rb:560 - mime-types-data requires Ruby version >= 2.0.\nException `Gem::InstallError' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/installer.rb:560 - mime-types-data requires Ruby version >= 2.0.\nERROR:  Error installing rest-client:\n        mime-types-data requires Ruby version >= 2.0.\nException `Gem::SystemExitException' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/user_interaction.rb:389 - Exiting RubyGems with exit_code 1\n{code}\n\nLet's check the ruby version:\n\n{code}\npuppetserver gem -v\n2.4.8\n{code}\n\nNow we try to install the gem \"pry\":\n\n{code}\npuppetserver gem install pry --no-rdoc --no-ri -p http://proxy.mycompany.com:8080/ --debug\n\nNOTE:  Debugging mode prints all exceptions even when rescued\nException `Resolv::DNS::Config::NXDomain' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/resolv.rb:530 - _rubygems._tcp.api.rubygems.org\nException `Resolv::DNS::Config::NXDomain' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/resolv.rb:530 - _rubygems._tcp.api.rubygems.org.materna.com\nException `Resolv::ResolvError' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/resolv.rb:481 - DNS result has no information for _rubygems._tcp.api.rubygems.org\nSuccessfully installed pry-0.10.4-java\n1 gem installed\nException `Gem::SystemExitException' at /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/user_interaction.rb:389 - Exiting RubyGems with exit_code 0\n{code}\n\nAny ideas how to solve the problem?", "environment": "OS: Ubuntu 16.04.1 LTS\nKernel: 4.4.0-36-generic\nPackage: puppetserver\nVersion: 2.5.0-1puppetlabs1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16192", "fixedVersions": [], "id": "16192", "issueType": "Bug", "key": "SERVER-1544", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:596a4c24-5039-45a7-8af8-a7181a4f3048", "resolution": "Done", "resolutionDate": "2016-10-20T13:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to install gems that require Ruby version >= 2.0.0", "timeSpent": "PT0S", "updated": "2016-10-20T13:54:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:5495904a-f8b7-43ac-9300-85e66403595a", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:5495904a-f8b7-43ac-9300-85e66403595a], from your example, it appears that the fact payload is only being single URL (percent) encoded rather than double URL encoded.  Even though the behavior is erroneous from an HTTP standards perspective, the facts payload has to be double URL encoded for compatibility purposes.  From https://docs.puppet.com/puppet/latest/reference/http_api/http_catalog.html:\n\n{quote}\nfacts: serialized pson of the facts hash. One odd note: due to a long-ago misunderstanding in the code, this is doubly-escaped (it should just be singly-escaped). To keep backward compatibility, the extraneous escaping is still used/supported.\n{quote}\n\nOn my server, I used a simple site.pp manifest with the following:\n\n{code:puppet}\nnotify { 'justthefact':\n  message => $facts['testfact']\n}\n{code}\n\nUsing one of your examples but with a hostname of \"localhost\", I encoded the original \"PSON\" (JSON) string of...\n\n{noformat}\n{\"name\":\"localhost\",\"values\":{\"testfact\":\"%5E\"}}\n{noformat}\n\n... to :\n\n{noformat}\n%7B%22name%22%3A%22localhost%22%2C%22values%22%3A%7B%22testfact%22%3A%22%255E%22%7D%7D\n{noformat}\n\nI then used that in a catalog curl request similar to the one that you listed:\n\n{noformat}\ncurl -k -v -X POST --ipv4 \"https://localhost:8140/puppet/v3/catalog/localhost?environment=production\" --cacert <ca cert> --cert <localhost cert> --key <localhost private key> --data-urlencode facts_format=pson --data-urlencode facts=%7B%22name%22%3A%22localhost%22%2C%22values%22%3A%7B%22testfact%22%3A%22%255E%22%7D%7D\n{noformat}\n\nWithin the contents of the catalog response, I saw the following resource:\n\n{code:json}\n        {\n            \"exported\": false,\n            \"file\": \".../site.pp\",\n            \"line\": 3,\n            \"parameters\": {\n                \"message\": \"%5E\"\n            },\n            \"tags\": [\n                \"notify\",\n                \"justthefact\",\n                \"class\"\n            ],\n            \"title\": \"justthefact\",\n            \"type\": \"Notify\"\n        }\n{code}\n\nNote that the \"%5E\" from the original value for \"testfact\" was preserved.\n\nWhen you try this with double URL encoding the fact payload, does the catalog result produce what you expect?\n\n", "created": "2016-09-06T11:01:00.000000"}], "components": ["Puppet Server"], "created": "2016-09-05T07:44:00.000000", "creator": "557058:5495904a-f8b7-43ac-9300-85e66403595a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d0adb11"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8o6v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_180825071_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_45544087667"}], "description": "When a fact passed to the Puppet HTTP catalog API endpoint (https://docs.puppet.com/puppet/4.6/reference/http_api/http_catalog.html#catalog) contains a percent character (%) followed by any 2 valid hex characters (between 0 and f), this is evaluated by Puppetserver as an ASCII character. \n\nThis results in one of two error conditions, depending whether the hex characters make up a printable ASCII character or not:\n\nUsing %5E in the fact value:\n\n{{[root@environment-test centos]# curl -X GET --cert $(puppet config print hostcert) --key $(puppet config print hostprivkey) --cacert $(puppet config print localcacert) --trace /var/tmp/curlout.log -H 'Accept: pson' --data-urlencode facts='{\"name\":\"environment-test\",\"values\":{\"testfact\":\"%5e\"}}' \"https://environment-master:8140/puppet/v3//catalog/environment-test?environment=production&facts_format=pson\"\n{\"tags\":[\"settings\",\"environment-test\",\"node\"],\"name\":\"environment-test\",\"version\":1473076209,\"code_id\":null,\"catalog_uuid\":\"5d1989a5-d12f-43b9-834d-d89d351aef9d\",\"catalog_format\":1,\"environment\":\"production\",\"resources\":[{\"type\":\"Stage\",\"title\":\"main\",\"tags\":[\"stage\"],\"exported\":false,\"parameters\":{\"name\":\"main\"}},{\"type\":\"Class\",\"title\":\"Settings\",\"tags\":[\"class\",\"settings\"],\"exported\":false},{\"type\":\"Class\",\"title\":\"main\",\"tags\":[\"class\"],\"exported\":false,\"parameters\":{\"name\":\"main\"}},{\"type\":\"Node\",\"title\":\"environment-test\",\"tags\":[\"node\",\"environment-test\",\"class\"],\"exported\":false},{\"type\":\"Notify\",\"title\":\"Value of test fact testfact: ^\",\"tags\":[\"notify\",\"node\",\"environment-test\",\"class\"],\"file\":\"/etc/puppetlabs/code/environments/production/manifests/site.pp\",\"line\":34,\"exported\":false}],\"edges\":[{\"source\":\"Stage[main]\",\"target\":\"Class[Settings]\"},{\"source\":\"Stage[main]\",\"target\":\"Class[main]\"},{\"source\":\"Class[main]\",\"target\":\"Node[environment-test]\"},{\"source\":\"Node[environment-test]\",\"target\":\"Notify[Value of test fact testfact: ^]\"}],\"classes\":[\"settings\",\"environment-test\"]}}}\n\nNote value of testfact has interpolated ASCII character ^ instead of %5E.\n\nWhere the hex code is not a printable character, there is an error message and no catalog is compiled. See the output for %da:\n\n{{[root@environment-test centos]# curl -X GET --cert $(puppet config print hostcert) --key $(puppet config print hostprivkey) --cacert $(puppet config print localcacert) --trace /var/tmp/curlout.log -H 'Accept: pson' --data-urlencode facts='{\"name\":\"environment-test\",\"values\":{\"testfact\":\"%da\"}}' \"https://environment-master:8140/puppet/v3//catalog/environment-test?environment=production&facts_format=pson\"\ninvalid byte sequence in UTF-8}}\n\nA case where the character immediately following the % character is not a valid hex character does not show this behaviour. The location of the character sequence is also irrelevant, if it occurs anywhere in the fact value the issue is noted.", "environment": "Issue noted in Customer environment, recreated in lab.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16190", "fixedVersions": [], "id": "16190", "issueType": "Bug", "key": "SERVER-1541", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5495904a-f8b7-43ac-9300-85e66403595a", "resolution": "Fixed", "resolutionDate": "2018-02-16T12:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fact values containing a % character followed by any 2 valid hex (0-f) characters are mangled by the Catalog API", "timeSpent": "PT0S", "updated": "2018-02-16T12:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a1bccf9e-5218-4903-8168-8cea2786dd0f", "attachments": [], "comments": [{"author": "557058:a1bccf9e-5218-4903-8168-8cea2786dd0f", "body": "This is what I observed:\n[[root@puppet sysconfig]# diff puppetserver.rpmnew puppetserver\n9c9\n< JAVA_ARGS=\"-Xms2g -Xmx2g -XX:MaxPermSize=256m\"\n---\n> JAVA_ARGS=\"-Xms1g -Xmx1g -XX:MaxPermSize=256m\"\n18c18\n< BOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/\"\n---\n> BOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/bootstrap.cfg\"\n26,27d25\n< \n< \n[root@puppet sysconfig]# pwd\n/etc/sysconfig\n[root@puppet sysconfig]# ]\n\nMay I be allowed to ask why memory setting have been changed as part of upgrade ? and secondly why puppetserver.rpmnew is ready while doing puppetserver start and it reads old file puppetserver ?\n\nI'm not able to perform any deployments as a result of this. Please assist.\n\nThanks", "created": "2016-09-01T19:17:00.000000"}, {"author": "557058:a1bccf9e-5218-4903-8168-8cea2786dd0f", "body": "Hi Team,\n\nAny update ?\n\nKind Regards,\nAmeya Agashe", "created": "2016-09-02T07:27:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a1bccf9e-5218-4903-8168-8cea2786dd0f], it sounds like you have encountered the scenario documented in the Puppet Server 2.5.0 release notes [here|https://docs.puppet.com/puppetserver/2.5/release_notes.html#potential-warnings-when-upgrading-with-a-modified-init-configuration].\n\n{quote}May I be allowed to ask why memory setting have been changed as part of upgrade?  and secondly why puppetserver.rpmnew is ready while doing puppetserver start and it reads old file puppetserver ?{quote}\n\nThe default JVM max heap size in the puppetserver.conf file for Puppet Server 2.5.0 (and previous releases) is 2 GiB.  It sounds like you may have changed the setting to 1 GiB.  When you did the upgrade, the rpm package manager preserved your original changes to the puppetserver.conf file, storing the copy of the puppetserver.conf file from the Puppet Server 2.5.0 as {{puppetserver.conf.rpmnew}} for reference purposes.\n\nFor the Puppet Server 2.5.0 release, the bootstrap.cfg file has been split into separate .cfg files across two directories -- {{/etc/puppetlabs/puppetserver/services.d/}} and {{/opt/puppetlabs/server/apps/puppetserver/config/services.d/}} -- whereas the original file at {{/etc/puppetlabs/puppetserver/bootstrap.cfg}} has been deleted.  Because the BOOTSTRAP_CONFIG variable from the puppetserver.conf file was not updated to include the new directory paths, Puppet Server fails to start with the error message that you mentioned in the description:\n\n{quote}...Specified bootstrap config file does not exist: '/etc/puppetlabs/puppetserver/bootstrap.cfg'.{quote}\n\nIn order for your Puppet Server to start properly, you probably would just need to change the BOOTSTRAP_CONFIG variable in the {{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}} file to..\n\n{noformat}\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/\"\n{noformat}\n\n... and then restart the puppetserver service.\n\nYou may also want to read through the Puppet Server 2.5.0 release notes for more information on the precautions to take when upgrading.\n\nHope this helps!", "created": "2016-09-07T09:23:00.000000"}, {"author": "623c0b6f761efb0069ce0213", "body": "We discovered this problem the hard way this morning when upgrading puppetserver (on RHEL 7) from 2.4 to 2.6.\n\nThis looks like a problem with the puppetserver package. It removes the file `/etc/puppetlabs/puppetserver/bootstrap.cfg`, but does not remove the reference to said file from `/etc/sysconfig/puppetserver`. On startup, puppetserver goes looking for the old bootstrap.cfg file, and won't start when it can't find it.\n\nThis is not mentioned in the bootstrap change notes[1]. Honestly, I didn't even realize /etc/sysconfig/puppetserver was a thing until I found a reference in a foreman bug report[2].\n\nI think this needs to be fixed by making sure that when/if the puppetserver upgrade is going to blow away bootstrap.cfg, it takes care to also remove the reference from /etc/sysconfig/puppetserver.\n\n[1] https://docs.puppet.com/puppetserver/latest/bootstrap_upgrade_notes.html\n[2] http://projects.theforeman.org/issues/15132", "created": "2016-09-14T11:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0b6f761efb0069ce0213] sorry about that.  We included some info about that in the [release notes|https://docs.puppet.com/puppetserver/2.5/release_notes.html#potential-warnings-when-upgrading-with-a-modified-init-configuration], but they didn't make it into the actual docs page.  We have a PR up now to get that content added to the docs - thanks for bringing it to our attention.\n\nWe don't expect for upgrades to cause changes to the {{/etc/sysconfig}} file in the future - this is hopefully a one-time issue that was targeted specifically at making future upgrade experiences go more smoothly.  The original issue is described in SERVER-1213 if you're interested.\n\nApologies again for the headache.", "created": "2016-09-14T15:48:00.000000"}, {"author": "623c0ed8866b810069e43620", "body": "The release notes are wrong: https://docs.puppet.com/puppetserver/2.5/release_notes.html#potential-warnings-when-upgrading-with-a-modified-init-configuration. The fix is called out to be:\n\n{quote}\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/services.d\"\n{quote}\n\n/opt/puppetlabs/server/apps/puppetserver/services.d doesn't exist. The correct path appears to be /opt/puppetlabs/server/apps/puppetserver/config/services.d/.", "created": "2016-09-16T08:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0ed8866b810069e43620] thanks for the heads up - just filed a PR to fix that.", "created": "2016-09-16T10:49:00.000000"}], "components": [], "created": "2016-09-01T19:12:00.000000", "creator": "557058:a1bccf9e-5218-4903-8168-8cea2786dd0f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver is able to start seamlessly after upgrade"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39f497d3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8nbz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_483190271_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_44722537437"}], "description": "Hi Guys,\n\nI had a good running puppetserver daemon but after   \n\n    sudo yum update -y\n\nIt is not running, complaining Specified bootstrap config file does not exist: '/etc/puppetlabs/puppetserver/bootstrap.cfg'.\ndetailed log output from puppetserver-daemon.log is as below:\n\n    OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0\n    Exception in thread \"main\" java.lang.IllegalArgumentException: Specified bootstrap config file does not exist: '/etc/puppetlabs/puppetserver/bootstrap.cfg'\n            at puppetlabs.trapperkeeper.bootstrap$eval14658$wrap_uri_error__14663$fn__14664.invoke(bootstrap.clj:131)\n            at puppetlabs.trapperkeeper.bootstrap$eval14658$wrap_uri_error__14663.invoke(bootstrap.clj:127)\n            at puppetlabs.trapperkeeper.bootstrap$eval14681$read_config__14686$fn__14687.invoke(bootstrap.clj:150)\n            at puppetlabs.trapperkeeper.bootstrap$eval14681$read_config__14686.invoke(bootstrap.clj:134)\n            at puppetlabs.trapperkeeper.bootstrap$eval14704$get_annotated_bootstrap_entries__14709$fn__14710$iter__14711__14717$fn__14718.invoke(bootstrap.clj:160)\n            at clojure.lang.LazySeq.sval(LazySeq.java:40)\n            at clojure.lang.LazySeq.seq(LazySeq.java:49)\n            at clojure.lang.RT.seq(RT.java:507)\n            at clojure.core$seq__4128.invoke(core.clj:137)\n            at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30)\n            at clojure.core.protocols$fn__6506.invoke(protocols.clj:101)\n            at clojure.core.protocols$fn__6452$G__6447__6465.invoke(protocols.clj:13)\n            at clojure.core$reduce.invoke(core.clj:6519)\n            at puppetlabs.trapperkeeper.bootstrap$eval14944$remove_duplicate_entries__14949$fn__14950.invoke(bootstrap.clj:284)\n            at puppetlabs.trapperkeeper.bootstrap$eval14944$remove_duplicate_entries__14949.invoke(bootstrap.clj:263)\n            at puppetlabs.trapperkeeper.bootstrap$eval14970$parse_bootstrap_configs_BANG___14977$fn__14978.invoke(bootstrap.clj:304)\n            at puppetlabs.trapperkeeper.bootstrap$eval14970$parse_bootstrap_configs_BANG___14977.invoke(bootstrap.clj:293)\n            at puppetlabs.trapperkeeper.core$eval15252$boot_with_cli_data__15259$fn__15260.invoke(core.clj:129)\n            at puppetlabs.trapperkeeper.core$eval15252$boot_with_cli_data__15259.invoke(core.clj:95)\n            at puppetlabs.trapperkeeper.core$eval15281$run__15286$fn__15287.invoke(core.clj:151)\n            at puppetlabs.trapperkeeper.core$eval15281$run__15286.invoke(core.clj:145)\n            at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:173)\n            at clojure.lang.RestFn.invoke(RestFn.java:457)\n            at clojure.lang.Var.invoke(Var.java:394)\n            at clojure.lang.AFn.applyToHelper(AFn.java:165)\n            at clojure.lang.Var.applyTo(Var.java:700)\n            at clojure.core$apply.invoke(core.clj:630)\n            at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7)\n            at clojure.lang.RestFn.invoke(RestFn.java:457)\n            at clojure.lang.Var.invoke(Var.java:394)\n            at clojure.lang.AFn.applyToHelper(AFn.java:165)\n            at clojure.lang.Var.applyTo(Var.java:700)\n            at clojure.core$apply.invoke(core.clj:630)\n            at clojure.main$main_opt.invoke(main.clj:316)\n            at clojure.main$main.doInvoke(main.clj:421)\n            at clojure.lang.RestFn.invoke(RestFn.java:512)\n            at clojure.lang.Var.invoke(Var.java:409)\n            at clojure.lang.AFn.applyToHelper(AFn.java:178)\n            at clojure.lang.Var.applyTo(Var.java:700)\n            at clojure.main.main(main.java:37)\n    Caused by: java.lang.IllegalArgumentException: URI is not absolute\n            at java.net.URI.toURL(URI.java:1088)\n            at clojure.java.io$fn__9197.invoke(io.clj:248)\n            at clojure.java.io$fn__9102$G__9095__9109.invoke(io.clj:69)\n            at clojure.java.io$fn__9163.invoke(io.clj:165)\n            at clojure.java.io$fn__9115$G__9091__9122.invoke(io.clj:69)\n            at clojure.java.io$reader.doInvoke(io.clj:102)\n            at clojure.lang.RestFn.invoke(RestFn.java:410)\n            at puppetlabs.trapperkeeper.bootstrap$eval14681$read_config__14686$fn__14687.invoke(bootstrap.clj:144)\n            ... 37 more\nInformation about puppetserver\n\n    [jim@puppet ~]$ puppetserver --version\n    puppetserver version: 2.5.0\n    [jim@puppet ~]$ puppet agent --version\n    4.6.1\n    [jim@puppet ~]$ \n\nHost Operating System:\n\n    CentOS 6.8\n\nAny help would be greatly appreciated.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16791", "fixedVersions": [], "id": "16791", "issueType": "Bug", "key": "SERVER-1542", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a1bccf9e-5218-4903-8168-8cea2786dd0f", "resolution": "Fixed", "resolutionDate": "2018-02-06T23:20:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to start puppetserver after upgrade", "timeSpent": "PT0S", "updated": "2018-02-06T23:20:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e754d94742a00683f7cf0] I *think* this should be doable, but before we finalize a decision around this, it might be worth chatting briefly one more time about whether this HTTP client is really the one we *want* to be steering users towards using for this type of purpose, as opposed to using some other Ruby HTTP client.  Mostly I'm just a bit worried about painting ourselves into a corner if we were ever to want to change the API for this client, so I've been thinking about it more as \"use this client if you need to make a request to a Puppet service, using Puppet's certs\".\n\nI know we discussed this a while back but my memory is fuzzy.  I think maybe you had some concerns about certain Ruby clients not being compatible with JRuby?  Can you help me refresh my memory on exactly what the issues were there?", "created": "2016-09-01T11:22:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "If I recall correctly, this HTTP client was created because the OpenSSL emulation in JRuby was buggy, which meant the standard Net::HTTP client couldn't be used. If that's no longer the case, then I agree we may want to steer users towards the standard implementation. Otherwise, folks will need access to a solid HTTPS client that can verify connections to external services.", "created": "2016-09-01T13:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Oh, right, because I'm afraid of JRuby's OpenSSL.  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] do you have any opinions on this?", "created": "2016-09-01T15:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] It seems reasonable to me to have the Java default cacerts be used along with a specific trusted CA - the Puppet CA - when any of our Java HTTPClients need to make a SSL connection.\n\nSeems like that's the behavior we have today wherever Ruby clients make connections - where the default openssl trusted CA store is used in addition to the Puppet CA cert?  I'd asked Charlie to file this ticket under TK since I was thinking we might want to have this be the standard behavior for any SSL client connections made through our Clojure HTTP Client - not just Puppet Server's use of it.\n\nI'd also be curious to hear [~accountid:63d40628f6e1b543161789a7]'s opinion on this one....", "created": "2016-09-01T16:02:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "By default, Puppet (ruby) will configure the SSL connection to only trust the Puppet CA cert. However, if anyone calls {{OpenSSL::X509::Store#set_default_paths}} then all of the system cacerts will trusted. AFAIK this only happens in two places when we need to integrate with external SSL servers:\n\n# When the PMT connects to the forge\n# When using an https file source, e.g. {{source => 'https://...'}}, but not when using the {{puppet}} scheme\n\nFor puppetserver, trusting more than the Puppet CA cert makes sense for report processors, but I'm not sure about other cases like puppetdb?\n\nRelated note, I filed PUP-5069 awhile ago, so that callers of puppet's HTTP code can specify whether they want to trust the default system certs.", "created": "2016-09-02T11:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:63d40628f6e1b543161789a7].  I hadn't realized that the system cacerts being used for Ruby HTTP client requests was conditional and so was just thinking we should support this by default in Puppet Server for backward compatibility purposes.  But that doesn't seem to be the case here.\n\n{quote}For puppetserver, trusting more than the Puppet CA cert makes sense for report processors, but I'm not sure about other cases like puppetdb?{quote}\n\nThat's a good question.  I don't really know.  Maybe more security conscious customers would want to control whether or not \"system cacerts\" (Java bundle for Java apps) is used for HTTP client calls.  And maybe that does need to be function-specific rather than just a global behavior of the server.\n\nI like the idea in PUP-5069 to provide a way for a client to signify whether or not system cacerts should be trusted.  For this concept to be reusuable for Ruby client calls under Puppet Server, I think it would be best to expose the control through the {{http_client_class}} which is set on the {{Puppet::Network::HttpPool}} module, since Puppet Server hooks that in order to route {{HttpPool}} requests back through the Java SSL stack.\n\nBeyond just the individual client control of the behavior, though, there's obviously a bigger question about how/if that control might be exposed in configuration to an end user - and whether or not that will end up involving a different path per function (e.g., terminus).\n\nFor now, I'm going to move this back to the SERVER project since the questions we're discussing here seem pretty Puppet Server specific - even though a \"trust system cacerts\" solution would likely involve work across both the Puppet Server and clj-http-client repo.\n\n\n\n ", "created": "2016-09-07T09:57:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "We were discussing this issue during server team backlog grooming, and we're getting hung up on the breadth of this change. Adding the system CA certificates to our trust store means that instead of trusting a single known CA certificate (or maybe a few hand picked certs), we're trusting hundreds of CA certificates (such as [Honest Achmed's Used Cars and Certificates|https://bugzilla.mozilla.org/show_bug.cgi?id=647959]. Trusting so many certificates is a huge security policy change and is likely to surprise/irritate a lot of users. Making this change  will almost certainly cause users to demand functionality like HTTP Public Key Pinning and related features, so we can expect a bunch of follow up work to stem from this.\n\nAlternately, we can change the interface of the HTTP client to allow users to add specific CA certificates to the trust store, or add the system CA certificates to the http client trust store. This will make the old workaround for the HTTP report processor work again and doesn't require dramatically changing our security policy, or implementing a bunch of features like public key pinning.\n\nThoughts on this?", "created": "2017-06-20T16:57:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I don't think we should enable the system CA stores by default. However, folks need an official documented way to enable the system CA certs or add specific CA for certain operations like:\n\n  - Submitting reports to a service hosted on AWS.\n\n  - Using the Puppet HTTP client during a function call to pull data from an external service.\n\n  - Add certificates used by proxies so that {{gem install}}, {{puppetserver gem install}}, {{puppet module install}}, {{r10k deploy}}, etc. will work.", "created": "2017-06-21T08:08:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think we're all in agreement that we don't want to default to including the system / JVM's default truststore for HTTP client operations but do want to have a way to enable it on a per-extension point basis.\n\nI'd like to propose for this ticket - and to probably meet the intention of the related PUP-5069 ticket - that we do the following:\n\n1) Add/reserve a new optional parameter to the [Puppet::Network::HttpPool.http_instance|https://github.com/puppetlabs/puppet/blob/498d609225b802ed461678e9d6f2c178ca399049/lib/puppet/network/http_pool.rb#L33] method, maybe named something like {{use_system_truststore_when_verifying_peer}}, which defaults to \"false\" (do nothing).\n\n2) Do the supporting work in Ruby Puppet behind the {{HttpPool.http_instance}} method in PUP-5069.\n\n3) For the work in Puppet Server (this ticket), enhance the underlying puppetlabs/http-client code to, when the new setting is set to \"true\", include the content of the file associated with the JVM's default {{javax.net.ssl.trustStore}} property as part of the set of CA certs that the client validates server certs against for SSL connections.\n\n4) Separate ticket(s) - Introduce a new Puppet configuration setting specific to report processors, {{report_use_system_truststore_when_verifying_peer}} (hopefully with a better/shorter name), which can be used by the HTTP report processor (and other custom ones as needed) to configure the corresponding setting in the {{HttpPool.http_instance}} method.  Maybe it would make sense to have PuppetDB introduce a separate setting for this rather than reusing the same one?  Not sure how often we have users that configure both the HTTP and PuppetDB report processors and whether they'd be likely to want to trust certs per the system truststore for HTTP (generic AWS service?) but not for PuppetDB?\n\n{quote}Add certificates used by proxies so that gem install, puppetserver gem install, puppet module install, r10k deploy, etc. will work.{quote}\n\nI think these should be delineated into separate tickets - specifically for non-{{HttpPool.http_instance}} consumers - since the solutions may differ for each.\n\nThe {{gem}} commands do not use the {{HttpPool.http_instance}} for the client calls they make.  For {{puppetserver gem}} at least, I know that the JVM's default truststore is included by default for the SSL connections that {{gem}} commands need to make.  For cases where the commands need to tunnel through a proxy (via the HTTP CONNECT command), I'd expect the end cert on the target of the proxy to be the one which is validated.  I'm not familiar with how connections are validated in cases where an SSL connection is not \"tunneled\" through an HTTP proxy, i.e., where the client may have to perform an SSL handshake with the proxy itself.  Ignoring puppetserver / JRuby, how does this work for the MRI {{gem}} command today?  Is there specific configuration that can be done with it to add on a set of CA certs - not just the system truststore - for verifying the proxy server specifically?", "created": "2017-06-27T13:26:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "For the HTTP report processor, it might make sense to toggle the setting to true by defailt. PE stopped using the HTTP report processor in 2015.2 when the Rails console was removed --- which means that submitting data to external services is the only way for it to be useful now. Given that, it seems like enabling the system cert stores out of the box would make the report processor useful without additional configuration.\n\nPuppetDB is probably fine without the ability to configure the trust store as it should be using a certificate that falls under the Puppet PKI. Configurability here seems like a usecase for providing an official way to us a cert bundle or {{certs.d}} directory instead of a single CA certificate for the core Puppet trust list.\n\n\n\n", "created": "2017-06-27T14:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I went ahead and created an epic around the truststore improvements being discussed here, SERVER-1872, and added this ticket and the related PUP one to it.  I also created a separate ticket, PUP-7737, for the work to be done in the HTTP report processor to utilize the truststore improvements.\n\n{quote}PuppetDB is probably fine without the ability to configure the trust store as it should be using a certificate that falls under the Puppet PKI. Configurability here seems like a usecase for providing an official way to us a cert bundle or certs.d directory instead of a single CA certificate for the core Puppet trust list.{quote}\n\nThat makes sense to me.  It does seem pretty limiting for HTTP clients to only be able to use the file at the [localcacert|https://github.com/puppetlabs/puppetserver/blob/5.0.0/src/ruby/puppetserver-lib/puppet/server/config.rb#L54] Puppet setting to control an individual CA cert against which connections would be validated.  One option might be to also add in the bundle of CA certificates at the [ssl_client_ca_auth|https://docs.puppet.com/puppet/latest/configuration.html#sslclientcaauth] setting.  At least, I think that's what that setting was created for initially - except that its use seems to have been applied inconsistently in the Puppet code base in the past.  In any event, probably worth another ticket to cover this issue as well.", "created": "2017-06-27T18:45:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This has not received any attention for over a year, closing. Please reopen if it becomes urgent.", "created": "2019-03-25T15:40:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Re-opening because this is still an unresolved issue. When running under Puppet Server, Puppet::Network::HttpPool is bound to a strictly-configured version of Apache's HTTP Client that only trusts certificates issued by Puppet's CA. This was done because JRuby's OpenSSL implementation contained bugs that caused the standard Net::HTTP library to explode in strange and vindictive ways (I tried to find the incident(s) that caused this switch, but ended up at the initial commit of the puppetserver repo).\n\nWe need to do one of two things:\n\n  - Validate that Net::HTTPS is safe to use with today's JRuby version, as thing may have changed since the 1.7 days, and recommend using that for plugin code.\n\nOr,\n\n  - Provide plugin code with the ability to configure the Puppet::Network::HttpPool client with a list of CA certificates to trust so that catalog compilation can query external services over https.", "created": "2019-03-26T13:37:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "For the agent side, my thinking is to add an option to the SSLProvider so that you can ask for an {{SSLContext}} that trusts the system store and pass that to the HTTP connection API:\n\n{code:ruby}\nssl_context = ssl_provider.create_context(cacerts: .., client_cert: ..., private_key: ..., trust_system_store: true)\nconn = Puppet::Network::HttpPool.connection(host, port, use_ssl: true, ssl_context: ssl_context)\n{code}\n\nThe returned {{ssl_context}} will have an {{OpenSSL::X509::Store}} with the {{set_default_paths}} set on it (or the Windows equivalent).\n\nPlugincode like report processors wouldn't create the context directly, but access it from the puppet's global context:\n\n{code:ruby}\nssl_context = Puppet.lookup(:system_ssl_context)\n{code}\n\nPuppetserver's {{Puppet::Server::HttpClient}} can then implement the {{HttpPool#connection}} method, call {{SSLContext#trust_system_store}} do the appropriate thing in the Apache client.", "created": "2019-04-04T16:12:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The new http client implementation now supports an {{include_system_store}} option, such as https://github.com/puppetlabs/puppet/blob/1c552f7d3dad14ea0d609d90601abab99428dee7/lib/puppet/http/client.rb#L115. If enabled, puppet will trust the puppet CA and the CA cert store that openssl is configured to use. When running {{puppet apply}} from packages and our vendored openssl, it's the CA bundle in {{/opt/puppetlabs/puppet/ssl/(cert.pem|certs)}}. A similar change will need to be made to puppetserver's httpclient to trust the system store when the {{include_system_store}} option is true.", "created": "2020-04-10T17:22:00.000000"}, {"author": "623cfe384a57610068e7d166", "body": "The server side implementation of this would be welcomed.\n\nIn my use case we want to use Puppet::Network::HttpPool (to connect outbound to a secure internal vault server), similar to\u00a0[https://github.com/voxpupuli/puppet-vault_lookup/blob/8133f12c40744cf9e903d092562c106d2a56aed4/lib/puppet/functions/vault_lookup/lookup.rb#L22]\u00a0\n\nHowever currently as it exits immediately with:\n\nPKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n\n\u00a0", "created": "2020-04-30T07:46:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Uptaking the client's new HTTP interface will be done in SERVER-2780 and is targeted at Platform 6.16.0.", "created": "2020-05-01T08:11:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]\u00a0Can we discuss prioritization of this work in our next check in?\u00a0", "created": "2020-11-24T12:15:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It sounds like to make this happen, we would need to do something like the following:\n1) Update jvm-ssl-utils to create a trust store with the system certs in it.\n2) Pass it to puppetserver's implementation of the HTTP client using the {{include_system_store}} option that some consumers of the client API will pass.\n3) From our client impl, plumb it through to clj-http-client where we're currently [hard-coding reading our own certs|https://github.com/puppetlabs/clj-http-client/blob/ec78805007db944b0ef7b4e4212d4969d7d8d0a4/src/java/com/puppetlabs/http/client/impl/SslUtils.java#L27-L31].", "created": "2021-01-14T10:34:00.000000"}, {"author": "5ade3a9f91bc312e6a4a30f3", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] will split these into separate tickets. ", "created": "2021-01-15T12:14:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Filed two tickets, they're linked, we can discuss if we want the second one split up more.", "created": "2021-01-19T16:17:00.000000"}, {"author": "623a4d3ba9575800695a006d", "body": "Any Updates for this issue ? It's blocking SERVER-2898.", "created": "2021-03-18T01:36:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We've groomed the work, and it's in our backlog, right now coming up some time this quarter. We had another discussion about this issue today, so I've moved it up a bit, and will try to keep it moving to the front. \n\nI've created a separate epic for the work so we can track it for release.", "created": "2021-05-27T14:58:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "This came up in slack yesterday too: [https://puppetcommunity.slack.com/archives/C0W298S9G/p1622122832286800]\u00a0/cc [~accountid:557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68]", "created": "2021-05-27T16:12:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "Oh hi!\nMy usecase is to upload reports from the puppetserver to another service that has a certificate from CA that's trusted by my system/ca-certificates/truststore but isn't signed from a Puppetserver CA\n\nI wanted to raise an issue for this today. A few thoughts:\n* https://puppet.com/docs/puppet/7/report.html does not mention report_include_system_store but I think that option is used by the reports processor https://github.com/puppetlabs/puppet/blob/ab56d86ecb4b71298c75325462bf73376420bb40/lib/puppet/reports/http.rb#L25\n* Since the puppet certs are already available it would be nice if the puppetserver could submit a client certificate as well for authentication on the report processor\n* report_include_system_store is a really really bad name. The mozilla root CA bundle is quite well known and shipped by many distributions as ca-certificates. My experience is that this bundle is called system store. But what actually happens here is that the puppet-agent packages their own CA bundle https://github.com/puppetlabs/puppet/blob/67ad21b64237eb4f808844bdaa3c2b0e4cdef95c/lib/puppet/http/client.rb#L12-L13. The CentOS 7 Puppet 6 packages contains /opt/puppetlabs/puppet/ssl/CA.pem so I guess that's used? Can you please clarify this?\n\nI'm really not a big fan of vendoring anything. The Puppet 6 platform is still supported by Puppet Inc but it ships an EoL Ruby 2.5 (https://www.ruby-lang.org/en/downloads/branches/). Also there a ssl_certs gem vendored that ships a few certificates besides the big CA.pem. I understand that many target platforms need to be supported by Puppet and that vendoring makes some stuff easier from an release engineering point of view. But trusted root CAs can cause quite some damage and that those are shipped as well isn't properly documented from my point of view (compared to Ruby/Openssl/Curl) and many security minded people are concerned about this. I would be super happy if Puppet would publish at least some notes about building puppet agent against system deps, without vendoring anything.", "created": "2021-05-28T12:53:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "These days JRuby's {{Net::HTTP}} seems to be well-behaved. I believe something around the time of the JRuby 9k update update resolved the {{jruby-openssl}} issues that would cause intermittent failures in HTTPS requests.\n\nThe Apache HTTP client is still required for one important use case though: running Puppet Server on FIPS operating systems. The {{jruby-openssl}} gem refuses to load when FIPS is enabled, which makes {{Net::HTTPS}} unavailable for use.", "created": "2022-01-25T11:48:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "This does not help any code that uses Puppet[:http], which is Puppet's built in http report processor. Are you suggesting that Puppet[:http] should default to a Net::HTTP implementation on non-FIPS, even within JRuby/Puppetserver?", "created": "2022-01-26T04:20:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "No, I'm saying this feature request is still needed because {{Net:HTTP}} cannot serve as the backend for {{Puppet[:http]}} due to FIPS limitations.\n\nSo, even though Net::HTTP offers a workaround, this functionality still needs to be plumbed into the Apache HTTP client.", "created": "2022-01-26T10:23:00.000000"}, {"author": "61af86343618cd006f430854", "body": "dupe of SERVER-2944", "created": "2022-04-27T11:13:00.000000"}], "components": [], "created": "2016-08-31T19:31:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63361b49"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-3019"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0fi0m:a"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_3_*:*_4307831098_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_78726306_*|*_10006_*:*_2_*:*_68853753915_*|*_10005_*:*_3_*:*_105145791420"}], "description": "The com.puppetlabs.http.client library was created and wrapped into Puppet::Server::HttpClient for Puppet Server due to limitations in the JRuby emulation layer for OpenSSL. However, the clients created using this library don't trust the CA certificates in the JVM cacerts keystore by default. This means that the client isn't able to successfully validate HTTPS connections that don't use certificates from the Puppet CA.\n\nA common use case is the built-in {{http}} report processor submitting a Puppet report to a 3rd party endpoint.\n\nh2. Reproduction Case\n\nInstall a PE 2016.2.1 monolithic master.\n\nAttempt to establish a HTTPS connection to a server that doesn't use a certificate from the Puppet CA:\n\n{code:ruby}\n# connection_test.rb\nrequire 'puppet/server/puppet_config'\nrequire 'puppet/server/http_client'\nPuppet::Network::HttpPool.http_client_class = Puppet::Server::HttpClient\nPuppet::Server::PuppetConfig.initialize_puppet({})\nconn = Puppet::Network::HttpPool.http_instance('github.com', 443, true)\n\nresponse = conn.get('index.html', {})\n\nputs response.inspect\n{code}\n\nh3. Outcome\n\nFetching index.html from github.com using HTTPS fails due to a SSL handshake error:\n\n{noformat}\n# /opt/puppetlabs/server/bin/puppetserver ruby connection_test.rb\n18:23:30.475 [main] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange: 1] start execution\n18:23:30.483 [main] DEBUG o.a.h.c.protocol.RequestAddCookies - CookieSpec selected: default\n18:23:30.491 [main] DEBUG o.a.h.c.protocol.RequestAuthCache - Auth cache not set in the context\n18:23:30.491 [main] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange: 1] Request connection for {s}->https://github.com:443\n18:23:30.492 [main] DEBUG o.a.h.i.n.c.PoolingNHttpClientConnectionManager - Connection request: [route: {s}->https://github.com:443][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20]\n18:23:30.624 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.PoolingNHttpClientConnectionManager - Connection leased: [id: http-outgoing-0][route: {s}->https://github.com:443][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20]\n18:23:30.627 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange: 1] Connection allocated: CPoolProxy{http-outgoing-0 [ACTIVE]}\n18:23:30.627 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.ManagedNHttpClientConnectionImpl - http-outgoing-0 10.32.47.91:33839<->192.30.253.113:443[ACTIVE][r:]: Set attribute http.nio.exchange-handler\n18:23:30.628 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.ManagedNHttpClientConnectionImpl - http-outgoing-0 10.32.47.91:33839<->192.30.253.113:443[ACTIVE][rw:]: Event set [w]\n18:23:30.628 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.ManagedNHttpClientConnectionImpl - http-outgoing-0 10.32.47.91:33839<->192.30.253.113:443[ACTIVE][rw:]: Set timeout 0\n18:23:30.628 [I/O dispatcher 1] DEBUG o.a.h.i.n.client.InternalIODispatch - http-outgoing-0 [ACTIVE]: Connected\n18:23:30.628 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.ManagedNHttpClientConnectionImpl - http-outgoing-0 10.32.47.91:33839<->192.30.253.113:443[ACTIVE][rw:]: Set attribute http.nio.http-exchange-state\n18:23:30.630 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - Start connection routing\n18:23:30.676 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.ManagedNHttpClientConnectionImpl - http-outgoing-0 Upgrade session 10.32.47.91:33839<->192.30.253.113:443[ACTIVE][rw:][ACTIVE][rw][NEED_UNWRAP][0][0][141][0]\n18:23:30.676 [I/O dispatcher 1] DEBUG o.a.h.impl.nio.client.MainClientExec - Connection route established\n18:23:30.676 [I/O dispatcher 1] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange: 1] Attempt 1 to execute request\n18:23:30.676 [I/O dispatcher 1] DEBUG o.a.h.impl.nio.client.MainClientExec - Target auth state: UNCHALLENGED\n18:23:30.676 [I/O dispatcher 1] DEBUG o.a.h.impl.nio.client.MainClientExec - Proxy auth state: UNCHALLENGED\n18:23:30.676 [I/O dispatcher 1] DEBUG org.apache.http.headers - http-outgoing-0 >> GET /index.html HTTP/1.1\n18:23:30.677 [I/O dispatcher 1] DEBUG org.apache.http.headers - http-outgoing-0 >> Connection: close\n18:23:30.677 [I/O dispatcher 1] DEBUG org.apache.http.headers - http-outgoing-0 >> Accept-Encoding: gzip, deflate\n18:23:30.677 [I/O dispatcher 1] DEBUG org.apache.http.headers - http-outgoing-0 >> Host: github.com:443\n18:23:30.677 [I/O dispatcher 1] DEBUG org.apache.http.headers - http-outgoing-0 >> User-Agent: Apache-HttpAsyncClient/4.1.1 (Java/1.8.0_101)\n18:23:30.677 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.ManagedNHttpClientConnectionImpl - http-outgoing-0 10.32.47.91:33839<->192.30.253.113:443[ACTIVE][rw:][ACTIVE][rw][NEED_UNWRAP][0][0][141][0]: Event set [w]\n18:23:30.677 [I/O dispatcher 1] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange: 1] Request completed\n18:23:30.781 [I/O dispatcher 1] DEBUG o.a.h.i.n.client.InternalIODispatch - http-outgoing-0 [ACTIVE] Exception\njavax.net.ssl.SSLHandshakeException: General SSLEngine problem\n       \tat sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1431) ~[na:1.8.0_101]\n       \tat sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ~[na:1.8.0_101]\n       \tat sun.security.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1214) ~[na:1.8.0_101]\n       \tat sun.security.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1186) ~[na:1.8.0_101]\n       \tat javax.net.ssl.SSLEngine.wrap(SSLEngine.java:469) ~[na:1.8.0_101]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.doWrap(SSLIOSession.java:263) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:303) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSession.java:507) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:122) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:164) [puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:339) [puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:317) [puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:278) [puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106) [puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:590) [puppet-server-release.jar:na]\n       \tat java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]\nCaused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem\n       \tat sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.8.0_101]\n       \tat sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker.fatalSE(Handshaker.java:304) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) ~[na:1.8.0_101]\n       \tat sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509) ~[na:1.8.0_101]\n       \tat sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker$1.run(Handshaker.java:919) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker$1.run(Handshaker.java:916) ~[na:1.8.0_101]\n       \tat java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1369) ~[na:1.8.0_101]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.doRunTask(SSLIOSession.java:281) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:351) ~[puppet-server-release.jar:na]\n       \t... 9 common frames omitted\nCaused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n       \tat sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) ~[na:1.8.0_101]\n       \tat sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) ~[na:1.8.0_101]\n       \tat sun.security.validator.Validator.validate(Validator.java:260) ~[na:1.8.0_101]\n       \tat sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) ~[na:1.8.0_101]\n       \tat sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:281) ~[na:1.8.0_101]\n       \tat sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136) ~[na:1.8.0_101]\n       \tat sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496) ~[na:1.8.0_101]\n       \t... 17 common frames omitted\nCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n       \tat sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) ~[na:1.8.0_101]\n       \tat sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) ~[na:1.8.0_101]\n       \tat java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) ~[na:1.8.0_101]\n       \tat sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) ~[na:1.8.0_101]\n       \t... 23 common frames omitted\n18:23:30.782 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.ManagedNHttpClientConnectionImpl - http-outgoing-0 10.32.47.91:33839<->192.30.253.113:443[ACTIVE][r:r][ACTIVE][rw][NEED_WRAP][inbound done][][9][0][0][0]: Shutdown\n18:23:30.782 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.ManagedNHttpClientConnectionImpl - http-outgoing-0 0.0.0.0:33839<->192.30.253.113:443[CLOSED][][CLOSED][rw][NEED_WRAP][inbound done][][9][0][0][0]: Shutdown\n18:23:30.782 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.InternalHttpAsyncClient - [exchange: 1] connection aborted\n18:23:30.782 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.PoolingNHttpClientConnectionManager - Releasing connection: [id: http-outgoing-0][route: {s}->https://github.com:443][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20]\n18:23:30.783 [I/O dispatcher 1] DEBUG o.a.h.i.n.c.PoolingNHttpClientConnectionManager - Connection released: [id: http-outgoing-0][route: {s}->https://github.com:443][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20]\n18:23:30.783 [I/O dispatcher 1] DEBUG o.a.h.i.n.client.InternalIODispatch - http-outgoing-0 [CLOSED]: Disconnected\n18:23:30.785 [main] ERROR c.p.h.c.i.PersistentSyncHttpClient - Error executing http request\njavax.net.ssl.SSLHandshakeException: General SSLEngine problem\n       \tat sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1431) ~[na:1.8.0_101]\n       \tat sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ~[na:1.8.0_101]\n       \tat sun.security.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1214) ~[na:1.8.0_101]\n       \tat sun.security.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1186) ~[na:1.8.0_101]\n       \tat javax.net.ssl.SSLEngine.wrap(SSLEngine.java:469) ~[na:1.8.0_101]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.doWrap(SSLIOSession.java:263) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:303) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSession.java:507) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:122) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:164) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:339) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:317) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:278) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:590) ~[puppet-server-release.jar:na]\n       \tat java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_101]\nCaused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem\n       \tat sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.8.0_101]\n       \tat sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker.fatalSE(Handshaker.java:304) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) ~[na:1.8.0_101]\n       \tat sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509) ~[na:1.8.0_101]\n       \tat sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker$1.run(Handshaker.java:919) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker$1.run(Handshaker.java:916) ~[na:1.8.0_101]\n       \tat java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_101]\n       \tat sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1369) ~[na:1.8.0_101]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.doRunTask(SSLIOSession.java:281) ~[puppet-server-release.jar:na]\n       \tat org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:351) ~[puppet-server-release.jar:na]\n       \t... 9 common frames omitted\nCaused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n       \tat sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) ~[na:1.8.0_101]\n       \tat sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) ~[na:1.8.0_101]\n       \tat sun.security.validator.Validator.validate(Validator.java:260) ~[na:1.8.0_101]\n       \tat sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) ~[na:1.8.0_101]\n       \tat sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:281) ~[na:1.8.0_101]\n       \tat sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136) ~[na:1.8.0_101]\n       \tat sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496) ~[na:1.8.0_101]\n       \t... 17 common frames omitted\nCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n       \tat sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) ~[na:1.8.0_101]\n       \tat sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) ~[na:1.8.0_101]\n       \tat java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) ~[na:1.8.0_101]\n       \tat sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) ~[na:1.8.0_101]\n       \t... 23 common frames omitted\nPuppet::Server::HttpClientError: Error executing http request\n  client_get at file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/http_client.rb:178\n         get at file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/http_client.rb:85\n      (root) at connection_test.rb:7\n      invoke at jruby_puppet_core.clj:315\n      invoke at jruby_puppet_core.clj:309\n      invoke at subcommand.clj:38\n    doInvoke at ruby.clj:7\n      invoke at core.clj:630\n      invoke at main.clj:316\n    doInvoke at main.clj:421\n{noformat}\n\nh3. Expected Outcome\n\nThe request should succeed, because the DigiCert High Assurance EV Root CA (used to sign the cert that signed the GitHub cert) is part of the Java 8 cacerts keystore:\n\n{noformat}\n# /opt/puppetlabs/server/bin/keytool -list -keystore /opt/puppetlabs/puppet/ssl/puppet-cacerts -storepass changeit|grep 'digicert_high_assurance'\ndigicert_high_assurance_ev_root_ca:2.16.2.172.92.38.106.11.64.155.143.11.121.242.174.70.37.119, Jul 19, 2016, trustedCertEntry,\n{noformat}\n\nResult should be similar to:\n\n{noformat}\n# /opt/puppetlabs/server/bin/puppetserver ruby connection_test.rb\n18:26:55.329 [main] DEBUG o.a.h.impl.nio.client.MainClientExec - [exchange: 1] start\n... snip ...\n#<Net::HTTPOK 200  readbody=true>\n{noformat}", "epicLinkSummary": "Use System cert store", "estimate": "PT0S", "externalId": "16471", "fixedVersions": [], "id": "16471", "issueType": "Story", "key": "SERVER-1543", "labels": ["nice-to-have"], "originalEstimate": "PT0S", "parent": "16633", "parentSummary": "Use System cert store", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Duplicate", "resolutionDate": "2022-04-27T11:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "com.puppetlabs.http.client should allow adding certificates to supplement Puppet CA", "timeSpent": "PT0S", "updated": "2022-04-27T11:13:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I can't say that I've ever seen this one before.  [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], does this one sound familiar to you?", "created": "2016-08-30T16:10:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Have not seen that one before. If {{File#ensure}} did not work in general, nothing much would work in puppet - even the settings catalog would fail.\nSo - as the ticket states - there must be some kind of corruption of the installation that is going on.\n\n* The code in question {{validate_parameter}} asks its {{type}} if the name is  a name that exists (puppet/resource.rb:502).\n* If {{puppet generate type}} has been used on a resource type named 'file' it will end up in pops/resource/resource_type_impl.rb:183 where it is expected that an ensure has been written as a parameter of the type (it is not handled as a meta parameter since not all types are ensurable).\n* If a native type is used (no 'file' type generated by puppet generate type) - it ends up at puppet/resource.rb:442 where it checks if the name is included in a hash of elements.\n\nI can imagine problems like the following:\n* puppet generate type is used on a type named 'file' - that is not the built in file type. This is not allowed and should be caught and signalled as an attempt to redefine. So, probably far fetched.\n* Something corrupts the loaded file type - for this to happen, the environment probably needs to have a long time out. Some badly written code does something it is not supposed to do with the File type.\n* Something corrupts the file.rb resource, alternatively that something messes up permissions in the hierarchy under the file resource (that is, in the installed puppet).\n* Configuration errors - code being checked out into the installation, mix of puppet versions\n* users seeing this should compare notes and see if they have some module(s) in common that may be suspected to have \"advanced\" code that ends up doing it wrong\n\nTo eliminate certain types of problems", "created": "2016-08-30T17:32:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "It could also be an environment isolation problem. I did look at the other reports of this problem, one of them is about using the type {{xmlfile}} and apparently it used to inherit from {{file}}. Having learned that, I suspect that a mix of old/new resource types could be creating havoc as it does not work well to inherit from other types.\nThe reason this may be the cause is because a restart of the server solves the issue. Then when testing code in a combination that works, it will work for a while until a compilation is done in the same environment and ruby instances in Puppet Server and where the combination is different. This is just speculation, but could be tested to see if the problem goes away if only serving environments with the same version of all resource types.\n\nBouncing this over to the \"client side\" as the problem is about types and providers and ensurability.", "created": "2016-08-31T10:53:00.000000"}, {"author": "5f9905b462584c006bd65363", "body": "Environment isolation problem sounds likely", "created": "2016-08-31T11:13:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:5f9905b462584c006bd65363] Hope you can get confirmation regarding environment isolation.\n\nOn the other topic (debug logging) - I think it would be best to discuss things like that on the Puppet Slack or IRC channel to get interactive help from the community. If you think you found a problem do open a separate ticket.", "created": "2016-08-31T11:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:5f9905b462584c006bd65363] Yeah, I would have thought that setting the level attribute for the \"<root>\" element in the logback.xml file to \"debug\" would have given you equivalent logging to what \"puppet master --debug --verbose\" would.  Might be that there is something missing from our Puppet / logback integration under Puppet Server that is hiding the interesting messages.\n\nIf you are able to pinpoint a specific message that you see in \"puppet master\" that you do not see in Puppet Server's logs when debug is enabled, it would be helpful if you could mention the content of that message.  I agree with [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] that filing this as a separate ticket would be helpful for tracking purposes.\n\nAlso, I wonder if you might be comparing the debug output from a \"puppet master\" from Puppet 3.x vs. a Puppet Server 2.x master (which would be running Puppet 4.x under the covers).  It could be that the interesting messages were removed from the core catalog compilation code in Ruby Puppet 4.x code and, therefore, not having them be available in Puppet Server's logs, not sure.\n", "created": "2016-08-31T11:43:00.000000"}, {"author": "5f9905b462584c006bd65363", "body": "There aren't specific log messages I'm necessarily missing from the ruby code - I was expecting stuff like module loader path searches, hiera lookups, and indirector searches hoping for a hint of where the bad data came from - but the verbosity from the ruby code didn't increase at all, just the native code (so the SSL conversation, HTTP server, and puppet server's authorization are very well logged). It's definitely possible that those messages were removed in 4.x, though I'm hoping not, since they've been an important troubleshooting tool for me in the past.\n\nI'd hate to make a ticket if I'm just missing something on where I can pass another debug flag - but it sounds like I'm not missing anything obvious, so I'll get a new ticket opened for logging, and report back here if I can trigger problems with environment isolation.", "created": "2016-08-31T12:45:00.000000"}, {"author": "5f9905b462584c006bd65363", "body": "We figured out how to reproduce this. We had a really old version of https://forge.puppet.com/electrical/file_concat (from before https://github.com/electrical/puppet-lib-file_concat/commit/8758c5692c6785a4633bc8d469e0b469b9671c81) embedded within another module, it was triggering SERVER-64. After that occurred, all subsequent catalog compiles fail until the master is restarted.\n\nIs it expected that the {{require 'puppet/type/file'}} line triggering SERVER-64 would break not just the current catalog compile, but subsequent compiles - or is something else at play here?", "created": "2016-09-12T16:00:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "If not using the {{puppet generate types}} then a bad require will contaminate all subsequent requests until the Ruby runtime is destroyed (either by {{max-requests-per-instance}} of the JRuby instance or by restarting the master).\n\nAs this seems to be an example of SERVER-64 I'm going close it in favor of that ticket.", "created": "2018-02-15T15:38:00.000000"}], "components": ["Puppet Server"], "created": "2016-08-30T14:56:00.000000", "creator": "5f9905b462584c006bd65363", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1793fa32"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtzz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3034017273_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_43109714970"}], "description": "In the process of setting up new 4.6 masters to (finally) complete our upgrade off of Puppet 3.x, we ran into catalog compilation errors that make no sense - the parameter validator decides that a resource doesn't accept a type that it should accept. Most commonly in our catalogs, it manifests as claiming a file resource in the catalog doesn't accept the ensure parameter:\n\n{code:java}\n2016-08-25 11:29:50,046 ERROR [qtp1575202454-570] [puppetserver] Puppet no parameter named 'ensure' at /etc/puppetlabs/code/environments/puppet4/modules/grafana/manifests/config.pp:20 on File[/etc/grafana/grafana.ini] at /etc/puppetlabs/code/environments/puppet4/modules/grafana/manifests/config.pp:20 on node foo.stackexchange.com\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource.rb:508:in `validate_parameter'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:350:in `validate'\norg/jruby/RubyHash.java:1341:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:350:in `validate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:112:in `finish'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:685:in `finish'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:673:in `finish'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:198:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:198:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:167:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:35:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:266:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:264:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:223:in `benchmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:222:in `benchmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:262:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:53:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:194:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:132:in `do_find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:48:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:47:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:60:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:58:in `process'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/master.rb:42:in `handleRequest'\nPuppet$$Server$$Master_1498329794.gen:13:in `handleRequest'\nrequest_handler_core.clj:281:in `invoke'\njruby_request.clj:47:in `invoke'\njruby_request.clj:29:in `invoke'\nrequest_handler_service.clj:38:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:2493:in `invoke'\nmaster_core.clj:427:in `invoke'\nring.clj:21:in `invoke'\nring.clj:12:in `invoke'\ncomidi.clj:249:in `invoke'\ncore.clj:294:in `invoke'\ncore.clj:128:in `invoke'\ncore.clj:134:in `invoke'\nringutils.clj:86:in `invoke'\nlegacy_routes_core.clj:114:in `invoke'\nlegacy_routes_core.clj:94:in `invoke'\nlegacy_routes_core.clj:184:in `invoke'\nlegacy_routes_core.clj:151:in `invoke'\nring.clj:21:in `invoke'\nring.clj:12:in `invoke'\ncomidi.clj:249:in `invoke'\njetty9_core.clj:424:in `invoke'\nnormalized_uri_helpers.clj:80:in `invoke'\n{code}\n\nThat line is [here|https://github.com/bfraser/puppet-grafana/blob/master/manifests/config.pp#L20], and it's clearly valid to have an ensure parameter on a file resource.  Initially, I suspected this was happening because the new (4.6.1) masters were talking to a very old (2.3.8) PuppetDB instance, and getting some bad data in an indirector somewhere because of it - and my suspicions seemed to be confirmed when the issue was fixed by removing the PuppetDB communication setup from the 4.6.1 masters for the time being.\n\nNow that our new PuppetDB 4.2.2 nodes are up and running, the new masters are pointed to them, which seemed to be working well initially - but eventually, the 4.6.1 masters are slipping back into a state where they claim files can't take ensure. Restarting the puppetserver service fixes it temporarily (stopping PuppetDB makes no difference) - it's happened 3 times over a period of a week on one master, and once over that period on the other.\n\nI've found several references to others who have seemed to run into the same thing, but without any solutions other than nuking the installation and starting again (which has seemed to fix it for some people?):\n\n* [Stack Overflow|http://stackoverflow.com/questions/36331512/puppet-v4-losing-build-in-ensure-parameter-on-file-type-when-using-puppet-xmlf]\n* [Ask Puppet|https://ask.puppet.com/question/26396/agent-stops-working-from-time-to-time-requires-restart-error-failed-to-apply-catalog-no-parameter-named-ensure/]\n* [A bug report on the elasticsearch/elasticsearch module|https://github.com/elastic/puppet-elasticsearch/issues/573]\n\nThis seems like a bug that's corrupting data within the catalog compilation process, but I don't know how to pin it down any further based on this red herring error message - I've set the puppetserver log level to debug, so hopefully I'll get more info from that when it happens again. What can I do to help find and fix this?", "environment": "CentOS 7.2, VMware virtual, puppetserver-2.5.0-1.el7.noarch, puppet-agent-1.6.1-1.el7.x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16790", "fixedVersions": [], "id": "16790", "issueType": "Bug", "key": "SERVER-1540", "labels": ["environment-isolation"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5f9905b462584c006bd65363", "resolution": "Duplicate", "resolutionDate": "2018-02-15T15:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Catalog compilation fails with incorrect error message from parameter validation", "timeSpent": "PT0S", "updated": "2018-02-15T15:38:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR merged to puppet-gatling-load-test#master at [e5de75c|https://github.com/puppetlabs/gatling-puppet-load-test/commit/e5de75c6823fe8d5870925cb25124c27e3f87d60].", "created": "2016-09-12T15:52:00.000000"}], "components": [], "created": "2016-08-30T13:58:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10ccd1a8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymwev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_259400_*|*_10007_*:*_1_*:*_409755882_*|*_3_*:*_1_*:*_7400459_*|*_10009_*:*_1_*:*_518912566_*|*_5_*:*_1_*:*_1293609190_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_176907126"}], "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15315", "fixedVersions": ["None"], "id": "15315", "issueType": "Task", "key": "SERVER-1539", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-09-12T11:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add second driver blade to razor for dev jenkins perf testing", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Closed all issues for the release, so closing this issue.", "created": "2016-09-08T23:36:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Accidentally set tickets in active sprint to closed. Moving back to resolved. ", "created": "2016-09-27T17:06:00.000000"}], "components": [], "created": "2016-08-29T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7860e359"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8k1j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_581677_*|*_5_*:*_2_*:*_1193459144_*|*_6_*:*_2_*:*_515209784_*|*_10006_*:*_1_*:*_893365775"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%22SERVER%201.2.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15924", "fixedVersions": ["None"], "id": "15924", "issueType": "Sub-task", "key": "SERVER-1537", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Updated Dujour, so closing...", "created": "2016-09-08T23:32:00.000000"}], "components": [], "created": "2016-08-29T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a77a43a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8k1b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_584735_*|*_5_*:*_2_*:*_1193683189_*|*_6_*:*_2_*:*_515195323_*|*_10006_*:*_1_*:*_893154437"}], "description": "Update dujour to notify users to use 1.2.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15655", "fixedVersions": ["None"], "id": "15655", "issueType": "Sub-task", "key": "SERVER-1536", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 1.2.0", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sent an announcement to the following lists:\n\n* [Puppet Ann|https://groups.google.com/forum/#!topic/puppet-announce/apxjuhcc69I]\n* [Puppet Users|https://groups.google.com/forum/#!topic/puppet-users/uI2CjndbZN8]\n* [Puppet Dev|https://groups.google.com/forum/#!topic/puppet-dev/mCD_QmfDpYo]", "created": "2016-09-08T23:14:00.000000"}], "components": [], "created": "2016-08-29T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29056658"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8k13:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_586143_*|*_5_*:*_2_*:*_1194747318_*|*_6_*:*_2_*:*_515201144_*|*_10006_*:*_1_*:*_892086051"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15314", "fixedVersions": ["None"], "id": "15314", "issueType": "Sub-task", "key": "SERVER-1535", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] - this is done now, right?  Should we close it?", "created": "2016-09-08T23:06:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The docs all appear to be live now at https://docs.puppet.com/puppetserver/1.2/index.html so I'm going to assume this is done and close it.", "created": "2016-09-08T23:47:00.000000"}], "components": [], "created": "2016-08-29T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50fee321"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8k0v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2455064_*|*_1_*:*_1_*:*_590985_*|*_5_*:*_2_*:*_1192649602_*|*_6_*:*_2_*:*_515340999_*|*_10006_*:*_1_*:*_891587265"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15085", "fixedVersions": ["None"], "id": "15085", "issueType": "Sub-task", "key": "SERVER-1534", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Accidentally set tickets in active sprint to closed. Moving back to resolved. ", "created": "2016-09-27T17:09:00.000000"}], "components": [], "created": "2016-08-29T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b729be2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8k0n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_593895_*|*_3_*:*_1_*:*_6235560_*|*_5_*:*_2_*:*_1214318604_*|*_6_*:*_2_*:*_515958172_*|*_10006_*:*_1_*:*_865521092"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14799", "fixedVersions": ["None"], "id": "14799", "issueType": "Sub-task", "key": "SERVER-1533", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-28T18:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Accidentally set tickets in active sprint to closed. Moving back to resolved. ", "created": "2016-09-27T17:09:00.000000"}], "components": [], "created": "2016-08-29T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8ab21e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8k0f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_596775_*|*_5_*:*_2_*:*_1222371876_*|*_6_*:*_2_*:*_515958460_*|*_10006_*:*_1_*:*_863701779"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17335", "fixedVersions": ["None"], "id": "17335", "issueType": "Sub-task", "key": "SERVER-1532", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-28T18:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Had the go/no-go meeting via chat on 9/8/2016.  Received a (y) from [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] so proceeded to ship.", "created": "2016-09-08T23:09:00.000000"}], "components": [], "created": "2016-08-29T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7091760"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8k07:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_598626_*|*_5_*:*_2_*:*_1194910951_*|*_6_*:*_2_*:*_515342898_*|*_10006_*:*_1_*:*_891778544"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] and/or\n  * [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17003", "fixedVersions": ["None"], "id": "17003", "issueType": "Sub-task", "key": "SERVER-1531", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did some smoke testing for the following OSes:\n\n* CentOS 6\n* CentOS 7\n* Ubuntu 12.04\n* Ubuntu 16.04\n\nThe testing basically consisted of:\n\n* Install Puppet Server 1.1.3.\n* Start the puppetserver service.\n* Do an agent run, confirm success.\n* Upgrade to Puppet Server 1.2.0.\n* Ensure the service has been restarted.\n* Do another agent run, confirm success.\n\nThis procedure was successful on each of platforms.", "created": "2016-09-08T10:00:00.000000"}], "components": [], "created": "2016-08-29T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d6397e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jzz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_601475_*|*_5_*:*_2_*:*_1242258169_*|*_6_*:*_2_*:*_515342783_*|*_10006_*:*_1_*:*_844433073"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16789", "fixedVersions": ["None"], "id": "16789", "issueType": "Sub-task", "key": "SERVER-1530", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T10:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] The SHA for commit where we bumped Puppet Server to 1.2.0 is [5e67346260baee42c48d798611a3dfc6ecdd5392|https://github.com/puppetlabs/puppetserver/commit/5e67346260baee42c48d798611a3dfc6ecdd5392].", "created": "2016-09-08T09:54:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Accidentally set tickets in active sprint to closed. Moving back to resolved. ", "created": "2016-09-27T17:09:00.000000"}], "components": [], "created": "2016-08-29T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5413df6f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jzr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_603270_*|*_5_*:*_2_*:*_1222501499_*|*_6_*:*_2_*:*_515965805_*|*_10006_*:*_1_*:*_863567057"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16470", "fixedVersions": ["None"], "id": "16470", "issueType": "Sub-task", "key": "SERVER-1529", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-28T18:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] We should probably note that we're not building Fedora 20 packages for 1.2.0.  We did build those packages for the prior release, 1.1.3.", "created": "2016-08-30T17:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Docs merged to puppetserver#1.x at [fddc5c7|https://github.com/puppetlabs/puppetserver/commit/fddc5c7f3f62fbcffa16b34954caec914b402f67].  Closing...", "created": "2016-09-08T23:41:00.000000"}], "components": [], "created": "2016-08-29T15:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c8feda8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jzj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_605551_*|*_5_*:*_2_*:*_1192990921_*|*_6_*:*_2_*:*_515343368_*|*_10006_*:*_1_*:*_893699417"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16188", "fixedVersions": ["None"], "id": "16188", "issueType": "Sub-task", "key": "SERVER-1528", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Done tidying, closing...", "created": "2016-09-08T23:23:00.000000"}], "components": [], "created": "2016-08-29T15:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2241955d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jzb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_607689_*|*_3_*:*_1_*:*_118845421_*|*_5_*:*_2_*:*_1194065900_*|*_6_*:*_2_*:*_515344181_*|*_10006_*:*_1_*:*_773779670"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15922", "fixedVersions": ["None"], "id": "15922", "issueType": "Sub-task", "key": "SERVER-1527", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Not relevant for this release, so closing....", "created": "2016-09-06T14:01:00.000000"}], "components": [], "created": "2016-08-29T15:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22d8fe84"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jz3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_610622_*|*_6_*:*_2_*:*_1915963111_*|*_10006_*:*_1_*:*_686069846"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15654", "fixedVersions": ["None"], "id": "15654", "issueType": "Sub-task", "key": "SERVER-1526", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-28T18:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Updated the version to 1.2.0 at [a0c553|https://github.com/puppetlabs/puppetserver/commit/a0c55336d296a7d957da73bfb5ad00367546bae5].  Resolving...", "created": "2016-09-07T14:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "1.2.0 build passed through full Jenkins CI pipeline for all shipping OSes.  Run results are [here|https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-1.x/153/].", "created": "2016-09-08T10:03:00.000000"}], "components": [], "created": "2016-08-29T15:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26c5c108"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jyv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_613559_*|*_5_*:*_2_*:*_1312955393_*|*_6_*:*_2_*:*_515342782_*|*_10006_*:*_1_*:*_773735023"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15313", "fixedVersions": ["None"], "id": "15313", "issueType": "Sub-task", "key": "SERVER-1525", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-07T14:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-08-29T15:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e1d7bb2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jyn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_615383_*|*_3_*:*_1_*:*_87376481_*|*_5_*:*_2_*:*_1313277427_*|*_6_*:*_2_*:*_515347108_*|*_10006_*:*_1_*:*_686032200"}], "description": "Use the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15084", "fixedVersions": ["None"], "id": "15084", "issueType": "Sub-task", "key": "SERVER-1524", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-07T14:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Tests are passing.  All tickets intended for the release have been resolved.  Ready for release so marking this resolved.", "created": "2016-09-07T14:16:00.000000"}], "components": [], "created": "2016-08-29T15:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70e15dcb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jy7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_617150_*|*_5_*:*_2_*:*_1313311771_*|*_6_*:*_2_*:*_515346849_*|*_10006_*:*_1_*:*_773376164"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%221.2.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17334", "fixedVersions": ["None"], "id": "17334", "issueType": "Sub-task", "key": "SERVER-1523", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "17002", "parentSummary": "puppetserver 1.2.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-07T14:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-08-29T15:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c99fa74"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymttz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_673849_*|*_5_*:*_1_*:*_90429724_*|*_6_*:*_2_*:*_1617579861_*|*_10006_*:*_1_*:*_894062187"}], "description": "puppetserver 1.2.0 2016-09-08 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17002", "fixedVersions": ["None"], "id": "17002", "issueType": "Task", "key": "SERVER-1522", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 1.2.0 2016-09-08 Release", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Closed all of the issues for the release, so closing this ticket.", "created": "2016-09-08T23:31:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b4d9c28"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jx3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_255230_*|*_5_*:*_2_*:*_1193550276_*|*_6_*:*_2_*:*_515344265_*|*_10006_*:*_1_*:*_894127809"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%22SERVER%202.6.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15083", "fixedVersions": ["None"], "id": "15083", "issueType": "Sub-task", "key": "SERVER-1521", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Updated Dujour, closing...", "created": "2016-09-08T23:24:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23efc0a0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jwv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_257398_*|*_5_*:*_2_*:*_1193965541_*|*_6_*:*_2_*:*_515343502_*|*_10006_*:*_1_*:*_893713378"}], "description": "Update dujour to notify users to use 2.6.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14798", "fixedVersions": ["None"], "id": "14798", "issueType": "Sub-task", "key": "SERVER-1520", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.6.0", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sent an announcement to the following lists:\n\n* [Puppet Ann|https://groups.google.com/forum/#!topic/puppet-announce/apxjuhcc69I]\n* [Puppet Users|https://groups.google.com/forum/#!topic/puppet-users/uI2CjndbZN8]\n* [Puppet Dev|https://groups.google.com/forum/#!topic/puppet-dev/mCD_QmfDpYo]", "created": "2016-09-08T23:13:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4adb1b01"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jwn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_259955_*|*_5_*:*_2_*:*_1194623754_*|*_6_*:*_2_*:*_515349014_*|*_10006_*:*_1_*:*_893048086"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17333", "fixedVersions": ["None"], "id": "17333", "issueType": "Sub-task", "key": "SERVER-1519", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] - this is done now, right?  Should we close it?", "created": "2016-09-08T23:06:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The docs all appear to be live at https://docs.puppet.com/puppetserver/2.6/index.html so I'm going to assume this is done and close it.", "created": "2016-09-08T23:44:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74753546"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jwf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2301182_*|*_1_*:*_1_*:*_261969_*|*_5_*:*_2_*:*_1192789217_*|*_6_*:*_2_*:*_515341439_*|*_10006_*:*_1_*:*_892589684"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17001", "fixedVersions": ["None"], "id": "17001", "issueType": "Sub-task", "key": "SERVER-1518", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Accidentally set tickets in active sprint to closed. Moving back to resolved. ", "created": "2016-09-27T17:09:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76aafe8d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jw7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_265808_*|*_3_*:*_1_*:*_6238576_*|*_5_*:*_2_*:*_1214257946_*|*_6_*:*_2_*:*_515961490_*|*_10006_*:*_1_*:*_866562377"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16788", "fixedVersions": ["None"], "id": "16788", "issueType": "Sub-task", "key": "SERVER-1517", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-28T18:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Accidentally set tickets in active sprint to closed. Moving back to resolved. ", "created": "2016-09-27T17:09:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@16935cf0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jvz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_268019_*|*_5_*:*_2_*:*_1222328534_*|*_6_*:*_2_*:*_515959505_*|*_10006_*:*_1_*:*_864733715"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16469", "fixedVersions": ["None"], "id": "16469", "issueType": "Sub-task", "key": "SERVER-1516", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-28T18:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] - I'm not quite sure where else to put this data but figured a comment on this ticket might be good enough for now.  For this release, we did some Gatling runs through our shiny new Gatling automation infrastructure.  I thought it would be good to capture some high-level comparison data from those runs.  tl", "created": "2016-09-08T09:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Had the go/no-go meeting via chat on 9/8/2016.  Received a (y) from [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] so proceeded to ship.", "created": "2016-09-08T23:09:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4825c72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jvr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_269444_*|*_5_*:*_2_*:*_1194899348_*|*_6_*:*_2_*:*_515349784_*|*_10006_*:*_1_*:*_892773429"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16187", "fixedVersions": ["None"], "id": "16187", "issueType": "Sub-task", "key": "SERVER-1515", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did some smoke testing for the following OSes:\n\n* CentOS 6\n* CentOS 7\n* Ubuntu 14.04\n* Ubuntu 16.04\n\nThe testing basically consisted of:\n\n* Install Puppet Server 2.5.0.\n* Start the puppetserver service.\n* Do an agent run, confirm success.\n* Upgrade to Puppet Server 2.6.0.\n* Ensure the service has been restarted.\n* Do another agent run, confirm success.\n\nThis procedure was successful on each of platforms.", "created": "2016-09-08T09:59:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a6e4a87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jvj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_272229_*|*_5_*:*_2_*:*_1242303791_*|*_6_*:*_2_*:*_515343167_*|*_10006_*:*_1_*:*_845374593"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15920", "fixedVersions": ["None"], "id": "15920", "issueType": "Sub-task", "key": "SERVER-1514", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T09:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] The SHA for commit where we bumped Puppet Server to 2.6.0 is [e75711b58ad5e8fe612103fafab4403989b6937f|https://github.com/puppetlabs/puppetserver/commit/e75711b58ad5e8fe612103fafab4403989b6937f].", "created": "2016-09-08T09:52:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Accidentally set tickets in active sprint to closed. Moving back to resolved. ", "created": "2016-09-27T17:09:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37ec8639"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jvb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_274663_*|*_5_*:*_2_*:*_1222359027_*|*_6_*:*_2_*:*_515969632_*|*_10006_*:*_1_*:*_864692640"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15653", "fixedVersions": ["None"], "id": "15653", "issueType": "Sub-task", "key": "SERVER-1513", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-28T18:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] I mentioned this in chat earlier, but just a reminder comment for the release notes here that the 2.6.0 release will probably be adding SLES 12 support until/unless RE needs to pull it just prior to release for some reason.  /CC [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e].", "created": "2016-08-30T17:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Docs merged to puppetserver#stable at [ee85ea0|https://github.com/puppetlabs/puppetserver/commit/ee85ea02bb60011290fb2c4b9083afaf162125c9].  Closing...", "created": "2016-09-08T23:39:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e11c8dc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jv3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_277318_*|*_10007_*:*_1_*:*_25508311_*|*_5_*:*_2_*:*_1193081139_*|*_6_*:*_2_*:*_515348779_*|*_10006_*:*_1_*:*_869082622"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15312", "fixedVersions": ["None"], "id": "15312", "issueType": "Sub-task", "key": "SERVER-1512", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Done tidying up, closing....", "created": "2016-09-08T23:19:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@441ecb4f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8juv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_279222_*|*_3_*:*_1_*:*_119331643_*|*_5_*:*_2_*:*_1194038127_*|*_6_*:*_2_*:*_515347498_*|*_10006_*:*_1_*:*_774303756"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15082", "fixedVersions": ["None"], "id": "15082", "issueType": "Sub-task", "key": "SERVER-1511", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This was done at [e694e1|https://github.com/puppetlabs/puppetserver/commit/e694e1ea64c133e8c599316efe0708426e725544].  No CI test failures occurred after the merge down so closing this...", "created": "2016-09-06T14:04:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@381b647c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jun:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_282060_*|*_5_*:*_2_*:*_1400364326_*|*_6_*:*_2_*:*_515346197_*|*_10006_*:*_1_*:*_687311612"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14797", "fixedVersions": ["None"], "id": "14797", "issueType": "Sub-task", "key": "SERVER-1510", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-06T14:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Updated version to 2.6.0 at [63c8dd|https://github.com/puppetlabs/puppetserver/commit/63c8dda32b845dc4b021db0e116e0bef80369f88].  Resolving...", "created": "2016-09-07T14:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "2.6.0 build passed through full Jenkins CI pipeline for most OS configurations.  Run results for first run are [here|https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/187/].  Only cell that failed was \"debian8-64ma-centos6-64a\", but that was due to a Jenkins slave / infrastructure issue.  Other centos6 master cells had successful runs.  For completeness, I did rekick the one failing cell as https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/190/.  I'll monitor that and post back a follow-on comment when it is done.", "created": "2016-09-08T10:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Job re-ran at https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/190/ passed.", "created": "2016-09-08T23:52:00.000000"}], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6fb9cd9f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8juf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_284730_*|*_5_*:*_2_*:*_1313412857_*|*_6_*:*_2_*:*_515344784_*|*_10006_*:*_1_*:*_774264343"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17332", "fixedVersions": ["None"], "id": "17332", "issueType": "Sub-task", "key": "SERVER-1509", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-07T14:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-08-29T15:05:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b284de0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8ju7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_286373_*|*_3_*:*_1_*:*_86962366_*|*_5_*:*_2_*:*_1313649401_*|*_6_*:*_2_*:*_515344531_*|*_10006_*:*_1_*:*_687064591"}], "description": "Use the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17000", "fixedVersions": ["None"], "id": "17000", "issueType": "Sub-task", "key": "SERVER-1508", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-07T14:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Tests are passing.  All tickets intended for the release have been resolved.  Ready for release so marking this resolved.", "created": "2016-09-07T14:09:00.000000"}], "components": [], "created": "2016-08-29T15:04:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49e28ec8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jtz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_289161_*|*_5_*:*_2_*:*_1313685350_*|*_6_*:*_2_*:*_515346630_*|*_10006_*:*_1_*:*_773989528"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.6.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16787", "fixedVersions": ["None"], "id": "16787", "issueType": "Sub-task", "key": "SERVER-1507", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16468", "parentSummary": "puppetserver 2.6.0 2016-09-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-07T14:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-08-29T15:04:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@615875f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymttr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_313872_*|*_5_*:*_1_*:*_90416561_*|*_6_*:*_2_*:*_1617615686_*|*_10006_*:*_1_*:*_895097186"}], "description": "puppetserver 2.6.0 2016-09-08 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16468", "fixedVersions": ["None"], "id": "16468", "issueType": "Task", "key": "SERVER-1506", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-08T23:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.6.0 2016-09-08 Release", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] - do you know if there's some PE-flavored documentation around the status endpoint covering the jvm-metrics which already exists that could be drawn from for this work?  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - do you think we should even be documenting the jvm-metrics ahead of the OSS release that these would be available for?", "created": "2016-08-29T13:29:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] None that I can find. [PuppetDB documents JVM metrics|https://docs.puppet.com/puppetdb/4.2/api/metrics/v1/mbeans.html#jvm-metrics] on its {{/metrics/v1}} endpoint, but I'm not sure whether that's useful for you.", "created": "2016-08-29T14:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I don't have a strong opinion about whether these docs land before or after we ship.", "created": "2016-08-30T15:28:00.000000"}], "components": [], "created": "2016-08-29T13:03:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64f7c5f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jq7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "See SERVER-1502."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_104420358_*|*_10007_*:*_1_*:*_520145335_*|*_3_*:*_1_*:*_60829535_*|*_6_*:*_1_*:*_0"}], "description": "In SERVER-1502, the trapperkeeper-status service was included in the Puppet Server service bundle.  Ahead of the 2.6.0 release, we should provide some documentation about the status service.\n\nRequests made to the status service will initially only include info for the status-service itself, for example:\n\n{code:json}\n{\n    \"status-service\": {\n        \"detail_level\": \"debug\",\n        \"service_status_version\": 1,\n        \"service_version\": \"0.3.5\",\n        \"state\": \"running\",\n        \"status\": {\n            \"experimental\": {\n                \"jvm-metrics\": {\n                    \"heap-memory\": {\n                        \"committed\": 1049100288,\n                        \"init\": 268435456,\n                        \"max\": 1908932608,\n                        \"used\": 216512656\n                    },\n                    \"non-heap-memory\": {\n                        \"committed\": 256466944,\n                        \"init\": 2555904,\n                        \"max\": -1,\n                        \"used\": 173201432\n                    },\n                    \"start-time-ms\": 1472496731281,\n                    \"up-time-ms\": 538974\n                }\n            }\n        }\n    }\n}\n{code}\n\nIt may be valuable to do an additional JSON schema just reflecting the elements currently being exposed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15918", "fixedVersions": ["SERVER 2.6.0"], "id": "15918", "issueType": "Task", "key": "SERVER-1505", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-09-06T11:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document initial status service endpoint", "timeSpent": "PT0S", "updated": "2016-09-08T14:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-26T17:34:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d0d3b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jbz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_405770851_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_46147676667"}], "description": "Work was done to modify OSS puppetserver's logback configuration to limit the amount of disk space puppetserver would use. \n\nThis ticket it to ensure we port the improvements over to PE as well", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16816", "fixedVersions": [], "id": "16816", "issueType": "Improvement", "key": "SERVER-1504", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2018-02-16T12:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Port logback changes from puppetserver to PE", "timeSpent": "PT0S", "updated": "2018-02-16T12:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [], "components": [], "created": "2016-08-26T17:32:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a779b71"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8jbr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_63585301_*|*_1_*:*_1_*:*_405898370_*|*_10007_*:*_1_*:*_91861913_*|*_3_*:*_1_*:*_7634528_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_346318076_*|*_10006_*:*_1_*:*_11983009"}], "description": "Work was done to modify OSS puppetserver's logback configuration to limit the amount of disk space puppetserver would use. The first PR landed in the {{1.x}} branch of the {{puppetserver}} repo. \n\nThis ticket it to ensure we port the improvements up to the master branch", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16467", "fixedVersions": ["SERVER 2.6.0"], "id": "16467", "issueType": "Improvement", "key": "SERVER-1503", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2016-09-06T11:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge logback changes from 1.x to master", "timeSpent": "PT0S", "updated": "2016-09-08T14:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [86fa8d3|https://github.com/puppetlabs/puppetserver/commit/86fa8d32ec77ef4417f8e88784bf0f93729e2a03].", "created": "2016-08-29T10:45:00.000000"}], "components": [], "created": "2016-08-26T14:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d2235b6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8j7j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server provides a new endpoint, /status/v1/services, which, when provided via an HTTP GET request with a query string of 'level=debug', can provide some basic jvm-level metrics related to memory usage for the current process.  As these metrics are currently considered experimental, the names and values of the metrics may change in future releases."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_87838122_*|*_1_*:*_1_*:*_31058_*|*_3_*:*_1_*:*_245087220_*|*_5_*:*_1_*:*_821971497_*|*_6_*:*_1_*:*_0"}], "description": "This ticket would cover the initial work to add the trapperkeeper-status service to OSS Puppet Server.  This would only cover plumbing the status service's built-in metrics.  The work to plumb additional metrics - http endpoints, jruby, etc. - would be covered by other tickets in the SERVER-1259 (Add Server metrics to OSS) epic, e.g., SERVER-1262.  We're doing this ticket separately just to provide the minimal support needed per tooling to monitoring jvm memory metrics per the Gatling Automation epic (SERVER-562).", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "15916", "fixedVersions": ["SERVER 2.6.0"], "id": "15916", "issueType": "New Feature", "key": "SERVER-1502", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-08-30T11:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add status service endpoint with simple JVM metrics only", "timeSpent": "PT0S", "updated": "2016-09-08T23:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-gatling-jenkins-plugin#master at [3f7e346|https://github.com/puppetlabs/puppet-gatling-jenkins-plugin/commit/3f7e34646f65d7c3ca89c5693bf97cb7eb9bd663].\n\nDoesn't seem to be anything else here for CI or QA to check at this point, so resolving...", "created": "2016-08-30T12:18:00.000000"}], "components": [], "created": "2016-08-26T13:37:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fc95be5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8don:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_71177_*|*_10007_*:*_1_*:*_60591254_*|*_3_*:*_1_*:*_280178176_*|*_5_*:*_1_*:*_2412636986_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15652", "fixedVersions": ["None"], "id": "15652", "issueType": "Improvement", "key": "SERVER-1501", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-08-30T12:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "graph memory usage in puppet-gatling-jenkins-plugin if data is available", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-gatling-jenkins-plugin#master at [7d56aa7|https://github.com/puppetlabs/puppet-gatling-jenkins-plugin/commit/7d56aa725461ae98c7ab9243ff7bd49eea770eba].", "created": "2016-08-29T16:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Doesn't seem to be anything for CI / QA to review here further, so moving to resolved.", "created": "2016-08-29T16:47:00.000000"}], "components": [], "created": "2016-08-25T14:34:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38b0194"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8dof:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_83036553_*|*_10007_*:*_1_*:*_269039632_*|*_3_*:*_1_*:*_1475965_*|*_5_*:*_1_*:*_2483065806_*|*_6_*:*_1_*:*_0"}], "description": "When the Puppet Gatling Jenkins plugin is installed, I've found a Jenkins job run results in links under \"Available Reports\" from the standard Gatling plugin which are resolvable.  If I click on the \"Puppet Gatling\" link in the left nav bar, the links to those same reports under the \"Available Reports for this run\" section are incorrect.\n\nFor example, when I click on one named \"pe33-medium\", my browser will navigate to \".../job/<job_name>/<job_instance>/puppet-gatling/puppet-gatling/report/pe33-medium\", which is a dead link, whereas \".../job/<job_name>/<job_instance>/puppet-gatling/report/pe33-medium\" comes up fine.\n\nThis is probably a defect in the Puppet Gatling Jenkins plugin.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16466", "fixedVersions": ["None"], "id": "16466", "issueType": "Bug", "key": "SERVER-1500", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-08-29T16:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling report links broken from Puppet Gatling Jenkins plugin UI", "timeSpent": "PT0S", "updated": "2017-01-25T13:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I'd like to see puppetserver \"use\" all of the puppet sections once at startup, but not for any subsequent JRuby instance to reduce the settings catalog overhead and avoid this race condition altogether. Moving to SERVER project.", "created": "2018-09-26T20:23:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Closing ticket due to age/priority\n\nWe can re-consider & re-open if there is enough interest from the community", "created": "2021-12-22T11:36:00.000000"}], "components": [], "created": "2016-08-24T18:53:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30d6f3c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8h3b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_573674964_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_167538137005"}], "description": "When setting up some scenario runs with Gatling, we ran into a one-time condition after the initial Puppet / Puppet Server startup where concurrent catalog / node requests can fail.  Here is the sequence of steps:\n\n1) Install Puppet Server 2.5.0 (bringing in Puppet Agent 1.6.1).\n\n2) In the {{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}} file, ensure that the {{jruby-puppet.max-active-instances}} is set to something greater than 1, e.g., 4, and that {{use-legacy-auth-conf}} is set to {{true}}.\n\n3) Replace the contents of the {{/etc/puppetlabs/puppetserver/conf.d/auth.conf}} file with the following:\n\n{noformat}\nauthorization: {\n    version: 1\n    rules: [\n        {\n            # Allow nodes to retrieve their own catalog\n            match-request: {\n                path: \"/\"\n                type: path\n            }\n            allow-unauthenticated: true\n            sort-order: 1\n            name: \"allow all\"\n        }\n    ]\n}\n{noformat}\n\nThis just disables authorization so that the catalog requests being made later don't need to provide unique client certificates.\n\n4) Start the Puppet Server service.\n\nNote that the \"node\" and \"facts\" directories under the {{/opt/puppetlabs/server/data/puppetserver/yaml}} directory do not exist.\n\n5) Run the following script:\n\n{code:bash}\n#! /bin/bash\n\nserver_name=localhost\nagent_base_name=agent1\n\nfor i in `seq 1 3`; do\n    full_agent_name=\"${agent_base_name}${i}\"\n    curl -k -X POST \"https://${server_name}:8140/puppet/v3/catalog/${full_agent_name}?environment=production\" --data-urlencode \"environment=production\" --data-urlencode \"facts_format=pson\" --data-urlencode \"facts={\\\"name\\\":\\\"${full_agent_name}\\\",\\\"values\\\":{\\\"somefact\\\":\\\"whatever\\\"}}\" &\ndone\n{code}\n\nThe script will perform 3 catalog requests via curl as background processes - roughly in parallel.  \n\nh5. Expected results:\n\nAll of the catalog requests succeed.\n\nh5. Actual results:\n\nIn most cases, one or more of the catalog requests will fail with a message like the following being written to the puppetserver.log file:\n\n{noformat}\n2016-08-24 17:35:42,461 ERROR [qtp678770218-76] [puppetserver] Puppet Server Error: Failed when searching for node agent12: File exists - /opt/puppetlabs/server/data/puppetserver/yaml/node\n{noformat}\n\nIn the curl output for one of the failing requests, the following stack trace could be seen:\n\n{noformat}\n{\n    \"issue_kind\": \"RUNTIME_ERROR\",\n    \"message\": \"Server Error: Failed when searching for node agent12: File exists - /opt/puppetlabs/server/data/puppetserver/yaml/node\",\n    \"stacktrace\": [\n        \"org/jruby/RubyDir.java:461:in `mkdir'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/yaml.rb:27:in `save'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:200:in `find'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:295:in `find_node'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:292:in `find_node'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:332:in `node_from_request'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:50:in `find'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:194:in `find'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:121:in `do_find'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:48:in `call'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:241:in `override'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:47:in `call'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `process'\",\n        \"org/jruby/RubyArray.java:1613:in `each'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:60:in `process'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\",\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:58:in `process'\",\n        \"file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/master.rb:42:in `handleRequest'\",\n        \"Puppet$$Server$$Master_917301204.gen:13:in `handleRequest'\",\n        \"request_handler_core.clj:273:in `invoke'\",\n        \"jruby_request.clj:46:in `invoke'\",\n        \"jruby_request.clj:31:in `invoke'\",\n        \"request_handler_service.clj:34:in `handle_request'\",\n        \"request_handler.clj:3:in `invoke'\",\n        \"request_handler.clj:3:in `invoke'\",\n        \"core.clj:2493:in `invoke'\",\n        \"core.clj:211:in `invoke'\",\n        \"core.clj:45:in `invoke'\",\n        \"core.clj:330:in `invoke'\",\n        \"core.clj:51:in `invoke'\",\n        \"ringutils.clj:86:in `invoke'\",\n        \"master_core.clj:428:in `invoke'\",\n        \"ring.clj:21:in `invoke'\",\n        \"ring.clj:12:in `invoke'\",\n        \"comidi.clj:249:in `invoke'\",\n        \"jetty9_core.clj:424:in `invoke'\",\n        \"normalized_uri_helpers.clj:80:in `invoke'\"\n    ]\n}\n{noformat}\n\n---\n\nI think this failure occurs because one of the catalog requests successfully causes the appropriate yaml directories to be created whereas the other requests fail on the attempt to create the directory because it already exists at the point the creation attempt is made.  It seems like the master should handle this in a more benign way - by ignoring the failure to create a directory that already exists and proceed on with handling the catalog request.\n\nThis is pretty easy to workaround by just doing an initial agent run on the master before letting requests from other agents come in.  Probably fairly unlikely to happen in real world deployments.  All subsequent catalog requests succeed if the yaml directories exist by the time the request checks for them.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16464", "fixedVersions": [], "id": "16464", "issueType": "Bug", "key": "SERVER-2339", "labels": ["final_triage", "has_workaround"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2021-12-22T11:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Concurrent catalog / node requests fail if yaml directories don't exist", "timeSpent": "PT0S", "updated": "2021-12-22T11:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to gatling-puppet-load-test#master at [084b340c|https://github.com/puppetlabs/gatling-puppet-load-test/commit/084b340c4f6157cb3510ea2ca4374ef5fc8d5602].", "created": "2016-08-26T14:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Doesn't seem to be anything else here to cover for CI or by QA for now, so resolving this ticket.", "created": "2016-08-26T14:23:00.000000"}], "components": [], "created": "2016-08-24T14:43:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4607868"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymy5j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1535113_*|*_10007_*:*_1_*:*_92403873_*|*_3_*:*_1_*:*_77673223_*|*_5_*:*_1_*:*_2750722727_*|*_6_*:*_1_*:*_0"}], "description": "There are some metrics (especially memory usage) that we really need to have visibility into over the course of a run, for certain types of Gatling runs.  (e.g. to validate a new JRuby version, we really want to make sure we're monitoring the memory usage over the course of a long run to give us some confidence that it's not leaking.)\n\nThis ticket covers the work of:\n* Fleshing out the gatling automation framework to support launching background scripts on the SUT during a run\n* Figuring out how to stop those scripts after the run\n* Writing such a script, and having it curl the metrics endpoint at a certain interval during the run, and append the data to a file.\n* Archive the file after the run so that it will be available in the run report.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16184", "fixedVersions": ["None"], "id": "16184", "issueType": "Improvement", "key": "SERVER-1499", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-08-26T14:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "launch a background script to collect metrics at an interval", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I've done a  POC of this on kitchensink, tk, tk-j9, and puppetserver.  Relevant branches are here:\n\nhttps://github.com/cprice404/clj-parent/tree/feature/master/SERVER-1494-initial-parent-project\nhttps://github.com/cprice404/clj-kitchensink/tree/feature/master/SERVER-1494-initial-parent-project\nhttps://github.com/cprice404/trapperkeeper/tree/feature/master/SERVER-1494-initial-parent-project\nhttps://github.com/cprice404/trapperkeeper-webserver-jetty9/tree/feature/master/SERVER-1494-initial-parent-project\nhttps://github.com/cprice404/puppetserver/tree/feature/master/SERVER-1494-initial-parent-project\n\nI might see about getting a few folks to poke at these for a minute before I open actual PRs... but I am somewhat thinking that it's going to be hard to sniff out any particularly challenging parts of the workflow that using this plugin will entail until after we've merged the PRs and have some mileage on the changes.", "created": "2016-09-12T19:07:00.000000"}], "components": [], "created": "2016-08-24T09:42:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@758af291"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymrzb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1449068_*|*_10007_*:*_2_*:*_594011489_*|*_3_*:*_2_*:*_2791111166_*|*_10009_*:*_1_*:*_591386876_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_703410420"}], "description": "Once PE-17266 and PE-14029 have landed, we need to create an initial parent project file for OSS puppetserver and start working through the process of codifying the version numbers for the transitive dependencies, and updating the various upstream projects to consume the parent project.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16462", "fixedVersions": ["SERVER 2.7.0"], "id": "16462", "issueType": "Improvement", "key": "SERVER-1494", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-10-17T14:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "create initial parent pom for OSS puppet server and dependencies", "timeSpent": "PT0S", "updated": "2016-11-07T18:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-23T10:45:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63f72673"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymy4v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16353_*|*_10007_*:*_1_*:*_161307289_*|*_3_*:*_1_*:*_19871061_*|*_5_*:*_1_*:*_2841991184_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_36640"}], "description": "We currently only support installing PE; in order to effectively test changes that land in OSS first in a timely manner (such as JRuby upgrades), we will need the ability to install OSS puppetserver as well.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15311", "fixedVersions": ["None"], "id": "15311", "issueType": "Improvement", "key": "SERVER-1492", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-25T13:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add support for installing OSS puppetserver in automated perf tests", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0c40a2f6400069eb7812] thanks for the report.  These messages should be harmless and hopefully only occurring once per JRuby instance at startup, but we do hope to get rid of them eventually.\n\n/cc [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] just FYI", "created": "2016-08-23T10:36:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yes, it must be PUP-6401.", "created": "2016-08-23T13:40:00.000000"}], "components": ["Puppet Server"], "created": "2016-08-23T02:23:00.000000", "creator": "623c0c40a2f6400069eb7812", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@639c2ed4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8ekn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_46222013_*|*_6_*:*_1_*:*_0"}], "description": "Just did an upgrade of puppetserver 2.4.0 --> 2.5.0 in our sandbox and noticed the following messages in the puppetserver.log.\n{noformat}\n2016-08-23 10:05:56,636 WARN  [clojure-agent-send-pool-0] [puppetserver] Puppet Comparing Symbols to non-Symbol values is deprecated\n   (file & line not available)\n{noformat}\nI see other tickets about this, like;\nPUP-5968\nPUP-6105\nPUP-6401\n\nBut cannot determine if this message is good ot bad.\n", "environment": "RHEL 7.2 x86_64\npuppet-agent 1.6.0\npuppetserver 2.50", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15914", "fixedVersions": [], "id": "15914", "issueType": "Bug", "key": "SERVER-1491", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0c40a2f6400069eb7812", "resolution": "Duplicate", "resolutionDate": "2016-08-23T15:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.5.0 puppetserver.log WARN  [clojure-agent-send-pool-0] [puppetserver] Puppet Comparing Symbols to non-Symbol values is deprecated", "timeSpent": "PT0S", "updated": "2016-08-23T15:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [508a91e|https://github.com/puppetlabs/puppetserver/commit/508a91ea5c18d194226df3f58ea69650b6c1be87].", "created": "2016-09-29T18:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed through full Jenkins CI pipeline on all OSes [here|https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/239/], so moving this to resolved...", "created": "2016-09-30T11:09:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Want to add a blerb to the release notes for this?", "created": "2016-11-07T12:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0].  Added a release note.", "created": "2016-11-07T18:29:00.000000"}], "components": [], "created": "2016-08-19T14:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64b8b913"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1237"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyncvr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "A \"reload\" action can be performed via the service framework to reload Puppet Server configuration without requiring a Java process restart.  This is analogous to sending a SIGHUP but with the benefit of having the \"reload\" command pause until the server has been completely reloaded, similar to how the \"restart\" command pauses until the service process has been fully restarted."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_59598904_*|*_1_*:*_1_*:*_415858433_*|*_10007_*:*_1_*:*_12803367_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3127469926"}], "description": "Once we have released versions of TK and EZBake that contain the new HUP support, we need to bump to those versions in OSS Puppet Server and add the required `restart-file` configuration settings to consume it.  Should keep this ticket open until the OSS Puppet Server master branch passes a full nightly CI run.", "epicLinkSummary": "HUP service / ezbake integration", "estimate": "PT0S", "externalId": "16815", "fixedVersions": ["SERVER 2.7.0"], "id": "16815", "issueType": "Task", "key": "SERVER-1490", "labels": [], "originalEstimate": "PT0S", "parent": "16403", "parentSummary": "HUP service / ezbake integration", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-09-30T11:09:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Integrate latest TK / ezbake changes (with HUP support) into OSS Puppet Server", "timeSpent": "PT0S", "updated": "2016-11-07T18:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-19T11:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ff1e06a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr7j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14063843_*|*_10007_*:*_1_*:*_946655_*|*_3_*:*_1_*:*_7957451_*|*_10009_*:*_1_*:*_331561623_*|*_5_*:*_1_*:*_2503765164_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_507355221"}], "description": "As mentioned in the [Gatling plugin release notes|https://wiki.jenkins-ci.org/display/JENKINS/Gatling+Plugin], recent Jenkins releases have included a security change which breaks the ability to view Gatling plugin reports.  This page has details on approaches that can be taken to re-enable the ability to view Gatling reports:\n\nhttps://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy#ConfiguringContentSecurityPolicy-DisableCSPforallPlugins\n\nWe should figure out a way to automate the configuration of this security policy on our GPLT Jenkins instances.  One approach I tried manually which seems to work is to just add \"-Dhudson.model.DirectoryBrowerSupport.CSP=\" into the {{JENKINS_JAVA_OPTIONS}} variable in {{/etc/sysconfig/jenkins}}, followed by a restart of the Jenkins service.  Seems like this wouldn't be too difficult to add into the Puppet code that applies the Jenkins configuration.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16999", "fixedVersions": ["None"], "id": "16999", "issueType": "Task", "key": "SERVER-1489", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-08-29T11:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconfigure Jenkins Content Security Policy for Gatling Report Viewing", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "623e78348d8b9c0068b9f406", "body": "See https://puppet.atlassian.net/browse/PUP-6617", "created": "2016-08-19T08:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4938562ab90069f7e39d] great, thanks for filing this.", "created": "2016-08-19T11:23:00.000000"}, {"author": "557058:315adc9a-49dc-4753-86d1-4536fc30e3f3", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] This might be something for the Language team to look at to determine if the behavior change between v3 and v4 was intentional. In addition, the documentation for the `generate` function does not make clear whether only stdout, or stdout and stderr, are captured, and should be updated to clarify the expected behavior.", "created": "2016-08-31T10:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:315adc9a-49dc-4753-86d1-4536fc30e3f3] not that I'd be opposed to getting some extra eyes on it, but I know for sure that the code that's causing this is in the puppetserver repo.  We had to provide a custom implementation of the {{Puppet::Utils::Execution}} stuff that would work on the JVM, and that's where the behavioral differences were introduced.", "created": "2016-08-31T10:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "bringing this in because it is closely related to SERVER-1570, so it seemed like it might be easy to fix while I still have some context around that code.", "created": "2016-09-28T12:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Confirmed the reproducer, moving this ticket to SERVER.", "created": "2016-09-28T12:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [13b0570|https://github.com/puppetlabs/puppetserver/commit/13b0570d9f59d0d8248ab43b049924a291dc00c3].", "created": "2016-10-03T12:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The changes that got merged related to this ticket seem to have changed the behavior of the Clojure wrapper of ShellUtils.  There is an acceptance test failing in puppetserver's master branch ({{code_scripts.rb}}) due to an NPE from r10k.  The line where the error is thrown is trying to call {{split}} on {{ENV['PATH']}}, so it's looking like my refactor is preventing the default environment variables from being passed through.\n\nI'm working on this and hope to have a PR up today, but I have lots of meetings today and will be out for jury duty Weds/Thurs, so just wanted to drop an update on here in case someone else ends up being blocked by this.\n\n/cc [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091]", "created": "2016-10-04T08:30:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] does this ticket need any release notes?", "created": "2016-11-07T11:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0b72bef8a60068c796ce] added some.", "created": "2016-11-07T13:01:00.000000"}], "components": [], "created": "2016-08-19T08:25:00.000000", "creator": "623e78348d8b9c0068b9f406", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ceb6ae3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyms07:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "There was a bug in Puppet Server versions prior to 2.7.0 wherein calling the `generate()` function did not merge the output from {{STDERR}} into the output from {{STDOUT}}.  This bug is fixed on 2.7.0 and the output from {{STDERR}} is now included."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_145696149_*|*_1_*:*_2_*:*_510440041_*|*_10007_*:*_2_*:*_452469379_*|*_3_*:*_2_*:*_14238475_*|*_10009_*:*_1_*:*_81266258_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2428458027_*|*_10005_*:*_1_*:*_532725178"}], "description": "h2. description\n\nThe function generate() does not merge stdout and stderr using a puppet4 master. It works as expected on a v3 master, or using puppetv4 apply.\n\n{code:shell}\n#!/bin/sh\n\necho -n stdin\necho -n stderr 1>&2\n{code}\n\n{code:puppet}\nclass manifests::test_util_exec {\n  $_msg = generate('/tmp/test2')\n  notify { 'test_util_exec':\n    message => $_msg\n  }\n}\n{code}\n\nh2. puppetv4 master\n\n{code}\nNotice: stdin\nNotice: /Stage[main]/Manifests::Test_util_exec/Notify[test_util_exec]/message: defined 'message' as 'stdin'\nNotice: Finished catalog run in 32.46 seconds\n{code}\n\nh2. puppetv3 master\n\n{code}\nNotice: stdinstderr\nNotice: /Stage[main]/Manifests::Test_util_exec/Notify[test_util_exec]/message: defined 'message' as 'stdinstderr'\nNotice: Finished catalog run in 32.50 seconds\n{code}", "environment": "h2. master\n\nPlatform: CentOS 7.2.1511\nArchitecture: x86_64\nLinux ccsvli80 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux\npuppetserver --version\npuppetserver version: 2.4.0\npuppetserver gem list\nWarning: The following options to parse-opts are unrecognized: :flag\nLOCAL GEMS ***\ncollectd-dsl (0.3.6cc, 0.3.5)\nhiera-eyaml (2.1.0)\nhiera-eyaml-gpg (0.6)\nhighline (1.6.21)\njar-dependencies (0.1.13)\njruby-openssl (0.9.7 java)\njson (1.8.0 java)\nmini_portile2 (2.1.0)\nrake (10.1.0)\nrdoc (4.1.2)\nruby_gpg (0.3.2)\ntrollop (2.1.2)\nuuidtools (2.1.5)\n\nh2. agent\n\nPlatform: CentOS 7.2.1511\nArchitecture: x86_64\nLinux ccosvms0033 3.10.0-327.22.2.el7.x86_64 #1 SMP Thu Jun 23 17:05:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux\nrpm -q puppet\npuppet-3.7.2-1.el7.noarch", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15081", "fixedVersions": ["SERVER 2.7.0"], "id": "15081", "issueType": "Bug", "key": "SERVER-1571", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e78348d8b9c0068b9f406", "resolution": "Fixed", "resolutionDate": "2016-10-06T13:27:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The function generate() should merge stdout and stderr", "timeSpent": "PT0S", "updated": "2017-01-09T12:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-18T17:19:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1bf91287"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymy4f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_82302472_*|*_1_*:*_1_*:*_79950230_*|*_10007_*:*_1_*:*_344155312_*|*_3_*:*_1_*:*_1109011_*|*_5_*:*_1_*:*_2920986346_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3079162"}], "description": "Once we have a released version of the puppet-gatling-jenkins-plugin, we need to modify the puppet code in the control repo for the perf testing driver node so that that plugin will be automatically installed on the jenkins driver nodes.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16998", "fixedVersions": ["None"], "id": "16998", "issueType": "Task", "key": "SERVER-1488", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-24T15:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Modify perf driver puppet code to install puppet-gatling-jenkins-plugin", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-08-18T17:17:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61eeb908"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz88nr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_7262_*|*_1_*:*_1_*:*_80025589_*|*_5_*:*_1_*:*_3351476607_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_167675"}], "description": "We need to release the plugin to a known location so that we'll have a fixed version with a URL that we can use in the puppet code that installs jenkins plugins.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16814", "fixedVersions": ["None"], "id": "16814", "issueType": "Task", "key": "SERVER-1487", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-19T15:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Release a version of puppet-gatling-jenkins-plugin, to nexus or similar", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to gatling-puppet-load-test#master at [248086d|https://github.com/puppetlabs/gatling-puppet-load-test/commit/248086dc655688ca4cd3bf37053a21d36f6cfa8c].", "created": "2016-08-25T14:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Shouldn't be a need for any further CI or QA validation of this ticket for now, so marking this as \"done\".", "created": "2016-08-25T14:43:00.000000"}], "components": [], "created": "2016-08-18T17:16:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f3a311b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymy5b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_80091718_*|*_10007_*:*_1_*:*_92665719_*|*_3_*:*_1_*:*_70092306_*|*_5_*:*_1_*:*_2836140391_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_352766267"}], "description": "The puppet-gatling-jenkins-plugin requires some setup steps that will write out some facter data for inclusion in the final gui reports.  The current implementation of this requires a recent version of facter that defaults to structured facts and supports the '-j' json option.  This probably won't work on older versions of PE like 3.3.  Need to modify the code to be tolerant of the \"server_era\" and support older facters.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16460", "fixedVersions": ["None"], "id": "16460", "issueType": "Task", "key": "SERVER-1486", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-25T14:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "make facter data collection step compatible with older versions of facter", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "I like the idea of pretty printing the response from the Puppet *agent*, but we definitely don't want to pretty print responses on the wire. We looked into this back in 2013 or 2014 and found that pretty printed JSON responses were 40% larger on average than the non-pretty printed versions. That's a gigantic amount of overhead for information that's generally not human viewed.\n\nIf you need pretty printed JSON when interacting with Puppetserver via, say, curl, you can do {{curl ... | python -m json.tool}}.\n\nSince this is targeted at Puppetserver and we're not going to pretty print responses on the wire I'm going to close this ticket. If you'd like to have pretty printing implemented on the agent side we can reopen this ticket and move it to the PUP project.", "created": "2017-05-23T16:48:00.000000"}], "components": ["Puppet Server"], "created": "2016-08-18T07:39:00.000000", "creator": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@794d6e81"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8b9r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24052171624_*|*_6_*:*_1_*:*_0"}], "description": "In Puppet Server 2.5 the server changed its Error 500 page to contain a JSON object.  Puppet should pretty print this error JSON object, by extracting the message array, and printing with newlines, instead of as a giant ugly red blob that is unreadable.  \n\nThis issue is also related to SERVER-1482.", "environment": "Windows 2012r2, Puppet Server 2.5", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15651", "fixedVersions": [], "id": "15651", "issueType": "Bug", "key": "SERVER-1811", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "resolution": "Won't Fix", "resolutionDate": "2017-05-23T16:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet failed to build catalog error message is ugly", "timeSpent": "PT0S", "updated": "2017-05-23T16:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "attachments": [], "comments": [], "components": [], "created": "2016-08-16T09:21:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f187e26"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymy47:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_83694875_*|*_3_*:*_1_*:*_1045798428_*|*_5_*:*_1_*:*_2503574227_*|*_6_*:*_1_*:*_0"}], "description": "The following repos are no longer in use and should be marked as Unmaintained.\ncatalog-correctness-testing\ntrapperkeeper-jgit-service\ngreen-team-ci-eye\nclj-http-tools\nlein-ubersource", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16813", "fixedVersions": ["None"], "id": "16813", "issueType": "Task", "key": "SERVER-1481", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2016-08-29T11:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Mark unmaintained repos", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Ping [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - not sure if this may be a server thing since it involves the Puppet::Util::Execution and what exception(s) it raises.", "created": "2016-08-17T08:58:00.000000"}, {"author": "623e78348d8b9c0068b9f406", "body": "I can confirm this works as expected using puppet agent 4.5.2", "created": "2016-08-17T09:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4938562ab90069f7e39d] When you say it works with \"puppet agent 4.5.2\", do you mean via 'apply'?  Or, if you mean that it works with a agent/master setup, what sort of master are you using?", "created": "2016-08-17T10:16:00.000000"}, {"author": "623e78348d8b9c0068b9f406", "body": "yes, I meant it works using puppet apply.\nThe only environment this seems to be failing in is in agent mode against a v4 server.\nAlso, STDIN/STDOUT handling seems broken (combine option in Util Execute)\n\nCheers", "created": "2016-08-18T01:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4938562ab90069f7e39d] ok, thanks for the additional info.  It definitely seems like it should throw an error if the exit code is non-zero, rather than returning an empty string.  We'll try to look into that soon.\n\nI'm not sure if we have support for STDIN/STDOUT in the server implementation of Puppet::Util::Execution at the moment", "created": "2016-08-18T09:36:00.000000"}, {"author": "623e78348d8b9c0068b9f406", "body": "https://puppet.atlassian.net/browse/PUP-6640", "created": "2016-08-19T08:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Confirmed that I can repro using the steps described above", "created": "2016-09-27T14:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The bug is in the Puppet Server ruby code, so, moving this ticket over to SERVER.", "created": "2016-09-27T16:28:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] does this ticket need release notes?", "created": "2016-11-07T12:00:00.000000"}], "components": ["Puppet Server"], "created": "2016-08-16T02:55:00.000000", "creator": "623e78348d8b9c0068b9f406", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@431ffcd9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8yq7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The {{generate()}} function is supposed to throw an exception when the executed command returns a non-zero exit code.  In versions of Puppet Server prior to 2.7.0, it did not, and this behavior was not consistent with the MRI/Rack versions of the Puppet master.  This bug is fixed in 2.7.0."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_161831438_*|*_1_*:*_2_*:*_789067290_*|*_10007_*:*_1_*:*_71572363_*|*_3_*:*_1_*:*_16018984_*|*_10009_*:*_1_*:*_372422010_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2347457914_*|*_10005_*:*_1_*:*_532816412"}], "description": "h2. description\n\nThe function  {{generate()}} does not throw a parse failure as stated in the documentation when the master is running puppet4. It works as expected on a v3 master, or using {{puppet apply}}:\n\n{code:puppet}\nclass manifests::test_util_exec {\n  $_msg = generate('/bin/false')\n  notify { 'test_util_exec':\n    message => $_msg\n  }\n}\n{code}\n\nh2. puppet4 master\n\n{code:shell}\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for MYNODE.mygtld\nInfo: Applying configuration version '1471337073'\nNotice:\nNotice: /Stage[main]/Manifests::Test_util_exec/Notify[test_util_exec]/message: defined 'message' as ''\nNotice: Finished catalog run in 34.14 seconds\n{code}\n\nh2. puppet 3 master\n\n{code:shell}\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to execute generator /bin/false: Execution of '/bin/false' returned 1:  at /etc/puppet/environments/MYENV/manifests/test_util_exec.pp:2 on node MYNODE.mygtld\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n{code}\n", "environment": "h2. master\n\nPlatform: CentOS 7.2.1511\nArchitecture: x86_64\nLinux ccsvli80 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux\n\n# puppetserver --version\npuppetserver version: 2.4.0\n# puppetserver gem list\nWarning: The following options to parse-opts are unrecognized: :flag\n\n*** LOCAL GEMS ***\n\ncollectd-dsl (0.3.6cc, 0.3.5)\nhiera-eyaml (2.1.0)\nhiera-eyaml-gpg (0.6)\nhighline (1.6.21)\njar-dependencies (0.1.13)\njruby-openssl (0.9.7 java)\njson (1.8.0 java)\nmini_portile2 (2.1.0)\nrake (10.1.0)\nrdoc (4.1.2)\nruby_gpg (0.3.2)\ntrollop (2.1.2)\nuuidtools (2.1.5)\n\nh2. agent\n\n\nPlatform: CentOS 7.2.1511\nArchitecture: x86_64\nLinux ccosvms0033 3.10.0-327.22.2.el7.x86_64 #1 SMP Thu Jun 23 17:05:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux\n# rpm -q puppet\npuppet-3.7.2-1.el7.noarch\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16182", "fixedVersions": ["SERVER 2.7.0"], "id": "16182", "issueType": "Bug", "key": "SERVER-1570", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e78348d8b9c0068b9f406", "resolution": "Fixed", "resolutionDate": "2016-10-04T18:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet4 function generate() should throw exception when command fails", "timeSpent": "PT0S", "updated": "2016-11-07T13:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:607e2a7f-87a3-4b5f-941a-aa5bf74f2730", "created": "2016-08-15T00:19:00.000000", "name": "puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10661"}], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:607e2a7f-87a3-4b5f-941a-aa5bf74f2730] - Did you modify the Puppet Server's {{bootstrap.cfg}} at any time after the initial installation of Puppet Server?  If so, you'll want to see the [2.5 release notes|https://docs.puppet.com/puppetserver/latest/release_notes.html#puppet-server-25] and the [bootstrap.cfg upgrade docs|https://docs.puppet.com/puppetserver/latest/bootstrap_upgrade_notes.html].\n\n", "created": "2016-08-15T04:49:00.000000"}, {"author": "557058:607e2a7f-87a3-4b5f-941a-aa5bf74f2730", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Thanks for the hint, but my {{bootstrap.cfg}} is still the original version and has not been modified.", "created": "2016-08-15T05:00:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "What version of Puppet Server was installed before the upgrade?\n\nYou might also want to read the discussion on SERVER-1478 - especially [this comment from Jeremy|https://puppet.atlassian.net/browse/SERVER-1478?focusedCommentId=335668&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-335668].  Was {{/etc/sysconfig/puppetserver}} modified before the upgrade?", "created": "2016-08-15T05:08:00.000000"}, {"author": "557058:607e2a7f-87a3-4b5f-941a-aa5bf74f2730", "body": "Thank you, that comment helped me fix it. I have a modified {{/etc/default/puppetserver}} file (to tweak Java memory allocation) and needed to change the {{BOOTSTRAP_CONFIG}} in there. I guess this is why I dislike changing files in {{/etc/default}}, but unfortunately there are no other ways to change the JVM args.\n\nMay I suggest adding a note about this in the release notes?", "created": "2016-08-15T05:21:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Glad that fixed it!\n\nYes, I think this should be noted in the upgraded docs - probably the release notes as well.  I already made [a comment to that effect over on SERVER-1478|https://puppet.atlassian.net/browse/SERVER-1478?focusedCommentId=336159&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-336159].  I'll see what the rest of the team thinks about it.", "created": "2016-08-15T05:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "/cc [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]", "created": "2016-08-15T10:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "/cc [~accountid:623c0b72bef8a60068c796ce]", "created": "2016-08-15T10:45:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "This is a dup of SERVER-1478", "created": "2016-08-17T10:20:00.000000"}], "components": ["Puppet Server"], "created": "2016-08-15T00:19:00.000000", "creator": "557058:607e2a7f-87a3-4b5f-941a-aa5bf74f2730", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6349443d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz87wn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_208850828_*|*_6_*:*_1_*:*_0"}], "description": "After upgrading to puppetserver 2.5.0, the puppetserver service fails to start, with the exception message \"Service ':PoolManagerService' not found\". See also the attached puppetserver.log file.", "environment": "Debian Jessie x64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16179", "fixedVersions": [], "id": "16179", "issueType": "Bug", "key": "SERVER-1479", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:607e2a7f-87a3-4b5f-941a-aa5bf74f2730", "resolution": "Duplicate", "resolutionDate": "2016-08-17T10:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fails to start with message \"Service ':PoolManagerService' not found\"", "timeSpent": "PT0S", "updated": "2016-08-17T10:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi [~accountid:557058:8daa3a5e-5653-42b5-8b29-617f73daaeb0], thanks for the report.  Was this on a fresh install or an upgrade?  Can you perhaps attach the contents of the file {{/opt/puppetlabs/server/apps/puppetserver/config/services.d/bootstrap.cfg}}?  And maybe also check the log file at {{/var/log/puppetlabs/puppetserver/puppetserver.log}} to see if there is more detail on this exception in there?", "created": "2016-08-12T09:46:00.000000"}, {"author": "557058:50c090cf-cef8-462c-8d1e-3bbb82602402", "body": "I got the same error after an upgrade b/c the puppet module I am using to managed the server has bootstrap.cfg in a template in order to toggle the status of the certificate-authority-service as disabled or not. I have had to update the bootstrap.cfg template after previous upgrades as well. The error messages aren't that helpful so it takes me awhile to remember what the problem is but this issue helped me by pointing me at bootstrap.cfg. \n\nThe service that needs to be removed is:\npuppetlabs.services.jruby-pool-manager.jruby-pool-manager-service/jruby-pool-manager-service\n", "created": "2016-08-12T10:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50c090cf-cef8-462c-8d1e-3bbb82602402] can you link us to the module you're using?  If it's a forge module we'd like to help open an issue with the maintainer and maybe even file a PR to help fix the issue.\n\nI don't think you want to remove the pool-manager-service, it's necessary for the server to run.\n\nThe crux of this issue is explained in the release notes (and announcement e-mail, forthcoming):\n\nhttps://docs.puppet.com/puppetserver/latest/release_notes.html#puppet-server-25\n\nthe tl", "created": "2016-08-12T10:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Another problem may be that after the upgrade to Puppet Server 2.5, it is expected that this line in the {{/etc/sysconfig/puppetserver}} file...\n\n{noformat}\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/bootstrap.cfg\"\n{noformat}\n\n... should be changed to:\n\n{noformat}\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/\"\n{noformat}\n\nIf you had made modifications to the {{/etc/sysconfig/puppetserver}} file before the upgrade, I suspect that this line may not have been updated.\n\nStarting with the Puppet Server 2.5.0 release, custom modifications that you want to make to the bootstrap file - specifically to choose the certificate-authority-disabled-service instead of the certificate-authority-service - should be done in the new {{/etc/puppetlabs/puppetserver/services.d/ca.cfg}}.  The old {{/etc/puppetlabs/puppetserver/bootstrap.cfg}} file should not be used anymore and should be deleted.\n\nSee https://docs.puppet.com/puppetserver/latest/release_notes.html#new-feature-flexible-service-bootstrappingca-configuration-file for more details.", "created": "2016-08-12T10:25:00.000000"}, {"author": "557058:50c090cf-cef8-462c-8d1e-3bbb82602402", "body": "My error might have been a little different, I got that the service was not found:\n\nError: Systemd start for puppetserver failed!\njournalctl log for puppetserver:\n-- Logs begin at Wed 2016-06-15 10:32:33 EDT, end at Fri 2016-08-12 12:06:54 EDT. --\nAug 12 12:01:58 puppet.adnetd.org java[3424]: Exception in thread \"main\" java.lang.RuntimeException: Service ':PoolManagerService' not found\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invoke(internal.clj:98)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.internal$instantiate$fn__13793.invoke(internal.clj:139)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.internal$instantiate.invoke(internal.clj:136)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.internal$eval14328$build_app_STAR___14337$fn__14338.invoke(internal.clj:542)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.internal$eval14328$build_app_STAR___14337.invoke(internal.clj:510)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.internal$eval14430$boot_services_STAR___14439$fn__14440$fn__14441.invoke(internal.clj:610)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.internal$eval14430$boot_services_STAR___14439$fn__14440.invoke(internal.clj:609)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.internal$eval14430$boot_services_STAR___14439.invoke(internal.clj:604)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.core$eval15252$boot_with_cli_data__15259$fn__15260.invoke(core.clj:130)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.core$eval15252$boot_with_cli_data__15259.invoke(core.clj:95)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.core$eval15281$run__15286$fn__15287.invoke(core.clj:151)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.core$eval15281$run__15286.invoke(core.clj:145)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:173)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.RestFn.invoke(RestFn.java:457)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.Var.invoke(Var.java:394)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.AFn.applyToHelper(AFn.java:165)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.Var.applyTo(Var.java:700)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.core$apply.invoke(core.clj:630)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.RestFn.invoke(RestFn.java:457)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.Var.invoke(Var.java:394)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.AFn.applyToHelper(AFn.java:165)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.Var.applyTo(Var.java:700)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.core$apply.invoke(core.clj:630)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.main$main_opt.invoke(main.clj:316)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.main$main.doInvoke(main.clj:421)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.RestFn.invoke(RestFn.java:512)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.Var.invoke(Var.java:409)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.AFn.applyToHelper(AFn.java:178)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.lang.Var.applyTo(Var.java:700)\nAug 12 12:01:58 puppet.adnetd.org java[3424]: at clojure.main.main(main.java:37)\nAug 12 12:01:58 puppet.adnetd.org systemd[1]: puppetserver.service: main process exited, code=exited, status=1/FAILURE\n```", "created": "2016-08-12T10:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50c090cf-cef8-462c-8d1e-3bbb82602402] in that case it seems like the solution would be that that service needs to be *added* to the bootstrap.cfg file (which has a new location in 2.5.0, under {{/opt/puppetlabs/server/apps/puppetserver/config/services.d}}).  The new packages should include that service (and all other required services) by default, though.", "created": "2016-08-12T10:37:00.000000"}, {"author": "557058:50c090cf-cef8-462c-8d1e-3bbb82602402", "body": "OK I guess that was the first thing in the release notes, but I guess I wasn't reading it very closely. I have made the updates to the service config and changed the bootstrap.cfg template to a ca.cfg template and the puppetserver is running again. Thanks. ", "created": "2016-08-12T10:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50c090cf-cef8-462c-8d1e-3bbb82602402] no problem, thanks for confirming the fix!", "created": "2016-08-12T10:41:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Should your note about {{/etc/sysconfig/puppetserver}} be added to [the bootstrap upgrade docs|https://docs.puppet.com/puppetserver/latest/bootstrap_upgrade_notes.html]? (and/or the release notes - see discussion on SERVER-1479)", "created": "2016-08-15T05:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Just for posterity, it would also be possible to see the following error after upgrading if the {{/etc/sysconfig/puppetserver}} file had previously been modified:\n\n{noformat}\nException in thread \"main\" java.lang.IllegalArgumentException: Specified bootstrap config file does not exist: '/etc/puppetlabs/puppetserver/bootstrap.cfg'\n{noformat}\n\nThe Puppet Server 2.5.0 packages do not contain a {{/etc/puppetlabs/puppetserver/bootstrap.cfg}} file so the old version of the file may be renamed after upgrade to {{/etc/puppetlabs/puppetserver/bootstrap.cfg.rpmsave}}.  Assuming one were to restore the {{/etc/puppetlabs/puppetserver/bootstrap.cfg.rpmsave}} file to {{/etc/puppetlabs/puppetserver/bootstrap.cfg}} at that point, though, the message mentioned above would appear:\n\n{noformat}\n2016-08-15 10:46:35,063 ERROR [main] [p.t.internal] Error during app buildup!\njava.lang.RuntimeException: Service ':PoolManagerService' not found\n{noformat}\n\nAgain, correcting the {{BOOTSTRAP_CONFIG}} variable definition in the {{/etc/sysconfig/puppetserver}} file to...\n\n{noformat}\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/config/services.d/\"\n{noformat}\n\n... should resolve this issue.", "created": "2016-08-15T11:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Jeremy Barlow - Should your note about /etc/sysconfig/puppetserver be added to the bootstrap upgrade docs? (and/or the release notes - see discussion on SERVER-1479){quote}\n\n[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] I agree that since a couple of folks have run into this issue now that it might be good to add some verbiage about ensuring that the {{BOOTSTRAP_CONFIG}} variable in the {{/etc/sysconfig/puppetserver}} / {{/etc/default/puppetserver}} file is updated to the new bootstrap locations as part of the upgrade.  It might be good to include a snippet about the two error messages along with that note for ease in identifying the problem.\n\n[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] - does this make sense to you?  Is this something you'd have time to work into the release notes somewhere?", "created": "2016-08-15T11:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Some extra content was added to the release notes about the {{BOOTSTRAP_CONFIG}} setting [here|https://docs.puppet.com/puppetserver/latest/release_notes.html#potential-warnings-when-upgrading-with-a-modified-init-configuration].\n\nOn the assumption that the current documentation provides sufficient information on how to avoid this problem, I'm going to close out this issue.", "created": "2016-09-07T13:47:00.000000"}], "components": ["Puppet Server"], "created": "2016-08-12T09:17:00.000000", "creator": "557058:8daa3a5e-5653-42b5-8b29-617f73daaeb0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@208f4504"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymonr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "> ### Potential service failures when upgrading with a modified init configuration\n>\n> If you modified the init configuration file --- for instance, to [configure Puppet Server's JVM memory allocation](./install_from_packages.html#memory-allocation) or [maximum heap size](./tuning_guide.html) --- and upgrade Puppet Server 2.5.0 or newer with a package manager, you might see a warning during the upgrade that the updated package will overwrite the file (`/etc/sysconfig/puppetserver` in Red Hat and derivatives, or `/etc/default/puppetserver` in Debian-based systems).\n>\n> The changes to the file support the new service bootstrapping behaviors. If you don't accept changes to the file during the upgrade, the puppetserver service fails and you might see a `Service ':PoolManagerService' not found` or similar warning. To resolve the issue, set the `BOOTSTRAP_CONFIG` setting in the init configuration file to:\n>\n>     BOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,/opt/puppetlabs/server/apps/puppetserver/services.d\"\n>\n> If you modified other settings in the file before upgrading, and then overwrite the file during the upgrade, you might need to reapply those modifications after the upgrade."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_435773381_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1826862029"}], "description": "When starting the server, I get the following error: \n-- Unit puppetserver.service has begun starting up.\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: Exception in thread \"main\" java.lang.RuntimeException: Service ':PoolManagerService\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invoke(intern\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.internal$instantiate$fn__13793.invoke(internal.clj:139)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.internal$instantiate.invoke(internal.clj:136)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.internal$eval14328$build_app_STAR___14337$fn__14338.inv\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.internal$eval14328$build_app_STAR___14337.invoke(intern\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.internal$eval14430$boot_services_STAR___14439$fn__14440\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.internal$eval14430$boot_services_STAR___14439$fn__14440\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.internal$eval14430$boot_services_STAR___14439.invoke(in\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.core$eval15252$boot_with_cli_data__15259$fn__15260.invo\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.core$eval15252$boot_with_cli_data__15259.invoke(core.cl\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.core$eval15281$run__15286$fn__15287.invoke(core.clj:151\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.core$eval15281$run__15286.invoke(core.clj:145)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:173)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.RestFn.invoke(RestFn.java:457)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.Var.invoke(Var.java:394)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.AFn.applyToHelper(AFn.java:165)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.Var.applyTo(Var.java:700)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.core$apply.invoke(core.clj:630)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.RestFn.invoke(RestFn.java:457)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.Var.invoke(Var.java:394)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.AFn.applyToHelper(AFn.java:165)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.Var.applyTo(Var.java:700)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.core$apply.invoke(core.clj:630)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.main$main_opt.invoke(main.clj:316)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.main$main.doInvoke(main.clj:421)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.RestFn.invoke(RestFn.java:512)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.Var.invoke(Var.java:409)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.AFn.applyToHelper(AFn.java:178)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.lang.Var.applyTo(Var.java:700)\nAug 12 11:07:32 puppet4.cgraphics.com java[6317]: at clojure.main.main(main.java:37)\nAug 12 11:07:32 puppet4.cgraphics.com systemd[1]: puppetserver.service: main process exited, code=exited, status=1/FAILURE\nAug 12 11:07:33 puppet4.cgraphics.com systemd[1]: puppetserver.service: control process exited, code=exited status=1\nAug 12 11:07:33 puppet4.cgraphics.com systemd[1]: Failed to start puppetserver Service.\n", "environment": "CentOS 7.2.1511", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16812", "fixedVersions": [], "id": "16812", "issueType": "Bug", "key": "SERVER-1478", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8daa3a5e-5653-42b5-8b29-617f73daaeb0", "resolution": "Done", "resolutionDate": "2016-09-07T13:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server won't start", "timeSpent": "PT0S", "updated": "2018-03-05T15:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "If the intended tmpdir were {{/tmp}}, I think the permissions error would make sense, assuming that the puppetserver process' user (puppet/pe-puppet) doesn't have execute permissions on the {{/tmp}} directory - which it would not for a permissions mask of 776 (execute bit not set for \"world\", which is what permissions for the puppet/pe-puppet user would be evaluated against).\n\nIt seems like the problem here is that the custom value for {{-Djava.io.tmpdir=/opt/puppetlabs/server/data/puppetserver}} doesn't end up being used as the tempdir that the offending code ends up using, {{/tmp}}.  I think this occurs because the line at https://github.com/puppetlabs/puppet/blob/4.5.3/lib/puppet/file_system/uniquefile.rb#L152 causes {{@@systmpdir}} to default to {{/tmp}} instead of {{/opt/puppetlabs/server/data/puppetserver}}.  This is presumably because {{defined(Etc.systmpdir)}} evaluates to \"false\" at the point this line is sourced.  I'm not exactly sure why that is the case, though.  I tried putting a \"require 'etc'\" line before that one and got the same behavior.  If I change the implementation of `tmpdir` to just be the following, though, it works:\n\n{code:ruby}\n  def tmpdir\n    Dir::tmpdir\n  end\n{code}\n\nMay not be as easy as changing this, though, since I think some other custom Puppet stuff has gone on in this file over time.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] may have some more thoughts on this since I think he may have been involved in vendoring the \"uniquefile.rb\" code from \"Tempfile\" in the first place.", "created": "2016-08-11T18:18:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Another hacky approach that seems to work is to just change the line which initializes {{@@systmpdir}} to:\n\n{code:ruby}\n @@systmpdir ||= Etc.systmpdir ? Etc.systmpdir : '/tmp'\n{code}\n\nThis skirts around the {{defined?(Etc.systmpdir)}} check returning nil.\n\nDoesn't seem like a great idea, though, given that the other implementations that this inherits from - in MRI Ruby and JRuby - both have the {{defined?}} check.\n", "created": "2016-08-11T18:26:00.000000"}, {"author": "557058:99353691-c8f3-4c51-89d9-230d3b76590e", "body": "I'd just like to counter the assertion that \"not many people are mucking with the permissions on /tmp\".\n\nWhen hardening a box, one of the first things to be done is to mount any temp and log partitions nosuid,nodev,noexec.\n\nThis should be a higher-priority issue, IMHO.", "created": "2016-10-20T10:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:99353691-c8f3-4c51-89d9-230d3b76590e] thanks for the input.  This is also starting to become a more common issue as newer linux distros (CentOS7, etc.) are more likely to ship with a default configuration that triggers this problem.  I'll see if we can bring this one back to the table at our next triage meeting.", "created": "2016-10-20T10:32:00.000000"}, {"author": "557058:99353691-c8f3-4c51-89d9-230d3b76590e", "body": "Thanks, [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]", "created": "2016-10-20T10:35:00.000000"}, {"author": "557058:99353691-c8f3-4c51-89d9-230d3b76590e", "body": "Repeating a comment from a related issue:\n\nAt the very least, I think the installer should check the mount status of the temp dir (and perms) and blow up with a clear error message.", "created": "2016-10-20T10:39:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:99353691-c8f3-4c51-89d9-230d3b76590e] this ticket is specific to removing executable privelages for everyone ( 776 ).  In the case of:\n\nbq. When hardening a box, one of the first things to be done is to mount any temp and log partitions nosuid,nodev,noexec.\n\nThat will be covered by Puppet Enterprise as the puppet code checks to see if /tmp is mounted as noexec and moves the java.io.tmpdir if it is.  \n\nI've seen lots of users hit by mounting as noexec but never someone with 776 or stricter permissions.  That being said I think puppetserver should totally stop using /tmp and instead just use something in /opt/puppetlabs that we can control more easily.  Even if we do move the java.io.tmpdir this issue is saying that something deep in the ruby code of the puppet master is still defaulting to using /tmp and that's what we want to fix with this ticket.  ", "created": "2016-10-25T18:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I created a spin-off ticket, SERVER-1631 to capture [~accountid:557058:99353691-c8f3-4c51-89d9-230d3b76590e]'s immediate suggestion about the error messaging, and will add that ticket to an upcoming maintenance sprint.", "created": "2016-11-02T10:55:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing in preference of SERVER-1631.", "created": "2018-02-13T17:04:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] this ticket and SERVER-1631 are for different issues.  1631 is specific to noexec and this ticket is specific to the permissions of the directory.  ", "created": "2018-02-13T21:48:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:5a15cc24b87a44359db09635], it looks like this ticket is eventually coming to the conclusion that Puppet's ruby code is using /tmp when it shouldn't. I assume Puppet uses tmpdir frequently for many cases, can we get folks from the Coremunity team to weigh in on this?", "created": "2018-02-14T17:07:00.000000"}, {"author": "5a15cc24b87a44359db09635", "body": "I don't know why {{@@systmpdir}} is being set the way it is, but using {{Etc.systmpdir}} definitely explains why it's not changing at all. The way [{{Etc.systmpdir}} is written|https://github.com/ruby/etc/blob/744646073bcd4e7c5b65ae5921cf4c1d5697e35e/ext/etc/etc.c#L648], it looks like it will never be anything other than \"{{/tmp}}\" unless you're on Windows, or macOS. We'll need to look into why it's not using [{{Dir.tmpdir}}|https://ruby-doc.org/stdlib-2.0.0/libdoc/tmpdir/rdoc/Dir.html#method-c-tmpdir] to figure out where the temporary directory is.", "created": "2018-02-14T18:10:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "This also affects the {{puppetserver gem install}} command. If {{/tmp}} is mounted with the {{noexec}} option, you will get an error about {{flock}} not being available:\n\n{noformat}\npuppetserver gem install autosign\nFetching: gli-2.19.0.gem (100%)\nNotImplementedError: flock unsupported or native support failed to load", "created": "2020-05-12T18:00:00.000000"}, {"author": "557058:1d3598d5-3371-4d6f-afd5-4c700c3fd158", "body": "If you are working in a secure environment, it is considered a violation to have any long running process configured to write to /tmp. \u00a0Most organizations will just change the tmpdir location so why not provide a good default for them?\n\nSince this ticket is several years old some things have changed. \u00a0\n\nInstalling gems in the puppetserver now requires an additional configuration item (for me at least):\n\nI have to modify the /etc/sysconfig/pe-puppetserver file and update JAVA_ARGS_CLI to\u00a0JAVA_ARGS_CLI=\"-Djava.io.tmpdir=/opt/puppetlabs/server/apps/puppetserver/tmp\" to get a gem installed.\n\nThis needs to be a default IMHO and also configurable via a parameter / pe console/ hieradata. \u00a0\u00a0\n\n\u00a0", "created": "2020-05-28T18:08:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]\u00a0for consideration, let's say we just ship the following as a default setting:\n{code:java}\n-Djava.io.tmpdir=/opt/puppetlabs/server/apps/puppetserver/tmp {code}\nIs there *any* reason\u00a0_not_ to do something like this?\n\n\u00a0\n\nThis is already a standard answer, what we tell everyone who hits this problem to do.", "created": "2020-05-29T11:17:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "We've been setting {{Djava.io.tmpdir}} for quite a few PE releases now. I can't recall a single complaint about it.", "created": "2020-05-29T11:40:00.000000"}, {"author": "557058:1d3598d5-3371-4d6f-afd5-4c700c3fd158", "body": "Right, we just need to set the\u00a0 JAVA_ARGS_CLI \u00a0now with the same temp dir. \u00a0", "created": "2020-05-29T12:25:00.000000"}, {"author": "61af86343618cd006f430854", "body": "assigning to Nick as he's working on a PR to fix", "created": "2021-12-22T11:34:00.000000"}, {"author": "61af86343618cd006f430854", "body": "dupe of PE-29098\n\n\u00a0", "created": "2021-12-22T11:35:00.000000"}], "components": [], "created": "2016-08-11T15:02:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@15ea83b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtzj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_958260862_*|*_4_*:*_1_*:*_45006848_*|*_6_*:*_2_*:*_16723976_*|*_10006_*:*_1_*:*_667570254_*|*_10005_*:*_3_*:*_167561223140"}], "description": "h1. The Problem\n\nChanging the permissions on /tmp to 776 causes puppet runs to fail when an error like:\n\n{code}\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a '=>' expression, Could not autoload puppet/type/package: Could not autoload puppet/provider/package/rpm: Permission denied - /tmp/puppet20160811-14297-15xwicr.lock at /opt/puppetlabs/puppet/modules/puppet_enterprise/manifests/profile/master.pp:149:5 on node master201630-centos\n{code}\n\nThis assumes you're already configured puppetserver to use a different Djava.io.tmpdir than /tmp.  \n\nh1.  The Solution\n\nThe error seems to stem from Jruby itself \n\nhttps://github.com/jruby/jruby/blob/1.7.25/lib/ruby/shared/tmpdir.rb#L34\nhttps://github.com/ruby/ruby/blob/trunk/lib/tmpdir.rb#L30\n\nSo, I'm not sure the solution.  \n\nh1.  Frequency ?\n\nI assume not many people are mucking with the permissions on /tmp so this seems like a low priority.  \n\nh1.  Further Reproduction\n\n/etc/sysconfig/pe-puppetserver is catted to show the djava.io.tmpdir is already changed and puppetserver was restarted.  If you don't change that you'll get a different error before this error.  \n\n{code}\n[root@master201621-centos ~]# cat /etc/sysconfig/pe-puppetserver\n###########################################\n# Init settings for pe-puppetserver\n###########################################\n\n# Location of your Java binary (version 7 or higher)\nJAVA_BIN=\"/opt/puppetlabs/server/bin/java\"\n\n# Modify this if you'd like to change the memory allocation, enable JMX, etc\nJAVA_ARGS=\"-Xms128m -Xmx192m -XX:MaxPermSize=96m -XX:PermSize=64m -XX:+UseG1GC -Djava.io.tmpdir=/opt/puppetlabs/server/data/puppetserver\"\n\n# These normally shouldn't need to be edited if using OS packages\nUSER=pe-puppet\nGROUP=pe-puppet\nINSTALL_DIR=\"/opt/puppetlabs/server/apps/puppetserver\"\nCONFIG=\"/etc/puppetlabs/puppetserver/conf.d\"\n\n# Bootstrap path\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/bootstrap.cfg\"\n\nSERVICE_STOP_RETRIES=60\n\n# START_TIMEOUT can be set here to alter the default startup timeout in\n# seconds.  This is used in System-V style init scripts only, and will have no\n# effect in systemd.\n# START_TIMEOUT=300\nSTART_TIMEOUT=120\n[root@master201621-centos ~]# chmod 1777 /tmp; service pe-puppetserver restart; puppet agent -t\nStopping pe-puppetserver:                                  [  OK  ]\nStarting pe-puppetserver:                                  [  OK  ]\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for master201621-centos\nInfo: Applying configuration version '1470956643'\nNotice: Applied catalog in 9.36 seconds\n[root@master201621-centos ~]# chmod 0777 /tmp; service pe-puppetserver restart; puppet agent -t\nStopping pe-puppetserver:                                  [  OK  ]\nStarting pe-puppetserver:                                  [  OK  ]\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for master201621-centos\nInfo: Applying configuration version '1470957498'\nNotice: Applied catalog in 9.21 seconds\n[root@master201621-centos ~]# chmod 0776 /tmp; service pe-puppetserver restart; puppet agent -t\nStopping pe-puppetserver:                                  [  OK  ]\nStarting pe-puppetserver:                                  [  OK  ]\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a '=>' expression, Could not autoload puppet/type/package: Could not autoload puppet/provider/package/rpm: Permission denied - /tmp/puppet20160811-8994-133wrkk.lock at /opt/puppetlabs/puppet/modules/puppet_enterprise/manifests/profile/master.pp:139:5 on node master201621-centos\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n[root@master201621-centos ~]# chmod 1776 /tmp; service pe-puppetserver restart; puppet agent -t\nStopping pe-puppetserver:                                  [  OK  ]\nStarting pe-puppetserver:                                  [  OK  ]\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a '=>' expression, Could not autoload puppet/type/package: Could not autoload puppet/provider/package/rpm: Permission denied - /tmp/puppet20160811-9298-1arv2tu.lock at /opt/puppetlabs/puppet/modules/puppet_enterprise/manifests/profile/master.pp:139:5 on node master201621-centos\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n[root@master201621-centos ~]# chmod 0777 /tmp; service pe-puppetserver restart; puppet agent -t\nStopping pe-puppetserver:                                  [  OK  ]\nStarting pe-puppetserver:                                  [  OK  ]\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for master201621-centos\nInfo: Applying configuration version '1470957873'\nNotice: Applied catalog in 8.50 seconds\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14796", "fixedVersions": [], "id": "14796", "issueType": "Bug", "key": "SERVER-1477", "labels": ["low-hanging-fruit", "tcse", "usability", "workaround"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Duplicate", "resolutionDate": "2021-12-22T11:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Requires Execute Privileges on /tmp in order to work even if /tmp is mounted noexec", "timeSpent": "PT0S", "updated": "2021-12-22T11:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [2593ae|https://github.com/puppetlabs/puppetserver/commit/2593aecf2d91f4a4572ce5a12fba58069255dac8].\n\nTests in full master pipeline have continued passing since this was merged in.\n\nWith 2.7.2.master.SNAPSHOT.2017.01.04T1105 installed on a CentOS 7 VM, I performed the following test to confirm that the JRuby logger was being used:\n\n1) Set {{jruby-puppet.compile-mode}} to {{jit}} in the /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf file.\n\n2) In the /etc/sysconfig/puppetserver file, added \"-Djruby.jit.debug=true\" to the JAVA_ARGS.\n\n3) Restarted puppetserver.\n\nDuring the startup sequence, lines like the following were logged to the /var/log/puppetlabs/puppetserver.log file:\n\n{noformat}\n2017-01-04 15:39:17,191 INFO  [Ruby-0-JIT-1] [j.ClassCache] JITed code for key 2e8cc41a070f7ebfb04d8c1ec6807513ae5a2d13131127043 not found, recaching\n{noformat}\n\nPreviously, these lines would have been written only to the system journal.\n\nMarking this issue as 'resolved'.", "created": "2017-01-04T16:44:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Changes for this were never applied to pe-puppetserver. I think some work might be needed for this in PE.", "created": "2017-09-28T17:09:00.000000"}], "components": [], "created": "2016-08-11T09:56:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17600c52"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymh73:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "By default JRuby logs errors to stderr, which Puppet Server writes to either the /var/log/puppetlabs/puppetserver/puppetserver-daemon.log, syslog, or journalctl (depending upon the OS). JRuby also does not, by default, log debug messages without some custom configuration of the JRuby logger.\n\nIn order to take advantage of the existing logging infrastructure in Puppet Server, JRuby now uses a custom slf4j logger that bridges logging from JRuby to logback. As a result, Puppet Server now logs messages from JRuby into the /var/log/puppetlabs/puppetserver/puppetserver.log file. Only \"info\" or \"error\" messages from JRuby are logged by default. To view debug-level JRuby messages, set the \"level\" attribute for the \"jruby\" element in the /etc/puppetlabs/puppetserver/logback.xml file to \"debug\"."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_1396509330_*|*_1_*:*_2_*:*_984633644_*|*_10007_*:*_2_*:*_254503922_*|*_3_*:*_1_*:*_347121463_*|*_5_*:*_1_*:*_15104085031_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3531433273_*|*_10005_*:*_1_*:*_6128268800"}], "description": "Much of JRuby's internal logging seems to be done through its [LoggerFactory class|https://github.com/jruby/jruby/blob/1.7.25/core/src/main/java/org/jruby/util/log/LoggerFactory.java#L33-L36].  By default, it uses a logger which outputs messages to stderr.  Debug level messages aren't written to stderr at all without some code changes - see https://github.com/jruby/jruby/blob/1.7.25/core/src/main/java/org/jruby/util/log/StandardErrorLogger.java#L37.\n\nSince it appears to be possible to configure a custom logger via [a JRuby option|https://github.com/jruby/jruby/blob/1.7.25/core/src/main/java/org/jruby/util/cli/Options.java#L162], it might be good to look into having Puppet Server register a custom logger with JRuby which routes logged messages back through the logback infrastructure that Puppet Server uses for its core logging.  I don't know if JRuby provides a safe way to configure options programmatically for {{ScriptingContainer}} instances.  So we may have to have an application opt into this by setting the name of the logback adapter class on the Java command line, via a \"-Djruby.logger.class=<theclass>\" system property.\n\nAssuming we do this, we should look into adding it to the jruby-utils library so that other consuming applications besides Puppet Server could benefit from the work.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16175", "fixedVersions": ["SERVER 5.0.0"], "id": "16175", "issueType": "Improvement", "key": "SERVER-1475", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Logback adapter for JRuby Logger", "timeSpent": "PT0S", "updated": "2017-10-03T14:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-08-09T19:23:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d9dd780"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyms1z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_12471_*|*_10007_*:*_1_*:*_689845482_*|*_3_*:*_1_*:*_524140401_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4465665826"}], "description": "Most of the docs in GPLT outside of the jenkins-integration directory are way out of date; e.g., the config files doc talks about old jenkins configs that are definitely no longer relevant, and the docs for the node/scenario configs have drifted quite a bit.\n\ne.g. I believe that for the current direction the tool is heading, the 'environment' and 'modules' fields in the node configs are obsolete.\n\nThe main README could use a better description of what the project is about, the proxy-recorder README is out of date, etc., there are still docs about manually adding feeders, etc.\n\nBasically we just need to take a pass through the whole repo and delete/update all the docs files.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16997", "fixedVersions": ["None"], "id": "16997", "issueType": "Task", "key": "SERVER-1474", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-10-14T13:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "update docs in GPLT", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Docs merged to gatling-puppet-load-test#master at [49878b0|https://github.com/puppetlabs/gatling-puppet-load-test/commit/49878b0b897a77b103431a78596a648c82c6194a].\n\nI don't think there's anything worth having the QA team look over here so moving to Done.", "created": "2016-08-11T10:56:00.000000"}], "components": [], "created": "2016-08-09T07:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f17197c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymzrr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Docs merged to gatling-puppet-load-test#master at 49878b0."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19480_*|*_10007_*:*_1_*:*_183220434_*|*_3_*:*_1_*:*_838941_*|*_5_*:*_1_*:*_4059163059_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_976347"}], "description": "The docs in the GPLT repo are currently missing information about how to set up a feeder for node names in the \"README-GENERATING-AGENT-SIMULATIONS\" page.  Also, there are some outdated docs about using CSV feeders in \"README-MODIFY-GATLING-SCENARIO-...\", and a script for generating such a CSV file that I think is no longer relevanat.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16172", "fixedVersions": ["None"], "id": "16172", "issueType": "Bug", "key": "SERVER-1473", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-08-11T10:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "fix docs about feeder in GPLT", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Prior to the recent work I did for SERVER-1452 and SERVER-1471, I was seeing the pe33-vs-couch scenario fail catalog compilations with an HTTP 400 error both for PE 3.3 and for 2016.2.0 when the proper hiera.yaml file was not in place.  With the work in place for both now, all of the Gatling requests - including catalog requests - now succeed for both PE 3.3 and 2016.2.0.\n\nThe current sims only do 3 catalog requests currently - so probably not too telling for comparison yet - but the mean catalog request time for the perf_control \"medium\" role catalogs for PE 3.3 took about 13 seconds vs. just under 5.5 seconds for PE 2016.2.0.  In any event, seems like a reasonable amount of activity is taking place for the catalog compilations.\n\nNot sure if we were hoping to go further with automating the validation somehow?  Like, for example, it might be nice to request at least one catalog and validate that something appropriate, like a specific class related to the intended classification, appears in the response.  Might be cool if we could just build this into the Gatling scenarios somehow.", "created": "2016-08-18T21:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Discussed this with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] in person", "created": "2016-08-19T11:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I validated this by hand on the latest branches... looks good to me.\n\nOne thing that is unfortunate is that for tests that are on PE versions recent enough to use the NC for classification, we are currently doing {{[~, [\"fact\", \"clientcert\"], \"blah\"]}} to create the node group.  This means that you won't get the catalog you want unless you actually send up a facts payload with a clientcert fact that matches.  That works fine for gatling, but it makes it really hard to do `curl` commands to see the catalogs.\n\nI've been dealing with this for now by spinning up a temporary node to use as an agent, setting its certname in puppet.conf to something that matches the regex, and then running the agent and looking at its catalog.\n\nWould be really nice if we could figure out a way to classify it such that it was just using the URL path as the thing to match", "created": "2016-08-19T15:53:00.000000"}], "components": [], "created": "2016-08-08T18:15:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e21da2f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz88nj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_41031_*|*_3_*:*_1_*:*_15767632_*|*_5_*:*_1_*:*_3350269570_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_926079781"}], "description": "In the early runs of the pe33-vs-couch scenario, for PE3.3 the catalog compile time looks way low, and it's getting a 200 even though the hiera.yaml file isn't in place and the catalog *should* be erroring out if the hiera data doesn't match up.  This probably means that the classification isn't working properly; validate it and fix it if it is broken.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15912", "fixedVersions": ["None"], "id": "15912", "issueType": "Task", "key": "SERVER-1472", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-19T15:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "validate catalogs/classification in PE33vCouch scenario", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-08T18:12:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b807585"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr73:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_252656_*|*_10007_*:*_1_*:*_68116018_*|*_3_*:*_1_*:*_7374037_*|*_5_*:*_1_*:*_3367451411_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_849193036"}], "description": "In the current GPLT setup, the gatling scenario config file is defined via a parameter on the Jenkins job.  However, in multi-scenario jobs (e.g. when you are comparing two versions of PE), you'll usually need a different gatling sim for each scenario.  These should be configured in the job definition rather than in the job parameters.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15650", "fixedVersions": ["None"], "id": "15650", "issueType": "Task", "key": "SERVER-1471", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-19T11:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "move scenario config out of job parameters", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-05T11:30:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c15e0c9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymzpz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This is kind of a new feature, kind of a bug fix.  It changes how we organize our bootstrap.cfg to prevent some terrible UX that was happening to OSS users on upgrades.  The PR associated with this ticket will have some initial docs that we can pull the release notes from."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_426837936_*|*_10007_*:*_1_*:*_9979158_*|*_3_*:*_1_*:*_78920483_*|*_5_*:*_1_*:*_4036256253_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_4881_*|*_10006_*:*_1_*:*_23512040"}], "description": "We need to add some docs outlining the following:\n\n1. Expected user upgrade experience related to bootstrap.cfg changes; if you have changed your CA config vs if you haven't, etc.\n2. Mention the name of the new jruby-utils service so that if users run into the upgrade issue described in #1, they will know the name of the new service that is causing the issue.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17331", "fixedVersions": ["SERVER 2.5.0"], "id": "17331", "issueType": "Task", "key": "SERVER-1470", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-08-11T17:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "release notes for bootstrap changes and new jruby service", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to gatling-puppet-load-test#master at [5eeece7|https://github.com/puppetlabs/gatling-puppet-load-test/commit/5eeece700c66bc8803e5fa8f22c6972e030837aa].", "created": "2016-08-16T16:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Doesn't seem to be anything else here for CI or QA to cover for now so marking this resolved.", "created": "2016-08-16T16:57:00.000000"}], "components": [], "created": "2016-08-05T08:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45266e7e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymzsn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21832041_*|*_10007_*:*_1_*:*_595448142_*|*_3_*:*_1_*:*_38646317_*|*_5_*:*_1_*:*_3605495767_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_325136636"}], "description": "Haus wrote a script that does something like 75% of the work of converting a raw gatling recording file to the format that it needs to be in to work with g-p-l-t.  It shouldn't be too much work to finish it, so that there are no longer any manual steps required to convert a recording and make it usable.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15080", "fixedVersions": ["None"], "id": "15080", "issueType": "Improvement", "key": "SERVER-1469", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-08-16T16:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Finish conversion script for gatling recordings", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-05T07:45:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@83d41fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz88nb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_24323581_*|*_10007_*:*_1_*:*_428636836_*|*_5_*:*_1_*:*_3003271951_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1132974451"}], "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17330", "fixedVersions": ["None"], "id": "17330", "issueType": "Task", "key": "SERVER-1468", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-23T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Get puppet-gatling-jenkins-plugin working again", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "As part of this work it became necessary to bump the version of ruby we use on the gatling driver to ruby 2.2.5. We bumped to a new version of beaker to bring in some helper functions, and that version has a requirement on >= 2.2.5. Just recording that here for posterity ", "created": "2016-11-01T10:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to gatling-puppet-load-test#master at [128731|https://github.com/puppetlabs/gatling-puppet-load-test/commit/128731dacd7efd3092d22df572b378343726fdf8].", "created": "2016-11-02T10:19:00.000000"}], "components": [], "created": "2016-08-04T16:35:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@dd5b1fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymlpb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_35473_*|*_10007_*:*_1_*:*_65825915_*|*_3_*:*_1_*:*_1037461045_*|*_10009_*:*_1_*:*_179651835_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6650116399"}], "description": "This ticket covers adding the ability to modify hocon settings before a perf test. This will take the form of adding a section to the job config for a gatling pipeline. ", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15079", "fixedVersions": ["None"], "id": "15079", "issueType": "Task", "key": "SERVER-1467", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-11-04T12:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add support for modifying hocon settings before perf test", "timeSpent": "PT0S", "updated": "2016-11-04T12:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-04T16:33:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a654b97"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr7b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_6249_*|*_1_*:*_1_*:*_132801_*|*_3_*:*_1_*:*_80891101_*|*_10009_*:*_1_*:*_4547960_*|*_5_*:*_1_*:*_2931939668_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1626405701"}], "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16996", "fixedVersions": ["None"], "id": "16996", "issueType": "Task", "key": "SERVER-1466", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-24T12:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add support for modifying JVM args before perf test", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This is all set and ready to go, we just don't want to kick off the initial runs of it until we've finished the memory testing for JRuby 1.7.26 since we don't have a lot of mileage on the automation infrastructure yet and we haven't really tested running multiple jobs in parallel.", "created": "2016-09-01T15:11:00.000000"}], "components": [], "created": "2016-08-04T16:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6681d404"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8qt3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_262345_*|*_3_*:*_1_*:*_1582232_*|*_5_*:*_1_*:*_925830933_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_350161805_*|*_10006_*:*_1_*:*_3366205134"}], "description": "This will involve setting up a job that installs PE 3.3, taking a recording, setting up a job that installs couch/davis, taking a recording, and then setting up a multi-pass job that compares the two.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16458", "fixedVersions": ["None"], "id": "16458", "issueType": "Task", "key": "SERVER-1465", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-09-16T17:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Set up perf test with PE 3.3 vs. recent PE (Couch?  Davis?)", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to gatling-puppet-load-test#master at [f923753|https://github.com/puppetlabs/gatling-puppet-load-test/commit/f92375377f10e96f1c493596e8e32253029721ef].", "created": "2016-08-16T15:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Going to mark this resolved since I don't think there's anything else we need to wait on from CI at this point -- or would need QA to review.", "created": "2016-08-16T15:01:00.000000"}], "components": [], "created": "2016-08-04T16:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@184fd768"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymzsf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_280221_*|*_10007_*:*_1_*:*_680007841_*|*_3_*:*_1_*:*_341287110_*|*_5_*:*_1_*:*_3612401357_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10257214"}], "description": "Currently hard-coded to install an Ankeny build.  Should be configurable in pipeline scripts.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15910", "fixedVersions": ["None"], "id": "15910", "issueType": "Bug", "key": "SERVER-1464", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-08-16T15:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add support for installing multiple versions of PE for gatling sims", "timeSpent": "PT0S", "updated": "2017-01-25T13:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to gatling-puppet-load-test#master at [8aa2093|https://github.com/puppetlabs/gatling-puppet-load-test/commit/8aa2093c69c3528f7dac032b26ada8ba49c07a45].", "created": "2016-08-15T15:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Doesn't seem to be anything else here for CI or QA to cover, so moving this to \"resolved\".", "created": "2016-08-15T15:39:00.000000"}], "components": [], "created": "2016-08-04T16:20:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a1f437f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymzs7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_317530_*|*_10007_*:*_1_*:*_937973028_*|*_3_*:*_1_*:*_4816379_*|*_5_*:*_1_*:*_3696573508_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4818861"}], "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15310", "fixedVersions": ["None"], "id": "15310", "issueType": "Bug", "key": "SERVER-1463", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-08-15T15:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix auth on server so that Gatling doesn't get 403s.", "timeSpent": "PT0S", "updated": "2017-01-25T13:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I don't know about the IllegalArgumentException/ShutdownPoisonPill part of this but the error message might be coming from this: https://github.com/puppetlabs/ring-middleware/blob/master/src/puppetlabs/ring_middleware/core.clj#L205 which should probably be updated to call something like printStackTrace.", "created": "2016-08-03T10:45:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "I managed to reproduce this in 2016.2.1 by changing the permissions of {{/etc/puppetlabs/code-staging}} to remove read and write permissions (so 110 pe-puppet:pe-puppet), then running {{puppet code deploy test --wait}}:\n\n{code}\n2016-09-20 14:48:48,334 INFO  [clojure-agent-send-off-pool-469] [p.e.s.f.file-sync-storage-core] Committing staging directory /etc/puppetlabs/c>\n2016-09-20 14:48:48,374 ERROR [clojure-agent-send-off-pool-469] [p.e.s.f.file-sync-storage-core] Fatal error during file commit operation, requ>\njava.io.IOException: Permission denied\n  at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[na:1.8.0_101]\n  at java.io.File.createNewFile(File.java:1012) ~[na:1.8.0_101]\n  at org.eclipse.jgit.internal.storage.file.LockFile.lock(LockFile.java:171) ~[puppet-server-release.jar:na]\n  at org.eclipse.jgit.storage.file.FileBasedConfig.save(FileBasedConfig.java:204) ~[puppet-server-release.jar:na]\n ...\n2016-09-20 14:48:51,686 INFO  [clojure-agent-send-pool-1] [p.s.j.jruby-puppet-agents] Flush request received", "created": "2016-09-20T16:25:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "From the logging output, it almost looks to me like that error is coming from code manager... or at least from the thread code manager is using to kick off deploys:\n\n{{2016-09-20 14:52:14,008 ERROR [qtp1220017784-74] [p.r.core] Internal Server Error: java.lang.IllegalArgumentException: No matching clause: puppetlabs.services.jruby.jruby_puppet_schemas.ShutdownPoisonPill@2e71f2c4}} - that {{qtp1220017784-74}} seems like it's a code manager thread?\n\nI think [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] is right that that error message is coming from ring-middleware and that {{p.r.core}} is {{puppetlabs.ringmiddleware.core}}.\n\n", "created": "2016-09-22T12:01:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] I think to start working on this, I would recommend 1) trying to reproduce it in a newer (e.g. 2016.4.x) build, 2) trying to reproduce it without have code manager/file sync running, and 3) updating ring middleware to use something like {{printStackTrace}} to try to get more information about where that error is coming from - i.e. ring middleware is handling the error and printing the log message, but what's actually causing the error?", "created": "2016-09-22T12:04:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] Yeah it looks like it's probably ring-middlware. Thanks for the info!", "created": "2016-09-22T13:51:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "I managed to get it printing a stack trace and tracked down the problem. It's coming from the pe-puppet-server-extensions jruby metrics code, [here|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/a2e4af601c97e1dcc1c2d6025c84b6d2921e7c3b/src/clj/puppetlabs/enterprise/services/jruby/pe_jruby_metrics_core.clj#L149]\n\n{{track-borrow-instance!}} is checking if there's a retry-poison-pill, but not checking for a shutdown-poison-pill. Seems like we just need to add a check for a shutdown pill, maybe just do nothing or log something. I added a clause for a shutdown pill and tested it on 2016.4.0, and it successfully got rid of the uncaught exception log message\n\nNow, for the code-manager repro case at least, the log looks like so:\n\n{noformat}\n2016-09-26 12:43:12,876 INFO  [clojure-agent-send-pool-1] [p.s.j.i.jruby-internal] Cleaned up old JRubyInstance with id 1.\n2016-09-26 12:43:12,882 INFO  [async-dispatch-3] [p.c.services] Shutting down code-manager...\n2016-09-26 12:43:12,882 INFO  [async-dispatch-3] [p.c.shell-workers] Attempting to shut down deploy-pool workers...\n2016-09-26 12:46:28,843 ERROR [qtp1922449062-89] [p.e.s.j.pe-jruby-metrics-core] Found shutdown poison pill, not tracking anything\n2016-09-26 12:46:28,852 ERROR [qtp1922449062-89] [p.p.jruby-request] Error 503 on SERVER at /puppet/v3/environments: Attempted to borrow a JRubyInstance from the pool during a shutdown. Please try again.\n2016-09-26 12:53:22,886 ERROR [async-dispatch-3] [p.c.shell-workers] deploy-pool workers did not shut down cleanly in 610 seconds, forcing shutdown...\n...\n{noformat}\n\n", "created": "2016-09-26T14:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks [~accountid:623c0b72bef8a60068c796ce].\n\nIn the example above, it seems like we don't need to sleep for 5 minutes before giving up on the borrow?  So maybe the handling for the shutdown pill should be slightly different than for the retry one?\n\nAlso, was the previous issue preventing the server from shutting down when it should have shut down?  Or just logging a confusing message?\n\nIt seems like from what you've said above, that there was a legitimate issue going on that should have shut down the server.  Since Jeremy said he'd seen this error in the logs of our SysOps puppetserver deployment, I'm wondering what kind of error they might have been hitting before the message was logged?", "created": "2016-09-26T14:15:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "I agree about sleeping too long, but I think that's unrelated to the poison pill error message that caused this ticket, since this error originates from the metrics code and doesn't have anything to do with how the server should shut down. That should probably be another ticket if that's a bug\n\nIt was logging the confusing error about the poison pill and I think that exception was interfering with other things, since once I resolved that exception, it started showing the message\n\n{{Error 503 on SERVER at /puppet/v3/environments: Attempted to borrow a JRubyInstance from the pool during a shutdown. Please try again}}\n\nwhich seems like the appropriate error to return to the user when the server is shutting down.\n\nYeah, the repro we used here messed up the permissions to the code-staging directory, which seems like a legit reason to shutdown (or maybe it's not? That seems like a separate issue though).\n\nI think main issue here was that the {{track-borrow-instance!}} code didn't handle shutdowns at all, so it seems like any problem that causes a ShutdownPoisonPill to be passed to that metrics fn would trigger that exception", "created": "2016-09-26T14:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sorry, I hadn't captured anything else from the SysOps logs at the time I first saw this error message.  I had the impression, though, that this might be coming up also in cases where the service was manually being shutdown - e.g., via running {{service puppetserver restart}} - and that just having some request contention for the pool during the process might lead to that message being displayed.  It might be that a borrow attempted from the pool during the shutdown could cause this - like if we had multiple long-running web requests at shutdown and a borrow was attempted from the JRuby pool while Jetty is in the middle of its graceful shutdown logic.", "created": "2016-09-26T14:34:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "It might be worth noting that when I was seeing this with changing {{code-staging}} permissions, it was happening during a {{puppet code deploy <environment> --wait}}, and that was eventually timing out. If you look at the full gist I posted (https://gist.github.com/rlinehan/6dc530be34728308de1af8d3285ed4e6), there did seem to be some stuff going on with Jetty, which was trying to handle the code manager request.", "created": "2016-09-26T14:38:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] your theories are consistent with what I saw. Any shutdown event during/before a borrow, that causes the ShutdownPoisonPill to be returned would be barfed up by the metrics code, even though the main code seems to handle it just fine.\n\nI'll go re-check and see if anything is happening with jetty now", "created": "2016-09-27T15:16:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Here's the complete log after taking care of the poison pill exception https://gist.github.com/jpinsonault/6f302acd3fd7d211f8edb6d2a15ca25a\n\nThose errors from jetty aren't showing up anymore", "created": "2016-09-27T16:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "From what I can tell, the fix [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] described is definitely necessary, and the only remaining debate is whether it's also sufficient.  Correct?\n\nSo we should go ahead and get that PR in, and, in parallel, discuss whether we think there's anything else that we need to look into?  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] from your last comments on here, it's not entirely clear to me whether either of you is expecting that there might be additional work required beyond what [~accountid:623c0b72bef8a60068c796ce] described for fixing the schema?", "created": "2016-10-04T10:30:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Put up a PR to handle the missing shutdown-poison-pill case in pe-p-s-e, https://github.com/puppetlabs/pe-puppet-server-extensions/pull/754", "created": "2016-10-04T10:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] - Sorry, I wasn't suggesting there was any additional work that may need to be done.  I just wanted to throw out my thoughts about what might have been happening with this in the SysOps environment.  If the PR that you put up addresses that, great.  If not and it comes up again later somehow, we can file a new ticket then and work it through.", "created": "2016-10-04T10:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to pe-puppet-server-extensions#2016.4.x at [3d53cc3|https://github.com/puppetlabs/pe-puppet-server-extensions/commit/3d53cc3fb056e5c9fd70af629fd4b3746f22f331].", "created": "2016-10-05T11:40:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "CI is green, closing", "created": "2016-10-07T10:46:00.000000"}], "components": [], "created": "2016-08-02T10:31:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70860191"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyms1r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_169523081_*|*_1_*:*_1_*:*_86892091_*|*_10007_*:*_1_*:*_84449113_*|*_3_*:*_1_*:*_1030936413_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4331531625"}], "description": "In looking over the puppetserver logs from one of the our Ops compile masters, I came across an odd-looking error message:\n\n{noformat}\n2016-08-01 15:40:26,895 ERROR [qtp1910878581-2289] [p.r.core] Internal Server Error: java.lang.IllegalArgumentException: No matching clause: puppetlabs.services.jruby.jruby_puppet_schemas.ShutdownPoisonPill@757acd2d\n{noformat}\n\nI don't know how to reproduce this issue myself - just saw it in the puppetserver log file.  It seems really odd - like there might be a missing catch block in the JRuby borrow functions somewhere.  Additionally, seeing the pill ostensibly get into the pool seems a little disturbing.\n\nThis message appeared twice in the logs - each time with a few minutes after the master had been restarted.  A number of other requests had been serviced before the error message was written out, though, so this might not be related to server startup.\n\nNo stack trace followed the error, unfortunately, and no other references to the same Jetty worker thread-id appeared in the log in either case.\n\nLooking at the access log from around the same time, it appeared that a few /puppet/v3/file_metadatas/modules/* requests were in flight, some of which failed with 404 errors.  It is hard to say exactly which one of these requests might correspond to the error.\n\nThis doesn't seem to be a fatal problem since the master keeps on running fine, servicing further requests without any errors.  Given that, this may not be too critical of an issue to look into further.  Also, this occurred on a 2016.2.0 PE master and all of the recent changes around the jruby-utils library refactor may further change the ability to reproduce this problem.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15908", "fixedVersions": [], "id": "15908", "issueType": "Bug", "key": "SERVER-1461", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-10-07T10:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Weird IllegalArgumentException / ShutdownPoisonPill message in Puppet Server log", "timeSpent": "PT0S", "updated": "2016-10-10T10:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9], this ticket captures some general musings [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and I have had on how we might improve upon the performance of the environment_classes endpoint when multiple requests are in flight at the same time.  I'd be curious to get your thoughts on this one.  Do you know of work already specifically described for coordinating requests per-environment at the Node Management layer?  What would you think of the idea of changing Puppet Server to either queue or drop additional requests made for environment info if one were already in process?", "created": "2016-11-11T18:26:00.000000"}], "components": [], "created": "2016-08-02T09:23:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b7a38"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtvr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_90776532_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_48410099693"}], "description": "Currently, when calls are made to the {{environment_classes}} endpoint, there is no logic in place to gate the possibility that more than one call to parse class info for the same environment might be running.  This can unnecessarily eat up resources on Puppet Server - e.g., making less JRuby instances available to field agent requests.  This ticket would cover work in Puppet Server to disallow more than JRuby instance being held at one time to parse class info for the same environment.\n\nThis issue comes up specifically with respect to the classification UI and Node Manager in Puppet Enterprise.  When multiple users at the classification UI hit the class info \"refresh\" button in the browser around the same time, parallel sets of requests for class info for the same environments can be forwarded on to Puppet Server.  To alleviate this particular issue, it may be better to gate active requests per environment at the Node Manager layer.  With that approach, requests made beyond the first one could actually finish faster in conjunction with the use of the class info Etag.\n\nFor example, consider the current scenario.\n\n1) First request made to classifier for ,\"production\" environment info.  Request forwarded on to Puppet Server with Etag \"a\".\n2) Second request made to classifier for \"production\" environment info.  Request forwarded on to Puppet Server with Etag \"a\".\n3) Puppet Server does a full class info parse for the production environment for the first request, returning Etag \"b\".\n4) Puppet Server does a full class info parse for the production environment for the second request, returning Etag \"b\".\n\nIf the requests were just serialized on the Puppet Server backend (with no corresponding coordination work added in the Node Manager), the same basic flow above would occur.  Puppet Server might be able to hold off both class info parse operations from occurring at the same time, but the class info would still be fully parsed twice because the Etag submitted for the second request, \"a\", would not match the latest one computed for the most recent class info on the server, \"b\".  If coordination were done in Node Manager, however, the following could be possible:\n\n1) First request made to classifier for \"production\" environment info.  Request forwarded on to Puppet Server with Etag \"a\".\n2) Second request made to classifier for \"production\" environment Info.  Request 'paused' since first request already in progress.\n3) Puppet Server does a full class info parse for the production environment for the first request, returning Etag \"b\".\n4) Second request forwarded on to Puppet Server with Etag \"b\", the value returned from Puppet Server for the first request.  Puppet Server returns an HTTP 304 and the Etag \"b\", without doing another full parse of the class info data.\n\nThis suggests that it may be worthwhile to carve off a separate Node Manager-specific ticket to coordinate environment class info requests.  For this ticket, it would seem that the primary benefit of disallowing more than one concurrent request for class info for the same environment would be to reduce resource contention on Puppet Server.  Presuming we proceed with this ticket, it probably would be best to complete the Node Manager coordination work first in order to avoid degrading performance for concurrent requests.\n\nA couple of options to consider for this ticket for how Puppet Server could handle the receipt of concurrent requests for class info for the same environment:\n\n1) Queue up / pause requests beyond the first one.  Process them on a First In / First Out basis, only allowing the actively processing one to reserve a JRuby instance.\n\n2) Return a \"busy\" signal to any requests which come in beyond the first one, e.g., 503 \"Service Unavailable\".  This would force the caller to handle retrying the call at a later time.  This approach might be better in terms of minimizing Puppet Server resources although it does force callers to have more sophisticated error handling and would probably be considered in \"breaking change\".\n\n\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14794", "fixedVersions": [], "id": "14794", "issueType": "Improvement", "key": "SERVER-1460", "labels": ["needs_repro", "performance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2018-02-14T16:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prevent calls to environment_classes from running on multiple threads", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] I added a description - let me know if that makes sense.  I can add more detail wherever it is needed, let me know.", "created": "2016-08-17T10:52:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Thanks. Would https://docs.puppet.com/puppetserver/latest/gems.html work as a place for this? It already covers using {{puppetserver gem}} to install gems, so I imagine this ticket would add another section to that doc covering the dual-installation scenario, the {{puppetserver_gem}} module, and the example.", "created": "2016-08-17T12:32:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "CC [~accountid:557058:8f1e0495-1d4a-4123-bbad-727b7f49f370]", "created": "2016-08-17T12:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] that seems like a reasonable starting point", "created": "2016-08-17T13:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] any chance we can go ahead and get this cleared out before things get too hectic in the new team structure?  Or are you waiting for input from [~accountid:557058:8f1e0495-1d4a-4123-bbad-727b7f49f370]?\n\nUnderstand if you don't have bandwidth, we can always throw it back into the pond.", "created": "2016-09-16T17:29:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I can do this, but any advice on an example gem other than {{hiera_eyaml}}, or even where to start looking for an example gem or criteria for a good example gem, would go a long way toward making this fit in my schedule.", "created": "2016-09-16T19:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] that's fair, I'll look into that on Monday.", "created": "2016-09-16T19:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "James suggested {{xml-simple}} as a good candidate for this.  I just tried installing it locally and it worked fine - no dependencies or anything.  Seems like it would work pretty well as an example.", "created": "2016-09-19T10:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Just FYI, this came up in IRC again today.", "created": "2016-10-06T12:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I think we might have docs on this now. If not, please re-open this ticket.", "created": "2018-02-13T17:08:00.000000"}], "components": [], "created": "2016-08-01T15:08:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@566716a8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymvg7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1364564331_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_47116671517"}], "description": "In certain cases, gems may need to be installed into both the Puppet agent's ruby gem path as well as the Puppet Server's ruby gem path in order to provide end-to-end functionality.  An example of this is {{hiera-eyaml}}, which is needed by the server for decryption, and needed by the agent's ruby so that the associated CLI tools can be used for encryption.\n\nFor users who are managing their gems via Puppet resources, this means that they need to have 2 resources, one for each gem path.  We have puppet modules that support both of these, but it was suggested that we might need a clear place in the documentation that discusses the fact that in some cases you may need both, and an example of what a manifest would look like that managed both.\n\nFor the puppet agent's ruby, there is a built-in provider for the {{package}} type, called {{puppet_gem}}: https://docs.puppet.com/puppet/4.0/reference/type.html#package-provider-puppet_gem\n\nFor the puppet server ruby, there is a puppetlabs forge module that adds another {{package}} provider called {{puppetserver_gem}}:\n\nhttps://github.com/puppetlabs/puppetlabs-puppetserver_gem\n\nSo maybe the thing to do in docs would be to pick some example gem, have a sentence or two explaining why it might be necessary for both the server and agent, some info about the {{puppetserver_gem}} forge module, and then an example manifest showing 2 package resources that install a common gem in both places.\n\nI'd love it if we could come up with a different example gem besides {{hiera_eyaml}}, because that one has all sorts of other quirks and challenges, but I don't have another immediate example in mind.\n\nAlso not quite sure where this would belong in the docs.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15078", "fixedVersions": [], "id": "15078", "issueType": "Task", "key": "SERVER-1458", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2018-02-13T17:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "docs with example of how to use puppet to install gem in both Puppet Server and agent", "timeSpent": "PT0S", "updated": "2018-02-13T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "A [similar occurrence|https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_smoke-stable/149/LAYOUT=ubuntu1204-64ma-32a,LDAP_TYPE=default,PLATFORM=default,label=beaker/testReport/junit/(root)/acceptance_suites_tests_00_smoke/puppetdb_integration_rb/] to this popped up when running the \"acceptance/suites/tests/00_smoke.puppetdb_integration.rb\" Puppet Server smoke test on Ubuntu 12.04 in CI.  In this case, a Puppet agent run, in the process of triggering a restart of the puppetserver service, appeared to fail when the agent tried to send a report after notifying the service to restart but while the server was still restarting:\n\nFrom the agent log:\n\n{noformat}\nlowz8b0b85fgcom.delivery.puppetlabs.net (ubuntu1204-64-1) 01:09:23$ puppet agent --test --server \n...\nNotice: /Stage[main]/Puppetdb::Master::Config/Service[puppetserver]: Triggered 'refresh' from 2 events\nNotice: Applied catalog in 77.88 seconds\nError: Could not send report: Failed to open TCP connection to lowz8b0b85fgcom.delivery.puppetlabs.net:8140 (Connection refused - connect(2) for \"lowz8b0b85fgcom.delivery.puppetlabs.net\" port 8140)\n  lowz8b0b85fgcom.delivery.puppetlabs.net (ubuntu1204-64-1) executed in 94.36 seconds\n  Exited: 2\nlowz8b0b85fgcom.delivery.puppetlabs.net (ubuntu1204-64-1) 01:10:57$ puppet master --configprint config\n  /etc/puppetlabs/puppet/puppet.conf \n{noformat}\n\nIn the puppetserver log from the same timeframe, I could see that the service was restarted, as expected, and did eventually come to ready.  From the timestamps around the agent run, though, I could see that the report would have been sent while the server was still restarting.  The service stop was registered in the Puppet Server log around 01:10:51 and the server came to ready at 01:12:21 - so about 1 1/2 minutes to restart.\n\nI think it's best again to treat this as a transient condition for now and revisit when the work for SERVER-1237 has been completed.", "created": "2016-08-05T09:37:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We don't see this anymore after the HUP work.", "created": "2018-02-16T11:51:00.000000"}], "components": [], "created": "2016-08-01T09:14:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c32ef26"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7uxr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_177394801_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_48565179885"}], "description": "During the full Puppet acceptance test suite run off of a Puppet Server stable pipeline job, the \"exported_resources.rb\" test [failed|https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/133/LAYOUT=ubuntu1404-64ma-32a,LDAP_TYPE=default,PLATFORM=default,label=beaker/testReport/junit/(root)/ruby_puppet_acceptance_tests_language/exported_resources_rb/] when the puppetserver service was restarted, the service command prematurely ended (even though the service had not actually restarted yet), and a subsequent attempt to do an agent run against the master failed because the puppetserver service was not responding yet.\n\nHere is a snippet of the beaker acceptance test output during the run...\n\n{noformat}\no5ekajmcj2yotyj.delivery.puppetlabs.net (ubuntu1404-64-1) 02:52:11$ service puppetserver restart\n         ...done.\no5ekajmcj2yotyj.delivery.puppetlabs.net (ubuntu1404-64-1) executed in 6.23 seconds\n* run the master agent to export the resources\n        \no5ekajmcj2yotyj.delivery.puppetlabs.net (ubuntu1404-64-1) 02:52:17$ puppet agent -t --server o5ekajmcj2yotyj.delivery.puppetlabs.net --environment exported_resources_5b7rp6nz\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: Failed to open TCP connection to o5ekajmcj2yotyj.delivery.puppetlabs.net:8140 (Connection refused - connect(2) for \"o5ekajmcj2yotyj.delivery.puppetlabs.net\" port 8140)\n{noformat}\n\n... and a corresponding snippet from the \"puppetserver.log\" file during the run...\n\n{noformat}\n2016-08-01 02:52:11,496 INFO  [Thread-1] [p.t.internal] Finished shutdown sequence\n2016-08-01 02:53:08,622 INFO  [main] [o.e.j.u.log] Logging initialized @15691ms\n{noformat}\n\nNote that the service started shutting down at 02:52:11 but did not start coming back up until about a minute later - 02:53:08.  The service restart command, however, stopped waiting for the server to come back up only after about 6 seconds.\n\nThe rest of the test run was successful and the puppetserver service did eventually come to ready after the restart.\n\nThis is the only time I recall seeing this error recently in a CI job.  Hopefully, the work being done for the HUP / EZBake will help eliminate these sorts of race conditions in the service restart framework in the future.  Probably not work digging into this one any further unless this issue comes up again after that work is done.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15906", "fixedVersions": [], "id": "15906", "issueType": "Bug", "key": "SERVER-1457", "labels": ["transient"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-16T11:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver service restart ends before service restarted", "timeSpent": "PT0S", "updated": "2018-02-16T11:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Ping [~accountid:557058:8f1e0495-1d4a-4123-bbad-727b7f49f370] on this issue since I heard you might be handling the docs work for the upcoming Puppet Server 2.5.0 release in [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]'s absence.\n\nI added a rough \"known issue\" description for this ticket.  Note that this issue affects already shipping Puppet Server versions, 1.1.3 and 2.4.0 and earlier, not just the forthcoming Puppet Server 2.5.0 release.  I think it would be good to include something about the nss upgrade workaround in the Puppet Server docs somewhere - maybe in the release notes? - but am not sure what the best place is.  Definitely open to whatever you think is best for that.  Thanks much!", "created": "2016-07-30T17:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "1.x, stable, and master branches have all been bumped to new Ruby Puppet submodule and package versions which include the pre-suite workaround of upgrading nss before installing Puppet Server. All 3 pipelines are now passing:\n\nMaster:\u2028\nhttps://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/150/\n\nStable:\n\u2028https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/132/\n\n1.x:\n\u2028https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-1.x/112/\n\nClosing this ticket out.", "created": "2016-07-30T17:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "So far, in testing, we've seen this issue on RHEL 6, RHEL 7, CentOS 6, and CentOS 7.  Bugs have been filed to the OS maintainers here:\n\nFor RHEL:\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id=1361818\n\nFor CentOS:\n\nhttps://bugs.centos.org/view.php?id=11245", "created": "2016-08-01T10:44:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Is this an issue that our customers are likely to experience?  Should QA consider this a high risk ticket?", "created": "2016-08-01T11:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I think it's possible users may run into this.  [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] mentioned that a PuppetDB user had run into this already.  That said, not sure I'd deem this as a \"high risk\" ticket, per se.  We are covering automated testing of latest JDK + latest nss as a result of the work we did in the pre-suite for this ticket so any failures from that combination should be obvious, I'd hope.", "created": "2016-08-01T14:56:00.000000"}], "components": [], "created": "2016-07-28T16:52:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24af5dc4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7u67:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When JDK version 1.7.0_111 or newer is installed on a host that has a sufficiently older version of the \"nss\" package - something older than 3.21.0 on EL 6 or 7, for example - the puppetserver service may fail to start with an error in log files - e.g., /var/log/messages on EL 7 - which contains the following:\n\n---\nCaused by: java.lang.InternalError\n  at sun.security.ec.SunEC.initialize(Native Method)\n  ...\n  at sun.security.jca.Providers.getFullProviderList(Providers.java:173)\n  at java.security.Security.getProviders(Security.java:456)\n  at digest$algorithms.invoke(digest.clj:76)\n  ...\n---\n\nTo avoid this problem, try upgrading to the latest version of the \"nss\" package before starting/restarting the puppetserver service.  For example, on EL systems, you could run:\n\n---\nyum upgrade nss\n---\n\nThis problem has not been seen on EL 6 or 7 systems with \"nss\" version 3.21.0 and \"java-1.7.0-openjdk\" version 1.7.0_111."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CI test failure"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_56804_*|*_10007_*:*_1_*:*_145925914_*|*_3_*:*_1_*:*_28002309_*|*_5_*:*_1_*:*_5073427454_*|*_6_*:*_1_*:*_0"}], "description": "We discovered that on CI pulling in the latest version of the JDK for 1.7, 1.7.0_111, for the Puppet Server 1.x pipeline run that the puppetserver service would fail to be started correctly.\n\nFrom {{/var/log/messages}} file:\n\n{noformat}\nJul 28 09:36:34 d8s93urohet13xn java: Exception in thread \"main\" java.lang.InternalError, compiling:(digest.clj:85:30)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Compiler.load(Compiler.java:7142)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.loadResourceScript(RT.java:370)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.loadResourceScript(RT.java:361)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.load(RT.java:440)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.load(RT.java:411)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load$fn__5066.invoke(core.clj:5641)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load.doInvoke(core.clj:5640)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.invoke(RestFn.java:408)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_one.invoke(core.clj:5446)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_lib.doInvoke(core.clj:5485)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.applyTo(RestFn.java:142)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$apply.invoke(core.clj:626)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_libs.doInvoke(core.clj:5524)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.applyTo(RestFn.java:137)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$apply.invoke(core.clj:626)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$require.doInvoke(core.clj:5607)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.invoke(RestFn.java:551)\nJul 28 09:36:34 d8s93urohet13xn java: at puppetlabs.kitchensink.core$eval419$loading__4958__auto____420.invoke(core.clj:7)\nJul 28 09:36:34 d8s93urohet13xn java: at puppetlabs.kitchensink.core$eval419.invoke(core.clj:7)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Compiler.eval(Compiler.java:6703)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Compiler.eval(Compiler.java:6692)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Compiler.load(Compiler.java:7130)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.loadResourceScript(RT.java:370)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.loadResourceScript(RT.java:361)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.load(RT.java:440)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.load(RT.java:411)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load$fn__5066.invoke(core.clj:5641)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load.doInvoke(core.clj:5640)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.invoke(RestFn.java:408)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_one.invoke(core.clj:5446)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_lib.doInvoke(core.clj:5485)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.applyTo(RestFn.java:142)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$apply.invoke(core.clj:626)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_libs.doInvoke(core.clj:5524)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.applyTo(RestFn.java:137)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$apply.invoke(core.clj:626)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$require.doInvoke(core.clj:5607)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.invoke(RestFn.java:703)\nJul 28 09:36:34 d8s93urohet13xn java: at puppetlabs.trapperkeeper.core$eval3$loading__4958__auto____4.invoke(core.clj:1)\nJul 28 09:36:34 d8s93urohet13xn java: at puppetlabs.trapperkeeper.core$eval3.invoke(core.clj:1)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Compiler.eval(Compiler.java:6703)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Compiler.eval(Compiler.java:6692)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Compiler.load(Compiler.java:7130)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.loadResourceScript(RT.java:370)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.loadResourceScript(RT.java:361)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.load(RT.java:440)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RT.load(RT.java:411)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load$fn__5066.invoke(core.clj:5641)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load.doInvoke(core.clj:5640)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.invoke(RestFn.java:408)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_one.invoke(core.clj:5446)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_lib.doInvoke(core.clj:5485)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.applyTo(RestFn.java:142)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$apply.invoke(core.clj:626)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$load_libs.doInvoke(core.clj:5524)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.applyTo(RestFn.java:137)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$apply.invoke(core.clj:626)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$require.doInvoke(core.clj:5607)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.invoke(RestFn.java:408)\nJul 28 09:36:34 d8s93urohet13xn java: at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:6)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.invoke(RestFn.java:457)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Var.invoke(Var.java:394)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.AFn.applyToHelper(AFn.java:165)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Var.applyTo(Var.java:700)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.core$apply.invoke(core.clj:624)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.main$main_opt.invoke(main.clj:315)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.main$main.doInvoke(main.clj:420)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.RestFn.invoke(RestFn.java:512)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Var.invoke(Var.java:409)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.AFn.applyToHelper(AFn.java:178)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Var.applyTo(Var.java:700)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.main.main(main.java:37)\nJul 28 09:36:34 d8s93urohet13xn java: Caused by: java.lang.InternalError\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.ec.SunEC.initialize(Native Method)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.ec.SunEC.access$000(SunEC.java:49)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.ec.SunEC$1.run(SunEC.java:61)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.ec.SunEC$1.run(SunEC.java:58)\nJul 28 09:36:34 d8s93urohet13xn java: at java.security.AccessController.doPrivileged(Native Method)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.ec.SunEC.<clinit>(SunEC.java:58)\nJul 28 09:36:34 d8s93urohet13xn java: at java.security.AccessController.doPrivileged(Native Method)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.ec.SunEC.<clinit>(SunEC.java:58)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\nJul 28 09:36:34 d8s93urohet13xn java: at java.lang.reflect.Constructor.newInstance(Constructor.java:526)\nJul 28 09:36:34 d8s93urohet13xn java: at java.lang.Class.newInstance(Class.java:383)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:221)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:206)\nJul 28 09:36:34 d8s93urohet13xn java: at java.security.AccessController.doPrivileged(Native Method)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.jca.ProviderList.loadAll(ProviderList.java:282)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.jca.ProviderList.removeInvalid(ProviderList.java:299)\nJul 28 09:36:34 d8s93urohet13xn java: at sun.security.jca.Providers.getFullProviderList(Providers.java:173)\nJul 28 09:36:34 d8s93urohet13xn java: at java.security.Security.getProviders(Security.java:456)\nJul 28 09:36:34 d8s93urohet13xn java: at digest$algorithms.invoke(digest.clj:76)\nJul 28 09:36:34 d8s93urohet13xn java: at digest$create_fns.invoke(digest.clj:85)\nJul 28 09:36:34 d8s93urohet13xn java: at digest$eval708.invoke(digest.clj:88)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Compiler.eval(Compiler.java:6703)\nJul 28 09:36:34 d8s93urohet13xn java: at clojure.lang.Compiler.load(Compiler.java:7130)\nJul 28 09:36:34 d8s93urohet13xn java: ... 74 more\nJul 28 09:36:34 d8s93urohet13xn systemd: puppetserver.service: main process exited, code=exited, status=1/FAILURE\nJul 28 09:36:35 d8s93urohet13xn systemd: puppetserver.service: control process exited, code=exited status=1\nJul 28 09:36:35 d8s93urohet13xn systemd: Failed to start puppetserver Service.\nJul 28 09:36:35 d8s93urohet13xn systemd: Unit puppetserver.service entered failed state.\nJul 28 09:36:35 d8s93urohet13xn systemd: puppetserver.service failed.\n{noformat}\n\nWe found that our SUTs were running with an older install of the nss-related packages.  The following bugs refer to updating nss as helping overcome a startup failure like these.\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id=1332456\nhttps://bugzilla.redhat.com/show_bug.cgi?id=1332867\n\nIn manual testing of a CentOS 6 VM showing this failure, we found that running {{yum update nss}} to update the OS to the latest nss version, 3.21.0, allowed the puppetserver service to subsequently be able to start properly.\n\nWe discussed the possibility of addressing java's implicit dependency on nss in packaging.  Given the frequency of jdk and nss package rolls and difficulty that would come from coordinating the exact versions of those that would work properly together across different OSes, we're choosing instead to just have our CI pipeline update to the latest nss before installing Puppet Server.\n\nWe should also add a note somewhere to our documentation about this, though, so that end users are aware of this problem and account for it in their own deployments of Puppet Server.  /CC [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] for thoughts on the best place to document this.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16995", "fixedVersions": ["SERVER 2.5.0"], "id": "16995", "issueType": "CI Blocker", "key": "SERVER-1456", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-07-30T17:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade nss to workaround JDK InternalError at startup", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Should we fix this in the upcoming (next week, I think) 2.5.0 release?", "created": "2016-07-28T01:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Sounds like we'll just need to do an ezbake version bump when there's a new ezbake release?  That should be doable for 2.5.0.\n\n/cc [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c]", "created": "2016-07-28T09:31:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "This was found and fixed in ezbake, and now that we know about it it's easy to bring into our release.", "created": "2016-07-29T13:57:00.000000"}], "components": [], "created": "2016-07-27T19:06:00.000000", "creator": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f82b4b1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7u6f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "On a clean install on CentOS 6, if a user ran `service puppetserver status`, they would get an error message `puppetserver dead but pid file exists`.  This was due to the fact that the packages were creating an empty pid file; after the fix, on a clean install, `service puppetserver status` should just return the usual/expected `not running` message."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_328565480_*|*_1_*:*_1_*:*_158325139_*|*_3_*:*_1_*:*_226131_*|*_5_*:*_1_*:*_865863761_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_3082406"}], "description": "Reported by [~accountid:557058:bf57daa5-f466-42d6-af40-4e2c537eac6d] in EZ-84:\n\nAfter installing puppetserver or puppetdb on CentOS 6 a pid file is automatically created although the service is not being started.\n\nExample:\n{code}\n[root@centos6 vagrant]# yum -y install puppetserver\n(...)                                                                                                                                                            \n\nComplete!\n[root@centos6 vagrant]# service puppetserver status\npuppetserver dead but pid file exists\n[root@centos6 vagrant]# cat /var/run/puppetlabs/puppetserver/puppetserver \n\n[root@centos6 vagrant]#\n{code}\n\nThe pid file should not get automatically created, only the folder containing it.\nSame is happening with puppetdb.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14792", "fixedVersions": ["SERVER 2.5.0"], "id": "14792", "issueType": "Bug", "key": "SERVER-1455", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "resolution": "Fixed", "resolutionDate": "2016-08-02T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver / puppetdb ship with empty pid file", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Moving this to \"Blocked\" / \"Needs Information\" until the json_pure / Gemfile changes have landed in core Ruby Puppet.", "created": "2016-07-27T09:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "1.x, stable, and master branches have all been bumped to new Ruby Puppet submodule and package versions which include the json_pure Gemfile pins.  All 3 pipelines are now passing:\n\nMaster:\nhttps://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/150/\n\nStable:\nhttps://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/132/\n\n1.x:\nhttps://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-1.x/112/\n\nClosing this ticket out.", "created": "2016-07-30T16:58:00.000000"}], "components": [], "created": "2016-07-27T09:23:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a6913b8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn1cf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CI failure, introduced by upstream external project change (json_pure gem)"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_49843_*|*_10007_*:*_1_*:*_258456425_*|*_5_*:*_1_*:*_1104555354_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_28018773"}], "description": "The recently released json_pure gem, 2.0.2, intentionally dropped support for running under pre-Ruby 2.0.  We run with Ruby 1.9.3 for the JRuby Unit Tests in the Puppet Server pipeline and pick up json_pure from the core Puppet repo's Gemfile, which does not pin the version of json_pure that it pulls in (on Hiera's behalf).  This is causing the Puppet Server JRuby Unit Tests to fail for all three branches - 1.x, stable, and master.\n\nA snippet from https://jenkins.puppetlabs.com/job/platform_puppetserver_unit-jruby_stable/JDK=openjdk7,label=unit/135/console:\n\n{code}\n00:47:06       PATH='/var/lib/jenkins/workspace/platform_puppetserver_unit-jruby_stable/JDK/openjdk7/label/unit/vendor/test_gems/bin:/usr/lib/jvm/java-7-openjdk-amd64/bin:/usr/local/rvm/gems/ruby-1.9.3-p484/bin:/usr/local/rvm/gems/ruby-1.9.3-p484@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p484/bin:/usr/local/rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/puppetlabs/bin'       BUNDLE_GEMFILE='/var/lib/jenkins/workspace/platform_puppetserver_unit-jruby_stable/JDK/openjdk7/label/unit/ruby/puppet/Gemfile'       GEM_HOME='/var/lib/jenkins/workspace/platform_puppetserver_unit-jruby_stable/JDK/openjdk7/label/unit/vendor/test_gems' GEM_PATH='/var/lib/jenkins/workspace/platform_puppetserver_unit-jruby_stable/JDK/openjdk7/label/unit/vendor/test_gems'       lein run -m org.jruby.Main         -S bundle install --path='/var/lib/jenkins/workspace/platform_puppetserver_unit-jruby_stable/JDK/openjdk7/label/unit/vendor/test_bundle'\n00:47:06 /usr/local/rvm/gems/ruby-1.9.3-p484/gems/rake-11.2.2/lib/rake/file_utils.rb:56 warning: system does not support options in JRuby yet: {}\n00:47:49 Fetching gem metadata from https://rubygems.org/\n00:47:54 Fetching version metadata from https://rubygems.org/\n00:47:57 Resolving dependencies................................................\n00:47:58 Installing rake 10.1.1\n00:47:59 Installing addressable 2.4.0\n00:48:00 Installing builder 3.2.2\n00:48:01 Installing safe_yaml 1.0.4\n00:48:01 Installing diff-lcs 1.2.5\n00:48:02 Installing facter 2.4.6\n00:48:05 Installing hashdiff 0.3.0\n00:48:05 Installing json_pure 2.0.2\n00:48:05 \n00:48:05 Gem::InstallError: json_pure requires Ruby version ~> 2.0.\n00:48:06 Installing json-schema 2.1.1\n00:48:06 Installing metaclass 0.0.4\n00:48:07 Installing msgpack 1.0.0\n00:48:07 Installing multi_json 1.7.7\n00:48:08 Installing net-ssh 2.9.4\n00:48:09 Installing puppet-lint 2.0.0\n00:48:10 Installing rspec-support 3.5.0\n00:48:10 Installing rack 1.6.4\n00:48:11 Installing thread_safe 0.3.5\n00:48:12 Installing vcr 2.9.3\n00:48:13 Using bundler 1.12.5\n00:48:13 Installing puppet-syntax 2.1.0\n00:48:14 Installing crack 0.4.3\n00:48:14 An error occurred while installing json_pure (2.0.2), and Bundler cannot\n00:48:14 continue.\n00:48:14 Make sure that `gem install json_pure -v '2.0.2'` succeeds before bundling.\n00:48:15 rake aborted!\n00:48:15 Command failed with status (5): [      PATH='/var/lib/jenkins/workspace/pla...]\n{code}\n\nThe json_pure change was confirmed by the maintainer as intentional, see: https://github.com/flori/json/issues/298.  For this reason, core Puppet's Gemfile will likely be changed to pin the version of json_pure being pulled in when run under Ruby 1.9.3.  See PUP-6551 and the associated [PR|https://github.com/puppetlabs/puppet/pull/5151].  We should probably just wait until that PR lands and update Puppet submodule pins from Puppet Server to reference the new Gemfile versions.\n\nWe should probably just wait until core Ruby Puppet's Gemfile has been updated to", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14789", "fixedVersions": ["SERVER 2.5.0"], "id": "14789", "issueType": "CI Blocker", "key": "SERVER-1454", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-07-30T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby Unit Test jobs failing b/c new json_pure version dropped pre-Ruby 2.0 support", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hey [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a], I'm very interested in this as I have a similar need in the perf testing stuff I'm working on.  Do you have any idea where you might be targeting this work or when you think we might pick it up?", "created": "2016-07-26T16:46:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I've put it into Jade's next sprint. It's pretty low-hanging fruit.", "created": "2016-07-26T17:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] so you would just be adding it as a ruby helper function in puppet server's beaker helper code area?", "created": "2016-07-26T18:06:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] That's the current plan. If you have another idea, I'm totally open to suggestion. We need the function, but I have no commitment to where we put it.", "created": "2016-07-27T09:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] ok.  I've been toying with the idea of just adding a CLI tool to ruby-hocon itself that could be used for this, but I'm not quite sure when I might get to that, so your plan seems fine for now.", "created": "2016-07-27T09:59:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This needs to be rebased.  Then we can merge.", "created": "2016-08-01T12:56:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "@cprice Code is merged.", "created": "2016-08-02T16:32:00.000000"}], "components": [], "created": "2016-07-26T15:05:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/A for testing tickets"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a2d0722"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7s0f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_17144243_*|*_1_*:*_1_*:*_68442702_*|*_10007_*:*_1_*:*_345355765_*|*_3_*:*_1_*:*_128351939_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_50672872"}], "description": "Several QA tests need to be able to modify HOCON config files. The existing beaker method, {{modify_tk_config}}, is buggy and corrupts config files when called repeatedly on the same file. Write a helper method for the server test library that adds a single arbitrary HOCON setting to a single arbitrary file, using the Puppet {{hocon_setting}} resource. \n\nhttps://forge.puppet.com/puppetlabs/hocon", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14785", "fixedVersions": ["None"], "id": "14785", "issueType": "Bug", "key": "SERVER-1453", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Fixed", "resolutionDate": "2016-08-02T16:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create helper function to replace modify_tk_config", "timeSpent": "PT0S", "updated": "2016-08-02T16:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to gatling-puppet-load-test#master at [c0444c5|https://github.com/puppetlabs/gatling-puppet-load-test/commit/c0444c5392bbf8217da114aba3e044a2beaed3f3].", "created": "2016-08-18T13:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I don't think there's anything else CI or QA is held up on for this, so marking resolved.", "created": "2016-08-18T13:50:00.000000"}], "components": [], "created": "2016-07-25T16:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11d83f8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz88n3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_149293970_*|*_10007_*:*_1_*:*_5324261_*|*_3_*:*_1_*:*_87832906_*|*_5_*:*_1_*:*_3444096147_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1820988589"}], "description": "In SERVER-1448 we will be defining some hierarchies and hiera data in our perf control repo.  In order for this data to be used properly, we will need to deploy a hiera.yaml file to the confdir.  We can keep a sample copy of that file at a well-known location inside of the control repo, but we need a way to reference it / deploy it.\n\nIn SERVER-1450 we will be adding support for automatically installing code onto an SUT master using r10k or similar, but we don't have a solution for setting up the hiera.yaml file itself, and the perf test automation doesn't currently assume that there will be an agent on the SUT master that can/should be used for that sort of thing.\n\nTherefore, probably in the same jenkins setup step where we run the r10k deploy, we'll want to add some extra logic that can deploy the hiera.yaml somehow.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15905", "fixedVersions": ["None"], "id": "15905", "issueType": "Task", "key": "SERVER-1452", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-18T13:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add support for getting main hiera config file from control repo", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user This exception appears to indicate a missing line in `bootstrap.cfg`.  Can you tell us what the contents of that file look like?\n\n[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] do you know what kinds of class parameters or hiera settings might cause the server to try to interact with the File Sync service without it being included in the `bootstrap.cfg`?\n\nFormer user these docs might be relevant: https://docs.puppet.com/pe/latest/cmgmt_filesync.html#enabling-or-disabling-file-sync\n\n/cc [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]\n\n", "created": "2016-07-25T12:16:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:d187e3aa-0b88-4b2f-a865-035a631293fa", "body": "Hey Chris, Kevin,\n\nI can get the file tomorrow, I'm working GMT hours so we're finished for today. I can go on IRC tomorrow if that will help, I'll idle #trapperkeeper in freenode tomorrow. \n\nI don't have access to the machine right now, but I assume the file you are talking about is: /etc/puppetserver/bootstrap.cfg ? I will stick the contents of the file on gist or similar tomorrow. \n\nI'll also be attempting Red Hat Satellite 6.1/6.2 integration with 2016.2 which I don't think has been done yet once this issue has been resolved. \n\nCheers,\n\n- Calvin ", "created": "2016-07-25T15:18:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:d187e3aa-0b88-4b2f-a865-035a631293fa", "body": "Here is the gist: https://gist.github.com/CalvinHartwell/778f5fb387ba58cc9da6cfefdbbc7721", "created": "2016-07-26T04:22:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "My suspicion upon initially seeing that error is that:\n\n* code manager is enabled\n* file sync is not\n\n... and that is confirmed by the contents of bootstrap.cfg.  I'm not exactly sure how this situation occurred, or what specific hiera / class parameter values could have led to it, but to fix the problem ...\n\nbq. In the PE console, you can enable or disable file sync in the puppet_enterprise::profile::master class\u2019s file_sync_enabled parameter. \n\nSetting {{file_sync_enabled}} to {{true}} should fix this problem.", "created": "2016-07-26T04:32:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:d187e3aa-0b88-4b2f-a865-035a631293fa", "body": "Hey Kevin,\n\nThanks for the quick update. I went into the console and managed to find that the parameter had been already set to false, so I changed it to true, commit my changes and attempted to start the pe-puppetserver process again but I am getting the same error. \n\n[http://people.redhat.com/chartwel/images/pe2016error.png]\n\nMaybe I should attempt to rebuild the pe server at this point? Is there a documented removal process? \n\n", "created": "2016-07-26T05:00:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "After setting the parameter, did you do an agent run on the host where puppet server is installed?  That's what actually enforces the new value for {{file_sync_enabled}}, which should result in bootstrap.cfg being updated to include the file sync services, and then triggering a restart of pe-puppetserver.\n\nI do not know if there is a documented removal process.  Do you (or the customer) have a support contract?  If you are able to open a ticket with our Support team, they're much more knowledgable about those sort of things.", "created": "2016-07-26T05:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "He won't be able to do an agent run if the server won't start.\n\nPerhaps you should try deleting or commenting out the 'code-manager-v1' line from the bootstrap.cfg file for long enough to get the server up and running, and then try to sort out how the class parameters got misconfigured.", "created": "2016-07-26T07:05:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:d187e3aa-0b88-4b2f-a865-035a631293fa", "body": "Hey Kevin,\n\nI've made sure the firewalld and selinux are disabled. I then tried puppet agent -tdv to no avail, it runs fine until it gets a connection refused on 8140 (I assume this is the master port), nothing changes in the bootstrap conf. Netstat shows that nothing is listening on that port even though I can get onto the pe console. \n\nI'm very tempted to reinstall the whole product now, I'm wondering if something bad happened during the install two weeks ago because of SELinux or something else. We've had a succsessful deployment on RHEL6 already. \n\nThe customer does have a support contract but I don't know about the specifics, I deployed the product to test the integration of PE with other products. ", "created": "2016-07-26T07:14:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:d187e3aa-0b88-4b2f-a865-035a631293fa", "body": "Hey Chris, Kevin,\n\nThanks a lot for quick replies - you guys have been very helpful. It appears that I have solved the issue using Chris Price's suggestion. Here are the precise steps I used to fix the problem, note the selinux/firewall step is most likely optional:  \n\n1) Disable SELinux and Firewalld (or iptables) just incase. Make sure you have enabled the file sync inside the PE console already (the steps are already described above) and committed the changes to the master server. \n\n2) Comment out the code-manager-v1 line in /etc/puppetlabs/puppetserver/bootstrap.cfg, I.E: \n\n{code:java}\npuppetlabs.trapperkeeper.services.authorization.authorization-service/authorization-service\npuppetlabs.services.ca.certificate-authority-service/certificate-authority-service\n#puppetlabs.code-manager.services/code-manager-v1\npuppetlabs.trapperkeeper.services.webserver.jetty9-service/jetty9-service\npuppetlabs.services.jruby.jruby-puppet-service/jruby-puppet-pooled-service\npuppetlabs.services.legacy-routes.legacy-routes-service/legacy-routes-service\npuppetlabs.enterprise.services.puppet-profiler.puppet-profiler-service/metrics-puppet-profiler-service\npuppetlabs.enterprise.services.jruby.pe-jruby-metrics-service/pe-jruby-metrics-service\npuppetlabs.enterprise.services.master.master-service/pe-master-service\npuppetlabs.enterprise.services.metrics.pe-metrics-service/pe-metrics-service\npuppetlabs.services.puppet-admin.puppet-admin-service/puppet-admin-service\npuppetlabs.services.config.puppet-server-config-service/puppet-server-config-service\npuppetlabs.rbac-client.services.activity/remote-activity-reporter\npuppetlabs.rbac-client.services.rbac/remote-rbac-consumer-service\npuppetlabs.services.request-handler.request-handler-service/request-handler-service\npuppetlabs.trapperkeeper.services.scheduler.scheduler-service/scheduler-service\npuppetlabs.trapperkeeper.services.status.status-service/status-service\npuppetlabs.services.versioned-code-service.versioned-code-service/versioned-code-service\npuppetlabs.trapperkeeper.services.webrouting.webrouting-service/webrouting-service\n{code}\n\n3) Now start (or restart) the puppetserver service: systemctl start pe-puppetserver, you can tail -f /var/log/messages to check if the exception is still thrown (it shouldn't be). \n\n4) Once the service is backup, run the puppet agent on the pe server (you might need to delete the pid from previous run if it failed or broke for some reason), puppet agent -dv. \n\n5) Finally once that is finished, the puppet server will be ready. You can re-enable firewalld/selinux, retest the restart of the pe-puppetserver service and puppet-agent apply. You should find that it is now working correctly. The bootstrap config file for the puppetserver should have some extra lines in it. I\n\nTo conclude: it is not quite obvious as to what caused the filesync service not to be enabled in the first place on RHEL7.2 but we have a confirmed work-around. Thanks a lot! :-) \n\nYou may want to close the issue, but I think the root cause should be identified, have you guys tried to deploy on 7.2? \n\n", "created": "2016-07-26T08:01:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Former user - glad that fixed it for you!  FWIW, we do a lot of internal testing on RHEL 7 and CentOS 7, so I have to suspect that it was some sort of hiccup or weird configuration during the installation process that resulted in file sync getting disabled.  Thanks for the bug report - I'll keep this in mind in case we see additional occurrences of this error.\n", "created": "2016-07-26T10:44:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:d187e3aa-0b88-4b2f-a865-035a631293fa", "body": "No problem Kevin - if you need any information on package/kernel versions or other specifics let me know. \n\nTime to see how the Satellite 6 <-> PE 2016.2 integration goes now! \n\nCheers,\n\n- Calvin ", "created": "2016-07-26T11:41:00.000000"}], "components": ["Puppet Server"], "created": "2016-07-25T09:21:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:d187e3aa-0b88-4b2f-a865-035a631293fa", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Issue must be resolved so Puppet Server works as expected. "}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22262988"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7q5z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_86785059_*|*_5_*:*_1_*:*_5447048231_*|*_6_*:*_1_*:*_0"}], "description": "Deployed PE on behalf of one of your new large enterprise customers, but hit an issue with Trapper Keeper. \n\nSteps to reproduce: \n\n1) Build and Patch RHEL7.2 server\n2) Set correct partition sizes and other pre-reqs for PE 2016.2\n3) Run installer as per instructions (choose all-in-one install)\n4) Everything looks good, but puppet server won't start with an exception in trapperkeeper. \n\nException:\n{code}\nJul 15 17:30:04 ericcartman java: Exception in thread \"main\" java.lang.RuntimeException: Service ':FileSyncStorageService' not found\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invoke(internal.clj:98)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.internal$instantiate$fn__13793.invoke(internal.clj:139)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.internal$instantiate.invoke(internal.clj:136)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.internal$eval14328$build_app_STAR___14337$fn__14338.invoke(internal.clj:542)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.internal$eval14328$build_app_STAR___14337.invoke(internal.clj:510)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.internal$eval14430$boot_services_STAR___14439$fn__14440$fn__14441.invoke(internal.clj:610)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.internal$eval14430$boot_services_STAR___14439$fn__14440.invoke(internal.clj:609)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.internal$eval14430$boot_services_STAR___14439.invoke(internal.clj:604)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.core$eval15252$boot_with_cli_data__15259$fn__15260.invoke(core.clj:130)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.core$eval15252$boot_with_cli_data__15259.invoke(core.clj:95)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.core$eval15281$run__15286$fn__15287.invoke(core.clj:151)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.core$eval15281$run__15286.invoke(core.clj:145)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:173)\nJul 15 17:30:04 ericcartman java: at clojure.lang.RestFn.invoke(RestFn.java:457)\nJul 15 17:30:04 ericcartman java: at clojure.lang.Var.invoke(Var.java:394)\nJul 15 17:30:04 ericcartman java: at clojure.lang.AFn.applyToHelper(AFn.java:165)\nJul 15 17:30:04 ericcartman java: at clojure.lang.Var.applyTo(Var.java:700)\nJul 15 17:30:04 ericcartman java: at clojure.core$apply.invoke(core.clj:630)\nJul 15 17:30:04 ericcartman java: at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7)\nJul 15 17:30:04 ericcartman java: at clojure.lang.RestFn.invoke(RestFn.java:457)\nJul 15 17:30:04 ericcartman java: at clojure.lang.Var.invoke(Var.java:394)\nJul 15 17:30:04 ericcartman java: at clojure.lang.AFn.applyToHelper(AFn.java:165)\nJul 15 17:30:04 ericcartman java: at clojure.lang.Var.applyTo(Var.java:700)\nJul 15 17:30:04 ericcartman java: at clojure.core$apply.invoke(core.clj:630)\nJul 15 17:30:04 ericcartman java: at clojure.main$main_opt.invoke(main.clj:316)\nJul 15 17:30:04 ericcartman java: at clojure.main$main.doInvoke(main.clj:421)\nJul 15 17:30:04 ericcartman java: at clojure.lang.RestFn.invoke(RestFn.java:512)\nJul 15 17:30:04 ericcartman java: at clojure.lang.Var.invoke(Var.java:409)\nJul 15 17:30:04 ericcartman java: at clojure.lang.AFn.applyToHelper(AFn.java:178)\nJul 15 17:30:04 ericcartman java: at clojure.lang.Var.applyTo(Var.java:700)\nJul 15 17:30:04 ericcartman java: at clojure.main.main(main.java:37)\n{code}", "environment": "Development/Test Environment. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16811", "fixedVersions": [], "id": "16811", "issueType": "Bug", "key": "SERVER-1451", "labels": ["transient"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:d187e3aa-0b88-4b2f-a865-035a631293fa", "resolution": "Fixed", "resolutionDate": "2016-07-26T09:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PE 2016.2 deployment on RHEL7.2 not working with trapper keeper exception", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to gatling-puppet-load-test#master at [033210e|https://github.com/puppetlabs/gatling-puppet-load-test/commit/033210e02ec032729883f46aafce8ecc724f81c0].", "created": "2016-08-15T14:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "No CI or additional QA to wait on for this ticket, so I'm going to mark this one \"resolved\".", "created": "2016-08-15T14:05:00.000000"}], "components": [], "created": "2016-07-22T12:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@684b3f0c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymzrz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "bandwidth, next blocker in gatling automation"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_422902726_*|*_10007_*:*_1_*:*_937508992_*|*_3_*:*_1_*:*_207261444_*|*_5_*:*_1_*:*_3702176028_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_511126675"}], "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16170", "fixedVersions": ["None"], "id": "16170", "issueType": "Task", "key": "SERVER-1450", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-08-15T14:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add support for deploying code from control repo to perf test jobs", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-08-09T10:47:00.000000", "name": "jruby17-compile-mode-off-medium-summary.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11043"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-08-09T10:47:00.000000", "name": "jruby17-compile-mode-off-medium-vs-ops-diff.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11125"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-08-09T10:47:00.000000", "name": "jruby17-compile-mode-off-summary.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10958"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I used the puppetserver-memmeasure tool to measure catalog compilation performance against \"medium\" catalogs with hieradata in use.\n\nThe following versions of code were in use for this run:\n\n* puppetserver-memmeasure tool - [1f7cdab|https://github.com/camlow325/puppetserver-memmeasure/commit/1f7cdabfd1339d68a0bd31dd975263ce383ac743]\n* puppetserver_perf_control repo - [6d26d33|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/6d26d332b5898d702bb19a734527f68d779f5d51]\n* Puppet Server - 2.4.0\n* JRuby 1.7.20.1\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944) \n\nMemory consumed for the first catalog compiled jumped from ~ 22 MB (before hieradata) to ~ 23 MB (with hieradata).  This is still not as much as we have seen with compiling catalogs for the Ops Master-of-Masters - ~ 27 MB.  I've attached json files which show more detailed differences in memory usage between the medium catalogs with hieradata and the Ops Master-of-Masters catalogs.", "created": "2016-08-09T10:58:00.000000"}], "components": [], "created": "2016-07-22T12:36:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@567a6296"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn1bz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "bandwidth, next blocker in gatling automation"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_342073647_*|*_1_*:*_1_*:*_273852966_*|*_10007_*:*_1_*:*_593494969_*|*_3_*:*_1_*:*_340265224_*|*_5_*:*_1_*:*_4231588481_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_48834"}], "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15308", "fixedVersions": ["None"], "id": "15308", "issueType": "Task", "key": "SERVER-1448", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-09T11:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add hieradata and lookups to test catalogs", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Available in 2.5.0-master-20160722_150424-g7c65a97 and later.", "created": "2016-07-22T16:42:00.000000"}], "components": ["Puppet Server"], "created": "2016-07-22T11:28:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@224d5304"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7p9z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Test bug made CI red; this fixed it"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_13317890_*|*_1_*:*_1_*:*_1539751_*|*_10007_*:*_1_*:*_3983658_*|*_5_*:*_1_*:*_5766545797_*|*_6_*:*_1_*:*_0"}], "description": "An update to the helper lib for puppetserver FOSS needs to be merged into PE 2016.3.x to fix test failures in file sync acceptance. PR in question is https://github.com/puppetlabs/puppetserver/pull/1147, commit 7c65a970.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15077", "fixedVersions": ["None"], "id": "15077", "issueType": "Bug", "key": "SERVER-1447", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Fixed", "resolutionDate": "2016-07-22T16:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Promote Puppet Server master to PE 2016.3.x", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-07-22T10:05:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52a66f6a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7p7z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_432962803_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_24024564989"}], "description": "Got a couple of (new to me) transient failures while running a [simple PR|https://github.com/puppetlabs/puppetserver/pull/1146] [through Travis|https://travis-ci.org/puppetlabs/puppetserver/builds/146664178]. The PR is orthogonal to the failures:\n{code}\nFAIL in (test-jruby-pool-not-full-during-code-id-generation) (request_handler_core_test.clj:326)\nA jruby instance is held while code id is generated\nexpected: (deref first-promise 10000 false)\n  actual: (not (deref #object[clojure.core$promise$reify__6779 0x16089296 {:status :pending, :val nil}] 10000 false))\nlein test :only puppetlabs.services.request-handler.request-handler-core-test/test-jruby-pool-not-full-during-code-id-generation\nFAIL in (test-jruby-pool-not-full-during-code-id-generation) (request_handler_core_test.clj:330)\nA jruby instance is held while code id is generated\nexpected: (zero? (jruby-protocol/free-instance-count jruby-service))\n  actual: (not (zero? 1))\n{code}\nOnly happened on 1 of the 3 builds.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17329", "fixedVersions": [], "id": "17329", "issueType": "Bug", "key": "SERVER-1446", "labels": ["transient"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Cannot Reproduce", "resolutionDate": "2017-05-01T11:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Transient test-jruby-pool-not-full-during-code-id-generation failures in Travis", "timeSpent": "PT0S", "updated": "2017-05-01T11:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user If you have Puppet Server 2.4.0 on a systemd system, the service command should look something like {{systemctl start puppetserver}}, {{systemctl status puppetserver}}, etc.  Are those the commands you've been running?  If so, can you include an example of the output from those commands?", "created": "2016-07-27T10:23:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:36c6ba62-b77d-4e13-8bb7-050d92d69449", "body": "I had this issue when I installed the package from http://yum.puppetlabs.com/puppetlabs-release-pc1-fedora-22.noarch. \n\ni tryed run \"systemctl start puppetserver\" but there wasn't a target for hat on SystemD, instead it has puppetmaster.service target (Which has the ExectStart who leads to an error).\n\nSome people in the communit adiviced me to install http://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm, with this source everthing is OK.\n\n \n", "created": "2016-07-27T18:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Interesting, thanks for the info.  [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] do you have any idea how the fedora one could be getting messed up like that?  Should I move this ticket to RE?", "created": "2016-07-28T12:01:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "We don't have any puppetserver packages available for fedora 22. Are you sure the package you are installing is from our repos? It does sound like you're getting an older package from one of the fedora system repos.", "created": "2016-07-28T12:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user it sounds like the takeaway here is just that there was some confusion about which packages are officially available for Fedora, so I'm going to close this out.  Please feel free to re-open if there are any follow-up questions.", "created": "2016-08-03T10:30:00.000000"}], "components": ["Puppet Server"], "created": "2016-07-21T19:49:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:36c6ba62-b77d-4e13-8bb7-050d92d69449", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@269ac222"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7p1r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1089699874_*|*_6_*:*_1_*:*_0"}], "description": "When installed. the file that systemd uses to start the service (/usr/lib/systemd/system/puppetmaster.service), contains a wrong path to start puppetmaster process\n\n{code:java}\nExecStart=/usr/bin/start-puppet-master master $PUPPETMASTER_EXTRA_OPTS --no-daemonize\n{code}\n\nIt works only when tryed /op/puppetlabs/puppet master start\n\n", "environment": "Fedora 22 x86_x64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16167", "fixedVersions": [], "id": "16167", "issueType": "Bug", "key": "SERVER-1445", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:36c6ba62-b77d-4e13-8bb7-050d92d69449", "resolution": "Won't Fix", "resolutionDate": "2016-08-03T10:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bad path of start script on SystemD", "timeSpent": "PT0S", "updated": "2016-08-03T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I didn't get a chance to do a full-blown, live installation of the puppetlabs-modules / Ops environment code.\n\nI did, however, experiment with just enabling file-sync on CentOS 7 VM running PE 2016.2.0 and doing a file-sync commit of all of the content in the Ops environment code tarball at https://github.com/puppetlabs/test-catalogs-large-files/tree/b159e15fbb08c1f17c941c4e51f018832d184009/ops-environment-2015.12.07.  I had also dropped the \"puppet.conf\" and \"hiera.yaml\" files from that repo in place on the master manually.  \n\nThe file sync process was successful in that code was committed and deployed with no obvious errors.  I didn't have a fully functional compile master as a result of this, though.\n\nClosing this ticket out for now since we probably won't be able to get back to this again for a while.", "created": "2016-08-08T10:48:00.000000"}], "components": [], "created": "2016-07-21T17:13:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@671f40c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1125"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn1d3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_88397_*|*_3_*:*_1_*:*_752818066_*|*_5_*:*_1_*:*_4319024165_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_779177717"}], "description": "In preparation for an upcoming Ops Embed activity, this ticket would involve experimenting with the puppetlabs-modules repo to see if we are able to successfully use the File Sync feature in PE to sync the code within it.", "epicLinkSummary": "Puppet Server Ops Embed", "estimate": "PT0S", "externalId": "16810", "fixedVersions": ["None"], "id": "16810", "issueType": "Task", "key": "SERVER-1444", "labels": [], "originalEstimate": "PT0S", "parent": "16486", "parentSummary": "Puppet Server Ops Embed", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-08-08T10:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ops Embed Prep - Attempt to File Sync puppetlabs_modules Content", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I was able to get this to work in a PE 2016.2.0 install by doing the following:\n\n1. Stored the following files onto the local file system of PE 2016.2.0 install:\n\n{code:title=/usr/code-scripts/code-id-command_script.sh}\n#!/bin/sh\necho 1\n{code}\n\n{code:title=/usr/code-scripts/code-content-command_script.sh}\n#!/bin/sh\ncat /etc/puppetlabs/code/environments/$1/$3\n{code}\n\n2.  From the PE console - Nodes => Classification => PE Master => puppet_enterprise::profile::master, added the following:\n\n* code_content_command => \"/usr/code-scripts/code-content-command_script.sh\"\n* code_id_command => \"/usr/code-scripts/code-id-command_script.sh\"\n\n3.  Did a puppet agent run to have the settings applied.\n\n4. Added a simple file resource to {{/etc/puppetlabs/code/environments/production/manifests/site.pp}} and corresponding jpg file to {{/etc/puppetlabs/code/environments/production/modules/jpgs/files/myfile.jpg}}:\n\n{code:puppet}\nfile { '/tmp/myfile.jpg':\n  ensure => file,\n  source => 'puppet:///modules/jpgs/myfile.jpg'\n}\n{code}\n\n4. Did another agent run, with --http_debug set so that the output could be inspected.\n\nObserved that the {{/tmp/myfile.jpg}} file was written after the run and was identical to the corresponding file under the production environment directory.\n\nAlso observed from the output of the agent run that a request was made to the {{/puppet/v3/static_file_content}} directory for the jpg file.\n\n5. Did one more agent run, with --http_debug set again.\n\nObserved that no requests were made during the run for the jpg file - static_file_content or file_metadata.  The only references in the output to the jpg file was in the catalog response and report request.  These all indicate that the \"static catalogs\" feature was exercised for the jpg file.\n", "created": "2016-07-30T17:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think we got what was needed for this investigation ticket, so I'm going to close it out.", "created": "2016-07-30T17:40:00.000000"}], "components": [], "created": "2016-07-21T17:09:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7cdb4de4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1125"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn1cv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_316127_*|*_3_*:*_1_*:*_98311209_*|*_5_*:*_1_*:*_5071676237_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_680861174"}], "description": "One of the things that we've talked about possibly doing as part of an Ops Embed activity is enabling the static catalogs feature and observing the effects on performance.  Where our Ops team isn't using File Sync yet, it might be a little more challenging to enable the use of static catalogs.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] suggested that, just for the purpose of being able to experiment with the feature for now, we might just be able to setup a custom {{code_id}} script which returns some fixed value - enough to cause an agent to make static_file_content requests - and a {{code_content}} script that just dumps the corresponding file on disk to standard output.  This ticket would just involve some simple exploration to see if this approach might be viable.", "epicLinkSummary": "Puppet Server Ops Embed", "estimate": "PT0S", "externalId": "15903", "fixedVersions": ["None"], "id": "15903", "issueType": "Task", "key": "SERVER-1443", "labels": [], "originalEstimate": "PT0S", "parent": "16486", "parentSummary": "Puppet Server Ops Embed", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-07-30T17:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ops Embed Prep - Non File-Sync Based Static Catalogs?", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-07-20T16:46:00.000000", "creator": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "puppet-server open source will check in on a regular interval instead of on start up"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@173641b6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7nnr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Product Analytics"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1730461426_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15902", "fixedVersions": ["SERVER 2.6.0"], "id": "15902", "issueType": "Task", "key": "SERVER-1442", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "resolution": "Fixed", "resolutionDate": "2016-08-09T17:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppet-server opensource version check to use tk-scheduler for interval checkins", "timeSpent": "PT0S", "updated": "2016-09-08T14:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:f466c103-96cc-4ea4-94e4-29a5c0779f7a", "attachments": [], "comments": [{"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:f466c103-96cc-4ea4-94e4-29a5c0779f7a", "body": "Some environment informations\n\n{code}\n\n[root@qvisbcld0005 ~]# cat /etc/centos-release\nCentOS Linux release 7.2.1511 (Core) \n[root@qvisbcld0005 ~]# \n\n[root@qvisbcld0005 ~]# ruby -v\nruby 2.0.0p598 (2014-11-13) [x86_64-linux]\n[root@qvisbcld0005 ~]# \n\n[root@qvisbcld0005 ~]# rpm -qa puppetserver\npuppetserver-1.1.3-1.el7.noarch\n[root@qvisbcld0005 ~]# \n\n{code}", "created": "2016-07-19T06:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi Former user,\n\nIs that the entire output from {{systemctl status}} / {{journalctl}}?  It looks like there is a stack trace in there, but some lines are missing that might be useful in helping to debug.\n\nYou could also check the contents of the log file in {{/var/log/puppetserver/puppetserver.log}} and see if there are any error messages that might help.\n\nTwo other things you might check:\n\n1. SERVER-160: is your tmp directory is mounted as {{noexec}}?\n2. Memory: what is the setting for max heap size (-Xmx) in {{/etc/sysconfig/puppetserver}}?  Does your machine have enough memory to accommodate the value that is specified there?", "created": "2016-07-19T07:37:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This ticket hasn't been touched in quite some time, closing.", "created": "2018-02-16T11:47:00.000000"}], "components": ["Puppet Server"], "created": "2016-07-19T06:42:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:f466c103-96cc-4ea4-94e4-29a5c0779f7a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@768abd32"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7m6v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_703967123_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_49170711991"}], "description": "Hi\n\nI am just a ew user which want to try some basic puppet functionalities\nSo I have installed on new VM (CENTOS7) the puppet server, but when trying to run : I get this issue :\n\n{code}\n[root@qvisbcld0005 ~]# service puppetserver start\nRedirecting to /bin/systemctl start  puppetserver.service\nJob for puppetserver.service failed because the control process exited with error code. See \"systemctl status puppetserver.service\" and \"journalctl -xe\" for details.\n[root@qvisbcld0005 ~]# \n\n[root@qvisbcld0005 ~]# systemctl -l status puppetserver.service\n\u25cf puppetserver.service - puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/puppetserver.service; disabled; vendor preset: disabled)\n   Active: failed (Result: exit-code) since Tue 2016-07-19 12:26:03 UTC; 15min ago\n  Process: 3596 ExecStartPost=/bin/bash ${INSTALL_DIR}/ezbake-functions.sh wait_for_app (code=exited, status=1/FAILURE)\n  Process: 3595 ExecStart=/usr/bin/java $JAVA_ARGS -XX:OnOutOfMemoryError=kill -9 %%p -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetserver -Djava.security.egd=/dev/urandom -cp ${INSTALL_DIR}/puppet-server-release.jar clojure.main -m puppetlabs.trapperkeeper.main --config ${CONFIG} -b ${BOOTSTRAP_CONFIG} $@ (code=exited, status=1/FAILURE)\n  Process: 3593 ExecStartPre=/usr/bin/install --group=puppet --owner=puppet -d /var/run/puppet (code=exited, status=0/SUCCESS)\n Main PID: 3595 (code=exited, status=1/FAILURE)\n\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr java[3595]: at clojure.lang.RestFn.invoke(RestFn.java:512)\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr java[3595]: at clojure.lang.Var.invoke(Var.java:409)\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr java[3595]: at clojure.lang.AFn.applyToHelper(AFn.java:178)\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr java[3595]: at clojure.lang.Var.applyTo(Var.java:700)\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr java[3595]: at clojure.main.main(main.java:37)\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr systemd[1]: puppetserver.service: main process exited, code=exited, status=1/FAILURE\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr systemd[1]: puppetserver.service: control process exited, code=exited status=1\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr systemd[1]: Failed to start puppetserver Service.\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr systemd[1]: Unit puppetserver.service entered failed state.\nJul 19 12:26:03 qvisbcld0005.france.airfrance.fr systemd[1]: puppetserver.service failed.\n[root@qvisbcld0005 ~]# \n\n\n{code}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14748", "fixedVersions": [], "id": "14748", "issueType": "Bug", "key": "SERVER-1441", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:f466c103-96cc-4ea4-94e4-29a5c0779f7a", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-16T11:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver failed to run after first installation", "timeSpent": "PT0S", "updated": "2018-02-16T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Starting with the Emerald subteam.", "created": "2016-07-18T11:21:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "When this passes CI, the ticket can just be closed. No further QA work to do per the risk analysis.", "created": "2016-07-20T06:58:00.000000"}], "components": ["Puppet Server"], "created": "2016-07-18T11:19:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@31248ad9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xp3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CI test failure"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_102007216_*|*_1_*:*_1_*:*_4491222_*|*_10007_*:*_1_*:*_148636476_*|*_3_*:*_1_*:*_3621198_*|*_5_*:*_1_*:*_5872831958_*|*_6_*:*_1_*:*_0"}], "description": "There appears to be an intermittent or transient failure in jruby-puppet-pool-int-test.rb. It fails thus (https://jenkins.puppetlabs.com/job/platform_puppetserver_unit-clj_master/JDK=openjdk7,label=unit/175/):\n{code}\n02:50:44 lein test :only puppetlabs.services.jruby.jruby-puppet-pool-int-test/test-503-when-app-shuts-down\n02:50:44 \n02:50:44 FAIL in (test-503-when-app-shuts-down) (jruby_puppet_pool_int_test.clj:231)\n02:50:44 During a shutdown the agent requests result in a 503 response\n02:50:44 expected: (= 503 (:status (ping-environment)))\n02:50:44   actual: (not (= 503 200))\n{code}\n\nApparently some changes in the jruby pools code has resulted in a race condition in the test. Filing a bug so we can track the transience.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15901", "fixedVersions": ["None"], "id": "15901", "issueType": "Bug", "key": "SERVER-1440", "labels": ["transient"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Fixed", "resolutionDate": "2016-07-21T11:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Clojure unit test test-503-when-app-shuts-down in jruby-puppet-pool-int-test fails intermittently", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-07-18T10:18:00.000000", "creator": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48800e17"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-3"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Integrating Secure SSL Extensions"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "yellow"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7lmn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_12807119776_*|*_6_*:*_1_*:*_0"}], "description": "The Server team has done the plumbing for securing SSL Extensions (in Epic SERVER-1305). The remainder of the work is integrating that functionality into the product.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15306", "fixedVersions": [], "id": "15306", "issueType": "Epic", "key": "SERVER-1439", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "resolution": "Fixed", "resolutionDate": "2016-12-13T14:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Integrating Secure SSL Extensions", "timeSpent": "PT0S", "updated": "2019-11-22T12:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5cd00cb0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kxr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3680_*|*_5_*:*_1_*:*_3477709050_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2416538535"}], "description": "(Initial planned release date: 2016-08-08)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.5.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15304", "fixedVersions": ["SERVER 2.5.0"], "id": "15304", "issueType": "Sub-task", "key": "SERVER-1438", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-12T11:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dce73a1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kxj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2352_*|*_5_*:*_1_*:*_185157_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2416330908"}], "description": "(Initial planned release date: 2016-08-08)\n\nUpdate dujour to notify users to use 2.5.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15031", "fixedVersions": ["SERVER 2.5.0"], "id": "15031", "issueType": "Sub-task", "key": "SERVER-1437", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-12T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.5.0 (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@aa1f9d4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kxb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2343_*|*_5_*:*_1_*:*_516611_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2416002515"}], "description": "(Initial planned release date: 2016-08-08)\n\n  * [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14746", "fixedVersions": ["SERVER 2.5.0"], "id": "14746", "issueType": "Sub-task", "key": "SERVER-1436", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-12T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52b2f689"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kx3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4078_*|*_3_*:*_1_*:*_62342930_*|*_5_*:*_1_*:*_522524_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2353660045"}], "description": "(Initial planned release date: 2016-08-08)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17328", "fixedVersions": ["SERVER 2.5.0"], "id": "17328", "issueType": "Sub-task", "key": "SERVER-1435", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-12T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@75e9c6bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kwv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2235_*|*_5_*:*_1_*:*_59363716_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2357166861"}], "description": "(Initial planned release date: 2016-08-08)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16994", "fixedVersions": ["SERVER 2.5.0"], "id": "16994", "issueType": "Sub-task", "key": "SERVER-1434", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-11T19:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a2a3976"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kwn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_14063_*|*_1_*:*_1_*:*_3989_*|*_10009_*:*_1_*:*_143579_*|*_5_*:*_1_*:*_69176781_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2347201558"}], "description": "(Initial planned release date: 2016-08-08)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16809", "fixedVersions": ["SERVER 2.5.0"], "id": "16809", "issueType": "Sub-task", "key": "SERVER-1433", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-11T16:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e78e356"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kwf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2349_*|*_5_*:*_1_*:*_524354_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2416019528"}], "description": "(Initial planned release date: 2016-08-08)\n\nThis should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16457", "fixedVersions": ["SERVER 2.5.0"], "id": "16457", "issueType": "Sub-task", "key": "SERVER-1432", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-12T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@148e4498"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kw7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3756_*|*_10007_*:*_1_*:*_3173_*|*_3_*:*_1_*:*_6136259_*|*_5_*:*_1_*:*_69367413_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2341044367"}], "description": "(Initial planned release date: 2016-08-08)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16163", "fixedVersions": ["SERVER 2.5.0"], "id": "16163", "issueType": "Sub-task", "key": "SERVER-1431", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-11T16:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51cde696"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kvz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_29782_*|*_1_*:*_1_*:*_3002_*|*_10009_*:*_1_*:*_132470_*|*_5_*:*_1_*:*_69192371_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2347203146"}], "description": "(Initial planned release date: 2016-08-08)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15900", "fixedVersions": ["SERVER 2.5.0"], "id": "15900", "issueType": "Sub-task", "key": "SERVER-1430", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-11T16:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] all of the SERVER tickets with fixVersion = 2.5.0 should now have Release Notes field set, and release notes summary where appropriate.  [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] is working on the last bits for docs as part of SERVER-1470.\n\nI scraped the git logs for non-SERVER tickets", "created": "2016-08-10T17:54:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Release notes written, reviewed, and merged. Docs commit ref updated, site build pending.", "created": "2016-08-11T18:20:00.000000"}], "components": [], "created": "2016-07-15T12:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43180aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kvr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3771_*|*_10007_*:*_1_*:*_4854991_*|*_5_*:*_1_*:*_62872092_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2348836623"}], "description": "(Initial planned release date: 2016-08-08)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15649", "fixedVersions": ["SERVER 2.5.0"], "id": "15649", "issueType": "Sub-task", "key": "SERVER-1429", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-11T18:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": ">Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n>'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\nhttps://puppet.atlassian.net/issues/?filter=21415\n\n>'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\nhttps://puppet.atlassian.net/issues/?filter=21416\n\nPrevious release announcements have also included a link like this: https://puppet.atlassian.net/browse/SERVER/fixforversion/18909\n\nNot sure which one is the \"release story\", I'm guessing the parent? Putting it there also.", "created": "2016-08-11T17:10:00.000000"}], "components": [], "created": "2016-07-15T12:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51ea26e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kvj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3179_*|*_10007_*:*_1_*:*_64667537_*|*_3_*:*_1_*:*_51346_*|*_5_*:*_1_*:*_2236098_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2349613858"}], "description": "(Initial planned release date: 2016-08-08)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15302", "fixedVersions": ["SERVER 2.5.0"], "id": "15302", "issueType": "Sub-task", "key": "SERVER-1428", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-12T11:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-07-15T12:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f9d6fdb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kun:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_87283933_*|*_1_*:*_1_*:*_4134_*|*_10007_*:*_1_*:*_70910121_*|*_3_*:*_1_*:*_3252978_*|*_5_*:*_1_*:*_1902949782_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_352177964"}], "description": "(Initial planned release date: 2016-08-08)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15030", "fixedVersions": ["SERVER 2.5.0"], "id": "15030", "issueType": "Sub-task", "key": "SERVER-1427", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-07-21T11:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This is pretty much done but I'm just going to keep the ticket open for housekeeping until:\n\n* OSS stable has been merged up to OSS master, and\n* OSS 2.5.0 has been promoted all the way up into PE\n* confirm that pe-puppetserver is using the correct version of ezbake (0.4.3?)", "created": "2016-08-12T11:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OSS is merged up, ezbake version is updated in pe-puppetserver.  PR to put 2.5.0 into pe-pse has been merged.  Last thing is to wait for CI to pass on pe-pse and then promote.", "created": "2016-08-12T15:55:00.000000"}], "components": [], "created": "2016-07-15T12:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d7f6b26"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kvb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3688_*|*_10007_*:*_1_*:*_519496971_*|*_3_*:*_1_*:*_1100117_*|*_5_*:*_1_*:*_3047586430_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2326129130"}], "description": "(Initial planned release date: 2016-08-08)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14745", "fixedVersions": ["SERVER 2.5.0"], "id": "14745", "issueType": "Sub-task", "key": "SERVER-1426", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-17T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] did all of the work for this", "created": "2016-07-19T14:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Libraries upgraded in this release:\n\n* tk-auth 0.6.1->0.7.0 - related to ssl-extensions, see SERVER-1305\n* ring-middleware 0.3.1->1.0.0 - related to HTTP errors, see SERVER-1310\n* added i18n 0.4.1 - related to PE-16067, adding support for internationalization - but we haven't localized anything yet, so no user-facing changes\n* kitchensink 1.3.0->1.3.1 - related to bug described in release notes of SERVER-1378\n* ezbake 0.4.0->0.4.3 - no user-facing changes except bootstrap.cfg stuff, see SERVER-1213 and friends", "created": "2016-08-10T17:51:00.000000"}], "components": [], "created": "2016-07-15T12:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@55c385e4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kv3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2318_*|*_3_*:*_1_*:*_4037213_*|*_5_*:*_1_*:*_5542177788_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_348104163"}], "description": "(Initial planned release date: 2016-08-08)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16993", "fixedVersions": ["None"], "id": "16993", "issueType": "Sub-task", "key": "SERVER-1425", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-07-19T14:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Moved this to blocked because we are waiting for an agent SHA to pin to.", "created": "2016-07-22T11:21:00.000000"}], "components": [], "created": "2016-07-15T12:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71b33ea6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7kuv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3917_*|*_10007_*:*_1_*:*_174672068_*|*_3_*:*_1_*:*_252054506_*|*_5_*:*_2_*:*_90501218_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1551256072_*|*_10006_*:*_1_*:*_348104892"}], "description": "(Initial planned release date: 2016-08-08)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.5.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16808", "fixedVersions": ["SERVER 2.5.0"], "id": "16808", "issueType": "Sub-task", "key": "SERVER-1424", "labels": [], "originalEstimate": "PT0S", "parent": "16455", "parentSummary": "puppetserver 2.5.0 2016-08-08 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-11T10:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.5.0)", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": ">Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n>'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\nhttps://puppet.atlassian.net/issues/?filter=21415\n\n>'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\nhttps://puppet.atlassian.net/issues/?filter=21416\n\nPrevious release announcements have also included a link like this: https://puppet.atlassian.net/browse/SERVER/fixforversion/18909\n", "created": "2016-08-11T17:10:00.000000"}], "components": [], "created": "2016-07-15T12:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@358ac5f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymzq7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4011_*|*_10007_*:*_1_*:*_429224143_*|*_3_*:*_1_*:*_266035821_*|*_5_*:*_1_*:*_3539723567_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1533000307_*|*_10006_*:*_1_*:*_618473764"}], "description": "Below this line was generated by Rake, and the subtasks are confusing as they seem to be written for an Agent release. How to interpret everything and do a release for Puppet Server is documented here: https://confluence.puppetlabs.com/display/ENG/Releasing+a+new+version+of+Puppet+Server\n\n-------------------------------------------\npuppetserver 2.5.0 2016-08-08 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16455", "fixedVersions": ["SERVER 2.5.0"], "id": "16455", "issueType": "Task", "key": "SERVER-1423", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-17T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.5.0 2016-08-08 Release", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "PR here: https://github.com/puppetlabs/puppet/pull/5120", "created": "2016-07-14T22:34:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Merged. Once this commit, or one later than it, is promoted into puppet-agent and passes their nightly pipeline we then need to bump our {{acceptance/lib/helper.rb}} to point to that build of puppet-agent and bump the puppet submodule to the corresponding commit in puppet.", "created": "2016-07-15T11:25:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "PR to bump our version of puppet-agent is here: https://github.com/puppetlabs/puppetserver/pull/1141", "created": "2016-07-18T10:22:00.000000"}], "components": [], "created": "2016-07-14T14:19:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c60f0ff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7k8v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Breaking CI from unknown reason"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_79888722_*|*_1_*:*_1_*:*_44970_*|*_10007_*:*_1_*:*_306521101_*|*_3_*:*_1_*:*_29637227_*|*_5_*:*_1_*:*_6050273498_*|*_6_*:*_1_*:*_0"}], "description": "Since we bumped to puppet-agent#861f164b7296a28ff13391b4720c108ae7f2264c with puppet#e759f3ccea8e4ca89edccb7921c6b628e9314eb1 the duplicate CSR test has been failing.\n\nThe known working versions were: puppet-agent#4ae6ee2fcb30ef676a2a3f87e21648ce0fdbc9f7 and puppet#3851e0b93b342e24421139ca8b030e3cc30d4d20", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16160", "fixedVersions": ["None"], "id": "16160", "issueType": "CI Blocker", "key": "SERVER-1422", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2016-07-19T09:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Resolve failing puppet/acceptance/tests/ticket_3360_allow_duplicate_csr_with_option_set.rb failure in puppetserver#master pipeline.", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Put this in Accepted so it's still open if the same failure occurs again soon.", "created": "2016-07-13T10:49:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] have we seen this recently? is this still an issue?\n\nperhaps we can start using ci-triage-helper to track things like this?", "created": "2017-05-23T16:41:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "I don't think I've seen this in a while.", "created": "2017-05-23T17:02:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "No longer test 1.x", "created": "2018-02-16T11:46:00.000000"}], "components": ["Puppet Server"], "created": "2016-07-13T10:11:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b0d1ee3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7j1r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1712718_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_50378778529"}], "description": "We're seeing occasional failures in the 1.x full acceptance job of Puppet Server in the ruby/puppet/acceptance/tests/resource/service.ticket_3927_redhat_systemd_vs_service_provider.rb test.\n\nIt failed once on redhat 6 (https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_full-1.x/96/LAYOUT=64mdca,LDAP_TYPE=default,PLATFORM=redhat6,label=beaker/testReport/junit/(root)/ruby_puppet_acceptance_tests_resource_service/ticket_3927_redhat_systemd_vs_service_provider_rb/) with\n\n{code}\nHost 'umpsi1aopt3lb9j.delivery.puppetlabs.net' exited with 4 running:\n  env PATH=\"/usr/bin:/opt/puppet-git-repos/hiera/bin:${PATH}\" RUBYLIB=\"/opt/puppet-git-repos/hiera/lib:/opt/puppet-git-repos/hiera-puppet/lib:${RUBYLIB}\" puppet apply --verbose --detailed-exitcodes /tmp/apply_manifest.pp.y1qWfR  \nLast 10 lines of output were:\n\t[mNotice: Compiled catalog for umpsi1aopt3lb9j.delivery.puppetlabs.net in environment production in 0.17 seconds[0m\n\t[0;32mInfo: Applying configuration version '1468409281'[0m\n\t[1;31mError: Execution of '/usr/bin/yum -d 0 -e 0 -y install httpd' returned 1: Error Downloading Packages:\n\t  apr-1.3.9-5.el6_2.x86_64: failure: apr-1.3.9-5.el6_2.x86_64.rpm from redhat-6-base: [Errno 256] No more mirrors to try.[0m\n\t[1;31mError: /Stage[main]/Main/Package[httpd]/ensure: change from absent to present failed: Execution of '/usr/bin/yum -d 0 -e 0 -y install httpd' returned 1: Error Downloading Packages:\n\t  apr-1.3.9-5.el6_2.x86_64: failure: apr-1.3.9-5.el6_2.x86_64.rpm from redhat-6-base: [Errno 256] No more mirrors to try.[0m\n\t[mNotice: Finished catalog run in 68.23 seconds[0m\n{code}\n\nand once on redhat 5 (https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_full-1.x/93/LAYOUT=64mdca-64a,LDAP_TYPE=default,PLATFORM=redhat5,label=beaker/testReport/junit/(root)/ruby_puppet_acceptance_tests_resource_service/ticket_3927_redhat_systemd_vs_service_provider_rb/) with\n\n{code}\nHost 'non635cetrf5qqt.delivery.puppetlabs.net' exited with 4 running:\n  env PATH=\"/usr/bin:/opt/puppet-git-repos/hiera/bin:${PATH}\" RUBYLIB=\"/opt/puppet-git-repos/hiera/lib:/opt/puppet-git-repos/hiera-puppet/lib:${RUBYLIB}\" puppet apply --verbose --detailed-exitcodes /tmp/apply_manifest.pp.z29930  \nLast 10 lines of output were:\n\t                        package-cleanup --dupes\n\t                        rpm -Va --nofiles --nodigest\n\tThe program package-cleanup is found in the yum-utils package.[0m\n\t[1;31mError: /Stage[main]/Main/Package[httpd]/ensure: change from absent to present failed: Execution of '/usr/bin/yum -d 0 -e 0 -y install httpd' returned 1: Error: failure: repodata/b747fbdb61fb2b6dd57ecb7c4dc9c64d6d1d1844-filelists.sqlite.bz2 from puppetlabs-deps: [Errno 256] No more mirrors to try.\n\t You could try using --skip-broken to work around the problem\n\t You could try running: package-cleanup --problems\n\t                        package-cleanup --dupes\n\t                        rpm -Va --nofiles --nodigest\n\tThe program package-cleanup is found in the yum-utils package.[0m\n\t[mNotice: Finished catalog run in 31.46 seconds[0m\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16153", "fixedVersions": [], "id": "16153", "issueType": "Bug", "key": "SERVER-1421", "labels": ["transient"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-16T11:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Occasional failures in 1.x full acceptance from ruby/puppet/acceptance/tests/resource/service.ticket_3927_redhat_systemd_vs_service_provider.rb", "timeSpent": "PT0S", "updated": "2018-02-16T11:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [], "components": [], "created": "2016-07-12T19:46:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fa639e2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7itj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7593_*|*_3_*:*_1_*:*_5710_*|*_5_*:*_1_*:*_6619494299_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6862"}], "description": "This ticket is to track time spent working on CI blocker SERVER-1409, which got moved into an RE sprint (RE did much of the work, but there was still about 1 point of work spent during the sprint helping RE test out different changes to vmpooler templates).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14743", "fixedVersions": ["None"], "id": "14743", "issueType": "CI Blocker", "key": "SERVER-1420", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-07-12T19:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CI goalie time spent on SERVER-1409", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-master/159/ and https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-stable/120/ are failing jobs.", "created": "2016-07-11T16:07:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "After updating the pin on master, two failures appeared in the puppet acceptance tests, one in [{{ruby/puppet/acceptance/tests/ticket_3360_allow_duplicate_csr_with_option_set.rb}}| https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/123/LAYOUT=ubuntu1604-64ma-32a,LDAP_TYPE=default,PLATFORM=default,label=beaker/testReport/junit/(root)/ruby_puppet_acceptance_tests/ticket_3360_allow_duplicate_csr_with_option_set_rb/], tracked in PUP-6491, and one in [{{ruby/puppet/acceptance/tests/parser_validate.rb}}|https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/123/LAYOUT=ubuntu1604-64ma-32a,LDAP_TYPE=default,PLATFORM=default,label=beaker/testReport/junit/(root)/ruby_puppet_acceptance_tests_face/parser_validate_rb/] tracked in SERVER-1422.", "created": "2016-07-13T11:52:00.000000"}], "components": ["Puppet Server"], "created": "2016-07-11T16:06:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64adadb4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn2nb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_264723_*|*_3_*:*_1_*:*_262932150_*|*_5_*:*_1_*:*_6391227362_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_64681606"}], "description": "Puppet Server acceptance on stable and master is red because the packages for the puppet-agent SHAs both pipelines are pinned to have been purged.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15300", "fixedVersions": ["None"], "id": "15300", "issueType": "CI Blocker", "key": "SERVER-1419", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-07-15T11:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppet-agent version pins for master and stable branches", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-15T12:03:00.000000", "name": "stack-overflow-error.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10578"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-08-16T09:18:00.000000", "name": "sut56-jruby17-long-run-cmjit.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10881"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-08-16T09:18:00.000000", "name": "sut57-jruby9120-long-run-msgpack+json-ext-cmjit.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10959"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The Compile Mode = OFF run has been going for 2+ days with no KOs and with a mean agent run time around 5 seconds, which is at or better than the \"normal\" good runs that I've been doing for this catalog and agent load configuration.\n\nThe Compile Mode = JIT run started encountering frequent StackOverflowError Java exceptions (returned to the client as HTTP 500 errors), causing about 70% of the overall agent runs attempted to fail.  The puppetserver instance was still running - without having restarted.  Assuming that this problem may be due to the JVM process needing to have more heap space available to accommodate the overhead of JIT compilation, I rekicked the Compile Mode = JIT run with a max/min JVM heap size of 8 GB.", "created": "2016-07-12T18:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "My re-fired run with Compile Mode = JIT and a JVM heap size of 8 GB also failed, again with the frequent StackOverflowErrors.  An example of one is attached as \"stack-overflow-error.txt\".\n\nI'm going to fire up another Compile Mode = JIT run with the JVM heap size for pe-puppetserver still set to 8 GB but with the -Xss / -XX:ThreadStackSize bumped from the default -- which appears to be 1 MB on the CentOS 7 / 1.8.0_71 JDK that I'm using -- to 2 MB.", "created": "2016-07-15T12:06:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The run with a JVM heap size of 8 GB and a thread stack size of 2 MB also failed with the same {{StackOverflowError}} messages.\n\nIt appears that a couple of other users have also run into {{StackOverflowError}} messages with JRuby 9k.  See:\n\nhttps://github.com/jruby/jruby/issues/4020\nhttps://github.com/jruby/jruby/issues/4024\n\nFor the first one of those issues, there was a reference to a recent fix for a {{StackOverflowError}}, https://github.com/jruby/jruby/issues/4003, which is intended to release with the next JRuby version, 9.1.3.0.  It seems like that issue only affects JRuby when running with \"InvokeDynamic\" enabled, which has not been the case for the runs I've done related to this ticket so far.  This would seem to indicate that this is a separate issue.\n\nI've bumped the stack size up even further, to 6 MB, and have fired another run.  I'll monitor this to see if there's any change related to the errors.", "created": "2016-07-21T11:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did one more run where I had the JVM heap size set to 8 GB but had bumped up the thread stack size further - to 6 MB.  This has been running for almost 2 days with no more {{StackOverflowError}} messages.\n\nThere has been one request error from this run:\n\n{noformat}\n2016-07-25 05:26:35,069 ERROR [qtp1978776970-1239] [puppetserver] Puppet Server Error: Unknown error - No message available\n{noformat}\n\nThis happened for a report request, which returned an HTTP 500 error.  But I didn't see anything else in the log that was helpful in determining the source of the error.\n\nMore problematic than this, though, is that numerous request timeouts have been taking place in the Gatling run - several thousand of them.  We should spend more time diagnosing those at some point - probably more performance issues to root out.  For now, though, it's probably best to just close this ticket out.", "created": "2016-07-27T10:00:00.000000"}], "components": [], "created": "2016-07-08T12:04:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@701a3964"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn2n3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19482_*|*_3_*:*_2_*:*_1467001485_*|*_5_*:*_1_*:*_5351051463_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_174771053"}], "description": "Related to the investigations into performance done in SERVER-1122, we'd like to setup a couple of long-running (several weeks?) Gatling jobs which incorporate some of the optimizations that we found which should improve Puppet Server performance when running under JRuby 9k.  The base configuration for both runs would be:\n\n* PE 2016.2.0\n* JRuby 9.1.2.0\n* msgpack (instead of PSON) serialization for agent->master requests\n* json-ext (instead of PSON) serialization for master->puppetdb requests\n* Temporary hack / patch for jruby jar leak (https://github.com/jruby/jruby/issues/3928)\n* Simulating up to 1000 agents / 30 minute sleeps between runs with catalog-zero configured\n* 3 GB max JVM heap\n* max-requests-per-instance set to 0 (disabled)\n* Default number of max-active-instances for our bare-metal machines (4)\n\nThe only difference in configuration between the two runs would be the value of the Compile Mode setting.  One run would use \"OFF\" (which we do in Puppet Server today for JRuby).  One run would use \"JIT\".\n\nGoals of the runs:\n\n* Vet the basic performance of the scenario is at least in the ballpark of comparable vanilla runs that we've done with JRuby 1.7 in the past.\n\n* Compare Compile Mode = JIT to OFF performance.  Is the system functionally stable with JIT?  Assuming yes, how does the performance of JIT compare to OFF?\n\nIt might make sense for this ticket to be closed out once the runs are started and have a second ticket submitted which is just about monitoring the outcome of the runs.\n", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16992", "fixedVersions": ["None"], "id": "16992", "issueType": "Task", "key": "SERVER-1418", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-07-27T12:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Setup long Gatling performance runs varying Compile Mode for JRuby 9k", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-21T09:27:00.000000", "name": "jruby17-compile-mode-jit-results.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11122"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-18T18:38:00.000000", "name": "jruby17-compile-mode-off-vs-jruby17-compile-mode-jit-diff.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10736"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-21T09:27:00.000000", "name": "jruby9k-compile-mode-jit-results.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11203"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-18T18:38:00.000000", "name": "jruby9k-compile-mode-off-vs-jruby9k-compile-mode-jit-diff.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10805"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-21T09:26:00.000000", "name": "ops-jruby17-compile-mode-jit-results.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11274"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-18T18:39:00.000000", "name": "ops-jruby17-compile-mode-off-vs-ops-jruby17-compile-mode-jit-diff.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10660"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-21T09:26:00.000000", "name": "ops-jruby9k-compile-mode-jit-results.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10579"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-19T17:29:00.000000", "name": "ops-jruby9k-compile-mode-off-vs-ops-jruby9k-compile-mode-jit-diff.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11201"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Several result scenario files are attached, which include a re-run of prior developed scenarios for an Ops catalog, simulating the catalog response that an agent running on the Puppet Ops Master-of-Masters would receive.\n\nThe following versions of code were in use for this run:\n\n* puppetserver-memmeasure tool - [4f2a74|https://github.com/camlow325/puppetserver-memmeasure/commit/4f2a743c36407e6799e29f32d473df790aeaabd9]\n* puppetserver_perf_control repo - [f8342b7|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/f8342b7d926575a05cbcee413dab2d33d8e1866d]\n* Puppet Server - 2.4.0\n* JRuby 1.7.20.1 vs. 9.1.2.0\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)\n\nA general takeaway from this is that setting CompileMode to JIT incurs significantly more memory than does the setting CompileMode to OFF.  Also, the growth rate appears to, generally, be significantly higher for JRuby 9k as compared to JRuby 1.7.  The one exception to this that the pe-mom catalog compiles for an \"environment_timeout\" setting of \"0\" incur less incremental memory overhead, 23 MB, on JRuby 9k vs. JRuby 1.7, 36 MB.  A more detailed breakdown of the numbers for each is below.\n\n1) Memory incurred to create JRuby ScriptingContainers and initialize them with Ruby Puppet code\n\n|| JRuby version || Compile Mode || 1st Scripting Container || Per-Additional Scripting Container || 1st Container with Puppet || Per-Additional Container with Puppet\n| jruby17 | off | 12 MB | 5 MB | 49 MB | 35 MB\n| jruby17 | jit | 12 MB | 5 MB | 52 MB | 38 MB\n| jruby9k | off | 18 MB | 7 MB | 64 MB | 48 MB\n| jruby9k | jit | 18 MB | 7 MB | 71 MB | 55 MB\n\nScriptingContainers initialized with Puppet code are about 9% more expensive on JRuby 17, 15% on JRuby 9k.\n\n2) Memory incurred per a number of catalog compilations in a single environment across one or more JRubyPuppet containers\n\n*JRuby 1.7 \u201cjit\u201d vs. 1.7 \u201coff\u201d*\n\n|| Catalog || Num Compiles per JRuby || Env Timeout || 1st JRuby || Per-Additional JRubyPuppet\n| empty | 1 | 0 | 6 MB (+ 1 MB) | 5 MB (+ 700 KB) \n| empty | 5 | 0 | 7 MB (+ 2 MB) | 5 MB (+ 2 MB)\n| empty | 1 | unlimited | 6 MB (+ 1 MB) | 5 MB (+ 700 KB) \n| empty | 5 | unlimited | 6 MB (+ 2 MB) | 5 MB (+ 1 MB)\n| small | 1 | 0 | 21 MB (+ 5 MB) | 19 MB (+ 4 MB) \n| small | 5 | 0 | 34 MB (+ 12 MB) | 31 MB (+ 11 MB)  \n| small | 1 | unlimited | 21 MB (+ 5 MB) | 19 MB (+ 4 MB)\n| small | 5 | unlimited | 22 MB (+ 5 MB) | 20 MB (+ 5 MB) \n| ops pe-mom | 1 | 0 | 32 MB (+ 6 MB) | 29 MB (+ 5 MB)\n| ops pe-mom | 5 | 0 | 73 MB (+ 34 MB) | 71 MB (+ 33 MB) \n| ops pe-mom | 1 | unlimited | 32 MB (+ 6 MB) | 29 MB (+ 5 MB) \n| ops pe-mom | 5 | unlimited | 45 MB (+ 13 MB) | 43 MB (+ 12 MB)\n\n*JRuby 9k \u201cjit\u201d vs. 9k \u201coff\u201d*\n\n|| Catalog || Num Compiles per JRuby || Env Timeout || 1st JRuby || Per-Additional JRubyPuppet\n| empty | 1 | 0 | 14 MB (+ 4 MB) | 13 MB (+ 4 MB) \n| empty | 5 | 0 | 15 MB (+ 5 MB) | 14 MB (+ 5 MB)\n| empty | 1 | unlimited | 14 MB (+ 4 MB) | 13 MB (+ 4 MB) \n| empty | 5 | unlimited | 15 MB (+ 5 MB) | 14 MB (+ 5 MB)\n| small | 1 | 0 | 42 MB (+ 14 MB) | 41 MB (+ 14 MB) \n| small | 5 | 0 | 61 MB (+ 17 MB) | 58 MB (+ 17 MB)\n| small | 1 | unlimited | 42 MB (+ 14 MB) | 41 MB (+ 14 MB)\n| small | 5 | unlimited | 45 MB (+ 15 MB) | 43 MB (+ 15 MB)\n| ops pe-mom | 1 | 0 | 56 MB (+ 16 MB) | 54 MB (+ 16 MB)\n| ops pe-mom | 5 | 0 | 104 MB (+ 19 MB) | 100 MB (+ 19 MB)\n| ops pe-mom | 1 | unlimited | 56 MB (+ 16 MB) | 54 MB (+ 16 MB)\n| ops pe-mom | 5 | unlimited | 71 MB (+ 17 MB) | 68 MB (+ 17 MB)\n\nThe growth in memory for CompileMode JIT vs. OFF appears to be proportional to the size of the Puppet catalog being compiled.\n\nThe growth in memory is also greater for JRuby 9k as compared to JRuby 1.7 for all catalog types.  \u201csmall\u201d catalogs with \u201cenvironment_timeout\u201d set to \u201cunlimited\u201d, for example, consume 33% more memory for JIT vs. off under JRuby 1.7 but consume 53% more memory for JIT vs. OFF under JRuby 9k.\n\n3) Memory incurred per a number of catalog compilations in a single environment across one or more JRubyPuppet containers\n\n*JRuby 1.7 \u201cjit\u201d vs. 1.7 \u201coff\u201d*\n\n|| Catalog || Num Compiles per Environment || Env Timeout || 1st Environment || Per-Additional Environment\n| empty | 5 | 0 | 7 MB (+ 2 MB) | 700 KB (+ 700 KB) \n| empty | 5 | unlimited | 6 MB (+ 1 MB) | 1 MB (+ 300 KB)\n| small | 5 | 0 | 34 MB (+ 12 MB) | 5 MB (+ 5 MB) \n| small | 5 | unlimited | 22 MB (+ 6 MB) | 6 MB (+ 400 KB)\n| ops pe-mom | 5 | 0 | 73 MB (+ 33 MB) | flat (+ 0 KB)\n| ops pe-mom | 5 | unlimited | 45 MB (+ 12 MB) | 14 MB (-600 KB)\n\n*JRuby 9k \u201cjit\u201d vs. 9k \u201coff\u201d*\n\n|| Catalog || Num Compiles per Environment || Env Timeout || 1st Environment || Per-Additional Environment\n| empty | 5 | 0 | 15 MB (+ 5 MB) | 2 MB (+ 700 KB)\n| empty | 5 | unlimited | 15 MB (+ 5 MB) | 2 MB (+ 700 KB) \n| small | 5 | 0 | 60 MB (+ 17 MB) | 4 MB (+ 800 KB)\n| small | 5 | unlimited | 45 MB (+ 15 MB) | 8 MB (+ 2 MB)\n| ops pe-mom | 5 | 0 | 102 MB (+ 19 MB) | 2 MB (+ 600 KB) \n| ops pe-mom | 5 | unlimited | 70 MB (+ 17 MB) | 16 MB (+ 2 MB) \n\nAs additional environments are added to a JRuby, the rate of memory increase for JRuby 9k is greater across the board than for JRuby 1.7 but not by nearly as significant of an amount as per compilations in the first environment for each new JRuby.  Also, the relative increase vs. Compile Mode OFF is relatively similar for both JRuby 1.7 and 9k.\n\n4) Overhead of relocating an environment from a JRubyPuppet instance to a separate JRubyPuppet instance\n\n*JRuby 1.7 \u201cjit\u201d vs. 1.7 \u201coff\u201d*\n\n|| Catalog || Env Timeout || Base JRubyPuppet Overhead || 1st Catalog Compile Overhead || 2nd and Latest Catalog Compile Overhead || Extra Environment in Same JRuby Overhead || Additional JRubyPuppet over Environment increase\n| ops pe-mom | 0 | 38 MB (+ 3 MB) | 29 MB (+ 5 MB) | 42 MB (+ 28 MB) | flat (+ 0 KB) | 109 MB (+ 36 MB)\n| ops pe-mom | unlimited | 38 MB (+ 3 MB) | 29 MB (+ 5 MB) | 14 MB (+ 7 MB) | 14 MB (- 600 KB) | 67 MB (+ 15 MB)\n| small | 0 | 38 MB (+ 3 MB) | 19 MB (+ 4 MB) | 12 MB (+ 7 MB) | 5 MB (+ 5 MB) | 64 MB (+ 9 MB)\n| small | unlimited | 38 MB (+ 3 MB) | 19 MB (+ 4 MB) | 1 MB (+ 1 MB) | 6 MB (+ 400 KB) | 52 MB (+ 8 MB)\n| empty | 0 | 38 MB (+ 3 MB) | 5 MB (+ 700 KB) | 0 MB (+ 1.3 MB) | 700 KB (+ 700 KB) | 42 MB (+ 3 MB)\n| empty | unlimited | 38 MB (+ 3 MB) | 5 MB (+ 700 KB) | 0 MB (+ 300 KB) | 1 MB (+ 300 KB) | 42 MB (+ 3 MB)\n\n*JRuby 9k \u201cjit\u201d vs. 9k \u201coff\u201d*\n\n|| Catalog || Env Timeout || Base JRubyPuppet Overhead || 1st Catalog Compile Overhead || 2nd and Latest Catalog Compile Overhead || Extra Environment in Same JRuby Overhead || Additional JRubyPuppet over Environment increase\n| ops pe-mom | 0 | 55 MB (+ 7 MB) | 54 MB (+ 16 MB) | 46 MB (+ 3 MB) | 2 MB (+ 600 KB) | 153 MB (+ 23 MB)\n| ops pe-mom | unlimited | 55 MB (+ 7 MB) | 54 MB (+ 16 MB) | 14 MB (+ 1 MB) | 16 MB (+ 2 MB) | 107 MB (+ 19 MB)\n| small | 0 | 55 MB (+ 7 MB) | 41 MB (+ 14 MB) | 17 MB (+ 3 MB) | 4 MB (+ 800 KB) | 109 MB (+ 23 MB)\n| small | unlimited | 55 MB (+ 7 MB) | 41 MB (+ 14 MB) | 2 MB (+ 1 MB) | 8 MB (+ 2 MB) | 90 MB (+ 20 MB)\n| empty | 0 | 55 MB (+ 7 MB) | 13 MB (+ 4 MB) | 1 MB (+ 1 MB) | 2 MB (+ 700 KB) | 67 MB (+ 11 MB)\n| empty | unlimited | 55 MB (+ 7 MB) | 13 MB (+ 4 MB) | 1 MB (+ 1 MB) | 2 MB (+ 700 KB) | 67 MB (+ 11 MB)\n\nAs with the memory increase per JRuby instance added, more memory is consumed for the JIT vs. OFF compile mode and the rate of increase is generally higher on JRuby 9k vs. JRuby 1.7.  \u201csmall\u201d catalogs with \u201cenvironment_timeout\u201d set to \u201cunlimited\u201d, for example, consume 18% more memory for JIT vs. off under JRuby 1.7 but consume 29% more memory for JIT vs. OFF under JRuby 9k.\n\nThe one exception to the latter is that the pe-mom catalog compiles for an \"environment_timeout\" setting of \"0\" incur less incremental memory overhead, 23 MB, on JRuby 9k vs. JRuby 1.7, 36 MB.", "created": "2016-07-19T17:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to \"reviewing\" so that you have a chance to take a look at it. Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-07-19T17:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "You have two sections labeled {{2)}} :)\n\nIn all of these tables, the numbers outside of parens are the JIT numbers, and the numbers inside the parens are the deltas vs. OFF... correct?", "created": "2016-07-20T06:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}You have two sections labeled 2) {quote}\n\nD'oh.  Fixed that, thanks.\n\n{quote}In all of these tables, the numbers outside of parens are the JIT numbers, and the numbers inside the parens are the deltas vs. OFF... correct?{quote}\n\nYeah, that's right.  Sorry I wasn't clear about that.  For a value like \"55 MB (+ 7 MB)\", the measurement for JIT would be 55 MB and the measurement for OFF would be 48 MB, with a increase from OFF to JIT of 7 MB.", "created": "2016-07-20T12:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "roger", "created": "2016-07-20T14:15:00.000000"}], "components": [], "created": "2016-07-08T11:41:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19fc3a1b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7fof:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_368673547_*|*_3_*:*_1_*:*_371115165_*|*_10009_*:*_1_*:*_74654413_*|*_5_*:*_1_*:*_5948185110_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_231602104"}], "description": "This ticket would cover doing the scenarios described in other tickets in the memory usage epic, SERVER-1377, but with Puppet Server using JRuby's compile mode set to JIT instead of OFF, the value implicitly used for all of the other measurements taken so far.\n\nThis should probably be done after SERVER-1415, which would cover JRuby 9k testing with compile mode set to OFF.  It would be good coming out of this ticket to have numbers comparing:\n\n* JRuby 1.7 with Compile Mode = OFF\n* JRuby 9k with Compile Mode = OFF\n* JRuby 1.7 with Compile Mode = JIT\n* JRuby 9k with Compile Mode = OFF", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "14742", "fixedVersions": ["None"], "id": "14742", "issueType": "Task", "key": "SERVER-1416", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-07-20T14:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Repeat memory usage tests with JIT JRuby compile mode", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-21T09:25:00.000000", "name": "jruby17-compile-mode-off-results.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11040"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-18T18:23:00.000000", "name": "jruby17-compile-mode-off-vs-jruby9k-compile-mode-off-diff.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11273"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-21T09:25:00.000000", "name": "jruby9k-compile-mode-off-results.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10957"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-21T09:25:00.000000", "name": "ops-jruby17-compile-mode-off-results.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10806"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-19T17:27:00.000000", "name": "ops-jruby17-compile-mode-off-vs-ops-jruby9k-compile-mode-off-diff.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11121"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-21T09:25:00.000000", "name": "ops-jruby9k-compile-mode-off-results.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10880"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Several result scenario files are attached, which include a re-run of prior developed scenarios for an Ops catalog, simulating the catalog response that an agent running on the Puppet Ops Master-of-Masters would receive.\n\nThe following versions of code were in use for this run:\n\n* puppetserver-memmeasure tool - [4f2a74|https://github.com/camlow325/puppetserver-memmeasure/commit/4f2a743c36407e6799e29f32d473df790aeaabd9]\n* puppetserver_perf_control repo - [f8342b7|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/f8342b7d926575a05cbcee413dab2d33d8e1866d]\n* Puppet Server - 2.4.0\n* JRuby 1.7.20.1 vs. 9.1.2.0\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)\n\nOverall, it is pretty clear that JRuby 9.1.2.0, at least for these scenarios, uses significantly more memory than does JRuby 1.7.20.1.  A breakdown of the scenarios follows.  In each of the tables below, the number at left in the cell represents the measurement for JRuby 1.7.20.1.  Where applicable, the number at right, in parentheses, represents the rate of increase for JRuby 9k over what was measured for JRuby 1.7.20.1.\n\n1) Memory incurred to create JRuby ScriptingContainers and initialize them with Ruby Puppet code\n\n|| JRuby version || 1st Scripting Container || Per-Additional Scripting Container || 1st Container with Puppet || Per-Additional Container with Puppet\n| jruby17 | 12 MB | 5 MB | 49 MB | 35 MB\n| jruby9k | 18 MB | 7 MB | 64 MB | 48 MB\n\nThe first ScriptingContainer created and initialized with Ruby Puppet code consumes about 30% more memory on JRuby 9k vs. JRuby 1.7.  Containers in addition to the first one are about 37% more expensive on JRuby 9k than on JRuby 1.7.\n\n2) Memory incurred per a number of catalog compilations in a single environment across one or more JRubyPuppet containers\n\n|| Catalog || Num Compiles per JRuby || Env Timeout || 1st JRuby || Per-Additional JRubyPuppet\n| empty | 1 | 0 | 10 MB (+ 5 MB) | 9 MB (+ 5 MB) \n| empty | 5 | 0 | 11 MB (+ 6 MB) | 10 MB (+ 6 MB)\n| empty | 1 | unlimited | 10 MB (+ 5 MB) | 9 MB (+ 5 MB)\n| empty | 5 | unlimited | 10 MB (+ 5 MB) | 9 MB (+ 5 MB)\n| small | 1 | 0 | 29 MB (+ 13 MB) | 28 MB (+ 13 MB)\n| small | 5 | 0 | 44 MB (+ 22 MB) | 42 MB (+ 21 MB) \n| small | 1 | unlimited | 29 MB (+ 13 MB) | 28 MB (+ 13 MB)\n| small | 5 | unlimited | 31 MB (+ 15 MB) | 29 MB (+ 14 MB) \n| ops pe-mom | 1 | 0 | 41 MB (+ 15 MB) | 39 MB (+ 15 MB)\n| ops pe-mom | 5 | 0 | 85 MB (+ 45 MB) | 82 MB (+ 43 MB)\n| ops pe-mom | 1 | unlimited | 41 MB (+ 15 MB) | 39 MB (+ 15 MB)\n| ops pe-mom | 5 | unlimited | 54 MB (+ 22 MB) | 52 MB (+ 21 MB)\n\nFor JRubyPuppet instances beyond the first one, JRuby 9k consumes about 93% more than JRuby 17 for \u201csmall\u201d catalogs in the first environment, about 67% more than JRuby 17 for \u201cops pe-mom\u201d catalogs.\n\n3) Memory incurred per a number of catalog compilations in multiple environments for a single JRubyPuppet instance.\n\n|| Catalog || Num Compiles per Environment || Env Timeout || 1st Environment || Per-Additional Environment\n| empty | 5 | 0 | 11 MB (+ 6 MB) | 800 KB (+ 800 KB)\n| empty | 5 | unlimited | 10 MB (+ 5 MB) | 2 MB (+ 600 KB)\n| small | 5 | 0 | 44 MB (+ 22 MB) | 4 MB (+ 4 MB)\n| small | 5 | unlimited | 31 MB (+ 15 MB) | 7 MB (+ 1 MB)\n| ops pe-mom | 5 | 0 | 84 MB (+ 44 MB) | flat (+ 0 MB)\n| ops pe-mom | 5 | unlimited | 54 MB (+ 21 MB) | 15 MB (+ 700 KB) \n\nFor additional environments beyond the first one, JRuby 9k\u2019s memory consumption seems to be fairly similar to that of JRuby 1.7 for most catalog types.  For the \u201csmall\u201d catalog with an \u201cenvironment_timeout\u201d of \u201c0\u201d, additional environments are 4 MB more expensive for some reason.  This behavior is not present with the more complex \u201cops pe-mom\u201d catalog, though, where the memory usage is fairly similar between 9k and 1.7 for additional environments with the \u201cenvironment_timeout\u201d setting of \u201c0.\u201d. \n\n4) Memory incurred per relocation of an environment from one JRubyPuppet instance to a separate JRubyPuppet instance.\n\n|| Catalog || Env Timeout || Base JRubyPuppet Overhead || 1st Catalog Compile Overhead || 2nd and Latest Catalog Compile Overhead || Extra Environment in Same JRuby Overhead || Additional JRubyPuppet over Environment increase\n| ops pe-mom | 0 | 48 MB (+ 13 MB) | 39 MB (+ 15 MB) | 43 MB (+ 28 MB) | flat | 130 MB (+ 56 MB)\n| ops pe-mom | unlimited | 48 MB (+ 13 MB) | 39 MB (+ 15 MB) | 13 MB (+ 6 MB) | 15 MB (+ 700 KB) | 85 MB (+ 33 MB)\n| small | 0 | 48 MB (+ 13 MB) | 29 MB (+ 13 MB) | 15 MB (+ 9 MB) | 4 MB (+ 4 MB) | 88 MB (+ 32 MB)\n| small | unlimited | 48 MB (+ 13 MB) | 29 MB (+ 13 MB) | 2 MB (+ 2 MB) | 7 MB (+ 1 MB) | 72 MB (+ 28 MB)\n| empty | 0 | 48 MB (+ 13 MB) | 10 MB (+ 5 MB) | 1 MB (+ 1 MB) | 800 KB (+ 800 KB) | 58 MB (+ 19 MB)\n| empty | unlimited | 48 MB (+ 13 MB) | 10 MB (+ 10 MB) | 0 MB (+ 0 MB) | 2 MB (+ 600 KB) | 56 MB (+ 17 MB)\n\nAgain, JRuby 9k\u2019s memory consumption is significantly greater than is the memory consumption of JRuby 1.7, both for \u201cenvironment_timeout\u201d when set to \u201c0\u201d vs. \u201cunlimited\u201d - about 77% more expensive for the \u201cops pe-mom\u201d catalog with a setting of \u201c0\u201d and 57% more expensive for the \u201csmall\u201d catalog with a setting of \u201c0\u201d.  ", "created": "2016-07-18T18:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to \"reviewing\" so that you have a chance to take a look at it. Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-07-18T18:34:00.000000"}], "components": [], "created": "2016-07-08T11:36:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a5f33ef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7fnz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_368958188_*|*_3_*:*_1_*:*_433830612_*|*_10009_*:*_1_*:*_76766315_*|*_5_*:*_1_*:*_6028656440_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_86315990"}], "description": "This ticket would cover doing the scenarios described in other tickets in the memory usage epic, SERVER-1377, but with Puppet Server using JRuby 9K instead of JRuby 1.7, the version used for all of the other measurements taken so far.", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "16807", "fixedVersions": ["None"], "id": "16807", "issueType": "Task", "key": "SERVER-1415", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-07-19T15:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Repeat memory usage tests with JRuby 9K", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Three +1s on the PR.", "created": "2016-07-11T12:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] can we close this ticket out now?  [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] I dunno if it makes sense to put a fix version on this, but you could if you wanted to.", "created": "2016-07-19T14:15:00.000000"}], "components": ["DOCS"], "created": "2016-07-08T11:27:00.000000", "creator": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65f74d7a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7fnb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_46552_*|*_10007_*:*_1_*:*_950460534_*|*_3_*:*_1_*:*_5572226_*|*_10009_*:*_1_*:*_8083997_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2154"}], "description": "At least one of the log paths listed is incorrect: https://docs.puppet.com/puppetserver/latest/services_master_puppetserver.html#logging\n\nFor 201*.*, the PE log path is listed as `/var/log/pe-puppetserver/puppetserver.log`, but should be `/var/log/puppetlabs/puppetserver/puppetserver.log`.\n\nProbably other paths also need to be updated, but I don't know about those.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15648", "fixedVersions": ["SERVER 2.5.0"], "id": "15648", "issueType": "Bug", "key": "SERVER-1414", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "resolution": "Fixed", "resolutionDate": "2016-07-19T15:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Documented log paths are incorrect", "timeSpent": "PT0S", "updated": "2016-08-10T16:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-12T14:42:00.000000", "name": "catalog-pe-mom1-prod.ops.puppetlabs.net-group-by-environment-1-jruby-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10804"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-12T14:42:00.000000", "name": "catalog-pe-mom1-prod.ops.puppetlabs.net-group-by-environment-1-jruby-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10735"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-13T17:42:00.000000", "name": "catalog-pe-mom1-prod.ops.puppetlabs.net-group-by-jruby-1-env-1-catalog-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10956"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-13T17:42:00.000000", "name": "catalog-pe-mom1-prod.ops.puppetlabs.net-group-by-jruby-1-env-1-catalog-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10879"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-12T14:41:00.000000", "name": "catalog-pe-mom1-prod.ops.puppetlabs.net-group-by-jruby-1-env-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11120"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-12T14:41:00.000000", "name": "catalog-pe-mom1-prod.ops.puppetlabs.net-group-by-jruby-1-env-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11039"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-12T14:42:00.000000", "name": "catalog-pe-mom1-prod.ops.puppetlabs.net-one-jruby-one-environment-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10955"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-12T14:42:00.000000", "name": "catalog-pe-mom1-prod.ops.puppetlabs.net-one-jruby-one-environment-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10878"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I made a few more [changes to the memmeasure tool|https://github.com/camlow325/puppetserver-memmeasure/commit/03f250d7acec13a041b74ab9c3ca0f61525b4295] to support the ability to run scenarios for an \"Ops catalog\".  The changes primarily had to do with externalizing more of the options for setting node names, etc. in the scenario tool and wrapping run.sh script.\n\nI did the following steps to setup an \"Ops catalog\" manually for use with the memmeasure tool:\n\n1. Cloned the https://github.com/puppetlabs/test-catalogs-large-files repo.\n\n2. Under the {{ops-environment-2015.12.07}} directory in the cloned repo, cat the {{ops_environment}} tarball pieces back together:\n\n{code:bash}\ncd ops-environment-2015.12.07\ncat ops_environments.tar.gz.* > ops_environment.tar.gz\n{code}\n\n3. In a clone of the memmeasure tool repo, removed the {{./target}} directory.\n\n4. Created the code and conf directories in the memmeasure tool repo.\n\n{code:bash}\nmkdir ./target/master-code-dir\nmkdir ./target/master-conf-dir\n{code}\n\n5. Extracted the {{ops_environment.tar}} from the {{test-catalog-large-files}} repo into the memmeasure tool repo {{./target/master-code-dir}}:\n\n{code:bash}\ntar xvf ops_environments.tar -C <memmeasure_dir>/target/master-code-dir\n{code}\n\n6. Remove symbolic links from the environment directory content.\n\nThe memmeasure tool does a full directory copy via Clojure/Java of an environment for tests that involve exercising more than one environment.  The method it uses for this doesn't handle the presence of symbolic links in the files being copied.  The Ops module code has symlinks in a few places - mostly to share code for the debbuilder content among Debuntu installations and for \"files\" directories under the module \"spec\" directories.  Neither seemed critical to performing Ops catalog compilations for this ticket, so I just removed them by running this command from the root of the memmeasure tool repo:\n\n{code:bash}\nfind ./target/master-code-dir/environments -type l | xargs rm\n{code}\n\n7. Copied the {{hiera.yaml}} and {{puppet.conf}} files from the {{ops-environment-2015.12.07}} directory {{test-catalog-large-files}} repo into the appropriate directories in the memmeasure tool repo:\n\n{code}\ncp puppet.conf <memmeasure_dir>/target/master-conf-dir\ncp hiera.yaml <memmeasure_dir>/target/master-code-dir\n{code}\n\n8. Made the following changes to the {{puppet.conf}} file:\n\na. Commented out each of the following settings:\n\n- basemodulepath\n- node_terminus\n- storeconfigs\n- storeconfigs_backend\n\nThese were done to eliminate the use of PE-specific extensions not available when the memmeasure tool is installed on a bare machine (without PE).\n\nb. Changed the `environmentpath` setting to the location of the \u201cenvironments\u201d directory under the memmeasure repo\u2019s target directory:\n\n{code:ini}\nenvironmentpath = <memmeasure_dir>/target/master-code-dir/environments\n{code}\n\n9. Made the following changes to the {{hiera.conf}} file:\n\na. Commented out the following settings:\n\n- `eyaml` under `:backends`\n- Entire `:eyaml` section\n\nThis was done, for simplicity, to avoid having to setup the hiera-eyaml gem and dependencies - as well as supporting private/public keys.\n\nb. Changed the {{:yaml:.:datadir:}} setting to point to the location under the memmeasure repo\u2019s target directory where hiera yaml files reside:\n\n{code:yaml}\n:datadir: <memmeasure_dir>/target/master-code-dir/environments/%{environment}/extdata/\n{code}\n\n10. Copied the {{./dev/puppetserver.conf}} file in the memmeasure repo to a different file, for later customization of settings needed to perform Ops catalog compiles:\n\n{code:bash}\ncp ./dev/puppetserver.conf ~/puppetserver-ops.conf\n{code}\n\n11. Made the following modifications to the {{puppetserver-ops.conf}} file:\n\na. Added two paths to the {{jruby-puppet.ruby-load-path}} setting, resulting in the following set of paths:\n\n{code:hocon}\nruby-load-path: [./ruby/puppet/lib,\n                 ./ruby/facter/lib,\n                 ./ruby/hiera/lib,\n                 ./target/master-code-dir/environments/production/dist/ruby/lib,\n                 ./target/master-code-dir/environments/production/modules/ldapquery/lib]\n{code}\n\nThis was necessary since the custom environment-specific Ruby code isn\u2019t automatically pluginsync\u2019d as part of the memmeasure tool run, as it otherwise would be if a real agent run on the master were to occur.\n\nb. Made the {{jruby-puppet.gem-home}} path fully-qualified, still pointing to the same location under the memmeasure tool\u2019s target subdirectory:\n\n{code:hocon}\ngem-home: <memmeasure_dir>/target/jruby-gems\n{code}\n\nThe above is necessary to support custom gem installation in the next step.\n\n12. In a clone of the puppetserver repo, run the following:\n\n{code:bash}\nlein gem --config ~/puppetserver-ops.conf -- install net-ldap -v 0.12.1\n{code}\n\nNote that if you try to just install \u2018net-ldap\u2019 with no version qualifier, the latest which is found from a gem mirror may fail to install due to not being compatible with pre-Ruby v2 whereas puppetserver currently uses JRuby 1.7.X under Ruby 1.9.3.\n\n--\n\nTo perform the full set of memory scenarios with the Ops catalog in place, I ran the following command - from the root of the memmeasure tool repo:\n\n{code:bash}\n./dev/run.sh -i -f ~/puppetserver-ops.conf -c 10 -j 10 -r 10 -n pe-mom1-prod.ops.puppetlabs.net,profile::repo::params -e production\n{code}\n\nThe scenarios run with this command line perform catalog compilations similar to how an agent running on the Puppet OPS Master-of-Masters would, at least when running with Open Source Puppet Server and without any PuppetDB integration.", "created": "2016-07-12T10:06:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Several result scenario files are attached, which include a re-run of prior developed scenarios for an Ops catalog, simulating the catalog response that an agent running on the Puppet Ops Master-of-Masters would receive.\n\nThe following versions of code were in use for this run:\n\n* puppetserver-memmeasure tool - [03f250d|https://github.com/camlow325/puppetserver-memmeasure/commit/03f250d7acec13a041b74ab9c3ca0f61525b4295]\n* puppetserver_perf_control repo - [f8342b7|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/f8342b7d926575a05cbcee413dab2d33d8e1866d]\n* Puppet Server - 2.4.0\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)\n\nHere are some observation from the results.  Results from [this comment|https://puppet.atlassian.net/browse/SERVER-1393?focusedCommentId=320819&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-320819] have been included below for comparison purposes.\n\n1) Memory consumed was significantly higher for the Ops catalog, \"pe-mom\", than for the prior \u201csmall\u201d catalog - 16 - 17 MB per JRubyPuppet instances beyond the first one.  The discrepancy between memory usage for an individual catalog type for the \u201cenvironment_timeout\u201d \u201c0\u201d vs. \u201cunlimited\u201d, however, does not appear to be significantly different - only about 7 MB for the pe-mom catalog vs. 6 MB for the small catalog.  This suggests that the extra memory consumed for \u201cenvironment_timeout\u201d \u201c0\u201d vs. \u201cunlimited\u201d does not significantly vary per the size of the catalog being compiled.\n\n|| Catalog || Num Compiles per JRuby || Env Timeout || 1st JRuby || Per-Additional JRubyPuppet\n| small | 1 | 0 | 16 MB | 15 MB\n| small | 10 | 0 | 22 MB | 21 MB\n| small | 1 | unlimited | 16 MB | 15 MB\n| small | 10 | unlimited | 16 MB | 15 MB\n| ops pe-mom | 1 | 0 | 26 MB | 25 MB\n| ops pe-mom | 10 | 0 | 40 MB | 38 MB\n| ops pe-mom | 1 | unlimited | 26 MB | 25 MB\n| ops pe-mom | 10 | unlimited | 32 MB | 31 MB\n\n2) With the \u201cenvironment_timeout\u201d \u201cunlimited\u201d setting, memory usage is significantly higher per-environment added to an individual JRubyPuppet instance (14 MB) for the ops pe-mom catalog vs. the \u201csmall\u201d catalog (6 MB).  Again, as with the \u201csmall\u201d catalog compiles, \u201cenvironment_timeout\u201d \u201c0\u201d compiles appear to not incur extra memory for each additional environment beyond the first which is added to a JRubyPuppet instance. \n\n|| Catalog || Num Compiles per Environment || Env Timeout || 1st Environment || Per-Additional Environment\n| small | 10 | 0 | 22 MB | flat\n| small | 10 | unlimited | 16 MB | 6 MB\n| ops pe-mom | 10 | 0 | 40 MB | flat\n| ops pe-mom | 10 | unlimited | 32 MB | 14 MB\n\n3) Overall, the gap between the incremental memory required to house an environment in a separate JRubyPuppet instance vs. just having that environment instance live in a JRubyPuppet instance alongside other environments further widens with the larger ops pe-mom catalog.\n\nWith the \u201csmall\u201d catalog and an \u201cenvironment_timeout\u201d setting of \u201cunlimited\u201d, an extra 44 MB is required to relocate an environment to another JRubyPuppet instance.  With the ops pe-mom catalog, this grows to 52 MB (+ 8 MB).  The growth rate is even more significant with an \u201cenvironment_timeout\u201d setting of \u201c0\u201d - 56 MB (for the \u201csmall\u201d catalog) vs. 73 MB (for the ops pe-mom catalog) (+ 17 MB).\n\n|| Catalog || Env Timeout || Base JRubyPuppet Overhead || 1st Catalog Compile Overhead || 2nd and Latest Catalog Compile Overhead || Extra Environment in Same JRuby Overhead || Additional JRubyPuppet over Environment increase\n| ops pe-mom | 0 | 35 MB | 25 MB | 13 MB | flat | 73 MB\n| ops pe-mom | unlimited | 35 MB | 25 MB | 6 MB | 14 MB | 52 MB\n| small | 0 | 35 MB | 15 MB | 6 MB | flat | 56 MB\n| small | unlimited | 35 MB | 15 MB | 0 | 6 MB | 44 MB\n| empty | 0 | 35 MB | 4 MB | 0 | flat | 39 MB\n| empty | unlimited | 35 MB | 4 MB | 0 | 700 KB | 38.5 MB\n\nOne interesting difference with the \u201cpe-mom\u201d vs. the \u201csmall\u201d catalog compilation scenarios is that for the \u201cenvironment_timeout\u201d \u201cunlimited\u201d value, there is an incremental memory overhead for the second catalog compile made for the \u201cpe-mom\u201d catalog (6 MB) whereas there was no incremental overhead for the second catalog compile for the \u201csmall\u201d catalog.  From analyzing this with JRuby\u2019s reify classes feature enabled, I saw that a fair number of RGen.MetamodelBuilder.MMBase objects (19249) were retained after the second catalog compilation - but not after any additional catalog compilations.  The MMBase objects are held via Puppet.Parser.AST.* objects.\n\nAlso, it is interesting that the rough memory increase per the second catalog compile when \u201cenvironment_timeout\u201d is set to \u201c0\u201d is about the same as the corresponding memory increase for each additional environment added to an existing JRubyPuppet instance - about 14 MB for the \u201cops pe-mom\u201d, 6 MB for the \u201csmall\u201d catalog.  This may not be enough evidence to say that there is a correlation between these two numbers.", "created": "2016-07-12T17:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to \"reviewing\" so that you have a chance to take a look at it. Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-07-12T17:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "so, the tl", "created": "2016-07-13T11:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}1. The memory requirements for an environment when environment_timeout = unlimited do indeed vary based on the size of the catalog? And not just based on the number/size of modules in the environment? Or do we actually have enough evidence to assert this, since you did these tests using a different environment / set of modules than the earlier tests?{quote}\n\nThe part about varying based on the size of the catalog sounds right to me.\n\nI'm not sure about the \"And not just based on the number/size of modules in the environment\" part of that.  The memory requirements definitely appear to go up as more module content is pulled into the compilation for a node.  From the earlier experiments with \"empty\" vs. \"small\" from the perf_control repo, I saw that for exactly the same module / manifest code on disk for the environment that memory requirements went up significantly for the node that was classified to use more of the content, the \"small\" node, vs. the one that used much less of it, the \"empty\" node.  I only tested compilations for one node with the Ops code - the MoM agent - but I'm assuming that if I tested with nodes using different classifications with the Ops code that I'd see a similar effect.\n\nThe Ops module definitely exercises more code paths than would the perf_control repo compilations - including Hiera, custom parser functions, a gem (net-ldap), etc.  I didn't try to separate the degree to which the extra Ruby code exercised would exacerbate the increase in resident memory usage vs. just that of the parsed AST objects from the module code.\n\n{quote}2. There is an extra memory cost for loading a second environment in an isolated JRuby instance, as opposed to loading two environments in the same Jruby instance - above and beyond the memory required for the JRuby interpreter and the Puppet Ruby code. The amount of memory there appears to be relative to the size of the catalog.{quote}\n\nYes, that sounds right from what I've observed.\n\n{quote}3. It's possible that there is some correlation between that extra memory usage and the anomalous memory usage you are seeing with environment_timeout = 0, as described in SERVER-1393?{quote}\n\nFrom the data I've seen, there might be a correlation between the extra memory consumed when:\n \n- adding an extra environment to a JRubyPuppet instance that already has an environment and environment_timeout = unlimited\".\nvs.\n- compiling a 2nd or later catalog when environment_timeout = 0.\n\nI don't see any obvious correlation between the seemingly anomalous memory usage from the 2nd or later catalog compile when environment_timeout = 0 vs. the overall base overhead, though, that seems to come with doing an initial catalog compile in the first environment for a JRubyPuppet instance (irrespective of the value of the environment_timeout setting).\n\nThis correlation may be obscure enough that it's not worth spending more time speculating about?", "created": "2016-07-13T11:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\nI'm not sure about the \"And not just based on the number/size of modules in the environment\" part of that. The memory requirements definitely appear to go up as more module content is pulled into the compilation for a node.\n{quote}\n\nWhat I'm asking is: does the amount of module code on disk affect the memory usage, regardless of which bits are and aren't pulled into the catalog?  And I'm saying that I don't think that comparing \"small\" vs \"pe-mom\" answers that question, since the module code on disk is different for those two environments.  It might be worth doing an 'empty' run using your ops environment to answer this question... but that can go in another ticket and I'm not totally sure how urgent it is.", "created": "2016-07-13T11:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I went ahead and ran the extra experiment and listed summarized results below, in-line with the previous numbers.  For these experiments, I copied over the [site.pp|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/blob/f8342b7d926575a05cbcee413dab2d33d8e1866d/manifests/site.pp] and [empty.pp|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/blob/f8342b7d926575a05cbcee413dab2d33d8e1866d/site/role/manifests/by_size/empty.pp] from the perf_control repo on top of an installation of the Ops module code as described in other comments on this ticket.  So the environment content from the Ops code was largely in place but effectively dormant because the \"empty\" catalogs that I had the scenarios exercise did not include most of it.\n\nResults are below but the tl", "created": "2016-07-13T16:15:00.000000"}], "components": [], "created": "2016-07-08T10:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29a1ec44"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7fi7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_86179_*|*_3_*:*_1_*:*_370337577_*|*_10009_*:*_1_*:*_65229285_*|*_5_*:*_1_*:*_6561151446_*|*_6_*:*_1_*:*_0"}], "description": "This ticket would cover doing the scenarios described in other tickets in the memory usage epic, SERVER-1377, but for compilations with the Ops catalog vs. just the small / empty catalogs from the puppetserver_perf_control repo.  The primary intention would be to assess whether the memory usage trend described in [this comment|https://puppet.atlassian.net/browse/SERVER-1393?focusedCommentId=320819&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-320819] from SERVER-1393 - where the overhead of relocating an extra environment in one JRubyPuppet instance to another JRubyPuppet instance seems to grow by a factor of the size of the catalog being compiled - continues when a significantly larger catalog is being compiled.", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "16453", "fixedVersions": ["None"], "id": "16453", "issueType": "Task", "key": "SERVER-1413", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-07-13T11:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Repeat memory usage tests with \"Ops catalog\"", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The solution from RE-7610/EZ-89 (which is available in  EZBake 1.0) should install the gems as gems, in the default gem path, so at this time it doesn't seem like it will be necessary to modify the GEM_PATHS", "created": "2016-09-30T08:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I've got a branch where I'm playing with the new support for packaging gems that [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] added to ezbake.  It seems to be working fine so far.\n\nI built two puppetserver packages, one with hocon 1.1.0 and one with hocon 1.1.2.  I validated that the correct version shows up with {{puppetserver gem list}}, and I used yum upgrade/downgrade to switch back and forth between the two puppetserver rpms several times - it seemed like the gem went back and forth just fine, as expected.\n\nAfter thinking about all this a bit more though, I do think it would be good (important?  perhaps critical?) to isolate these \"vendored\" gems from any gems that the user might install.  So, my plan is to have the packaged gems install to a separate path, and then add this path to GEM_PATH in puppetserver.  I'll leave GEM_HOME as-is so that user gems will go to the same directory they always have.\n\nI also intend to make GEM_PATH configurable in the {{puppetserver.conf}} file, so that users can opt out of our (pinned) versions of the gems that we ship with if they like.  (Of course, everything will break for them if they remove our vendored gem dir from the path without installing replacements for those gems somewhere else in the GEM_PATH, but that seems fine, and we can document it.)\n\nWe may also need to document that if a user already has one of our vendored gems installed in GEM_HOME with an existing version of puppetserver, and they upgrade to this one... i guess they'll just have multiple versions of that gem installed.  I'll test this out.\n\nI may also spend a minute experimenting with putting the gem installation logic into a shell script and then calling that from the {{install}} step in the ezbake config, to reduce duplication.\n\n[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] any gotchas I should look out for on that last part?  Or any other concerns about the plan laid out above?\n\n[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] [~accountid:623c0e7494742a00683e3f3f] for this pass I'm currently just working on installing semantic_puppet 0.1.2 and hocon 1.1.2.  If there's anything else that should be on that list right this minute, lmk.  Otherwise we can always add more later.", "created": "2016-09-30T12:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I've proven out an approach that installs the packaged gems into {{vendored-jruby-gems}}, and puts both that and {{jruby-gems}} on the GEM_PATH.  This seems to work just fine.  Subsequent calls to {{puppetserver gem install}} go to {{jruby-gems}}, as expected.  If you install hocon into {{jruby-gems}} either before upgrading to this new version of puppetserver, or after, then {{gem list}} just shows two versions of Hocon installed, just like it would under MRI.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] anything that sounds crazy to you about this path before I go ahead and flesh out the PR?", "created": "2016-09-30T14:08:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I'm definitely in favor of having the separate directory for our vendored gems vs. the default user install directory and including both in the GEM_PATH.\n\nI also like the idea of having the gem install logic in a separate installation script.  Might be nice to have that available for rebuilding your vendored gem directory by sourcing the script directly without having to uninstall/reinstall the whole package.\n\nHow are you thinking you'd handle the default value for the new GEM_PATH puppetserver.conf directory for users doing upgrades?  I'd be leery of making it a required setting because of the problems we typically see around users upgrading with a config that was modified from the default.  Maybe we could default it to the value in the current {{jruby-puppet.gem-home}} setting + a hardcoded value for the new directory path where we expect the vendored ones to live?", "created": "2016-09-30T14:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I have a puppetserver branch here:\n\nhttps://github.com/puppetlabs/puppetserver/compare/master...cprice404:feature/master/SERVER-1412-package-gems?expand=1\n\nwhich, in combination with the ezbake changes in this branch:\n\nhttps://github.com/puppetlabs/ezbake/pull/370\n\nwill allow us to extract the gem list out to a file, and use a shell script to do the installation in a loop, similar to what [~accountid:557058:ad2090d1-8a61-4530-9228-7d89570c23b7] was proposing in Rob's POC PR.  This would also allow us to have the {{dev-setup}} script read the gem list from the same file and do the installation that way, to avoid duplication.", "created": "2016-09-30T17:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] re: your questions above:\n\n1. I do not intend to include the script for populating the gem directory in the packaging - if a user screws up that directory, they're on their own in the same way they would be if they deleted our jar file.\n2. Yes, I am planning on making gem-path optional and defaulting it the way that you described, because I do not want to cause upgrade issues.", "created": "2016-10-03T13:10:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Could you add release notes for this ticket?", "created": "2016-11-07T12:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Done.", "created": "2016-11-07T12:52:00.000000"}], "components": [], "created": "2016-07-07T14:55:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ba6792b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1577"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyms27:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Some gems are required by both puppet-agent and Puppet Server.  To help facilitate this and allow us to ship these gems as part of our packaging, we've made some small changes to how Puppet Server looks for gems.\n\nPreviously, Puppet Server's {{GEM_PATH}} was comprised of only a single directory (which defaulted to {{/opt/puppetlabs/server/data/puppetserver/jruby-gems}}.  This directory was also used as the value for {{GEM_HOME}}, meaning that the {{puppetserver gem install}} command would install user's gems to this directory.\n\nIn Puppet Server 2.7.0, we've added a second path to {{GEM_PATH}}: {{/opt/puppetlabs/server/data/puppetserver/vendored-jruby-gems}}.  Gems that are known to be needed by Puppet Server will be installed in this directory as part of the Puppet Server packaging.\n\n{{GEM_HOME}} still points to the same directory as it did in previous releases, and user-installed gems will continue to be installed (and used) from that directory.\n\nNote that the GEM_PATH can now be configured via a new {{gem-path}} setting in puppetserver.conf."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_349385863_*|*_1_*:*_1_*:*_502535673_*|*_10007_*:*_1_*:*_920746205_*|*_3_*:*_1_*:*_291425410_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6830401155"}], "description": "Once RE-7610 is sorted out, we'll probably need to make some changes in Puppet Server to account for the secondary location for gems.  Hopefully this won't be much more than adding a default value for GEM_PATHS and making it configurable, but we can add more detail on this ticket once that one has progressed further.", "epicLinkSummary": "puppetserver gem packaging", "estimate": "PT0S", "externalId": "15899", "fixedVersions": ["SERVER 2.7.0"], "id": "15899", "issueType": "Task", "key": "SERVER-1412", "labels": [], "originalEstimate": "PT0S", "parent": "16793", "parentSummary": "puppetserver gem packaging", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-10-18T13:37:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Package gems for puppetserver via ezbake", "timeSpent": "PT0S", "updated": "2017-01-19T12:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I created a few beaker acceptance tests as part of the work for SERVER-1490, which now has a PR up for review - https://github.com/puppetlabs/puppetserver/pull/1226.  I think those tests satisfy the original intention of this ticket so I'm going to close this one out.", "created": "2016-09-29T15:10:00.000000"}], "components": ["Puppet Server"], "created": "2016-07-06T11:34:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74f451d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1237"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyncw7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_600822800_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6756170790"}], "description": "Create an acceptance test validate the integration work done in SERVER-1237.", "epicLinkSummary": "HUP service / ezbake integration", "estimate": "PT0S", "externalId": "17327", "fixedVersions": ["SERVER 2.7.0"], "id": "17327", "issueType": "Bug", "key": "SERVER-1410", "labels": [], "originalEstimate": "PT0S", "parent": "16403", "parentSummary": "HUP service / ezbake integration", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Duplicate", "resolutionDate": "2016-09-29T15:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create acceptance test for HUP/ezbake integration", "timeSpent": "PT0S", "updated": "2016-10-13T11:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "It looks like the test that is failing is running a ruby script on the master, using the master's built-in ruby. (https://github.com/puppetlabs/puppet/blob/9abd56a96ebb43d4bfa80fc0996a73f98ba88554/acceptance/tests/security/cve-2013-1653_puppet_kick.rb#L16)\n\nFrom talking to [~accountid:557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d] on hipchat, it sounds like on Friday ubuntu 12.04 vmpooler images were switched to use packer. It seems likely that something in this change caused this test to start failing, as the timing matches up and nothing else seems to have changed.", "created": "2016-07-05T14:09:00.000000"}, {"author": "557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d", "body": "It appears to be caused by updated templates missing the 'rubygems' package.\n\nPrevious templates:\n\n12.04\n{noformat}root@6k355lif8rewu5q:~# dpkg -l | grep ruby\nii  libruby1.8                       1.8.7.352-2ubuntu1.4              Libraries necessary to run Ruby 1.8\nii  ruby                             4.8                               Transitional package for ruby1.8\nii  ruby-dev                         4.8                               Transitional package for ruby1.8-dev\nii  ruby1.8                          1.8.7.352-2ubuntu1.4              Interpreter of object-oriented scripting language Ruby 1.8\nii  ruby1.8-dev                      1.8.7.352-2ubuntu1.4              Header files for compiling extension modules for the Ruby 1.8\nii  rubygems                         1.8.15-1ubuntu0.1                 package management framework for Ruby libraries/applications\n{noformat}\n\n14.04\n{noformat}root@fwlrt382v49ezub:~# dpkg -l | grep ruby\nrc  libruby1.8                          1.8.7.358-8ubuntu3            amd64        Libraries necessary to run Ruby 1.8\nii  libruby1.9.1                        1.9.3.484-2ubuntu1            amd64        Libraries necessary to run Ruby 1.9.1\nii  ruby                                1:1.9.3.4                     all          Interpreter of object-oriented scripting language Ruby (default version)\nii  ruby-dev                            1:1.9.3.4                     all          Header files for compiling extension modules for Ruby (default version)\nrc  ruby1.8                             1.8.7.358-8ubuntu3            amd64        Interpreter of object-oriented scripting language Ruby 1.8\nii  ruby1.9.1                           1.9.3.484-2ubuntu1            amd64        Interpreter of object-oriented scripting language Ruby\nii  ruby1.9.1-dev                       1.9.3.484-2ubuntu1            amd64        Header files for compiling extension modules for the Ruby 1.9.1\nrc  rubygems                            1.8.24-1ubuntu2               all          package management framework for Ruby libraries/applications\n{noformat}", "created": "2016-07-05T14:57:00.000000"}, {"author": "557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d", "body": "Updated packer definitions and rebuilt to include rubygems package.  ", "created": "2016-07-11T12:44:00.000000"}, {"author": "557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d", "body": "Pipeline is happy again \\o/\n[https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_full-1.x/95/]", "created": "2016-07-12T10:41:00.000000"}], "components": ["Puppet Server"], "created": "2016-07-05T11:17:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Platforms"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7541e54b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn3af:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CI Blocker"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_200719_*|*_1_*:*_1_*:*_9518_*|*_10007_*:*_1_*:*_79386106_*|*_3_*:*_1_*:*_192299332_*|*_5_*:*_1_*:*_6651886540_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_331103736_*|*_10006_*:*_1_*:*_9351"}], "description": "Ubuntu 12.04 of puppet server 1.x acceptance has been failing for the past 4 runs (since July 1) with\n\n{code}\nc2plmnmuj5pjrv3.delivery.puppetlabs.net (ubuntu1204-64-1) executed in 0.01 seconds\nExited: 1\n#<Beaker::Host::CommandFailure: Host 'c2plmnmuj5pjrv3.delivery.puppetlabs.net' exited with 1 running:\n  /tmp/puppet-kick-auth.w9MRiO/exploit.rb  \nLast 10 lines of output were:\n\t/tmp/puppet-kick-auth.w9MRiO/exploit.rb:2:in `require': no such file to load -- rubygems (LoadError)\n\t\tfrom /tmp/puppet-kick-auth.w9MRiO/exploit.rb:2>\n/var/lib/jenkins/workspace/platform_puppetserver_integration-system_no-conditional_full-1.x/LAYOUT/64mdca-64a/LDAP_TYPE/default/PLATFORM/ubuntu1204/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-1.21.0/lib/beaker/host.rb:250\n{code}\n\nFailing test: https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_full-1.x/83/LAYOUT=64mdca-64a,LDAP_TYPE=default,PLATFORM=ubuntu1204,label=beaker/\n\nPassing test: https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_full-1.x/82/LAYOUT=64mdca-64a,LDAP_TYPE=default,PLATFORM=ubuntu1204,label=beaker/", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15029", "fixedVersions": [], "id": "15029", "issueType": "CI Blocker", "key": "SERVER-1409", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-07-12T10:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet server 1.x acceptance tests failing on ubuntu 12.04", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Thank you for filing this issue. We agree it is likely an improvement, but due to other issues demanding precedence, we don\u2019t anticipate being able to address this any time soon. If you are interested in submitting a patch to the repository for this project at https://github.com/puppetlabs, please open a pull request and re-open this ticket. Pending that, we are closing this as \u201cWon\u2019t Fix.\u201d We may revisit it at a later time, and if so will re-open this ticket.", "created": "2017-05-16T17:55:00.000000"}], "components": [], "created": "2016-07-04T23:26:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1958d13"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7cs7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_730843179_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_26551739928"}], "description": "The fileserver functionality of puppet (https://docs.puppet.com/puppet/latest/reference/config_file_fileserver.html) follows symlinks. While this is not an issue in simple deployments, if the fileserver is used to serve files from mixed trust sources; its possible that a symlink was placed under the fileserver's root that references say /. It would then be possible to read arbitrary files as the puppet service, such as private keys and eyaml keys.\n\nWhat would be great is a fileserver.conf option to not follow symlinks. This way if the fileserver directory has a mixed trust level, an upstream compromise or other attack won't allow a compromise of puppet itself. For example, puppet's fileserver might be a NFS share mounted from a remote host. With symlinks enabled, puppet now has to fully trust the remote share and the network as NFS is vuln to MITM.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16991", "fixedVersions": [], "id": "16991", "issueType": "Improvement", "key": "SERVER-1814", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Won't Do", "resolutionDate": "2017-05-16T17:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add toggle to disable symlinks in the file server", "timeSpent": "PT0S", "updated": "2017-05-16T17:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-22T15:18:00.000000", "name": "jruby17-compile-mode-off-medium-summary.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11123"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-22T15:18:00.000000", "name": "jruby17-compile-mode-off-medium-vs-ops-diff.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11204"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-08-08T13:55:00.000000", "name": "jruby17-compile-mode-off-summary-ops-as-medium.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11124"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-08-08T13:46:00.000000", "name": "ops-jruby17-compile-mode-off-summary.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11042"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For the purposes of the work done for the \"Environment Isolation Memory Analysis\" epic, SERVER-1377, this ticket didn't end up being necessary.  In SERVER-1413, we took some memory measurements for a catalog larger than the \"small\" one in the perf_control repo - a \"pe-mom\" catalog based on our Ops team's repo.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] did end up working on a larger catalog as part of SERVER-1406.  This catalog is intended to approximate the size of the \"pe-mom\" catalog.  Where that catalog didn't end up being all that big, it is called \"medium\" instead.\n\nFor the \"medium\" catalog, I ran the memmeasure tool through the various defined scenarios and have attached a summary json file, along with a diff file highlighting the differences between the \"medium\" (base) and \"ops pe-mom\" (compare) catalogs.  These were captured only for JRuby 1.7 with \"Compile Mode\" set to OFF.\n\nThe quick takeaway is that catalog compilations in one environment / JRuby for the \"pe-mom\" appear to consume significantly more memory (about 5 MB) than those for the current \"medium\" catalogs.  I saw numbers of about 27 MB vs. 22 MB.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] filed some additional tickets, SERVER-1448 (adding hieradata / lookups) and SERVER-1449 (adding collected resources), which would likely involve filling out the \"medium\" catalog even further.  As those tickets are pursued, we can revisit the memory measurement numbers to see if the \"medium\" catalog compilations can get closer to consuming as much memory as do the \"pe-mom\" catalog compilations.", "created": "2016-07-22T15:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - moving this to \"ready for review\" so you have a chance to take a look, if you'd like, before we close it out.", "created": "2016-07-22T15:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "From a performance perspective, the \"medium\" catalog compilations seemed to take significantly less time - about 11 seconds for the initial compile, between 4-5 seconds for additional compiles in the same environment / JRuby  - than do the \"ops pe-mom\" catalog compilations - 23 seconds for the first one, between 20-21 seconds for compiles for additional ones in the same environment / JRuby.  These numbers were captured for catalog compilations done with \"Compile Mode\" set to OFF for the memory measurement tool runs.", "created": "2016-07-22T15:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The following versions of code were in use for this run:\n\n* puppetserver-memmeasure tool - [4f2a74|https://github.com/camlow325/puppetserver-memmeasure/commit/4f2a743c36407e6799e29f32d473df790aeaabd9]\n* puppetserver_perf_control repo - [536d361|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/536d361ee2e10449f870a249be0f551a26fa9072]\n* Puppet Server - 2.4.0\n* JRuby 1.7.20.1 vs. 9.1.2.0\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)", "created": "2016-07-22T15:43:00.000000"}], "components": [], "created": "2016-06-29T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30ba9d7f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz79r3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9790_*|*_3_*:*_1_*:*_1048126_*|*_10009_*:*_1_*:*_3894970_*|*_5_*:*_1_*:*_5766733845_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1998981458"}], "description": "This ticket is an extension of SERVER-1391.  The same tests and data would be captured for this ticket as was done for SERVER-1391, only the data would include the use of \"large\" catalog from the puppetlabs [perf_control repo|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control] whereas SERVER-1391 only compared a \"small\" vs. an \"empty\" catalog.  This ticket would be dependent upon the implementation of the \"large\" catalog in the control repo, covered in SERVER-1406.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16151", "fixedVersions": ["None"], "id": "16151", "issueType": "Task", "key": "SERVER-1407", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-07-22T16:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "How much memory used for \"large\" catalog vs. \"empty\" and \"small\"", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2016-07-21T07:03:00.000000", "name": "extract-catalog.rb", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11202"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "In the PR for this ticket, I've added a new role called {{by_size::medium}}.  After looking through the ops catalog that [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] gave me, it didn't seem like the most ginormous thing in the world, so I decided to call this one {{medium}} instead of {{large}}.\n\nI wrote a little tool to parse some information out of the catalogs", "created": "2016-07-21T07:02:00.000000"}], "components": [], "created": "2016-06-29T11:56:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f32fef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7lpz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_23786_*|*_1_*:*_1_*:*_30657_*|*_10007_*:*_1_*:*_110875109_*|*_3_*:*_1_*:*_230928545_*|*_5_*:*_1_*:*_5768040031_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1661060685"}], "description": "When doing some analysis of catalog compilations for different roles currently defined in the [perf_control repo|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control] - empty and small - [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and I thought that it might be good to create a \"large\" catalog that would pull in significantly more Puppet code for comparison.  This ticket would cover the work in the perf_control repo to define what the \"large\" catalog would be and implement the corresponding Puppet code for a \"large\" role in the repo.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15028", "fixedVersions": ["None"], "id": "15028", "issueType": "Task", "key": "SERVER-1406", "labels": [], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-07-22T16:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a larger catalog for the perf_control repo", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "if u do manual start like su - prod ", "created": "2016-06-29T10:51:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "1)when i checked status its running\n2)i did manual stop\n3)i ran puppet agent on omd server which is my client at that time omd got started correctly\n4)again i did manual stop on omd and ran puppet agent again to cross check\n5)checked status of omd its its in still stopped state\n\n[root@puppetagent ~]# service omd status\nChecking state of all OMD monitoring sites:\nDoing 'status' on site prod:\nrrdcached:      running\nnpcd:           running\nnagios:         running\napache:         running\ncrontab:        running\n-----------------------\nOverall state:  running\n\n[root@puppetagent ~]# service omd stop\nStopping all OMD monitoring sites:\nDoing 'stop' on site prod:\nRemoving Crontab...OK\nStopping dedicated Apache for site prod.....OK\nStopping nagios....OK\nStopping npcd...OK\nStopping rrdcached...waiting for termination...OK\n\n[root@puppetagent ~]# \n[root@puppetagent ~]# \n[root@puppetagent ~]# puppet agent -t --noop\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nNotice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo]/ensure: created\nNotice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/p4.rb]/ensure: defined content as '{md5}b324e3141913337d5592ebbcb2a7544e'\nNotice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo.rb]/ensure: defined content as '{md5}dbd72590771291f1db23a41ac048ed9d'\nNotice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/bzr.rb]/ensure: defined content as '{md5}9304caa8c45685d741248fb167c47842'\nNotice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/svn.rb]/ensure: defined content as '{md5}74ab5d60339e15cc04af0d059d0a7de6'\nNotice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/hg.rb]/ensure: defined content as '{md5}65a45f4382ed5874eeea3f2c3e0729f1'\nNotice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/dummy.rb]/ensure: defined content as '{md5}4490fb75f044bd43855b2962b8f6e301'\nNotice: /File[/var/lib/puppet/lib/puppet/type/vcsrepo.rb]/ensure: defined content as '{md5}76c6a584aac7333ed336e300dcb80aad'\nNotice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/git.rb]/ensure: defined content as '{md5}396b7947427d2fcdc9505c3d338dac0f'\nNotice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/cvs.rb]/ensure: defined content as '{md5}0fed7f40f3de82c6490ac241cea46b3a'\nInfo: Loading facts\nInfo: Caching catalog for puppetagent.test.com\nInfo: Applying configuration version '1467286062'\nNotice: /Stage[main]/Omd/Service[omd]/ensure: current_value stopped, should be running (noop)\nInfo: /Stage[main]/Omd/Service[omd]: Unscheduling refresh on Service[omd]\nNotice: Class[Omd]: Would have triggered 'refresh' from 1 events\nNotice: Stage[main]: Would have triggered 'refresh' from 1 events\nNotice: Finished catalog run in 1.86 seconds\n[root@puppetagent ~]# \n[root@puppetagent ~]# \n[root@puppetagent ~]# puppet agent -t \nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for puppetagent.test.com\nInfo: Applying configuration version '1467286062'\nNotice: /Stage[main]/Omd/Service[omd]/ensure: ensure changed 'stopped' to 'running'\nInfo: /Stage[main]/Omd/Service[omd]: Unscheduling refresh on Service[omd]\nNotice: Finished catalog run in 2.38 seconds\n[root@puppetagent ~]# service omd status\nChecking state of all OMD monitoring sites:\nDoing 'status' on site prod:\nrrdcached:      running\nnpcd:           running\nnagios:         running\napache:         running\ncrontab:        running\n-----------------------\nOverall state:  running\n\n[root@puppetagent ~]# \n[root@puppetagent ~]# service omd stop\nStopping all OMD monitoring sites:\nDoing 'stop' on site prod:\nRemoving Crontab...OK\nStopping dedicated Apache for site prod.....OK\nStopping nagios....OK\nStopping npcd...OK\nStopping rrdcached...waiting for termination...OK\n\n[root@puppetagent ~]# puppet agent -t \nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for puppetagent.test.com\nInfo: Applying configuration version '1467286062'\nNotice: Finished catalog run in 1.62 seconds\n[root@puppetagent ~]# service omd status\nChecking state of all OMD monitoring sites:\nDoing 'status' on site prod:\nrrdcached:      stopped\nnpcd:           stopped\nnagios:         stopped\napache:         stopped\ncrontab:        stopped\n-----------------------\nOverall state:  stopped\n", "created": "2016-06-30T05:51:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "Please help me out to trouble shoot it,appreciated if any one does it.", "created": "2016-06-30T05:55:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "1)Again i started omd manually \n2)ran puppet agent and i found below error\n \n                I am not sure where i am stuck \n   \n[root@puppetagent ~]# service omd start\nStarting all OMD monitoring sites:\nDoing 'start' on site prod:\nStarting rrdcached...OK\nStarting npcd...OK\nStarting nagios...OK\nStarting dedicated Apache for site prod...OK\nInitializing Crontab...OK\n\n[root@puppetagent ~]# service omd status\nChecking state of all OMD monitoring sites:\nDoing 'status' on site prod:\nrrdcached:      running\nnpcd:           running\nnagios:         running\napache:         running\ncrontab:        running\n-----------------------\nOverall state:  running\n\n[root@puppetagent ~]# puppet agent -t \nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for puppetagent.test.com\nInfo: Applying configuration version '1467286062'\nError: Could not start Service[omd]: Execution of '/usr/bin/systemctl start omd' returned 1: Job for omd.service failed because the control process exited with error code. See \"systemctl status omd.service\" and \"journalctl -xe\" for details.\nError: /Stage[main]/Omd/Service[omd]/ensure: change from stopped to running failed: Could not start Service[omd]: Execution of '/usr/bin/systemctl start omd' returned 1: Job for omd.service failed because the control process exited with error code. See \"systemctl status omd.service\" and \"journalctl -xe\" for details.\nNotice: Finished catalog run in 2.95 seconds\n", "created": "2016-06-30T06:01:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "please check my hiera configuration file as follows\n\n[root@puppetserver ~]# cat /etc/puppet/hieradata/common.yaml \n---\n\nclasses:\n  - 'epel'\n  - 'omd'\n  - 'omd::check_mk::agent'\n  - 'omd::check_mk::plugins::puppet'\n----------------------------------------------------------------\nAnd my site .pp as follows\n\n[root@puppetserver ~]# cat /etc/puppet/manifests/site.pp \nhiera_include(\"classes\")\nnode default { \n}\n", "created": "2016-06-30T06:03:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:df705ad9-1b84-496c-af18-e65c6054c588] this problem seems to be because your init script is a sysv init file but you're on an operating system whose service provider defaults to systemd. adding {{provider=>redhat}} to the service resource should help.\n\nThese are not appropriate tickets for this JIRA project or for the bug tracker more generally. Please try the mailing lists for troubleshooting the problems with your environment before filing bugs on them.", "created": "2016-06-30T10:57:00.000000"}], "components": [], "created": "2016-06-29T10:47:00.000000", "creator": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c0c3082"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz79fz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_87001349_*|*_6_*:*_1_*:*_0"}], "description": "[root@puppetagent~]# puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for puppetserver.admin.com\nInfo: Applying configuration version '1465930681'\nError: Could not start Service[omd]: Execution of '/usr/bin/systemctl start omd' returned 6: Failed to start omd.service: Unit omd.service failed to load: No such file or directory.\nError: /Stage[main]/Omd/Service[omd]/ensure: change from stopped to running failed: Could not start Service[omd]: Execution of '/usr/bin/systemctl start omd' returned 6: Failed to start omd.service: Unit omd.service failed to load: No such file or directory.\nNotice: Finished catalog run in 20.95 seconds", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16990", "fixedVersions": [], "id": "16990", "issueType": "Bug", "key": "SERVER-1404", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "resolution": "Won't Fix", "resolutionDate": "2016-06-30T10:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to start omd through puppet on agent", "timeSpent": "PT0S", "updated": "2016-06-30T10:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-06-27T03:59:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13b560a0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz77in:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_195180985_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_51590011372"}], "description": "Currently this requires:\n\n* {{! passing puppet-agent master}}\n* copy the {{SUITE_COMMIT}} from that output\n* ! vanagon puppet-agent {{SUITE_COMMIT}}\n* find {{puppet}} in the output list, copy the SHA from the end of its version number\n* Bump the submodule to that SHA\n* Bump one place in helper.rb to the {{SUITE_COMMIT}}\n* Bump another place in helper.rb to the {{SUITE_VERSION}} from the first command\n* Commit those changes, submit a PR, bug somebody to merge it.\n\nAll of that should be automated (probably in a new Jankins job), especially as long as we are going to keep the {{master}} and {{stable}} branches across the two repos. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16451", "fixedVersions": [], "id": "16451", "issueType": "Task", "key": "SERVER-1403", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Done", "resolutionDate": "2018-02-16T11:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automate the process of bumping the puppet/puppet-agent dependencies", "timeSpent": "PT0S", "updated": "2018-02-16T11:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "The logic around using {{PUPPET_VERSION}} in the pre-suite confuses me (https://github.com/puppetlabs/puppetserver/blob/master/acceptance/suites/pre_suite/foss/70_install_puppet.rb#L35-L63):\n\n{code}\n[...]\n    puppet_version = test_config[:puppet_version]\n\n    if /windows/.match(platform)\n      arch = host[:ruby_arch] || 'x86'\n      base_url = ENV['MSI_BASE_URL'] || \"http://builds.delivery.puppetlabs.net/puppet-agent/#{test_config[:puppet_build_version]}/artifacts/windows\"\n      filename = ENV['MSI_FILENAME'] || \"puppet-agent-#{arch}.msi\"\n      install_puppet_from_msi(host, :url => \"#{base_url}/#{filename}\")\n    elsif puppet_version\n      install_package host, 'puppet-agent'\n    else\n      puppet_version = test_config[:puppet_version]\n\n      variant, _, _, _ = host['platform'].to_array\n\n      case variant\n      when /^(debian|ubuntu)$/\n        puppet_version += \"-1puppetlabs1\"\n        install_package host, \"puppet-agent=#{puppet_version}\"\n      when /^(redhat|el|centos)$/\n        install_package host, 'puppet-agent', puppet_version\n      end\n[...]\n{code}\n\nI take this to mean:\n\n{code}\nset puppet_version\nif platform == windows\n    use PUPPET_BUILD_VERISON\nelse if puppet_version is set\n    install the default version  available in the repo\nelse\n    set puppet_version\n    install puppet-agent using PUPPET_VERSION\n{code}\n\nIt looks to me like we can dispense with using {{PUPPET_VERSION}} entirely, use {{PUPPET_BUILD_VERSION}}, and be confident we are installing the code we want.", "created": "2016-06-24T10:07:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "After some back and forth, we decided to let this go. As long as the Puppet version is kept in sync in the helper file (_acceptance/lib/helper.rb_) between {{puppet_version}} and {{puppet_build_version}}, we don't install unwanted versions of the agent.", "created": "2016-06-27T14:49:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] - Based on [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241]'s comment [here|https://github.com/puppetlabs/puppetserver/pull/1130#issuecomment-228853515] this stills seems worthwhile to me.  If we can get away with only bumping a single version instead of two, that would be an improvement.  I, for one, find it confusing that both of those variables exist every time I look at that file.", "created": "2016-06-28T00:49:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] This is not a particularly high priority change. The workaround, keeping the two variables in sync, is easy and much less work than fighting the byzantine logic in this test.", "created": "2016-06-29T11:49:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "fair enough", "created": "2016-06-29T11:59:00.000000"}], "components": [], "created": "2016-06-24T09:52:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cd0d30d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz76b3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_277046178_*|*_6_*:*_1_*:*_0"}], "description": "Using both {{PUPPET_VERSION}} and {{PUPPET_BUILD_VERSION}} appears to result in situations in which we wind up with unwanted versions of puppet (puppet-agent) installed on our SUTs. The particular files in mind here are _70_install_puppet.rb_ in the FOSS pre-suite and _acceptance/lib/helper.rb_.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16148", "fixedVersions": [], "id": "16148", "issueType": "Bug", "key": "SERVER-1402", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Won't Fix", "resolutionDate": "2016-06-27T14:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Resolve use of PUPPET_VERSION and PUPPET_BUILD_VERSION in acceptance pre-suite", "timeSpent": "PT0S", "updated": "2016-06-29T11:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-06-23T18:55:00.000000", "creator": "557058:2d86d754-2fbb-4e17-8e03-6e58f4f29aa4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24e3f3d4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz767r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_486957804_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_113095962332"}], "description": "Currently i18n is being added to puppetserver. The two functions used are `tru` for HTTP requests and `trs` for all else. However, there are places in the puppetserver code that takes a message and both logs and possibly sends over HTTP request. This would require both `tru` and `trs`. \n* let blocks in certificate_authority.clj that are returning the maps with 'message' in them end up bubbling up to the http response via liberator.\n* execution errors in versioned_code_core.clj may bubble up to the http response of catalog or other requests\n* slingshot exceptions also in certificate_authority.clj, where it seems like we need both tru and trs\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16989", "fixedVersions": [], "id": "16989", "issueType": "Task", "key": "SERVER-1401", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2d86d754-2fbb-4e17-8e03-6e58f4f29aa4", "resolution": "Won't Do", "resolutionDate": "2020-01-29T08:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver i18n auditing", "timeSpent": "PT0S", "updated": "2020-01-29T08:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Ah, yeah, looks like they should be fixed by [this commit in puppet|https://github.com/puppetlabs/puppet/commit/b7afdeb19e3cb323fb00c8745c0b845af9ab15cf].", "created": "2016-06-23T06:43:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Need to bump the puppet-agent package dependency version along with the puppet submodule.  However, that commit is not yet available in any puppet-agent packages which have made in through CI.  Thus, this ticket is blocked until such puppet-agent packages exist (for both master and stable) and ALL THE THINGS can be updated in puppetserver.", "created": "2016-06-23T10:54:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "The test went green on {{master}} despite any changes on my behalf or seemingly any related changes whatsoever.  I'm pretty sure this implies that we are unknowingly pulling in changes from upstream puppet into our CI pipeline, which would explain both how this job fixed itself and also how it broke in the first place.", "created": "2016-06-24T05:19:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "-... aaaand then it went red again:-https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_full-stable/92/\n\n-So, it's failing intermittently.  Which might explain things entirely and thus debunk my hypothesis that we are unknowingly pulling in upstream changes in puppet.-\n\nWRONG.\n\nThe linked job was from {{stable}}, not {{master}}.", "created": "2016-06-24T05:24:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I merged a patch into {{stable}}, it's running in Jankins here: https://jenkins.puppetlabs.com/view/puppetserver/view/stable/job/platform_puppetserver_integration-system_no-conditional_full-stable/93/", "created": "2016-06-24T08:27:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - Why is this assigned to [~accountid:557058:6713b848-54a4-4f2e-9636-a24860d9c3f2] ?", "created": "2016-06-27T03:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] I talked to [~accountid:557058:6713b848-54a4-4f2e-9636-a24860d9c3f2] and [~accountid:557058:263afade-3e4f-46c6-b50a-cf2982192562] on Friday and showed them the failure - they said it was a legit bug in the test when being run against a Ruby 1.9 interpreter (as it was in our job).  Glenn put up a PR to fix it on Friday, and I believe that it was merged.  Sounds like you may have already bumped us to a new version of puppet-agent that includes that patch?", "created": "2016-06-27T10:48:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "yep, thanks", "created": "2016-06-27T11:22:00.000000"}], "components": [], "created": "2016-06-23T06:39:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@77ba0af3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz75gf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_44496293_*|*_1_*:*_1_*:*_8461_*|*_10007_*:*_1_*:*_14202030_*|*_3_*:*_1_*:*_1131834_*|*_5_*:*_1_*:*_3978246393_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_69438149_*|*_10006_*:*_1_*:*_231000049"}], "description": "This happening on both {{master}} and {{stable}} branches.\n\nList of test failures:\n* ruby/puppet/acceptance/tests/resource/scheduled_task.should_modify.rb\n* ruby/puppet/acceptance/tests/resource/scheduled_task.should_create.rb\n* ruby/puppet/acceptance/tests/resource/scheduled_task.should_query.rb\n\nStrangely, only happening on certain platforms.\n\n\n* https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_full-master/94/\n* https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_full-stable/90/\n\nI think this is caused by PUP-3768 and I hope that updating the {{puppet}} submodules in both of those branches will pull in changes to the beaker tests which will cause them to pass.  But that is sort of a shot in the dark.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16806", "fixedVersions": ["SERVER 2.5.0"], "id": "16806", "issueType": "CI Blocker", "key": "SERVER-1400", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-06-27T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet's scheduled_task beaker tests are failing in puppetserver CI", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I don't think we want puppetserver to fail to start if its cert is expired. I'd prefer that we add an option to the agent to accept expired certs (as an opt-in thing).", "created": "2018-02-15T15:38:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "We'll look at what we should do with stuff like this as part of the Puppet 6 work, but we're not going to work on this as described.", "created": "2018-03-27T12:44:00.000000"}], "components": ["Certificate Authority"], "created": "2016-06-22T09:55:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@392a76b2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyncwv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_866445_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_55564433261"}], "description": "Puppetserver configured as a CA will start with an expired CA cert, which seems to defeat the point of being a CA.\n\n# Generate an expired CA cert\n# Install a puppetserver master and a standalone agent\n# Stop the server, replace the working CA cert with the expired CA cert\n# Restart the server\n# Run {{puppet agent --test}} on the standalone agent, see complaint about an expired CA cert\n\nI was expecting the server not to start, or at least complain about the expired CA cert. It does neither. Not sure if this is a bug or a feature. It feels like a bug that a master configured as a CA starts in a configuration that doesn't permit it to work as a CA.", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "16988", "fixedVersions": [], "id": "16988", "issueType": "Bug", "key": "SERVER-1399", "labels": [], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Won't Fix", "resolutionDate": "2018-03-27T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server starts with expired CA cert", "timeSpent": "PT0S", "updated": "2018-03-27T12:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "both platforms failed the rerun.  Perhaps this is a problem related to the somewhat-recent addition of Xenial as a supported platform.  I'm not sure how to proceed.\n\n[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] - You mentioned something about Xenial recently ... anything ringing a bell here?", "created": "2016-06-16T05:05:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "aaand now the same thing happened on master: https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_smoke-master/117/\n\nAlso, I found FM-5190, in which the modules devs were dealing with the same problem.  [~accountid:557058:a7f95b1d-db7a-4dda-b600-bb7feec74396] mentioned that it just went away after 2 or 3 days but she didn't know why.\n\nI think I need help from RE at this point.  [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] or [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] any thoughts?", "created": "2016-06-16T05:08:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "Heeeey [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5]. We got a bad update for our mirror last night, but [~accountid:557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d] is working on this right now.", "created": "2016-06-16T09:59:00.000000"}, {"author": "557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d", "body": "Mirrors have been updated and I manually validated an apt-get update + install on Ubuntu 16.04 VM.  [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] back to you.", "created": "2016-06-16T10:02:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Thanks [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] and [~accountid:557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d].  I've just kicked off another run of the failed jobs.", "created": "2016-06-16T10:31:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "All green, thanks folks!", "created": "2016-06-16T16:49:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We are hitting this error again CI:\n\nhttps://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_smoke-stable/96/\n", "created": "2016-06-22T03:31:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d] - Halp plz?", "created": "2016-06-22T03:34:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Two more occurrences of this:\n\nhttps://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_pe-puppet-server-extensions_integration-system_smoke-2016.3.x/19/\nhttps://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_smoke-master/126/", "created": "2016-06-22T05:30:00.000000"}, {"author": "557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d", "body": "I'm going to try and switch our upstream mirror and kick it again.", "created": "2016-06-22T09:50:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "This impacted pe-r10k CI last night as well: https://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_pe-r10k-vanagon_intn-van-sys-periodic_2016.2.x/66/", "created": "2016-06-22T10:52:00.000000"}, {"author": "557058:b5baf531-c3a9-49d0-b512-74aaa6e4335d", "body": "Upstream mirror changed and sync complete.  Verified Ubuntu 16.04 and 14.04 are able to get updates.", "created": "2016-06-22T11:45:00.000000"}], "components": [], "created": "2016-06-16T04:38:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78c24213"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6vd3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_25145462_*|*_1_*:*_1_*:*_13959_*|*_3_*:*_1_*:*_1925692_*|*_4_*:*_1_*:*_160992_*|*_5_*:*_2_*:*_8809721323_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_83466966"}], "description": "https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_smoke-stable/\n\n* only failed on 2 of >10 platforms\n* no test failures reported but the cells are red - seems clearly infra problem.\n\nFrom \"Identified Problems\":\n{quote}\nMatrix build puppetserver (stable) 20: Smoke Acceptance Test Suite \u00bb ubuntu1604-64ma-32a,LDAP_TYPE=default,PLATFORM=default,beaker #87\nApt failure - hash sum mismatch\n\nWhen using the 'apt' package manager, the job may fail with \"hash sum mismatch\". This can occur when using a caching proxy, or a mirror in an inconsistent state. The job should be retried, and the content mirrored locally.\nIndication 1 \n\nMatrix build puppetserver (stable) 20: Smoke Acceptance Test Suite \u00bb ubuntu1604-64ma-windows2008r2-64a,LDAP_TYPE=default,PLATFORM=default,beaker #87\nApt failure - hash sum mismatch\n\nWhen using the 'apt' package manager, the job may fail with \"hash sum mismatch\". This can occur when using a caching proxy, or a mirror in an inconsistent state. The job should be retried, and the content mirrored locally.\nIndication 2 \n{quote}\n\nHere is some fun crap from one of the logs, which definitely matches the \"identified problems\" above:\n{quote}\n01:07:38   Err:16 http://osmirror.delivery.puppetlabs.net/ubuntu xenial-updates/main Sources\n01:07:38 \n    Hash Sum mismatch\n01:07:38   Get:17 http://osmirror.delivery.puppetlabs.net/ubuntu xenial-updates/universe Sources [27.0 kB]\n{quote}\n\n{quote}\n01:07:40 Failed: errored in validate\n01:07:40 #<Beaker::Host::CommandFailure: Host 'kf5ll87mjtza1wj.delivery.puppetlabs.net' exited with 100 running:\n01:07:40  apt-get update\n01:07:40 Last 10 lines of output were:\n01:07:40 \tGet:25 http://osmirror.delivery.puppetlabs.net/ubuntu xenial-updates/multiverse amd64 Packages [1,176 B]\n01:07:40 \tGet:26 http://osmirror.delivery.puppetlabs.net/ubuntu xenial-updates/multiverse i386 Packages [1,344 B]\n01:07:40 \tFetched 1,326 kB in 0s (4,242 kB/s)\n01:07:40 \tReading package lists...\n01:07:40 \tE: Failed to fetch http://osmirror.delivery.puppetlabs.net/ubuntu/dists/xenial-updates/main/source/Sources.xz  Hash Sum mismatch\n01:07:40 \tE: Failed to fetch http://osmirror.delivery.puppetlabs.net/ubuntu/dists/xenial-updates/main/binary-amd64/Packages.xz  Hash Sum mismatch\n01:07:40 \tE: Failed to fetch http://osmirror.delivery.puppetlabs.net/ubuntu/dists/xenial-updates/main/binary-i386/Packages.xz  Hash Sum mismatch\n01:07:40 \tE: Failed to fetch http://osmirror.delivery.puppetlabs.net/ubuntu/dists/xenial-updates/universe/binary-amd64/Packages.xz  Hash Sum mismatch\n01:07:40 \tE: Failed to fetch http://osmirror.delivery.puppetlabs.net/ubuntu/dists/xenial-updates/universe/binary-i386/Packages.xz  Hash Sum mismatch\n01:07:40 \tE: Some index files failed to download. They have been ignored, or old ones used instead.>\n{quote}\n\ngoing to reload the matrix", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16987", "fixedVersions": [], "id": "16987", "issueType": "CI Blocker", "key": "SERVER-1398", "labels": ["transient"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-06-22T22:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver smoke tests failing due to apt-get 'hash sum mismatch'", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [], "components": [], "created": "2016-06-15T10:19:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71063a1f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz70jj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_353974_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16147", "fixedVersions": [], "id": "16147", "issueType": "Bug", "key": "SERVER-1397", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Done", "resolutionDate": "2016-06-15T10:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "null", "timeSpent": "PT0S", "updated": "2017-04-06T14:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "passed on re-run", "created": "2016-06-15T09:29:00.000000"}], "components": [], "created": "2016-06-15T07:08:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8ecba23"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz708f:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_8370444_*|*_1_*:*_1_*:*_37802_*|*_3_*:*_1_*:*_42342_*|*_5_*:*_1_*:*_8989398290_*|*_6_*:*_1_*:*_0"}], "description": "Here's the output from the jank job:\n\n{noformat}\n* Reviewing: Test a specific, existing legacy environment configuration\n-------------------------------------------------------------------------------\nFor: (centos7-64-1) tmanz97tkr0r7d8.delivery.puppetlabs.net\n-------------------------------------------------------------------------------\npuppet_agent: ok\n-------------------------------------------------------------------------------\npuppet_config: *UNEXPECTED FAILURE*\n-------------------------------------------------------------------------------\nExpected the output:\nbasemodulepath = /etc/puppet/modules:/usr/share/puppet/modules\nmodulepath = /etc/puppet/testing-modulesWarning: Sections other than main, master, agent, user are deprecated in puppet.conf. Please use the directory environments feature to specify environments. (See http://docs.puppetlabs.com/puppet/latest/reference/environments.html)\n   (at /usr/share/ruby/vendor_ruby/puppet/settings/config_file.rb:82:in `block in unique_sections_in'\n{noformat}\n\nFrom earlier in the output:\n{noformat}\n$  cat /etc/puppet/puppet.conf  \n[main]\nlogdir = /var/log/puppet\nrundir = /var/run/puppet\nssldir = $vardir/ssl\ndns_alt_names = puppet,tmanz97tkr0r7d8,tmanz97tkr0r7d8.delivery.puppetlabs.net\nverbose = true\n\n[agent]\nclassfile = $vardir/classes.txt\nlocalconfig = $vardir/localconfig\n\n[testing]\nmanifest = $confdir/testing-manifests\nmodulepath = $confdir/testing-modules\nconfig_version = $confdir/static-version.sh\n{noformat}\n\nThe problem seems to be due to the {{testing}} section of puppet.conf.  However, why the heck did this just fail randomly now?  Nothing's changed recently.  And it seems to have only failed on some cells in the matrix.\n\nI reloaded the matrix, will see if it just goes green on a re-run.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16986", "fixedVersions": [], "id": "16986", "issueType": "CI Blocker", "key": "SERVER-1396", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-06-15T09:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "environment.static.rb failure in puppetserver 1.x CI", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "6243ac465f63fd0069b1a4df", "created": "2016-06-15T06:51:00.000000", "name": "stacktrace", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10874"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] - does this one sound familiar to you?  I'm wondering if it is at all related to the root cause for PUP-6070.", "created": "2016-06-15T07:45:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Yes, it could be the same root cause - the only other cause I can think of is if user is making calculations with huge numbers that overflow 64 bits (unlikely). Hash value calculations are more likely to overflow if not done correctly (as in PUP-6070).\n\nHowever, \n\nThe stacktrace reveals (I think) that the failure occurs when {{lookupvar()}} is called from within an ERB-template and it throws a variable not found.\nThis suggests that the user is running with {{\\--strict_variables}} turned on. When doing that, all calls to {{lookupvar}} must only access existing variables. Code should check if a variable is defined before accessing it. In Ruby that can be done via a call to {{Scope#exists?('varname')}}.\nThe problem may be a follow-on problem of the throw", "created": "2016-06-15T07:59:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "I don't think this is the same problem (it was fixed in Puppet 4.4.1). While fixing it, I made sure that the Puppet code-base didn't contain other hash methods with the same problem. Then again, perhaps some module is involved that contains ruby code that computes overflowing hash codes?\n", "created": "2016-06-15T08:04:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "This error occurs with inline_template and within custom ruby functions, I can also provide a stacktrace for the case, but that looks nearly identical.\n\nRegarding the {{--strict_variables}} setting, I don't have it enabled.", "created": "2016-06-15T09:10:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Interesting - the hashing that (mostly) goes on during a lookupvar is the hashing of the key being looked up. Could it be that something other than a String is used as the key when things go wrong?", "created": "2016-06-15T09:34:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The reported line in scope (520) does this:\n{code:ruby}\n      throw(:undefined_variable, reason)\n{code}\nand it has a catch of \"uncaught throw\" which then either accepts that and returns nil, or fails the lookup depending on settings.\nThis construct allows code that catches {{:undefined_variable}} to handle that case on their own without having to rescue the error (which is much slower).\n\nIf for some reason the \"uncaught throw\" is not working as it should - the logic would either fail with an error, or simply return nil.\n\nCould it be that there is a catch in puppet server? (it could also be that it does not work for MRI, but that it survives).\nThe logic hinges on this definition:\n{code:ruby}\n  UNCAUGHT_THROW_EXCEPTION = defined?(UncaughtThrowError) ? UncaughtThrowError : ArgumentError\n{code}\nmodern MRI has {{UncaughtThrowError}}, older uses an {{ArgumentError}}. This means that on older MRI there is a very small chance that the rescue logic is invoked for some other error than uncaught throw.\n\nIt is worth spending time trying to create a reproducer that shows the problem reliably.", "created": "2016-06-15T09:44:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "In places with lookupvar I do a lookup with a variable that was constructed before in the following way:\n{code}\n    $lookup = \"<some string>_${var}\"\n    $result = inline_template(\"<%= scope.lookupvar('::${lookup}') %>\")\n{code}\nor within a function:\n{code}\n      lookup = '<somestring>_' + var\n      result = lookupvar(lookup)\n{code}\n\nSo it shouldn't be possible here to pass numbers and both versions fail. \n\nIf you know some ruby code to inject into puppetserver over inline_template or functions I could do that. I have 2 servers to try, so if the first try should do something bad to it I have one left for other things to try.\n\nIs it maybe possible that jruby has a bug somewhere with this?", "created": "2016-06-15T10:07:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:6243ac465f63fd0069b1a4df] - will the examples you gave show the error if invoked for non existing variable?\n\nTo help find out more, you could try a rescue of all errors around the lookupvar in a function as well as a catch of :undefined_variable and see what you get (stacktrace and type of error). Also note the stack trace in a raised error.", "created": "2016-06-15T10:42:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "I'm more a stackoverflow ruby coder, so I hope this helps. If not let me know what I should do in the exception case. As you can see the number is now 3015141520. At the beginning of this errors it was just 2147856200 according to the logs.\n\n{code}\ne.class => RangeError\ne.message => integer 3015141520 too big to convert to `int'\ne.backtrace.inspect = > [\"org/jruby/RubyKernel.java:1320:in `throw'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/scope.rb:520:in `variable_not_found'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/scope.rb:501:in `lookupvar'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/scope.rb:499:in `lookupvar'\", \"/var/lib/puppet-env/juergen/modules/test/lib/puppet/parser/functions/testtest.rb:10:in `real_function_testtest'\", \"org/jruby/RubyArray.java:1613:in `each'\", \"/var/lib/puppet-env/juergen/modules/test/lib/puppet/parser/functions/testtest.rb:7:in `real_function_testtest'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:174:in `function_testtest'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:167:in `function_testtest'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:281:in `call_function'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:912:in `call_function_with_block'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:881:in `eval_CallNamedFunctionExpression'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:350:in `eval_AssignmentExpression'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:617:in `eval_BlockExpression'\", \"org/jruby/RubyArray.java:1613:in `each'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:617:in `eval_BlockExpression'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:31:in `safeevaluate'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:182:in `evaluate_code'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:84:in `evaluate'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:76:in `evaluate'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:591:in `evaluate_definitions'\", \"org/jruby/RubyArray.java:1613:in `each'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:589:in `evaluate_definitions'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:588:in `evaluate_definitions'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/errors.rb:64:in `exceptwrap'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:587:in `evaluate_definitions'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:615:in `evaluate_generators'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:612:in `evaluate_generators'\", \"org/jruby/RubyKernel.java:1511:in `loop'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:609:in `evaluate_generators'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:192:in `compile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:192:in `compile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:167:in `compile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:35:in `compile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:266:in `compile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:264:in `compile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:223:in `benchmark'\", \"/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:222:in `benchmark'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:262:in `compile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:53:in `find'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:194:in `find'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:132:in `do_find'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:48:in `call'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:47:in `call'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `process'\", \"org/jruby/RubyArray.java:1613:in `each'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:60:in `process'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\", \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:58:in `process'\", \"file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/master.rb:42:in `handleRequest'\", \"Puppet$$Server$$Master_696017572.gen:13:in `handleRequest'\", \"request_handler_core.clj:281:in `invoke'\", \"jruby_request.clj:47:in `invoke'\", \"jruby_request.clj:29:in `invoke'\", \"request_handler_service.clj:38:in `handle_request'\", \"request_handler.clj:3:in `invoke'\", \"request_handler.clj:3:in `invoke'\", \"core.clj:2493:in `invoke'\", \"core.clj:294:in `invoke'\", \"core.clj:128:in `invoke'\", \"core.clj:134:in `invoke'\", \"ringutils.clj:86:in `invoke'\", \"master_core.clj:427:in `invoke'\", \"ring.clj:21:in `invoke'\", \"ring.clj:12:in `invoke'\", \"comidi.clj:249:in `invoke'\", \"jetty9_core.clj:424:in `invoke'\", \"normalized_uri_helpers.clj:80:in `invoke'\"]\n{code}", "created": "2016-06-15T12:11:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "with the following code you get a {{Evaluation Error: Error while evaluating a Function Call, undefined local variable or method `result' for Scope(Class[Test]):Puppet::Parser::Scope}}\n{code}\n     result = nil\n      begin\n        catch :undefined_variable do\n          result = lookupvar(\"<somestring>_#{var}\")\n        end\n{code}", "created": "2016-06-16T04:21:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "It now works again without any error. The last number from testing some stuff was 4024565408 so maybe there is now a different Bit set somewhere which makes it work again.", "created": "2016-06-16T05:04:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "Nevermind, it is still broken. Seems like I tested too much and missed something at some point", "created": "2016-06-16T06:34:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "From what I can tell, it seems like jruby dies inside {{throw}} itself. I have one suspicion", "created": "2016-06-16T07:45:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "In my case it is enough to use inline_template(\"<%= scope.lookupvar('::missing_variable') %>') somewhere.within a manifest to get the error.\n\nAre there other places in Puppet where I could do some wrong stuff to throw errors? Maybe it is also somewhere else but no throw is used in normal cases.", "created": "2016-06-16T07:52:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:6243ac465f63fd0069b1a4df] Thanks. When you try that, is that the only thing you are evaluating? That is could you try so that is the only logic that is being evaluated for the node? Also make sure there is nothing on the modulepath - only a site.pp with the inline_template call. (Thereby eliminating any interference from any loaded types, other functions, templates, 3d party ruby code etc).", "created": "2016-06-16T08:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:6243ac465f63fd0069b1a4df], have you only started seeing this problem after upgrading to the specific versions of Puppet Server (2.4.0) and core Puppet (4.5.1) that you listed in this ticket submission?  Were you unable to reproduce this issue on some earlier versions of Puppet Server and/or core Puppet and, if so, could you mention which ones?", "created": "2016-06-16T08:54:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], I have some classes from ENC which I can't remove, but I replaced them with empty classes. At the end I have some empty classes plus the inline_template and it still breaks. I would say that just using inline_template is enough in my case to trigger this error.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I used puppet-agent 1.3.5 before with puppetserver 2.2.1 and that worked without any problems for several weeks. I updated puppet on Monday 08:56:10 UTC and this error started Tuesday 22:37:34 UTC. ", "created": "2016-06-17T01:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] is it possible to write a small ruby driver program that uses Puppet as a library and just executes a Puppet function?  Assuming that the answer is \"yes\", do you have an example somewhere of how to do that?", "created": "2016-06-21T14:20:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] The closest thing I can think of are the benchmarks in the puppet code base, they set up \"puppet as a library\" for various tasks.\nSee the respective \"benchmarker.rb\" files - for example /puppet/benchmarks/evaluations/benchmarker.rb. The benchmarks are driven by rake - driving them from something else should be trivial, and you should be able to trim that down to just what you need.", "created": "2016-06-21T14:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] thanks.  I'll look into that if I get a second.\n\nMeantime I spun up a puppet server locally that calls inline_template from site.pp and does a lookup on an invalid var in there", "created": "2016-06-21T16:58:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Just struck me that this may be subject to fun things like the sequence of characters in a variable name (for example, if the hash algorithm overflows).", "created": "2016-06-21T17:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] that's an interesting thought.\n\n[~accountid:6243ac465f63fd0069b1a4df] you said that {{ inline_template(\"<%= scope.lookupvar('::missing_variable') %>') }} will reliably reproduce it for you once your server is in this state?  If so I'll change my reproduction attempt to use that exact string.", "created": "2016-06-21T17:27:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I currently get it with any variable name which is not in any scope, so no need for any exact name.", "created": "2016-06-22T01:03:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "Do you think a heap dump of the JVM could help you to look into it? I could create the error and then dump the heap so that there is a possibility to find something related to that number in the heap dump.", "created": "2016-06-22T01:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:6243ac465f63fd0069b1a4df] A heap dump wouldn't hurt - what is your max heap size set to?\n\nIf we're unable to come up with a reliable reproducer on our end, then our best chance of tracking this down is probably to have you add a few debug print statements to the Puppet Ruby code itself.\n\nIf you could edit `puppet/parser/scope.rb`, around line 520, and change this:\n\n{code}\nbegin\n      throw(:undefined_variable, reason)\nrescue  UNCAUGHT_THROW_EXCEPTION\n{code}\n\nto something like:\n\n{code}\nbegin\n    Puppet.warning(\"!!!! About to throw undef var exception!  Reason: '#{reason}' (class: '#{reason.class}') (inspect: '#{reason.inspect}')\")\n      throw(:undefined_variable, reason)\nrescue  UNCAUGHT_THROW_EXCEPTION\n{code}\n\nYou will have to flush the JRuby pool for these code changes to be loaded, a la https://docs.puppet.com/puppetserver/latest/admin-api/v1/jruby-pool.html#delete-puppet-admin-apiv1jruby-pool ", "created": "2016-06-22T07:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I left my reproduction attempt running overnight and it does not seem to have repro'd for me.  I guess I will leave it running for a while longer and see what happens.\n\nIf we can come up with an in-house reproducer I have a lot of ideas about how to debug this", "created": "2016-06-22T10:40:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Sadly I don't have the admin api enabled... I have a heap dump from monday with around 1GB and heap is set to -Xmx7500m. What is the best way to provide you with the heap? I have a server where I can put it but I wouldn't put a link to it here for the world to download. Email address would be fine.\n\nI will restart my puppet server with the change tomorrow to get it enabled and hope that it will somehow happen again...", "created": "2016-06-23T07:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:6243ac465f63fd0069b1a4df] how did you disable the admin api?\n\nIf you want to email me, my email address is just chris at puppet dot com.  I'd be happy to take a look at the heap dump.", "created": "2016-06-23T09:30:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I missed the setting in the auth.conf to allow this operation. Is it possible to do this over JMX or some other way?", "created": "2016-06-23T09:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:6243ac465f63fd0069b1a4df] oh, I didn't realize we shipped our default auth.conf in a way where that was disabled.  Not sure if we did that intentionally.  :(\n\nNo way to trigger that action w/o hitting the HTTP endpoint, unfortunately.", "created": "2016-06-23T09:57:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The reported Integer values could possibly be the Ruby Object ID of an object on the Ruby heap. If that is the case, go buy a lottery ticket...", "created": "2016-06-23T12:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I left my local repro attempt running for about 3 days and wasn't able to repro.  So, I guess, [~accountid:6243ac465f63fd0069b1a4df], if you are willing to try that suggestion about the ruby patch and the admin endpoint for flushing, let me know how it goes.  If we don't get any actionable info then I can look into putting together a custom .jar file for you that adds some instrumentation to the JRuby code, and maybe that'll help us figure it out?", "created": "2016-06-24T14:21:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "I added the mentioned Pupppet.Warning line and also allowed the JRuby administrative API. I hope it is reproducible after some time again... And I currently have nearly 50000 catalog compilations every day on a single puppetserver so that you have a number for comparison with your test.\n \nJust one question out of curiosity, how different are the code paths to look up variables within the Puppet DSL and Ruby/ERB? Because it was not breaking withing the Puppet DSL.", "created": "2016-06-25T03:03:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The code path is very much the same - although, when calling {{lookupvar}} in a template yourself, that call is unprotected unless placed in a a catch.\nThe language evaluator does this:\n{code:ruby}\n  def get_variable_value(name, o, scope)\n    catch(:undefined_variable) {\n      x = scope.lookupvar(name.to_s)\n      # Must convert :undef back to nil - this can happen when an undefined variable is used in a\n      # parameter's default value expression - there nil must be :undef to work with the rest of 3x.\n      # Now that the value comes back to 4x it is changed to nil.\n      return :undef.equal?(x) ? nil : x\n    }\n    # It is always ok to reference numeric variables even if they are not assigned. They are always undef\n    # if not set by a match expression.\n    #\n    unless name =~ Puppet::Pops::Patterns::NUMERIC_VAR_NAME\n      optionally_fail(Puppet::Pops::Issues::UNKNOWN_VARIABLE, o, {:name => name})\n    end\n    nil # in case unknown variable is configured as a warning or ignore\n  end\n{code}\n\nSince {{lookupvar}} can throw {{:undefined_variable}}, it is best to protect lookup of variables that are known to potentially be undefined. The easiest way to do that is like this (in an ERB):\n{code:ruby}\nval = scope.exists?(name) ? scope.lookupvar(name) : nil\n{code}\n\nThat is however not explaining why you are seeing integer out of range, but it is the right way to protect against unknown variables.", "created": "2016-06-25T14:53:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] The log from Doug Rosser shows this:\n{code}\n2016-06-21 20:37:01,415 ERROR [qtp251376563-14555] [puppetserver] Puppet Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, integer 4165060920 too big to convert to `int' at /opt/puppetlabs/puppet/modules/puppet_enterprise/manifests/master/file_sync.pp:169:8 on node redacted\norg/jruby/RubyKernel.java:1320:in `throw'\n{code}\n\nAt line 1320, there is this:\n{code:java}\nreturn rbThrowInternal(context, tag, new IRubyObject[] {arg}, block, uncaught19)", "created": "2016-06-25T15:11:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "Good news, the error is back which means it can be reproduced even after a restart. Error message: {code}Puppet !!!! About to throw undef var exception!  Reason: '' (class: 'String') (inspect: '\"\"'){code}\n\n[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Interesting. I just looked a bit more and found the following at https://github.com/jruby/jruby/blob/1ec7e208acb193a878eb80ad0cd5b3e88c752bff/core/src/main/java/org/jruby/RubyBasicObject.java#L1038:\n{code}\n    /** rb_obj_id\n     *\n     * Return the internal id of an object.\n     */\n    @JRubyMethod(name = \"__id__\")\n    @Override\n    public IRubyObject id() {\n        return getRuntime().newFixnum(getObjectId())", "created": "2016-06-26T02:57:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "So a bit more searching in Java...\nWe know from the snippet before, that 2^63 object ids are possible. So the next interesting part is fix2int (org.jruby.RubyNumeric)\n{code}\n    public static int fix2int(RubyFixnum arg) {\n        long num = arg.getLongValue()", "created": "2016-06-26T03:15:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Well of cource - Java does not have unsigned integers (not until Java 8, and then with special logic). So 2^63 is actually not possible without some sign juggling. The implementation must use BigInteger to cover the full range of values. The logic found is however flawed in that it checks for Integer.MAX_VALUE instead of Long.MAX_VALUE (Integer is only 32 bits IIRC, and Long is 64).\n\n{code}\nInteger.MAX_VALUE =  2147483647\nInteger.MIN_VALUE = -2147483648\n \nLong.MAX_VALUE =  9223372036854775807\nLong.MIN_VALUE = -9223372036854775808\n{code}\n\nLooks like a JRuby bug to me...\n", "created": "2016-06-26T14:09:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "I opened a bug at JRuby for it at https://github.com/jruby/jruby/issues/3980", "created": "2016-06-27T03:45:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Thanks [~accountid:6243ac465f63fd0069b1a4df], much appreciated!", "created": "2016-06-27T06:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yes, thank you [~accountid:6243ac465f63fd0069b1a4df]!  I'll keep an eye on that JRuby ticket, and also read through this code again to see if it gives me a better idea of how to come up with a local reproducer so that we can confirm the JRuby fix when it goes in.", "created": "2016-06-27T10:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:6243ac465f63fd0069b1a4df] when this begins to happen to you, does it affect 100% of the catalog compilations that are looking up an undefined variable?  Or is it only a subset of them?\n\nI'm poking around in this JRuby code, trying to think of a way that I can write a more reliable reproducer, and it's weird to me that the exception seems like it may be related to a RubyThread object, when we shouldn't be using any threads inside of the JRuby containers.  It seems like generating a bunch of ruby objects in order to get that ObjectId counter into the \"too high\" territory will be easy, but it seems like after that I have to figure out how to cause a new RubyThread to be allocated.", "created": "2016-06-27T15:44:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "One thing I notice is that some of the obvious places where JRuby ends up creating these thread objects is in calls to `popen3`, so I'd be curious whether or not you happen to be using that or similar methods for launching external processes in any of your modules?", "created": "2016-06-27T15:53:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Isn't things like \"timeouts\" also done with threads?", "created": "2016-06-27T16:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The timeout code does appear to use *Java* threads behind the scenes, but I don't see anywhere where it is creating another instance of one of these special {{RubyThread}} objects, and it seems like those objects are the ones that would have the offending object ID on them.", "created": "2016-06-27T17:27:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Maybe one is created when asking for the current thread?\n\n- henrik\n\n", "created": "2016-06-28T00:58:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] It affected all which did a look up of a undefined variable.\nAnd we use at some places a external script from ruby code to do something and if it matters I have some gems installed were maybe the tzinfo gem is interesting as that one had a dependency to thread_safe.\n{code}\njruby-openssl (0.9.7 java)\njson (1.8.0 java)\nrake (10.1.0)\nrdoc (4.1.2)\nthread_safe (0.3.5 java)\ntzinfo (1.2.2)\ntzinfo-data (1.2016.4)\n{code}\n\nI looked also on the number it throws and it seems like the number increases by 200.000 in less than one minute.", "created": "2016-06-28T01:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I found a code path in the JRuby code that might explain it.  There is a method called [org.jruby.Ruby#getCurrentContext|https://github.com/jruby/jruby/blob/1.7.20.1/core/src/main/java/org/jruby/Ruby.java#L2742-L2744], which gets called from lots and lots of places.  Its call stack ends up [checking for the existence of a soft reference|https://github.com/jruby/jruby/blob/1.7.20.1/core/src/main/java/org/jruby/internal/runtime/ThreadService.java#L195-L196] of a context object that would contain the current {{RubyThread}} object, and if that reference has been cleared out by GC, then it calls an {{adopt}} method to \"adopt\" the current Java thread, which ultimately [results in the construction of a new {{RubyThread}} instance|https://github.com/jruby/jruby/blob/1.7.20.1/core/src/main/java/org/jruby/RubyThread.java#L418].\n\nIf you have enough load on your server, and a small enough heap size, it may be garbage collecting these SoftReferences frequently enough to trigger this code path and I think that would explain it.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] can you think of any easy way to use jmap or some other tool to watch the instances of {{org.jruby.runtime.ThreadContext}} to confirm or refute the theory that the SoftReferences are being GC'd?  Or, based on your recent work do you have any suggestions about how to force GC of SoftReferences in a reproducer program?", "created": "2016-06-28T07:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Jeremy Barlow can you think of any easy way to use jmap or some other tool to watch the instances of org.jruby.runtime.ThreadContext to confirm or refute the theory that the SoftReferences are being GC'd? Or, based on your recent work do you have any suggestions about how to force GC of SoftReferences in a reproducer program?{quote}\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] For viewing when specific instances of objects are being created/freed across a set of snapshots, I've found taking repeated snapshots and viewing them via the YourKit Generations (https://www.yourkit.com/docs/java/help/generations.jsp) feature to be useful.  With that, I can look at two different snapshot generation views and see whether or not specific instances of objects which are present in a generation in one view are still present in a different view at that same generation after a number of additional snapshots have been captured.\n\nI haven't found any methods, though, for forcing a \"harder\" GC that will clean up referents of SoftReferences when no other strong references to those referents exist.  Supposedly - although it has seemed inconsistent for me - the referents of unused WeakReferences will be slated for clean up on any old GC whereas the references of SoftReferences will only get slated for clean up when there's sufficient memory pressure on the heap.\n\nLooking at the code snippets you linked, though, I wonder if we can take advantage of fact that the {{org.jruby.internal.runtime.ThreadService.localContext}} uses a [ThreadLocal|https://github.com/jruby/jruby/blob/1.7.20.1/core/src/main/java/org/jruby/internal/runtime/ThreadService.java#L122] to more easily create a reproducer.\n\nFor example, could we instrument Puppet Server such that every time a JRubyPuppet instance is used to send a catalog request that runs the code with the undefined variable, the call is marshaled onto a unique, bare {{java.lang.Thread}} instance that we spin up - avoiding any thread pooling that might otherwise have caused Java threads (and, via ThreadLocals, RubyThreads?) to be reused?\n\nNot sure since I haven't actually seen the reproducer setup but it may be that we haven't been able to locally reproduce the issue thusfar because our reproducer is largely just reusing the same Java thread (or small number of threads) in the Jetty web server's QueuedThreadPool.  It could be that {{RubyThread}} objects aren't being created frequently enough to trigger the error as a result.  In [~accountid:6243ac465f63fd0069b1a4df]'s reproduction environment, though, threads in the QueuedThreadPool may be swapped out more frequently over time if there's more intermittent concurrency among the set of requests.  Jetty will dispose/replace Java threads in its pool if they go idle for some period of time, scaling the number of outstanding threads up/down in order to meet demands of the incoming request load.\n", "created": "2016-06-28T09:20:00.000000"}, {"author": "557058:a385126e-4a9d-434f-930b-2ffae6d53a89", "body": "So, just for  a +1, I see this in my environment as well, every now and then, all 4 of my masters start throwing this on all catalogs(well...maybe not \"all\" but a very high percentage of them as most of our systems have nearly identical profiles/catalogs) , and a restart fixes it right away.  I've seen this 3 times in maybe the last month and a half or so. ", "created": "2016-06-28T10:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:a385126e-4a9d-434f-930b-2ffae6d53a89] do you also have hiera lookups in your catalogs, which may be looking up undefined variables?", "created": "2016-06-28T10:21:00.000000"}, {"author": "557058:a385126e-4a9d-434f-930b-2ffae6d53a89", "body": "I actually do, yes. ", "created": "2016-06-28T10:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:a385126e-4a9d-434f-930b-2ffae6d53a89] great, thanks for confirming.", "created": "2016-06-28T11:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] I'm going to move this over to SERVER since it seems highly likely that the JRuby issue is what's going on here.", "created": "2016-06-29T14:06:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Enjoy. ", "created": "2016-06-29T15:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm able to reproduce this with a pretty simple Java program:\n\n{code}\npublic class Server1408Repro {\n    public static void main(String[] args) throws InterruptedException {\n        String objIdIncScript =\n                \"(0..2**32).each {|i| ''.object_id }\\n\" +\n                \"puts \\\"new object id: #{''.object_id}\\\"\\n\"", "created": "2016-06-29T18:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This has been fixed upstream and is marked for inclusion in JRuby 1.7.26.  Will need to decide what we want to do about perf/memory testing on that ", "created": "2016-06-30T07:59:00.000000"}, {"author": "557058:bf57daa5-f466-42d6-af40-4e2c537eac6d", "body": "Is there any workaround for this issue until this has been fixed/released?\nIs a JRuby pool flush enough to get out of the failure state or will it need a full restart? \n", "created": "2016-07-11T03:17:00.000000"}, {"author": "6243ac465f63fd0069b1a4df", "body": "[~accountid:557058:bf57daa5-f466-42d6-af40-4e2c537eac6d]: I tried a jruby pool flush as I was curious but that does not help. I'm not aware of a real workaround except changing the code like Henrik mentioned\n{code}\nval = scope.exists?(name) ? scope.lookupvar(name) : nil\n{code}", "created": "2016-07-11T03:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5f581819110ce00069f59a2a] what are your current thoughts on this? Should we set some kind of time box for how long to wait to see if JRuby does a release that contains this fix? And then consider doing a temporary JRuby release from a fork?", "created": "2016-07-27T11:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Discussed with [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0].  We're going to start the wheels turning on doing our own release of the latest JRuby 1.7 jars so that we can ship a fix for this soon-ish.  I filed RE-7861 to get release engineering to review the license and make sure this is kosher.  In the meantime I plan to get started on the work and testing.", "created": "2016-08-10T14:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I've been able to get unit/integration tests passing with these branches:\n\nhttps://github.com/cprice404/jruby/tree/maint/jruby-1_7/SERVER-1408-release-from-fork\nhttps://github.com/cprice404/jruby-utils/tree/maint/master/SERVER-1408-update-to-pl-jruby-1.7.26-1\nhttps://github.com/cprice404/puppetserver/tree/bug/master/SERVER-1408-upgrade-to-pl-jruby-1.7.26-1\n\nGoing to wait a day or so to make sure RE is good with this, and then start filing PRs.", "created": "2016-08-10T16:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Update: the JRuby maintainers have hinted that they hope to do a 1.7.x release next week (week of August 15), so we're going to hold off on pushing any non-SNAPSHOT jruby artifacts to clojars, and assuming the upstream release does happen then I'll just close off the PRs against jruby-utils and puppetserver, and we'll use the upstream.\n\nHowever I'd still like to get the puppetlabs/jruby PR merged so that we'll have that in place in case we need to consider doing this again at some point in the future.", "created": "2016-08-12T12:01:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:623c0ff494742a00683e3fe4]Weren't you going to update the Acceptance criteria on this ticket?", "created": "2016-08-22T10:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "JRuby upstream still hasn't released (they are saying maybe this week), and we don't want to wait any longer, so I've moved forward and released jars to clojars:\n\nhttps://clojars.org/groups/puppetlabs.org.jruby\n\nWe'll begin testing with these ASAP, and plan on doing an OSS release as soon as we can after we're confident in the build (no memory leaks over long runs, etc.).", "created": "2016-08-22T16:33:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:745ad6f8-2461-4691-9873-549d5904bb16] Another thing to think about is that Everett is the default PE release this will go into. If it needs to go into a Davis Z, we need to know.", "created": "2016-08-24T13:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We began some initial testing off of our \"pre-release\" version of JRuby 1.7.26 last week. Everything went fine. Then, over the weekend, the upstream JRuby team actually did do a formal release of 1.7.26, so we've now switched to that. That change is merged into the OSS Puppet Server master branch. We've run about 4 hours of perf testing on it and compared that to the previous commits of OSS puppetserver, and it looks fine.\n\nToday we just kicked off a long-running test that is intended mostly to validate memory usage and ensure that we don't have any memory leaks. We've scheduled that to run for one week. We've created tickets with the release engineering team to help us do OSS Puppet Server releases, tentatively targeted for next Thursday, Sept. 8, assuming the memory tests go well.\n", "created": "2016-08-30T13:38:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "I pinged Davis release leads this morning for discussion on this.", "created": "2016-09-06T11:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We've incorporated the new JRuby release, 1.7.26, which has a fix for this issue into all of the Puppet Server branches.  CI jobs are all still passing.  This fix will be going into the Puppet Server 1.2.0 and 2.6.0 releases, which should drop very soon.  Marking this issue resolved. ", "created": "2016-09-07T14:05:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Accidentally set tickets in active sprint to closed. Moving back to resolved. ", "created": "2016-09-27T17:09:00.000000"}], "components": ["Puppet Server"], "created": "2016-06-15T06:53:00.000000", "creator": "6243ac465f63fd0069b1a4df", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a. See Erik Dasher's 8/15 comment."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3bfa6a80"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtt3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When a variable lookup is performed from Ruby code or an ERB template and the variable is not defined, catalog compilation should no longer periodically fail with an erroneous error message which looks similar to:\n\n\"Puppet Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, integer 2181729414 too big to convert to `int` at <puppet file>\"\n\nInstead, the lookup should return 'nil'."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_430095033_*|*_1_*:*_2_*:*_4044936607_*|*_10007_*:*_2_*:*_962042782_*|*_3_*:*_2_*:*_139752888_*|*_10009_*:*_1_*:*_701876084_*|*_5_*:*_2_*:*_210530266_*|*_6_*:*_2_*:*_1618826239_*|*_10004_*:*_1_*:*_198557742_*|*_10006_*:*_1_*:*_604810871_*|*_10005_*:*_1_*:*_201512756"}], "description": "The lookupvar function started failing after some time without any reason with a error message \"Puppet Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, integer 2181729414 too big to convert to `int' at <puppet file>\"\n\nthis occured on 2 puppetserver at the same time (were restarted at the same time) and also only occur if the name to look up does not exist.\n\nI found someone with the same problem in the irc logs of #puppet and there it couldn't be debugged, because a restart fixed it. I still have them running as I could workaround this problem and so they still can be used for debugging. (User: Spec, logs at https://botbot.me/freenode/puppet/2016-05-31/)\n\nStacktrace from puppetserver log is attached. Interesting is that the number which couldn't be converted is increasing over time\n\nUPDATE\n----\nThis cause of this problem was found to be in JRuby  - see link \"JRuby issue 3980\".", "environment": "Debian Jessie with Puppet 4.5.1, Puppetserver 2.4.0 and java \"1.8.0_92\"", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15298", "fixedVersions": ["SERVER 1.2.0", "SERVER 2.6.0"], "id": "15298", "issueType": "Bug", "key": "SERVER-1408", "labels": ["davis-ss", "maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243ac465f63fd0069b1a4df", "resolution": "Fixed", "resolutionDate": "2016-09-07T14:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\"integer <number> too big to convert to `int' at\" with lookupvar", "timeSpent": "PT0S", "updated": "2016-11-11T14:33:00.000000", "votes": "5", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "First cut of this, as a Google doc, is available for review at https://docs.google.com/document/d/1ZFWme-JzawSai-aRcYTtNagYtgn-eioGxgLRTa0DAgw/edit.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to the review column for now.  We can talk more about what else we might want to add to it, whether we want to create a second \"summary only\" doc, etc. after you have a chance to look at it.", "created": "2016-07-20T18:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "After talking about this with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], we agreed that with the level of detail in the initial document that it is probably worth breaking out a separate, higher-level document targeted at a slightly different audience.  I have a first draft of that document here - https://docs.google.com/document/d/1rVjX7y_J00cxWdWWX5rinhYg6H2abB95atADJJ58_wk.", "created": "2016-07-21T14:34:00.000000"}], "components": [], "created": "2016-06-14T10:57:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6299df24"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn2on:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75410884_*|*_3_*:*_1_*:*_89823179_*|*_10009_*:*_1_*:*_425377472_*|*_5_*:*_1_*:*_5507325951_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2972555863"}], "description": "Write up of:\n* Whether environment_timeout has the expected effect on overall memory usage\n* What percentage of total overall Puppet Server memory usage can be attributed to JRuby (w/o loading Puppet)\n* What percentage of total overall Puppet Server memory usage can be attributed to loading the Puppet code into JRuby\n* What percentage of total overall Puppet Server memory usage can be attributed to environment caching\n* Confirmation or refutation of the hypothesis that the memory usage related to environment caching is predictable and separable (i.e., we use the same amount of total memory on environment caching regardless of whether JRubies are isolated per environment.)\n", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "15898", "fixedVersions": ["None"], "id": "15898", "issueType": "Task", "key": "SERVER-1395", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-07-25T16:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Write up summary of memory analysis findings", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T18:47:00.000000", "name": "10-empty-cats-10-unique-envjrubies-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10734"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T18:47:00.000000", "name": "10-empty-cats-10-unique-envjrubies-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10659"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T18:47:00.000000", "name": "10-small-cats-10-unique-envjrubies-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10577"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T18:47:00.000000", "name": "10-small-cats-10-unique-envjrubies-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11272"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For this ticket, I added a new scenario to the memory measurement tool, catalog-unique-environment-per-jruby.  This scenario enables a configurable number of catalogs to be compiled in one environment, taking measurements after all catalogs for each of a configurable number of JRubyPuppet instances have been completed.  Each environment that a JRubyPuppet instance uses for compilations comes from a separate directory on disk, copied from the directory of a specified base environment.\n\nThe following versions of code were in use for this run:\n\n* puppetserver-memmeasure tool - [f89cec11|https://github.com/camlow325/puppetserver-memmeasure/commit/f89cec118a5000f5e5308cb6e9f0a88542262740]\n* puppetserver_perf_control repo - [f8342b7|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/f8342b7d926575a05cbcee413dab2d33d8e1866d]\n* Puppet Server - 2.4.0\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)\n\nSeveral JSON scenario files for combinations of the following variables, named accordingly, have been attached:\n\n* \"empty\" vs. \"small\" node compiles\n* Environment timeout 0, i.e., \"off\", vs. \"unlimited\"\n\n10 catalogs were compiled per each of 10 unique environments (1 per each of 10 JRubyPuppet instances).\n\nAs suspected from the original ticket hypothesis, there appears to be a linear increase in memory usage per-JRuby.  The results here are basically the same as mentioned in the first bullet about per-JRuby memory usage from [this comment|https://puppet.atlassian.net/browse/SERVER-1393?focusedCommentId=320819&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-320819] in SERVER-1393.  This also seems to confirm that the growth in memory usage wouldn't depend upon whether the environment in disk being used in each JRubyPuppet instance is the same or different from that being used by other JRubyPuppet instances.\n\n|| Catalog || Env Timeout || 1st Environment / JRuby || Per-Additional JRuby / Environment\n| empty | 0 | 5 MB | 4 MB\n| empty | unlimited | 5 MB | 4 MB\n| small | 0 | 22 MB | 21 MB\n| small | unlimited | 16 MB | 15 MB\n\nThe increase varies per the size of the catalog being compiled (empty vs. small) as well as for the \"environment_timeout\" being used - 0, i.e., \"off\", vs. \"unlimited\".  small catalog compiles in JRubyPuppet instances beyond the first one incur 11 - 17 MB more memory (depending upon the \"environment_timeout\" setting) than empty catalog compiles do.  For the small catalog, the \"environment_timeout\" setting of \"0\" incurs 6 MB more memory than the \"unlimited\" setting does.  This 6 MB difference correlates to the extra memory consumed when 2 or more catalog compiles occur with the \"off\" vs. the \"unlimited\" setting, described in [this comment|https://puppet.atlassian.net/browse/SERVER-1390?focusedCommentId=315962&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-315962] from SERVER-1390.", "created": "2016-07-08T09:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to \"reviewing\" so that you have a chance to take a look at it. Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-07-08T10:33:00.000000"}], "components": [], "created": "2016-06-14T10:56:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2242be35"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyncuv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75450940_*|*_3_*:*_1_*:*_81627331_*|*_10009_*:*_1_*:*_76146504_*|*_5_*:*_1_*:*_6922188199_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1915135336"}], "description": "* Start with the same setup as above, with one environment copied three times to different environment names.\n* Compile the medium or large catalog from the production environment in one JRuby and measure memory usage\n* Compile from the second environment in a second JRuby instance and measure\n* Compile from the third environment in a third JRuby instance and measure\n\nHypothesis: memory increase is still linear, but total (relevant) memory used is \u2153 of what it was in the previous experiment.\n", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "15647", "fixedVersions": ["None"], "id": "15647", "issueType": "Task", "key": "SERVER-1394", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-07-09T07:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "How much does memory usage increase when compiling the same catalog, generated from multiple (identical) environments, across multiple JRubies?", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T09:40:00.000000", "name": "1-empty-cat-1-env-10-jrubies-timeout-0-by-jruby-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10733"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:39:00.000000", "name": "1-empty-cat-1-env-10-jrubies-timeout-unlimited-by-jruby-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11197"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T09:42:00.000000", "name": "1-empty-cat-10-envs-1-jruby-timeout-0-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10657"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:39:00.000000", "name": "1-empty-cat-10-envs-1-jruby-timeout-unlimited-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11119"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T09:43:00.000000", "name": "1-small-cat-1-env-10-jrubies-timeout-0-by-jruby-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11271"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:39:00.000000", "name": "1-small-cat-1-env-10-jrubies-timeout-unlimited-by-jruby-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11038"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T09:43:00.000000", "name": "1-small-cat-10-envs-1-jruby-timeout-0-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10576"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:39:00.000000", "name": "1-small-cat-10-envs-1-jruby-timeout-unlimited-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10953"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T10:57:00.000000", "name": "10-empty-cats-1-env-10-jrubies-timeout-0-by-jruby-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11199"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T10:16:00.000000", "name": "10-empty-cats-1-env-10-jrubies-timeout-unlimited-by-jruby-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10954"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:40:00.000000", "name": "10-empty-cats-10-envs-1-jruby-timeout-0-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10877"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:40:00.000000", "name": "10-empty-cats-10-envs-1-jruby-timeout-unlimited-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10803"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:40:00.000000", "name": "10-empty-cats-10-envs-10-jrubies-timeout-0-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10732"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:40:00.000000", "name": "10-empty-cats-10-envs-10-jrubies-timeout-unlimited-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10656"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T11:27:00.000000", "name": "10-small-cats-1-env-10-jrubies-timeout-0-by-jruby-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10658"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-07T09:44:00.000000", "name": "10-small-cats-1-env-10-jrubies-timeout-unlimited-by-jruby-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11198"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:40:00.000000", "name": "10-small-cats-10-envs-1-jruby-timeout-0-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10575"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:40:00.000000", "name": "10-small-cats-10-envs-1-jruby-timeout-unlimited-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11270"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:40:00.000000", "name": "10-small-cats-10-envs-10-jrubies-timeout-0-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11196"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-07-06T16:40:00.000000", "name": "10-small-cats-10-envs-10-jrubies-timeout-unlimited-by-env-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11118"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For this ticket, I added a new scenario to the memory measurement tool, catalog-group-by-environment, and modified the catalog-one-node-multiple-jrubies-one-environment scenario (renamed to catalog-group-by-jruby) to support multiple environments.\n\nBoth the catalog-group-by-environment and catalog-group-by-jruby scenarios support the ability to perform a configurable number of catalog compiles for a configurable number of environments and jruby instances.  To create the requested number of environments, the base environment supplied to the scenario is copied to separate directory environments, with just the directory name itself being different for each environment.\n\nThe only difference between the catalog-group-by-environment and catalog-group-by-jruby scenarios is what actions are performed for each \"step\" - between which memory snapshots are taken / statistics aggregated.  For each catalog-group-by-environment step, X catalogs are compiled for each of Y JRubyPuppet instances for a specific environment instance.  For each catalog-group-by-jruby step, X catalogs are compiled for each of Y environments for a specific JRubyPuppet instance.\n\nSeveral JSON scenario files for combinations of the following variables, named accordingly, have been attached:\n\n* \"empty\" vs. \"small\" node compiles\n* Number of environments\n* Number of jrubies\n* Environment timeout 0, i.e., \"off\", vs. \"unlimited\"\n* Memory info aggregated per environment vs. per jruby\n\nHere are some observations from the results:\n\n1) As suspected from the original ticket hypothesis, there appears to be a linear increase in memory usage per-JRuby.\n\nThe following scenarios were run with 10 JRubyPuppet instances:\n\n|| Catalog || Num Compiles per JRuby || Env Timeout || 1st JRuby || Per-Additional JRubyPuppet\n| empty | 1 | 0 | 5 MB | 4 MB\n| empty | 10 | 0 | 5 MB | 4 MB\n| empty | 1 | unlimited | 5 MB | 4 MB\n| empty | 10 | unlimited | 5 MB | 4 MB\n| small | 1 | 0 | 16 MB | 15 MB\n| small | 10 | 0 | 22 MB | 21 MB\n| small | 1 | unlimited | 16 MB | 15 MB\n| small | 10 | unlimited | 16 MB | 15 MB\n\nThe increase appears to vary both per the size of the catalog being compiled and whether the \"environment_timeout\" setting is specified as \"unlimited\" or \"off\".  small catalog compiles in JRubyPuppet instances beyond the first one incur 11 - 17 MB more memory (depending upon the \"environment_timeout\" setting) than empty catalog compiles do.  For the small catalog, the \"environment_timeout\" setting of \"0\" incurs 6 MB more memory than the \"unlimited\" setting does.  This 6 MB difference correlates to the extra memory consumed when 2 or more catalog compiles occur with the \"off\" vs. the \"unlimited\" setting, described in [this comment|https://puppet.atlassian.net/browse/SERVER-1390?focusedCommentId=315962&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-315962] from SERVER-1390.\n\n2) As suspected from the original ticket hypothesis, there appears to be a linear increase per-environment within a JRuby for the \u201cenvironment_timeout\u201d \u201cunlimited\u201d setting.  There is no per-environment increase within a JRuby for the \u201cenvironment_timeout\u201d \u201coff\u201d setting.  The increase for \u201cenvironment_timeout\u201d \u201cunlimited\u201d varies per the catalog being compiled - 6 MB for the small catalog, 700 KB for the empty catalog.\n\nHere are some numbers captured where parameters were varied for the use of a single JRuby.  Compilations were done for 10 environments:\n\n|| Catalog || Num of Compiles per Environment || Env Timeout || 1st Environment || Per-Additional Environment\n| empty | 1 | 0 | 5 MB | flat\n| empty | 10 | 0 | 5 MB | flat\n| empty | 1 | unlimited | 5 MB | 700 KB\n| empty | 10 | unlimited | 5 MB | 700 KB\n| small | 1 | 0 | 16 MB | (6 MB for the 2nd environment, flat for further environments)\n| small | 10 | 0 | 22 MB | flat\n| small | 1 | unlimited | 16 MB | 6 MB\n| small | 10 | unlimited | 16 MB | 6 MB\n\nFor the following, 10 compiles for each of 10 environments for each of 10 JRubyPuppet instances were exercised with different parameters.  These numbers came out very close to the corresponding numbers where just a single JRubyPuppet instance was exercised, again appearing to indicate that the memory increase is linear per-environment / per-JRuby.\n\n|| Catalog || Env Timeout || 1st Environment (per-JRuby) || Per-Additional Environment (per-JRuby)\n| empty | 0 | 4 MB | flat\n| empty | unlimited | 4 MB | 700 KB\n| small | 0 | 21 MB | flat\n| small | unlimited | 15 MB | 6 MB\n\n3) The comparative overhead for creating a new JRubyPuppet instance (with a single environment) vs. adding an environment to an existing JRubyPuppet instance appears to increase proportionally per the size of the catalog being compiled.\n\nCombining the results from above and the findings from SERVER-1389 that JRubyPuppet instances beyond the first one consume about 35 MB of extra memory, the following table shows the approximate overhead of adding a JRubyPuppet instance (which would house a single environment) vs. just adding another environment to a JRubyPuppet instance.  The number in the right-most column is calculated as Base JRubyPuppet Overhead (JRuby Scripting Container + Ruby Puppet Initialization) + 1st Catalog Compile Overhead + 2nd and Later Catalog Compile Overhead - Extra Environment in Same JRuby Overhead:\n\n|| Catalog || Env Timeout || Base JRubyPuppet Overhead || 1st Catalog Compile Overhead || 2nd and Latest Catalog Compile Overhead || Extra Environment in Same JRubyPuppet Overhead || Additional JRubyPuppet over Environment increase\n| small | 0 | 35 MB | 15 MB | 6 MB | flat | 56 MB\n| small | unlimited | 35 MB | 15 MB | 0 | 6 MB | 44 MB\n| empty | 0 | 35 MB | 4 MB | 0 | flat | 39 MB\n| empty | unlimited | 35 MB | 4 MB | 0 | 700 KB | 38.5 MB\n\nIt would be helpful to factor in the same data for an even larger catalog in order to see if the gap between memory required for one environment in a JRubyPuppet instance vs. memory required for an additional environment in an existing JRubyPuppet instance increases further based on the size of the catalog being compiled.  This should be revisited as part of the work for SERVER-1407.", "created": "2016-07-07T11:26:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14],  I'm moving this to \"reviewing\" so that you have a chance to take a look at it. Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-07-07T11:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "lgtm, thanks!", "created": "2016-07-07T14:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For posterity, the following versions of code were in use for this run:\n\n* puppetserver-memmeasure tool - [7cddbfd|https://github.com/camlow325/puppetserver-memmeasure/commit/7cddbfd32aa15e03bd6ef4d3b6e9e6b04e3672dd]\n* puppetserver_perf_control repo - [f8342b7|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/f8342b7d926575a05cbcee413dab2d33d8e1866d]\n* Puppet Server - 2.4.0\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)", "created": "2016-07-08T09:26:00.000000"}], "components": [], "created": "2016-06-14T10:55:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, this is not code and does not need testing."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48faafe3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyncun:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75478969_*|*_3_*:*_1_*:*_519096124_*|*_10009_*:*_1_*:*_9360172_*|*_5_*:*_1_*:*_7070759534_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1395879133"}], "description": "* Copy our test environment from \u201cproduction\u201d to two additional (arbitrary) environment names\n* Compile the medium or large catalog from the production environment in 3 or so JRubies and measure memory usage\n* Trigger the same compilation, but from a different environment, across all three JRubies and measure memory usage\n* Trigger the same compilation, but from a third environment, across all three JRubies and measure memory usage\n\nHypothesis: linear increase in memory usage, per-JRuby *and* per-environment", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "15296", "fixedVersions": ["None"], "id": "15296", "issueType": "Task", "key": "SERVER-1393", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-07-07T14:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "How much does memory usage increase when compiling the same catalog, generated from multiple (identical) environments, across multiple JRubies?", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-30T16:07:00.000000", "name": "10-jrubies-1-small-catalog-env-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11269"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-30T15:43:00.000000", "name": "10-jrubies-1-small-catalog-env-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11117"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-30T15:43:00.000000", "name": "10-jrubies-10-small-catalogs-env-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11037"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-30T15:43:00.000000", "name": "10-jrubies-10-small-catalogs-env-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10952"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For this ticket, I added a new scenario to the memory measurement tool, catalog-one-node-multiple-jrubies-one-environment.  The scenario allocates a configurable number of JRubyPuppet instances and compiles a configurable number of catalogs for a specified node in each container.  Memory snapshots are taken after the JRubyPuppet instances are created, after each of the catalogs for one JRubyPuppet instance have been compiled, and after the catalog compilations are done (but before the JRubyPuppet instances are freed).\n\nThe following versions of code were selected for this run:\n\n* puppetserver-memmeasure tool - [2761ff5|https://github.com/camlow325/puppetserver-memmeasure/commit/2761ff5f6e1e59d11a635f1669f0322a48834219]\n* puppetserver_perf_control repo - [f8342b7|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/f8342b7d926575a05cbcee413dab2d33d8e1866d]\n* Puppet Server - 2.4.0\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)\n\nFour files with memory measurement results have been attached to this ticket.  Each include results where 10 JRubyPuppet instances were used and catalogs were compiled for the \u201csmall\u201d role from the puppetserver_perf_control repo:\n\n* 10-jrubies-10-small-catalogs-env-timeout-0-results.json - 10 catalogs compiled per JRubyPuppet, environment_timeout set to 0, a.k.a. \u201coff\u201d.\n* 10-jrubies-1-small-catalog-env-timeout-0-results.json - 1 catalog compiled per JRubyPuppet, environment_timeout set to \u201coff\u201d.\n* 10-jrubies-10-small-catalogs-env-timeout-unlimited-results.json - 10 catalogs compiled per JRubyPuppet, environment_timeout set to \u201cunlimited\u201d.\n* 10-jrubies-1-small-catalog-env-timeout-unlimited-results.json - 1 catalog compiled per JRubyPuppet, environment_timeout set to \u201cunlimited\u201d.\n \nHere are some observations from the results of the runs:\n\n1) For each of the scenarios run, incremental memory usage per JRubyPuppet instance exercised (beyond the first one) was fairly flat.\n\nFor each of the following scenarios, memory increased by about 15 MB per each additional JRubyPuppet instance in which a compile took place:\n\n* environment_timeout \u201cunlimited\u201d - 1 or 10 catalogs compiled\n* environment_timeout \u201coff\u201d - 1 catalog compiled\n\nFor environment_timeout \u201coff\u201d, memory increased by a little over 20 MB for each additional JRubyPuppet instance in which 10 catalog compilations took place.  This, again, is presumably due to the effect described in SERVER-1390 and SERVER-1391 where a \u201csecond\u201d copy of Puppet parser objects is kept around after the second or later compilation is attempted in a JRubyPuppet instance.  \n\n2) The very first catalog compilation performed in one JRubyPuppet increased resident memory by about 1.5 MB more than the first catalog compilation in any additional JRubyPuppet - a little over 16MB for the first vs. about 14.6 MB for each additional instance.", "created": "2016-06-30T16:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to \"reviewing\" so that you have a chance to take a look at it.  Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-06-30T16:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think we talked about this, but for posterity: your data so far seems to show something like 5MB of extra overhead per JRuby instance when the environment_timeout is disabled.  When we get to the tickets that involve using a bigger catalog, we should take note of whether that 5MB number is consistent, or whether it is some consistent proportion of the total memory for that size of catalog, or what.", "created": "2016-07-01T11:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "tl", "created": "2016-07-01T11:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}your data so far seems to show something like 5MB of extra overhead per JRuby instance when the environment_timeout is disabled.{quote}\n\nYeah, that's true for the \"small\" catalog.  For the \"empty\" catalog, though, I didn't see any extra overhead when environment_timeout is disabled - or nothing appreciable anyway.  See https://puppet.atlassian.net/browse/SERVER-1391?focusedCommentId=317755&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-317755.\n\nNot sure if that means that this extra overhead will grow with the catalog size.  I definitely agree we should look at this again when we do the bigger catalog, SERVER-1407.", "created": "2016-07-01T11:43:00.000000"}], "components": [], "created": "2016-06-14T10:55:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, this is not code and does not need testing."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@635ebbe6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn487:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75510146_*|*_3_*:*_1_*:*_80217088_*|*_10009_*:*_1_*:*_67684530_*|*_5_*:*_1_*:*_7599262784_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1247925077"}], "description": "* With environment_timeout set to unlimited, compile a medium or large catalog in the production environment in a single JRuby and observe memory usage\n* Compile the same catalog in the same environment in 2 or more additional JRuby instances and measure the increase in memory usage between each JRuby instance\n\nHypothesis: linear increase in memory usage per JRuby instance\n", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "14741", "fixedVersions": ["None"], "id": "14741", "issueType": "Task", "key": "SERVER-1392", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-07-01T11:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "How much does memory usage increase when compiling a single environment in multiple JRubies?", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-29T12:57:00.000000", "name": "mult-catalog-compile-same-env-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11268"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-29T12:57:00.000000", "name": "mult-catalog-compile-same-env-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11195"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-28T17:48:00.000000", "name": "single-catalog-compile-empty-env-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10802"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-28T17:48:00.000000", "name": "single-catalog-compile-empty-env-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11036"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-28T17:49:00.000000", "name": "single-catalog-compile-small-env-timeout-0-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10951"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-28T17:49:00.000000", "name": "single-catalog-compile-small-env-timeout-unlimited-results.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10876"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] and I paired on this ticket.  The work involved:\n\n* refactoring the single-catalog-compile scenario created for SERVER-1390 to support a node name parameter for catalog requests\n* updating the \"20160222_SERVER-1390-catalog-memory-measurement\" branch in the puppetserver_perf_control repo to classify nodes to use an \"empty\" vs. \"small\" role.\n\nThe \"empty\" role results in a catalog that just pulls in a simple notify resource whereas the \"small\" role - which was exercised for the catalog compiles done in SERVER-1390 - pulls in a number of classes related to installing a tomcat and postgresql server.  \n\nThe following versions of code were selected for this run:\n\n* puppetserver-memmeasure tool - [67c404a|https://github.com/camlow325/puppetserver-memmeasure/commit/67c404a53858f6f97910fc542bc1e4749bb893ec]\n* puppetserver_perf_control repo - [f8342b7|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/f8342b7d926575a05cbcee413dab2d33d8e1866d]\n* Puppet Server - 2.4.0\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)\n\nFour files with memory measurement results have been attached to this ticket.  Each include results where 10 catalogs were compiled.\n\n* single-catalog-compile-empty-env-timeout-0-results.json - Catalogs for the \"empty\" role where the environment_timeout setting was set to \"0\", a.k.a. \"off\".\n* single-catalog-compile-empty-env-timeout-unlimited-results.json - Catalogs for the \"empty\" role where the environment_timeout setting was set to \"unlimited\".\n* single-catalog-compile-small-env-timeout-0-results.json - Catalogs for the \"small\" role where the environment_timeout setting was set to \"0\", a.k.a. \"off\".\n* single-catalog-compile-small-env-timeout-unlimited-results.json - Catalogs for the \"small\" role where the environment_timeout setting was set to \"unlimited\".\n\nHere are some observations from the results of the runs:\n\n1) The increase in memory allocated for the first catalog compiled in a new container is significantly higher for the \u201csmall\u201d catalog (~ 16 MB) vs. the \u201cempty\u201d catalog (~ 4.8 MB). \n\n2) Memory increased by about the same amount (~ 4.8 MB) for the first \u201cempty\u201d catalog compile whether the environment-timeout flag was set to \u201coff\u201d or \u201cunlimited\u201d.\n\n3) Memory increases for \u201cempty\u201d catalog compilations beyond the first one in the container were fairly flat.  The memory increase for the second catalog compile for environment_timeout \u201cunlimited\u201d was slightly higher (14 KB) than for \u201coff\u201d (6 KB).  The mean increase after the second catalog compilation for environment_timeout \u201cunlimited\u201d, however, was lower (1.3 KB) than for \u201coff\u201d (2 KB).\n\n4) Similar to what was described in SERVER-1390 with the \u201csmall\u201d catalog, compilations of the \u201cempty\u201d catalog showed a similar effect around Puppet parser object retention with environment_timeout set to \"off\" vs. \"unlimited\".\n\nFor an environment_timeout of \u201cunlimited\u201d:\n\na) A set of {{rubyobj.RGen.MetamodelBuilder.MMBase}} objects - referenced from Puppet.Pops / Puppet.Parser.AST objects is retained after the first catalog compilation.\n\nb) No additional MMBase objects appear to be retained after any subsequent catalog compilations.\n\nFor an environment_timeout of \u201coff\u201d:\n\na) One set of MMBase objects is retained after the first catalog compilation.\n\nb) A second set of MMBase objects is retained after each subsequent catalog compilation -- but only for the latest catalog compilation which is done.  MMBase objects that had been allocated after the previous catalog compilation (except for the first one) are freed.\n\nFor the \u201cempty\u201d vs. \u201csmall\u201d catalog compilations, there were, however, some differences in terms of the number (and ratio) of objects retained and retained memory usage after the second vs. last catalog compilations.  The table below shows the number of MMBase objects and corresponding cumulative retained memory referenced by those objects.\n\n|| Catalog || Env Timeout || Objs for 1st Compile || Mem for 1st Compile || Objs After More Compiles || Mem After More Compiles ||\n| small | 0 | 11901 | 15 MB | 11873 | 6MB\n| small | unlimited | 11901 | 15 MB | 0 | 0 MB\n| empty | 0 | 28 | 7 KB | 21 | 11KB\n| empty | unlimited | 49 | 17 KB | 0 | 0 MB\n\nThis suggests that the effect of potentially extraneous memory being retained for the environment_timeout \u201coff\u201d setting might only be a problem when a significantly larger catalog is being compiled.  For the \u201csmall\u201d catalog, an incremental 15 MB ends up being consumed whereas for the small catalog there is almost no difference.\n\n\u2014-\n\nJust to see if the general trends of significantly more memory one-time being allocated after the first catalog compile and more memory one-time being allocated after the second catalog compile with environment_timeout = \u201coff\u201d for a sufficiently large catalog, I think it would be good to construct a significantly larger catalog, run a memory simulation against it, and compare the results to those for the \u201cempty\u201d and \u201csmall\u201d catalogs.\n\n\n", "created": "2016-06-29T11:27:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to \"reviewing\" so you have a chance to take a look at it. Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-06-29T11:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "On the topic of doing another round of these measurements with a to-be-created \"large\" catalog, I created SERVER-1406 and SERVER-1407 to cover creating the catalog in the control repo and adding a scenario to the memory measurement tool to analyze it, respectively.", "created": "2016-06-29T12:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Related to this ticket, I added one more scenario to the tool, [multiple-catalog-compile-same-environment|https://github.com/camlow325/puppetserver-memmeasure/commit/fa96bd804946e593f0e2907e60442cb398f238da].  This scenario compiles both a \"small\" and \"empty\" catalog within the same environment instance at each step.  This was repeated 10 times.\n\nResults are attached here as:\n\n* mult-catalog-compile-same-env-timeout-0-results.json - Results using environment_timeout = 0\n* mult-catalog-compile-same-env-timeout-unlimited-results.json - Results using environment_timeout = unlimited\n\nThe numbers were very close to the same as for the corresponding single-catalog-compile-small-env scenarios.\n\nFor environment_timeout = unlimited, both the \"small\" and \"multiple\" scenarios showed:\n\n* Increase after the first catalogs compiled (small) vs. (small + empty) of about 16 MB.\n* Nearly flat increase in memory across additional catalog compiles.\n\nWithout diving into this much further, it appears that the memory increase is not significantly compounded when both catalogs are compiled together in the same environment and same JRuby instance.  This doesn't seem unexpected in that the \"empty\" catalog is pretty small.  It also seems to suggest that there may be a \"one-time\" overhead for just compiling any catalog in an environment / JRuby instance which isn't much below that seen when the \"empty\" catalog is compiled by itself - ~ 4.8 MB.", "created": "2016-06-29T13:12:00.000000"}], "components": [], "created": "2016-06-14T10:55:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e0e35a6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyncuf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75535765_*|*_3_*:*_1_*:*_156933168_*|*_10009_*:*_1_*:*_799113_*|*_5_*:*_1_*:*_7770441176_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1066918954"}], "description": "Incoming hypotheses:\n* Assuming the same catalog in the same environment, strong referenced memory does not increase with subsequent catalog compilations (beyond the first compile), regardless of environment_timeout setting\n* Strong referenced memory increase is negligible in first compile with environment_timeout set to 0\n* Strong referenced memory increase is non-trivial in first compile with environment_timeout set to unlimited\n\nAssuming the previous tests confirm the above hypotheses, then this test would be:\n* With environment_timeout = unlimited, compile a \u201csmall\u201d catalog that exercises a small subset of the code in the environment, and observe the memory usage\n* Then compile a \u201cmedium\u201d or \u201clarge\u201d catalog that exercises a significantly greater portion of the code in the environment, and observe the memory usage.\n\nOutgoing hypothesis: the compiler/parser are lazy and only parse the files they need to, and the cache is only populated with this data, so the memory requirements for the \u201cmedium\u201d or \u201clarge\u201d catalogs are notably larger than that of the \u201csmall\u201d catalog.\n\nOnce this ticket is completed, I\u2019m pretty much assuming we\u2019ll have proven that the memory usage questions are only relevant for \u201cenvironment_timeout = unlimited\u201d, and that we can stop worrying about the \u201cenvironment_timeout = 0\u201d use case.  If that assumption is invalidated then we may need to revisit some of these remaining tickets.", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "17446", "fixedVersions": ["None"], "id": "17446", "issueType": "Task", "key": "SERVER-1391", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-29T12:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "How much does the memory usage depend on what subset of the code in the environment is actually exercised by the catalog compilation?", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-24T14:29:00.000000", "name": "10-catalogs-results-env-timeout-0-before-unlimited.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10875"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-24T14:30:00.000000", "name": "10-catalogs-results-env-timeout-unlimited-before-0.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10801"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] paired with me on adding a couple of scenarios to the memory measurement tool at commit [a97d4a6|https://github.com/camlow325/puppetserver-memmeasure/commit/a97d4a6285c890381392b06d9c70b38265a0103b].  The scenarios do the following:\n\n- Create a new JRuby ScriptingContainer\n- Initialize the container with Ruby Puppet code\n- Do a simulated in-memory catalog request.\n\nThe catalog request is dumped directly into the JRubyPuppet instance (via a .handleRequest call), so no webserver / network handling is involved.  The payload for the catalog request was constructed from a catalog request that a real Puppet agent - including that agent's facts, etc. - made to a vanilla Puppet Server.\n\nWhen the catalog requests were run, Puppet code from \"2016022_SERVER-1390-catalog-memory-measurement\" branch in the puppetlabs-puppetserver_perf_control at [this commit|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/commit/e1fca763e5369ee7cb2098854d2970e5af20d352] was installed - via r10k - in the master's code dir.  The scenarios were all run with the default [site.pp|https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/blob/20160622_SERVER-1390-catalog-memory-measurement/manifests/site.pp] file, which includes just the \"role::by_size::small\" role.  This role would produce a catalog with contents for installing a tomcat and postgresql server.\n\n--\n\nThe base scenario was run in 2 configurations: 1 with the environment_timeout set to \"unlimited\" in the puppet.conf, 1 with the environment_timeout set to 0 (i.e., \"off\").\n\nThe results are attached as:\n\n- 10-catalog-requests-env-timeout-0-before-unlimited.json - 10 catalog compiles with an environment_timeout of \"0\" run in one container before 10 catalog compiles with an environment_timeout of \"unlimited\" in another container.\n\n- 10-catalog-requests-env-timeout-unlimited-before-0.json - Same as previous except that environment_timeout \"unlimited\" compiles run before the environment_timeout \"0\" ones.\n\n---\n\nHere are some observations from the results of the runs:\n\n1) The increase in memory allocated is significantly higher for the first catalog compiled in a new container (about 15 MB - 16 MB) -- both for \"unlimited\" and \"off\" runs -- vs. later catalog compiles in the same container.  The increase is slightly higher for the very first catalog compiled in a container -- closer to 16 MB -- vs. that of the first catalog compiled in another container -- closer 15 MB.  This was true whether the first catalog compiled was for \"unlimited\" or for \"off\".\n\n2) The increase in memory allocated after the second catalog was compiled varied significantly depending upon the \"environment_timeout\" setting.  For \"unlimited\", memory increased by only about 20 - 30 Kb.  For \"off\" however, memory increased by about 5.6 MB.\n\n3) The increase in memory allocated for third and subsequent catalogs was relatively flat, although seemingly a bit higher for \"off\" (mean increase of 5-7Kb per additional catalog request) vs. \"unlimited\" (mean increase of .8 - 2.3Kb).  Considering that the standard deviation was at / above the mean for each of these, though, it may be that the amount of memory increase across additional catalog compiles would be relatively similar for both environment_timeout values.\n\n---\n\nUsing the \"Generations\" feature in YourKit and with a separate run where \"-Djruby.reify.classes=true\" was specified for the tool, I saw that 11894 \"rubyobj.RGen.MetamodelBuilder.MMBase\" objects were created (but not freed until the JRuby container was disposed of) after the first catalog compilation - both with \"unlimited\" and \"off\".\n\n- For subsequent catalog compilation with the \"unlimited\" setting, no incremental \"MMBase\" objects were present after any additional catalog compiles done.\n\n- For each subsequent catalog compilation with the \"off\" setting, a new set of 11894 \"MMBase\" objects were in memory for the \"off\" setting.  The latest set of objects would seemingly replace those present after the prior catalog was compiled - for all but the second catalog compiled for a container.  So after 10 catalog compiles, for example, 11894 \"MMBase\" objects created during catalog compilation #1 would still be in memory - along with 11894 more \"MMBase\" objects created during catalog compilation #10.  The MMBase objects created during compilations #2 - #9 would have been freed by the time compilation #10 is done.\n\nThe retained size - memory held by the objects themselves and transitively through any objects that those objects hold - for the second set of \"MMBase\" objects during environment_timeout \"off\" runs was ~5.6 MB, basically almost all of the difference in memory consumed for the \"off\" vs. \"unlimited\" runs.  In all cases, the \"MMBase\" objects were transitively held through Puppet.Pops / Puppet.Parser.AST Ruby objects.\n\nThe above suggests that there may be a \"one-time\" memory leak - maybe per environment in a JRuby instance? - where AST objects for catalog parsing may unnecessarily be duplicated in memory for environment_timeout = 0.  We should follow up with the language team as this epic winds up as there would seem to be a big benefit to getting rid of the second copy of the objects.  As we work through later tickets in this epic, it would be good to measure environment_timeout \"off\" vs. \"unlimited\" further to see if the seemingly unnecessary memory allocations are exacerbated when larger catalogs are compiled, catalogs are compiled across additional environments, and/or additional JRuby containers are being used.", "created": "2016-06-24T15:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The following versions of code were referenced by the memory measurement tool for runs done with this ticket:\n\n- Puppet Server - 2.4.0\n- Puppet - 4.5.1-76-g743255d\n- Facter - 2.4.3 (691e2b)\n- Hiera - 3.2.0 (2d49944)", "created": "2016-06-24T15:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to \"reviewing\" so you have a chance to take a look at it. Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-06-24T15:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] on this one I have a question: you said the first catalog causes a bump of ~15MB, but then with env_timeout set to 0 the next one bumps us by another ~6MB.  I'm curious whether that other 9MB have anything to do with the environment cache / AST stuff, or whether that is just incidental due to the fact that a bunch of new code is being executed for the first time.  I think maybe this gets back to something we talked about in chat earlier today", "created": "2016-06-28T19:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Jeremy Barlow on this one I have a question: you said the first catalog causes a bump of ~15MB, but then with env_timeout set to 0 the next one bumps us by another ~6MB. I'm curious whether that other 9MB have anything to do with the environment cache / AST stuff, or whether that is just incidental due to the fact that a bunch of new code is being executed for the first time.{quote}\n\nI went into some more detail about this in a [comment for SERVER-1391|https://puppet.atlassian.net/browse/SERVER-1391?focusedCommentId=317755&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-317755], a ticket where we measure the delta in memory usage for the \"small\" vs. \"empty\" catalog compiles.\n\nIt does appear that for the first catalog compile that the ~15 MB bump is almost all memory retained by the MMBase / AST / parser objects.  Without drilling into the nature of the object references, it's hard to tell how much of the retained memory is due to a \"one-time\" hit.\n\n{quote}I think maybe this gets back to something we talked about in chat earlier today", "created": "2016-06-29T11:40:00.000000"}], "components": [], "created": "2016-06-14T10:53:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49c22f22"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynirr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75616797_*|*_3_*:*_1_*:*_186103649_*|*_10009_*:*_2_*:*_418497761_*|*_5_*:*_1_*:*_7770447418_*|*_6_*:*_2_*:*_11883_*|*_10006_*:*_1_*:*_620045490"}], "description": "* Extend the driver program to trigger a catalog compilation (including a facts payload) in a single environment.  Measure how much additional memory is used after the compilation, with environment_timeout set to zero.\n* Do a few more compilations of the same catalog and see if there is additional memory consumed on each compilation or if it levels off after the first catalog.\n* Repeat the above experiments with environment_timeout set to unlimited.\n* For this task, it\u2019d probably be good to use our \u201cmedium\u201d catalog, in case the \u201csmall\u201d one doesn\u2019t exercise enough of the cache population to make it easy to observe the changes in memory usage.\n\n", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "16985", "fixedVersions": ["None"], "id": "16985", "issueType": "Task", "key": "SERVER-1390", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-29T12:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "How much memory is used by a JRuby instance after compiling a catalog?  How much does that vary based on the value of the \u201cenvironment_timeout\u201d setting?", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-24T18:17:00.000000", "name": "10-catalogs-results-env-timeout-0-before-unlimited.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10731"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-21T12:19:00.000000", "name": "results-ps-2.3.2.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11116"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-21T12:36:00.000000", "name": "results-ps-2.4.0.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10574"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Using the \"driver\" program created as part of SERVER-1388, I captured a \"results.json\" file (attached) with memory information related to initializing Ruby Puppet code within bare JRuby ScriptingContainers.\n\nFor this ticket, I ran the tool multiple times, creating 10 ScriptingContainers and initializing Ruby Puppet into those containers.  The tool was run against Puppet Server 2.3.2 (which uses JRuby 1.7.20.1).  Results were very similar across the runs.  Here is a basic summary of the results:\n\n1) The incremental amount of memory allocated for the initialization of Ruby Puppet code into the first JRuby ScriptingContainer (about 38 MB) is significantly higher than the amount of memory allocated per the initialization of Ruby Puppet into each additional ScriptingContainer (about 30 MB).\n\n2) The incremental amount of memory allocated for initializing Ruby Puppet code into ScriptingContainers 2 through 10 is roughly the same. The tool output shows a standard deviation of about 27 KB.\n\n3) Combining the results from SERVER-1388 and SERVER-1389, there appears to be an memory overhead of about 50 MB for the first ScriptingContainer running Ruby Puppet code (11.5 MB for the ScriptingContainer, 38 MB for initializing Ruby Puppet into the container) vs. about 35 MB (5 MB for the ScriptingContainer, 30 MB for initializing Ruby Puppet into the container) for each additional ScriptingContainer running Ruby Puppet code.", "created": "2016-06-21T12:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to \"reviewing\" so you have a chance to take a look at it. Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-06-21T12:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Just remembered that we have a later release out than Puppet Server 2.3.2 - d'oh.\n\nI re-ran this test with Puppet Server 2.4.0 (still JRuby 1.7.20.1) and uploaded the results as \"results-ps-2.4.0.json\". I renamed the run for Puppet Server 2.3.2 to \"results-ps-2.3.2.json\".\n\nThe data was pretty similar to the prior runs. The standard deviation for ScriptingContainers 2 - 10 was slightly lower on Puppet Server 2.4.0 - closer to 23 Kb - vs. Puppet Server 2.3.2 - closer to 27 Kb. The total memory increase for ScriptingContainer 1 and the average for 2 - 10, however, was close to the same for both Puppet Server 2.3.2 and 2.4.0.", "created": "2016-06-21T12:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For the submodules in the Ruby load path as each test was run, I had:\n\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)", "created": "2016-06-21T14:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I discovered that my original estimate of 13 MB for the incremental memory for the first ScriptingContainer created was incorrect. YourKit itself allocates up to about 2 MB from the JVM heap the first time that its Profiling APIs are invoked. From inspection of objects in subsequent heaps taken from a running JVM process via the Profiling API, it appears that this overhead is only incurred one-time.\n\nI adjusted my earlier estimate of 13 MB down to 11.5 MB for the first ScriptingContainer. Also, the memory measurement tool now compensates for this by taking at least two snapshots programmatically before doing any scenario-specific memory calculations - https://github.com/camlow325/puppetserver-memmeasure/commit/fed3137d6c15cdfa44b02e683dbd779be573f4b4.\n\nA revised results file generated as part of the work for SERVER-1390, 10-catalogs-results-env-timeout-0-before-unlimited.json, was attached to this ticket.", "created": "2016-06-24T18:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "tl", "created": "2016-06-28T19:24:00.000000"}], "components": [], "created": "2016-06-14T10:53:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@427d219f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynirj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75655782_*|*_3_*:*_1_*:*_89710219_*|*_10009_*:*_1_*:*_631415852_*|*_5_*:*_1_*:*_7830472440_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_443506760"}], "description": "* Extend the previous driver program to load the Puppet Ruby code into a ScriptingContainer and measure the delta in memory usage\n* Extend that to do it to a few more ScriptingContainer instances to determine whether or not there is an initial cost in the first instance that isn\u2019t applicable to subsequent instances, or whether there is a predictable, fixed amount of memory overhead involved in loading the puppet code into each ScriptingContainer\n", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "16805", "fixedVersions": ["None"], "id": "16805", "issueType": "Task", "key": "SERVER-1389", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-28T19:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "How much memory is required to load Puppet\u2019s ruby code into JRuby?", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-24T16:15:00.000000", "name": "10-catalogs-results-env-timeout-0-before-unlimited.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11194"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-21T12:19:00.000000", "name": "results-ps-2.3.2.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11035"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-06-21T12:36:00.000000", "name": "results-ps-2.4.0.json", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11267"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I created the first version of the \"driver\" program to measure memory here - https://github.com/camlow325/puppetserver-memmeasure/commit/f9e6a430194b2b658df7243e5bc7b2b587adfa67.\n\nThe \"driver\" program at that commit measures memory usage related to the creation of bare JRuby ScriptingContainers (work for this ticket) along with incremental memory usage in those containers when Ruby Puppet is initialized into them (work for SERVER-1389).\n\nThe \"driver\" program uses the YourKit Profiling API (https://www.yourkit.com/docs/java/help/api.jsp) to programmatically take memory snapshots of the running process and extract the size of objects with strong references that exist on the heap from the snapshots.  A \"results.json\" file (attached) with memory information is written to disk at the end of a tool run.\n\nFor this ticket, I ran the tool multiple times, creating 10 ScriptingContainers and initializing Ruby Puppet into those containers.  The tool was run against Puppet Server 2.3.2 (which uses JRuby 1.7.20.1).  Results were very similar across the runs.  Here is a basic summary of the results:\n\n1) The incremental amount of memory allocated for the creation of the first ScriptingContainer in the process (about 11.5 MB) is significantly higher than the amount of memory allocated per each additional ScriptingContainer which is created (about 5 MB).\n\n2) The incremental amount of memory allocated for ScriptingContainers 2 through 10 is roughly the same.  The tool output shows a standard deviation of about 40 KB.  The second ScriptingContainer created results in about 1 KB more additional memory being allocated (about 4.9 MB - 5147216 bytes) than any of the subsequent ScriptingContainers (max of about 4.8 MB - 5030736 bytes).", "created": "2016-06-21T11:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm moving this to \"reviewing\" so you have a chance to take a look at it.  Once you're satisfied that we got the data you were hoping for, I think we can close this out.", "created": "2016-06-21T11:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Just remembered that we have a later release out than Puppet Server 2.3.2 - d'oh.\n\nI re-ran this test with Puppet Server 2.4.0 (still JRuby 1.7.20.1) and uploaded the results as \"results-ps-2.4.0.json\".  I renamed the run for Puppet Server 2.3.2 to \"results-ps-2.3.2.json\".\n\nThe data was pretty similar to the prior runs.  The standard deviation for ScriptingContainers 2 - 10 was slightly higher on Puppet Server 2.4.0 - closer to 50 Kb - vs. Puppet Server 2.3.2 - closer to 40 Kb.  The total memory increase for ScriptingContainer 1 and the average for 2 - 10, however, was close to the same for both Puppet Server 2.3.2 and 2.4.0.", "created": "2016-06-21T12:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For the submodules in the Ruby load path as each test was run, I had:\n\n* Puppet - 4.5.1-76-g743255d\n* Facter - 2.4.3 (691e2b)\n* Hiera - 3.2.0 (2d49944)", "created": "2016-06-21T14:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I discovered that my original estimate of 13 MB for the incremental memory for the first ScriptingContainer created was incorrect.  YourKit itself allocates up to about 2 MB from the JVM heap the first time that its Profiling APIs are invoked.  From inspection of objects in subsequent heaps taken from a running JVM process via the Profiling API, it appears that this overhead is only incurred one-time.\n\nI adjusted my earlier estimate of 13 MB down to 11.5 MB for the first ScriptingContainer.  Also, the memory measurement tool now compensates for this by taking at least two snapshots programmatically before doing any scenario-specific memory calculations - https://github.com/camlow325/puppetserver-memmeasure/commit/fed3137d6c15cdfa44b02e683dbd779be573f4b4.\n\nA revised results file generated as part of the work for SERVER-1390, 10-catalogs-results-env-timeout-0-before-unlimited.json, was attached to this ticket.\n\n", "created": "2016-06-24T16:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "So the tl", "created": "2016-06-28T19:20:00.000000"}], "components": [], "created": "2016-06-14T10:52:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e439623"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn6cn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Missed adding it to the sprint before it started"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75678636_*|*_3_*:*_1_*:*_503956161_*|*_10009_*:*_1_*:*_632139390_*|*_5_*:*_1_*:*_7830670121_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_28331162"}], "description": "* Create a driver program that instantiates a ScriptingContainer and measures its memory consumption\n* Extend the program to create a few more ScriptingContainers and measure their memory consumption compared to the cost of the first one\n", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "16447", "fixedVersions": ["None"], "id": "16447", "issueType": "Task", "key": "SERVER-1388", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-28T19:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "How much memory do JRuby instances use, w/o Puppet?", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] created a new control repo at https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control.  It includes some forge modules and a couple of roles:\n\n1) An \"empty\" role, one which just has a simple \"notify\" resource - https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/blob/13ec24db9a8cf43c034cd3f1ce4af1485d33ccc7/site/role/manifests/by_size/empty.pp.\n\n2) A \"small\" role, which includes code for installing tomcat and postgresql - https://github.com/puppetlabs/puppetlabs-puppetserver_perf_control/blob/13ec24db9a8cf43c034cd3f1ce4af1485d33ccc7/site/role/manifests/by_size/small.pp.\n\n[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] and I successfully installed code from this via r10k for the work done in SERVER-1390.\n\nI think the work from this ticket has basically been satisfied.  For later tickets that we do in the \"Environment Isolation Memory Analysis\" epic, we can look to add variations on the existing roles / Puppet code content if/when it is determined that we might need to - e.g., if we want to see if there's a more significant impact on memory usage with a significantly larger catalog than the \"small\" one that the control repo would currently allow for producing.  I think that work could be covered as part of those tickets so am closing this ticket.", "created": "2016-06-24T16:13:00.000000"}], "components": [], "created": "2016-06-14T10:52:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@261fb113"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1377"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn6br:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "blocker for perf testing and env iso memory r&d"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_17795587_*|*_3_*:*_1_*:*_8875531_*|*_10009_*:*_1_*:*_856694878_*|*_5_*:*_1_*:*_8187431286_*|*_6_*:*_1_*:*_0"}], "description": "We need an r10k control repo to use for ongoing performance and memory testing.  This repo will be used specifically for the \"Environment Isolation Memory Analysis\" epic, but also for defining performance tests in the \"Gatling Automation\" epic.\n\nIt is probably best that we treat the \"production\" branch / environment of this control repo as the development mainline, and for given memory / perf tests, we create fixed branches off of the production branch and use those for the testing.  That way we should be able to be assured that those branches will not change over time.  We should probably come up with some naming convention that includes a date in the branch name, and consider the branches immutable from the point in time that they are created off of the production branch.\n\nBuilding out this repo will be an ongoing task, that will include at least the following work:\n\n* Create the control repo and populate it with some forge modules\n* Create a role that exercises a very minimal (almost empty?) catalog\n* Create a role that exercises a moderate amount of the code from the environment (something on par with what catalog zero does in terms of resource count?)\n* Create a role that exercises a very high percentage of the code from the environment\n\nWe can probably get away with holding off on the last bullet point for a while; for this ticket, the goal will be to tackle at least the first two or three bullet points, and then decide when we think it's far enough along.  Before closing this ticket we should probably create another ticket to represent whatever work didn't get done for this one.\n", "epicLinkSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "estimate": "PT0S", "externalId": "16144", "fixedVersions": ["None"], "id": "16144", "issueType": "Task", "key": "SERVER-1387", "labels": [], "originalEstimate": "PT0S", "parent": "14740", "parentSummary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-24T16:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Set up a control repo for perf and memory testing", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "When bumping a Puppet Core dependency (submodule):\n* We have to use Ruby Facter instead of C++ Facter, so we should be on the latest of the 2.x series of Facter\n* Puppet and Hiera should be relatively recent\n* If you're bumping a submodule it's probably Puppet but it wouldn't hurt you to check out the other submodules keeping the above two facts in mind\n* When bumping Puppet there is a spec test that ensures we can get a version string out of Puppet's Ruby code (ie everything is loading correctly). The version string is hardcoded and you will probably have to bump it in this test.\n* The versions of Puppet, Facter, and Hiera in submodules are used in the dev environment, repl, and spec/lein tests. They are *not* used in the acceptance tests.\n* You should ensure that the version of puppet-agent being used in the acceptance tests *at least* uses the same version of Puppet as in the dev environment (bonus points for Hiera, until we can use CFacter we cannot use the same version of Facter in our dev env as we do in prod). To get the acceptance tests to use a version of puppet-agent you need to set the default value for {{:puppet_version}} and {{:puppet_build_version}} in the helper.rb script.\n*  You must ensure that the version of puppet-agent pinned in the acceptance tests is also a build that has passed nightlies/been promoted into PE, otherwise there may not be builds for all of our supported platforms (agent smoke tests do not build for all master platforms).", "created": "2016-06-14T11:07:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "When running pe-puppet-server-extensions acceptance tests:\n* You must be run using Ruby < 2.2 (1.9 is what I then have to use).\n* You must set the {{BUILD_PACKAGE_VERSION}} environment variable. This is a build version similar to: {{2016.2.0.10.SNAPSHOT.2016.06.10T0958}}\n* If you want to test puppetserver changes in conjunction with pe-puppet-server-extensions you will need to update the Rakefile's {{PUPPETSERVER_REPO}} and {{PUPPETSERVER_ACCEPTANCE_TESTS_REF}} constants.\n* The tests can be ran relatively easily with {{./acceptance/scripts/testrun.sh}} from the project root (you may have issues if using custom Bundler settings).\n* If you do not use the script - from the project root - you will need to:\n** Export {{GEM_SOURCE=http://rubygems.delivery.puppetlabs.net}}\n** Run bundle install\n** Set {{PLATFORM}}, {{LAYOUT}} environment variables to something like {{redhat7}} and {{64mdca}} respectively.\n\n\nAlso, artifacts from a standard run {{puppetserver/}}, {{Gemfile.lock}}, and {{tmp/}} are not in the .gitignore.\n", "created": "2016-06-14T12:58:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "My goodness, everything went green!", "created": "2016-06-14T19:10:00.000000"}], "components": [], "created": "2016-06-14T09:05:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cfcd27"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6z8v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_176082_*|*_3_*:*_1_*:*_36073286_*|*_5_*:*_1_*:*_9040901023_*|*_6_*:*_1_*:*_0"}], "description": "Tracking ticket for the various papercuts and weird interactions that have kept me busy dealing with CI rather than working on features.\n\n\nThere's been a number of gotchas that I've found while (un)coordinating promotions for several projects across teams (jade, emerald, client, integration). Getting this all working, documenting the gotchas, and fixing what I can by the end of the sprint is the scope of this ticket.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17445", "fixedVersions": ["None"], "id": "17445", "issueType": "Task", "key": "SERVER-1386", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2016-06-14T19:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "In Which Justin Looks at CI Wrongly and the Whole Damned Thing Catches Fire", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "puppetserver CI is green.  Please re-open if this issue isn't actually resolved for some reason.", "created": "2016-06-14T08:51:00.000000"}], "components": [], "created": "2016-06-13T13:40:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25c96504"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6ydz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_17674_*|*_3_*:*_1_*:*_69004038_*|*_5_*:*_1_*:*_9077872685_*|*_6_*:*_1_*:*_0"}], "description": "The puppetserver (master) Smoke Acceptance Tests and Puppet 3 Compatibility Acceptance Test Suite are currently failing due to issues around the reformatting of error message.  These issues are better documented in PUp-3827, but we don't want to convert that ticket to be a CI blocker.\n\nin the near future when PUP-3827 is resolved, and puppetserver CI tests are green, this ticket can be resolved as well.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15631", "fixedVersions": [], "id": "15631", "issueType": "CI Blocker", "key": "SERVER-1385", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2016-06-14T08:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver (master) CI failing on issues related to error message modifications", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "Puppet status\tCRIT - CRIT (failed resources) - changed_resources: 158, failed_resources: 18, run_time: 16.560427 run_age: 1027\n\nwhen ran puppet agent on server its taking approximately 10min to finish catalog\nNotice: Finished catalog run in 575.81 seconds\nAnd finally getting\nError: /Stage[main]/Timezone/Package[tzdata]: Could not evaluate: Cannot allocate memory - fork(2)\nError: /Stage[main]/Ssh::Client::Install/Package[openssh-clients]: Could not evaluate: Cannot allocate memory - fork(2)\nsame resource failures (Cannot allocate memory - fork(2))", "created": "2016-06-13T09:17:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "$ps aux --sort -rss | head\nUSER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND\npuppet    3243 30.7 29.8 5901504 2438332 ?     Ssl  Jun08 2100:39 java -Xms2g -Xmx2g -XX:MaxPermSize=256m -XX:OnOutOfMemoryError=kill -9 %p -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetserver -Djava.security.egd=/dev/urandom -cp /usr/share/puppetserver/puppet-server-release.jar clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetserver/conf.d -b /etc/puppetserver/bootstrap.cfg\nroot      3216  0.0  0.5 254260 48272 ?        Ssl  Jun08   0:16 /usr/bin/ruby /usr/bin/puppet agent --no-daemonize\nroot      2026  0.0  0.4  69576 35268 ?        Ss   Jun08   0:51 /usr/lib/systemd/systemd-journald\nroot      3241  0.0  0.3 391548 24928 ?        Ssl  Jun08   0:19 /usr/sbin/rsyslogd -n\nroot      3240  0.0  0.2 553072 20432 ?        Ssl  Jun08   0:52 /usr/bin/python -Es /usr/sbin/tuned -l -P\nroot      3230  0.0  0.1 222972 15668 ?        Ss   Jun08   3:43 /usr/sbin/snmpd -LS0-6d -Lf /dev/null -p /var/run/snmpd.pid -f\nroot      3381  0.0  0.1 378904 14224 ?        Sl   Jun08   1:57 /usr/bin/python2 -s /usr/bin/fail2ban-server -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid -x -b", "created": "2016-06-13T09:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:df705ad9-1b84-496c-af18-e65c6054c588] Sometimes, if Puppet Server isn't given enough memory to handle the load that you are putting on it, it can get into a state where the JVM is trying to do a lot of garbage collection work to free up memory.  When this happens, it can spend a lot of CPU on the attempted garbage collections.  Often this can be alleviated by increasing the maximum heap size for the process.\n\nCan you provide us with some data about your configuration?\n\n* What version of Puppet Server are you running?\n* How many JRuby instances do you have Puppet Server configured to use?\n* What is the value of the max heap size (-Xmx flag) for Puppet Server (it appears from your output above that this is set to 2g)?\n* How many agents are you running against Puppet Server?\n* How many Puppet environments do you have?\n* Roughly how many Puppet modules do you have in each of your environments?\n\nWould also be interested in knowing how long the server runs normally before getting into this state.\n\nIf the issue is related to memory, then based on the settings you appear to be running with above, I would expect that eventually the server might give up on its attempts to free memory via garbage collection, and then it will dump a memory snapshot as a {{.hprof}} file into your {{/var/log/puppetserver}} directory.  If this happens, we could potentially get a copy of that file from you and examine it to see if there appears to be anything else going wrong in your setup, or if the issue is just that you need more memory to handle the load that your server is experiencing.\n\nThere are some notes about the tuning parameters available at these URLs:\nhttps://docs.puppet.com/puppetserver/latest/tuning_guide.html\nhttps://docs.puppet.com/pe/latest/config_puppetserver.html", "created": "2016-06-13T10:17:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "Hi thanks for reply please find below info and update ASAP what can be done.\n1)puppetserver --version\npuppetserver version: 1.1.3\n\npuppet --version\n3.8.6\n\n2)JAVA_ARGS=\"-Xms2g -Xmx2g -XX:MaxPermSize=256m\"\n\n3)350 agents\n\n4)50 modules", "created": "2016-06-13T10:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:df705ad9-1b84-496c-af18-e65c6054c588] so you are only using one Puppet environment?  {{production}}?\n\nThe easiest things to try would be to decrease the number of JRubies (via {{max-active-instances}} setting) or to increase the value of -Xmx (perhaps just try 4g to see if that makes a difference, and then fine tune it from there).\n\nThe links I posted have more detail about how these tuning settings work.", "created": "2016-06-13T10:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:df705ad9-1b84-496c-af18-e65c6054c588] any luck with those recent suggestions?", "created": "2016-06-22T10:06:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "Hi chris,\n\nUnfortunately  that's in production with many running nodes,so my team has to take decision on it.thanks for tracking it.", "created": "2016-06-22T10:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:df705ad9-1b84-496c-af18-e65c6054c588] Understood", "created": "2016-06-29T10:06:00.000000"}], "components": [], "created": "2016-06-13T09:12:00.000000", "creator": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@dc51d96"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6y3r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1385644874_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_21152002577"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16441", "fixedVersions": [], "id": "16441", "issueType": "Bug", "key": "SERVER-1384", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "resolution": "Fixed", "resolutionDate": "2017-03-01T04:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "100% Cpu consumption by puppetserver ", "timeSpent": "PT0S", "updated": "2017-03-01T04:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "Hello when i run puppet agent i am facing this issue\n\n[root@client ~]# puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find data item classes in any Hiera data file and no default supplied at /etc/puppet/manifests/site.pp:2 on node client.puppet.com\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog", "created": "2016-06-12T06:39:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "[root@server ~]# cat /etc/hiera.yaml \n---\n:backends:\n- yaml\n:logger: console\n:hierarchy:\n- %{::clientcert}\n- common\n:yaml:\n:datadir: /etc/puppet/hieradata\n", "created": "2016-06-12T06:42:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "Here is my puppet main configuration file \n[root@server ~]# cat /etc/puppet/puppet.conf \n[master]\nhiera_config = /etc/puppet/hiera.yaml\n", "created": "2016-06-12T06:45:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "hello i got resolved the issue as fallows\n\n[root@server ~]# hiera classes ::environment=dev environment=dev --debug\nDEBUG: Sun Jun 12 18:24:45 +0530 2016: Hiera YAML backend starting\nDEBUG: Sun Jun 12 18:24:45 +0530 2016: Looking up classes in YAML backend\nDEBUG: Sun Jun 12 18:24:45 +0530 2016: Looking for data source common\nDEBUG: Sun Jun 12 18:24:45 +0530 2016: Cannot find datafile /var/lib/hiera/common.yaml, skipping\nnil\n\n[root@server hiera]# touch common.yaml\n\n[root@server hiera]# vim common.yaml  \n---\n\nclasses:\n - 'timezone'\ntimezone::region: 'America'\ntimezone::locality: 'New_York'\n\n[root@server hiera]# hiera classes ::environment=dev environment=dev --debug\nDEBUG: Sun Jun 12 18:26:19 +0530 2016: Hiera YAML backend starting\nDEBUG: Sun Jun 12 18:26:19 +0530 2016: Looking up classes in YAML backend\nDEBUG: Sun Jun 12 18:26:19 +0530 2016: Looking for data source common\nDEBUG: Sun Jun 12 18:26:19 +0530 2016: Found classes in common\n[\"timezone\"]\n\n-------------------------------------------------------------------------------------\n[root@client ~]# puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for client.puppet.com\nInfo: Applying configuration version '1465731462'\nNotice: /Stage[main]/Timezone/File[/etc/sysconfig/clock]/content: \n--- /etc/sysconfig/clock\t2016-06-01 16:49:41.585000001 +0530\n+++ /tmp/puppet-file20160612-3222-12u9pcg-0\t2016-06-12 18:26:39.765000034 +0530\n@@ -1,4 +1,2 @@\n-# The time zone of the system is defined by the contents of /etc/localtime.\n-# This file is only for evaluation by system-config-date, do not rely on its\n-# contents elsewhere.\n-ZONE=\"Asia/Kolkata\"\n+ZONE=\"America/New_York\"\n+UTC=true\n\nInfo: Computing checksum on file /etc/sysconfig/clock\nInfo: /Stage[main]/Timezone/File[/etc/sysconfig/clock]: Filebucketed /etc/sysconfig/clock to puppet with sum 357ec983f67a2b384f87a86e0ee5603d\nNotice: /Stage[main]/Timezone/File[/etc/sysconfig/clock]/content: content changed '{md5}357ec983f67a2b384f87a86e0ee5603d' to '{md5}0a26b7c2248ec01bfe7f75595eaa1cab'\nNotice: /Stage[main]/Timezone/File[/etc/localtime]/content: \nBinary files /etc/localtime and /tmp/puppet-file20160612-3222-1gujhfp-0 differ\n\nInfo: Computing checksum on file /etc/localtime\nInfo: /Stage[main]/Timezone/File[/etc/localtime]: Filebucketed /etc/localtime to puppet with sum 48e679db395e606fa97d134fe1bf82ee\nNotice: /Stage[main]/Timezone/File[/etc/localtime]/content: content changed '{md5}48e679db395e606fa97d134fe1bf82ee' to '{md5}e4ca381035a34b7a852184cc0dd89baa'\nNotice: Finished catalog run in 0.52 seconds\n------------------------------------------------------------------------------\n[root@client ~]# date \nSun Jun 12 08:58:25 EDT 2016\n\n[root@client ~]# cat /etc/sysconfig/clock \nZONE=\"America/New_York\"\nUTC=true\n--------------------------------------------------------------------\n", "created": "2016-06-12T08:36:00.000000"}, {"author": "5c72625f47a54a6728e5a93a", "body": "Hello, I am not quite sure what have you changed, did you create a file /var/lib/hiera/common.yaml or something else ?\nthanks", "created": "2017-02-28T23:58:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "[~accountid:5c72625f47a54a6728e5a93a]\nYes i did same at that point of instance.did u have same error?", "created": "2017-03-01T04:37:00.000000"}, {"author": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "body": "[~accountid:5c72625f47a54a6728e5a93a]\nHope this out put may help you,actually we need to create a symlink from \"/etc/puppet/hieradata/common.yaml\" to /var/lib/hiera/common.yaml\n\n[mshaik@server ~]$ ll /var/lib/hiera/common.yaml \nlrwxrwxrwx 1 root root 33 Nov 29 19:21 /var/lib/hiera/common.yaml -> /etc/puppet/hieradata/common.yaml\n", "created": "2017-03-01T04:46:00.000000"}], "components": ["Puppet Server"], "created": "2016-06-12T06:36:00.000000", "creator": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45987b7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6xwf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_604539_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_30653626"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15027", "fixedVersions": [], "id": "15027", "issueType": "Task", "key": "SERVER-1383", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "resolution": "Fixed", "resolutionDate": "2016-06-12T15:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Hiera error", "timeSpent": "PT0S", "updated": "2017-03-01T04:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "/cc [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]", "created": "2016-06-08T12:52:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "+1 on an automated test.  In my mind, this is the primary reason we wanted HUP as the CRL changing is more common than settings changes.  ", "created": "2016-06-08T12:58:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We want this to be a beaker test because huping is hard to emulate/test from inside the process.", "created": "2016-06-08T13:00:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "For testing:\n# {{puppet agent --test}} from agent A - should succeed\n# {{puppet agent --test}} from agent B - should succeed\n# Revoke agent A's certificate\n# {{puppet agent --test}} from agent A - should succeed\n# {{puppet agent --test}} from agent B - should succeed\n# HUP server\n# {{puppet agent --test}} from agent A - should fail\n# {{puppet agent --test}} from agent B - should succeed\n", "created": "2016-06-10T08:33:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Validated manually on puppetserver 2.5.0.master.SNAPSHOT.2016.06.10T1245 and puppet-agent 4.6.0. Now to automate it.", "created": "2016-06-10T14:43:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Testing against master with standalone agent worked as expected.\n\nA master + agent with no standalone agents\n{code}\n(SERVER-1380) CRL should reload after a server HUP\n\n  nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) 10:20:19$ puppet agent --configprint certname\n    nck4zjvvpsg73gh.delivery.puppetlabs.net\n\n  nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) executed in 1.79 seconds\n\n  * Demonstrate that the existing certs work\n\n  * Revoke the agent certs\n\n  * HUP the server\n\n    nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) 10:20:21$ pgrep -f puppetserver\n      3541\n\n    nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) executed in 0.09 seconds\n\n    nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) 10:20:21$ kill -HUP 3541\n\n    nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) executed in 0.05 seconds\n\n    nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) 10:20:21$ puppet agent --configprint hostcert\n      /etc/puppetlabs/puppet/ssl/certs/nck4zjvvpsg73gh.delivery.puppetlabs.net.pem\n\n    nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) executed in 1.58 seconds\n\n    nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) 10:20:22$ puppet agent --configprint hostprivkey\n      /etc/puppetlabs/puppet/ssl/private_keys/nck4zjvvpsg73gh.delivery.puppetlabs.net.pem\n\n    nck4zjvvpsg73gh.delivery.puppetlabs.net (redhat7-64-1) executed in 1.59 seconds\n\n  * Demonstrate that the certs are rejected\nBegin teardown\nEnd teardown\nacceptance/suites/tests/authorization/hup_reloads_crl.rb passed in 7.10 seconds\n      Test Suite: tests @ 2016-06-13 10:20:19 -0700\n\n      - Host Configuration Summary -\n\n\n              - Test Case Summary for suite 'tests' -\n       Total Suite Time: 7.10 seconds\n      Average Test Time: 7.10 seconds\n              Attempted: 1\n                 Passed: 1\n                 Failed: 0\n                Errored: 0\n                Skipped: 0\n                Pending: 0\n                  Total: 1\n{code}\n\nA master with no agents whatsoever\n\n{code}\n(SERVER-1380) CRL should reload after a server HUP\n\n  j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) 10:26:59$ puppet agent --configprint certname\n    j81qdoxortrn67l.delivery.puppetlabs.net\n\n  j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) executed in 0.93 seconds\n\n  * Demonstrate that the existing certs work\n\n  * Revoke the agent certs\n\n  * HUP the server\n\n    j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) 10:26:59$ pgrep -f puppetserver\n      3725\n\n    j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) executed in 0.06 seconds\n\n    j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) 10:27:00$ kill -HUP 3725\n\n    j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) executed in 0.05 seconds\n\n    j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) 10:27:00$ puppet agent --configprint hostcert\n      /etc/puppetlabs/puppet/ssl/certs/j81qdoxortrn67l.delivery.puppetlabs.net.pem\n\n    j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) executed in 1.10 seconds\n\n    j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) 10:27:01$ puppet agent --configprint hostprivkey\n      /etc/puppetlabs/puppet/ssl/private_keys/j81qdoxortrn67l.delivery.puppetlabs.net.pem\n\n    j81qdoxortrn67l.delivery.puppetlabs.net (redhat7-64-1) executed in 1.00 seconds\n\n  * Demonstrate that the certs are rejected\nBegin teardown\nEnd teardown\nacceptance/suites/tests/authorization/hup_reloads_crl.rb passed in 7.03 seconds\n      Test Suite: tests @ 2016-06-13 10:26:59 -0700\n\n      - Host Configuration Summary -\n\n\n              - Test Case Summary for suite 'tests' -\n       Total Suite Time: 7.03 seconds\n      Average Test Time: 7.03 seconds\n              Attempted: 1\n                 Passed: 1\n                 Failed: 0\n                Errored: 0\n                Skipped: 0\n                Pending: 0\n                  Total: 1\n{code}\n", "created": "2016-06-13T11:19:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Passed CI at https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_smoke-master/116/testReport/\n", "created": "2016-06-16T10:07:00.000000"}], "components": [], "created": "2016-06-08T12:51:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@21d51307"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn6c7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth for additional points"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_319875207_*|*_1_*:*_1_*:*_161883714_*|*_10007_*:*_1_*:*_109588591_*|*_3_*:*_1_*:*_213577_*|*_5_*:*_1_*:*_4930833129_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_58508701_*|*_10006_*:*_1_*:*_31277874"}], "description": "We're updating the docs to reflect that HUP should be able to be used to pick up changes to the CRL.  I'm about 85-90% sure that that is the case because we are restarting Jetty and passing it an explicit path to a CRL file, but we should do an end-to-end manual test of that.\n\nWe might even want to consider having an automated test for this, because it is part of an extremely desirable workflow for de-provisioning nodes.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16440", "fixedVersions": ["SERVER 2.5.0"], "id": "16440", "issueType": "Task", "key": "SERVER-1380", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-16T10:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "verify that CRL is reloaded on HUP", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for the bug report, we'll look into it.  Does this cause a failure?  Or is it just logged as a warning?", "created": "2016-06-07T06:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I was able to reproduce the warning message by running {{lein gem}} from source", "created": "2016-06-07T07:11:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "It's just a logged warning as far as I can tell, I've not seen any issues arising from it.", "created": "2016-06-07T07:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It does not actually appear to be from the TK changes", "created": "2016-06-07T07:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4] great, thanks for the info.  We'll get this fixed in the next normal release then.", "created": "2016-06-07T07:49:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "I agree with [~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4].  I looked through the provider code, and think this is a warning that can be safely ignored.", "created": "2016-06-07T08:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:054fa98a-5e29-48e7-aeca-d5542926f8ba] excellent, thanks for the confirmation.", "created": "2016-06-07T10:23:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed with team in standup this morning.  ", "created": "2016-06-09T12:13:00.000000"}], "components": [], "created": "2016-06-07T03:30:00.000000", "creator": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d6c82ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynirz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server was using a deprecated API for a clojure CLI option-parsing library, and as a result, calls to `puppetserver gem` (either directly, or indirectly by using a `puppetserver_gem` package resource in your puppet catalog) would generate a warning message."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "easy, bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_96566855_*|*_1_*:*_1_*:*_113205385_*|*_10007_*:*_2_*:*_64054748_*|*_3_*:*_1_*:*_3684075_*|*_5_*:*_1_*:*_5445418171_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_9309156"}], "description": "Update 2016-06-08: Modifying the description to reflect that this ticket is being split into two chunks of work.  This ticket should cover the work of upgrading puppetserver to the latest version of kitchensink and validating that that gets rid of the warning message (which is currently reproducible when running from source by running {{lein gem -c /path/to/conf -- list}}).\n\nI also split off TK-381 to capture the work of cleaning up the dependency list in tk-auth; I'm not sure whether that will be a prereq to getting rid of the warning message or not, but we should go ahead and get it done anyway just to avoid future issues.  And if it turns out that we can't get rid of the warning w/o fixing tk-auth and doing a release of it, then let's keep this ticket open until that has happened.\n\nORIGINAL DESCRIPTION:\n----------------------------------\n\nHi\n\nAfter upgrading to puppetserver 2.4, my puppet runs on my masters produce the following warning.\n{code}\nWarning: Could not match Warning: The following options to parse-opts are unrecognized: :flag\n{code}\n\nWe, (thanks [~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4]!) think this happens when the puppetserver_gem package provider does a [puppetserver gem list|https://github.com/puppetlabs/puppetlabs-puppetserver_gem/blob/master/lib/puppet/provider/package/puppetserver_gem.rb#L17]\n\n{code}\n[root@master ~]# bash -x /opt/puppetlabs/bin/puppetserver gem list\n+ set -a\n+ '[' -r /etc/default/puppetserver ']'\n+ '[' -r /etc/sysconfig/puppetserver ']'\n+ . /etc/sysconfig/puppetserver\n++ JAVA_BIN=/usr/bin/java\n++ JAVA_ARGS='-Xms2G -Xmx2G -XX:MaxPermSize=256m'\n++ USER=puppet\n++ GROUP=puppet\n++ INSTALL_DIR=/opt/puppetlabs/server/apps/puppetserver\n++ CONFIG=/etc/puppetlabs/puppetserver/conf.d\n++ BOOTSTRAP_CONFIG=/etc/puppetlabs/puppetserver/bootstrap.cfg\n++ SERVICE_STOP_RETRIES=60\n+ set +a\n+ CLI_DIR=/opt/puppetlabs/server/apps/puppetserver/cli\n+ CLI_APP_DIR=/opt/puppetlabs/server/apps/puppetserver/cli/apps\n++ ls /opt/puppetlabs/server/apps/puppetserver/cli/apps\n+ APPS='foreground\ngem\nirb\nruby'\n+ '[' -z gem ']'\n+ '[' gem = --help ']'\n+ '[' gem = -h ']'\n+ '[' gem = --version ']'\n+ '[' gem = -v ']'\n+ execsubcommand gem list\n+ sub=gem\n+ shift\n+ cmd=/opt/puppetlabs/server/apps/puppetserver/cli/apps/gem\n+ '[' -e /opt/puppetlabs/server/apps/puppetserver/cli/apps/gem ']'\n+ exec /opt/puppetlabs/server/apps/puppetserver/cli/apps/gem list\nWarning: The following options to parse-opts are unrecognized: :flag\n\n*** LOCAL GEMS ***\n\ndeep_merge (1.0.1)\nhiera-eyaml (2.1.0)\nhighline (1.6.21)\njar-dependencies (0.1.13)\njruby-openssl (0.9.7 java)\njson (1.8.0 java)\nrake (10.1.0)\nrdoc (4.1.2)\ntrollop (2.1.2)\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15026", "fixedVersions": ["SERVER 2.5.0"], "id": "15026", "issueType": "Bug", "key": "SERVER-1378", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "resolution": "Fixed", "resolutionDate": "2016-06-10T11:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "`puppetserver gem list` emits `The following options to parse-opts are unrecognized: :flag`", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-06-06T17:30:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3896968c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-1"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Environment Isolation Memory Analysis"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_grey"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn9yn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2669289285_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_1732379799"}], "description": "Google doc notes from Epic Kickoff on the testing we plan on doing: https://docs.google.com/document/d/1s7wSOyA8DtZnf2giJL0N9J1DgPuEOVR8R0yEGd5lUqg/edit#", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14740", "fixedVersions": [], "id": "14740", "issueType": "Epic", "key": "SERVER-1377", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-07-27T16:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "R&D on Puppet Server memory usage, w/rt affect on possible strategies for Environment Isolation", "timeSpent": "PT0S", "updated": "2016-07-28T00:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] assigning back to you if there's anything you want to do before this is moved to done.", "created": "2016-07-12T19:43:00.000000"}], "components": [], "created": "2016-06-06T17:15:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2849a70c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn47z:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "next task in perf testing automation"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_662001_*|*_10007_*:*_1_*:*_561049995_*|*_3_*:*_2_*:*_590534702_*|*_10009_*:*_1_*:*_58864836_*|*_5_*:*_1_*:*_6560896772_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1966959930"}], "description": "The current pipeline for PE-15655 defines a single pipeline that runs through a PE setup and a gatling scenario.\n\nFor scenarios where we want to do A-B testing on the same SUT hardware, we'll need a way to basically run through the pipeline defined in PE-15655 multiple times.\n\nThis would be a pretty trivial refactor to loop over those stages, I think, but the Jenkins UI is going to be cluttered and indecipherable if we keep all 10-ish stages for each repetition of the PE setup/gatling test.  Instead, what we'll need to do is figure out a way to re-use the underlying *steps* that that pipeline provides, but in a way that allows us to have a smaller number of *stages*.  Probably just one or two stages per PE/gatling run.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16143", "fixedVersions": ["None"], "id": "16143", "issueType": "Task", "key": "SERVER-1376", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-07-13T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add support for a multi-pass pipeline job", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "That message is just a warning", "created": "2016-06-09T10:33:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:db2c4a81-9b5a-4053-bfe7-1ad4aa75f204", "body": "Hello Chris,\n\n\nThank you for your reply.\n\nThe puppet-server service, the std was *failed *and regarding the\njournalctl, yes, there was an error message but since i am OOO till Tuesday\nI can't tell what it is.\n\nany way this is the other message I have:\n\n\n\"java[80715]: OpenJDK 64-Bit Server VM warning: ignoring option\nMaxPermSize=256m", "created": "2016-06-09T12:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user thanks", "created": "2016-06-09T13:40:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Submitter will contact with more information if appropriate.", "created": "2016-06-15T10:14:00.000000"}], "components": [], "created": "2016-06-02T09:04:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:db2c4a81-9b5a-4053-bfe7-1ad4aa75f204", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f15326f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6qrb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1127418084_*|*_6_*:*_1_*:*_0"}], "description": "java[80715]: OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0", "environment": "CentOS 7 (VMware workstation 12 pro)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16141", "fixedVersions": [], "id": "16141", "issueType": "Bug", "key": "SERVER-1382", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:db2c4a81-9b5a-4053-bfe7-1ad4aa75f204", "resolution": "Incomplete", "resolutionDate": "2016-06-15T10:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "unable start puppet server", "timeSpent": "PT0S", "updated": "2016-06-20T03:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] have you seen this one before?", "created": "2016-06-02T08:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I have not but I agree with [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] that this failure could be due to a race condition in the test.  I'll post up a PR shortly that should significantly reduce the likelihood that the test could fail because of this issue.", "created": "2016-06-02T09:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] should we go ahead and patch this into jruby-utils before we close this ticket out?", "created": "2016-06-03T14:59:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] yeah, I think that would be a good idea. I'll put up a PR after my current PR (for TK-366) goes in.", "created": "2016-06-03T15:04:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Tests passed in https://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_jruby-utils_unit-clj_master/14/ for jruby-utils.", "created": "2016-06-07T13:42:00.000000"}], "components": [], "created": "2016-06-02T04:49:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57cd5d00"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6qp3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Test failed in CI run"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_344229851_*|*_1_*:*_2_*:*_109913124_*|*_10007_*:*_2_*:*_8634280_*|*_3_*:*_2_*:*_1254703_*|*_5_*:*_1_*:*_5695493204_*|*_6_*:*_1_*:*_0"}], "description": "puppetserver's clojure tests [failed in CI|https://jenkins.puppetlabs.com/job/platform_puppetserver_unit-clj_master/103/JDK=openjdk7,label=unit/console] with:\n{noformat}\nlein test puppetlabs.puppetserver.lockable-pool-test\n\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-lock-supersedes-existing-borrows-test\n\nFAIL in (pool-lock-supersedes-existing-borrows-test) (lockable_pool_test.clj:241)\nif there are pending borrows when pool.lock() is called, they aren't fulfilled until after unlock()\nexpected: (not (realized? blocked-borrow-thread-borrowed?))\nactual: (not (not true))\n{noformat}\n\nThis looks a lot like a race condition in the test.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15630", "fixedVersions": ["SERVER 2.5.0"], "id": "15630", "issueType": "Bug", "key": "SERVER-1375", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-06-07T13:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "race condition in pool-lock-supersedes-existing-borrows-test", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I wrote up notes on [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and my findings on this, and discussed with [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0].  We decided to hold off on doing the actual JRuby upgrade for now, mostly because we haven't heard much evidence of any issues with users expecting Puppet Server to support Ruby 2.x language features.  If that changes, the information we've gathered should hopefully make it relatively easy to pick back up on the upgrade work.", "created": "2016-06-08T09:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Added a link to the write-up doc.", "created": "2016-06-20T13:27:00.000000"}], "components": [], "created": "2016-06-01T11:37:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7dc5ebff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynctz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21970_*|*_3_*:*_1_*:*_16167640_*|*_10009_*:*_1_*:*_489208815_*|*_5_*:*_1_*:*_9593344271_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_92377954"}], "epicLinkSummary": "Investigate upgrading to JRuby9k", "estimate": "PT0S", "externalId": "17444", "fixedVersions": ["None"], "id": "17444", "issueType": "Task", "key": "SERVER-1374", "labels": [], "originalEstimate": "PT0S", "parent": "16485", "parentSummary": "Investigate upgrading to JRuby9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-06-08T09:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Write up summary of JRuby9k findings for discussion with product", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "attachments": [], "comments": [{"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "Ubuntu 15.10 was removed from puppetserver CI pipelines https://github.com/puppetlabs/ci-job-configs/pull/2318/files.", "created": "2017-03-11T23:38:00.000000"}], "components": [], "created": "2016-05-31T23:50:00.000000", "creator": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24e7667f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "CPR-364"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6plb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1702088_*|*_5_*:*_1_*:*_22507664234_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_24481034372_*|*_10005_*:*_1_*:*_57778226"}], "description": "Platform needs to be removed from puppetserver pipelines.\n", "epicLinkSummary": "Remove Ubuntu 15.10 Wily (i386, amd64) ", "estimate": "PT0S", "externalId": "16439", "fixedVersions": [], "id": "16439", "issueType": "Task", "key": "SERVER-1373", "labels": [], "originalEstimate": "PT0S", "parent": "60551", "parentSummary": "Remove Ubuntu 15.10 Wily (i386, amd64) ", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "resolution": "Fixed", "resolutionDate": "2017-03-11T23:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Ubuntu 15.10 Wily (i386, amd64)  from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2017-11-27T11:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "There's no Ubuntu 10.04 target in https://github.com/puppetlabs/ci-job-configs/blob/master/jenkii/jenkins-master-prod-1/projects/puppetserver.yaml, so looks like there's no action required.", "created": "2017-03-12T11:35:00.000000"}], "components": [], "created": "2016-05-31T23:45:00.000000", "creator": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25c932da"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6phj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1985090_*|*_6_*:*_2_*:*_191987_*|*_10004_*:*_1_*:*_24520496261_*|*_10005_*:*_1_*:*_57731879"}], "description": "Platform needs to be removed from puppetserver pipelines.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15897", "fixedVersions": [], "id": "15897", "issueType": "Task", "key": "SERVER-1372", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "resolution": "Done", "resolutionDate": "2017-03-12T11:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Ubuntu 10.04 LTS Lucid (i386, amd64)  from puppetserver pipelines", "timeSpent": "PT0S", "updated": "2017-03-12T11:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] this came up in triage today, and we thought we should probably circle up with you on it.", "created": "2016-06-01T10:24:00.000000"}, {"author": "623c0987a2f6400069eb7695", "body": "I would like to add a \"me too!\" to this request.\n\nWe have puppet language versions 4.x.\nWe have puppet agent versions 1.y.\nWe have puppet server versions 2.z.\n\nNOWHERE is there a concise list of what puppet agents and puppet servers are compatible.\nNOWHERE is it listed what puppet language is implemented with or required by or compatible with a puppet server version.\nThe puppet agent matrix is listed in the latest documentation as \"puppet-agent: What is it, and what's in it?\", but there is no such matrix for the server.\nThe puppet server documentation lists a puppet agent in the same unclear language as the OP listed above -- but I'm not even sure I trust that, given that the documentation for puppet server 2.7 talks about the requirements for puppet server 2.6, not 2.7.\n", "created": "2017-03-23T18:55:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:623c0987a2f6400069eb7695] Thanks for reporting the version number discrepancy on the server install doc. I've filed a PR to fix it.\n\nI'll defer the rest to folks who are on Server team.", "created": "2017-03-27T11:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330] or [~accountid:557058:1fc4e5e9-6847-4010-9b6c-b8ef60096c62] do either of you know if such a matrix exists now?", "created": "2018-02-16T11:43:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Bumping to say I would still really, really like this, especially as the spectrum of relevant PE, Server, and Agent version numbers continues to grow.", "created": "2018-10-12T14:28:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:9f6ff9a9-4f34-4d8d-a759-5b36bf88ecd1], do you know if we could get this put on your plate? This may just involve giving additional visibility to the matrix at the bottom of this screen ^1^, or making something similar for FOSS.\n\n1. https://puppet.com/docs/pe/2019.0/component_versions_in_recent_pe_releases.html", "created": "2018-12-05T12:33:00.000000"}, {"author": "5b71bbf184e3a72af6b3cf7a", "body": "+1 for this request", "created": "2019-01-08T16:31:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This has all become much simpler now: the major version of the server should match the major version of the agent, and should be generally compatible across Y releases, though the closer together the better.", "created": "2022-02-22T18:18:00.000000"}], "components": ["DOCS"], "created": "2016-05-31T20:21:00.000000", "creator": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@405d9c1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6p5j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_51433095_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_179278351911_*|*_10005_*:*_1_*:*_1501620229"}], "description": "h2. Documentation improvement\n_This report refers to https://github.com/puppetlabs/puppetserver#installing-puppet-server_\n\nThe following paragraph is unclear:\n??All versions of Puppet Server depend on at least Puppet 3.7.3, and since version 2.3 it depends on Puppet Agent 1.4.0 or newer, which installs Puppet 4.4 and compatible versions of its related tools and dependencies on the server. Puppet agents running older versions of Puppet Agent can connect to Puppet Server 2.3; this requirement applies to the Puppet Agent running on the Puppet Server node only.??\n\nh2. Compatibility Matrix\nIt would be a great documentation enhancement for both the open source project and the puppet.com website if we could get a simple compatibility matrix indicating which versions of puppet agent connect to the different major versions of puppet-server and vice versa\n\nh2. Why this is needed\nThis ticket was prompted by feedback from a customer.  He had read the highlighted paragraph as meaning that only the Puppet Agent on the master needs to be updated which is indeed one interpretation of the sentence.  Because of this, he was getting errors when trying to connect puppet agent 3.2 to Puppet Server.\n\nAnother Question he had was which versions of Puppet can he connect his agent to, eg can a puppet 4.5 agent connect to an old puppet 3.2 master.\n\nIt would be great if we could have simple documentation and product compatibility matrices to help our users make this call.  At present, its not obvious which versions of agent and master are compatible with each other unless I'm missing something.  This leads me to recommend building test infrastructure just to test Puppet compatibility between versions which isn't an ideal situation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14739", "fixedVersions": [], "id": "14739", "issueType": "New Feature", "key": "SERVER-1371", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "resolution": "Fixed", "resolutionDate": "2022-02-22T18:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "documentation improvement -- Version compatibillity matrix and wording upgrade", "timeSpent": "PT0S", "updated": "2022-02-22T18:18:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Ping [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] and [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]", "created": "2016-05-26T19:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think I agree with the spirit of this ticket.\n\nMy guess is that the only tricky part about implementing this will be that the environment validation is in the indirector and it is generalized across all request types, so it might be tricky to figure out how to special-case the report requests.  Worth looking into, though.\n\n[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] I don't mind putting this onto the server team's triage list if you think it's appropriate.\n\nFormer user Do you have log output from a case where this happened?\n", "created": "2016-05-27T07:09:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] +1 on putting this into server team's triage list. \n\nAs a side note, this might tie into the ideas being kicked around for a report-endpoint-specific jruby and/or for adding the concept of a report-processor-specific module. That said, I know those ideas are likely a bit further out so if there's a shorter path than that to adding this feature, I'd still be for it.", "created": "2016-05-27T08:39:00.000000"}, {"author": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Here's the access logs for what I believe is a single full puppet \"run\" where a node tried to check into an environment that didn't exist:\n\n{code}\n10.32.22.221 - - [27/May/2016:14:49:03 -0700] \"GET /puppet/v3/node/i-75fd61af?environment=aggregate_rds_check&configured_environment=aggregate_rds_check&transaction_uuid=5395921a-b614-4bd4-9255-20ffa54d242c&fail_on_404=true HTTP/1.1\" 400 48 \"-\" \"Ruby\" 15\n10.32.22.221 - - [27/May/2016:14:49:03 -0700] \"GET /puppet/v3/file_metadatas/pluginfacts?environment=aggregate_rds_check&links=follow&recurse=true&source_permissions=use&ignore=.svn&ignore=CVS&ignore=.git&checksum_type=md5 HTTP/1.1\" 400 48 \"-\" \"Ruby\" 15\n10.32.22.221 - - [27/May/2016:14:49:03 -0700] \"GET /puppet/v3/file_metadata/pluginfacts?environment=aggregate_rds_check&links=follow&checksum_type=md5&source_permissions=use HTTP/1.1\" 400 48 \"-\" \"Ruby\" 10\n10.32.22.221 - - [27/May/2016:14:49:04 -0700] \"GET /puppet/v3/file_metadatas/plugins?environment=aggregate_rds_check&links=follow&recurse=true&source_permissions=ignore&ignore=.svn&ignore=CVS&ignore=.git&checksum_type=md5 HTTP/1.1\" 400 48 \"-\" \"Ruby\" 10\n10.32.22.221 - - [27/May/2016:14:49:04 -0700] \"GET /puppet/v3/file_metadata/plugins?environment=aggregate_rds_check&links=follow&checksum_type=md5&source_permissions=ignore HTTP/1.1\" 400 48 \"-\" \"Ruby\" 10\n10.32.22.221 - - [27/May/2016:14:49:06 -0700] \"POST /puppet/v3/catalog/i-75fd61af?environment=aggregate_rds_check HTTP/1.1\" 400 48 \"-\" \"Ruby\" 38\n10.32.22.221 - - [27/May/2016:14:49:06 -0700] \"PUT /puppet/v3/report/i-75fd61af?environment=aggregate_rds_check& HTTP/1.1\" 400 48 \"-\" \"Ruby\" 10\n{code}\n\nThe main puppetserver logs that correspond to the above requests:\n\n{code}\n2016-05-27 14:19:02,900 ERROR [qtp1036895962-426] [puppet-server] Puppet Could not find environment 'aggregate_rds_check'\n2016-05-27 14:19:02,966 ERROR [qtp1036895962-517] [puppet-server] Puppet Could not find environment 'aggregate_rds_check'\n2016-05-27 14:19:02,998 ERROR [qtp1036895962-317] [puppet-server] Puppet Could not find environment 'aggregate_rds_check'\n2016-05-27 14:19:03,681 ERROR [qtp1036895962-517] [puppet-server] Puppet Could not find environment 'aggregate_rds_check'\n2016-05-27 14:19:03,716 ERROR [qtp1036895962-317] [puppet-server] Puppet Could not find environment 'aggregate_rds_check'\n2016-05-27 14:19:05,211 ERROR [qtp1036895962-317] [puppet-server] Puppet Could not find environment 'aggregate_rds_check'\n2016-05-27 14:19:05,239 ERROR [qtp1036895962-517] [puppet-server] Puppet Could not find environment 'aggregate_rds_check'\n{code}", "created": "2016-05-27T16:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user great, thanks.", "created": "2016-05-27T21:41:00.000000"}, {"author": "6361cbfc59c794184bcbd33a", "body": "We just ran into this issue when running puppet from orchestrator. This problem results in an inconsistent state where a report is stored locally on the agent, but doesn't make it all the way to PuppetDB.", "created": "2017-07-17T15:53:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Going to close this since it hasn't been touched in a while and we're unlikely to work on it without prompting. But if anyone is still struggling with this and would like to see it prioritized, please feel free to reopen with a description of your use case/issue.", "created": "2021-02-25T11:35:00.000000"}], "components": [], "created": "2016-05-26T17:01:00.000000", "creator": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3bea728"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyntnj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_494424068_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_64133464255_*|*_10005_*:*_1_*:*_85346524147"}], "description": "At least currently, puppet server doesn't use environments to determine what report processors to use, so it should be able to accept a report from a node for an environment that doesn't exist.\n\nThe use case for this is when you have agent-specified environments enabled, and a node is in an environment that was removed (e.g., what might happen when using an r10k feature branch workflow). The node will try to pluginsync, which will fail, then it will submit the facts it has and request a catalog, which will also fail (see PE-12497). The node will then attempt to submit a report for the failed run, which will also fail. At no point during this process is any data recorded for this process except in logs. That means that the only way to discover this situation is to either notice that a node is unresponsive before it falls out of puppetdb or to search the access logs manually for such failed requests.\n\nIt would be much better IMO if the report was accepted and submitted as such. Then that failure would show up in PuppetDB and any other report processors configured (e.g., the PE Console), which would make it much easier to discover and troubleshoot.\n\nNot really sure what project this belongs under specifically.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16984", "fixedVersions": [], "id": "16984", "issueType": "Improvement", "key": "SERVER-1812", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "resolution": "Won't Fix", "resolutionDate": "2021-02-25T11:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The puppet master should accept reports submitted for an environment that doesn't exist", "timeSpent": "PT0S", "updated": "2021-02-25T11:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] Can I close this ticket? I think this work has already been completed. ", "created": "2016-10-31T14:00:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "This is a dup of PE-15932", "created": "2016-11-07T17:04:00.000000"}], "components": [], "created": "2016-05-26T12:31:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a027c82"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6mif:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14276000955_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16982", "fixedVersions": [], "id": "16982", "issueType": "Sub-task", "key": "SERVER-1370", "labels": [], "originalEstimate": "PT0S", "parent": "15025", "parentSummary": "Wrap externalization functions around Puppet Server strings", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Duplicate", "resolutionDate": "2016-11-07T17:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "pe-file-sync", "timeSpent": "PT0S", "updated": "2016-11-07T17:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-05-26T12:28:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, this is not code and does not need testing."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@382416a9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6mhz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2983415869_*|*_4_*:*_1_*:*_11689_*|*_5_*:*_1_*:*_7231664760_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16438", "fixedVersions": ["None"], "id": "16438", "issueType": "Sub-task", "key": "SERVER-1369", "labels": [], "originalEstimate": "PT0S", "parent": "14738", "parentSummary": "Audit Puppet Server strings for externalization issues", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Done", "resolutionDate": "2016-06-30T01:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "pe-file-sync", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "In general, it's considered very unsafe to catch any JVM exception that extends from {{Error}}:\n\n-tickets.puppetlabs.com/browse/SERVER1368- https://docs.oracle.com/javase/7/docs/api/java/lang/Error.html\n\n{{OutOfMemoryError}} may indicate that the JVM is in an unrecoverable state, so catching it might result in a situation where the process is still alive but is not functioning properly or deterministically.\n\nIf you are willing to tolerate temporary spikes in memory usage to attempt to deal with a rogue catalog, you could try setting {{-Xms}} (minimum heap size) and {{-Xmx}} (maximum heap size) to different values", "created": "2016-05-25T14:21:00.000000"}, {"author": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "body": "I'm on RHEL 6, without systemd.  This causes a complete service death that requires human intervention for recovery (at least out of box).\n\nThe better method of handling this, based on my experience, is in places that memory usage can spike through user actions you catch the OutOfMemoryError, and handle it just like any other checked exception.  Its part of the reason OutOfMemoryError extends from Throwable as you can catch Throwable, and properly handle it depending on the task at hand.\n\nCatching the error and attempting graceful handling could easily be done in traffic keeper land (to throw away the worker thread), or at specific tasks like catalog generation.  Alas, none of these options can be used while you have the \"kill -9 %p\" as a startup option.\n\nPart of the reason I love the JVM based Puppetserver is it was substantially more resilient than the old rackup based one.  ", "created": "2016-05-31T19:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We definitely want to try to avoid any kind of service death that requires human intervention, but need to balance that against concerns for maintaining the integrity of the service.\n\nI apologize, I pasted the wrong link into my previous comment.  This is the one that I meant to paste:\n\nhttps://docs.oracle.com/javase/7/docs/api/java/lang/Error.html\n\nThe sentence of import there is \"An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch.\"\n\nThere are different types of events that can cause an OutOfMemoryError to occur, and they are not guaranteed to be recoverable.   Threads in the JVM share a lot of state and have access to the same memory heap, so recycling an individual thread doesn't guarantee that you'll free up any memory.  It's also possible that, if your timing is unlucky, the thread that is actually the culprit for using too much memory is not the same thread that the OOM error is thrown on.  It'll just occur on whichever thread happened to be unlucky enough to be the last one to request memory that couldn't be successfully allocated.\n\nAgain, I'm definitely interested in resolving issues that result in the necessity for manual intervention to bring the service back up, so I'd very much like to discuss other options.\n\nOne idea would be to try to reproduce the behavior we get via systemd, by calling a script when we get an OOM, rather than just {{kill}} on its own.  So, e.g., we could ship a script as part of the packaging, and the script could be passed the pid as an argument.  The script could look something like this:\n\n{code}\nkill -9 $PID\nservice puppetserver start\n{code}\n\nIf you were willing to test something like that in your environment, and if it proves valuable, then we could definitely consider integrating it into our packages.  WDYT?", "created": "2016-06-02T10:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Closing this because I don't believe that the OutOfMemory path is realistic.  However, we would be happy to help you figure out alternate ways to set up your script for handling the OOMs if you have any questions.", "created": "2016-06-08T10:11:00.000000"}], "components": ["Puppet Server"], "created": "2016-05-25T13:40:00.000000", "creator": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3850b30f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6lnz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1197059241_*|*_6_*:*_1_*:*_0"}], "description": "With the -XX:OnOutOfMemoryError=\"kill -9 %p\" it seems fairly trivial to cause a denial of service...  by removing the -XX:OnOutOfMemoryError depending on the cause of the OutOfMemoryError, Java is actually able to recover intelligently as once the request has completed (by reporting the OutOfMemoryError to the puppet-agent) Puppet Server's gc pressure drops back to reasonable levels.\n\nWe are running into an issue with a specific type of nodes that we have, they all cause an OutOfMemoryError during catalog creation, with the -XX:OnOutOfMemoryError=\"kill -9 %p\" the process was just dying with no details on location/thread of where the error occurs.\n\nI would think the better approach would be to wrap the JRuby pool with OutOfMemoryError catching to recycle the worker automatically instead of just killing the entire JVM.", "environment": "RHEL6, Java 8, PuppetDB, PostgreSQL 9.5", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15628", "fixedVersions": [], "id": "15628", "issueType": "Bug", "key": "SERVER-1368", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "resolution": "Won't Fix", "resolutionDate": "2016-06-08T10:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Graceful OutOfMemoryError handling please?", "timeSpent": "PT0S", "updated": "2016-06-08T10:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c]  I think this is done, right?", "created": "2016-06-01T10:13:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Yup, it's good", "created": "2016-06-01T10:34:00.000000"}], "components": [], "created": "2016-05-25T12:03:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64fec02f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6lif:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "'low hanging fruit'"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_598183530_*|*_10009_*:*_1_*:*_2842829_*|*_5_*:*_1_*:*_10193484331_*|*_6_*:*_1_*:*_0"}], "description": "Work with [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] to create a Confluence page with an appropriate Jira filter that presents the current status of our CI as well as the recent history of transient failures SO THAT we can be more aware of how typical transient failures appear. \n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16803", "fixedVersions": ["None"], "id": "16803", "issueType": "Task", "key": "SERVER-1367", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-06-01T11:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a Confluence page that documents that status of CI for puppetserver", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-05-24T16:41:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@270f0de0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6kxz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3614545_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_26171138353"}], "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "15896", "fixedVersions": [], "id": "15896", "issueType": "Task", "key": "SERVER-1366", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-03-23T15:27:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a clojure test which validates that an expired CA responds to agents with a useful error. (and that an agent run can not proceed)", "timeSpent": "PT0S", "updated": "2017-03-23T15:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Here's my first swing. It's a miss (the test fails and the CA with an expired ca cert appears to sign a new CSR). I could use some eyeballs or maybe another hour of your time for pairing.\n\nhttps://github.com/kurtwall/puppetserver/blob/server-1365/test/integration/puppetlabs/services/certificate_authority/expired_ca_test.clj", "created": "2016-06-30T12:13:00.000000"}], "components": [], "created": "2016-05-24T16:41:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6993334f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynd0f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3662365_*|*_3_*:*_1_*:*_3029258958_*|*_4_*:*_1_*:*_74036_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_23141824134"}], "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "15627", "fixedVersions": ["None"], "id": "15627", "issueType": "Task", "key": "SERVER-1365", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-03-23T15:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a clojure test which validates that an expired CA can not sign certs (and that a useful error is provided.)", "timeSpent": "PT0S", "updated": "2017-03-23T15:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "These values are stored in the beaker options hash, under each host, like this:\n107     :cert: !ruby/object:OpenSSL::X509::Certificate {}\n108     :key: !ruby/object:OpenSSL::PKey::RSA {}\n\nI'm thinking maybe the problem here is obvious.  There isn't a Certificate or RSA key stored here...", "created": "2016-05-24T14:44:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "WORKAOURND: Modify the host_preserved.yml file, find each :cert and :key in the options hash and delete it.  Then continue as normal.", "created": "2016-06-01T18:12:00.000000"}, {"author": "557058:a47681f7-b1ba-4803-a48e-fe7a8d10171b", "body": "Should this ticket be in the beaker project?", "created": "2017-01-06T07:54:00.000000"}], "components": [], "created": "2016-05-24T14:32:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7cf70347"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6klj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_675484031_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_64134293154"}], "description": "get_cert and get_key helpers add keys named \":cert\" and \":key\" to the beaker options hash.  This works great until we attempt to load a hosts_preserved.yml file when rerunning a test.\n\nUpon loading a host_preserved.yml file, beaker throws an error like this:\n{noformat}\nstringify-hash.rb:279:in `export': THIS IS NOT A RSA! (RuntimeError)\n{noformat}\n\nI need to discuss with [~accountid:623c0cebbef8a60068c7977d] and understand why this is happening, fix it, and report the fix to [~accountid:557058:32db392f-020e-4db0-9049-e89c6555d277].\n", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16980", "fixedVersions": [], "id": "16980", "issueType": "Bug", "key": "SERVER-1364", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Cannot Reproduce", "resolutionDate": "2018-06-13T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "get_cert and get_key helpers do not work correctly with hosts_preserved.yml.", "timeSpent": "PT0S", "updated": "2018-06-13T17:15:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "This ticket has not been updated in some time and is now being closed due to inactivity. This isn\u2019t necessarily a statement that this ticket isn\u2019t important - other issues may have demanded precedence since it was filed, or it may have simply slipped through the cracks. If any viewer/watcher feels closing this ticket is an error, please re-open it and add a comment explaining. Our apologies in advance for any mistake on this.", "created": "2017-05-16T17:36:00.000000"}], "components": [], "created": "2016-05-24T01:56:00.000000", "creator": "557058:f309b5d5-accc-426c-afbd-06b9cbdb1a15", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68edfc3f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6jun:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1325731648_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_29575523216"}], "description": "customers using puppet orchestrator currently missing the feature to share files between nodes that will be created during a puppet orchestrator run. Example: creating a keytab on your kerberos server  that needs to be shared with all your nodes inside a cluster after a puppet run on your kerberos server. The current workaround is to copy the keytab back to the master (for example using scp) within your catalog run to a mount point served by the puppet file server so it can be used by all systems triggered via orchestrator after the kerberos server.\n\nIt would be nice if it is possible to use the custom file server mount points for uploads/writes as well and you can specify the upload of the file within puppet language so you no longer need to copy the file back with exec resources like scp.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15624", "fixedVersions": [], "id": "15624", "issueType": "New Feature", "key": "SERVER-1813", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f309b5d5-accc-426c-afbd-06b9cbdb1a15", "resolution": "Won't Do", "resolutionDate": "2017-05-16T17:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet File server should support uploading/write files", "timeSpent": "PT0S", "updated": "2017-05-16T17:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] / [~accountid:557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0] - do you have a gameplan for this?  This straggler ticket is in LOC-11, which is a generic / high-level \"Resolving encoding issues\" epic.  I would expect this ticket to be in a separate testing epic that blocks that epic.\n\nIf it doesn't look like this is happening, might also just want to close it out?\n\n/cc [~accountid:557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709]", "created": "2016-09-30T15:23:00.000000"}, {"author": "557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0", "body": "[~accountid:623c0ff494742a00683e3fe4] I'm assuming this can be closed based on https://docs.google.com/document/d/1V402hEegWGYyMIvDjMbXsyriTipuCzoSuvS1VFFvXZc/edit ?", "created": "2016-09-30T15:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "My impression is the same as what [~accountid:557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0] called out above.", "created": "2016-10-03T13:05:00.000000"}], "components": [], "created": "2016-05-23T14:40:00.000000", "creator": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f57b0e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6lav:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_159288295_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76660378970"}], "description": "Audit existing automated tests and scope the work required to add testing of UTF-8 support.\nThis should be coordinated with QA and Sam Woods.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16801", "fixedVersions": [], "id": "16801", "issueType": "Task", "key": "SERVER-1362", "labels": ["eng-architecture", "i18n", "utf-8"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "resolution": "Done", "resolutionDate": "2018-10-29T17:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Audit existing tests to scope for UTF-8 testing in Puppet Server", "timeSpent": "PT0S", "updated": "2018-10-29T17:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b64e0a8c-6f57-44f9-adf1-b0b9767a03da", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Do you think this is done?", "created": "2016-11-09T14:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "AFAIK it is, I think we were using PE-15848 and friends to track the work.", "created": "2016-11-09T15:34:00.000000"}, {"author": "557058:b64e0a8c-6f57-44f9-adf1-b0b9767a03da", "body": "Going to close.  We can re-open if necessary. ", "created": "2016-11-09T17:05:00.000000"}], "components": [], "created": "2016-05-23T14:21:00.000000", "creator": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13ac6c4c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynd1z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_159948076_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_14541449766"}], "description": "Wrap the clj-i18n functions around user-facing strings that will one day need to be translated into other languages. See PE-14792 for scope. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15025", "fixedVersions": [], "id": "15025", "issueType": "Task", "key": "SERVER-1361", "labels": ["eng-architecture", "i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "resolution": "Fixed", "resolutionDate": "2016-11-09T17:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Wrap externalization functions around Puppet Server strings", "timeSpent": "PT0S", "updated": "2016-11-09T17:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2d86d754-2fbb-4e17-8e03-6e58f4f29aa4", "attachments": [], "comments": [{"author": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] Ready for pointing", "created": "2016-05-23T14:18:00.000000"}], "components": [], "created": "2016-05-23T14:17:00.000000", "creator": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, this is not code and does not need testing."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b9577fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn4fz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_160195540_*|*_5_*:*_1_*:*_7767971343_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3030916635"}], "description": "Review the formatting of existing user-facing strings in Puppet Server and fix formatting issues that are problematic for translators. \nFor some context, see PE-14216 and the [Confluence page|https://confluence.puppetlabs.com/display/ENG/Tips+for+writing+translation-friendly+strings]. \nContribute to the Confluence page if you identify additional issues.  \n\nThis will largely look like translating string concatenation using (str \"foo\" x \"bar\") to (format \"foo %s bar\" x).\n\nA thing to look out for in this ticket is trying to leave the strings that will be externalized in a format that is easily machine findable/replaceable. This might not be possible, so this is partially an R&D task.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14738", "fixedVersions": ["None"], "id": "14738", "issueType": "Task", "key": "SERVER-1360", "labels": ["eng-architecture", "i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "resolution": "Done", "resolutionDate": "2016-06-29T12:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Audit Puppet Server strings for externalization issues", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [], "components": [], "created": "2016-05-23T12:09:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@687940a6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1439"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6ixz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_167934090_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_17470911763"}], "description": "This ticket tracks the QA efforts to validate the features within the SERVER-1305 \"Securing SSL Extensions,\" as well as the QA Risk Assessment of the Epic.", "epicLinkSummary": "Integrating Secure SSL Extensions", "estimate": "PT0S", "externalId": "16798", "fixedVersions": [], "id": "16798", "issueType": "Task", "key": "SERVER-1359", "labels": [], "originalEstimate": "PT0S", "parent": "15306", "parentSummary": "Integrating Secure SSL Extensions", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-12-13T14:50:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate SSL x509 extensions", "timeSpent": "PT0S", "updated": "2016-12-13T14:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [], "components": [], "created": "2016-05-23T11:19:00.000000", "creator": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7de2b477"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6iqv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_81150030_*|*_5_*:*_1_*:*_10870429468_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_18387685"}], "description": "* Identify the Puppet Server repos that contain user-facing strings so we know which repos require the clj-i18n library and externalization wrapper function.\n* Once the audit of repos has been completed, list the repos in this ticket and update [this Confluence page|https://confluence.puppetlabs.com/display/ENG/i18n#i18n-StatusByProject].\n\n[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] provided the following repos as the ones that contain the majority of strings:\npuppetserver\npe-file-sync\npe-puppet-server-extensions\njvm-ssl-utils\ntrapperkeeper-status\ntrapperkeeper-metrics\ntrapperkeeper\n\nThere may be some additional repos containing a small number of user-facing errors. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15623", "fixedVersions": ["None"], "id": "15623", "issueType": "Task", "key": "SERVER-1358", "labels": ["eng-architecture", "i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "resolution": "Fixed", "resolutionDate": "2016-05-24T14:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Identify Puppet Server repos containing user-facing strings", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-05-20T14:05:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6cb985e7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn9rj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "high priority"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9092_*|*_3_*:*_1_*:*_1029603111_*|*_5_*:*_1_*:*_10189573483_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Investigate upgrading to JRuby9k", "estimate": "PT0S", "externalId": "17026", "fixedVersions": ["None"], "id": "17026", "issueType": "Task", "key": "SERVER-1357", "labels": [], "originalEstimate": "PT0S", "parent": "16485", "parentSummary": "Investigate upgrading to JRuby9k", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-01T12:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Characterize JRuby9k perf issues and define upgrade path", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-05-19T18:11:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d369dac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsuan:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_491040915_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_67234545356_*|*_10005_*:*_2_*:*_107379348067"}], "description": "I forgot to account for the fact that the x509_auth test would run in both the puppetserver and the pe-puppet-server-extensions repositories.  As a result, when this test runs, it looks in acceptance/suites/tests/authorization/fixtures/ for files like extensions_test_auth.conf and \n\nI've put a shortterm fix here to avoid having to voom and re-promote from puppetserver to pe-puppet-server-extensions:\nhttps://github.com/puppetlabs/pe-puppet-server-extensions/pull/624\n\nBut this is an ugly, quick and dirty fix.  The proper fix it to either turn extensions_test_auth.conf and  (the other file) into HEREDOCs, or to introduce a conditional into the script so that it checks for $PE, and looks in puppetserver/acceptance/suites/tests/authorization/fixtures/ if true.\n\nAlso, we need to get the quick and dirty fix BACK out of pe-puppet-server-extensions once we fix this properly.\nNote that we need to pull the quick and dirty fix out of both 2016.2 and 2016.3", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16437", "fixedVersions": [], "id": "16437", "issueType": "Bug", "key": "SERVER-1355", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2021-12-06T09:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Correct pathing for x509_auth test so that it can correctly run in pe-puppet-server-extensions.", "timeSpent": "PT0S", "updated": "2021-12-06T09:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I attempted a pass in pe-puppet-server-extensions with beaker 2.42, and ran into BKR-830.  \n", "created": "2016-06-01T17:24:00.000000"}], "components": [], "created": "2016-05-18T14:11:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6eaa74fa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn6bj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_75653509_*|*_1_*:*_1_*:*_591604019_*|*_10007_*:*_1_*:*_4695154_*|*_3_*:*_1_*:*_76146812_*|*_5_*:*_1_*:*_4927042324_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_3_*:*_1116997785_*|*_10006_*:*_1_*:*_629628483"}], "description": "After Couch ships, we should update the beaker pin in puppetserver and pe-puppet-server-extensions.  We may which to consider auto generating this ticket after each Puppet Enterprise release.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15023", "fixedVersions": ["SERVER 2.5.0"], "id": "15023", "issueType": "Bug", "key": "SERVER-1354", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-06-16T11:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "update beaker pin", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "bq. ...mostly don't mind extra commits ... avoid commit --amend and push -f\n\n\nNot rebasing/amending after opening a PR is a good general statement.\n\nFWIW, the rationale, AFAICT, that leads to that recommendation is that folks generally want as clean of commit history as possible while retaining any discussion from the PR for posterity. \n\nEg. rebasing/amending a branch prior to opening a PR is fine. Also, after pushing up a commit to address PR feedback and then noticing a typo, amending that commit prior to there being review of it would be fine. \n\nConversely rebasing a branch that's had a bunch of discussion on it and then losing a bunch of the conversation in the PR that lead to the decisions in that code would be a bad thing.\n\\\\\n\\\\\n\\\\\n\\\\\nI'd probably add it to one of the Git relates pages hanging off of [Puppet Enterprise Documentation|https://confluence.puppetlabs.com/display/PE/Puppet+Enterprise+Documentation], and maybe make them more visible from some of the other Puppet Server team pages (because they're so buried and pretty hard to follow once you find them).", "created": "2016-05-17T18:03:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Also, different teams value commit hygiene vs historical accuracy more than others. The QE for example had a no rebase/amend ever convention. The client team, IIRC, had an always rebase prior to merge to clean up the history policy. Puppet Server seems to be in the middle, and since I've moved over I've seen folks ask for a rebase to clean up particularly gross commits as well as folks leave not great commits around to preserve conversation.", "created": "2016-05-17T22:34:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "It sounds like [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] prefers this document to exist on Confluence.\n\n", "created": "2016-05-18T12:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I was just assuming Confluence would be a good fit based on [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c]'s goals for a single source of truth for new team members.  I don't have a strong opinion.", "created": "2016-05-18T13:35:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "I've been putting things like team policies here: https://confluence.puppetlabs.com/display/ENG/Puppet+Server+Development.\n\nThere's also a \"Technical stuff\" page (link at the bottom of the above). One of these days I'd love to get [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]'s opinion on how I should arrange things, but there's no emergency around it.", "created": "2016-05-18T13:47:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "I agree with Karen that Puppet Server Development in Confluence is the right place for this, because Puppet Server team specifically has some practices that are different from what other teams do.", "created": "2016-05-19T09:29:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "I've created a page where this stuff can go. https://confluence.puppetlabs.com/display/ENG/Git+Conventions", "created": "2016-05-19T11:25:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Now we have some simple Git Conventions:\nhttps://confluence.puppetlabs.com/display/ENG/Git+Conventions", "created": "2016-05-23T15:06:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "I reviewed the confluence page and it looks good :)", "created": "2016-05-24T09:54:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Resolving...", "created": "2016-05-24T17:56:00.000000"}], "components": [], "created": "2016-05-17T15:26:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dfb39ea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz64jj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_70225537_*|*_3_*:*_1_*:*_362470299_*|*_10009_*:*_1_*:*_96695634_*|*_5_*:*_1_*:*_10859509095_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_84457597"}], "description": "Ping [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091], [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0].\n\nRuth and I had a conversation about commit expectations yesterday, and Justin and Joe and I had a conversation about branch names.  Here's what I've learned...\n\n1.  We mostly don't mind extra commits into a branch.  Avoid commit --amend and push -f after a PR has been opened.\n2.  All commit messages should have the ticket number or MAINT or doc in parens - e.g. (SERVER-1353), (maint), (doc). The capitalization of \"maint\" and \"doc\" doesn't matter, but the ticket number should be capital with a hyphen between project name and ticket number because the jira/github integration that connects PRs to tickets relies on this. Commit messages should follow the format described in https://confluence.puppetlabs.com/display/PE/Git+naming+conventions and https://github.com/puppetlabs/puppet/blob/master/CONTRIBUTING.md#making-changes.\n3.  Branch names should have the ticket number_a brief description with underscores or hyphens, or MAINT etc.\n\nIf this looks correct, tell me where to start the git conventions document so that I can stop polluting our repos with poor quality commits.\n- Confluence? --\n- A \"git_conventions.md\" or similar?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14737", "fixedVersions": ["None"], "id": "14737", "issueType": "Task", "key": "SERVER-1353", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2016-05-24T17:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document our git conventions (so QA has a clue)", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-05-17T09:51:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2be4207c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6ddb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_90217212_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_54395077424"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17025", "fixedVersions": [], "id": "17025", "issueType": "Task", "key": "SERVER-1352", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2018-02-06T23:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create test for TK-352 (subjectAltName in tk-Auth)", "timeSpent": "PT0S", "updated": "2018-02-06T23:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Both master and stable acceptance are passing with this.", "created": "2016-05-31T10:52:00.000000"}], "components": ["Puppet Server"], "created": "2016-05-13T14:10:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7bcae097"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6isn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Easy change, good to do sooner rather than later"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_500111641_*|*_1_*:*_1_*:*_1022143587_*|*_10007_*:*_1_*:*_17741506_*|*_3_*:*_1_*:*_3144678_*|*_5_*:*_1_*:*_6310519914_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_186469"}], "description": "We think that we just pull packages from PC1 for puppetserver tests against puppetdb. As such, after puppetdb is released for xenial, we should bump https://github.com/puppetlabs/puppetserver/blob/46068b328b6e040bf7c4de732809e71760d91683/acceptance/lib/helper.rb#L61-L69 to include {{ubuntu-16}}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16436", "fixedVersions": ["SERVER 2.5.0"], "id": "16436", "issueType": "Task", "key": "SERVER-1350", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-31T10:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update acceptance helper to run puppetdb tests against xenial", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] for general awareness.  Ping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]", "created": "2016-05-13T11:38:00.000000"}], "components": [], "created": "2016-05-13T11:33:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a830794"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6baf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_429116895_*|*_6_*:*_1_*:*_0"}], "description": "In SERVER-1303, I made a helper that appends a TK Auth match request to the existing rule set.  This seems insufficient.  At a minimum, we need to be able to remove a rule.  Preferably, I'd like to be able to bring the rule set off of disk into a class (perhaps with an array of match requests), and have in class methods for adding, modifying, or deleting rules.\n\nWe could write the rules to disk by using hocon to directly modify the auth.conf file.  This approach would execute more quickly.\n\nWe could write the rules to disk via the puppetlabs/authorization module, which would supply some additional testing around the module at the expense of execution speed.\n\nThis work would enable more indepth testing of TK Auth in general, and of TK Auth SSL Extensions specifically.  ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17024", "fixedVersions": [], "id": "17024", "issueType": "Task", "key": "SERVER-1349", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-05-18T10:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "build helper methods that modify tk auth.conf", "timeSpent": "PT0S", "updated": "2016-05-25T13:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [], "components": [], "created": "2016-05-12T14:42:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7402f7e4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6apb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2117_*|*_3_*:*_1_*:*_326005232_*|*_5_*:*_1_*:*_1185716_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_611667967"}], "description": "(Initial planned release date: 2016-05-19)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.4.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17443", "fixedVersions": ["SERVER 2.4.0"], "id": "17443", "issueType": "Sub-task", "key": "SERVER-1348", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-23T11:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [], "components": [], "created": "2016-05-12T14:42:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48200c13"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6ap3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2280_*|*_3_*:*_1_*:*_530155_*|*_5_*:*_1_*:*_9323422_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_602079042"}], "description": "(Initial planned release date: 2016-05-19)\n\nUpdate dujour to notify users to use 2.4.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17023", "fixedVersions": ["SERVER 2.4.0"], "id": "17023", "issueType": "Sub-task", "key": "SERVER-1347", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T14:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.4.0 (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "Filters are now available: \n\nIntroduced in SERVER 2.4.0: https://puppet.atlassian.net/issues/?filter=19818\nFixes for SERVER 2.4.0: https://puppet.atlassian.net/issues/?filter=19819", "created": "2016-05-18T20:17:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Draft announcement, would appreciate a sanity check on my tk-auth summary.\n\n{quote}\n\nI'm excited to announce a new batch of backwards-compatible feature releases for the Puppet Agent and Server.  There's a lot to take in here, so check out the release notes and take the code for a test-drive before you yell out \"YOLO!\" and upgrade all of production.\n\nPuppet Server 2.4.0 - A slew of bugfixes and an enhancement to the trapperkeeper auth.conf implementation that allows you to use certificate extensions in your auth.conf rules. So for example you can assign your trusted management nodes a certificate that contains new authorization extensions indicating they ought to have higher privilege, then match those extensions in the rules that permit cert management or catalog request commands, avoiding the need to keep a list of privileged hostnames in your auth.conf.\nCheck out the full release notes here: https://docs.puppet.com/puppetserver/latest/release_notes.html\n\nPuppet Agent 1.5.0 - All-in-one Agent package contains updated component versions, including a new feature release of Puppet.\n  * Ruby 2.1.9 update\n  * Puppet 4.5.0 - Also primarily a bugfix release, with improvements in the type system and a few hotly awaited fixes for systemd and the DNF package manager. The release notes mention new functions (including a function named \"new\") that needs\n  * Facter 3.1.7 - Bugfixes for GCE and one particularly nasty recursion / fork-bomb that could happen if facter was invoked inside external fact (I know...)\n  * Hiera 3.2.0 - There's a backwards-compatible change that moves the default location of hiera.yaml out of the 'codedir' and back into 'config'. Read up on the backstory here at HI-390 or on the puppet-dev, but the tl", "created": "2016-05-19T18:44:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "sent, incomplete sentence and all.", "created": "2016-05-19T23:07:00.000000"}], "components": [], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4fa0eec6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6aov:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2238_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_635107724"}], "description": "(Initial planned release date: 2016-05-19)\n\n  * [~accountid:557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16786", "fixedVersions": ["SERVER 2.4.0"], "id": "16786", "issueType": "Sub-task", "key": "SERVER-1346", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T23:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Docs are live.", "created": "2016-05-19T13:03:00.000000"}], "components": [], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@599718b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6aon:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2219_*|*_3_*:*_1_*:*_2424522_*|*_5_*:*_1_*:*_13026508_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_596489431"}], "description": "(Initial planned release date: 2016-05-19)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16434", "fixedVersions": ["SERVER 2.4.0"], "id": "16434", "issueType": "Sub-task", "key": "SERVER-1345", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T13:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4", "attachments": [], "comments": [], "components": [], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@607c5912"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6aof:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2074_*|*_3_*:*_1_*:*_2222836_*|*_5_*:*_1_*:*_12077239_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_597644771"}], "description": "(Initial planned release date: 2016-05-19)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16140", "fixedVersions": ["SERVER 2.4.0"], "id": "16140", "issueType": "Sub-task", "key": "SERVER-1344", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4", "attachments": [], "comments": [{"author": "557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4", "body": "Signed tag is pushed", "created": "2016-05-19T13:30:00.000000"}], "components": [], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5901dd2c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6ao7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2176_*|*_5_*:*_1_*:*_11406981_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_600540639"}], "description": "(Initial planned release date: 2016-05-19)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15895", "fixedVersions": ["SERVER 2.4.0"], "id": "15895", "issueType": "Sub-task", "key": "SERVER-1343", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T13:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "go/no-go completed 11:25 am PDT May 19 in hipchat. everyone is a GO!", "created": "2016-05-19T12:27:00.000000"}], "components": [], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11891b9a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6anz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2141_*|*_3_*:*_1_*:*_696512_*|*_5_*:*_1_*:*_10819378046_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_596043953"}], "description": "(Initial planned release date: 2016-05-19)\n\nThis should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15620", "fixedVersions": [], "id": "15620", "issueType": "Sub-task", "key": "SERVER-1342", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T12:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Smoke tested an install on Ubuntu 16.04 and an upgrade from 2.3.2 on Centos 6 and Centos 7.", "created": "2016-05-19T12:06:00.000000"}], "components": [], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a847a99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6anr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2084_*|*_3_*:*_1_*:*_531386_*|*_5_*:*_1_*:*_10820623499_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_594955693"}], "description": "(Initial planned release date: 2016-05-19)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15293", "fixedVersions": [], "id": "15293", "issueType": "Sub-task", "key": "SERVER-1341", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T12:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4] SHA for release should be db499933b716de6f7bfff5e1ee137ea5fbd224bb\n\nthis has passed through our regular acceptance tests, but it didn't make it through the full nightly platform because there was already a 2.4.0 jar from the previous run when it was merged. However, the previous SHA did get through all the nightly platforms and the only change was the version bump. If it's necessary, we can manually kick the nightly job to use an already-built package (at least I think we can), but that seems like overkill?\n\nAcceptance test run for 2.4.0 version bump commit: https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/47/ (this, or rather the upstream \"Lein EZBake\" job, also built 2.4.0 packages https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_packaging-os-clj_lein-ezbake_stable/51/)\n\nAcceptance test run for previous SHA (nightly - i.e. all platforms): https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/46/", "created": "2016-05-18T08:48:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "The SHA with the version ran through all platforms yesterday in https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/49/.", "created": "2016-05-19T09:17:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "For Puppet Server 2.3.2 we changed the tag format from `puppet-server-<number>` to just `<number>` (https://github.com/puppetlabs/puppetserver/tags). So the tag for this should be 2.4.0.", "created": "2016-05-19T09:52:00.000000"}, {"author": "557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4", "body": "Packages are available at http://builds.delivery.puppetlabs.net/puppetserver/2.4.0/", "created": "2016-05-19T11:17:00.000000"}], "components": [], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b37abd7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6anj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2138_*|*_5_*:*_1_*:*_10820663731_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_595450430"}], "description": "(Initial planned release date: 2016-05-19)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:f79f8af3-d468-4e76-b115-311ddf4eb9a4] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15021", "fixedVersions": [], "id": "15021", "issueType": "Sub-task", "key": "SERVER-1340", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T12:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] I put a list of tickets for 2.4.0 (excluding acceptance test tickets) in the comments of SERVER-1335. Let me know if there's anything I can do to help with this!", "created": "2016-05-18T08:28:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Also, [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] I believe that the SHA for the release will be db499933b716de6f7bfff5e1ee137ea5fbd224bb, in case you need it.", "created": "2016-05-18T08:48:00.000000"}], "components": ["Puppet Server"], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2305c189"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6anb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3433_*|*_3_*:*_1_*:*_24285234_*|*_10009_*:*_1_*:*_62624379_*|*_5_*:*_1_*:*_15894781_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_509159746"}], "description": "(Initial planned release date: 2016-05-19)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14736", "fixedVersions": ["SERVER 2.4.0"], "id": "14736", "issueType": "Sub-task", "key": "SERVER-1339", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T12:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [{"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] I've been doing this one for the last few releases so I'm grabbing it unless you have any objections. ", "created": "2016-05-17T13:37:00.000000"}], "components": ["Puppet Server"], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@227150bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6an3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2168_*|*_3_*:*_1_*:*_172601404_*|*_5_*:*_1_*:*_11204045_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_428163753"}], "description": "(Initial planned release date: 2016-05-19)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n* Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel. - Done\n* Create a version we can target future issues or issues that didn't make it into the current release. \n** Created SERVER 2.4.x and SERVER 2.5.0.\n* Create a public pair of queries for inclusion in the release notes/announcement. \n** Introduced in SERVER 2.4.0: https://puppet.atlassian.net/issues/?filter=19818\n** Fixes for SERVER 2.4.0: https://puppet.atlassian.net/issues/?filter=19819\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17442", "fixedVersions": ["SERVER 2.4.0"], "id": "17442", "issueType": "Sub-task", "key": "SERVER-1338", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T13:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Done and passed CI at https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/44/", "created": "2016-05-16T18:17:00.000000"}], "components": ["Puppet Server"], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26a10089"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6amv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_18039155_*|*_1_*:*_1_*:*_2190_*|*_3_*:*_1_*:*_248306179_*|*_5_*:*_1_*:*_253425393_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_92203180"}], "description": "(Initial planned release date: 2016-05-19)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17022", "fixedVersions": ["SERVER 2.4.0"], "id": "17022", "issueType": "Sub-task", "key": "SERVER-1337", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-16T18:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Full acceptance on all platforms passed at https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/49/", "created": "2016-05-19T09:01:00.000000"}], "components": ["Puppet Server"], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5261c756"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6amn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_165140274_*|*_1_*:*_1_*:*_2076_*|*_3_*:*_1_*:*_40785731_*|*_5_*:*_1_*:*_27530106_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_378519385"}], "description": "(Initial planned release date: 2016-05-19)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16785", "fixedVersions": ["SERVER 2.4.0"], "id": "16785", "issueType": "Sub-task", "key": "SERVER-1336", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T09:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] FYI this is the script I was talking about (see ticket description) I ran it and provided\n\n{code}\nEnter Git From Rev: 2.3.2\nEnter Git To Rev: master\nEnter JIRA project: SERVER\nEnter JIRA fix version: SERVER 2.4.0\n{code}\n\nand got the output https://gist.github.com/rlinehan/7acc923158013e5a2c8e5b8e3af4b6fb", "created": "2016-05-16T16:07:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Here's what I ended up with for tickets included in this release. (cc/ [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e])\n\nWe bumped several clojure library dependencies that brought in the following tickets:\n\nTrapperkeeper 1.3.1 -> 1.4.0:\nTK-347\nTK-211\nTK-349\nTK-351\n\nTrapperkeeper-webserver-jetty9 1.5.6 -> 1.5.9:\nTK-372\n\nTrapperkeeper-authorization 0.5.0 -> 0.5.1:\nTK-360\nTK-293\n\nEZBake 0.3.23 -> 0.4.0\nEZ-48\nEZ-72\nEZ-76\nEZ-62\n\nOther tickets:\nORCH-1235\nPE-13485\nPE-14865\nPUP-5482\nSERVER-1187\nSERVER-1206\nSERVER-1245\nSERVER-1252\nSERVER-1257\nSERVER-1273\nSERVER-542\nSERVER-557\nSERVER-615\nSERVER-864\nSERVER-977\n\n(this is not all tickets tagged with SERVER 2.4.0 - I excluded from this list the ones that were acceptance-test specific)\n", "created": "2016-05-16T18:34:00.000000"}], "components": ["Puppet Server"], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7881813f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6amf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2209_*|*_3_*:*_1_*:*_60464638_*|*_10009_*:*_1_*:*_172780169_*|*_5_*:*_1_*:*_19849341_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_358886036"}], "description": "(Initial planned release date: 2016-05-19)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16432", "fixedVersions": ["SERVER 2.4.0"], "id": "16432", "issueType": "Sub-task", "key": "SERVER-1335", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-19T11:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Passed acceptance at https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-stable/46/", "created": "2016-05-18T08:50:00.000000"}], "components": ["Puppet Server"], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6846ade4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6am7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_141991976_*|*_1_*:*_1_*:*_2152_*|*_10007_*:*_1_*:*_3878_*|*_3_*:*_1_*:*_14885454_*|*_5_*:*_1_*:*_114630460_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_340471992"}], "description": "(Initial planned release date: 2016-05-19)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.4.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16138", "fixedVersions": ["SERVER 2.4.0"], "id": "16138", "issueType": "Sub-task", "key": "SERVER-1334", "labels": [], "originalEstimate": "PT0S", "parent": "15894", "parentSummary": "puppetserver 2.4.0 2016-05-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-18T08:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.4.0)", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-05-12T14:41:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@322c95e4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn9qv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Want to do release by hardening start"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1958_*|*_3_*:*_1_*:*_428537215_*|*_5_*:*_1_*:*_1201585_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_509188739"}], "description": "puppetserver 2.4.0 2016-05-19 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15894", "fixedVersions": ["SERVER 2.4.0"], "id": "15894", "issueType": "Task", "key": "SERVER-1333", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-05-23T11:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.4.0 2016-05-19 Release", "timeSpent": "PT0S", "updated": "2016-05-31T08:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-05-12T09:41:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2796bdfb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynctr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_35252_*|*_5_*:*_1_*:*_11916293299_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_9890948"}], "description": "Kylo and I spent about half a day working on some POC things to see if we could find a path forward for improving the Puppet settings subsystem, with the particular goal of making it possible to read the Puppet settings from other languages besides Ruby without having to maintain a huge amount of custom logic across all of the languages.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15309", "fixedVersions": [], "id": "15309", "issueType": "Task", "key": "SERVER-1332", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-05-12T12:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Spike on improving Puppet's settings implementation", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-05-12T09:34:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6294ac04"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynssf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_69839_*|*_5_*:*_1_*:*_11916306761_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10290560"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17021", "fixedVersions": [], "id": "17021", "issueType": "Task", "key": "SERVER-1331", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-05-12T12:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Sort out branching situation to prepare for OSS 2.4.0 release", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Discussing this in backlog grooming, there's some institutional knowledge that the schema docs may be wrong and might be only usable for us in {{use-fixtures :every}} rather than the documented {{use-fixtures :once}} hook.\n\nThere may also be libraries setting the global schema validation status with {{set-fn-validation! false}}.\n\nInvestigating the former suggestion, if true filing an issue with schema, auditing our projects for both are the scope of this ticket, and documenting these work arounds and best practices are the scope of this ticket.", "created": "2016-05-11T10:57:00.000000"}], "components": [], "created": "2016-05-10T12:36:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a620d60"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynd3j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_81319705_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_55580799920"}], "description": "When fixing an issue in ring-middleware I noticed schema.test/validate-schemas not working correctly. [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] has also seen this behavior in other test namespaces. It should be noted that I've seen this work in the test namespace that caught the ring-middleware regression: [pe-puppet-server-extensions#2016.2.x/tests/i/p/e/s/r/reversy_proxy_ca_service_test.clj|https://github.com/puppetlabs/pe-puppet-server-extensions/blob/2016.2.x/test/integration/puppetlabs/enterprise/services/reverse_proxy/reverse_proxy_ca_service_test.clj#L56]. I currently have a strong need to just use {{^:always-validate}} at the function definition and move on (which seems to work), but we may want have a further investigation to see if there are edge cases where schema doesn't validate when we believe it to be validating.\n\nA reproduction taken from the ring-middleware Pull Request is below:\n{code}\nHere is an example of re-introducing the regression and then attempting to force schema validation through other means than ^:always-validate:\n\n10:34:17 hobo:ring-middleware justin (maint-wrap-proxy-schema %) \u2016 vim src/puppetlabs/ring_middleware/core.clj \n\n10:34:37 hobo:ring-middleware justin (maint-wrap-proxy-schema *%) \u2016 git diff src/\ndiff --git a/src/puppetlabs/ring_middleware/core.clj b/src/puppetlabs/ring_middleware/core.clj\nindex f2d258f..b4d2817 100644\n--- a/src/puppetlabs/ring_middleware/core.clj\n+++ b/src/puppetlabs/ring_middleware/core.clj\n@@ -135,11 +135,11 @@\n       (log/trace \"Computed response:\" resp)\n       resp)))\n\n-(schema/defn ^:always-validate wrap-proxy :- IFn\n+(schema/defn wrap-proxy :- IFn\n   \"Proxies requests to proxied-path, a local URI, to the remote URI at\n   remote-uri-base, also a string.\"\n   [handler :- IFn\n-   proxied-path :- (schema/either Pattern schema/Str)\n+   proxied-path :- (schema/enum Pattern schema/Str)\n    remote-uri-base :- schema/Str\n    & [http-opts]]\n   (let [proxied-path (if (instance? Pattern proxied-path)\n\n10:34:53 hobo:ring-middleware justin (maint-wrap-proxy-schema *%) \u2016 lein test :only puppetlabs.ring-middleware.core-test/test-proxy\n\nlein test puppetlabs.ring-middleware.core-test\n2016-05-10 10:35:26,924 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@3826510a{/,null,null} contextPath ends with /\n2016-05-10 10:35:27,478 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@51d14a8a{/,null,null} contextPath ends with /\n2016-05-10 10:35:27,985 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@39d0670c{/,null,null} contextPath ends with /\n2016-05-10 10:35:28,359 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@428ebfde{/,null,null} contextPath ends with /\n2016-05-10 10:35:28,755 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@30625f51{/,null,null} contextPath ends with /\n2016-05-10 10:35:28,883 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@2058633e{/,null,null} contextPath ends with /\n2016-05-10 10:35:28,981 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@4a796b3e{/,null,null} contextPath ends with /\n2016-05-10 10:35:29,071 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@582fd243{/,null,null} contextPath ends with /\n2016-05-10 10:35:29,172 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@3384002c{/,null,null} contextPath ends with /\n2016-05-10 10:35:29,269 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@6d1cf84c{/,null,null} contextPath ends with /\n2016-05-10 10:35:29,407 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@6f10b857{/,null,null} contextPath ends with /\n2016-05-10 10:35:29,508 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@6a0f2971{/,null,null} contextPath ends with /\n2016-05-10 10:35:29,602 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@393d64d2{/,null,null} contextPath ends with /\n2016-05-10 10:35:29,686 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@5e250a1a{/,null,null} contextPath ends with /\n\nRan 1 tests containing 61 assertions.\n0 failures, 0 errors.\n\n10:36:57 hobo:ring-middleware justin (maint-wrap-proxy-schema *%) \u2016 vim test/puppetlabs/ring_middleware/core_test.clj \n\n10:37:21 hobo:ring-middleware justin (maint-wrap-proxy-schema *%) \u2016 git diff test/\ndiff --git a/test/puppetlabs/ring_middleware/core_test.clj b/test/puppetlabs/ring_middleware/core_test.clj\nindex a78d02e..1b91bcf 100644\n--- a/test/puppetlabs/ring_middleware/core_test.clj\n+++ b/test/puppetlabs/ring_middleware/core_test.clj\n@@ -14,12 +14,14 @@\n             [puppetlabs.trapperkeeper.testutils.logging :as logutils]\n             [ring.util.response :as rr]\n             [schema.core :as schema]\n+            [schema.test :as schema-test]\n             [slingshot.slingshot :as slingshot]))\n\n\n ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n ;;;; Testing Helpers\n\n+(use-fixtures :once schema-test/validate-schemas)\n\n (def WackSchema\n   [schema/Str])\n\n10:37:24 hobo:ring-middleware justin (maint-wrap-proxy-schema *%) \u2016 lein test :only puppetlabs.ring-middleware.core-test/test-proxy\n\nlein test puppetlabs.ring-middleware.core-test\n2016-05-10 10:37:43,933 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@67485f3c{/,null,null} contextPath ends with /\n2016-05-10 10:37:44,546 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@516a97eb{/,null,null} contextPath ends with /\n2016-05-10 10:37:45,088 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@5f41e81d{/,null,null} contextPath ends with /\n2016-05-10 10:37:45,429 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@6e0bfba8{/,null,null} contextPath ends with /\n2016-05-10 10:37:45,837 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@7630471{/,null,null} contextPath ends with /\n2016-05-10 10:37:45,969 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@7453fdf5{/,null,null} contextPath ends with /\n2016-05-10 10:37:46,070 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@2b6c5c75{/,null,null} contextPath ends with /\n2016-05-10 10:37:46,165 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@1bdfa51f{/,null,null} contextPath ends with /\n2016-05-10 10:37:46,274 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@2b58ca9c{/,null,null} contextPath ends with /\n2016-05-10 10:37:46,378 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@589b08df{/,null,null} contextPath ends with /\n2016-05-10 10:37:46,503 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@54fc186f{/,null,null} contextPath ends with /\n2016-05-10 10:37:46,610 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@75751baf{/,null,null} contextPath ends with /\n2016-05-10 10:37:46,713 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@4c724636{/,null,null} contextPath ends with /\n2016-05-10 10:37:46,807 WARN  [o.e.j.s.h.ContextHandler] o.e.j.s.h.ContextHandler@18315379{/,null,null} contextPath ends with /\n\nRan 1 tests containing 61 assertions.\n0 failures, 0 errors.\n\n10:38:33 hobo:ring-middleware justin (maint-wrap-proxy-schema *%) \u2016 vim test/puppetlabs/ring_middleware/core_test.clj \n\n10:40:30 hobo:ring-middleware justin (maint-wrap-proxy-schema *%) \u2016 git diff test/\ndiff --git a/test/puppetlabs/ring_middleware/core_test.clj b/test/puppetlabs/ring_middleware/core_test.clj\nindex a78d02e..d7afd67 100644\n--- a/test/puppetlabs/ring_middleware/core_test.clj\n+++ b/test/puppetlabs/ring_middleware/core_test.clj\n@@ -14,12 +14,14 @@\n             [puppetlabs.trapperkeeper.testutils.logging :as logutils]\n             [ring.util.response :as rr]\n             [schema.core :as schema]\n+            [schema.test :as schema-test]\n             [slingshot.slingshot :as slingshot]))\n\n\n ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n ;;;; Testing Helpers\n\n+(schema/set-fn-validation! true)\n\n (def WackSchema\n   [schema/Str])\n\n10:40:33 hobo:ring-middleware justin (maint-wrap-proxy-schema *%) \u2016 lein test :only puppetlabs.ring-middleware.core-test/test-proxy\nException in thread \"main\" clojure.lang.ExceptionInfo: Input to wrap-proxy does not match schema: [nil (named (not (#{java.util.regex.Pattern java.lang.String} \"/hello-proxy\")) proxied-path) nil] {:type :\nschema.core/error, :schema [#schema.core.One{:schema clojure.lang.IFn, :optional? false, :name handler} #schema.core.One{:schema (enum java.util.regex.Pattern java.lang.String), :optional? false, :name pr\noxied-path} #schema.core.One{:schema java.lang.String, :optional? false, :name remote-uri-base} #schema.core.One{:schema Any, :optional? true, :name http-opts}], :value (#object[puppetlabs.ring_middleware\n.core_test$proxy_error_handler 0x2fc21fab \"puppetlabs.ring_middleware.core_test$proxy_error_handler@2fc21fab\"] \"/hello-proxy\" \"http://localhost:9000/hello\"), :error [nil (named (not (#{java.util.regex.Pat\ntern java.lang.String} \"/hello-proxy\")) proxied-path) nil]}, compiling:(core_test.clj:95:7)\n        at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3628)\n        at clojure.lang.Compiler$DefExpr.eval(Compiler.java:439)\n        at clojure.lang.Compiler.eval(Compiler.java:6787)\n        at clojure.lang.Compiler.load(Compiler.java:7227)\n\n...snip...\n\n        at puppetlabs.ring_middleware.core$eval8368$wrap_proxy__8373.doInvoke(core.clj:138)\n        at clojure.lang.RestFn.invoke(RestFn.java:445)\n        at clojure.lang.AFn.applyToHelper(AFn.java:160)\n        at clojure.lang.RestFn.applyTo(RestFn.java:132)\n        at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3623)\n        ... 36 more\nTests failed.\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17441", "fixedVersions": [], "id": "17441", "issueType": "Bug", "key": "SERVER-1330", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Fix", "resolutionDate": "2018-02-13T17:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate schema.test/validate-schemas not working in some test namespaces", "timeSpent": "PT0S", "updated": "2018-02-13T17:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "this ought to be a beaker test.", "created": "2016-05-24T15:38:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "It would be good to take this test to docs and ensure that test and docs are consistent.\nhttps://docs.puppet.com/puppetserver/latest/external_ssl_termination.html\nhttp://wiki.squid-cache.org/Features/HTTPS\nhttp://wiki.squid-cache.org/Features/SslPeekAndSplice", "created": "2016-05-24T15:42:00.000000"}], "components": [], "created": "2016-05-10T10:26:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2076a478"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67mf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1235151845_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_26171745172"}], "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "15307", "fixedVersions": [], "id": "15307", "issueType": "Task", "key": "SERVER-1329", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-03-23T15:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate external SSL termination operations", "timeSpent": "PT0S", "updated": "2017-03-23T15:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-05-10T10:26:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d11f8c4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67m7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1233912877_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_26173014044"}], "description": "We need to create a beaker test that validates [~accountid:5f581819110ce00069f59a2a]'s new approach to external CA/ intermediate CA operations, documented below.\nhttps://puppet.atlassian.net/browse/SERVER-895\nhttps://gist.github.com/ahpook/06d4cfda1d68c08bc82fbfdc40123b28\nhttps://confluence.puppetlabs.com/display/~eric.sorenson/Intermediate+CA+Draft\n\nNote there is a legacy test checked into puppetserver that is based on Jeff McCune's and Stan Duffy's work.  These tests follow documentation that is difficult for users to implement, and I believe that if we can get a beaker test running that proves Intermediate CA, the legacy Rake based tests can be deleted. ", "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "15019", "fixedVersions": [], "id": "15019", "issueType": "Task", "key": "SERVER-1328", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-03-23T15:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate External CA operations", "timeSpent": "PT0S", "updated": "2017-03-23T15:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This ought to be unit/ or integration test, not a beaker test.", "created": "2016-05-24T15:36:00.000000"}], "components": [], "created": "2016-05-10T10:22:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6dc1bd9b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67lr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1235986865_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_26171192829"}], "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "17020", "fixedVersions": [], "id": "17020", "issueType": "Task", "key": "SERVER-1327", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-03-23T15:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a clojure test which validates correct puppetserver behavior (useful error) when presented with an expired certificate.", "timeSpent": "PT0S", "updated": "2017-03-23T15:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "See CA expires.  Lower priority...", "created": "2016-05-24T15:34:00.000000"}], "components": [], "created": "2016-05-10T10:21:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65266a92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67lj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1236023979_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_26171205735"}], "description": "These are probably clojure unit tests;\nWe ought to validate that we can not sign certificates, and that puppet agent runs can not proceed, and that useful errors are thrown.\n\nThe agent runs portion could potentially be a beaker test, but if we treat it as an endpoint test that returns a specified error, then it could be a unit test.", "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "16784", "fixedVersions": [], "id": "16784", "issueType": "Task", "key": "SERVER-1326", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-03-23T15:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a clojure test which validates correct behavior of the puppetserver when the CA is not yet valid.", "timeSpent": "PT0S", "updated": "2017-03-23T15:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "validate we don't sign a cert.\nvalidate that we log something helpful\nboth of the above could be unit tests.\n\nvalidate that an agent rejects communication with a server that presents an expried CA cert.\nbeaker test ^^\n\nWe should continue to run so that we can provide feedback to users about what is happening.\ncould be beaker or unit or int", "created": "2016-05-24T15:33:00.000000"}], "components": [], "created": "2016-05-10T10:21:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3106ff19"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67lb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1236055045_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_26171217102"}], "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "16430", "fixedVersions": [], "id": "16430", "issueType": "Task", "key": "SERVER-1325", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-03-23T15:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a clojure test which validates correct behavior of puppetserver when its CA expires.", "timeSpent": "PT0S", "updated": "2017-03-23T15:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing \"won't do\" because this appears to already be well covered in unit tests.\nhttps://github.com/puppetlabs/puppetserver/blob/master/test/unit/puppetlabs/puppetserver/certificate_authority_test.clj#L771\n", "created": "2016-05-24T16:37:00.000000"}], "components": [], "created": "2016-05-10T10:20:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@720322d9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67l3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1232212703_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "16137", "fixedVersions": [], "id": "16137", "issueType": "Task", "key": "SERVER-1324", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-05-24T16:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate sequential certificate serial numbers, and that the serial numbers can be controlled.  ", "timeSpent": "PT0S", "updated": "2016-05-24T16:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This is done:\nhttps://github.com/puppetlabs/puppetserver/blob/master/test/unit/puppetlabs/puppetserver/certificate_authority_test.clj#L977\n\nValidate that certificates issued to clients have X509v3 Extended Key Usage set to critical:\nhttps://github.com/puppetlabs/puppetserver/blob/master/test/unit/puppetlabs/puppetserver/certificate_authority_test.clj#L995\n\nSee http://www.alvestrand.no/objectid/2.5.29.37.html", "created": "2016-05-24T16:35:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Already done.", "created": "2016-05-24T16:35:00.000000"}], "components": [], "created": "2016-05-10T10:19:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@41197be1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67kn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1232168994_*|*_5_*:*_2_*:*_10864694820_*|*_6_*:*_1_*:*_0"}], "description": "- Validate that certificates issued to clients have X509v3 Extended Key Usage set to critical, and that the \nTLS web server auth and client auth attributes are set.\n-- Validate that X509v3 Extended Key Usage: is set to \"critical\" {2.5.29.37} \n-- 'X509v3 Extended Key Usage: critical'\n-- 'TLS Web Server Authentication, TLS Web Client Authentication'", "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "15617", "fixedVersions": [], "id": "15617", "issueType": "Task", "key": "SERVER-1323", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-05-24T16:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a test that validates correct X509v3 Extended Key Usage for the master cert.", "timeSpent": "PT0S", "updated": "2016-09-27T10:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I've validated that oid # 2.5.29.35 maps to Authority Key Identifier.  So, this might already be done here:\nhttps://github.com/puppetlabs/puppetserver/blob/master/test/unit/puppetlabs/puppetserver/certificate_authority_test.clj#L960\nBut I'm concerned that in the unit test issuer-dn is nil.  Leaving open for additional discussion.", "created": "2016-05-24T16:28:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I don't think I'm going to have a chance to get to this within the current sprint (Jade 2016-06-29) or during the following sprint as I believe I will be fully consumed with other work.  Pushing out by two sprints after a brief conversation with [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5].", "created": "2016-06-28T10:12:00.000000"}], "components": [], "created": "2016-05-10T10:17:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29396011"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7rgf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found that we had more work than expected during the originally defined sprint."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1297765077_*|*_3_*:*_1_*:*_707763_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_26108999424"}], "description": "Create a clojure unit test that validates that agent certificates are issued with the correct x509v3 Authority Key Identifier extension that correctly identifies the issuing CA.\n\nhttp://www.alvestrand.no/objectid/2.5.29.35.html", "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "15305", "fixedVersions": [], "id": "15305", "issueType": "Task", "key": "SERVER-1322", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-03-23T15:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a clojure unit or integration test that validates that certificates are issued with correct X509v3 Authority key Identifier extension that correctly identifies the issuing CA.", "timeSpent": "PT0S", "updated": "2017-03-23T15:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Based on previous conversations with Chris Price, this seems like it ought to be a clojure unit test.", "created": "2016-05-24T16:23:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This is done for the master certificate here:\nhttps://github.com/puppetlabs/puppetserver/blob/master/test/unit/puppetlabs/puppetserver/certificate_authority_test.clj#L994\n\nThis is done for the agent certificate here:\nhttps://github.com/puppetlabs/puppetserver/blob/master/test/unit/puppetlabs/puppetserver/certificate_authority_test.clj#L965", "created": "2016-05-24T17:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Already done in unit testing.", "created": "2016-05-24T17:14:00.000000"}], "components": [], "created": "2016-05-10T10:16:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@398bce5b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67kf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1234686431_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "15017", "fixedVersions": [], "id": "15017", "issueType": "Task", "key": "SERVER-1321", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-05-24T17:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a clojure unit test that validates that certs are generated with CA FALSE by default.", "timeSpent": "PT0S", "updated": "2016-05-24T17:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "So there seem to be four possible ways of approaching the act of signing a CSR:\nautosign script\ncommand line tool?  puppet cert sign\nPE GUI.\npuppetserver HTTP CA.\n\nThe vector/interface WE care about is that a POST to /ca/v1/cert_status \nThis should be an integration test.", "created": "2016-05-24T15:28:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "W007!", "created": "2016-06-20T17:08:00.000000"}], "components": [], "created": "2016-05-10T10:15:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25ba63e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn6bb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_20433445_*|*_1_*:*_1_*:*_1297920074_*|*_10007_*:*_1_*:*_260036785_*|*_3_*:*_1_*:*_840943895_*|*_5_*:*_1_*:*_8529956876_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1147495338"}], "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "14735", "fixedVersions": ["SERVER 2.5.0"], "id": "14735", "issueType": "Task", "key": "SERVER-1320", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2016-06-20T17:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a clojure unit test which validates that CSRs with the CA_TRUE attribute can not be signed via the HTTP CA.", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The config file is unit tested...\n\nPS people are pushing people to use autosign.\n\nWe are well covered in unit tests for the autosign feature.", "created": "2016-05-24T15:12:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing this as not doing because we are well covered with unit tests for the autosign feature.", "created": "2016-05-24T16:22:00.000000"}], "components": [], "created": "2016-05-10T10:15:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@736fa75d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67jz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1231628788_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "17019", "fixedVersions": [], "id": "17019", "issueType": "Task", "key": "SERVER-1319", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-05-24T16:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a test that validates the autosign feature.", "timeSpent": "PT0S", "updated": "2016-05-24T16:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Chris Price recommends we skip the first part of the life cycle. (The part the beaker does automatically for every host ever called into existence.)\n\nQA to validate that beaker is using he HTTP CA to setup agents.  If it is using the non HTTP CA command line methods, then QA ought to write test(s) that cover the first part of the life cycle AGAINST the HTTP CA.", "created": "2016-05-24T15:12:00.000000"}], "components": [], "created": "2016-05-10T10:08:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76ff8aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1317"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67jr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1231981500_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_26176076507"}], "description": "Create an end user test that validates the following steps in the lifecycle of an agent's certificate:\nAssuming we are starting with a working agent,\nGet Status, perform agent run (expecting it to return 0 or 2)\nRevoke, Get Status, Get CRL, perform agent run (it should fail)\nDelete, Get Status, Get CRL, perform agent run (it should fail)\nCreate CSR, Send CSR, Get Status, perform agent run (it should fail, or use the agent run to create and send the CSR)\nSign CSR, Get Status, perform agent run (it should pass.) \n", "epicLinkSummary": "HTTP CA Tests", "estimate": "PT0S", "externalId": "16783", "fixedVersions": [], "id": "16783", "issueType": "Task", "key": "SERVER-1318", "labels": [], "originalEstimate": "PT0S", "parent": "15015", "parentSummary": "HTTP CA Tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-03-23T15:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a beaker based agent certificate life-cycle test.", "timeSpent": "PT0S", "updated": "2017-03-23T15:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], do you think there's any value in keeping this epic (and the linked tickets) open at this point or should we just close them all?", "created": "2016-12-13T14:49:00.000000"}], "components": [], "created": "2016-05-10T10:01:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9b4f38e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-3"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "HTTP CA Tests"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "yellow"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz67if:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_27408606970_*|*_6_*:*_1_*:*_0"}], "description": "This epic lists automated tests that we ought to create to validate our HTTP CA.  This work is of increasing importance, particularly given the work to make the HTTP CA highly available.\n\nQA would like to partner with any available members of the puppetserver development team, and learn how to write clojure unit tests.  Having discussed this work with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] , I'm leaving some of the clojure tickets in \"open\" so that we can discuss them in the next backlog grooming session.\n\nExisting Unit tests are here:\nhttps://github.com/puppetlabs/puppetserver/blob/master/test/unit/puppetlabs/puppetserver/certificate_authority_test.clj\n\nThe majority of these proposed tests are tests that used to execute inside the defunct QATests repository; SERVER-1324, 1325, 1326, 1327, and 1329 would introduce new tests, while the rest of the tickets would just create previously existing tests.\n\nDocumentation:\nhttps://docs.puppet.com/puppet/latest/reference/http_api/http_api_index.html\nhttps://docs.puppet.com/puppet/latest/reference/http_api/http_certificate.html\nhttps://docs.puppet.com/puppet/latest/reference/http_api/http_certificate_request.html\nhttps://docs.puppet.com/puppet/latest/reference/http_api/http_certificate_status.html\nhttps://docs.puppet.com/puppet/latest/reference/http_api/http_certificate_revocation_list.html", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15015", "fixedVersions": [], "id": "15015", "issueType": "Epic", "key": "SERVER-1317", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2017-03-23T15:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "HTTP CA Tests", "timeSpent": "PT0S", "updated": "2017-03-23T15:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [], "components": [], "created": "2016-05-09T08:10:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ad12181"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyndxz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77353611_*|*_1_*:*_1_*:*_15775_*|*_10007_*:*_1_*:*_197198347_*|*_5_*:*_1_*:*_11898472791_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_17840965"}], "description": "In PE-13485, Nick Walker filed some PRs to standardize our HTTP request logging format.  Somehow those seem to have gotten lost during merge-ups or something; we need to go back and fix that on all of the current branches (OSS and PE).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15013", "fixedVersions": [], "id": "15013", "issueType": "Bug", "key": "SERVER-1316", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-05-12T17:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix request logging formats", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c0ed8866b810069e43620", "body": "Would like to see this implemented so that the intermediate CA scenarios described in the \"External CA\" document can be implemented using puppet's internal certificate signing and distribution mechanism. Ideally we'd like to be able to manually sign master certificates, and autosign agent certificates using different subordinates of our internal PKI.", "created": "2017-01-31T15:38:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Reading the description of this ticket, it seems like the bug being discussed is explicitly surfaced when trying to use autosigning with a CA cert bundle. I've updated the ticket name to reflect that - please let me know if that's not accurate.", "created": "2017-07-20T17:53:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Facility for extraction of ca cert from a chain with validation of the pubkey merged to jvm-ssl-utils/master, here: https://github.com/puppetlabs/jvm-ssl-utils/commit/3d63246bfd86f4afb745648a1d55af880c7907a1", "created": "2017-08-08T09:12:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "update to cert extraction to expect a key pair merged to jvm-ssl-utils/master https://github.com/puppetlabs/jvm-ssl-utils/commit/82c694bb738bdbae387f99020ff5674ff1920fd8", "created": "2017-08-09T18:08:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to puppetserver/master at https://github.com/puppetlabs/puppetserver/commit/9167be99d3eb75c0688b038441bac90c73b02c0f", "created": "2017-08-22T17:52:00.000000"}], "components": [], "created": "2016-05-06T18:40:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24d78e16"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1764"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automate"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyll6n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_3_*:*_121961070_*|*_1_*:*_1_*:*_403397003_*|*_10007_*:*_3_*:*_2284041414_*|*_3_*:*_2_*:*_523569111_*|*_5_*:*_1_*:*_1298053431_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_588472184_*|*_10006_*:*_1_*:*_37609647409"}], "description": "Currently, the CA code returns the contents of $cadir/ca_crt.pem to agents who hit {{/v1/certificate/ca}}, which they do in order to bootstrap a trust relationship. The agents hit this endpoint if there isn't a {{localcacert}} on their filesystem, save the results to {{$ssldir/certs/ca.pem}}, and use the returned certificate to validate subsequent server connections. \n\nWhile the agents will happily use a certificate chain at their {{localcacert}} location to validate server connections, and {{puppet cert generate hostname.dom.ain}} on the master will select and use the correct CA cert out of a chain in {{ca_crt.pem}}, the autosigning code errors when it encounters such a file:\n\n{noformat}\nError: Could not request certificate: Error 500 on SERVER: Internal Server Error: \njava.lang.IllegalArgumentException: The PEM stream must contain exactly 1 certificate\n{noformat}\n\nI'm open to implementation options, either to permit >1 cert in the file (as {{puppet cert generate}} seems to do just fine, presumably by matching the private key to one of the certs in the bundle?) or by allowing a separate file to be returned by the {{/certificate/ca}} endpoint which is disconnected from the actual signing cert file.", "epicLinkSummary": "Improve Intermediate CA Support", "estimate": "PT0S", "externalId": "16135", "fixedVersions": ["SERVER 5.1.0"], "id": "16135", "issueType": "Bug", "key": "SERVER-1315", "labels": ["Server"], "originalEstimate": "PT0S", "parent": "16828", "parentSummary": "Improve Intermediate CA Support", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Fixed", "resolutionDate": "2017-08-30T11:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support autosigning with a ca certificate bundle file", "timeSpent": "PT0S", "updated": "2018-04-06T13:05:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Thanks [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] for the merge.  Closing this ticket out.", "created": "2016-05-13T16:48:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "This passed CI in https://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_smoke-stable/48/ after master was merged down to stable, so moving to closed.", "created": "2016-05-16T16:49:00.000000"}], "components": ["Puppet Server"], "created": "2016-05-06T13:00:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@682f0ff3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz65s7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_259277931_*|*_1_*:*_1_*:*_421481459_*|*_10007_*:*_1_*:*_180381333_*|*_3_*:*_1_*:*_2018776_*|*_5_*:*_1_*:*_258660261_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_14582262"}], "description": "Before this modification, there was setting left over in puppetserver.conf from this test pointing to the code-id scripts. The scripts were deleted as part of teardown, and the test environment (meaning the group of systems under test) would be left in a state where puppet agent runs would fail.\n\nThe ordering of the tear down is important; I wanted to use hocon to teardown the configuration in puppetserver.conf, and the uninstall of r10k and working directories means the uninstall of the hocon module.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15615", "fixedVersions": ["SERVER 2.4.0"], "id": "15615", "issueType": "Bug", "key": "SERVER-1314", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-05-16T16:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Test Bug: Ensure that code_script is fully torn down", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "body": "Don't know if that's the right place for this, but the webrick/rack support is missed sorely for debugging. With webrick/rack support we were able to get debug messages of catalog generations on the fly. Now changing the log level to debug in the logback.xml and waiting 60 seconds don't generate afterwards all the debug log messages generated by webrick/rack compilation.So the only way to get them seems to be starting _puppetserver foreground --debug_ but as there is no easy way to change the port you can't run it in addition to a productive puppetserver.\n\nSo in my opinion an easy way to get the debug messages for a catalog generation is missing. I would love to an option in hte puppet agent to enable debug logging for this catalog run on the puppetserver. But any other option to get to the debug log messages without having to maintain a separate debugging server would be welcome.", "created": "2018-12-29T10:00:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:70121:513396e5-6d1e-4ed4-acee-3752a305e2af] The new /v4/catalog endpoint being released in Puppet Server 6.3.0 might give you some of what you're looking for. It has the ability to capture logs and return them along with the compiled catalog. See https://github.com/puppetlabs/puppetserver/blob/master/documentation/puppet-api/v4/catalog.markdown. Please note that all requests to this endpoint are denied by default, you will need to update the rule in {{auth.conf}} to whitelist the certname of the host from which you are making the request (we recommend that this is only the master, for security reasons).", "created": "2019-03-26T10:42:00.000000"}, {"author": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "body": "Thanks for the reminder. Last I looked Puppet Server 6.3.0 was not released yet. I was not able to access the v4 catalog endpoint without providing the facts via the facts parameter. When I tried it without the facts parameter I always got the error message: _\"PuppetDB not configured, please provide facts with your catalog request.\"_ even if v3 catalog endpoint requests had no problem storing facts and reports in the puppetdb. Don't know the cause for that error. Could it be that additional configuration for accessing the puppetdb from the v4 catalog endpoint is required?\n\nWith facts provided via the facts parameter it worked as described, but at the moment the v4 catalog endpoint does not solve my problem, because the log messages returned are the same as in the puppetserver.log. What I want are log messages with log level debug. If there were a additional option log_level were you can change the log level, this would solve my problem.", "created": "2019-03-26T16:20:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for the feedback! When implementing this, we had questioned whether we should allow the log level to be configurable, and this provides the use case we didn't have at the time. We are currently filtering out things that aren't warnings or errors, because we were worried about being overly verbose and/or revealing sensitive data. But I think it's okay as an opt-in thing. I'll file a ticket for that addition.\n\nThat error message is confusing to me too, we designed it to check the same configuration that Puppet normally checks when looking for PDB (it checks that Puppet is configured to use the PuppetDB terminus when finding facts, see https://github.com/puppetlabs/puppetserver/blob/master/src/ruby/puppetserver-lib/puppet/server/compiler.rb#L186-L190. This is normally controlled via the settings {{storeconfigs = true}} and {{storeconfigs_backend=puppetdb}} in {{puppet.conf}}. Is that how your system is set up?", "created": "2019-03-26T16:34:00.000000"}, {"author": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "body": "I am not sure if removing the filtering will solve this issue, because as far as I know the debug messages I want (hiera lookups) are only generated if the puppetserver is started with the option _--debug_. But I am no expert so it could be that I am mistaken.\n\nYes, the two settings are in the puppet.conf in the master section and I also put them into the main section and restarted, but the error remains the same:\n{noformat}\nERROR [qtp108952049-89] [p.r.core] Internal Server Error: org.jruby.exceptions.RuntimeError: (Error) PuppetDB not configured, please provide facts with your catalog request.\n at RUBY.extract_facts(uri:classloader:/puppetserver-lib/puppet/server/compiler.rb:189){noformat}", "created": "2019-03-26T16:54:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Oh, sorry, to clarify, the ticket I intend to file would allow the user to specify the log level as part of the request. We capture the logs specially for this compile and can manipulate the logging level around that code block, I think. So no settings changes required.\n\nI'll see if I can repro your error. We definitely have some internal testing that verifies the puppetdb query works. If you're comfortable doing so, you could add a {{Puppet.warning}} log message before that conditional to see what indirection class Puppet thinks it's using. That message should show up in the puppetserver logs. Alternvatively, you could use {{pry}} with {{puppetserver foreground}}, see https://puppet.com/docs/puppetserver/6.3/dev_debugging.html#pry. That might help me figure out what's going on.", "created": "2019-03-26T17:48:00.000000"}, {"author": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "body": "It took some time to get it working. First time I had to add log messages to a ruby file inside a jar file. The Fact terminus reported is 'yaml'. If I create a routes.conf with the following content:\n{code:java}\n---\nmaster:\n  facts:\n    terminus: puppetdb\n{code}\nThen the fact retrieval from the puppetdb works as expected. I think the problem is, that if no routes.conf is present for the packaged puppetserver something like this is the default configuration:\n{code:java}\n---\nmaster:\n  facts:\n    terminus: puppetdb\n    cache: yaml\n{code}\nAnd therefore Node terminus reports 'yaml' instead of 'puppetdb'. If 'yaml' is only usable as cache with 'puppetdb' as real terminus then it should be possible to accept 'yaml' and 'puppetdb' as valid fact terminus.", "created": "2019-03-27T05:15:00.000000"}, {"author": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] Did you create a ticket to improve the log level on a catalog create request? If so can you tell me the ticket id, because I could not find it.", "created": "2019-04-18T09:54:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Thanks for the reminder! I just filed it, https://puppet.atlassian.net/browse/SERVER-2520.", "created": "2019-04-18T10:04:00.000000"}], "components": [], "created": "2016-05-05T12:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29551adf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Improved JRuby Debugging UX"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbnr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Dec/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_151220180660_*|*_6_*:*_1_*:*_0"}], "description": "This epic covers work that needs to be done to improve the debugging experience prior to removing webrick support.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14734", "fixedVersions": ["SERVER 5.y"], "id": "14734", "issueType": "Epic", "key": "SERVER-1313", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2021-02-18T16:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improved JRuby Debugging UX", "timeSpent": "PT0S", "updated": "2021-08-23T10:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Ping [~accountid:63d40635a05386069cdb69d6] - this seems valid but I wanted to get input from release eng since it's in packaging. Your \u20ac2?", "created": "2016-05-11T10:22:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "Seems valid to me. I'll discuss with the team to make sure I'm not missing something. ", "created": "2016-05-12T09:51:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "[~accountid:63d40635a05386069cdb69d6] Hi!  I noticed you recently moved this issue to the 'Puppet Agent' project.  As I understood it, the puppet-agent package doesn't actually create the puppet user (as puppet runs as root), and it's the puppetserver package that does.", "created": "2016-06-08T02:53:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "[~accountid:557058:054fa98a-5e29-48e7-aeca-d5542926f8ba]  you're correct. That's what I get for moving quickly. I'll move this over to SERVER. ", "created": "2016-06-08T21:34:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "This appears to be still valid. [~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] could you have a look at this? ", "created": "2017-07-21T14:36:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] do you think this is worth doing? If so, it's probably going to involve some ezbake work, and might have some weird implications for upgrades.", "created": "2018-02-16T11:34:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "Hey people. Is it planned to work on this in the near future?", "created": "2018-11-29T15:34:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "I've started looking into adding support for this with EZBake (EZ-128). I feel like this should be a fairly safe change to make with puppetserver, so long as we're only changing it for users that do not yet exist.", "created": "2018-11-30T16:04:00.000000"}, {"author": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] thanks!", "created": "2018-11-30T16:07:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] see also https://fedoraproject.org/wiki/Packaging:UsersAndGroups#Soft_static_allocation for an example code.", "created": "2018-12-02T06:43:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T10:27:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Puppetserver's packaging is a mystery to me. Is there a spec file somewhere?", "created": "2022-03-08T11:02:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "Since all the hard work was done in https://github.com/puppetlabs/ezbake/pull/512, this should be trivial. \u00a0The only issue is that non Puppet Inc employees don't have access to the Jenkins build environment normally used to build packages.", "created": "2022-03-08T13:07:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Re-opening, will review the PR", "created": "2022-03-08T13:13:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "ie [https://github.com/puppetlabs/puppetserver/pull/2620] is probably all that's needed.\n\n\u00a0\n\n[~accountid:61af86343618cd006f430854] Given this new PR (and that 99% of the work was already completed by Puppet), should we reopen this ticket?\n\nEDIT - Thanks!\u00a0 I see that you already have! :)", "created": "2022-03-08T13:28:00.000000"}, {"author": "61af86343618cd006f430854", "body": "[~accountid:557058:55b23daa-f1aa-41fd-b10d-bf49a61932da] can you please update pe-pse as well please\n\n\u00a0", "created": "2022-04-27T11:19:00.000000"}, {"author": "557058:55b23daa-f1aa-41fd-b10d-bf49a61932da", "body": "On second thought, I realized that pe-pse has a {{pe-puppet}} user, not a {{puppet}} user, so it wouldn't make sense to use the same UID/GID for a different user/group.", "created": "2022-04-27T11:58:00.000000"}], "components": [], "created": "2016-05-05T03:27:00.000000", "creator": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5858d897"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0k8ri242"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When the 'puppet' user and group are created on rpm-based systems, they are now assigned a static UID/GID of 52."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1184648233_*|*_1_*:*_1_*:*_627857037_*|*_10007_*:*_1_*:*_241077_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_9914291_*|*_10005_*:*_2_*:*_186819193687"}], "description": "In Fedora and Redhat, 'puppet' has been assigned a static uid of 52\n\nhttps://git.fedorahosted.org/cgit/setup.git/tree/uidgid#n61\nhttps://fedoraproject.org/wiki/Packaging:UsersAndGroups\n\nThe puppet 3 package uses this uid\nhttps://github.com/puppetlabs/puppet/blob/master/ext/redhat/puppet.spec.erb#L284\n\nbut puppet-server doesn't.\nhttps://github.com/puppetlabs/ezbake/blob/master/resources/puppetlabs/lein-ezbake/template/pe/ext/redhat/ezbake.spec.erb#L176\n\n(The puppet 4, puppet-agent package doesn't create a 'puppet' user).\n\nHaving a fixed uid is useful in multi-master HA setups (where shared storage for the yamldir has been [recommended|http://theforeman.org/2015/12/journey_to_high_availability.html].)\n\nKind Regards,\nAlex", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15303", "fixedVersions": ["SERVER 6.20.0", "SERVER 7.8.0"], "id": "15303", "issueType": "Bug", "key": "SERVER-1381", "labels": ["docs_reviewed", "low-hanging-fruit", "usability"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "resolution": "Fixed", "resolutionDate": "2022-04-27T11:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "RPM should create puppet user with UID/GID 52", "timeSpent": "PT0S", "updated": "2022-07-25T10:37:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Informal discussions with folks in the Professional Services and Support channels have been supportive of changing the API endpoints to return standardized errors across our projects.\n\nCharlie Sharpsteen preferred changing our error formatting in a new API version, but deferring to how other teams in Eng moved over to the new format standard.\n\nInvestigating _how_ other teams transitioned over to the new error format, I found that PDB still hasn't migrated over. It seems that the new standard has potentially only been implemented by new PE projects?\n\nFWIW, PDB members said that they are considering moving to the new error format in v5 of their API.", "created": "2016-05-11T21:58:00.000000"}, {"author": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "body": "Orchestrator is switching to the standard format in couch but our API is intentionally not public now.\n\nSince I kind of kicked this off my expectation has been that we would switch formats when something else triggered an api version change not bump the version just for this. If we really want to standardize puppet-server could have middleware duplicate information in both new and old keys in the response. That would be ugly for new API users though.", "created": "2016-05-12T09:26:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "My findings so far:\n1. I didn't find any internal projects parsing the body of error messages for our projects (puppetserver, file-sync, tk-* services).\n2. PS and Support seemed fine with this change when asked informally (though some asked if this would mean we were bumping our API versions).\n3. I didn't find any gems that integrated with our HTTP error messages (searching rubygems.org for \"puppet\")\n4. I didn't find any projects on Github that seemed to integrate with our HTTP error messages (searched Github for \"puppet-server\" and scanned projects that had been updated in the last two years).\n5. The Puppet Server team have documented:\n* The error http codes only for the [static catalog endpoint|https://docs.puppet.com/puppetserver/2.3/puppet-api/v3/static_file_content.html#response]\n* The error code and return body for [4xx errors with the environment_classes endpoint|https://docs.puppet.com/puppetserver/latest/puppet-api/v3/environment_classes.html#environment-does-not-exist]\n* The return code and body for [4xx errors with the ca endpoint|https://docs.puppet.com/puppet/4.5/reference/http_api/http_certificate_revocation_list.html#examples]\n\nPuppet Core's most explicit reference to its error formats is for the [environment endpoints|https://docs.puppet.com/puppet/latest/reference/http_api/http_api_index.html#error-responses] (and is used for all 4xx and 5xx errors in Puppet rack server), though the documentation is oddly under the section \"Puppet Server specific endpoints\". The error format it uses is documented with a [json schema|https://docs.puppet.com/puppet/latest/reference/schemas/error.json] and is a third format somewhere between the legacy error format that Puppet Server, PuppetDB, File Sync, and tk-* use, and the standard used in Classifier and RBAC.\n\nPuppetDB has comprehensive documentation on its extensive HTTP API, however it documents its error formats \"[lightly|https://docs.puppet.com/puppetdb/4.0/api/query/v4/fact-contents.html#response-format]\"\n\nThe [classifier|https://docs.puppet.com/pe/latest/nc_errors.html] and [rbac service|https://docs.puppet.com/pe/latest/rbac_serviceerrors_v1.html] APIs and error responses are extensively documented and match the nogui standard linked in the description.\n\nThe forge uses a fourth error format [documented here|https://forgeapi.puppet.com/#errors].\n\nClojure based teams not currently using the standard are or are planning to move to the standard in the near future.\n\nAs Alex mentions above, Code Manager should make the switch in Couch (though they do not have a public API). PuppetDB plans to do it in their next API version bump (v5 I believe).\n\nOf note, PDB and Puppet Server have very different relationships to their API, I believe PDB bumps their API version, on average, at least once a year, maintaining support for legacy versions until major versions of the product. Puppet Server has bumped it's main API once, it must do so in concert with the Agent, and it still currently supports its original API version (ie API version bumps are very costly).\n\nI believe from discussing with some members of the team that because of the low risk in changing the formats (no known consumers) and the high cost of coordinating an API version bump, we will attempt to update the error formats in the next Y of Puppet Server and attendant projects (eg Puppet Server 2.5.0).", "created": "2016-05-18T00:31:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Thanks, [~accountid:557058:104b5720-714d-4539-b455-df472251ec89].  I have one minor correction:\n\nbq.  we will attempt to update the error formats in the next Y of Puppet Server and attendant projects (eg Puppet Server 2.5.0).\n\nIt wouldn't necessarily have to be a Y, we could do it in an X, since we are basically considering changing the format of these errors a bugfix.", "created": "2016-05-18T02:32:00.000000"}], "components": [], "created": "2016-05-04T11:40:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4faba692"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5pvz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9831660_*|*_3_*:*_1_*:*_528320256_*|*_10009_*:*_1_*:*_7270030_*|*_5_*:*_1_*:*_11433359771_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_631314496"}], "description": "What would we break if we changed all of Puppet Server, File Sync, and TK Services to follow the json error format described in [the style guide|https://github.com/puppetlabs/puppet-nogui/blob/master/patterns/api_style_guide.md#errors]?\n\n* Would we break any programmatic integrations with these services within Eng?\n* Would this break anything Integration is doing for PE installation, upgrade, or debugging?\n* Does CS/TS depend on these errors for any of their integrations?\n* Have we documented any of this publicly?\n* Are there any known/popular third party/community integrations with our services that depend on these error messages?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14733", "fixedVersions": [], "id": "14733", "issueType": "Task", "key": "SERVER-1311", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Done", "resolutionDate": "2016-05-18T02:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "R&D effects on API compatibility of changing Puppet Server team's error formats", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This ticket's timeframe will be determined by SERVER-1311. If the change can be done in a *.z then this will be done ASAP. If not it will be targeted at the next major release of the affected projects.", "created": "2016-05-11T10:17:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:104b5720-714d-4539-b455-df472251ec89] and [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a]", "created": "2016-05-23T12:28:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] - I just merged the two PRs which were open for this ticket.  Any more repos to do, or anything else, or can we move this along?", "created": "2016-06-02T03:39:00.000000"}], "components": [], "created": "2016-05-03T18:22:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f9cedc2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn8fz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously Puppet Server and many TrapperKeeper projects returned error messages in a format that was similar to, but unfortunately different from, the errors returned by the PE Console and its attendant services. This moves Puppet Server and TrapperKeeper to use the same error format as the PE Console where appropriate."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_935003043_*|*_1_*:*_1_*:*_661634415_*|*_10007_*:*_1_*:*_150628665_*|*_3_*:*_1_*:*_1200279190_*|*_5_*:*_1_*:*_5017395511_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_54072145_*|*_10004_*:*_1_*:*_66351819_*|*_10006_*:*_1_*:*_617374016"}], "description": "It looks like since puppet server started sending error details the rest of the company has moved to a standard format defined here: https://github.com/puppetlabs/puppet-nogui/blob/master/patterns/api_style_guide.md#errors\n\nWe should either adopt the style from the nogui repo, at some reasonable pace, or fight the proponents of the style in mortal combat (or at least in a mailing list).\n\nTo move us from our current style to their style would entail:\n{{:type}} becomes {{:kind}}\n{{:message}} becomes {{:msg}}\n\nThe outer {:error ...} should be removed and our additional fields may need to be moved into a {{:details}} list.\n\n\nAs part of this ticket we will also need to update the documentation at: https://confluence.puppetlabs.com/display/ENG/Exceptions+and+Slingshot\n\nAlso, we can turn most of the error handling for most of our tk libraries over to this with changes to {{ring-middleware}} however moving Puppet Server and File-Sync would entail more work as there's a number of custom errors defined within them.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17018", "fixedVersions": ["SERVER 2.5.0"], "id": "17018", "issueType": "Task", "key": "SERVER-1310", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Fixed", "resolutionDate": "2016-06-15T10:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move projects to use standard error format", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I think it is more likely that this is a issue in one of puppet-server's helper scripts, so I've moved it to a server ticket.  Assigned to me for additional investigation.", "created": "2016-05-03T11:38:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] those cells shouldn't be running at all. The request for the non-PC1 release packages is correct because we're testing against puppet 3 compatibility. However, those release packages don't exist for either wily or xenial (ubuntu 15.10 or ubuntu 16.04). The compat filter should be preventing those cells from running at all, but for some reason it's not. \n\nsee https://github.com/puppetlabs/ci-job-configs/pull/1265 for more information", "created": "2016-05-03T11:39:00.000000"}], "components": [], "created": "2016-05-03T11:29:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppetserver"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50496bec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz627r:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CI work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1625703_*|*_3_*:*_1_*:*_87193415_*|*_5_*:*_1_*:*_12608358955_*|*_6_*:*_1_*:*_0"}], "description": "The Puppet 3 Compatiblity Acceptance Test suite is failing because we attempt to run Ubuntu 15 and 16; This OSes shouldn't run in the PUppet 3 Compatibility Acceptance Test.  Melissa Stone is working on this issue and has a PR up to address it.  See comments below.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17017", "fixedVersions": [], "id": "17017", "issueType": "CI Blocker", "key": "SERVER-1309", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2016-05-04T12:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ubuntu 15 & 16 packaging issues in puppet-server", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Failing Jenkins Job(s):\nhttps://jenkins.puppetlabs.com/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/\n\nRelevant SHAs:\n  Modified the test:\n  https://github.com/puppetlabs/puppet/commit/420cb9f6bbfee39d6254630a64ebcd2f812910de\n\n  \n  https://github.com/puppetlabs/puppet/commit/a3c6ffa\nhttps://github.com/puppetlabs/puppet/commit/cfd9729\n\nCurrently Pinned puppet-agent build:\nhttp://builds.puppetlabs.lan/puppet-agent/9c3d884f367a505e5a01224d16d572e079b574fe/\n", "created": "2016-05-02T16:16:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This is preventing SERVER-1302 from passing CI.", "created": "2016-05-02T17:25:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The \"safe\" way to resolve this is to watch for a puppet agent build emerge from this pipeline with a passing status:\nhttps://jenkins.puppetlabs.com/view/puppet-agent%20suite%20pipelines/job/platform_puppet-agent_intn-van-sys_suite-daily-puppet-stable/\n\nA possibly less safe way to proceed is to try a build from here:\nhttp://builds.puppetlabs.lan/puppet-agent/?C=M", "created": "2016-05-02T18:00:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "http://builds.puppetlabs.lan/puppet-agent/5e3f3126b714fce7f7c5075be511e1fc15781b9b/ (April 30) only had failures in Windows.  (See https://jenkins.puppetlabs.com/view/puppet-agent%20suite%20pipelines/job/platform_puppet-agent_intn-van-sys_suite-daily-puppet-stable/109/)  Testing with this puppet agent build locally...", "created": "2016-05-02T18:12:00.000000"}], "components": [], "created": "2016-05-02T16:11:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f022be7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz61iv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found a test failure in CI"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_667572_*|*_3_*:*_1_*:*_151044230_*|*_5_*:*_1_*:*_12615150997_*|*_6_*:*_1_*:*_0"}], "description": "The configured puppet-agent version we are pinned to in puppetserver(master) does not agree with the ruby/puppet submodule.  The submodule is ahead.  A modified test in the submodule (build_should_not_allow_symlinks.rb) fails because the expected puppet core code isn't installed on the system under test.\n\nThe expected fix here is to modify the puppet-agent pin in acceptance/lib/helper.rb to a newer puppet agent build when a suitable build becomes available.  \n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15011", "fixedVersions": [], "id": "15011", "issueType": "CI Blocker", "key": "SERVER-1308", "labels": ["CI"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-05-04T10:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Agent & Core don't agree with ruby/puppet submodule", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This has passed CI and is waiting to be promoted into a PE build.", "created": "2016-07-06T17:15:00.000000"}], "components": [], "created": "2016-05-02T16:02:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1daacd51"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1305"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn2qn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_677462540_*|*_1_*:*_1_*:*_156365633_*|*_10007_*:*_1_*:*_680814393_*|*_3_*:*_2_*:*_399438604_*|*_5_*:*_1_*:*_2591423078_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_7518347_*|*_10006_*:*_2_*:*_4284524872"}], "description": "In Scope\n\n* Update the Clojure CA to reject any CSR with x.509 extensions under the new puppet.1.3 OID arc.  This should mirror the handling of CSRs with {{subjectAlternativeNames}}, see {{ensure-no-dns-alt-names!}} in the puppetserver codebase.\n\nOut of Scope\n\n* Doing anything with the CSRs besides rejecting them", "epicLinkSummary": "Securing SSL Extensions", "estimate": "PT0S", "externalId": "16782", "fixedVersions": ["SERVER 2.5.0"], "id": "16782", "issueType": "New Feature", "key": "SERVER-1307", "labels": [], "originalEstimate": "PT0S", "parent": "16417", "parentSummary": "Securing SSL Extensions", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-07-13T11:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Clojure CA should refuse to sign any CSRs with authorized extensions", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Part of this problem may be covered by SERVER-911.  In OSS puppetserver, we sync over the {{/etc/puppetlabs/puppet/ssl/ca/ca_crl.pem}} file, which is where the CA service manages a CRL file by default, to {{/etc/puppetlabs/puppet/ssl/crl.pem}} at boot but, to my knowledge, we still are not doing that in PE.  The absence of this in PE was unintentional.  SERVER-911 would rectify that problem.\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] Are you thinking that it should be that the installer shouldn't fail installation in this case or just that Puppet Server itself should just continue running even if the CRL file it has been configured to use is missing?  The latter seems like it might be concerning from a security perspective.  If the intention is to have a CRL file be used, \"silently\" (even if just a message is written to the log) letting the server run without using a CRL file seems like it could allow for clients that have been revoked to still be able to unintentionally connect to the server.", "created": "2016-05-02T16:02:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "It's a fair point. [~accountid:557058:8527c9e8-8e3f-451c-b529-f6fe014233ed] and I talked through this at the customer site and it feels like the root cause of this problem is that the presence of the CRL for Jetty depends on a successful Puppet run at some point. So the absence of it is more indicative of a failed or incomplete Puppet setup -- which probably needs the server to be running in order to work! Brainstorming a couple of options:\n\n- yes, continue to run without a CRL. Supposedly-revoked certs would be able to connect, which isn't great (but there's a good chance this is the case anyway since we don't actively manage the CRL)\n- fall through to looking for the CA's version of the CRL ({{ca/ca_crl.pem}} and using that if it exists. this wouldn't work for compile masters or split installs, but might be fine for many sites.", "created": "2016-05-03T16:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote} Zachary Smith and I talked through this at the customer site and it feels like the root cause of this problem is that the presence of the CRL for Jetty depends on a successful Puppet run at some point. ... Brainstorming a couple of options: ... fall through to looking for the CA's version of the CRL (ca/ca_crl.pem and using that if it exists. this wouldn't work for compile masters or split installs, but might be fine for many sites.{quote}\n\nIf we're talking about a Puppet Server instance which is hosting the CA service, I think the work in SERVER-911 - but applied to PE not just OSS - would effectively do this.  The ca/ca_crl.pem file would end up being copied over to the ssl/crl.pem location as part of the startup of the Puppet Server service - before the web server service is bootstrapped and the check for the presence of the CRL file is done.\n\nFor compile masters / splilt installs, though, the work in SERVER-911 wouldn't help.  Presumably, yes, a Puppet agent run would have needed to be done against the master hosting (or proxying to) the CA service to fetch the CRL file or the CRL file would need to be manually dropped in place on the master out of band somehow.\n\n", "created": "2016-05-11T13:02:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Brainstorming a couple of options: ... yes, continue to run without a CRL. Supposedly-revoked certs would be able to connect, which isn't great (but there's a good chance this is the case anyway since we don't actively manage the CRL){quote}\n\nI'd like to get [~accountid:63d40635a05386069cdb69d6]'s opinion on this idea.\n\nFor customers seeking to run without a CRL file at all, we could just avoid configuring a value for the {{ssl-crl-path}} setting.  In that case, Puppet Server should already boot to ready whether a CRL file is present on the host or not.\n\nIt would feel a little unsettling to me from a security perspective to have Puppet Server go ahead and accept client connections without validating them against a CRL file for cases where a CRL file has explicitly been specified in the configuration file but the CRL file cannot be found at startup.\n\n[~accountid:63d40635a05386069cdb69d6] - what are your thoughts on this idea?", "created": "2016-05-11T13:07:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Just to add my comment in writing from what I said earlier: \n\nMy experience is that from a user standpoint, _nearly nobody_ deliberately revokes a certificate in order to prevent that certificate from having future access to the puppetmaster. Revocation and removal are side effects of running {{puppet cert clean (nodename)}}, which is normally done to remove the traces of a system after it's been re-imaged and the private keys which match the previous installation's cert are deleted.  \n\nTherefore, running the puppetserver without a CRL, and more specifically doing so in bootstrap/installation situations where a functioning puppet server is necessary to manage the CRL, isn't as bad as it would seem for a \"true\" PKI situation like a VPN service.", "created": "2016-05-11T15:27:00.000000"}, {"author": "557058:c3f688dc-c97c-4198-862f-154955399e81", "body": "Cannot view SERVER-911, I'm having the same issue for puppetserver 2017.2", "created": "2018-03-24T06:53:00.000000"}], "components": ["Certificate Authority"], "created": "2016-05-02T15:40:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1252f9f5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz61hb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1364302894_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_55216767787"}], "description": "When migrating to a new PE infrastructure, we want to preserve existing CA so that we don't have to re-issue agent certificates. We thought it'd be possible to just move the ca subdirectory over from the old 3.x infrastructure, but the upgrader hit a timeout talking to the puppetserver. Investigating the logs showed it failed trying to load {{/etc/puppetlabs/puppet/ssl/crl.pem}}. This condition probably shouldn't be fatal as it caused the installation to fail completely.\n\n{noformat}\n2016-05-02 21:32:29,638 ERROR [main] [p.t.internal] Error during service start!!!\njava.lang.IllegalArgumentException: Non-readable path specified for ssl-crl-path option: /etc/puppetlabs/puppet/ssl/crl.pem\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval21656$get_ssl_crl_path_BANG___21657$fn__21658.invoke(jetty9_config.clj:329) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval21656$get_ssl_crl_path_BANG___21657.invoke(jetty9_config.clj:322) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval21795$maybe_get_https_connector__21796$fn__21797.invoke(jetty9_config.clj:403) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval21795$maybe_get_https_connector__21796.invoke(jetty9_config.clj:390) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval21836$maybe_add_https_connector__21837$fn__21838.invoke(jetty9_config.clj:417) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval21836$maybe_add_https_connector__21837.invoke(jetty9_config.clj:413) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval21857$process_config__21858$fn__21859.invoke(jetty9_config.clj:437) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_config$eval21857$process_config__21858.invoke(jetty9_config.clj:433) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval22327$create_webserver__22328$fn__22329.invoke(jetty9_core.clj:593) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval22327$create_webserver__22328.invoke(jetty9_core.clj:550) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval22351$start_webserver_BANG___22352$fn__22353.invoke(jetty9_core.clj:625) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval22351$start_webserver_BANG___22352.invoke(jetty9_core.clj:620) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$start_server_multiple$iter__22558__22562$fn__22563.invoke(jetty9_core.clj:846) ~[na:na]\n        at clojure.lang.LazySeq.sval(LazySeq.java:40) ~[puppet-server-release.jar:na]\n        at clojure.lang.LazySeq.seq(LazySeq.java:49) ~[puppet-server-release.jar:na]\n        at clojure.lang.RT.seq(RT.java:484) ~[puppet-server-release.jar:na]\n        at clojure.core$seq.invoke(core.clj:133) ~[puppet-server-release.jar:na]\n        at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30) ~[puppet-server-release.jar:na]\n        at clojure.core.protocols$fn__6078.invoke(protocols.clj:54) ~[puppet-server-release.jar:na]\n        at clojure.core.protocols$fn__6031$G__6026__6044.invoke(protocols.clj:13) ~[puppet-server-release.jar:na]\n        at clojure.core$reduce.invoke(core.clj:6289) ~[puppet-server-release.jar:na]\n        at clojure.core$into.invoke(core.clj:6341) ~[puppet-server-release.jar:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$start_server_multiple.invoke(jetty9_core.clj:847) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval22669$start_BANG___22670$fn__22671.invoke(jetty9_core.clj:918) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$eval22669$start_BANG___22670.invoke(jetty9_core.clj:912) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_service$reify__22998$service_fnk__4363__auto___positional$reify__23005.start(jetty9_service.clj:43) ~[na:na]\n        at puppetlabs.trapperkeeper.services$eval4199$fn__4213$G__4189__4216.invoke(services.clj:8) ~[na:na]\n        at puppetlabs.trapperkeeper.services$eval4199$fn__4213$G__4188__4220.invoke(services.clj:8) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$run_lifecycle_fn_BANG_.invoke(internal.clj:152) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$run_lifecycle_fns.invoke(internal.clj:180) ~[na:na]\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14732", "fixedVersions": [], "id": "14732", "issueType": "Bug", "key": "SERVER-1306", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Fixed", "resolutionDate": "2018-02-16T11:38:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Missing crl.pem causes puppet-server crash on startup", "timeSpent": "PT0S", "updated": "2018-03-24T06:53:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "This passed CI at https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_full-1.x/66/.", "created": "2016-06-15T16:25:00.000000"}], "components": [], "created": "2016-04-29T06:56:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c3fd992"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn6bz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "*** Not really a \"bug fix\" or a \"feature\", so not sure what category to use for this ***\n\nIf a JVM OutOfMemoryError occurs in Puppet Server, a heap dump will no longer be captured by default.  The \"-XX:+HeapDumpOnOutOfMemoryError\" and \"-XX:HeapDumpPath\" JAVA_ARGS were removed from the Puppet Server service command line."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_103423418_*|*_1_*:*_1_*:*_446995303_*|*_10007_*:*_1_*:*_80774362_*|*_3_*:*_1_*:*_425720110_*|*_5_*:*_1_*:*_7214619299_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_155119595_*|*_10006_*:*_1_*:*_3038061912"}], "description": "After discussions with users, it sounds like one of the most common / frustrating problems that 1.x users are still having to deal with is the fact that the heap dump is enabled by default for OOMs.  When users have any kind of non-trivial max heap size, this just ends up filling up their disk, and these dumps would probably be too large to be useful for us anyway.\n\nThis setting has been removed in newer EZBake versions, and those changes were released in Puppet Server 2.x a long time ago.  This ticket is just proposing that we backport that EZBake change to the version of ezbake that is being used for 1.x, and roll that into the Puppet Server 1.x branch.  Then, next time we do releases, we should go ahead and cut a 1.x z-release to get that change out into the wild.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16781", "fixedVersions": ["SERVER 1.2.0"], "id": "16781", "issueType": "Task", "key": "SERVER-1304", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-17T11:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Back-port EZBake removal of \"dump heap by default\" to 1.x", "timeSpent": "PT0S", "updated": "2016-09-08T23:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-04-28T10:52:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@75f6bbe3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5yxr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "We have substantially changed our authorization scheme since HTTP CA tests were originally written."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2402001_*|*_10007_*:*_1_*:*_2907348_*|*_3_*:*_1_*:*_514008399_*|*_5_*:*_1_*:*_1315972936_*|*_6_*:*_1_*:*_0"}], "description": "Create a helper that adds TK auth.conf rules for tests.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15612", "fixedVersions": ["SERVER 2.4.0"], "id": "15612", "issueType": "Task", "key": "SERVER-1303", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-05-04T11:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create helper that adds TK Auth.conf rules for tests", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a47681f7-b1ba-4803-a48e-fe7a8d10171b] is this using Puppet server?", "created": "2016-04-28T13:05:00.000000"}, {"author": "557058:a47681f7-b1ba-4803-a48e-fe7a8d10171b", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] - yes. It was using the pxp-agent pre-suite ([here|https://github.com/puppetlabs/pxp-agent/tree/master/acceptance/setup/common]) - there is one \"master\" host and one agent. We start \"puppetserver\" service on the master", "created": "2016-04-29T06:03:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Ping [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] & [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] - not sure yet if there is a diff between puppet server and ruby master or if this is a general problem if manifests have the wrong permission / are unreadable. Also not sure if it is a caching problem or not. \n\nPing [~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] there should be acceptance testing for the expected behavior (failing if a manifest cannot be read)", "created": "2016-04-30T20:06:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "This ticket would benefit greatly from having an acceptance test from the start that replicates the problem.", "created": "2016-08-30T09:15:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] [PR 5247|https://github.com/puppetlabs/puppet/pull/5247] has been submitted with an acceptance test based on [~accountid:557058:a47681f7-b1ba-4803-a48e-fe7a8d10171b] reproduction steps. Rough placeholders for exit code and error message are included, but are wrapped in an `expect_failure` block. So, the test is currently green and will go red when these expectations are satisfied. Once that is done, the `expect_failure` block can be removed to ensure ongoing validation of the expected behavior.", "created": "2016-08-30T13:58:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced], thanks for providing the acceptance test. I will need some help using it as I'm unable to find instructions on how to accomplish the following.\n\n1. Run the test and verify that it fails using what's currently on my machine (after removing the except_failure wrapper)\n2. Modify the puppet source\n3. Run the test again to see if it still fails\n4. Repeat step 2 and 3 until the failure is gone\n\nI seem to recall that it's written down somewhere. I might even have asked for this before, but I just can't find it.\n", "created": "2016-08-31T02:37:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "I got some help from [~accountid:557058:a47681f7-b1ba-4803-a48e-fe7a8d10171b] (thanks) which finally led up to this command line:\n\nSHA=1d6dab1d6ba9960c830aee1f849ea42cf6c86a84 PUPPET_FORK=thallgren BEAKER_DESTROY=no BEAKER_HOSTS=vmpooler.cfg TESTS=tests/environment/negative rake ci:test:git\n\nProblem is, the test doesn't reproduce the problem. Instead, I get this trace (which matches what the ticket description lists as \"Expected\"):\n{code}\n      Error: Could not retrieve catalog", "created": "2016-08-31T04:08:00.000000"}, {"author": "557058:a47681f7-b1ba-4803-a48e-fe7a8d10171b", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] - the acceptance test differs [here|https://github.com/puppetlabs/puppet/pull/5247/files#diff-02d72469287f7a1210942c94236c0ec0R41] from the intended reproduction steps, in that it reconfigures environmentpath instead of putting the faulty environment into the default environment path. I'm not sure if that is relevant", "created": "2016-08-31T04:31:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "After some more investigation, I've come to the conclusion that this only happens when running puppet server. In essence, if the master is running\n{code}\npuppet master --environimentpath=<path to env>\n{code}\nwhich I assume that the test is doing, then the problem is not reproduced. But if the master runs\n{code}\npuppet resource service puppetserver ensure=running\n{code}\nthen the catalog is applied and the error seems to be silently ignored.", "created": "2016-08-31T07:51:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "The problem stems from a not so subtle difference between the Ruby and JRuby implementation of {{Pathname}}. When calling #read on a file that resides under a directory with permissions that prevent access, Ruby correctly raises {{Errno::EACCES: Permission denied}} whereas the JRuby implementation raises {{Errno::ENOENT: No such file or directory}}. The latter, of course, results in an ostensibly empty environment when the directory in question is the environment root.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], given that your team are experts on JRuby, is it OK if we hand this over?\n", "created": "2016-09-01T04:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] I would say that it depends on the proposed solution.  If we want to file a bug with upstream JRuby and wait for a release that contains that fix, then yes, our team should take it.  But if we think this is too urgent to wait for (it will be several months before they do another release since they just did one last week), and we want to put a permissions check directory into the Puppet Ruby code in the interim, then maybe not?\n\nIn fact, having thought about it for a second, it seems like perhaps the best thing to do would be to do both?  So we could keep this ticket for a short-term fix in the Puppet codebase, and I will spin off a separate ticket about filing/tracking an upstream JRuby bug?", "created": "2016-09-01T10:39:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] sounds like a plan. OTOH - can we fix it and ship a patched version until it is accepted?", "created": "2016-09-01T13:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We've laid some initial groundwork for shipping JRuby from a fork, but we've never actually done it before, because they did a release of the things we needed before we finished ironing out the process.  I'd prefer to avoid that except for a last-resort kind of situation", "created": "2016-09-01T15:43:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Was not considering how hard that could possibly be - seemed like the right thing to do as it fixes the actual problem rather that applying duct-tape. I don't like duct tape and puppet is filled with \"ah shrug, this is horrible, let's... uh... add more duct tape?\". Pardon the sarcasm - I understand we need to work around the problem if we don't have a pipeline to build and deliver JRuby (which it seems we should be prepared for given their long release schedule).  I consider this a quite severe problem and if I were at the other end I would be happy to accept a fix and make a quick turn around - but maybe they do not reason that way.\n\nTo do a work around we need to have a JRuby mode for the FileSystem providers. We have to comb all calls that does things with files to ensure that they do not hit the problem. In order to do that we need to understand the extent of the EXXX problems on JRuby. Is \"open with no access permission\" the only thing wrong there? Is it lying about other states of files? We also have IO reads that do not go via the FileSystem - are they ok? I fear that if we just wing it we probably end up with some other similar problem.\n\nWhile it may not seem like much overhead to add an exists? when a read fails with \"not found\" it is actually quite bad since we do a lot of searching for files (not sure if we have optimizations that read/test existence at the same time rather than first testing and then reading though). The 4.x loaders does not work that way (they do a Dir.glob and cache the result to avoid hitting disk), but other code may.", "created": "2016-09-01T16:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] oh - I was assuming that the patch to Puppet could be applied for just the check on the environment directory, specifically.  If that's not possible, and it would have to go into some generic filesystem handling code, then I would probably agree that we shouldn't do that.\n\nI expect that when we open the issue with JRuby, if there's a good reproducer included, they'll *merge* it very quickly", "created": "2016-09-01T16:54:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "Did some testing using JRuby and Pathname. Seems JRuby has addressed this already.\n\nWith 1.7.26\n{code}\njruby-1.7.26 :001 > x = Pathname('/home/thhal/tmp/foo/bar.txt')\n => <Pathname:/home/thhal/tmp/foo/bar.txt> \njruby-1.7.26 :002 > x.read\nErrno::ENOENT: No such file or directory - /home/thhal/tmp/foo/bar.txt\n{code}\nSame thing with 9.0.0.0\n{code}\njruby-9.0.0.0 :001 > x = Pathname('/home/thhal/tmp/foo/bar.txt')\n => <Pathname:/home/thhal/tmp/foo/bar.txt> \njruby-9.0.0.0 :002 > x.read\nErrno::EACCES: Permission denied - /home/thhal/tmp/foo/bar.txt\n{code}\n", "created": "2016-09-02T01:54:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Phew, that is good news. [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] signing this over to Server as it seems to be a matter of getting an updated JRuby to users.\nNot sure what to do with the acceptance test associated with this PR - it is clearly testing expected behavior so it is probably of value to add it.", "created": "2016-09-02T06:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Awesome, thanks for testing that, [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d].  We have already updated to 1.7.26 in our master branch, and are in the process of doing long-running memory testing against it.  As soon as that completes we'll be shipping OSS releases containing that version, so hopefully that'll take care of it.  I'll make sure this comes up in triage so we can discuss test coverage.", "created": "2016-09-02T10:36:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], please note though, that the problem still remains in 1.7.26. It's fixed in 9.0.0.0.", "created": "2016-09-02T15:03:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Merde, I misread :-(", "created": "2016-09-02T16:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Hmmm, so sounds like there's still work to do to fix the problem in JRuby 1.7.x.  Given the lack of focus on JRuby 1.7.x at this point, I think we'd have a much better shot at resolving this if we identify and prepare the code fix ourselves as opposed to just filing an issue to the JRuby community.  We'll also probably need to discuss the release cadence again further.  Based on its recent track record, I wouldn't expect a JRuby 1.7.x release with a fix for this to drop again for at least 3-4 more months.  We'd have to discuss whether or not this is something more urgent that might necessitate releasing in the Puppet fork of JRuby if we don't think it would be reasonable to address in Ruby Puppet proper.", "created": "2016-09-07T09:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] Retargeting the issue for a different fix version sounds fine to me.  TBH, no one on the Puppet Server team is looking into this right now and this doesn't appear in the Puppet Server maintainer backlog.  I also am unaware of when/if another JRuby 1.7 release would be done from upstream, assuming there were a fix in place for it in JRuby.\n\nIs the assumption at this point that we're going to try to push for a fix on a future JRuby 1.7.x release (assuming there is one) and that the Puppet Server maintainer team (as opposed to someone in the Puppet Developer Experience team (or whatever that's called now) would be taking it?  If so, it probably would be good to move this ticket over to the SERVER project for visibility.", "created": "2017-01-04T10:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Assuming we're going to try to work this through as a fix in JRuby, I'm going to move this over to the SERVER project and take the Puppet fix version off it.", "created": "2017-01-13T12:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Sounds like this was resolved when we moved to JRuby 9k", "created": "2020-01-29T08:55:00.000000"}], "components": [], "created": "2016-04-28T05:12:00.000000", "creator": "557058:a47681f7-b1ba-4803-a48e-fe7a8d10171b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "agent should fail with some error if the environment is unreadable."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b88f48"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-5853"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5ytb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "If an environment was unreadable due to wrong permissions a compilation would produce an empty catalog without indicating an error."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_3_*:*_819365339_*|*_3_*:*_1_*:*_85927133_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_4_*:*_313419608_*|*_10006_*:*_2_*:*_11836123383_*|*_10005_*:*_2_*:*_105416555157"}], "description": "I noticed this when using beaker methods to create test environments\n\n*To reproduce:*\n * Create a new environment (e.g _cd /etc/puppetlabs/code/environments_ then _cp -r production my_test_ )\n * Edit the environment so it has some resources e.g. edit site.pp to have something like\n{code}node default {\n  notify {'Hello agent':}\n}{code}\n * On the agent, run _puppet agent -t --environment my_test_ and confirm that you see the notify resource being applied\n{code}[root@nhttpwkcahz856y ~]# puppet agent -t --environment my_test\nInfo: Using configured environment 'my_test'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for nhttpwkcahz856y.delivery.puppetlabs.net\nInfo: Applying configuration version '1461841741'\nNotice: Hello agent\nNotice: /Stage[main]/Main/Node[default]/Notify[Hello agent]/message: defined 'message' as 'Hello agent'\nNotice: Applied catalog in 0.01 seconds{code}\n * On the master, apply _chmod 644  /etc/puppetlabs/code/environments/my_test\n * On the agent, run _puppet agent -t --environment my_test_ again\n\n*Expected:*\n * Permissions are wrong, agent should fail with some error that the environment was unusable.\n\n*Actual:*\n * The agent appears to succeed, but with no resources applied\n{code}[root@nhttpwkcahz856y ~]# puppet agent -t --environment my_test\nInfo: Using configured environment 'my_test'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for nhttpwkcahz856y.delivery.puppetlabs.net\nInfo: Applying configuration version '1461841854'\nNotice: Applied catalog in 0.01 seconds{code}\n", "environment": "puppet-agent stable 1.4.1.139.ge06bf91\n1x master and 1x agent - both el7", "epicLinkSummary": " 5.y TechDebt - to be resolved in Puppet 5.x", "estimate": "PT0S", "externalId": "15608", "fixedVersions": [], "id": "15608", "issueType": "Bug", "key": "SERVER-1717", "labels": [], "originalEstimate": "PT0S", "parent": "22749", "parentSummary": " 5.y TechDebt - to be resolved in Puppet 5.x", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a47681f7-b1ba-4803-a48e-fe7a8d10171b", "resolution": "Fixed", "resolutionDate": "2020-01-29T08:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet agent ostensibly succeeds when environment directory has wrong permissions", "timeSpent": "PT0S", "updated": "2020-01-29T08:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-04-27T16:33:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b178d80"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5yof:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_152066530_*|*_1_*:*_1_*:*_9196_*|*_10007_*:*_2_*:*_278372597_*|*_3_*:*_2_*:*_156611016_*|*_5_*:*_1_*:*_1314248588_*|*_6_*:*_1_*:*_0"}], "description": "# Merge CVE fork back into mainline {{stable}} branch.\n# Bump version number to {{2.3.3-stable-SNAPSHOT}}.\n# Merge {{stable}} branch into {{master}}.\n# Disable/delete CI pipeline for both puppetserver and tk-jetty9.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14716", "fixedVersions": ["SERVER 2.4.0"], "id": "14716", "issueType": "Task", "key": "SERVER-1302", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Done", "resolutionDate": "2016-05-04T11:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "post-2.3.2-release shenanigans", "timeSpent": "PT0S", "updated": "2016-05-25T13:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:98557f54-1b79-4924-93e0-4787412ca8ba", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Sorry, puppet dashboard is not supported by puppet labs. You should file an issue against the github repo: https://github.com/sodabrew/puppet-dashboard/issues", "created": "2016-04-25T17:22:00.000000"}], "components": [], "created": "2016-04-25T05:20:00.000000", "creator": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c197dc4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5vqn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_255991_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_43045201_*|*_10005_*:*_1_*:*_9120"}], "description": "Hello,\nI am unable to install puppet -dash board in centos-6 getting below error\n\n[root@puppetdashboard puppet-dashboard]# rake db:migrate --trace\n(in /usr/share/puppet-dashboard)\nconfig.gem: Unpacked gem rdoc-3.6.1 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem daemons-1.0.10 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem rspec-rails-1.3.4 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem rack-1.1.6 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem thoughtbot-shoulda-2.10.2 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem json_pure-1.7.7 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem mocha-0.9.7 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem haml-3.1.2 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem sass-3.1.2 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem rspec-1.3.2 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem will_paginate-2.3.15 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nconfig.gem: Unpacked gem factory_girl-1.3.3 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.\nDEPRECATION WARNING: Rake tasks in vendor/plugins/delayed_job/tasks are deprecated. Use lib/tasks instead. (called from /usr/share/puppet-dashboard/vendor/rails/railties/lib/tasks/rails.rb:10)\n** Invoke db:migrate (first_time)\n** Invoke environment (first_time)\n** Execute environment\n** Execute db:migrate\nrake aborted!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15008", "fixedVersions": [], "id": "15008", "issueType": "Improvement", "key": "SERVER-1301", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:df705ad9-1b84-496c-af18-e65c6054c588", "resolution": "Won't Fix", "resolutionDate": "2016-04-25T17:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Unable to Install puppet-dashboard", "timeSpent": "PT0S", "updated": "2016-04-25T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [], "components": [], "created": "2016-04-21T17:51:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f9a174a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5udz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Updating beaker version exposed beaker problems."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_401016249_*|*_1_*:*_1_*:*_1576361_*|*_5_*:*_1_*:*_13308480524_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15604", "fixedVersions": [], "id": "15604", "issueType": "Task", "key": "SERVER-1299", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2016-04-26T09:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Work around BKR-780 for puppetdb install and test in puppetserver", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664] we'd definitely be happy to do this", "created": "2016-04-27T18:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Note from triage meeting: [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] to sync w/ [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] on this in next 1-1.", "created": "2016-05-18T10:30:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664]Do you want to put this on the training calendar for mid-July? [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] is going to give the training.", "created": "2016-06-15T10:08:00.000000"}, {"author": "557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c]Can do! I will work with Ruth to find a time that fits her schedule. ", "created": "2016-06-16T14:36:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Support training deliver on July 20. Slides: https://docs.google.com/presentation/d/1WmCNXiwGeZUoJG95z4v0FCInJJAmBYYur1u8xpjzcvU/edit#slide=id.p", "created": "2016-07-20T17:56:00.000000"}, {"author": "557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664", "body": " Recording:\nhttps://confluence.puppetlabs.com/display/SUP/Puppetserver+Training+Part+3+-+Metrics", "created": "2016-07-21T12:32:00.000000"}, {"author": "6217ba0a71554c00695601a8", "body": "Is this information going to be made available for public?", "created": "2017-05-28T07:42:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:6217ba0a71554c00695601a8] We'll be working soon on updating our documentation to include much of this information. The ticket tracking that work is SERVER-1771.", "created": "2017-05-30T10:33:00.000000"}], "components": [], "created": "2016-04-21T16:26:00.000000", "creator": "557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e62f4fa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn2nj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4729370443_*|*_3_*:*_1_*:*_111457178_*|*_5_*:*_1_*:*_5934915723_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2940592406"}], "description": "We are hoping to have a follow-up Support Training to Chris Price's wonderful puppet server training, since there have been updates.\n\nWe are particularly interested in learning how to use the metrics endpoint to troubleshoot performance issues. And a deep dive into puppet server metrics.\n\nhttps://confluence.puppetlabs.com/display/SUP/Puppet-Server+Training+Part+1+and+Part+2-+Chris+Price", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16134", "fixedVersions": ["None"], "id": "16134", "issueType": "Task", "key": "SERVER-1298", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664", "resolution": "Fixed", "resolutionDate": "2016-07-20T17:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Metrics Training", "timeSpent": "PT0S", "updated": "2017-05-30T10:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Until and unless confine and confine_block are well fixed, validated and documented, we ought to remove them from our tests and replace them with core ruby.", "created": "2016-04-21T16:06:00.000000"}], "components": [], "created": "2016-04-21T16:00:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44af9290"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5u5b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1106048922_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_56423797220"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14715", "fixedVersions": [], "id": "14715", "issueType": "Task", "key": "SERVER-1297", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2018-02-16T11:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Strip \"confine\" and \"confine_block\" out of puppetserver and pe-puppetserver-extensions tests.", "timeSpent": "PT0S", "updated": "2018-02-16T11:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:73e0b790-832d-4123-8d09-d3afe185c26c", "body": "This is the error message i get.. \n\n<\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Function Call, Could not find class ::xxxxfor xxxxxx at /etc/puppetlabs/code/environments/production/manifests/xxxxx.pp:3:5 on node xxxxxx\n>\n\nif i define the same class on one of the existing module, it works fine .. no clue.. pls help.", "created": "2016-04-21T16:02:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Former user Can you confirm whether the classes and module names which are failing to be loaded follow the naming conventions described here?\n\nhttps://docs.puppet.com/puppet/latest/reference/lang_reserved.html#classes-and-defined-types\nhttps://docs.puppet.com/puppet/latest/reference/lang_reserved.html#modules\n\nIf the use of reserved characters is not the problem, could you attach a more complete code example and/or description with actual names of classes and modules that you have been able to use to reproduce the problem?", "created": "2016-04-25T16:50:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:73e0b790-832d-4123-8d09-d3afe185c26c", "body": "Hi Jeremy, \n\nyes, i have followed the naming convention as mentioned in the documentation.  \n\nFYI. \n\nmodule details:\n\n[root@nodename modules]# cd uc4linxupgrade/\n[root@nodename uc4linxupgrade]# pwd\n/etc/puppetlabs/code/environments/production/modules/uc4linxupgrade\n[root@nodename uc4linxupgrade]# ls -l *\nfiles:\ntotal 0\n\nmanifests:\ntotal 8\n-rwxrwxrwx. 1 root root  738 Apr 21 22:38 init.pp\n-rwxrwxrwx. 1 root root 1088 Apr 18 17:09 init.pp.19apr16\n\ntemplates:\ntotal 0\n[root@nodename uc4linxupgrade]#\n\nmodule init.pp file \n\nclass uc4upgrade {\nexec { 'uc4unmount':\ncommand => 'umount /mnt',\npath => '/usr/sbin/:/usr/bin/',\n}\n}\n\nmanifest: site.pp file details. \n\n<\n[root@nodename manifests]# pwd\n/etc/puppetlabs/code/environments/production/manifests\n[root@nodename manifests]# cat linuxuc4upgrade.pp\nnode 'nodename' {\n    include dnsclient\n    include uc4upgrade\n}\n[root@nodename manifests]#\n>\n\n[root@nodename ~]#  puppet agent --noop --test\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Function Call, Could not find class ::uc4upgrade for nodename.ud1.utility at /etc/puppetlabs/code/environments/production/manifests/linuxuc4upgrade.pp:3:5 on node nodename.ud1.utility\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog", "created": "2016-04-25T19:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Do you have {{environment_timeout}} enabled in either your {{puppet.conf}} file or your {{environments/production/environment.conf}} file?\n\nDoes the class work if you restart the server?  Did you edit the file to add the new class while the server was running, and after you'd done a successful agent run with the first class?", "created": "2016-04-26T07:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Former user, in your example, you list a directory named \"uc4linxupgrade\" for your module but the name of the class in the associated \"init.pp\" file is \"uc4upgrade\".\n\nFrom https://docs.puppet.com/puppet/latest/reference/modules_fundamentals.html#example:\n\n{quote}init.pp \u2014 Contains a class definition. This class\u2019s name must match the module\u2019s name.{quote}\n\nI think this is the problem.  Try either renaming the directory to \"uc4upgrade\" or changing the name of the class in the init.pp file to \"uc4linxupgrade\" and see if that helps.", "created": "2016-04-26T14:23:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:73e0b790-832d-4123-8d09-d3afe185c26c", "body": "Thanks Jeremy, it worked for me.. i am new to puppet, missed the basics :) btw, from this, does it mean we can declare only one class can be defined per class?\n\nthanks for ur support. ", "created": "2016-04-27T08:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Former user, it isn't required that you only define one class per file but it is strongly recommended as a best practice that you do that.  See:\n\nhttps://docs.puppet.com/puppet/latest/reference/lang_classes.html#location\n\nFor the init.pp file in particular, though, you would need to ensure that that the class defined within it matches the name of the module to which the file belongs.\n\n--\n\nFor future reference, you might try asking basic usage questions through the #puppet IRC if you are looking for quicker responses.  Here's a link with various resources that you might take a look at - https://puppet.com/community.\n\nFor now, I'm going to close out this issue.\n\nGood luck to you in your Puppet journey.  :)\n", "created": "2016-04-27T10:52:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-21T16:00:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:73e0b790-832d-4123-8d09-d3afe185c26c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f941e43"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5u53:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_499976793_*|*_5_*:*_1_*:*_10789627011_*|*_6_*:*_2_*:*_2428064402"}], "description": "i have recently install puppet master server on a Linux machine and written few modules. the agents are able to identify the classes only on the first defined 2 modules but not on any other modules defined ... no clue .. breaking my head here. can someone help me here.. ?\n\nthanks.. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17440", "fixedVersions": [], "id": "17440", "issueType": "Task", "key": "SERVER-1296", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:73e0b790-832d-4123-8d09-d3afe185c26c", "resolution": "Cannot Reproduce", "resolutionDate": "2016-05-25T13:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Modules and classes added to modulepath aren't recognize", "timeSpent": "PT0S", "updated": "2016-09-27T10:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "The broken .html links in PR 1033 are my fault. I'm putting a PR together to make the rest of the Server docs I've touched, as well as existing relative links to Puppet docs that don't work on GitHub, equally functional on both GitHub and docs.puppet.com.\n\nPlease let me know if there's anything I can do to help audit links for both sites.", "created": "2016-04-21T16:07:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This is already done by the docs team.", "created": "2016-04-27T11:31:00.000000"}], "components": [], "created": "2016-04-21T15:30:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e9d6408"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5u3r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_504075154_*|*_6_*:*_1_*:*_0"}], "description": "We ought to create a documentation test that audits the documentation links by simply following each link to ensure that it exists.\n\nhttps://github.com/puppetlabs/puppetserver/pull/1033 is a case where not all the links are working in our documentation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15301", "fixedVersions": [], "id": "15301", "issueType": "Task", "key": "SERVER-1295", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-04-27T11:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create a test that audits the documentation links", "timeSpent": "PT0S", "updated": "2016-05-25T13:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-04-21T14:08:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ae5772c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5u0n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_508827037_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_57027696830"}], "description": "In java 9, setting MaxPermSize in java args is a fatal error that will prevent the jvm from starting.\n\n{code}\nUnrecognized VM option 'MaxPermSize=256m'\nError: Could not create the Java Virtual Machine.\nError: A fatal exception has occurred. Program will exit.\n{code}\n\nWe should remove that setting whenever we start looking at java 9 support.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16780", "fixedVersions": [], "id": "16780", "issueType": "Task", "key": "SERVER-1294", "labels": ["usability"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2018-02-16T11:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove MaxPermSize from ezbake config before java 9", "timeSpent": "PT0S", "updated": "2018-02-16T11:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "http://jenkins.puppetlabs.com:8080/job/platform_puppetserver_integration-system_no-conditional_smoke-master/11/\n\nThe merge that kicked off the run is :\nhttps://github.com/puppetlabs/puppetserver/pull/1009\nThis merge updates from beaker 2.24 to beaker 2.38.1, and additionally removes a \"confine_block\" and replaces it with an \"if\"...\n\nTesting in a local branch with the above PR reverted...", "created": "2016-04-20T14:29:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Error did not reproduce with beaker 2.24.  Retrying beaker 2.38.1 and inspecting \"with_puppet_running_on\" method differences between beaker 2.24 and beaker 2.38.1", "created": "2016-04-20T14:58:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "https://github.com/puppetlabs/puppetserver/pull/1026", "created": "2016-04-20T18:02:00.000000"}], "components": [], "created": "2016-04-20T14:27:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ad7368a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5snz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_182877_*|*_3_*:*_1_*:*_79131067_*|*_5_*:*_1_*:*_13730586071_*|*_6_*:*_1_*:*_0"}], "description": "The puppetserver CI pipeline failed after updating to beaker 2.38.1.  Investigating.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17439", "fixedVersions": [], "id": "17439", "issueType": "Bug", "key": "SERVER-1292", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-04-21T12:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver (master) acceptance tests red/failed", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Wow.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] do you remember what the exact concerns were when we decided not to re-use connections?\n\n[~accountid:623e754d94742a00683f7cf0] do you have any idea what versions of SERVER/PE we might need to target this at if we decide on a fix?", "created": "2016-04-27T08:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "FWIW, if we decide that we want to do this, I think there could be some even greater performance benefits for systems under continually heavy load if we were to move to having a single HTTP client object that can be reused across all of the JRubies.  In theory, the underlying Apache HTTP client that we're using in Puppet Server to make client requests is capable of supporting many concurrent requests (in a thread-safe way).  I believe we've opted against that until now - and instead having on HTTP client per JRuby instance - out of concerns about how robust the concurrency implementation in the Apache HTTP client may be.", "created": "2016-04-27T11:51:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Last week we got some results from applying this patch to a real-world system, and the observed speedup in PuppetDB queries was more in the neighborhood of 10%.\n\nIf I were to suggest a change, it would be to allow plugin authors to pass a value for the Connection header that can be used to override the default of \"close\". This would preserve existing behavior in a majority of cases and allow calls, such as PuppetDB queries, to opt-in to a persistent connection when appropriate.\n\nAnother idea I've been kicking around is closing persistent connections when a JRuby is returned to the pool. Not sure how feasible that is technically, but it could strike a good balance between re-authorization and re-use as connections would only be established for the duration of a single client request.", "created": "2016-05-03T11:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] thanks for the updates.  Re: connections to PuppetDB never being re-used in the past, that helps clarify part of how we ended up with our current handling in the Puppet Server code, so that's helpful.\n\nRe: \"allow plugin authors to pass a value for the Connection header\" - that seems like it'd be an API change in the Puppet Ruby code, for the HTTP client object that users get from our fake \"pool\" API.  That's theoretically possible, but I'm really wondering whether anyone would ever want to use that API for their own stuff instead of just using a more mainstream Ruby http client.  The only reason that I'm aware of why anyone should ever use the Puppet client would be when they need to make HTTPS requests using the Puppet keys/certs, and that seems like it doesn't overlap with any use cases for using basic auth.\n\nIf that ^^ statement is accurate, then we could maybe just disable basic auth / forbid basic auth requests to be made from the Puppet Server client, and get rid of that \"Close\" header?\n\nThe idea of keeping connections persistent during a Jruby borrow session is interesting, but I don't know of an easy way to enumerate or close the connections besides the \"Close\" header, so that might be tricky.", "created": "2016-05-03T11:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote} The only reason that I'm aware of why anyone should ever use the Puppet client would be when they need to make HTTPS requests using the Puppet keys/certs, and that seems like it doesn't overlap with any use cases for using basic auth.{quote}\n\nI'm pretty sure the HTTP report processor uses our fake \"pool\" API to make its calls and that it also has a way of forwarding basic auth credentials through - configured via the URL set for the {{reporturl}} puppet conf setting, I believe.", "created": "2016-05-03T11:52:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "{quote}\nI'm really wondering whether anyone would ever want to use that API for their own stuff instead of just using a more mainstream Ruby http client.\n{quote}\n\nThe issue with that is that mainstream Ruby HTTP clients use Net::HTTPS, which uses the Ruby OpenSSL library, which isn't 100% complete in JRuby. We've had at least one case from Nan where a plugin that used the Faraday client wasn't working properly when moved over to JRuby.\n\nSo, I think there are cases where the Puppet wrapper for clj-http-client may be the best option available.", "created": "2016-05-03T11:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] OK.  Then maybe the best thing to do is to look into extending the Puppet API to support setting headers (if it doesn't already support it), and then changing the Puppet Server code so that it only adds the \"Connection: Close\" header if there is not already a \"Connection\" header.  And changing the PDB terminus to explicitly pass a keep-alive value for that code path?", "created": "2016-05-03T12:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:623e754d94742a00683f7cf0] if we want to go forward with the solution that involves tweaking the Puppet API, then the work for this will be a little involved, so we could use some prioritization from CS next time you have a chance in one of the prioritization meetings.", "created": "2016-05-18T10:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing this due to inactivity and what sounds like marginal improvement for the amount of work it would entail. Please reopen if that seems incorrect or if new urgency around this arises.", "created": "2019-02-20T16:52:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-20T13:44:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@106b7efa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2124"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sn3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3011463166_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_86513822055"}], "description": "The HTTP client used by Puppet Server was re-factored in SERVER-116 such that a singleton instance is used for all requests. Connection re-use was also explicitly disabled in the same change for all requests due to concerns around properly authorizing requests to backend services.\n\nHowever, repeated actions against some backends, such as multiple queries to PuppetDB during catalog compilation, could benefit from connection re-use. The HTTP client used by Puppet Server should allow functions to request a persistent connection.\n\nh2. Example\n\nInstall PE 2016.1.1 and create a node definition which executes a lot of PuppetDB queries:\n\n{noformat}\ncat <<'EOS' > /etc/puppetlabs/code/environments/production/manifests/test_query.pp\nnode 'test-query.node' {\n  Integer[1,1000].each |$i| {\n    puppetdb_query(['from', 'resources', ['and', ['=', 'title', 'something']]])\n  }\n}\nEOS\n\npuppet cert generate test-query.node\n{noformat}\n\nTime a run for test-query.node:\n\n{code}\n# time puppet agent -t --certname test-query.node\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for test-query.node\nInfo: Applying configuration version '1461180831'\nNotice: Applied catalog in 0.86 seconds\n\nreal\t1m38.072s\nuser\t0m3.276s\nsys\t0m0.429s\n{code}\n\nEnable connection re-use by applying the following patch to the contents of {{puppet-server-release.jar}}:\n\n{code:diff}\ndiff --git a/puppet-server-lib/puppet/server/http_client.rb b/puppet-server-lib/puppet/server/http_client.rb\nindex 10ec92c..c71eeea 100644\n--- a/puppet-server-lib/puppet/server/http_client.rb\n+++ b/puppet-server-lib/puppet/server/http_client.rb\n@@ -65,7 +65,8 @@ class Puppet::Server::HttpClient\n     end\n\n     # Ensure multiple requests are not made on the same connection\n-    headers[\"Connection\"] = \"close\"\n+    #headers[\"Connection\"] = \"close\"\n+    headers[\"Connection\"] = \"Keep-Alive\"\n\n     request_options = RequestOptions.new(build_url(url))\n     request_options.set_headers(headers)\n@@ -77,7 +78,8 @@ class Puppet::Server::HttpClient\n\n   def get(url, headers)\n     # Ensure multiple requests are not made on the same connection\n-    headers[\"Connection\"] = \"close\"\n+    #headers[\"Connection\"] = \"close\"\n+    headers[\"Connection\"] = \"Keep-Alive\"\n\n     request_options = RequestOptions.new(build_url(url))\n     request_options.set_headers(headers)\n{code}\n\nTime another run for test-query.node:\n\n{noformat}\n# time puppet agent -t --certname test-query.node\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for test-query.node\nInfo: Applying configuration version '1461181303'\nNotice: Applied catalog in 0.73 seconds\n\nreal\t0m11.771s\nuser\t0m3.176s\nsys\t0m0.389s\n{noformat}\n", "epicLinkSummary": "Handful or two of improvements to clj-http-client", "estimate": "PT0S", "externalId": "15299", "fixedVersions": [], "id": "15299", "issueType": "Improvement", "key": "SERVER-1291", "labels": ["performance"], "originalEstimate": "PT0S", "parent": "16513", "parentSummary": "Handful or two of improvements to clj-http-client", "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Won't Do", "resolutionDate": "2019-02-20T16:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The HTTP client used by Puppet Server should allow for connection re-use", "timeSpent": "PT0S", "updated": "2022-01-13T17:19:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:25:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@233b6f71"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5shr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14772948_*|*_5_*:*_1_*:*_12712222531_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_602275673"}], "description": "(Initial planned release date: 04-26-2016)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.3.2%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17438", "fixedVersions": [], "id": "17438", "issueType": "Sub-task", "key": "SERVER-1290", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2016-04-27T14:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:25:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fa5d75"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5shj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14768117_*|*_5_*:*_1_*:*_12712777748_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_601727898"}], "description": "(Initial planned release date: 04-26-2016)\n\nUpdate dujour to notify users to use 2.3.2.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17012", "fixedVersions": [], "id": "17012", "issueType": "Sub-task", "key": "SERVER-1289", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2016-04-27T14:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.3.2 (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "Release filters for announcement: \n\nIntroduced in 2.3.2\nhttps://puppet.atlassian.net/issues/?filter=19202\n\nFixes for 2.3.2\nhttps://puppet.atlassian.net/issues/?filter=18502", "created": "2016-04-26T14:29:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Draft announcement:\n\n{code}\nHi all, hot on the heels of yesterday's releases \nwe have a new Puppet Server release up today: 2.3.2.\n\nThis is primarily a security fix which addresses a \nLOW RISK (3.5 CVSS3 score) security hole described at:\nhttps://puppet.com/security/cve/cve-2016-2785\n\nRead the full release notes here:\nhttps://docs.puppet.com/puppetserver/2.3/release_notes.html#puppet-server-232\n\nFor more information on the Puppet Server including \ninstallation and upgrade instructions, read this:\nhttps://docs.puppet.com/puppetserver/2.3/index.html\n\n\nEric Sorenson - eric.sorenson@puppet.com - freenode #puppet: eric0\npuppet platform // coffee // techno // bicycles\n{code}", "created": "2016-04-27T15:25:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Sent!", "created": "2016-04-27T15:32:00.000000"}], "components": [], "created": "2016-04-20T11:25:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6213c6a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5shb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14762850_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_604866287"}], "description": "(Initial planned release date: 04-26-2016)\n\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16779", "fixedVersions": [], "id": "16779", "issueType": "Sub-task", "key": "SERVER-1288", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-04-27T15:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-04-27T15:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:25:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4144077b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sh3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14757414_*|*_5_*:*_1_*:*_12712797710_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_601717863"}], "description": "(Initial planned release date: 04-26-2016)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16427", "fixedVersions": [], "id": "16427", "issueType": "Sub-task", "key": "SERVER-1287", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2016-04-27T14:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a99e9c2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sgv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14753974_*|*_5_*:*_1_*:*_12721190046_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_592757403"}], "description": "(Initial planned release date: 04-26-2016)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16132", "fixedVersions": [], "id": "16132", "issueType": "Sub-task", "key": "SERVER-1286", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-04-27T12:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1858db81"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sgn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14749595_*|*_5_*:*_1_*:*_12721219610_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_592756638"}], "description": "(Initial planned release date: 04-26-2016)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15893", "fixedVersions": [], "id": "15893", "issueType": "Sub-task", "key": "SERVER-1285", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-04-27T12:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39a7e65c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sgf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14746476_*|*_5_*:*_1_*:*_12794581509_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_519954055"}], "description": "(Initial planned release date: 04-26-2016)\n\nThis should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a]\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15601", "fixedVersions": [], "id": "15601", "issueType": "Sub-task", "key": "SERVER-1284", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2016-04-26T15:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before noon PST) (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20350e80"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sg7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14744290_*|*_3_*:*_1_*:*_3435712_*|*_5_*:*_1_*:*_12794196126_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_516911418"}], "description": "(Initial planned release date: 04-26-2016)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15297", "fixedVersions": [], "id": "15297", "issueType": "Sub-task", "key": "SERVER-1283", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2016-04-26T16:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@168afcb4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sfz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14740961_*|*_5_*:*_1_*:*_12722169632_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_591813900"}], "description": "(Initial planned release date: 04-26-2016)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14985", "fixedVersions": [], "id": "14985", "issueType": "Sub-task", "key": "SERVER-1282", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-04-27T11:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Release notes are live.", "created": "2016-04-27T15:03:00.000000"}], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@141c8357"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sfr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14735797_*|*_5_*:*_1_*:*_12710785927_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_603189659"}], "description": "(Initial planned release date: 04-26-2016)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14714", "fixedVersions": [], "id": "14714", "issueType": "Sub-task", "key": "SERVER-1281", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-04-27T15:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [{"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "filters made, version released in jira, no open issues remain for this version.", "created": "2016-04-26T14:39:00.000000"}], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24178661"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sfj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14732125_*|*_5_*:*_1_*:*_12798653467_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_515343739"}], "description": "(Initial planned release date: 04-26-2016)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n-- https://puppet.atlassian.net/issues/?filter=19202\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n--- https://puppet.atlassian.net/issues/?filter=18502\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17437", "fixedVersions": [], "id": "17437", "issueType": "Sub-task", "key": "SERVER-1280", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-04-26T14:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78af3652"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sfb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14729260_*|*_5_*:*_1_*:*_12878439837_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_436216486"}], "description": "(Initial planned release date: 04-26-2016)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17010", "fixedVersions": [], "id": "17010", "issueType": "Sub-task", "key": "SERVER-1279", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Won't Do", "resolutionDate": "2016-04-25T16:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T18:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2db7f78e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_95836047_*|*_1_*:*_1_*:*_14727499_*|*_10007_*:*_1_*:*_692120_*|*_5_*:*_1_*:*_12712861511_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_69191184_*|*_10006_*:*_1_*:*_435986452"}], "description": "(Initial planned release date: 04-26-2016)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16778", "fixedVersions": [], "id": "16778", "issueType": "Sub-task", "key": "SERVER-1278", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2016-04-27T14:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fe0f35e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14724705_*|*_3_*:*_1_*:*_11864_*|*_5_*:*_1_*:*_12878687150_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_435877744"}], "description": "(Initial planned release date: 04-26-2016)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16425", "fixedVersions": [], "id": "16425", "issueType": "Sub-task", "key": "SERVER-1277", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2016-04-25T16:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "-No puppet-agent dependency bump required.-", "created": "2016-04-20T17:26:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5], actually, there will be a Puppet Agent rpm/deb package dependency bump needed in Puppet Server for this release.  Should be Puppet Agent version 1.4.2, I believe.  The work for SERVER-1150 depends upon changes in Ruby Puppet here: https://github.com/puppetlabs/puppet/pull/4827.", "created": "2016-04-20T17:39:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "-I don't think there's anything to do here besides what's already covered in PE-15106.-\n\nNever mind, was out of date when I wrote that.", "created": "2016-04-20T18:18:00.000000"}], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f96f6d5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5sen:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_520897_*|*_1_*:*_1_*:*_14721935_*|*_10007_*:*_1_*:*_107890_*|*_5_*:*_1_*:*_12878612280_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_7490396_*|*_10006_*:*_1_*:*_427849136"}], "description": "(Initial planned release date: 04-26-2016)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.3.2%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16131", "fixedVersions": [], "id": "16131", "issueType": "Sub-task", "key": "SERVER-1276", "labels": [], "originalEstimate": "PT0S", "parent": "15892", "parentSummary": "puppetserver 2.3.2 04-26-2016 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Done", "resolutionDate": "2016-04-25T16:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.3.2)", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2016-04-20T11:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d7968ab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynf47:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14601174_*|*_3_*:*_1_*:*_87426005_*|*_5_*:*_1_*:*_605610953_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_519552227"}], "description": "puppetserver 2.3.2 04-26-2016 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15892", "fixedVersions": [], "id": "15892", "issueType": "Task", "key": "SERVER-1275", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-05-04T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.3.2 04-26-2016 Release", "timeSpent": "PT0S", "updated": "2016-05-04T16:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This seems pretty bad, and seems like it shouldn't be hard to fix.  We should bring it in and have someone look at it in the next sprint.", "created": "2016-04-28T21:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I suspect that this has something to do with this commit:\n\nhttps://github.com/puppetlabs/puppet/commit/6debe89bd935d56e2ec424900ad6f573bbf45552\n\nIn that commit, it looks like it becomes critical to call `to_s` on the log object, rather than just `message`.  The syslog destination was already calling `to_s`, which probably explains why it works there.  The Puppet Server logback destination does not do this, so it may be a matter of just changing that.  Will try it shortly.\n\nFYI, though, it looks like some of the other ruby destinations do not call `to_s`, so if it is important for this stuff to be surfaced in non-syslog destinations, we will probably need to audit / fix the other destinations as well.  Treating that as out-of-scope for this ticket for the moment.", "created": "2016-05-05T15:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Confirmed that calling `to_s` in the puppetserver log destination seems to fix this.", "created": "2016-05-05T15:26:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-19T18:22:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@749dbde7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Priority"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyndxj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_237784575_*|*_1_*:*_1_*:*_1270240327_*|*_10007_*:*_1_*:*_354397233_*|*_3_*:*_1_*:*_91866917_*|*_5_*:*_2_*:*_537212578_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_82856453_*|*_10006_*:*_1_*:*_11545120"}], "description": "When an exception is raised inside of the Ruby implementation of a function, Puppet Server logs the exception but not the Ruby backtrace that shows where the exception was raised. Puppet Server always runs with Ruby backtraces enabled, but explicitly setting {{trace = true}} in the master section of puppet.conf doesn't help.\n\nh2. Reproduction Case\n\n*  Install PE 2015.2.2 or later.\n*  Set up two test nodes, which each invoke a 3.x or 4.x function that raises an exception:\n\n{code:bash}\nmkdir -p /etc/puppetlabs/code/environments/production/modules/raise_error/lib/puppet/functions\nmkdir -p /etc/puppetlabs/code/environments/production/modules/raise_error/lib/puppet/parser/functions\n\ncat <<'EOS' > /etc/puppetlabs/code/environments/production/modules/raise_error/lib/puppet/functions/raise_error_4x.rb\nPuppet::Functions.create_function(:raise_error_4x) do\n  def raise_error_4x\n    raise 'Boom!'\n  end\nend\nEOS\n\ncat <<'EOS' > /etc/puppetlabs/code/environments/production/modules/raise_error/lib/puppet/parser/functions/raise_error_3x.rb\nPuppet::Parser::Functions.newfunction(:raise_error_3x) do |args|\n  raise 'Bam!'\nend\nEOS\n\ncat <<'EOS' > /etc/puppetlabs/code/environments/production/manifests/raise_error.pp\nnode '3x.node' {\n  raise_error_3x()\n}\n\nnode '4x.node' {\n  raise_error_4x()\n}\nEOS\n\npuppet cert generate 3x.node\npuppet cert generate 4x.node\n\n# Ensure trace is enabled\npuppet config set --section master trace true\n{code}\n\n*  Run {{puppet agent -t --certname 3x.node}} and {{puppet agent -t --certname 4x.node}} and inspect the Puppet Server logs.\n\nh3. Outcome\n\nPuppet Server logs no Ruby backtraces for either exception:\n\n{noformat}\n# /opt/puppetlabs/server/bin/puppetserver foreground\nOpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=96m; support was removed in 8.0\nOpenJDK 64-Bit Server VM warning: ignoring option PermSize=64m; support was removed in 8.0\n2016-04-19 17:06:38,178 INFO  [main] [o.e.j.u.log] Logging initialized @10291ms\n2016-04-19 17:06:41,277 INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Initializing web server(s).\n\n...\n\n2016-04-19 17:07:39,986 INFO  [qtp346289202-19] [puppet-server] Puppet Caching node for 3x.node\n2016-04-19 17:07:40,297 INFO  [qtp346289202-20] [puppet-server] mount[pe_packages] allowing * access\n2016-04-19 17:07:40,297 INFO  [qtp346289202-20] [puppet-server] mount[pe_modules] allowing * access\n2016-04-19 17:07:41,651 INFO  [qtp346289202-20] [puppet-server] Puppet 'replace_facts' command for 3x.node submitted to PuppetDB with UUID af512dcd-4a3e-4173-8ec9-89dfa9b78568\n2016-04-19 17:07:42,024 INFO  [qtp346289202-20] [puppet-server] Puppet Caching node for 3x.node\n2016-04-19 17:07:42,195 ERROR [qtp346289202-20] [puppet-server] Puppet Evaluation Error: Error while evaluating a Function Call, Bam!\n2016-04-19 17:07:42,197 ERROR [qtp346289202-20] [puppet-server] Puppet Evaluation Error: Error while evaluating a Function Call, Bam! at /etc/puppetlabs/code/environments/production/manifests/raise_error.pp:2:3 on node 3x.node\n2016-04-19 17:07:42,197 ERROR [qtp346289202-20] [puppet-server] Puppet Evaluation Error: Error while evaluating a Function Call, Bam!\n2016-04-19 17:07:42,389 INFO  [qtp346289202-21] [puppet-server] Puppet 'store_report' command for 3x.node submitted to PuppetDB with UUID 2de1c5b3-f459-45d8-a0c0-d03b9fe58e55\n\n2016-04-19 17:07:46,745 INFO  [qtp346289202-19] [puppet-server] Puppet Caching node for 4x.node\n2016-04-19 17:07:47,697 INFO  [qtp346289202-22] [puppet-server] Puppet 'replace_facts' command for 4x.node submitted to PuppetDB with UUID 7c2b8d1c-1ad6-4a8c-ab03-af7f61d3aaf5\n2016-04-19 17:07:47,991 INFO  [qtp346289202-22] [puppet-server] Puppet Caching node for 4x.node\n2016-04-19 17:07:48,049 ERROR [qtp346289202-22] [puppet-server] Puppet Evaluation Error: Error while evaluating a Function Call, Boom!\n2016-04-19 17:07:48,049 ERROR [qtp346289202-22] [puppet-server] Puppet Evaluation Error: Error while evaluating a Function Call, Boom! at /etc/puppetlabs/code/environments/production/manifests/raise_error.pp:6:3 on node 4x.node\n2016-04-19 17:07:48,049 ERROR [qtp346289202-22] [puppet-server] Puppet Evaluation Error: Error while evaluating a Function Call, Boom!\n2016-04-19 17:07:48,091 INFO  [qtp346289202-23] [puppet-server] Puppet 'store_report' command for 4x.node submitted to PuppetDB with UUID 5b7bc240-f10b-4e6b-95c9-adb23cb8c98b\n{noformat}\n\nh3. Expected Outcome\n\nPuppet Server logs Ruby backtraces at ERROR level like Rack-based puppet masters:\n\n{noformat}\n# /opt/puppetlabs/puppet/bin/puppet master --no-daemonize\nWarning: The WEBrick Puppet master server is deprecated and will be removed in a future release. Please use Puppet Server instead. See http://links.puppetlabs.com/deprecate-rack-webrick-servers for more information.\n   (at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application/master.rb:210:in `main'; /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application/master.rb:165:in `run_command'; /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application.rb:344:in `block in run'; /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:540:in `exit_on_fail'; /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application.rb:344:in `run'; /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/command_line.rb:128:in `run'; /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/command_line.rb:72:in `execute'; /opt/puppetlabs/puppet/bin/puppet:5:in `<main>')\nNotice: Starting Puppet master version 4.4.2\n\n\nError: Evaluation Error: Error while evaluating a Function Call, Bam! at /etc/puppetlabs/code/environments/production/manifests/raise_error.pp:2:3 on node 3x.node\n/etc/puppetlabs/code/environments/production/modules/raise_error/lib/puppet/parser/functions/raise_error_3x.rb:2:in `block in <top (required)>'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:174:in `block (2 levels) in newfunction'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:167:in `block in newfunction'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:281:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:873:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:853:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:46:in `block in visit_this'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:42:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:42:in `visit_this'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `block in eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:67:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:31:in `safeevaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:182:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:84:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:76:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:559:in `evaluate_ast_node'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:183:in `block (2 levels) in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:183:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:167:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:35:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:265:in `block (2 levels) in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:263:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:223:in `block in benchmark'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:222:in `benchmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:261:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:53:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:194:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:134:in `do_find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:48:in `block in call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:47:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:60:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:58:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:49:in `block in service'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:48:in `synchronize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:48:in `service'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick.rb:33:in `block (2 levels) in listen'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/server.rb:295:in `call'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'\nError: Evaluation Error: Error while evaluating a Function Call, Bam! at /etc/puppetlabs/code/environments/production/manifests/raise_error.pp:2:3 on node 3x.node\nError: Evaluation Error: Error while evaluating a Function Call, Bam! at /etc/puppetlabs/code/environments/production/manifests/raise_error.pp:2:3 on node 3x.node\n/etc/puppetlabs/code/environments/production/modules/raise_error/lib/puppet/parser/functions/raise_error_3x.rb:2:in `block in <top (required)>'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:174:in `block (2 levels) in newfunction'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/functions.rb:167:in `block in newfunction'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:281:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:873:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:853:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:46:in `block in visit_this'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:42:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:42:in `visit_this'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:69:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `block in eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:67:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:31:in `safeevaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:182:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:84:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:76:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:559:in `evaluate_ast_node'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:183:in `block (2 levels) in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:183:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:167:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:35:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:265:in `block (2 levels) in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:263:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:223:in `block in benchmark'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:222:in `benchmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:261:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:53:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:194:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:134:in `do_find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:48:in `block in call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:47:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:60:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:58:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:49:in `block in service'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:48:in `synchronize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:48:in `service'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick.rb:33:in `block (2 levels) in listen'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/server.rb:295:in `call'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'\n\n\nError: Evaluation Error: Error while evaluating a Function Call, Boom! at /etc/puppetlabs/code/environments/production/manifests/raise_error.pp:6:3 on node 4x.node\n/etc/puppetlabs/code/environments/production/modules/raise_error/lib/puppet/functions/raise_error_4x.rb:3:in `raise_error_4x'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:45:in `invoke'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:35:in `dispatch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:44:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:272:in `block in call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:271:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:873:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:853:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:67:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `block in eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:67:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:31:in `safeevaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:182:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:84:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:76:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:559:in `evaluate_ast_node'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:183:in `block (2 levels) in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:183:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:167:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:35:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:265:in `block (2 levels) in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:263:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:223:in `block in benchmark'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:222:in `benchmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:261:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:53:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:194:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:134:in `do_find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:48:in `block in call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:47:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:60:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:58:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:49:in `block in service'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:48:in `synchronize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:48:in `service'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick.rb:33:in `block (2 levels) in listen'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/server.rb:295:in `call'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'\nError: Evaluation Error: Error while evaluating a Function Call, Boom! at /etc/puppetlabs/code/environments/production/manifests/raise_error.pp:6:3 on node 4x.node\nError: Evaluation Error: Error while evaluating a Function Call, Boom! at /etc/puppetlabs/code/environments/production/manifests/raise_error.pp:6:3 on node 4x.node\n/etc/puppetlabs/code/environments/production/modules/raise_error/lib/puppet/functions/raise_error_4x.rb:3:in `raise_error_4x'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatch.rb:45:in `invoke'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/dispatcher.rb:35:in `dispatch'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/functions/function.rb:44:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:272:in `block in call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/runtime3_support.rb:271:in `call_function'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:873:in `call_function_with_block'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:853:in `eval_CallNamedFunctionExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:67:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `block in eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:589:in `eval_BlockExpression'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/visitor.rb:67:in `visit_this_1'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/evaluator_impl.rb:77:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/ast.rb:31:in `safeevaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/type.rb:182:in `evaluate_code'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:84:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/resource.rb:76:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:559:in `evaluate_ast_node'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:183:in `block (2 levels) in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:183:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:167:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/parser/compiler.rb:35:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:265:in `block (2 levels) in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:263:in `block in compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:223:in `block in benchmark'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:222:in `benchmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:261:in `compile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:53:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:194:in `find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:134:in `do_find'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:48:in `block in call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:240:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:47:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:60:in `block in process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:58:in `process'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:49:in `block in service'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:48:in `synchronize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick/rest.rb:48:in `service'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/webrick.rb:33:in `block (2 levels) in listen'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/server.rb:295:in `call'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17436", "fixedVersions": ["SERVER 2.4.0"], "id": "17436", "issueType": "Bug", "key": "SERVER-1273", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2016-05-13T11:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server doesn't log backtraces from exceptions in functions", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I'm closing this ticket in favor of SERVER-913...", "created": "2016-04-21T12:37:00.000000"}], "components": ["Certificate Authority"], "created": "2016-04-19T11:15:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ce5d6f0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5rjr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_87972488_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_89785434"}], "description": "SERVER-977 pointed out the need for a comprehensive test suite of the HTTP CA API.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15295", "fixedVersions": [], "id": "15295", "issueType": "Task", "key": "SERVER-1272", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Duplicate", "resolutionDate": "2016-04-21T12:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create test suite to validate the Puppet HTTP CA API", "timeSpent": "PT0S", "updated": "2016-04-21T12:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We consider this a duplicate of SERVER-1272.", "created": "2016-04-20T11:30:00.000000"}], "components": ["API", "Certificate Authority"], "created": "2016-04-18T18:04:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a85df39"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5pzb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_149195442_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16129", "fixedVersions": [], "id": "16129", "issueType": "Improvement", "key": "SERVER-1271", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Duplicate", "resolutionDate": "2016-04-20T11:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add acceptance test validating the DELETE handler in the certificate_request API ", "timeSpent": "PT0S", "updated": "2016-04-21T12:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] thoughts on this?", "created": "2016-04-19T12:17:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:80bcb7bb-c13d-445f-ab52-d3d93964accf] - After you escape your regex as the documentation suggests, does it work as you expect it to?\n", "created": "2016-04-20T11:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I've played around with some regular expressions that use \"\\w\" and \"\\d\" with the HOCON auth.conf format that Puppet Server supports.  As long as I've escaped the backslashes - e.g., \"&#92", "created": "2016-04-20T13:47:00.000000"}, {"author": "557058:80bcb7bb-c13d-445f-ab52-d3d93964accf", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] If I escape my regex, everything works as expected (see my first example).\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] When I see {code}type => 'regex'{code} my expectation, as a user, is to provide a regular expression without needing to escape. I don't think I've ever encountered a config fire where I need to escape my regular expressions. Regular expressions can be hard to read to begin with and toss in extra escaping they can be even harder. With this said, I understand your arguments. At minimum I think the documentation for [puppetserver auth.conf | https://docs.puppet.com/puppetserver/latest/config_file_auth.html]should be updated to denote escaping is required.", "created": "2016-04-20T19:43:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I agree that the documentation should be updated.", "created": "2016-04-21T12:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:557058:80bcb7bb-c13d-445f-ab52-d3d93964accf], for the feedback.  I agree that it does seem onerous to have to escape the regex characters where it hadn't been necessary prior to the use of HOCON.  I think if HOCON ever adds a native way to express a regex data type for a setting that we should consider utilizing that for this configuration file in Puppet Server.  Where we only have the option to represent a setting value within a string type in HOCON for now, I think sticking with the HOCON escaping rules for consistency with other HOCON settings is probably the best approach.  \n\n[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] currently has a PR up against the puppetserver repo which will update our documentation to more explicitly call out the need to escape characters within the regex path of a rule - https://github.com/puppetlabs/puppetserver/pull/1023.  Hopefully, that will be published to our docs web site soon.\n\nI'm going to close this issue under the assumption that the current implementation is working as expected.  /CC [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] should he see the need for us to follow up on this further.  Thanks again!", "created": "2016-04-25T18:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:80bcb7bb-c13d-445f-ab52-d3d93964accf], it was pointed out by [~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] that it might be possible to use a triple-quote syntax to represent the regex in the {{path}} in HOCON.  I tried that out, and it seems to work just as he suggested.\n\nSo, for the example you wrote in your description, I tried:\n\n{noformat}\npath: \"\"\"/puppet/v3/catalog/((\\w*?)(?:\\d+|-\\w+|_|\\.)[^/]*)$\"\"\"\n{noformat}\n\nEven without quoting each individual backslash within the regex, my Puppet Server was able to load and utilize that path as equivalent to the form of the {{path}} where each internal backslash was escaped:\n\n{noformat}\npath: \"/puppet/v3/catalog/((\\\\w*?)(?:\\\\d+|-\\\\w+|_|\\\\.)[^/]*)$\"\n{noformat}\n\nDoes the triple-quote form work for you?  Maybe that would be a more reasonable approach for you to use - and one we could document as an alternative (/CC [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e])?", "created": "2016-04-26T08:57:00.000000"}, {"author": "557058:80bcb7bb-c13d-445f-ab52-d3d93964accf", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], triple-quote do the trick. Thanks [~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e]!\n\n+1 For documenting this.", "created": "2016-04-26T09:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] we should perhaps also think about whether there'd be a sane way to expose the triple-quote support in the puppet module(s) (either the tk-auth one or the puppetlabs-hocon one, or both).", "created": "2016-04-26T09:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Jeremy Barlow we should perhaps also think about whether there'd be a sane way to expose the triple-quote support in the puppet module(s) (either the tk-auth one or the puppetlabs-hocon one, or both).{quote}\n\nYeah, that might make sense.  Seems like if we were going to do that we should figure out a good way to configure it at the puppetlabs-hocon layer first - for the most general benefit - before figuring out how we might want to expose that from the puppet_authorization module configuration.\n\nFor what it's worth, someone could just write a puppet_authorization::rule in Puppet code containing the unescaped form of the regex ...\n\n{code:puppet}\npuppet_authorization::rule {...\n  match_request_path   => '/puppet/v3/catalog/((\\w*?)(?:\\d+|-\\w+|_|\\.)[^/]*)$',\n...\n{code}\n\n... but have that be generated via the ruby-hocon gem into the HOCON-escaped form in the auth.conf HOCON file:\n\n{noformat}\n\"path\" : \"/puppet/v3/catalog/((\\\\w*?)(?:\\\\d+|-\\\\w+|_|\\\\.)[^/]*)$\",\n{noformat}\n\nSo at least it would make the source authoring a little easier, although it would still be more onerous to see the escaping in the generated file.", "created": "2016-04-26T09:43:00.000000"}], "components": ["DOCS"], "created": "2016-04-16T07:48:00.000000", "creator": "557058:80bcb7bb-c13d-445f-ab52-d3d93964accf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c5fda29"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5qb3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_817482139_*|*_6_*:*_1_*:*_0"}], "description": "Expectation: provide ruby regex string to path parameter, without needing to escape backslashes.\n\nActual Results: A ruby regex that does not have backslashes escaped will cause the server to crash.\n\nAuthorization block I'm working with. In this example I have the escaped the backslashes and puppetserver is happy.\n{code}\n        {\n            match-request: {\n                path: \"/puppet/v3/catalog/((\\\\w*?)(?:\\\\d+|-\\\\w+|_|\\\\.)[^/]*)$\"\n                type: regex\n                method: [get, post]\n            }\n            allow: [ \"$2_cluster\", \"$2_shared\", \"$1\" ]\n            name: \"my catalog\"\n            sort-order: 300\n        },\n{code}\n\nPuppet Server fails to start when using\n{code}\npath: \"/puppet/v3/catalog/((\\w*?)(?:\\d+|-\\w+|_|\\.)[^/]*)$\"\n{code}\n\n{code}\nException in thread \"main\" com.typesafe.config.ConfigException$Parse: /etc/puppetlabs/puppetserver/conf.d/auth.conf: 7: Reserved character '\\' is not allowed outside quotes (if you intended '\\' (Reserved character '\\' is not allowed outside quotes) to be part of the value for 'path', try enclosing the value in double quotes)\n{code}\n\nIf I use double and single quotes together, I get a slightly different error\n{code}\npath: \"'/puppet/v3/catalog/((\\w*?)(?:\\d+|-\\w+|_|\\.)[^/]*)$'\"\n{code}\n\n{code}\nException in thread \"main\" com.typesafe.config.ConfigException$Parse: /etc/puppetlabs/puppetserver/conf.d/auth.conf: 28: in value for key 'path': backslash followed by 'w', this is not a valid escape sequence (quoted strings use JSON escaping, so use double-backslash \\\\ for literal backslash)\n{code}\n\nThis seems consistent with the HOCON documentation [https://github.com/typesafehub/config/blob/master/HOCON.md#unchanged-from-json]\n{quote}\nquoted strings are in the same format as JSON strings\n{quote}\nJSON strings must be escaped\n\nMy non-developer/sysadmin suggestion would be to automatically escape backslash before sending the config file to tk-load-config for the path parameter.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17008", "fixedVersions": [], "id": "17008", "issueType": "Bug", "key": "SERVER-1270", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:80bcb7bb-c13d-445f-ab52-d3d93964accf", "resolution": "Won't Do", "resolutionDate": "2016-04-25T18:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "HOCON auth.conf, regex backslashes need to be escaped", "timeSpent": "PT0S", "updated": "2016-05-25T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "This seems like a good place to put this, not sure if it would need it's own ticket\n\nWe've been seeing some intermittent travis failures in openjdk7 with {{certificate-authority-int-test/empty-whitelist-defined-test}} with an identical error message and no obvious culprit \n\nTravis job: https://travis-ci.org/puppetlabs/puppetserver/jobs/139332565\n\n{noformat}\nERROR in (empty-whitelist-defined-test) (HttpAsyncRequestExecutor.java:341)\nUncaught exception, not in assertion.\nexpected: nil\n2016-06-21 22:31:45,340 WARN  [clojure-agent-send-pool-14] [puppetserver] Puppet Comparing Symbols to non-Symbol values is deprecated\n   (file & line not available)\n2016-06-21 22:31:45,766 WARN  [async-dispatch-98] [o.e.j.s.h.ContextHandler] Empty contextPath\n2016-06-21 22:33:47,556 WARN  [clojure-agent-send-pool-16] [puppetserver] Puppet Comparing Symbols to non-Symbol values is deprecated\n   (file & line not available)\n2016-06-21 22:33:47,990 WARN  [async-dispatch-102] [o.e.j.s.h.ContextHandler] Empty contextPath\n  actual: org.apache.http.ConnectionClosedException: Connection closed\n at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput (HttpAsyncRequestExecutor.java:341)\n    org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput (DefaultNHttpClientConnection.java:263)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:81)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:39)\n    org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady (AbstractIODispatch.java:123)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.readable (BaseIOReactor.java:164)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent (AbstractIOReactor.java:339)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents (AbstractIOReactor.java:317)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.execute (AbstractIOReactor.java:278)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.execute (BaseIOReactor.java:106)\n    org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run (AbstractMultiworkerIOReactor.java:590)\n    java.lang.Thread.run (Thread.java:745)\n\n{noformat}", "created": "2016-06-22T16:38:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Saw a similar thing just now in travis, after merging https://github.com/puppetlabs/puppetserver/pull/1118 (Joe's PR that the above test failure was seen on):\n\n{code}\nlein test :only puppetlabs.services.jruby.puppet-environments-int-test/environment-flush-integration-test\n\nERROR in (environment-flush-integration-test) (HttpAsyncRequestExecutor.java:341)\nUncaught exception, not in assertion.\nexpected: nil\n  actual: org.apache.http.ConnectionClosedException: Connection closed\n at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput (HttpAsyncRequestExecutor.java:341)\n    org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput (DefaultNHttpClientConnection.java:263)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:81)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:39)\n    org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady (AbstractIODispatch.java:123)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.readable (BaseIOReactor.java:164)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent (AbstractIOReactor.java:339)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents (AbstractIOReactor.java:317)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.execute (AbstractIOReactor.java:278)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.execute (BaseIOReactor.java:106)\n    org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run (AbstractMultiworkerIOReactor.java:590\n    java.lang.Thread.run (Thread.java:745)\n{code}\n\nTravis job was https://travis-ci.org/puppetlabs/puppetserver/jobs/139812849", "created": "2016-06-23T12:18:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This happened with certificate-authority-int-test/empty-whitelist-defined-test (oraclejdk8) for PR https://github.com/puppetlabs/puppetserver/pull/1131", "created": "2016-07-05T11:17:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This occurred again with certificate-authority-int-test/empty-whitelist-defined-test but on oraclejdk7 for PR https://github.com/puppetlabs/puppetserver/pull/1131", "created": "2016-07-05T12:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Something like this also happened with the `cert-not-on-whitelist-test` test for oraclejdk8 only in https://travis-ci.org/puppetlabs/puppetserver/jobs/148442192:\n\n{noformat}\nERROR in (cert-not-on-whitelist-test) (HttpAsyncRequestExecutor.java:341)\nUncaught exception, not in assertion.\nexpected: nil\n2016-07-30 00:39:54,303 WARN  [clojure-agent-send-pool-10] [puppetserver] Puppet Comparing Symbols to non-Symbol values is deprecated\n   (file & line not available)\n2016-07-30 00:39:54,796 WARN  [async-dispatch-90] [p.p.certificate-authority] The private CA key at '/home/travis/build/puppetlabs/puppetserver/dev-resources/puppetlabs/services/certificate_authority/certificate_authority_int_test/ca_true_test/master/conf/ssl/ca/ca_key.pem' was found to have the wrong permissions set as 'rw-rw-r--'. This has been corrected to 'rw-r-----'.\n2016-07-30 00:39:54,803 WARN  [async-dispatch-90] [o.e.j.s.h.ContextHandler] Empty contextPath\n2016-07-30 00:43:33,845 WARN  [clojure-agent-send-pool-14] [puppetserver] Puppet Comparing Symbols to non-Symbol values is deprecated\n   (file & line not available)\n2016-07-30 00:43:34,409 WARN  [async-dispatch-98] [o.e.j.s.h.ContextHandler] Empty contextPath\n2016-07-30 00:43:47,071 WARN  [clojure-agent-send-pool-16] [puppetserver] Puppet Comparing Symbols to non-Symbol values is deprecated\n   (file & line not available)\n2016-07-30 00:43:47,558 WARN  [async-dispatch-102] [o.e.j.s.h.ContextHandler] Empty contextPath\n  actual: org.apache.http.ConnectionClosedException: Connection closed\n at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput (HttpAsyncRequestExecutor.java:341)\n    org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput (DefaultNHttpClientConnection.java:263)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:81)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:39)\n    org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady (AbstractIODispatch.java:123)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.readable (BaseIOReactor.java:164)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent (AbstractIOReactor.java:339)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents (AbstractIOReactor.java:317)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.execute (AbstractIOReactor.java:278)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.execute (BaseIOReactor.java:106)\n    org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run (AbstractMultiworkerIOReactor.java:590)\n    java.lang.Thread.run (Thread.java:745)\n{noformat}\n\nThis was triggered from [this PR|https://github.com/puppetlabs/puppetserver/pull/1159].", "created": "2016-07-30T09:00:00.000000"}], "components": [], "created": "2016-04-15T14:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e67a5a3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynd0n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_423405249_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_57393593796"}], "description": "This is a continuation of the investigation that started for the intermittent failures of the {{environment-classes-integration-cache-enabled-test}}, first assessed in SERVER-1196.  The work for SERVER-1196 resulted in some instrumentation being added to the test to help with identifying the source of the failure.  The test has since failed again sporadically in Travis runs.  See https://travis-ci.org/puppetlabs/puppetserver/jobs/123193556 for one example.\n\nThe test failure still looks like this:\n\n{noformat}\nlein test :only puppetlabs.services.master.environment-classes-int-test/environment-classes-integration-cache-enabled-test\n\nERROR in (environment-classes-integration-cache-enabled-test) (HttpAsyncRequestExecutor.java:341)\n\nUncaught exception, not in assertion.\nexpected: nil\n  actual: org.apache.http.ConnectionClosedException: Connection closed\n at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput (HttpAsyncRequestExecutor.java:341)\n    org.apache.http.impl.nio.client.InternalRequestExecutor.endOfInput (InternalRequestExecutor.java:132)\n    org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput (DefaultNHttpClientConnection.java:263)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:81)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:39)\n    org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady (AbstractIODispatch.java:123)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.readable (BaseIOReactor.java:164)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent (AbstractIOReactor.java:339)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents (AbstractIOReactor.java:317)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.execute (AbstractIOReactor.java:278)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.execute (BaseIOReactor.java:106)\n    org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run (AbstractMultiworkerIOReactor.java:590)\n    java.lang.Thread.run (Thread.java:745)\n{noformat}\n\n.. but does include some output from the puppetserver.log file around the error.\n\nIt looks like from the puppetserver.log output that the test might be issuing a request to flush the environment cache but the request never returns before the connection times out / shuts down:\n\n{noformat}\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> DELETE /puppet-admin-api/v1/environment-cache?environment=production HTTP/1.1\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> accept-encoding: gzip, deflate\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> Host: localhost:8140\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> Connection: Keep-Alive\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> User-Agent: Apache-HttpAsyncClient/4.1.1 (Java/1.7.0_76)\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-163 127.0.0.1:51201<->127.0.0.1:8140[ACTIVE][rw:][ACTIVE][rw][NEED_UNWRAP][0][0][226][0]: Event set [w]\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.MainClientExec] [exchange: 204] Request completed\n2016-04-15 18:00:34,581 DEBUG [Finalizer] [o.a.h.i.n.c.PoolingNHttpClientConnectionManager] Connection manager is shutting down\n...\n2016-04-15 18:00:34,679 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-163 127.0.0.1:51201<->127.0.0.1:8140[ACTIVE][rw:rw][ACTIVE][rw][NEED_WRAP][EOF][][7][0][2004][0]: -1 bytes read\n2016-04-15 18:00:34,679 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.InternalIODispatch] http-outgoing-163 [ACTIVE] End of input\n2016-04-15 18:00:34,679 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-163 127.0.0.1:51201<->127.0.0.1:8140[ACTIVE][rw:rw][ACTIVE][rw][NEED_WRAP][EOF][][7][0][2004][0]: Shutdown\n2016-04-15 18:00:34,679 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.InternalHttpAsyncClient] [exchange: 204] connection aborted\n{noformat}\n\nThere's a gap of over a minute, followed by the connection being aborted.  Contrast that with an earlier environment-cache request which was successful:\n\n{noformat}\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> DELETE /puppet-admin-api/v1/environment-cache HTTP/1.1\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> accept-encoding: gzip, deflate\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> Host: localhost:8140\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> Connection: Keep-Alive\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> User-Agent: Apache-HttpAsyncClient/4.1.1 (Java/1.7.0_76)\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-158 127.0.0.1:51177<->127.0.0.1:8140[ACTIVE][rw:][ACTIVE][rw][NEED_UNWRAP][0][0][226][0]: Event set [w]\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.MainClientExec] [exchange: 199] Request completed\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-158 127.0.0.1:51177<->127.0.0.1:8140[ACTIVE][rw:w][ACTIVE][rw][NOT_HANDSHAKING][0][0][261][0]: 194 bytes written\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"DELETE /puppet-admin-api/v1/environment-cache HTTP/1.1[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"accept-encoding: gzip, deflate[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"Host: localhost:8140[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"Connection: Keep-Alive[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"User-Agent: Apache-HttpAsyncClient/4.1.1 (Java/1.7.0_76)[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.InternalIODispatch] http-outgoing-158 [ACTIVE] Request ready\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-158 127.0.0.1:51177<->127.0.0.1:8140[ACTIVE][r:w][ACTIVE][r][NOT_HANDSHAKING][0][0][0][0]: Event cleared [w]\n2016-04-15 17:59:28,074 INFO  [qtp2020514110-7670] [p.s.j.puppet-environments] Marking all registered environments as expired.\n2016-04-15 17:59:28,084 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-158 127.0.0.1:51177<->127.0.0.1:8140[ACTIVE][r:r][ACTIVE][r][NOT_HANDSHAKING][0][0][0][0]: 123 bytes read\n2016-04-15 17:59:28,084 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 << \"HTTP/1.1 204 No Content[\\r][\\n]\"\n...\n{noformat}\n\nNote that a \"Marking all registered environments\" message appears in the output of the successful request but not in the output of the aborted one.  Maybe the request is getting hung up on iterating over the registered JRuby instances or somewhere even earlier?  The absence of the Jetty \"Request ready\" message from the failed request - with its presence in the second one - suggests that maybe the request is stalling out before Jetty is able to consume / route it to a handler.\n\nI'm not sure what the \"exchange: 204\" means from the failed request but I don't think it's related to the HTTP 204 response that the server would normally return if this request were successful.  I think it's some sort of request counter that Jetty bumps up as new requests are processed.\n\nSince I'm still not sure if this gives us enough to reproduce the issue specifically, I'm inclined to think that we may need to go through another round of instrumentation like we did in this ticket.   This time we might try to catch / rethrow the exception for the environment-cache delete requests - so we can see at what point in the test it is happening - like we did with the environment-classes requests in the PR for this ticket.  Also, I think it would be good to try to capture a stack trace of all of the running threads at the point of the failure so we can see where the environment-cache delete request might be getting hung up.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16422", "fixedVersions": [], "id": "16422", "issueType": "Bug", "key": "SERVER-1269", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2018-02-13T17:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Continue env-class-integration-cache-enabled-test failure investigation", "timeSpent": "PT0S", "updated": "2018-02-13T17:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] - Should this be assigned to you?", "created": "2016-04-21T11:33:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "I've got this one. [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] My interpretation of the user story to write against (from the epic review meeting this afternoon):\n\nAs a Puppet administrator, I want to be able to \"classify\" a node as a compile master via tk-auth using a CSR extension so that I can add a compile master without having to restart Puppet Server server or use a classifier.\n\nAs a Puppet administrator, after I assign the compile master role using a CSR extension and the operation completes, I want the new compile master ready to receive file-synced files.\n\n", "created": "2016-04-26T16:55:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Of course. [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] gave me a hot, steaming mug of clue that _this test_ is about the FOSS component. The perils of testing two products. We talked about how to do it. We have A Plan\u2122.", "created": "2016-04-26T21:21:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] Ping.  Should I take this over?  Do you have a branch you can push up I can look at?", "created": "2016-05-04T10:20:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "https://github.com/kurtwall/puppetserver/tree/server-1268 has a working test and test fixture. Lots of details need work, but the basic structure is present:\n{code}\nacceptance/suites/tests/authorization/use_csr_auth.rb passed in 586.53 seconds\n      Test Suite: tests @ 2016-05-04 17:56:27 -0400\n\n      - Host Configuration Summary -\n\n\n              - Test Case Summary for suite 'tests' -\n       Total Suite Time: 586.53 seconds\n      Average Test Time: 586.53 seconds\n              Attempted: 1\n                 Passed: 1\n                 Failed: 0\n                Errored: 0\n                Skipped: 0\n                Pending: 0\n                  Total: 1\n{code}", "created": "2016-05-04T16:06:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] I'm going to push this across the finish line.  We are SOO close, and there are changes coming (branching grief and a release) coming up that make me thing we ought to have this test up and running sooner rather than later.\n\n", "created": "2016-05-11T14:43:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] Thank you for merging!  As soon as we see this complete in CI and pass, we can close this ticket.", "created": "2016-05-13T16:50:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This failed in CI over the weekend.  It appears that the hup helper I wrote is failling to find /var/run/puppetlabs/puppetserver/puppetserver (the pid file) on many platforms...", "created": "2016-05-16T10:19:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The fix to the hup helper is checked in, and this test is now passing in CI.", "created": "2016-05-18T10:07:00.000000"}], "components": [], "created": "2016-04-14T12:13:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1eb316c7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyndrb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_234293617_*|*_1_*:*_1_*:*_514253139_*|*_10007_*:*_1_*:*_24821842_*|*_3_*:*_2_*:*_1646608127_*|*_5_*:*_1_*:*_11406272281_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_510043768"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16420", "fixedVersions": [], "id": "16420", "issueType": "Task", "key": "SERVER-1268", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-05-18T10:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Build acceptance test(s) for TK-293 ", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "{quote}\nThis mechanism needs to be different from our existing certificate extensions due to the need to prevent authorization-granting certificates from being accidentally signed.\n{quote}\nI don't understand this, or at least to the extent that I understand what you're saying I disagree with it. ", "created": "2016-04-13T11:35:00.000000"}, {"author": "70121:9c658341-861b-467e-8f57-dfcff20944cb", "body": "The concern is that currently there is no way to warn or notify a user they are signing certificates with ssl extensions. Which means in the instance of TK-293, someone could request what appears to be an agent certificate, but contains ssl extensions that conform to the whitelist access policies for PuppetDB.\n\nBy adding a new set of extensions (authorization extensions), we don't have to change the autosigning behavior or configuration for the previous extensions to prevent that above issue - Puppet already flags and wont autosign certificates that contain extensions outside of the predefined space. This also prevents collisions for users who may already be using ssl extensions heavily in their environment, since this is a new subset of extensions in a new namespace (puppetlabs.1.3) vs the ones that were used before.", "created": "2016-04-13T11:50:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "OK that makes more sense, I read through the whole conversation on TK-293 and understand why everyone landed here. The ticket description just presents it as axiomatic and my brain bounced off the statement :)\n\n", "created": "2016-04-13T11:57:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "We should at least have a conversation about how we're not planning to support any of this in the GUI (or plan that work if we do want to support it)", "created": "2016-05-05T11:57:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "My understanding is that there is no GUI work in-scope for this epic (not to say that it doesn't make sense to do that in the future).", "created": "2016-05-05T12:04:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] that's also my understanding. Seems like such a thing should be follow up work, especially because it might mean updating the CA API.", "created": "2016-05-05T12:05:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "Confirmed with both HA folks and MEEP folks that no one is blocked on this work / waiting on it.\n\nThe completion of this work *allows* both HA and MEEP to do desirable work, but they are able to meet all of their davis deliverables without this.", "created": "2016-06-13T17:27:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] - Thank you very much for looking into that.  Is any of that \"desirable\" work captured in JIRA or anywhere else, or is it just long-term / \"pie in the sky\" stuff for now?", "created": "2016-06-15T05:09:00.000000"}], "components": [], "created": "2016-04-12T14:27:00.000000", "creator": "557058:97578a32-3955-4c5c-939e-58a878437b49", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f1c77b5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Securing SSL Extensions"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbtb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "In this release we allow the signing of CSR that contain a new custom OID arc to represent secured extensions for use with trapperkeeper-authorization (the system that underpins the newer auth.conf routing).\n\nSigning CSRs wth the new OID arc is done via the command line via `puppet cert sign --allow-authorization-extensions`, a workflow similar to signing DNS alt names.\n\nThe new OID arc is \"puppetlabs.1.3\", long name: \"Puppet Authorization Certificate Extension\", short name: \"ppAuthCertExt\" (where \"puppetlabs\" is our registered arc 1.3.6.1.4.1.34380). The extension \"puppetlabs.1.3.1\" (pp_authorization) should be set for CSRs that need to be authenticated via the new workflow. We've also include an default alias of \"pp_auth_role\" at extension \"puppetlabs.1.3.13\" for common workflows.\n\nWe've also improved the CLI output of `puppet cert list` and `puppet cert sign` to be more user friendly with `--human-readable` and `--machine-readable` flags as well as allowing admins to force a prompt when signing certificates with a `--interactive` flag.\n\nWe hope this allows easier automated fail over to authorized nodes within a puppet infrastructure and will hopefully open up possibilities for additional security workflows in the future. See https://docs.puppet.com/puppet/4.5/reference/ssl_attributes_extensions.html for additional infromation on Custom SSL Extensions in Puppet."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_76098937_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_3000349626_*|*_10004_*:*_1_*:*_5289693775_*|*_10014_*:*_1_*:*_248342514"}], "description": "Provide a clean mechanism for setting certificate extensions to be used for cert-based authorizations (e.g. in TK-293). This mechanism needs to be different from our existing certificate extensions due to the need to prevent authorization-granting certificates from being accidentally signed.\n\nThe logical way to do this is to create a new OID arc specifically for authorization-granting extensions.\n\nOur root OID is 1.3.6.1.4.1.34380 for \"puppetlabs\". We then have:\n\n{noformat}\npuppetlabs.1:   \"Puppet Certificate Extension\"\npuppetlabs.1.1: \"Puppet Registered Certificate Extension\" (ppRegCertExt)\npuppetlabs.1.2: \"Puppet Private Certificate Extension\"    (ppPrivCertExt)\n{noformat}\n\nSee details [here|https://github.com/puppetlabs/puppet/blob/master/lib/puppet/ssl/oids.rb#L28-L61].\n\nOur CA will currently ONLY accept extension requests if they are under one of the existing ppRegCertExt or ppPrivCertExt OIDs. See [the ruby code|https://github.com/puppetlabs/puppet/blob/master/lib/puppet/ssl/certificate_authority.rb#L325-L329] and [the clojure code|https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L550-L568].\n\nTo implement \"authorization\" certificate extensions, we could define another OID arc under puppetlabs.1. For example, we could define:\n\n{noformat}\npuppetlabs.1.3: \"Puppet Authorization Certificate Extension\" (ppAuthCertExt)\n{noformat}\n\nBecause any extensions under this OID are flatline rejected today, we have full control over how we implement the methodology for accepting them. We could require on the command line something like:\n\n{code}\npuppet cert sign --allow-authorization-extensions\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16417", "fixedVersions": ["SERVER 2.5.0"], "id": "16417", "issueType": "Epic", "key": "SERVER-1305", "labels": ["AWS1", "product-priority"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:97578a32-3955-4c5c-939e-58a878437b49", "resolution": "Done", "resolutionDate": "2016-07-21T07:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Securing SSL Extensions", "timeSpent": "PT0S", "updated": "2017-08-11T14:49:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Also probably the tk-auth rules to allow access to it.", "created": "2017-02-01T17:53:00.000000"}, {"author": "623c0ef5a1d81f0069d8dfb9", "body": "Will the metrics exposed in the dashboard also be available in an enhanced API in open source puppet server?", "created": "2017-03-06T09:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c0ef5a1d81f0069d8dfb9], yes, there will be an enhanced API in OSS Puppet Server underlying the metrics dashboard.  We expect that it will look much like what is currently available through the status service for PE Puppet Server.  For a preview of that, you might take a look at [this page|https://docs.puppet.com/pe/latest/status_api.html#metrics-endpoints].", "created": "2017-03-06T13:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [028d1e|https://github.com/puppetlabs/puppetserver/commit/028d1e51e13aed692f59e01def1b9c50036c1efa].  Tests all still passing so marking resolved.", "created": "2017-03-17T10:02:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:48:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-11T17:13:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f9aaa6d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzc38v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added a developer dashboard for viewing server metrics. See summary release notes in the Server metrics epic, SERVER-1259. "}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150750106_*|*_10007_*:*_1_*:*_571173573_*|*_3_*:*_1_*:*_170975007_*|*_5_*:*_1_*:*_8910961695_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_28457298332"}], "description": "Move the clojurescript developer dashboard from the PE Puppet Server repo into the OSS repo.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "15891", "fixedVersions": ["SERVER 5.0.0"], "id": "15891", "issueType": "Task", "key": "SERVER-1266", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move developer dashboard from PE to OSS", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Completed in PE-11332.", "created": "2017-02-01T16:10:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:48:00.000000"}], "components": [], "created": "2016-04-11T17:07:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a007cf9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynisn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_151092903_*|*_5_*:*_2_*:*_10975902957_*|*_10006_*:*_1_*:*_25423452257"}], "description": "The graphite metrics exporting currently sends too much data across the wire.  Much of it can be filtered out before sending across the wire, while still providing most of the data that users will care about.\n\nDetails can be found in PE-11332; TODO: convert this ticket to an epic and bring in the more detailed tickets from the PE project.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16415", "fixedVersions": [], "id": "16415", "issueType": "Task", "key": "SERVER-1265", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2017-06-08T18:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improvements to graphite metrics exporting", "timeSpent": "PT0S", "updated": "2017-06-08T18:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "I believe we currently have some beaker tests in pe-puppetserver, so maybe we can just move those over to the puppetserver suite.", "created": "2017-02-01T16:35:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-11T16:59:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@624f8a13"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym83z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77750024_*|*_1_*:*_1_*:*_151559329_*|*_10007_*:*_1_*:*_97546237_*|*_3_*:*_1_*:*_418246852_*|*_5_*:*_1_*:*_8471119656_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_29045753554"}], "description": "Add basic tests for graphite reporting in OSS Puppet Server.\n\nEventually it might be nice to have a full beaker acceptance test that actually uses puppet to bring up a graphite server, but for now, either stubbing out a mock server or just doing something like what we were doing in the pe-trapperkeeper-metrics repo should suffice.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "15294", "fixedVersions": ["SERVER 5.0.0"], "id": "15294", "issueType": "Task", "key": "SERVER-1264", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-03-22T12:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add basic tests for graphite reporting to OSS Puppet Server", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [743e0b|https://github.com/puppetlabs/puppetserver/commit/743e0bdc1e28b8aae8de4816002b9581022e4292].  Tests still passing so closing...", "created": "2017-03-03T12:37:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Work for this was done in conjunction with the work for SERVER-1262 so re-resolving this ticket as a duplicate of that one.", "created": "2017-06-08T12:05:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-11T16:54:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d556d12"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtwf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_151870855_*|*_10007_*:*_1_*:*_164436893_*|*_3_*:*_1_*:*_191027668_*|*_5_*:*_2_*:*_10107985324_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_27647270560"}], "description": "Add the comidi ring middleware to capture metrics about the HTTP endpoints. This needs to be added in the master service and the legacy-routes service... and probably some other places too.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "17435", "fixedVersions": ["SERVER 5.0.0"], "id": "17435", "issueType": "Task", "key": "SERVER-1263", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2017-06-08T12:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add comidi HTTP metrics to OSS puppet server", "timeSpent": "PT0S", "updated": "2017-06-28T13:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Right now we have {{/status/v1/services/pe-jruby-metrics}} and {{/status/v1/services/pe-master}}. We'll want to make these {{/status/v1/services/jruby-metrics}} and {{/status/v1/services/master}} (or something). However, we discussed also wanting to continue having {{/pe-jruby-metrics}} and {{/pe-master}} because we know there are some users currently using these endpoints (or are using the output from {{/status/v1/services}} which has all services in a map with service name as the key.\n\nIn order to do this, we may do {{(register-status \"jruby-metrics\" ... jruby-metrics-core/metric-fn)}} in OSS, and then also registering the same function under {{\"pe-jruby-metrics\"}} in PE. So, in doing this ticket, it would be good to keep that in min, and to see if we can encapsulate the logic needed for the function registered with {{register-status}} in a single function for each service, so that they can be reused between OSS and PE.", "created": "2017-02-01T17:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}in doing this ticket, it would be good to keep that in min, and to see if we can encapsulate the logic needed for the function registered with register-status in a single function for each service, so that they can be reused between OSS and PE.{quote}\n\nIt looks like the {{register-status}} calls made by the services generally just pass along a {{metrics}} parameter to their core functions that are registered with the status service and that that {{metrics}} parameter is stored to the TK service context as well.  We might just have the pe- version of the service declare a dependency on the oss- version of the service, drill into the service-context for oss version of the service to pull out that {{metrics}} parameter, and re-register the pe- version of the service with that same {{metrics}} parameter - enabling both the OSS and PE versions of the service to be using the same state and core function for metrics.", "created": "2017-03-01T15:44:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "I added a github comment on the PR for SERVER-1263 (https://github.com/puppetlabs/puppetserver/pull/1333/files#r103915793), but I'll put the idea here too: what if instead of still having a pe- version of the service, we instead register a {{pe-master}} (etc.) status in the oss-version of the service, and just have whether or not we register it dependent on the presence/absence of the pe-puppet-server-extensions artifact. That way we wouldn't need to keep around a pe-version of the service.", "created": "2017-03-02T05:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For the work done in SERVER-1263 and others, the status endpoint already has metrics exposed in it now.  Other tickets like SERVER-1261 (profiler metrics) should just incrementally fill in other kinds of metrics as we get to them.  With that in mind, I'm just going to close this one out.\n\nOn the PR for SERVER-1263, [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] talked a bit more about ideas on what we might have for PE vs. OSS service implementations after this work is done.  I'm leaning toward continuing to have a PE service for each corresponding OSS service but with a thin implementation on the PE side which just registers the same metrics object as OSS but with the \"pe-\" name for compatibility purposes.  I think we can iterate on this a bit more as we do SERVER-1721 and further tickets in this epic.", "created": "2017-03-03T12:33:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:49:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-11T16:52:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b509332"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynisf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added http-metrics for the master service to the response payload available through the HTTP status API.  This includes timing and counter related information for HTTP requests made to Puppet Server.  See summary release notes in the Server metrics epic, SERVER-1259."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_151981024_*|*_5_*:*_1_*:*_10107935358_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_28002488821"}], "description": "Add the TK-status endpoint to OSS puppet server (I believe we already had a ticket someone for the most basic version of that), and port over the HTTP/jruby/puppet profiler metrics data from the PE repo into the OSS implementation of the status endpoint.  We'll want to copy over the associated tests so that we have test coverage in both the OSS and PE repos.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "16777", "fixedVersions": ["SERVER 5.0.0"], "id": "16777", "issueType": "Task", "key": "SERVER-1262", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add HTTP server metrics to status endpoint in OSS", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [ff50c9c|https://github.com/puppetlabs/puppetserver/commit/ff50c9cd40647ace5a94cc25499b1e20c7cddc62].  Tests still passing so moving to resolved.", "created": "2017-03-14T09:35:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:49:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-11T16:49:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19b492e6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym85r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added new metrics for tracking advanced Puppet profiler metrics.  This includes metrics for functions exercised during catalog compilation, more detailed timing info around the different phases of catalog compilation, and interactions with PuppetDB.  See summary release notes in the Server metrics epic, SERVER-1259."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_67993158_*|*_1_*:*_1_*:*_152139235_*|*_10007_*:*_1_*:*_522470726_*|*_3_*:*_1_*:*_98806793_*|*_5_*:*_1_*:*_9171821746_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_28249348644"}], "description": "Move the metrics-based `puppet_profiler_service` and associated code and tests from the PE repo to the OSS repo.", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "16407", "fixedVersions": ["SERVER 5.0.0"], "id": "16407", "issueType": "Task", "key": "SERVER-1261", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move advanced puppet profiler metrics to OSS", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [86336c|https://github.com/puppetlabs/puppetserver/commit/86336c57072bc7e711a8c9c7b2a48e2f08a1f9c9].  Tests are still passing so marking this resolved.", "created": "2017-03-01T15:00:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:48:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-11T16:45:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a572e5b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1259"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym993:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added new metrics for tracking JRuby usage by Puppet Server.  See summary release notes in the Server metrics epic, SERVER-1259."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_467922033_*|*_1_*:*_1_*:*_152356330_*|*_10007_*:*_1_*:*_128936831_*|*_3_*:*_1_*:*_775543810_*|*_5_*:*_1_*:*_10271947533_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_26466104551"}], "description": "Move the `pe_jruby_metrics_service` and associated code and tests over to the OSS repo. (This ticket will probably just be for adding these metrics to OSS, we'll use PE-19484 for cleaning up PE).", "epicLinkSummary": "Add Server metrics to OSS", "estimate": "PT0S", "externalId": "16183", "fixedVersions": ["SERVER 5.0.0"], "id": "16183", "issueType": "Task", "key": "SERVER-1260", "labels": [], "originalEstimate": "PT0S", "parent": "15592", "parentSummary": "Add Server metrics to OSS", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-03-01T15:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add jruby metrics to OSS", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "The only remaining tickets are documentation tickets, closing this out.", "created": "2017-06-23T16:55:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-11T16:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76c29405"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Add Server metrics to OSS"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyna0f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server metrics functionality which was previously available in Puppet Enterprise only is now available in open-source Puppet Server as well.  Documentation for the existing PE metrics functionality is currently available at https://docs.puppet.com/pe/latest/puppet_server_metrics.html.\n\nNew types of metrics:\n\n* Puppet profiler, including:\n\n-- compiler (see: https://docs.puppet.com/pe/latest/puppet_server_metrics.html#compiler-metrics)\n-- function (see: https://docs.puppet.com/pe/latest/puppet_server_metrics.html#function-metrics)\n-- PuppetDB metrics (see: https://docs.puppet.com/pe/latest/puppet_server_metrics.html#puppetdb-metrics)\n\n* HTTP endpoint (see: https://docs.puppet.com/pe/latest/puppet_server_metrics.html#http-metrics-1)\n\n* JRuby usage (see: https://docs.puppet.com/pe/latest/puppet_server_metrics.html#jruby-metrics)\n\n* General system info (for example: memory and cpu usage and garbage collection statistics)\n\nMetrics available through various sources:\n\n* Status HTTP API (see: https://docs.puppet.com/pe/latest/status_api.html#json-endpoints)\n\n* Metrics HTTP API for querying into JMX (see: https://docs.puppet.com/pe/latest/status_api.html#get-metricsv1mbeans)\n\n* Export to Graphite (see: https://docs.puppet.com/pe/latest/puppet_server_metrics.html#getting-started-with-graphite)\n\n* \"Developer\" dashboard UI hosted by Puppet Server (see: https://docs.puppet.com/pe/latest/puppet_server_metrics.html#using-the-developer-dashboard)"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_31076135675_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_6733591021_*|*_10014_*:*_1_*:*_34424128"}], "description": "Make server metrics (jruby, HTTP, puppet profiling) accessible (via JMX, status endpoint, and developer dashboard) in OSS Puppet Server.\n\nFor more details, see individual tickets inside this epic.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15592", "fixedVersions": ["SERVER 5.0.0"], "id": "15592", "issueType": "Epic", "key": "SERVER-1259", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-06-23T16:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add Server metrics to OSS", "timeSpent": "PT0S", "updated": "2017-07-14T08:55:00.000000", "votes": "6", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] I've tried the most recent builds and still no love.", "created": "2016-04-12T10:07:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "This has also broken in [pe-acceptance-tests|https://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_pe-acceptance-tests_integration-system_pe_smoke-monolithic_2016.2.x/]. For example: https://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_pe-acceptance-tests_integration-system_pe_smoke-monolithic_2016.2.x/87/", "created": "2016-04-12T10:11:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The check that triggers this is when there is an attempt to load something with the same name in the same loader instance. (That is bad because it means potentially redefining a resource type). We had that check for a long time, but it never triggered due to another bug that is now fixed.\n\nOn master (to become puppet 4.5.0) there is also a check that prevents a type defined by a loader with higher precedence to shadow the parent (this protects things like redefining {{Integer}} and {{File}}). It is possible to see by the error message alone that this is against stable (< 4.5.0) because it says \"originally set\" twice", "created": "2016-04-12T14:35:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] It looks like the error is being triggered by a resource default in this case. The error references https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/server/config.pp#L36-L39, which conditionally sets a resource default for {{Postgresql::Server::Pg_hba_rule}} and https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/server/pg_hba_rule.pp#L3, which defines the defined type {{postgresql::server::pg_hba_rule}}.", "created": "2016-04-12T15:27:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "ok, let me see if I can reproduce that with a simpler thing", "created": "2016-04-12T18:19:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] The issue in PE-15032 also pertains to resource defaults for a defined type.", "created": "2016-04-12T18:29:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e]\nA simple apply case does not trigger this. Could it possibly be that acceptance tests run this in such a way that it ends up attempting to keep loaders - and then it loads again? If so, the first test should work, but subsequent tests fail.\nDoes it work outside the acceptance tests?\n\nAlso, ping [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] any thoughts on code paths that would trigger loading a resource type (define) that is already loaded.", "created": "2016-04-12T18:34:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The test in question is just installing puppetdb using the puppetdb module. The site.pp is pretty simple you can see it here: https://github.com/puppetlabs/puppet-server/blob/master/acceptance/suites/tests/00_smoke/puppetdb_integration.rb#L27-L39.", "created": "2016-04-12T18:38:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "It could perhaps be the same problem - if it is misinterpreting the name due to case somehow (it is looking up to see if it is already loaded, it appears not to be there because of case error, and it tries to load it again).\n\nWorth making sure that the fix mentioned in PE-15032 is in (i.e. PUP-6128).", "created": "2016-04-12T18:39:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "All registrations are made using downcased names so this must be something different. I'll try to reproduce it.", "created": "2016-04-13T01:36:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "Problem found. Can be tracked in PUP-6168.", "created": "2016-04-13T02:52:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Fix for PUP-6168 is now merged. (Thanks for the fix [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d])", "created": "2016-04-13T03:55:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e]Please validate scope change reason.", "created": "2016-04-13T11:18:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] looks good to me.", "created": "2016-04-13T15:25:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] Looks like puppet-agent 609a3b381fcdc2ff294fefbe2aeb3679ede3349a is what we're going to want. It's working its way through CI now, but seems to be hung up on puppet tests. I'll try a test run locally.", "created": "2016-04-13T16:14:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Thanks [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d]. That has gotten the acceptance test passing for me locally.", "created": "2016-04-13T17:26:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "+1 It is also passing in CI.", "created": "2016-04-13T19:45:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Now it is only failing on ubuntu1404, but passing on rhel. I tracked it down to a change in behavior of undef in dependencies. Before, something like\n\n{code}puppet apply -e \"user {'matthaus': ensure => present, notify => undef}\"{code}\nWould work, but now it causes a compile error:\n\n{code}puppet apply -e \"user {'matthaus': ensure => present, notify => undef}\"\nError: No title provided and \"\" is not a valid resource reference on node wyclef-2.local{code}\n\nWe're seeing it only on ubuntu because this pattern is used in the apt module here: https://github.com/puppetlabs/puppetlabs-apt/blob/master/manifests/setting.pp#L49-L53.\n\nI'll open a new PUP ticket to track this.", "created": "2016-04-14T11:00:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Blocked on a fix for PUP-6176.", "created": "2016-04-14T11:50:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "PUP-6176 is now merged to master.", "created": "2016-04-14T16:34:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "This has emerged from CI green. Closing before it turns red again. ", "created": "2016-04-18T15:34:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-11T09:49:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ba11f2d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5lpj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "This is already being worked by Haus and Kurt. Came up in CI."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_178190149_*|*_10007_*:*_1_*:*_66195161_*|*_3_*:*_1_*:*_559855_*|*_5_*:*_1_*:*_2682410310_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_359074906_*|*_10006_*:*_1_*:*_21450502"}], "description": "Not sure what's happening here yet, but https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_smoke-master/ is failing because it attempts to redefine an entity and PuppetDB objects: (https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_smoke-master/221/LAYOUT=centos6-64ma-32a,LDAP_TYPE=default,PLATFORM=default,label=beaker/):\n\n{code}\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet_x/apt_key/patch_openuri.rb]/ensure: defined content as '{md5}951bad007a3b5db035be069c1d1c9c09'\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Type-Name, Attempt to redefine entity 'type/postgresql::server::pg_hba_rule' originally set at  Originally set at file:/etc/puppetlabs/code/environments/production/modules/postgresql/manifests/server/pg_hba_rule.pp?line=3&pos=1. at /etc/puppetlabs/code/environments/production/modules/postgresql/manifests/server/config.pp:36:7 on node xux3459a999sr8l.delivery.puppetlabs.net\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15890", "fixedVersions": ["SERVER 2.4.0"], "id": "15890", "issueType": "Bug", "key": "SERVER-1258", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Fixed", "resolutionDate": "2016-04-18T15:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Master failing acceptance in puppetdb_integration.rb", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This was merged. Not sure if there's anything else needed, but thought I'd assign it to you, Garrett for review/closing just incase.", "created": "2016-04-21T11:46:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Thanks [~accountid:557058:104b5720-714d-4539-b455-df472251ec89]. I reviewed the PR before it was merged, so I'll close the ticket.", "created": "2016-04-21T12:08:00.000000"}], "components": ["DOCS"], "created": "2016-04-07T18:11:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@708da069"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5kev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_493404398_*|*_10007_*:*_1_*:*_66899162_*|*_3_*:*_1_*:*_2633743_*|*_10009_*:*_1_*:*_1522889_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_623404471"}], "description": "https://docs.puppet.com/puppetserver/latest/puppetserver_vs_passenger.html lists some differences between puppetserver and puppet master running via passenger. In light of PUP-6139, we should probably add something to that about how puppetserver can be chattier than puppet via passenger because we squash notice and info logs into the info level of logback.\n\nProbably also worth linking to the logback docs to indicate how to decrease the loglevel.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16776", "fixedVersions": ["SERVER 2.4.0"], "id": "16776", "issueType": "Task", "key": "SERVER-1257", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-04-21T12:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add section to docs to indicate puppet-server may be chattier in logs than passenger", "timeSpent": "PT0S", "updated": "2016-05-16T18:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We're gonna wait on this", "created": "2016-04-06T17:43:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] When the time comes, we can arm wrestle about who writes the test.", "created": "2016-04-08T11:41:00.000000"}], "components": [], "created": "2016-04-06T15:13:00.000000", "creator": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fb9efb3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynox3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2384984_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_58581684856_*|*_10006_*:*_1_*:*_6602633"}], "description": "The fix for TK-124 has been merged and we now need to get the newer version tk-jetty9 downstreamed into puppet-server and friends.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] also mentioned that an acceptance test would be ideal for this change. Per the discussion during Sprint Planning that work should be tracked in this ticket, [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15646", "fixedVersions": [], "id": "15646", "issueType": "Task", "key": "SERVER-1256", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "resolution": "Won't Do", "resolutionDate": "2018-02-13T17:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Promote fix for TK-124 through puppet-server and into PE", "timeSpent": "PT0S", "updated": "2018-02-13T17:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-04-06T10:50:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71365ded"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5hun:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Work was anticipated but not ticketed until after sprint start."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_40216_*|*_3_*:*_2_*:*_4839397_*|*_6_*:*_2_*:*_16950"}], "description": "Ticket to track time spent on CI Goalie this sprint.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16775", "fixedVersions": [], "id": "16775", "issueType": "Task", "key": "SERVER-1255", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Done", "resolutionDate": "2016-04-06T12:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CI Goalie work for April 6 2016 sprint", "timeSpent": "PT0S", "updated": "2016-04-20T15:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Waiting for Aliza and company to review.", "created": "2016-05-13T15:12:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-06T10:42:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13b69122"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn9pr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_486556_*|*_3_*:*_2_*:*_266058668_*|*_10009_*:*_2_*:*_3695623787_*|*_5_*:*_1_*:*_10625138348_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_433754824_*|*_10006_*:*_1_*:*_11915003"}], "description": "I wrote up a tutorial on advanced memory debugging in Puppet Server on confluence a while back, and have had several requests to publish it on the public blog.  Working with Aliza, Eric S., Ryan C., et al on getting it staged and figuring out the timing.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16405", "fixedVersions": [], "id": "16405", "issueType": "Task", "key": "SERVER-1254", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-05-27T11:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "blog post on advanced memory debugging", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "The only remaining tickets are documentation tickets, closing this out.", "created": "2017-06-23T16:55:00.000000"}], "components": ["Puppet Server"], "created": "2016-04-05T19:00:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@374d7254"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Http client metrics"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyna0n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The master service in the status endpoint at debug level (/status/v1/services/master?level=debug) now includes an `http-client-metrics` key. The value of this is an array of http client metrics showing data about http requests that puppet server makes to other services - e.g. puppetdb and classifier. The output of the status endpoint with http client metrics looks like:\n\n\"http-client-metrics\": [\n  {\n    \"aggregate\": 407,\n    \"count\": 1,\n    \"mean\": 407,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"facts\",\n      \"find\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.facts.find.full-response\"\n  },\n  {\n    \"aggregate\": 66,\n    \"count\": 1,\n    \"mean\": 66,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"command\",\n      \"replace_facts\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.command.replace_facts.full-response\"\n  },\n  {\n    \"aggregate\": 60,\n    \"count\": 2,\n    \"mean\": 30,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"resource\",\n      \"search\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.resource.search.full-response\"\n  },\n  {\n    \"aggregate\": 53,\n    \"count\": 1,\n    \"mean\": 53,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"query\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.query.full-response\"\n  },\n  {\n    \"aggregate\": 22,\n    \"count\": 1,\n    \"mean\": 22,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"command\",\n      \"store_report\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.command.store_report.full-response\"\n  },\n  {\n    \"aggregate\": 16,\n    \"count\": 1,\n    \"mean\": 16,\n    \"metric-id\": [\n      \"puppetdb\",\n      \"command\",\n      \"replace_catalog\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppetdb.command.replace_catalog.full-response\"\n  },\n  {\n    \"aggregate\": 2,\n    \"count\": 1,\n    \"mean\": 2,\n    \"metric-id\": [\n      \"puppet\",\n      \"report\",\n      \"http\"\n    ],\n    \"metric-name\": \"puppetlabs.localhost.http-client.experimental.with-metric-id.puppet.report.http.full-response\"\n  }\n],"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_31586150026_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_6733577886_*|*_10014_*:*_1_*:*_34413822"}], "description": "This epic captures work required to:\n\n1. Add automatic tracking of http request metrics to our http client library\n2. Provide an integration point in Puppet's Ruby HTTP client API to allow us to provide metric ids for certain requests\n3. Surface these metrics in the PE Puppet Server status endpoint\n4. Surface these metrics in the PE developer dashboard\n5. Add code to the NC and PuppetDB termini to use the new API with metric ids", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17005", "fixedVersions": ["SERVER 5.0.0"], "id": "17005", "issueType": "Epic", "key": "SERVER-1739", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-06-23T16:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Http Client Metrics in Puppet Server", "timeSpent": "PT0S", "updated": "2017-07-14T08:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Filed PR 1015 to add maps to {{allow}} and {{deny}}.", "created": "2016-04-13T14:45:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "This can be pulled through when it's done. No need for QA to review.", "created": "2016-04-20T12:15:00.000000"}], "components": ["DOCS"], "created": "2016-04-05T13:37:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61e2e00f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynf4n:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_682251644_*|*_10007_*:*_1_*:*_1284583812_*|*_10009_*:*_1_*:*_98413308_*|*_5_*:*_1_*:*_1734420050_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_12970139"}], "description": "This ticket covers the work of (sigh) copying relevant new docs for TK-293 over to the corresponding docs on auth.conf for this project.\n\nThe new docs in question can be seen in the diff for 293's PR: https://github.com/puppetlabs/trapperkeeper-authorization/pull/34/files", "epicLinkSummary": "minor CA / auth / SSL improvements", "estimate": "PT0S", "externalId": "15292", "fixedVersions": ["SERVER 2.4.0"], "id": "15292", "issueType": "Task", "key": "SERVER-1252", "labels": [], "originalEstimate": "PT0S", "parent": "15287", "parentSummary": "minor CA / auth / SSL improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Done", "resolutionDate": "2016-04-29T14:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document new tk-auth feature", "timeSpent": "PT0S", "updated": "2016-05-19T16:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] please provide release notes for this issue, if applicable.", "created": "2017-05-15T12:47:00.000000"}], "components": [], "created": "2016-04-04T16:07:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18f3dc2a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1120"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym2dj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Deprecation"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The HTTP resource_type and resource_types endpoints and the resource_type puppet command line face have been removed.  The environment_classes HTTP endpoint in Puppet Server replaces a subset of the resource_type functionality, including name and parameter metadata for classes."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_440277387_*|*_1_*:*_1_*:*_156326244_*|*_10007_*:*_1_*:*_515529912_*|*_3_*:*_1_*:*_691613146_*|*_5_*:*_1_*:*_5006312552_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_32059829133"}], "description": "This probably needs to happen on a major version boundary, so, probably, Puppet 5 / Puppet Server 3.\n\nThis ticket just covers removing the resource_types endpoint it from the ring route tree and fixing associated tests.", "epicLinkSummary": "Deprecate/remove resource_types endpoint", "estimate": "PT0S", "externalId": "14711", "fixedVersions": ["SERVER 5.0.0"], "id": "14711", "issueType": "Task", "key": "SERVER-1251", "labels": [], "originalEstimate": "PT0S", "parent": "15324", "parentSummary": "Deprecate/remove resource_types endpoint", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-05-01T14:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "remove resource_types endpoint from route tree", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:513396e5-6d1e-4ed4-acee-3752a305e2af] what version of Puppet Server are you running?", "created": "2016-04-04T15:09:00.000000"}, {"author": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "body": "> puppetserver --version\npuppetserver version: 2.3.1\n\n> puppet --version\n4.4.1\n\n\n", "created": "2016-04-04T15:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks.  Can you elaborate a bit on what you mean by `puppet pe gem relies on the behavior that no header is generated`?  Are you referring to the Puppet package provider?\n\nDo you have any thoughts on what would be a better UX for this?  Support a JAVA_ARGS environment variable?  Have an entry in {{/etc/sysconfig/puppetserver}} that was something like {{CLI_JAVA_ARGS=\"foo\"}}?", "created": "2016-04-04T15:23:00.000000"}, {"author": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "body": "The package provider [puppetserver_gem|https://github.com/puppetlabs/puppetlabs-puppetserver_gem] parses the output of puppetserver gem and expects that there is no header line _*** LOCAL GEMS ***_.\n\nI have no better idea then support something like _CLI_JAVA_ARGS=\"foo\"_ in _/etc/sysconfig/puppetserver_. It would solve the problem and could be useful in other cases, too.", "created": "2016-04-05T11:24:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:70121:513396e5-6d1e-4ed4-acee-3752a305e2af] It sounds like puppetserver_gem not tolerating a header line {{*** LOCAL GEMS ***}} is a bug - I've filed MODULES-3237 for this. We definitely do also need to figure out the right thing to do with JAVA_ARGS for puppetserver subcommands too, but my hope is that maybe your issue can be resolved by fixing the module.", "created": "2016-04-06T11:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We implemented support for a {{JAVA_ARGS_CLI}} setting in the most recent Puppet Server release, 2.7.2.  See SERVER-1644.  Closing this issue out as I believe that would address this issue.", "created": "2016-12-13T14:21:00.000000"}], "components": [], "created": "2016-04-04T13:33:00.000000", "creator": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5be92b8f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-790"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5gcf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_165350249_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_21700472634"}], "description": "I can understand, that JAVA_ARGS can't be shared with all subcommands, because the memory consumption would be unreasonable high. But at the moment there is no possibility to configure  _-Djava.io.tmpdir=/puppet/tmp_ for all java applications. Without it for example  puppetserver gem behaves slightly different: with noexec tmp dir, the header _*** LOCAL GEMS ***_ is always created, otherwise only if called from the console (puppet pe gem relies on the behavior that no header is generated).", "epicLinkSummary": "Improve handling of environment variables", "estimate": "PT0S", "externalId": "15645", "fixedVersions": [], "id": "15645", "issueType": "Bug", "key": "SERVER-1250", "labels": [], "originalEstimate": "PT0S", "parent": "17620", "parentSummary": "Improve handling of environment variables", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:513396e5-6d1e-4ed4-acee-3752a305e2af", "resolution": "Fixed", "resolutionDate": "2016-12-13T14:23:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver subcommands gem, ruby and irb do not use JAVA_ARGS", "timeSpent": "PT0S", "updated": "2016-12-13T14:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I think we discussed doing a puppetserver upgrade test, with a \"legacy\" version of puppetserver being pre- bootstrap.cfg modifications, and the upgrade to version being 2.4.0+.\n\nWe should test external CA around this.", "created": "2016-05-18T12:29:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a]  It would be great if you made a puppetserver upgrade test to address this... or anyother kind of test as you see fit.", "created": "2016-05-25T17:59:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "I've manually verified this is working. On a 2.3.2 installation, I added a bogus service to bootstrap.cfg and the server failed to start. After upgrading to 2.4.0, the server started and, in the process of upgrading, the modified bootstrap.cfg file was untouched. 2.4.0 also logged a message to /var/log/puppetlabs/puppetserver/puppetserver.log:\n{code}\n2016-06-02 15:06:24,031 WARN  [main] [p.t.bootstrap] Unable to load service 'puppetlabs.services.jennys-number-service.jennys-number-service/jennys-number-service' from /e\n{code}\nNow to put that in a test.", "created": "2016-06-02T16:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] probably worth syncing up with [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] on this before writing the test.  I think that the expected behavior is that the {{bootstrap.cfg}} file ends up in a different location after the upgrade.", "created": "2016-06-02T21:45:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] (y) Affirmative. I also just started reading SERVER-1213, which has acceptance criteria and other useful information. I see that there are multiple points I need to check.", "created": "2016-06-03T00:32:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "I validated that the initial upgrade splits the files. We are not in a position to test the upgrade post-split because we need a second released version to do that portion of the test. We will return to this issue when that occurs.", "created": "2016-06-08T14:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] I thought we were saying that we could manually test the upgrade post-split today.  I think that should be doable, and is worthwhile, because if it doesn't work and we don't find out until we do the next release, then it will be 2 more releases after that before we can put this to bed.\n\nAlso, do we have a plan for how to track that we want to add an automated test for this once 2.5.0 ships?", "created": "2016-06-08T18:06:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I misunderstood. Just to re-iterate: post-split\\[1\\], no changes to user-modifiable config files (in {{/etc}}) should cause a server upgrade to fail.\n\n\\[1\\] For future readers of this ticket, _post-split_ means, \"after bootstrap.cfg is divided into to 2 files in {{/opt/.../puppetserver-bootstrap.cfg}}, which should not be touched by users, and {{/etc/.../puppetserver/services.d/...*cfg}}, which might be touched by users.\"", "created": "2016-06-09T10:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yeah, the manual test would be something like:\n\n* Install a nightly package of puppet server from a few days ago\n* modify ca.cfg , e.g. maybe to disable the CA like one would do on a compile-only master\n* Upgrade to a more recent nightly package\n\nPuppet Server should start successfully and the CA config change should be left intact.", "created": "2016-06-09T10:47:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31][~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] Would you guys look at this before you are off?", "created": "2016-08-30T11:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] and I discussed this, there isn't enough time to do this before the reorg.", "created": "2016-09-01T13:47:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]At the meeting today, [~accountid:557058:1d244b27-1afc-481c-a463-e4c0cefad02f] said previous QA owners would continue to assist the maintenance groups.", "created": "2016-09-01T14:13:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] I didn't take \"assist the maintenance groups\" to mean \"write new tests.\" I'm happy to assist the maintenance of existing tests and \"consult\" on the creation of new ones. But it is possible I misunderstood.", "created": "2016-09-02T01:47:00.000000"}], "components": [], "created": "2016-03-31T11:48:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@673f5824"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1213"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8p5r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Joe will be adding some notes on this to the docs in the repo; we created SERVER-1470 to capture the write-up."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "7.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1120763292_*|*_3_*:*_2_*:*_1054096146_*|*_4_*:*_1_*:*_89438789_*|*_5_*:*_2_*:*_69582429_*|*_10006_*:*_2_*:*_19884002326"}], "epicLinkSummary": "Improve UX for upgrades when users have modified bootstrap.cfg", "estimate": "PT0S", "externalId": "16180", "fixedVersions": [], "id": "16180", "issueType": "Task", "key": "SERVER-1248", "labels": [], "originalEstimate": "PT0S", "parent": "15641", "parentSummary": "Improve UX for upgrades when users have modified bootstrap.cfg", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2016-12-13T14:27:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Test bootstrap.cfg modifications", "timeSpent": "PT0S", "updated": "2016-12-13T14:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091][~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0][~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] We were waiting on a # of things to happen for this one to move forward, refresh my memory?", "created": "2016-05-13T15:09:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] We're waiting to merge down master -> stable, which I'm hoping to get done this afternoon (want to get a few more open PRs on master merged first).", "created": "2016-05-13T15:13:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Just waiting to make sure CI is green, otherwise this is unblocked because we merged yesterday.", "created": "2016-05-17T11:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Moved this back to 'doing', as there is a bug on systemd.  On the Jenkins runs [here|https://jenkins.puppetlabs.com/job/platform_puppetserver_integration-system_no-conditional_smoke-master/78/], we got failures on rhel7 and ubuntu 1604.\n\nThey look like this:\n\n{code}\nMay 19 13:04:13 s4bkxxvgs9oggf5 java[2703]: Exception in thread \"main\" java.lang.IllegalArgumentException: Specified bootstrap config file does not exist: '${INSTALL_DIR}/config/services.d/'\nMay 19 13:04:13 s4bkxxvgs9oggf5 java[2703]: at puppetlabs.trapperkeeper.bootstrap$eval14658$wrap_uri_error__14663$fn__14664.invoke(bootstrap.clj:131)\nMay 19 13:04:13 s4bkxxvgs9oggf5 java[2703]: at puppetlabs.trapperkeeper.bootstrap$eval14658$wrap_uri_error__14663.invoke(bootstrap.clj:127)\nMay 19 13:04:13 s4bkxxvgs9oggf5 java[2703]: at puppetlabs.trapperkeeper.bootstrap$eval14681$read_config__14686$fn__14687.invoke(bootstrap.clj:147)\nMay 19 13:04:13 s4bkxxvgs9oggf5 java[2703]: at puppetlabs.trapperkeeper.bootstrap$eval14681$read_config__14686.invoke(bootstrap.clj:134)\n{code}", "created": "2016-05-19T16:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The \"defaults\" files after the recent ezbake / services.d changes have a line like this:\n\n{code}\n# Bootstrap path\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/services.d/,${INSTALL_DIR}/config/services.d/\"\n{code}\n\nNote that the first entry in the bootstrap config path is not attempting to use interpolation, but the second one is.  [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] says that on systemd, there is no interpolation allowed in the defaults files.  This should be a relatively straightforward change, to just switch the INSTALL_DIR bit to do the same thing that the first entry in the path is doing, so that the interpolation isn't necessary.\n", "created": "2016-05-19T16:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "put up a PR that should hopefully fix this, but haven't had time to test it yet.", "created": "2016-05-19T17:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Working on testing this now.", "created": "2016-05-20T11:40:00.000000"}], "components": [], "created": "2016-03-30T10:57:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5052cab1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1213"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn9q7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Joe will be adding some notes on this to the docs in the repo; we created SERVER-1470 to capture the write-up."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_259806532_*|*_1_*:*_1_*:*_827746_*|*_10007_*:*_3_*:*_1030481116_*|*_3_*:*_2_*:*_432470719_*|*_5_*:*_1_*:*_6994881787_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_6191826_*|*_10004_*:*_1_*:*_435532768_*|*_10006_*:*_1_*:*_2506836473"}], "description": "As a result of TK-347 and EZ-72, we will have the ability to separate out Puppet Server's bootstrap configuration into two files.  One will ideally go somewhere under {{/opt}}, and will have all of the core services that we're confident that users won't need to change.  The second would be a {{ca.cfg}} file that goes under a new {{services.d}} directory in the {{/etc}} directory, and will just contain the default configuration for the ca services.\n\nWork included in this ticket:\n1. Modify our packaging to put the new \"main\" bootstrap.cfg file in the appropriate place under {{/opt}}\n2. Modify our packaging to put the new \"ca.cfg\" file in the appropriate place under {{services.d}}.\n3. Modify our ezbake config to take advantage of whatever we need to from EZ-72, in order to set up our service scripts to use the correct argument for {{bootstrap-config}}.\n\nIt is possible that 1 and/or 2 above may require some additional changes in EZBake?  I'll create a separate ticket for that.", "epicLinkSummary": "Improve UX for upgrades when users have modified bootstrap.cfg", "estimate": "PT0S", "externalId": "14710", "fixedVersions": ["SERVER 2.5.0"], "id": "14710", "issueType": "New Feature", "key": "SERVER-1247", "labels": [], "originalEstimate": "PT0S", "parent": "15641", "parentSummary": "Improve UX for upgrades when users have modified bootstrap.cfg", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-05-23T12:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packaging changes to support bootstrap.cfg improvements in TK and EZBake", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:6350a13b-b0e1-48a0-a3ca-4b9124d8aed7", "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Moving to the puppetserver project since this is specific to JRuby and facter", "created": "2016-07-07T00:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Assuming that you haven't customized the value for the default {{jruby-puppet.ruby-load-path}} setting that Puppet Server's {{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}} file uses, this error could be displayed if there were no file at {{/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.jar}}.  This \"facter.jar\" file should be installed via the {{puppet-agent}} package.   If this weren't being installed by default, this would seem like a problem in how the installed {{puppet-agent}} system package were built.   What version of the {{puppet-agent}} package did you have installed?\n\nAlso, you mentioned in the environment field that this issue affects RHEL 5.  For core Puppet 4.4 compatibility, you would need to have a 2.x version of Puppet Server installed.  To my knowledge, though, EL 5 packages aren't being built for Puppet Server 2.x - only EL 6 and 7.  What version of the {{puppetserver}} package are you trying to use?", "created": "2016-07-07T13:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user can you provide any info in response to the questions that [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] raised above?", "created": "2016-07-13T10:08:00.000000"}, {"author": "623e7720b75ca800705811d5", "body": "I'm encountering the same (I think) issue as the OP.\n\nI'm running CentOS 7 and have installed both\npuppetserver and puppet-agent.\n\nfacter.jar does exist in the/opt/puppetlabs/puppet/lib/ruby/vendor_ruby path.\n\nPlease note that I only just started to fiddle with puppet 4.  I played\nwith Puppet 2 and 3, but didn't get anywhere (no time).  So I might\nhave missed something along the way.\n", "created": "2016-08-12T02:22:00.000000"}, {"author": "623e7720b75ca800705811d5", "body": "think I unhorked it..  basically changed the JAVA_ARGS\nline in /etc/sysconfig/puppetserver to\n\n\"-Xms1g -Xmx1g\"\n\nSo I'm guessing this is a running-out-of-memory issue?\n", "created": "2016-08-12T02:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7720b75ca800705811d5] I would have guessed that an OOM issue would have resulted in a different error message - perhaps in journalctl output?  But [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] is more familiar with the issues/symptoms around native facter than I am, so perhaps he can weigh in next week (he's on PTO at the moment).", "created": "2016-08-12T09:53:00.000000"}, {"author": "5a2182e0c2a788033358b928", "body": "Hi,\n\nI just got the same issue and followed [GitHub csschwe|https://gist.github.com/csschwe/cbdd36e27ee708aba441#gistcomment-1336281] solution/fix/workaround:\n{quote}\nFinal result /tmp was mounted noexec so had to\n1- create /var/lib/puppet/tmp and change ownership to puppet\n2- add to /etc/sysconfig/puppetserver javaargs -Djava.io.tmpdir=/var/lib/puppet/tmp\n{quote}\n\nand it works. My /tmp is also noexec.", "created": "2017-03-14T08:09:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is a frequent problem where the most helpful discussion is in SERVER-1477 and SERVER-1631, closing this as a dupe of those.\n\n\u00a0", "created": "2018-02-16T11:13:00.000000"}], "components": [], "created": "2016-03-28T14:38:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:6350a13b-b0e1-48a0-a3ca-4b9124d8aed7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c671994"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5c8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9228555811_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_50378730320"}], "description": "Hi, \n\nI tried to install puppet open source 4.4 but couldn't start the puppetserver on my server. Here's the exception message from the log file:\n{quote}\n*java.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.*\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6667$prime_pool_BANG___6668$fn__6672.invoke(jruby_puppet_agents.clj:60) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6667$prime_pool_BANG___6668.invoke(jruby_puppet_agents.clj:38) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6773$send_prime_pool_BANG___6774$fn__6775$fn__6777.invoke(jruby_puppet_agents.clj:133) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:254) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:238) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5401$service_fnk__4090__auto___positional$reify__5406.shutdown_on_error(internal.clj:293) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5337$fn__5349$G__5323__5357.invoke(internal.clj:262) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5337$fn__5349$G__5322__5366.invoke(internal.clj:262) [na:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:160) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyTo(AFn.java:144) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.applyTo(RestFn.java:137) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:408) [puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6645$send_agent__6646$fn__6647$agent_fn__6648.invoke(jruby_puppet_agents.clj:32) [na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132) [puppet-server-release.jar:na]\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114) [puppet-server-release.jar:na]\n\tat clojure.lang.Agent$Action.run(Agent.java:163) [puppet-server-release.jar:na]\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157) [na:1.7.0]\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627) [na:1.7.0]\n\tat java.lang.Thread.run(Thread.java:798) [na:1.7.0]\n*Caused by: org.jruby.embed.EvalFailedException: (LoadError) libfacter was not built with JRuby support.*\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:132) ~[puppet-server-release.jar:na]\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1341) ~[puppet-server-release.jar:na]\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1334) ~[puppet-server-release.jar:na]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) ~[na:1.7.0]\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56) ~[na:1.7.0]\n\tat java.lang.reflect.Method.invoke(Method.java:620) ~[na:2.6 (07-01-2015)]\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) ~[puppet-server-release.jar:na]\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) ~[puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$create_scripting_container.invoke(jruby_puppet_internal.clj:89) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval6427$create_pool_instance_BANG___6428$fn__6429.invoke(jruby_puppet_internal.clj:128) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval6427$create_pool_instance_BANG___6428.invoke(jruby_puppet_internal.clj:113) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6667$prime_pool_BANG___6668$fn__6672.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n\t... 24 common frames omitted\nCaused by: org.jruby.exceptions.RaiseException: (LoadError) libfacter was not built with JRuby support.\n\tat RUBY.Facter(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.rb:7) ~[na:na]\n\tat RUBY.(root)(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.(root)(/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.(root)(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:10) ~[na:na]\n\tat RUBY.(root)(/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.require(/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) ~[na:na]\n\tat RUBY.(root)(file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.(root)(/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$create_scripting_container.invoke(jruby_puppet_internal.clj:89) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval6427$create_pool_instance_BANG___6428$fn__6429.invoke(jruby_puppet_internal.clj:128) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval6427$create_pool_instance_BANG___6428.invoke(jruby_puppet_internal.clj:113) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6667$prime_pool_BANG___6668$fn__6672.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6667$prime_pool_BANG___6668.invoke(jruby_puppet_agents.clj:38) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6773$send_prime_pool_BANG___6774$fn__6775$fn__6777.invoke(jruby_puppet_agents.clj:133) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:254) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:238) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5401$service_fnk__4090__auto___positional$reify__5406.shutdown_on_error(internal.clj:293) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5337$fn__5349$G__5323__5357.invoke(internal.clj:262) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5337$fn__5349$G__5322__5366.invoke(internal.clj:262) [na:na]\n\tat clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6645$send_agent__6646$fn__6647$agent_fn__6648.invoke(jruby_puppet_agents.clj:32) [na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913) [puppet-server-release.jar:na]\n{quote}\nThe one followed:\n{quote}\nError during service init!!!\njava.lang.IllegalStateException: Unable to borrow JRuby instance from pool\n\t[...similar traces...]\n{quote}\n\nDoes this have anything to do with Factor? Any help is appreciated! Thank you.", "environment": "REHL 5\nRuby 1.8.7", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16177", "fixedVersions": [], "id": "16177", "issueType": "Bug", "key": "SERVER-1411", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:6350a13b-b0e1-48a0-a3ca-4b9124d8aed7", "resolution": "Duplicate", "resolutionDate": "2018-02-16T11:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "fail to start puppetserver ", "timeSpent": "PT0S", "updated": "2018-02-16T11:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Former user I'm assuming you mean certname, and not hostname. If that assumption is wrong, please do correct me.\n\nhttps://docs.puppetlabs.com/puppet/latest/reference/configuration.html#certname has a description of suggested values for certname.\n\nFor Puppet related questions, I would recommend joining and posting to the puppet-users google group in the future (https://groups.google.com/forum/#!forum/puppet-users). ", "created": "2016-03-25T10:49:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Here's the canonical reference about host names and their relationship to certificate subjects:\n\nhttps://docs.puppetlabs.com/background/ssl/cert_anatomy.html#the-subject-dn-cn-certname-etc\n\n", "created": "2016-03-30T11:38:00.000000"}], "components": ["Puppet Server"], "created": "2016-03-25T09:12:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:59bc4f6a-9990-4541-b849-271c33e4fab3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e88abd0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5bgf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_440776436_*|*_6_*:*_1_*:*_0"}], "description": "1. Does Puppet allow server hostname can be combined both upper and lower case?\nEx. hostname = MyServerName1.MyDomain.MyCompany.Com\n\nor the hostname must be  myservername1.mydomain.mycompany.com\n\n2. Does puppet allow '_' , '--' for hostname (both Linux and Windows servers)?\nEx. MyServer-Name1.MyDomain.MyCompany.Com\nor MyServer_Name1.MyDomain.MyCompany.Com\n\n\n", "environment": "Windows 2012R2 and RHEL 5,6,7", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16173", "fixedVersions": [], "id": "16173", "issueType": "Bug", "key": "SERVER-1246", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:59bc4f6a-9990-4541-b849-271c33e4fab3", "resolution": "Done", "resolutionDate": "2016-03-30T11:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Can the hostname be upper and lower case?", "timeSpent": "PT0S", "updated": "2016-03-31T10:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] In terms of risk of downtime or data loss, these seem like low-risk changes. Other than possibly some manual validation, I don't see a need for additional acceptance testing. Do you agree?", "created": "2016-04-19T15:00:00.000000"}], "components": ["Puppet Server"], "created": "2016-03-24T17:39:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b2e492d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5i87:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_264376413_*|*_1_*:*_1_*:*_495019400_*|*_10007_*:*_2_*:*_246079983_*|*_3_*:*_1_*:*_348266302_*|*_5_*:*_1_*:*_2528169589_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_157667277_*|*_10006_*:*_1_*:*_795292053"}], "description": "h2. Summary\n\nTK-293 adds the ability to define auth rules based on certificate extensions. The\ntk-auth service accepts a mapping of OID -> shortnames that it uses to read\nshortnames from auth rules. This should be taken advantage of in PE to both\nenable use of puppet's shortnames as well as custom shortnames defined by users\nin custom_trusted_oid_mapping.\n\nh2. In Scope\n\n\n* Getting hardcoded list of puppet shortnames (already in puppet server) in a\n  form consumable by tk-auth and combined with custom_trusted_oid_mapping\n* Passing combined mapping to tk-auth's service\n\nh2. Out of Scope\n\n* Reading custom_trusted_oid_mapping during init phase (this is actually happening in SERVER-1150)\n* changes to tk-auth\n* changes to ssl-utils", "epicLinkSummary": "minor CA / auth / SSL improvements", "estimate": "PT0S", "externalId": "15889", "fixedVersions": ["SERVER 2.4.0"], "id": "15889", "issueType": "New Feature", "key": "SERVER-1245", "labels": [], "originalEstimate": "PT0S", "parent": "15287", "parentSummary": "minor CA / auth / SSL improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-04-20T10:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pass puppet oids and custom_trusted_oid_mapping to tk-auth", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "If this is still true, we should probably fix it.", "created": "2020-01-29T09:16:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Confirmed that this still causes startup to hang. Seems edge-casey, but probably still worth fixing.\n\nThe config initialization code has moved to [jruby-utils|https://github.com/puppetlabs/jruby-utils/blob/7b53c3c6a0c61635362402313bcec809abf5a856/src/clj/puppetlabs/services/jruby_pool_manager/jruby_core.clj#L160-L177]. The comment on the method claims that the config will be validated, but I can only find [schema validation|https://github.com/puppetlabs/jruby-utils/blob/7b53c3c6a0c61635362402313bcec809abf5a856/src/clj/puppetlabs/services/jruby_pool_manager/jruby_schemas.clj#L82], and no other error handling. I think it would be better to handle this separately -- even though we could probably put in a tighter schema restriction than just {{schema/Int}} -- since schema errors are so hard to read.", "created": "2021-02-28T17:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Draft PR at https://github.com/puppetlabs/jruby-utils/pull/94. It works, but still needs testing, and it's possible we'll want the logic to live elsewhere.", "created": "2021-03-01T09:24:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Closing ticket due to age/priority\n\nWe can re-consider & re-open if there is enough interest from the community", "created": "2021-12-22T11:25:00.000000"}], "components": [], "created": "2016-03-23T17:54:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22236881"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5aiv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_581492979_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_180838790151"}], "description": "If the {{jruby-puppet.max-active-instances}} setting in puppetserver.conf is set to a value less than or equal to zero, Puppet Server fails to start with a confusing error message in the log file:\n\nIn Puppet Server 2.2.1:\n\n{noformat}\n2016-03-23 16:40:25,345 ERROR [main] [p.t.internal] Error during service init!!!\njava.lang.IllegalArgumentException: null\n\tat java.util.concurrent.LinkedBlockingDeque.<init>(LinkedBlockingDeque.java:181) ~[na:1.8.0_71]\n\tat com.puppetlabs.puppetserver.pool.JRubyPool.<init>(JRubyPool.java:26) ~[puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$instantiate_free_pool.invoke(jruby_puppet_internal.clj:60) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval24401$create_pool_from_config__24402$fn__24406.invoke(jruby_puppet_internal.clj:166) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval24401$create_pool_from_config__24402.invoke(jruby_puppet_internal.clj:162) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval25234$create_pool_context__25235$fn__25236.invoke(jruby_puppet_core.clj:223) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval25234$create_pool_context__25235.invoke(jruby_puppet_core.clj:212) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__25604$service_fnk__4363__auto___positional$reify__25615.init(jruby_puppet_service.clj:39) ~[na:na]\n{noformat}\n\nIn Puppet Server 2.3.0, it's even more confusing to identify the problem because Puppet Server hangs - with the webserver never coming to ready - during initialization.  I believe that's because with the changes we made to the JRubyPool class, we're no longer throwing an exception for a value less than 1:\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-2.3.1/src/java/com/puppetlabs/puppetserver/pool/JRubyPool.java#L97\n\n--\n\nIt would seem to be better to throw a failure with a more meaningful error message which ties back to the max-active-instances config setting - maybe somewhere around where the jruby-puppet service sources its config:\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-2.3.1/src/clj/puppetlabs/services/jruby/jruby_puppet_core.clj#L194\n\nJust as a fail-safe / defensive programming, throwing an exception from the JRubyPool class constructor for a size less than 1 seems worthwhile.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "14984", "fixedVersions": [], "id": "14984", "issueType": "Bug", "key": "SERVER-1243", "labels": ["final_triage", "low-hanging-fruit", "usability"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2021-12-22T11:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Setting jruby-puppet.max-active-instances to <= 0 causes confusing error", "timeSpent": "PT0S", "updated": "2021-12-22T11:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "CI Goalie work done this sprint", "created": "2016-03-23T12:23:00.000000"}], "components": [], "created": "2016-03-23T12:23:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6fe41193"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz59yv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CI Goalie work that was necessary this sprint"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6297_*|*_3_*:*_1_*:*_28122_*|*_6_*:*_1_*:*_0"}], "description": "Ticket to track time spent on CI Goalie this sprint.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14708", "fixedVersions": [], "id": "14708", "issueType": "Task", "key": "SERVER-1242", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-03-23T12:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CI Goalie work for March 23 2016 sprint", "timeSpent": "PT0S", "updated": "2016-03-31T10:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "Is this out of scope for Couch? [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584]", "created": "2016-03-25T11:22:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] You asked about additional requirements in PE-14569", "created": "2016-03-25T16:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] I believe the work described in EZ-69 would address what you're getting at.", "created": "2016-03-28T13:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:96a443bf-a3ab-426b-9442-ce50c9977428] I have been roughly shooting for having someone start working on these tickets in this sprint or the next one (4/6).  I'm out of the loop on Couch dates so not quite sure how that maps.", "created": "2016-03-28T13:53:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] that maps well", "created": "2016-03-28T17:01:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "This is officially boarded for couch with the caveat that it has a 50/50 chance of getting in", "created": "2016-04-11T10:15:00.000000"}, {"author": "557058:d306a882-0fc6-4417-92fa-bd8a5dac33aa", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Hardening for Couch is 05/18/2016 \nhttps://confluence.puppetlabs.com/display/PROD/PE+2016.2+-+Codename+Couch", "created": "2016-04-12T10:45:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31][~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] Do I remember correctly that there was going to be an acceptance ticket for this whole epic?", "created": "2016-07-05T14:37:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I don't recall, but I can see a need for an acceptance ticket, so I'll create one.", "created": "2016-07-06T11:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] - ping!  Just a heads up, highly likely we'll start pulling in some tickets from this epic in the next week or so.  There are several that can be worked w/o running into our dependency on the RE bits, but, the time is drawing near :)", "created": "2016-07-14T18:36:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] cool, thanks! we've done the exploratory work for the RE bits, so lemme know when you're ready for us to make that happen!", "created": "2016-07-15T13:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Excellent.  Will do!", "created": "2016-07-15T14:41:00.000000"}], "components": [], "created": "2016-03-21T16:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b63738"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "HUP service / ezbake integration"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymwcf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_778813787_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_2_*:*_6719964158_*|*_10012_*:*_1_*:*_356668203_*|*_10015_*:*_1_*:*_11567565835_*|*_10014_*:*_1_*:*_3635515055"}], "description": "This epic covers the work to make TK's HUP support more amenable to use with service init scripts, and the associated ezbake work necessary to integrate it.\n\nThis epic will also solve some transient issues related to restart that the integration team is interested in.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16403", "fixedVersions": ["SERVER 2.y"], "id": "16403", "issueType": "Epic", "key": "SERVER-1237", "labels": ["product-priority", "server-priority"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-12-13T12:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "HUP service / ezbake integration", "timeSpent": "PT0S", "updated": "2019-12-10T10:05:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-03-21T15:44:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fa06c38"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server HUP Loose Ends"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hytdc7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_23068799175_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16983", "fixedVersions": [], "id": "16983", "issueType": "Epic", "key": "SERVER-1235", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-12-13T14:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server HUP Loose Ends", "timeSpent": "PT0S", "updated": "2018-02-20T16:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "No users seem to be clamoring for this, and the ability to HUP the server in combination with unlimited environment timeout has made this easier to accomplish. Closing this epic.", "created": "2018-02-15T17:51:00.000000"}], "components": [], "created": "2016-03-21T13:10:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46edce12"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "OSS Atomic Code Deploys"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbrz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_60154908464_*|*_6_*:*_1_*:*_0"}], "description": "This is a placeholder epic that will eventually capture the work required to support atomic code deploys in OSS Puppet Server.\n\nThe general idea is that we should have a workflow in OSS that is similar to what we have with Code Manager and File Sync in PE, where you use some tool to 'stage' your code into the {{code-staging}} directory, and then the server 'syncs' it to the live {{$codedir}} at an appropriate time.\n\nThe hope is that we will end up with an OSS variant of the current PE Code Manager CLI tool for this.  The tool will have commands like {{puppet code deploy}} and {{puppet code sync}} that will interact with the server to complete the workflows.\n\nIn all likelihood the implementation will require OSS users to configure Puppet Server with some CLI commands that it should call out to to achieve the \"stage\" and \"sync\" operations.  Presumably the typical case would be to call out to {{r10k}} for the \"stage\" phase, and to something like {{rsync}} for the \"sync\" phase.\n\nFor more detailed write-up, see this thread:\n\nhttps://groups.google.com/a/puppetlabs.com/forum/?hl=en#!topic/tech-discuss/g7yl0z6T5hM\n\nI will try to update this ticket with more details (and related tickets capturing incremental work items) in the not-too-distant future.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15644", "fixedVersions": [], "id": "15644", "issueType": "Epic", "key": "SERVER-1234", "labels": ["nee"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2018-02-15T17:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support atomic code deploys in OSS Puppet Server", "timeSpent": "PT0S", "updated": "2018-02-15T17:52:00.000000", "votes": "5", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62439749247a4b00691c2a0b", "body": "Same behavior here:\n\n{code:shell}\n~# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-trusty.deb && dpkg -i puppetlabs-release-pc1-trusty.deb\n[...]\n~# apt-get update && apt-get install puppetserver\n[...]\n~# puppetserver foreground\n2016-03-19 05:05:37,464 INFO  [main] [o.e.j.u.log] Logging initialized @23610ms\n2016-03-19 05:05:37,734 INFO  [main] [p.t.s.w.jetty9-core] Removing buggy security provider SunPKCS11-NSS version 1.7\n2016-03-19 05:05:44,781 INFO  [async-dispatch-2] [p.s.v.versioned-code-service] No code-id-command set for versioned-code-service. Code-id will be nil.\n2016-03-19 05:05:44,782 INFO  [async-dispatch-2] [p.s.v.versioned-code-service] No code-content-command set for versioned-code-service. Attempting to fetch code content will fail.\n2016-03-19 05:05:44,806 INFO  [async-dispatch-2] [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2016-03-19 05:05:44,807 WARN  [async-dispatch-2] [p.s.j.jruby-puppet-service] The 'jruby-puppet.use-legacy-auth-conf' setting is set to 'true'.  Support for the legacy Puppet auth.conf file is deprecated and will be removed in a future release.  Change this setting to 'false' and migrate your authorization rule definitions in the /etc/puppetlabs/puppet/auth.conf file to the /etc/puppetlabs/puppetserver/conf.d/auth.conf file.\n2016-03-19 05:05:44,822 INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Initializing web server(s).\n2016-03-19 05:05:44,855 INFO  [clojure-agent-send-pool-0] [p.s.j.jruby-puppet-internal] Creating JRuby instance with id 1.\n2016-03-19 05:06:01,438 INFO  [clojure-agent-send-pool-0] [puppet-server] Puppet Puppet settings initialized", "created": "2016-03-18T22:22:00.000000"}, {"author": "62439749247a4b00691c2a0b", "body": "After several attempts, it seems to be tricky. I noticed that the only way where I can reproduce the problem is when the puppetserver daemon crashes because not enough memory.\n\n{code:shell}\nroot@trusty1:~# /opt/puppetlabs/bin/puppetserver foreground\nOpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x000000079aaa0000, 1431699456, 0) failed", "created": "2016-03-18T23:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Looking into this.  We have a check that is supposed to happen at startup that will cause the server to fail fast if the heap size is configured to be some value that is more than what the OS would have available, and it seems like maybe that's not working properly.  Otherwise it would fail before partially generating some CA files and we wouldn't end up in this state.\n\nPerhaps this check isn't working properly on some distros.  Are all of the repro cases that people have mentioned above happening on Ubuntu 14.04? ", "created": "2016-03-21T11:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] did you hit something like this during testing?  If so, what distro was that?  Would be good to test [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]'s theory about the memory check on whatever distro you were using.", "created": "2016-03-21T11:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Added a link to the issue [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] had filed for this - SERVER-1212.  If this were the same issue, it would be interesting to see if the {{/var/log/puppetserver/puppetserver.log}} file were to have messages like the following written to them for the cases where Puppet Server was not being initialized properly after RAM had already been bumped up on the previously failing nodes:\n\n{noformat}\nException in thread \"main\" java.lang.IllegalStateException: Cannot initialize master with partial state", "created": "2016-03-21T11:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] the snippet that [~accountid:62439749247a4b00691c2a0b] pasted above does indeed include that message.", "created": "2016-03-21T11:52:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I was using Ubuntu Trusty", "created": "2016-03-21T13:30:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "*tldr:* This might be related to https://puppet.atlassian.net/browse/SERVER-528, which describes getting the partial state error after installing puppetserver and running {{puppet agent -t}} before starting puppetserver\n\n[~accountid:62439749247a4b00691c2a0b] I tried to reproduce this on Ubuntu 14.04 on a VM with 512MB ram using the steps you have listed to install puppetserver 2.3.1, but was unable to get puppetserver to throw a partial state error. \n\nAfter installation I ran puppetserver foreground and got the Java memory error:\n\n{noformat}\njoe@ubuntu:~$ /opt/puppetlabs/bin/puppetserver foreground\nOpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000770000000, 715784192, 0) failed", "created": "2016-03-21T15:58:00.000000"}, {"author": "62439749247a4b00691c2a0b", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0], I have tested again, this way fails systematically for me. I have a VM Ubuntu Trusty with 521MB of RAM.\n\n{code:shell}\n~# lsb_release -a\nNo LSB modules are available.\nDistributor ID:\tUbuntu\nDescription:\tUbuntu 14.04.4 LTS\nRelease:\t14.04\nCodename:\ttrusty\n\n\n~# free -m\n             total       used       free     shared    buffers     cached\nMem:           489        233        256          0         19        178\n-/+ buffers/cache:         36        453\nSwap:          509          0        509\n\n\n~# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-trusty.deb && dpkg -i puppetlabs-release-pc1-trusty.deb\n[... not relevant, all is normal... ]\n\n\n~# apt-get update && apt-get install puppetserver\n[... not relevant, all is normal... ]\n\n\n~# dpkg -l puppetserver\nDesired=Unknown/Install/Remove/Purge/Hold\n| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend\n|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)\n||/ Name                                  Version                 Architecture            Description\n+++-=====================================-=======================-=======================-================================================================================\nii  puppetserver                          2.3.0-1puppetlabs1      all                     Puppet Labs puppetserver\n\n\n~# service puppetserver status\n * puppetserver is not running\n\n\n~# /opt/puppetlabs/bin/puppetserver foreground\nOpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x000000079aaa0000, 1431699456, 0) failed", "created": "2016-03-21T16:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62439749247a4b00691c2a0b] the thing that we're trying to wrap our heads around is how that private_key is getting created:\n\n{code}\njava.lang.IllegalStateException: Cannot initialize master with partial state", "created": "2016-03-21T17:40:00.000000"}, {"author": "62439749247a4b00691c2a0b", "body": "Hi,\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], the agent doesn't seem to be the cause of the problem (or if it does, then there is a supplementary problem *before* the agent). Indeed, I have retried the test (via a VM with low memory) but, before the reboot, I have disabled the {{puppet}} daemon. Even in this case, the problem is still here. Here is the details:\n\n{code:bash}\nroot@trustyclean:~# lsb_release -a\nNo LSB modules are available.\nDistributor ID:\tUbuntu\nDescription:\tUbuntu 14.04.4 LTS\nRelease:\t14.04\nCodename:\ttrusty\n\n# Quick and basic installation of puppetserver\n[...]\n\nroot@trustyclean:~# dpkg -l puppetserver\nDesired=Unknown/Install/Remove/Purge/Hold\n| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend\n|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)\n||/ Name                        Version            Architecture       Description\n+++-===========================-==================-==================-============================================================\nii  puppetserver                2.3.1-1puppetlabs1 all                Puppet Labs puppetserver\n\nroot@trustyclean:~# service puppet status\n * agent is not running\nroot@trustyclean:~# service puppetserver status\n * puppetserver is not running\n\nroot@trustyclean:~# ls /etc/rc?.d | grep puppet\nK20puppet\nK20puppet\nS20puppet\nS20puppet\nS20puppet\nS20puppet\nK20puppet\n\nroot@trustyclean:~# update-rc.d puppet disable\n\n# Now the \"puppet\" daemon is disabled.\nroot@trustyclean:~# ls /etc/rc?.d | grep puppet\nK20puppet\nK20puppet\nK80puppet\nK80puppet\nK80puppet\nK80puppet\nK20puppet\n\nroot@trustyclean:~# ll /etc/puppetlabs/puppet/ssl/\ntotal 8\ndrwxrwx--- 2 puppet puppet 4096 Mar 24 00:21 ./\ndrwxr-xr-x 3 root   root   4096 Mar 24 00:21 ../\n\nroot@trustyclean:~# free -m\n             total       used       free     shared    buffers     cached\nMem:           489        439         50          0         15        366\n-/+ buffers/cache:         57        432\nSwap:            0          0          0\n\nroot@trustyclean:~# /opt/puppetlabs/bin/puppetserver foreground\nOpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000770000000, 715784192, 0) failed", "created": "2016-03-23T17:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:62439749247a4b00691c2a0b] This last failure that you ran into sounds more like SERVER-441.  Would you agree?  There's definitely more work for that ticket that we need to do to gracefully support running \"puppetserver foreground\" right after puppetserver is first installed, before puppetserver is started at least one time via the service framework (systemd, etc.).", "created": "2016-03-23T18:07:00.000000"}, {"author": "62439749247a4b00691c2a0b", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], indeed you are right. I should just read the error message, sorry. So indeed, if I retry exactly the same commands as in my previous comment, except that before to launch puppetserver after the reboot I add this:\n\n{code:bash}\n# I have just copied the commands from the init.d script.\nmkdir -p /var/run/puppetlabs/puppetserver\nchown -R puppet:puppet /var/run/puppetlabs/puppetserver\n{code}\n\nThen the command {{/opt/puppetlabs/bin/puppetserver foreground}} works well:\n\n{code}\nroot@trustyclean:~# /opt/puppetlabs/bin/puppetserver foreground\n[...]\n2016-03-24 02:33:34,743 INFO  [async-dispatch-2] [p.s.m.master-service] Puppet Server has successfully started and is now ready to handle requests\n{code}\n\nSo the case I have described was in fact SERVER-441, correct.\n\nSo the problem in this present ticket is in fact the puppet agent which leaves the directory {{/etc/puppetlabs/puppet/ssl}} (and maybe other things) in a state which triggers a crash of the {{puppetserver}} service. Here is the definitive commands (I hope) which summarize the problem:\n\n{code:bash}\nroot@trustyclean:~# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-trusty.deb && dpkg -i puppetlabs-release-pc1-trusty.deb\nroot@trustyclean:~# apt-get update && apt-get install puppetserver\n\nroot@trustyclean:~# ll /etc/puppetlabs/puppet/ssl/\ntotal 8\ndrwxrwx--- 2 puppet puppet 4096 Mar 24 02:48 ./\ndrwxr-xr-x 3 root   root   4096 Mar 24 02:48 ../\n\n# This first puppet run which fails because my configuration is not set at this moment.\nroot@trustyclean:~# puppet agent --test\nInfo: Creating a new SSL key for trustyclean\nError: Could not request certificate: getaddrinfo: Name or service not known\nExiting", "created": "2016-03-23T20:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62439749247a4b00691c2a0b] thanks a bunch for the detailed error reports.\n\nSo for this ticket, we can look into finding a way to recover more gracefully in the case where an agent run has left behind some SSL files before the first time the server starts up, and then on SERVER-441 we can look into the {{foreground}} permissions issue.", "created": "2016-03-28T17:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I changed the title of this ticket", "created": "2016-03-28T17:03:00.000000"}], "components": ["Puppet Server"], "created": "2016-03-18T21:47:00.000000", "creator": "70121:26fdd2a3-d3e5-4567-874e-8eb85fce5aad", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a733b22"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynd13:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_999521416_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_59208723150"}], "description": "An upgrade to 2.3.0 does *NOT* have a problem.\n\nA fresh install does:\nwget https://apt.puppetlabs.com/puppetlabs-release-pc1-trusty.deb\ndpkg -i puppetlabs-release-pc1-trusty.deb\napt-get update\napt-get install puppetserver\n\nSimilar on client, except apt-get install puppet-agent.\n\nFirst sign of a problem is the puppetserver won't start.  You can override this with a server=<FQDN> and it will start.\n\nThe output of puppet status should mention version 4.4.0 on the client and 2.3.0 on the server.  4.3.2 and 2.2.0 does not exhibit this issue.\n\nSo there's some possibilities:\n* this is intentional, so the post-install script in the package should create the cert, or at least a mention in the installation documentation.\n* this is a regression, and the puppetserver startup should create a cert if missing.\n\nTo fix:\npuppet master --no-daemonize --verbose, then wait for \"Notice: Starting Puppet master\" then hit control c.\n\nWhat happens otherwise if new clients can send CSRs, the server can sign said CSRs, but then when a client connects:\nError: Could not request certificate: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get local issuer certificate for /CN=puppet.foo.com]\n\nNote this happens only on new installs, not upgrades.\n\nMy 4.3.2 agent/2.2.0 server setup \"just worked\", apt-get install on both ends, server would start and I was in business.  2.3.0 server the daemon dies, if I get it to start clients can submit CSRs, but never connect afterwards.\n\nI had someone on #puppet replicate this, and actually the fix is from them.\n", "environment": "Ubuntu-14.04 with 3GB ram.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15291", "fixedVersions": [], "id": "15291", "issueType": "Bug", "key": "SERVER-1233", "labels": ["2.3.0", "4.4.0", "SSL"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:26fdd2a3-d3e5-4567-874e-8eb85fce5aad", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-13T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server fails with CA 'partial state' error if agent has run and generated SSL keys prior to first server start", "timeSpent": "PT0S", "updated": "2018-02-13T17:17:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26ab418c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz579b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_338713405_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_76562845"}], "description": "(Initial planned release date: 2016-03-14)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.3.1%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15888", "fixedVersions": [], "id": "15888", "issueType": "Sub-task", "key": "SERVER-1232", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-23T10:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "https://confluence.puppetlabs.com/display/ENG/Shared+Passwords\n\ngo to dujour, update puppetserver (NO DASH, NO PE-) with 2.3.1. other values should be self explanatory.", "created": "2016-03-21T12:04:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "packages are up, you're clear to do this", "created": "2016-03-22T13:31:00.000000"}], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2330d49e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5793:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_338710952_*|*_5_*:*_1_*:*_75045546_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1497806"}], "description": "(Initial planned release date: 2016-03-14)\n\nUpdate dujour to notify users to use 2.3.1.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15643", "fixedVersions": [], "id": "15643", "issueType": "Sub-task", "key": "SERVER-1231", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-22T13:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.3.1 (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "Filters for this release: \n\nIntroduced in 2.3.1: https://puppet.atlassian.net/issues/?filter=18501 \n\nTo be fixed in 2.3.2: https://puppet.atlassian.net/issues/?filter=18502\n\n\n", "created": "2016-03-21T12:10:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "packages are up, we're ready for the announcement", "created": "2016-03-22T13:31:00.000000"}], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6cf2dca1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz578v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_338691700_*|*_5_*:*_1_*:*_810426_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_75754677"}], "description": "(Initial planned release date: 2016-03-14)\n\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15290", "fixedVersions": [], "id": "15290", "issueType": "Sub-task", "key": "SERVER-1230", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-23T10:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Packages are up and we're ready for docs", "created": "2016-03-22T13:31:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Release notes are live.", "created": "2016-03-22T13:39:00.000000"}], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71bf8d99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz578n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_338671776_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_550387"}], "description": "(Initial planned release date: 2016-03-14)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14983", "fixedVersions": [], "id": "14983", "issueType": "Sub-task", "key": "SERVER-1229", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-03-22T13:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-22T13:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:74b44c9c-9f7d-4d53-b6b6-e598c1652c9b", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:74b44c9c-9f7d-4d53-b6b6-e598c1652c9b] because this is an ezbake project, you'll want to ship packages from the script in packaging (https://github.com/puppetlabs/packaging/blob/master/bin/uber_ship). You'll run this like {{bin/uber_ship puppetserver 2.3.1}}. It'll pull down the signing bundle (which contains the temporary tag that ezbake created to build packages from), and run the shipping automation there. When it asks you if you want to ship all the packages, ensure they're living in a subdirectory of {{PC1}}", "created": "2016-03-21T16:13:00.000000"}], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f3b24d8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz578f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_269616050_*|*_5_*:*_1_*:*_76594121_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_69050854"}], "description": "(Initial planned release date: 2016-03-14)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14706", "fixedVersions": [], "id": "14706", "issueType": "Sub-task", "key": "SERVER-1228", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-23T10:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:74b44c9c-9f7d-4d53-b6b6-e598c1652c9b", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:74b44c9c-9f7d-4d53-b6b6-e598c1652c9b] for this ticket, you'll need to create a new tag after packages have been created. This tag must be off the commit that removed the {{-stable-SNAPSHOT}} from the version number in project.clj (https://github.com/puppetlabs/puppet-server/blob/stable/project.clj#L5). Puppet server has a slightly different versioning scheme than other projects, so the tag will be {{puppet-server-2.3.1}}", "created": "2016-03-21T16:10:00.000000"}], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b834958"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5787:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_269614744_*|*_5_*:*_1_*:*_77182383_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_68466978"}], "description": "(Initial planned release date: 2016-03-14)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17434", "fixedVersions": [], "id": "17434", "issueType": "Sub-task", "key": "SERVER-1227", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-23T10:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "this is an informal hipchat thing, just ping people. refer to list in description.", "created": "2016-03-21T11:55:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "We decided to move forward tonight, and do the announcements/docs/etc tomorrow", "created": "2016-03-21T18:14:00.000000"}], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68c33b2f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz577z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_269300485_*|*_5_*:*_1_*:*_145966390_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-14)\n\nThis should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16981", "fixedVersions": [], "id": "16981", "issueType": "Sub-task", "key": "SERVER-1226", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-23T10:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm) (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "install previous version of puppet server (2.3.0) on vm\ndo agent run\nupgrade to 2.3.1 with package manager\ndo agent run\n\non: cent6, cent7, trusty\n\n(don't forget --certname and --server)", "created": "2016-03-21T11:53:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "I tested on centos 6, centos 7, trusty.\nI:\n* installed puppetserver 2.3.0 from pc1\n* added a site.pp with a notify\n* ran puppet\n* upgraded to 2.3.1\n* ran puppet\n\nand all platforms were successful", "created": "2016-03-21T17:51:00.000000"}], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@315c803c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz577r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_267558685_*|*_3_*:*_1_*:*_10395_*|*_5_*:*_1_*:*_147699749_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-14)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16773", "fixedVersions": [], "id": "16773", "issueType": "Sub-task", "key": "SERVER-1225", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-21T17:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:74b44c9c-9f7d-4d53-b6b6-e598c1652c9b", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Because puppet-server is an ezbake project, this happens automagically when the version in project.clj is changed to remove the `-SNAPSHOT` suffix. EZBake will create a temporary tag to build the packages with. This tag is never pushed to the main repo and is not for human consumption.", "created": "2016-03-21T16:06:00.000000"}], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b8d29fb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz577j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_261650286_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-14)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16401", "fixedVersions": [], "id": "16401", "issueType": "Sub-task", "key": "SERVER-1224", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2016-03-21T16:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-21T16:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Release notes are live.", "created": "2016-03-22T13:40:00.000000"}], "components": [], "created": "2016-03-18T15:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2848f91a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz577b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_261551820_*|*_10009_*:*_1_*:*_77721085_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-22)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16169", "fixedVersions": [], "id": "16169", "issueType": "Sub-task", "key": "SERVER-1223", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-03-22T13:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-22T13:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [{"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "filters created, jira version released.", "created": "2016-03-21T12:11:00.000000"}], "components": [], "created": "2016-03-18T15:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6fee577a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5773:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_247532706_*|*_5_*:*_1_*:*_167742606_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-14)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15887", "fixedVersions": [], "id": "15887", "issueType": "Sub-task", "key": "SERVER-1222", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-23T10:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "This *should* be a no-op as the one commit we need was merged directly to stable. however, it's worth asking if there is something that has landed in master in the last few days that should go into 2.3.1 (though this would prob be irresponsible).", "created": "2016-03-21T11:47:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "This was a noop", "created": "2016-03-21T16:23:00.000000"}], "components": [], "created": "2016-03-18T15:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e050dd6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz576v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_262663483_*|*_3_*:*_1_*:*_17277_*|*_5_*:*_1_*:*_152597083_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-14)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15642", "fixedVersions": [], "id": "15642", "issueType": "Sub-task", "key": "SERVER-1221", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-21T16:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "set puppet server version to 2.3.1 (from 2.3.1-stable-snapshot). be ready to manually set to 2.3.2-stable-snapshot after packages are released.", "created": "2016-03-21T11:42:00.000000"}], "components": [], "created": "2016-03-18T15:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e3b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz576n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_262658271_*|*_10007_*:*_1_*:*_2545_*|*_3_*:*_1_*:*_1072181_*|*_5_*:*_1_*:*_151546471_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-14)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15289", "fixedVersions": [], "id": "15289", "issueType": "Sub-task", "key": "SERVER-1220", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-21T16:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "Just make sure the commit(s) for the bugfix are merged to stable.", "created": "2016-03-21T11:40:00.000000"}], "components": [], "created": "2016-03-18T15:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e58e3c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz576f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_261881256_*|*_3_*:*_1_*:*_110782_*|*_5_*:*_1_*:*_153289669_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-14)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14982", "fixedVersions": [], "id": "14982", "issueType": "Sub-task", "key": "SERVER-1219", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-21T16:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "Since we're not using a new version of puppet agent for this release, this ticket is a no-op for us.", "created": "2016-03-21T11:38:00.000000"}], "components": [], "created": "2016-03-18T15:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e47a8c0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5767:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_245596180_*|*_5_*:*_1_*:*_169687410_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-14)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.3.1%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14704", "fixedVersions": [], "id": "14704", "issueType": "Sub-task", "key": "SERVER-1218", "labels": [], "originalEstimate": "PT0S", "parent": "17433", "parentSummary": "puppetserver 2.3.1 2016-03-22 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-23T10:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.3.1)", "timeSpent": "PT0S", "updated": "2016-03-23T10:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2016-03-18T15:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@127e2b1b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4zqn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Release to respond to urgent bug."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_416180579_*|*_6_*:*_1_*:*_0"}], "description": "puppetserver 2.3.1 2016-03-22 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17433", "fixedVersions": [], "id": "17433", "issueType": "Task", "key": "SERVER-1217", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-23T11:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.3.1 2016-03-22 Release", "timeSpent": "PT0S", "updated": "2016-03-31T10:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03] I don't believe there to be any problems with a Puppet agent installed from a puppet-agent package less than 1.4.0 communicating with a Puppet Server 2.3.0 master.\n\nPuppet Server itself is dependent upon the content in the puppet-agent package to work.  Puppet Server 2.3.0 has a package-level dependency on puppet-agent 1.4.0 or newer.  Some functions of Puppet Server won't work properly if you try to run Puppet Server 2.3.0 with a puppet-agent package version on the same system that is less than 1.4.0.  Presumably if you installed Puppet Server 2.3.0 through a package manager without skipping its deps, though, that system would have had its puppet-agent package upgraded to 1.4.0 first in the process?\n\nDoes that make sense?", "created": "2016-03-18T12:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think the key point here is that you need Puppet Agent 1.4.0 *on the machines that you are running Puppet Server on*.  There is no requirement that you upgrade the rest of the agent nodes in your fleet at the same time", "created": "2016-03-18T12:57:00.000000"}, {"author": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "body": "Ok, that wasn't clear in this sentence in the release notes:\nbq. Puppet Server 2.3 depends on Puppet Agent 1.4.0 or newer, which installs Puppet 4.4 and compatible versions of its related tools and dependencies. ", "created": "2016-03-18T13:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] do you think maybe we should re-word that in the release notes?", "created": "2016-03-18T13:23:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03] Yeah, I can clarify that. I filed DOCUMENT-522 to address it as that note (or something similar) is in a few places in the docs, including the earlier Puppet Server notes.", "created": "2016-03-18T13:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03] does the new wording in https://github.com/puppetlabs/puppet-server/pull/975 seem more clear?  If so, we can close out this ticket.", "created": "2016-03-18T14:18:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03]We think we've addressed your issue, feel free to reopen if that turns out not to be the case.", "created": "2016-03-23T11:43:00.000000"}], "components": [], "created": "2016-03-18T12:29:00.000000", "creator": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32ae5cb9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz570v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_429291637_*|*_5_*:*_1_*:*_16238885409_*|*_6_*:*_1_*:*_0"}], "description": "In the puppet server 2.3 release notes, it states that Puppet Agent 4.4 can only communicate with Puppet Server 2.3.\n\nSo how are we supposed to use Puppet Agent runs to upgrade Puppet Agents (through package{'puppet-agent': ensure=>latest} if the server has already upgraded to Puppet Server 2.3.\n\nThis seems like a significant step backwards in version compatibility.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16979", "fixedVersions": [], "id": "16979", "issueType": "Bug", "key": "SERVER-1216", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "resolution": "Fixed", "resolutionDate": "2016-03-23T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Backwards compatability from Puppet Server 2.3.0 and Puppet Agent 1.3.x", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "3600", "aggregatetimeoriginalestimate": "3600", "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yuck", "created": "2016-03-18T13:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0a337910a200718b9059] we will probably need your help in prioritizing this and figuring out a game plan.", "created": "2016-03-18T13:35:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "[~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49] can you take a look at this ticket from CS perspective and let us know if delivering a fix in a Z release will be acceptable?", "created": "2016-03-18T14:09:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] is there a workaround for people in the field, besides \"disable syslog\"?\n\n[~accountid:557058:96a443bf-a3ab-426b-9442-ce50c9977428] the question seems not to be \"is it acceptable to deliver a fix in a z release\" but \"should we do an *immediate* z release including *only* this fix - and IMO that depends on the workaround question. \n\nI don't think we should ship a PE version without this fixed, FWIW, but it could be the spot-fix Chris outlined.\n\n--edited, %@*( jira", "created": "2016-03-18T14:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] I can't think of a fix for people in the field besides \"disable syslog\".  The ultimate root cause here is around what files get bundled into the jar, so any fix will require a new jar.\n\nIt would not take more than a few minutes of work to do the \"shortest path\" fix that I described, but then we have all of the normal CI / promotion / release concerns to deal with, so that machinery would take a bit longer.  We probably also would at least want to do some manual QA validation.  But if we agree that that is the right thing to do for now I can get it rolling as soon as someone gives me the word.", "created": "2016-03-18T14:37:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "(y)", "created": "2016-03-18T14:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] just one more data point, to make sure it's clear, though: in both OSS and PE, syslog is not enabled by default.  So this only affects users who are modifying their logging config to enable it.", "created": "2016-03-18T14:46:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Yes, I understand that.", "created": "2016-03-18T14:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Cool, moving forward then.", "created": "2016-03-18T14:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03] would you mind attaching your logback.xml so that we can make sure we're testing exactly the configuration that was causing you issues?", "created": "2016-03-18T15:35:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] an acceptance test will be required to ensure we do not regress on the ability to utilize syslog.", "created": "2016-03-18T15:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "PR merged to fix this for a quick 2.3.1 release", "created": "2016-03-18T15:59:00.000000"}, {"author": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "body": "I could have 45 minutes ago...  I found version mismatch was through\nlooking at pom.xml files inside the ezbake jar.  If those versions match on\nnew output it should be fine.\n\n\nOn Fri, Mar 18, 2016, 17:36 Chris Price (JIRA) <\n\n", "created": "2016-03-18T16:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:823490ee-956b-4c31-9a8f-cc2e88433a03] can you attach it on Monday, then?  I've already got a fix merged that makes the versions match, but our QA team will want to validate it.  I'm trying to get it set up with a 2.2.1 build and there is something about either my logback config or my syslog config that is incorrect, so I can't get it working yet.", "created": "2016-03-18T16:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ah, I got it working on 2.2.1.  Will add notes momentarily.", "created": "2016-03-18T16:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I needed to get rsyslog installed and running on my cent7 box, and open up the UDP/TCP syslog reception.  I used these instructions:\n\nhttp://www.itzgeek.com/how-tos/linux/centos-how-tos/setup-syslog-server-on-centos-7-rhel-7.html\n\nNext I added this to my logback config:\n\n{code}\n    <appender name=\"SYSLOG\" class=\"ch.qos.logback.classic.net.SyslogAppender\">\n        <syslogHost>localhost</syslogHost>\n        <facility>USER</facility>\n        <suffixPattern>%thread: %-5level %logger{36} - %msg%n</suffixPattern>\n    </appender>\n{code}\n\nAnd then add an appropriate {{appender-ref}}, like so:\n{code}\n    <root level=\"info\">\n        <!--<appender-ref ref=\"STDOUT\"/>-->\n        <!-- ${logappender} logs to console when running the foreground command -->\n        <appender-ref ref=\"${logappender}\"/>\n        <appender-ref ref=\"F1\"/>\n        <appender-ref ref=\"SYSLOG\"/>\n    </root>\n{code}\n\nWith Puppet Server 2.2.1 and the above configuration, I can see Puppet Server's log messages in my syslog.\n\nWill test with the (presumably broken) 2.3.0 build next, and then with a 2.3.1-SNAPSHOT build as soon as one comes out of CI.", "created": "2016-03-18T16:24:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "Approved as a Burnside showstopper 03/18 by the burnside leads at Burnside triage.\n\n", "created": "2016-03-18T16:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Verified that my config above breaks as described in the ticket description on 2.3.0.", "created": "2016-03-18T16:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Verified that my syslog config works again with the build from here:\n\nhttp://builds.puppetlabs.lan/puppetserver/2.3.1.stable.SNAPSHOT.2016.03.18T1502/repos/el/7/PC1/x86_64/", "created": "2016-03-18T16:48:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "There is a acceptance test in this PR:\nhttps://github.com/puppetlabs/puppet-server/pull/988\n\nFor purposes of release, I consider functional review complete based on documentation by [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] above", "created": "2016-03-22T18:10:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "acceptance test now in PR https://github.com/puppetlabs/puppet-server/pull/993\nClosing this out because it's taking too long.  If the above PR needs substantial additional work, I'll throw a new ticket in the sprint.", "created": "2016-03-29T13:11:00.000000"}], "components": ["Puppet Server"], "created": "2016-03-18T12:21:00.000000", "creator": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70e501c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z1z:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "bug discovered by OSS user"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_4263622_*|*_1_*:*_1_*:*_11764614_*|*_5_*:*_1_*:*_15715269228_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_937346532"}], "description": "When starting the new puppetserver, it fails when logback is configured with a SyslogAppender.  This functionality worked in all versions from 2.0 to 2.2.\n\nThe new puppetserver is mismatching logback-core-1.1.3 with logback-classic-1.1.1.\n\nI'd try to provide a pull request with the fix, but I can't even figure out how the logback dependency versions are selected.\n\nException in thread \"main\" java.lang.AbstractMethodError: ch.qos.logback.core.net.SyslogAppenderBase.createOutputStream()Lch/qos/logback/core/net/SyslogOutputStream;\n        at ch.qos.logback.core.net.SyslogAppenderBase.start(SyslogAppenderBase.java:62)\n        at ch.qos.logback.classic.net.SyslogAppender.start(SyslogAppender.java:48)\n        at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:96)\n        at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:317)\n        at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:196)\n        at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:182)\n        at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)\n        at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:149)\n        at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135)\n        at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:99)\n        at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:76)\n        at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:68)\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:497)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n        at puppetlabs.trapperkeeper.logging$configure_logger_BANG_.invoke(logging.clj:89)\n        at puppetlabs.trapperkeeper.logging$configure_logging_BANG_.invoke(logging.clj:102)\n        at puppetlabs.trapperkeeper.config$initialize_logging_BANG_.invoke(config.clj:131)\n        at puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:128)\n        at puppetlabs.trapperkeeper.core$run.invoke(core.clj:155)\n        at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:177)\n        at clojure.lang.RestFn.invoke(RestFn.java:457)\n        at clojure.lang.Var.invoke(Var.java:394)\n        at clojure.lang.AFn.applyToHelper(AFn.java:165)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.core$apply.invoke(core.clj:630)\n        at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7)\n        at clojure.lang.RestFn.invoke(RestFn.java:457)\n        at clojure.lang.Var.invoke(Var.java:394)\n        at clojure.lang.AFn.applyToHelper(AFn.java:165)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.core$apply.invoke(core.clj:630)\n        at clojure.main$main_opt.invoke(main.clj:316)\n        at clojure.main$main.doInvoke(main.clj:421)\n        at clojure.lang.RestFn.invoke(RestFn.java:512)\n        at clojure.lang.Var.invoke(Var.java:409)\n        at clojure.lang.AFn.applyToHelper(AFn.java:178)\n        at clojure.lang.Var.applyTo(Var.java:700)\n        at clojure.main.main(main.java:37)\n", "environment": "RHEL 6, Java 1.8.0_60, Puppet Server 2.3.0", "epicLinkSummary": null, "estimate": "PT3600S", "externalId": "16399", "fixedVersions": ["SERVER 2.3.1"], "id": "16399", "issueType": "Bug", "key": "SERVER-1215", "labels": ["burnside-ss"], "originalEstimate": "PT3600S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:823490ee-956b-4c31-9a8f-cc2e88433a03", "resolution": "Fixed", "resolutionDate": "2016-03-29T13:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server fails to start if logback configured to log to syslog", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "That is not going to work well at all, as the \"doc string\" available at runtime is raw source text, it contains yard-tags etc. The job of extracting documentation and formatting it is a job for Puppet Strings. In that process there are also many things that can go wrong (badly formatted things, wrong tags, etc). \n\nThe puppet runtime has no features for this. The only thing that is available is the source text, plus the offset and length of the parsed AST objects in source. This information is used by Puppet Strings. We should not put \"Puppet Strings\" back into the runtime.\n\nI would therefore like to close this as a \"won't do\" for puppet. The structured information that is needed is made available by Puppet Strings in JSON format. A UI could pick that up for presentation (possibly with timestamp information to indicate how old it is", "created": "2016-03-18T12:30:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "Yeah, my intention is that the information made available would be what was already digested by puppet strings.\n\nIn terms of closing the ticket, my goal is to make ^^^ happen. If the ticket doesn't describe how we'd go about solving for this, then let's re-write it.", "created": "2016-03-18T12:52:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The information is not there for \"Puppet Strings' digestion\", it is extracted by quite elaborate logic inside Puppet Strings and it is using Yard to great extent to drive the entire process which involves both using the puppet parser and a ruby parser.\n", "created": "2016-03-18T16:18:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The work is best done on the Puppet Server side as part of code deployment. It is already keeping the information up to date wrt to any possible changes in the underlying environment. It gets class information from the puppet parser (what classes are there and what are the parameters). It should also trigger documentation updates by using Puppet Strings/Yard to get structured output + possibly directly viewable documentation pages that could possibly be linked into the UI. Puppet server then merges/the result delivered to the UI.", "created": "2016-03-18T16:22:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] Please help us find out the timeframe for the front end work so we can target this more appropriately.", "created": "2016-03-23T11:37:00.000000"}], "components": [], "created": "2016-03-17T16:12:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51ae6ddc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz54hz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1105765893_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_59445967326"}], "description": "With the addition of the environment_classes endpoint in Puppet Server (SERVER-1110), it makes sense to make docstrings optionally available so that clients of the endpoint can provide contextual help to users based on the class and parameter documentation in the Puppet code.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16166", "fixedVersions": [], "id": "16166", "issueType": "Improvement", "key": "SERVER-1236", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Won't Do", "resolutionDate": "2018-02-16T11:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make docstring available from Puppet Server environment_classes endpoint", "timeSpent": "PT0S", "updated": "2018-02-16T11:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62438a418678e9007059bcca] thanks a ton for the thoughtful write-up.\n\nWe were just discussing this issue as we were finalizing the release yesterday, and we all had a sad about the fact that we hadn't come up with a solution for it yet.  This ticket will help us light a fire to get it fixed.\n\nYour solution sounds pretty reasonable at first glance.  We'll discuss this in one of our triage meetings in the next week or so, and maybe bat around other ideas, but one way or the other I'll try to get some kind of fix scheduled.  I'm optimistic we can get something done before our next Y release.", "created": "2016-03-17T14:25:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:8b78034b-6c75-4679-8040-8454689b0b07", "body": "I just ran into this issue when I upgraded some masters. While the main master worked fine, the compile masters suffered from this as I had previously edited bootstrap.cfg.  Luckily #puppet was quick to help.  Google was of no help as this ticket and the 2.3.0 release notes are not indexed yet.", "created": "2016-03-17T15:36:00.000000"}, {"author": "557058:58c5336a-e9d7-4eff-b221-85517090556b", "body": "Glad I'm not the only one caught out by the lack of search indexing!\n\nSame problem here, and the module I use to manage the puppetserver, jlambert121/puppet, does not yet offer a parameter for the bootstrap.cfg template, so I'm stuck on 2.2.1 for now. This looks like a good way forward.\n\nOne possible addition: for backup compatibility, look for bootstrap.cfg first, or in addition to the `services.d` files, as this would smooth the upgrade process, similar to the moving `r10k.yaml` and such. Remove that backup location with the release of v3.0.0.", "created": "2016-03-17T21:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I\"m not sure that looking for the old file would help, would it?  Because if there are any changes to the default version of the file in the next release, and you have a modified version of the file, then you'll have the same issue that you had during this upgrade, where we leave your file intact but it's invalid and the server won't start.  Correct?", "created": "2016-03-18T09:32:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "If we do go a `services.d` route for this, it'd be nice to try to minimize the number of required files in the .d directory.  For starters we could maybe get away with just two", "created": "2016-03-18T09:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think your approach of splitting into two files where one represents the stack of services that we don't expect to be customized vs. ones that more frequently are seems fine.\n\nAssuming we're going to be making changes around the bootstrap.cfg, I think this might be an opportunity to do what SERVER-16 called for by HOCONifying the bootstrap entries for consistency with the rest of our configuration.  Might be nice to have a format where each service entry could have a map rather than just a namespace - e.g., for future metadata that we might want to add in on a per-service basis.\n\nLike we have for other Trapperkeeper config files in general, it might be nice to have the flexibility to combine all of the service entries into one file (like we do today) or split them into as many discrete files in a directory as desired (1 per service, 2 total with 1 having a set of standard infrastructure services vs. 1 having a set of more frequently customizable services).", "created": "2016-03-18T13:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] mentioned that same idea and ticket this morning.  IMO that is significantly more work and will need some much more thoughtful design consideration, and will need to happen on a major version boundary.  I think the path described in this ticket is a tractable shorter-term strategy that won't require nearly as much work, hopefully won't require a major version bump, and will eliminate a lot of the pain that users are experiencing on upgrades today.  So in my mind these are two separate features / changes to pursue.", "created": "2016-03-18T13:22:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "[~accountid:557058:58c5336a-e9d7-4eff-b221-85517090556b]: what [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] said. There's no point in keeping the {{bootstrap.cfg}} file: if the sysadmin never modified it, then it can be replaced transparently with the {{services.d}} directory structure at package upgrade. But if the {{bootstrap.cfg}} file has been modified, then the sysadmin is well aware that upgrades have to be performed manually, so migrating the changes to {{bootstrap.cfg}} to the new {{services.d}} structure isn't really an additional burden.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]: I agree that it would be simpler to place service definitions that shouldn't be modified in the same file. Going with a one-service-per-file approach would just clutter the {{services.d}} directory with a bunch of files that shouldn't be modified.\n\nAlso, this is probably a dumb question, but I'll go ahead and ask it: why is it even necessary to specify mandatory service definitions?\n\nMetaphorically speaking, this seems like buying a car that has a toggle switch on the dashboard to enable/disable the spark plugs, and the owner's manual says something like, \"This switch controls whether the spark plugs are enabled. The spark plugs must always be enabled. Always leave this switch in the {{On}} position.\"\n\nMy reaction would be, \"If the spark plugs must always be enabled, then _why is the user given the option to disable them_?\"\n\nIf the response is something along the lines of, \"Because of the way Java/Trapperkeeper/Clojure work, the service definitions have to be placed _someplace_,\" then my retort is, \"Fine. Stuff the required service definitions in a file under {{/opt/puppetlabs/server}} someplace, so it'll be clear that they're not files that should ever be edited. Then reduce the {{bootstrap.cfg}} file to only service definitions that need to be customized. And furthermore, don't treat it as a fatal error if an unknown service is seen in the {{bootstrap.cfg}} file", "created": "2016-03-18T15:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62438a418678e9007059bcca] w/rt to hiding the settings that we don't intend for the user to modify off in {{/opt}} somewhere, we totally agree, and we have a ticket for this.  It's just a feature that needs to be added to Trapperkeeper and our packaging system, and we haven't had the bandwidth to prioritize that over feature work so far.  I'll find the ticket and link it.\n\nWe want to take a holistic approach to doing that, and do it for the `conf.d` files as well.  It needs some careful thought and design work and will probably have to land in a major version boundary, but it is definitely where we'd like to head eventually.\n\nw/rt ignoring unknown services, that is worth considering, but wouldn't have solved the issue for the 2.3.0 upgrade since the problem was a missing service rather than an unknown one.  Will still keep that suggestion in mind, though.", "created": "2016-03-18T16:09:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62438a418678e9007059bcca] see UXD-782 and/or UXD-781.", "created": "2016-03-18T16:11:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I don't have permission to access either UDX-782 or UXD-781, but I'll take your word for it.\n\nAlso, ignoring unknown services would still be a benefit. Here's why: we run a beta/test Puppet server that always automatically updates to the latest available puppetserver package. When it blows up, that's typically how we know puppetserver has rolled to a new minor revision, and we go inspect it to see what changes are required to get it working again.\n\nTherefore, before we update our production Puppet servers, we already _know_ in advance what new services will need to be defined. But as long as Puppet blows up on services it doesn't know about, even though we know exactly what needs to be added to make the new Puppet server version happy, we can't actually _add_ the new service definitions in advance.\n\nIf Puppet server simply ignored services it didn't recognize, then we wouldn't have to hand-nurse every single Puppet server upgrade: once we used the beta server to figure out what new services are needed, we could add the new service definitions, and then allow the Puppet server package updates to stage and apply automatically on the production Puppet servers.\n\nSo, in our book, only having to update the beta server manually would be a significant improvement from where we are now, which is having to update _every_ Puppet server manually, and disable management of the {{bootstrap.cfg}} file until every single Puppet server is running the same version again.", "created": "2016-03-18T16:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Well, crud.  [~accountid:70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2] it might be useful for those tickets to be publicly visible", "created": "2016-03-18T17:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62438a418678e9007059bcca] just now had time to read through your last comments.  That makes a lot of sense.  We are going to have a design meeting in the next day or so to discuss next steps on this, I'll make sure that we discuss your suggestion of ignoring unrecognized services.", "created": "2016-03-21T11:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62438a418678e9007059bcca] we had a meeting to scope some work related to this today.  I'm going to convert this ticket into an epic that we can use to break the work into smaller tickets.\n\nThe tl", "created": "2016-03-22T13:47:00.000000"}, {"author": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "body": "I'm concerned about adding more complexity to bootstraps without fixing TK-211.", "created": "2016-03-22T17:20:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52] I don't think all the jira-ing has been completed yet, but when we talked about this earlier today that was one of the tickets that we thought we probably needed to do along with this work. I definitely agree with you that TK-211 seems pretty necessary to fix if we're going to add more complexity.", "created": "2016-03-22T17:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Agree, I will pull TK-211 into the epic right now.", "created": "2016-03-22T17:26:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], while I agree that isolating services that users shouldn't edit into a separate file is a good idea, dying on unknown service definitions still breaks forward compatibility.\n\nHere's an example. Let's say another service along the lines of the ca service is added, where there are two different service definition options, and one (and only one) must be defined. We test this on our beta Puppet server, and determine how we want to deploy this setting to the rest of our Puppet servers.\n\nBut now we are trapped in the exact same situation as before: if we push out the new {{service.d}} file to Puppet servers before we upgrade the puppetserver package, we will break them, because they will choke and die on the unrecognized service (whichever definition we chose for that particular server). And if we upgrade the puppetserver packages before we push out the new {{service.d}} file, we also break them, because -without the new {{service.d}} file, the updated Puppet servers will fail to start- the default {{service.d}} file that the new puppetserver package will drop may (from our perspective) misconfigure the server, which is often worse than just outright breaking it.\n\nI can't help but think there's a certain irony here: Puppet is an amazing tool to make system administrators' lives easier, but the Puppet server itself is\u2014at least to a degree\u2014special snowflake software that demands hand-holding for updates. And the Puppet server's stubborn refusal to admit that its future self might know how to support services that it doesn't recognize is the #1 reason why.\n\nThrow a huge warning if you want. Print all sorts of nasty messages in the log. Hell, cause the Puppet agents emit a warning on every catalog compile. But please, pretty please, _don't die_ if the Puppet server encounters an unknown service at startup. The only situation related to services in which the Puppet server should outright die on startup is when a critical service doesn't exist\u2014meaning, there is no way that the server can function without the missing service. For any other condition, obey the robustness principle and carry on.\n\nOtherwise, sooner or later, you're going to force Puppet admins into yet another round of kabuki-dance Puppet server upgrades. Because the paradox of forward compatibility is by the time you realize you need it\u2014it's too late.", "created": "2016-03-23T14:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62438a418678e9007059bcca] thanks for the additional example.  That helps.  From a technical perspective the change you're suggesting is not difficult, so we'll talk through it again and we can probably go ahead and add it unless anyone comes up with an example of a problem it might cause.", "created": "2016-03-28T16:53:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. a problem it might cause\n\n... would be a user who typos a service name.  If that service is not required to satisfy a dependency, Trapperkeeper will just go ahead and start up, and I can imagine it being quite difficult in certain cases to figure out why something wasn't working (like, say, an HTTP endpoint being unavailable) and tracing that all the way back to the fact that the service name had a typo in it.\n\nUnfortunately, I don't have an alternative solution to offer at this point in time, but considering Trapperkeeper as a standalone library, the proposed change seems like a bad one to me.", "created": "2016-03-31T14:11:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "{quote}\n... would be a user who typos a service name. If that service is not required to satisfy a dependency, Trapperkeeper will just go ahead and start up, and I can imagine it being quite difficult in certain cases to figure out why something wasn't working (like, say, an HTTP endpoint being unavailable) and tracing that all the way back to the fact that the service name had a typo in it.\n\nUnfortunately, I don't have an alternative solution to offer at this point in time, but considering Trapperkeeper as a standalone library, the proposed change seems like a bad one to me.\n{quote}\n\nI think this could be remediated though by a warning being logged, and I think that's a better scenario than what we currently have. If we think about how Trapperkeeper could potentially be used as a framework, there's several use cases for when someone might be editing a bootstrap.cfg:\n\n1. developing an application\na. developing an application, want to add a new trapperkeeper service that is not a dependency and typo it. This is the scenario that I think fits with what you're referring to. In this case, not having TK error out might make things a bit more difficult, but I think logging a warning would make this less of a problem. The user is most likely either running this from a repl or with `lein run` and the logs are just output to STDOUT so they would actually see this warning.\n\nb. developing an application, adding a trapperkeeper service that is a dependency and typoing it. In this case, TK will error out anyway, because there is a dependency not being fulfilled.\n\n2. deploying a trapperkeeper application - I think in most cases where a trapperkeeper application is deployed, it's going to have pre-written bootstrap.cfgs specifying all the dependencies. The one case where this might not be true is multiple implementations of a trapperkeeper service that the user can decide on, and they have already done so before upgrading. This is the scenario that [~accountid:62438a418678e9007059bcca] is talking about. Other tickets in this epic are dedicated to helping this situation some, but I do think that allowing users to specify a service that didn't exist before without having it error provides an important fix in this workflow.\n\nSome other scenarios: If a user is choosing between two service implementations and typos one of them but also leaves the other in (which isn't the one they wanted... and yet is for some reason left in), then they won't get an error, but they would get a warning in the log. Otherwise, if they typo one of them and comment the other out, they will get an error because the dependency isn't fulfilled. If they keep both in, the service will error once we have fixed TK-211.\n\nAre there other scenarios I'm not thinking of?\n", "created": "2016-03-31T14:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\na. developing an application, want to add a new trapperkeeper service that is not a dependency and typo it. This is the scenario that I think fits with what you're referring to. In this case, not having TK error out might make things a bit more difficult, but I think logging a warning would make this less of a problem. The user is most likely either running this from a repl or with `lein run` and the logs are just output to STDOUT so they would actually see this warning.\n{quote}\n\nThis is the only one of these that really still gives me pause, but after [~accountid:62438a418678e9007059bcca]'s most recent comments I've come around to agreeing that this scenario (with error logged, at least) is a justifiable tradeoff to achieve the forward-compatibility story that he describes.\n\nMeta-note: if we want to continue the discussion on whether or not to do TK-349, we should probably do so on TK-349.  For now, I'm operating on the assumption that we will do that work as part of this epic.", "created": "2016-03-31T15:18:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "QA is waiting for the next release so they can view the new behavior.", "created": "2016-06-20T17:02:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "I just kicked the tires on this in 2.5.0 While the update to 2.5.0 will still require manual intervention for sites that have modified the CA services, future upgrades should go a _lot_ smoother, thanks to these changes.\n\nThanks, all!", "created": "2016-08-12T10:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62438a418678e9007059bcca] np - thanks for the original suggestion and for helping us sort through options for a long-term solution!", "created": "2016-08-12T10:49:00.000000"}], "components": ["Puppet Server"], "created": "2016-03-16T23:45:00.000000", "creator": "62438a418678e9007059bcca", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ef33266"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "bootstrap.cfg upgrade UX"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo6z3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Joe will be adding some notes on this to the docs in the repo; we created SERVER-1470 to capture the write-up."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7665185693_*|*_6_*:*_2_*:*_10362101465_*|*_10013_*:*_1_*:*_605051277_*|*_10014_*:*_1_*:*_4838584125"}], "description": "NOTE: repurposing this ticket as an epic to capture smaller chunks of work.  Modifying the original description to capture our proposed path forward and some acceptance criteria.  Original description follows afterward.\n\n*Problem Statement:*\n\nOSS users who have modified their {{bootstrap.cfg}} file to support a multi-master setup (and thus have disabled the CA on their compile masters) are subject to a painful upgrade experience, because if the new package contains any changes to {{bootstrap.cfg}}, then the packaging system can't overlay the new config file due to the user's local changes.  If the user accepts the packaged version of the config file, their CA configuration will be broken, and if they opt to keep their local changes then the server may not start due to missing or invalid services that changed in the new package.\n\nThe crux of the issue is that {{bootstrap.cfg}} currently contains some configuration that we don't expect users to ever change, and some configuration that we do expect them to change.  We need a better mechanism for separating those two classes of configuration.\n\n*Acceptance Criteria:*\n\n* Users who are not managing / modifying their {{bootstrap.cfg}} file have been able to upgrade seamlessly, and the changes that result from this ticket must continue to allow for a seamless upgrade for these users.\n* Users who have been experiencing this issue will have to deal with it one more time when we roll out the changes described by this epic, but in subsequent releases we should be able to deliver a seamless upgrade experience.\n* We should at least look into some modules such as [jlambert121-puppet|https://github.com/jlambert121/jlambert121-puppet], and see if we can propose a change that will be compatible with both older and newer releases.  It seems like we'd need a way to detect the puppetserver version number in order to make that work, so I'm not 100% sure how feasible it is, but we should look into it.\n\n*Proposed Solution:*\n\n* Trapperkeeper will be updated to support loading and combining multiple bootstrap {{.cfg}} files, including from a {{conf.d}}-style directory containing multiple files\n* All of the base services that are required to run Puppet Server, which we do not expect a user to need to modify, will be moved to a {{puppetserver-bootstrap.cfg}} file, somewhere in the {{/opt}} directory, hidden from the user's normal interaction with configuration files.\n* We will remove the file {{/etc/puppetlabs/puppetserver/bootstrap.cfg}}, and in its place we will create a directory, {{/etc/puppetlabs/puppetserver/services.d}}, which Puppet Server will use (in addition to the file in {{/opt}}) when loading services at boot time.  By default this directory will contain a single file, {{ca.cfg}}, that will contain the default CA service.  If users wish to disable the CA (e.g. for compile masters), they would modify this file but the file in {{/opt}} would remain intact.\n\nOn the first upgrade after these changes are released, users who have disabled the CA will need to tweak how they are managing their CA settings to be aware of this new {{ca.cfg}} file instead of the old {{bootstrap.cfg}} file, but in subsequent releases, any packaged changes to the {{puppetserver-bootstrap.cfg}} file in {{/opt}} should apply cleanly without interfering with any CA customizations.\n\n\n*ORIGINAL DESCRIPTION:*\n----------------------------------\nThe TL;DR version: the monolithic {{bootstrap.cfg}} file makes Puppet server upgrades a flag-day nightmare to perform for sites that employ more than a single Puppet server.\n\nSo here's the problem:\n\nEach Puppet server version has a particular set of services that must be declared in the {{bootstrap.cfg}} file, or else the Puppet server will fail to start.\n\nFor example, Puppet server 2.3.0 needs this new service:\n\n{noformat}\npuppetlabs.services.versioned-code-service.versioned-code-service/versioned-code-service\n{noformat}\n\nIf this service is not specified in the {{bootstrap.cfg}} file, Puppet server 2.3.0 will fail to start.\n\nBut Puppet server has no *forward* compatibility when it comes to services specified in the {{bootstrap.cfg}} file, because the Puppet server will also fail to start if a service is specified in the {{bootstrap.cfg}} file that it doesn't know how to load.\n\nThis places sysadmins in a \"damned if you do, damned if you don't\" situation when it comes to Puppet server upgrades: if the {{bootstrap.cfg}} file is being managed by Puppet, it is _impossible_ to create a single {{bootstrap.cfg}} file template that will work across Puppet 2.3.0 and Puppet < 2.3.0 servers: the absence of the {{versioned-code}} service definition will cause Puppet server 2.3.0 to die, and the presence of the {{versioned-code}} service definition will cause Puppet server < 2.3.0 to die.\n\nThe fundamental problem here is that the {{bootstrap.cfg}} is erroneously commingling two _completely different_ types of data:\n\n# _required service definitions_ that depend on the specific version of the Puppet server installed on the system, and must not be removed or added by the sysadmin\n# _optional service definitions_ that depend on the intended use of the Puppet server, and are intended to be removed or added by the sysadmin\n\nThe {{versioned-code}} service definition is an example of #1, but the {{certificate-authority}} and {{certificate-authority-disabled}} services are examples of #2. And as long as both types of service definitions are commingled in the same file, it is only possible to upgrade that file cleanly (e.g., when a new version of Puppet server changes the required set of service definitions) if the file has never been modified by the sysadmin.\n\nExcept, oops: sites that have multiple Puppet servers _have no choice_ but to modify the {{bootstrap.cfg}} file on all Puppet servers except the CA server.\n\nFortunately, the way out of this mess is simple: split the {{bootstrap.cfg}} into a directory of individual files, a la the conf.d directory. All {{*.service}} files in the subdirectory will be loaded, in lexicographical order. Required, version-specific service definitions can be placed into a single file, while service definitions that a sysadmin may wish to modify should be placed into separate files. E.g.:\n\n* {{/etc/puppetlabs/puppetserver/services.d/core.service}}\n* {{/etc/puppetlabs/puppetserver/services.d/ca.service}}\n\nFor sites that have never modified the {{bootstrap.cfg}} file, this change should be transparent. For sites that _have_ modified the {{bootstrap.cfg}} file, every Puppet server upgrade is already a hands-on PITA anyway, so it's not going to be any worse than what we already have to deal with. And after the transition, future upgrades should no longer have this issue.\n\nThoughts?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15641", "fixedVersions": ["SERVER 2.5.0"], "id": "15641", "issueType": "Epic", "key": "SERVER-1213", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "62438a418678e9007059bcca", "resolution": "Fixed", "resolutionDate": "2016-08-15T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve UX for upgrades when users have modified bootstrap.cfg", "timeSpent": "PT0S", "updated": "2016-12-13T14:27:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] I think this may be the same as SERVER-528, which we always seem to run into again when doing smoke testing just prior to a release.  Not sure if you did an agent run at any point during your setup?  If this is the same issue, I'd say we close this in favor of that one.", "created": "2016-03-16T16:44:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] yup, looks like this is a different path to the same bug (though weird, i never ran puppet agent). Since fixing SERER-528 seems like it would fix this I'll mark this as a dupe.", "created": "2016-03-16T18:03:00.000000"}], "components": [], "created": "2016-03-16T16:30:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@282b7a6d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz53sv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5607926_*|*_6_*:*_1_*:*_0"}], "description": "Repro steps:\n\n* make a vm with 2gb ram\n* install puppetserver normally (2.3.0 or lower)\n* attempt to start puppet server; it will not start because the RAM is too low for the default jvm heap size\n* add RAM to the vm\n* attempt to start puppet server; it will fail with:\n\nException in thread \"main\" java.lang.IllegalStateException: Cannot initialize master with partial state; need all files or none.\nFound:\n/etc/puppetlabs/puppet/ssl/private_keys/vagrant-ubuntu-trusty-64.vpn.puppetlabs.net.pem\nMissing:\n/etc/puppetlabs/puppet/ssl/certs/vagrant-ubuntu-trusty-64.vpn.puppetlabs.net.pem\n\n        at puppetlabs.puppetserver.certificate_authority$eval13894$partial_state_error__13895$fn__13896.invoke(certificate_authority.clj:282)\n        at puppetlabs.puppetserver.certificate_authority$eval13894$partial_state_error__13895.invoke(certificate_authority.clj:267)\n        at puppetlabs.puppetserver.certificate_authority$eval14352$initialize_master_ssl_BANG___14353$fn__14354.invoke(certificate_authority.clj:650)\n        at puppetlabs.puppetserver.certificate_authority$eval14352$initialize_master_ssl_BANG___14353.invoke(certificate_authority.clj:634)\n        at puppetlabs.services.ca.certificate_authority_service$reify__19476$service_fnk__4369__auto___positional$reify__19487.initialize_master_ssl_BANG_(certificate_authority_service.clj:62)\n        at puppetlabs.services.protocols.ca$eval19425$fn__19439$G__19417__19443.invoke(ca.clj:3)\n        at puppetlabs.services.protocols.ca$eval19425$fn__19439$G__19416__19448.invoke(ca.clj:3)\n        at clojure.lang.AFn.applyToHelper(AFn.java:160)\n        at clojure.lang.AFn.applyTo(AFn.java:144)\n        at clojure.core$apply.invoke(core.clj:626)\n        at clojure.core$partial$fn__4228.doInvoke(core.clj:2468)\n        at clojure.lang.RestFn.invoke(RestFn.java:421)\n        at puppetlabs.services.master.master_service$reify__16375$service_fnk__4369__auto___positional$reify__16392.init(master_service.clj:39)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16397", "fixedVersions": [], "id": "16397", "issueType": "Bug", "key": "SERVER-1212", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Duplicate", "resolutionDate": "2016-03-16T18:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver left in broken state if it detects too little RAM on first boot", "timeSpent": "PT0S", "updated": "2016-03-21T11:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2016-04-01T20:33:00.000000", "name": "dp-catzero-static-vs-legacy-largefiles-1000agents-final.tgz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11186"}, {"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2016-03-15T17:06:00.000000", "name": "dp-catzero-static-vs-legacy-perf-tests.tgz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10868"}, {"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2016-04-04T11:10:00.000000", "name": "inlining-metrics.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10869"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The first round of testing that we did was to just capture a steady-state recording of an agent, classified with catalog zero, with and without static catalogs enabled.\n\nI ran the tests three times, on two different bare metal machines, and the results were pretty consistent across all of the runs.  In all cases the total average run time for an agent run (from the client perspective) was about 20-30% faster with static catalogs, and the average response time for catalog and report requests was about 10-15% faster.  We attribute this to there being so many fewer file metadata requests that there is less contention for server resources, and less context switching so that it can focus on the important work.\n\nAttaching {{dp-catzero-static-vs-legacy-perf-tests.tgz}} with all of the gatling results for these tests.  In each test directory there is also a {{.json}} file that includes the data from the status endpoint on the server captured every 10 minutes during the run.  If one were so inclined, it wouldn't be hard to write a little script that extracted values (e.g. the new puppet profiling data about catalog post-processing) from the JSON into a CSV which could then be graphed, e.g. in google spreadsheets.", "created": "2016-03-15T17:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "/cc [~accountid:63d40628f6e1b543161789a7] [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] [~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] [~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f] in case any of you are interested in looking at the data.", "created": "2016-03-15T17:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Did some follow-up tests intended to test the performance of the static_file_content endpoint, serving up fairly large files, vs. the old file_content endpoint.\n\nFor these tests, the catalogs included a single file resource, pointed at a directory on the server and using recursive = {{true}}.  The directory contained 25 files, each of which were about 70MB in size.\n\nThe initial runs that I did with this catalog were using 1000 simulated agents.  The gatling results are attached as dp-catzero-static-vs-legacy-largefiles-1000agents-final.txt .   It was clear from the results of this test that the server was not able to handle the amount of load generated by these agents, so there were a lot of failed requests.  However, the differences between the legacy vs. static runs was still very interesting.\n\nGatling itself has a timeout after which it will cancel any client requests that it is trying to make.  For these runs I had that timeout value set to 60s.  It's possible that in the future we should consider bumping that up higher because the agent itself, I believe, has a much higher (or infinite) timeout on the client side.\n\nIn both the legacy and the static catalog run, about 11% of the requests (out of about 50,000 total requests) failed, and all of the failures were due to this timeout.  However, in the case of the legacy catalog, the failures were scattered across all of the different endpoints", "created": "2016-04-01T20:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I attached a file called 'inlining-metrics.txt', which contains some JSON output from the Puppet Server status endpoint from some of the early runs.  The intent was to try to capture the performance overhead of the file checksum and other post-processing during the static catalog compilation process, in order to help us decide how much of a win it would be to do the work that would pull these checksums from git instead of computing them on the fly.\n\nThe first chunk of data in that file shows that for a legacy catalog compile (with our catalog zero run), catalog compilation was averaging about  800ms.\n\nThe second chunk shows that for a static catalog run (for catalog zero", "created": "2016-04-04T11:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The data from the 500-agent run that I mentioned earlier is not useful because of the fact that the operating system OOM-killed the legacy catalog run during the test.  Discarding this data.  I'd like to have more data on all of this stuff but for now I've decided that continuing to invest effort in these manual tests will not be as good of a ROI as pushing forward on the automation of these sorts of tests, so I'm going to close this ticket.", "created": "2016-04-04T11:26:00.000000"}], "components": [], "created": "2016-03-15T16:43:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1da3b79c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z1r:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Case created to represent testing work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14974_*|*_3_*:*_1_*:*_1708976978_*|*_5_*:*_1_*:*_15202938250_*|*_6_*:*_1_*:*_0"}], "description": "This ticket is a placeholder to capture results from manual gatling performance testing around Static Catalogs / Direct Puppet.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "14981", "fixedVersions": [], "id": "14981", "issueType": "Task", "key": "SERVER-1211", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-04-04T11:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Static catalog - manual gatling perf testing", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] there's *nothing* in {{puppetserver.log}} or {{puppetserver-daemon.log}}?\n\nWhat about in your syslog?  Any chance that the operating system is OOM-killing the process?", "created": "2016-03-15T16:11:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "No, it's not. Tried on 2 systems with 96G RAM and no other running processes.\n\nI just realized that we may have been trying this against an old release. Will try an upgrade and see if things are corrected.", "created": "2016-03-15T16:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, definitely keep us posted.  I'm almost positive we've had folks running with significantly more RAM than that, and I would definitely consider it to be a big issue that we need to resolve if it's not working.", "created": "2016-03-15T16:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] any news on this?  I'm really eager to get to help get to the bottom of it.", "created": "2016-04-01T11:35:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "Hi Chris,\n\nGo ahead and put this on the back burner for now.\n\nWe have to do the whole AIO overhaul to the entire SIMP stack to see if this is fixed so it's going to be a bit before we can finalize it.", "created": "2016-04-01T13:57:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] - not sure if you've encountered this one recently but in [SERVER-858|https://puppet.atlassian.net/browse/SERVER-858?focusedCommentId=328683&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-328683] we recently found that we could run into failures when a large amount of RAM is being used in conjunction with a large amount of {{max-requests-per-instance}}.  In that case, we concluded that having the extra memory allocated would allow for a larger number of file descriptors to be opened up without being garbage collected and, therefore, lead to a greater likelihood of the process exhausting its configured limit and failing.  I still would have expected to have seen some log output if this were the case, though, unlike what you mentioned in this ticket.\n\nIf you do run into this again, I'd be curious to know if the current workaround we're using of bumping the maximum open files for the Puppet Server process seems to mitigate the problem.", "created": "2016-07-27T17:39:00.000000"}], "components": ["Puppet Server"], "created": "2016-03-15T15:52:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45905df4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz52r3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1279477616_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_59280480907"}], "description": "When assigning more than 12G of RAM to the Puppet server Xmx setting, I am finding that it will routinely crash without any discernible log output or reason.\n\nDropping this to 10G or below appears to solve the issue.\n\nI would expect to be able to use more than 12G RAM when available.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14980", "fixedVersions": [], "id": "14980", "issueType": "Bug", "key": "SERVER-1210", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Fixed", "resolutionDate": "2018-02-14T13:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver dies when given max heap over 12G", "timeSpent": "PT0S", "updated": "2018-02-14T13:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "has testcase in testrail.  do later (RSN)", "created": "2017-05-23T16:40:00.000000"}], "components": [], "created": "2016-03-15T13:11:00.000000", "creator": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61598ec8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz52nj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_684752393_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_36825404324"}], "description": "Implement a regression test case for the issue raised in SERVER-1200", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16395", "fixedVersions": [], "id": "16395", "issueType": "Task", "key": "SERVER-1209", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "resolution": "Won't Do", "resolutionDate": "2017-05-23T16:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Acceptance: add test case for 'Server-1200'", "timeSpent": "PT0S", "updated": "2017-05-23T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This is still an issue even with the recent changes to execution.rb in puppetserver. The issue is that even when given an array of a single command, we turn it into a string before handing it off to the java layer. The java layer takes the string and in the case where there are no options (a single array element), hands it off to Apache commons exec to parse it, which turns the space separated command into two, the binary and arguments.\n\nI think the fix for this would be fairly easy.", "created": "2018-02-22T12:03:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Of note: the fix I have in mind would mean\n\n{{Puppet::Util::Execution.execute([\"'./bl uah.sh'\"])}} would no longer work, but {{Puppet::Util::Execution.execute(['./bl uah.sh'])}} would, which is the reverse of the current (broken) behavior. I'll see what MRI puppet does in this situation.", "created": "2018-02-22T12:04:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Here is the current MRI puppet behavior:\n\n{code}\nirb(main):003:0> Puppet::Util::Execution.execute(['./echo foo.sh'])\nPuppet::ExecutionFailure: Execution of './echo foo.sh' returned 1:\n\tfrom /Users/matthaus/src/puppet/lib/puppet/util/execution.rb:285:in `execute'\n\tfrom (irb):3\n\tfrom /usr/local/opt/ruby/bin/irb:11:in `<main>'\nirb(main):004:0> Puppet::Util::Execution.execute([\"'./echo foo.sh'\"])\n=> \"foo\\n\"\nirb(main):005:0> Puppet::Util::Execution.execute(['./echo\\ foo.sh'])\n=> \"foo\\n\"\n{code}", "created": "2018-02-22T12:08:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "So currently Puppetserver is consistent with MRI puppet, so this seems like something we shouldn't fix unless we're also \"fixing\" puppet.", "created": "2018-02-22T12:20:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The fix for this is pretty straightforward if we ever pick it up.\n\nhttps://github.com/puppetlabs/puppetserver/blob/5.1.x/src/ruby/puppetserver-lib/puppet/server/execution.rb#L35 <= if we take the {{!args.empty?}} check off the end then we will call the version of shellutils that won't have apache CommonsExec parse it for us.", "created": "2018-02-22T12:23:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "A simple test for this can be added to {{execution_spec.rb}} as follows:\n\n{code}\n    it \"should return the STDOUT of the process for a command with args\" do\n      result = test_execute(['./echo\\ foo.sh'])\n      expect(result).to eq \"foo\\n\"\n    end\n\n    it \"should return the STDOUT of the process for a command with args\" do\n      result = test_execute([\"./echo foo.sh\"])\n      expect(result).to eq \"foo\\n\"\n    end\n\n    it \"should return the STDOUT of the process for a command with args\" do\n      result = test_execute([\"'./echo foo.sh'\"])\n      expect(result).to eq \"foo\\n\"\n    end\n{code}\n\nAlong with a 'echo foo.sh' in the root of puppetserver with the following contents:\n\n{code}\n#!/bin/bash\n\necho \"foo\"\n{code}", "created": "2018-02-22T12:25:00.000000"}], "components": [], "created": "2016-03-14T09:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f4cfb41"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz51h3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_178714658_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_122165884853"}], "description": "When {{Puppet::Util::Execution.execute()}} is used to execute a file, the file fails to be found when passed via a single-argument array if the argument has space characters in it.\n\nFor this example, I stored a shell script with an echo command until the top-level directory of a Puppet/Puppet Server source repo:\n\n{code:bash|title=bl uah.sh}\n#! /bin/sh\n\necho \"blu ha ha\"\n{code}\n\nNote that these is a space character between \"bl\" and \"uah.sh\" in the name of the file.\n\nI stored the following Ruby file in the same directory:\n\n{code:ruby|title=execute_file_jruby.rb}\nrequire 'puppet'\nrequire 'puppet/server/execution'\n\nPuppet::Server::Execution.initialize_execution_stub\n\nbegin\n  puts Puppet::Util::Execution.execute(['./bl uah.sh'])\nrescue Exception => e\n  puts e.message\nend\n{code}\n\nI copied the \"./dev/puppet.server.conf.sample\" file to \"./dev/puppet.server.conf\" and then ran the following command to source the Ruby script:\n\n{noformat}\nlein ruby --config ./dev/puppet-server.conf ./execute_file_jruby.rb\n{noformat}\n\nRunning under Puppet Server 2.2.1, the following error occurred:\n\n{noformat}\nCannot run program \"./bl\": error=2, No such file or directory\n{noformat}\n\nRunning from commit [f2c4046|https://github.com/puppetlabs/puppet-server/commit/f2c4046a2ea14c10cce4b7312dffb7875e7a8363], where the fix for SERVER-1160 first landed into the puppet-server#stable branch, I saw good/expected output:\n\n{noformat}\nblu ha ha\n{noformat}\n\nRunning from commit [71155c|https://github.com/puppetlabs/puppet-server/commit/71155c61f75016cd2b95f492ccf3e4867bcc9419], where the fix for SERVER-1204 first landed into the puppet-server#stable branch, I saw an error again:\n\n{noformat}\nException while executing './bl': Cannot run program \"./bl\" (in directory \".\"): error=2, No such file or directory\n{noformat}\n\nUnder MRI Ruby 1.9.3 and against Ruby Puppet from source, I ran a fairly similar script to the one above, only using the built in ExecutionStub instead of the overridden one from Puppet Server:\n\n{code:ruby|title=execute_file_mri.rb}\nrequire 'puppet'\n\nbegin\n  puts Puppet::Util::Execution.execute(['./bl uah.sh'])\nrescue Exception => e\n  puts e.message\nend\n{code}\n\nI ran the following command to source the script:\n\n{noformat}\nruby ./execute_file_mri.rb\n{noformat}\n\nAgain, an error occurred:\n\n{noformat}\nExecution of './bl uah.sh' returned 1\n{noformat}\n\nI changed the argument to the {{execute}} method to escape the space character with a leading backslash:\n\n{code:ruby|title=execute_file_mri_escaped.rb}\nrequire 'puppet'\n\nbegin\n  puts Puppet::Util::Execution.execute(['./bl\\ uah.sh'])\nrescue Exception => e\n  puts e.message\nend\n{code}\n\nThis time, when I sourced the script, the expected output appeared:\n\n{noformat}\nblu ha ha\n{noformat}\n\nI changed the Puppet Server / JRuby-friendly version of the script to use a space character escaped with a leading backslash character:\n\n{code:ruby|title=execute_file_jruby_escaped.rb}\nrequire 'puppet'\nrequire 'puppet/server/execution'\n\nPuppet::Server::Execution.initialize_execution_stub\n\nbegin\n  puts Puppet::Util::Execution.execute(['./bl\\ uah.sh'])\nrescue Exception => e\n  puts e.message\nend\n{code}\n\nOn all three versions of Puppet Server code I tried from source - at 2.2.1 tag, at commit where fix for SERVER-1204 was merged, at commit where fix for SERVER-1160 was merged - an error was displayed.  In each case, the error appeared to be due to the backslash character somehow being converted to a forward-slash character.  For example, at the commit where the fix for SERVER-1204 was merged, I saw:\n\n{noformat}\nException while executing './bl/ uah.sh': Cannot run program \"./bl/ uah.sh\" (in directory \".\"): error=2, No such file or directory\n{noformat}\n\n----\n\nSummary:\n\n- No known version of Puppet Server appears to have supported the use case of calling the {{execute}} method with a single-argument array containing an executable with spaces in the name in a manner backward compatible with Puppet running under MRI Ruby.\n\n- The work done by the fix to SERVER-1160 got Puppet Server closer to supporting backward compatibility with running under the same scenario with MRI Ruby / Ruby Puppet, however, that work was undone somewhat by the fix for SERVER-1204.\n\n- It would seem that a more proper fix for this issue would involve undoing some of what the fix for SERVER-1204 did but would also involve investigating and possibly changing all other locations in Ruby Puppet code that might call into the {{execute}} method with a single-argument array, like the {{config_script}} code does, to only use the single-argument array when the parameter represents an executable name, as the underlying API originally specified, as opposed to possibly representing an executable with parameters.\n\n- For backward compatibility, it would seem that Puppet Server's implementation would also need to be enhanced to support de-escaping input parameters in a manner consistent with running Puppet under MRI - e.g., removing an escaping backslash in front of a space character - before interpreting the command for shell execution.\n\n----\n\nNote also that I'm not sure how exactly the ability to call into {{execute}} with a single-argument array where the argument has space characters in it is exposed from an \"end user\" perspective.  The {{generate}} Puppet parser function, for example, forbids the use of space characters in the first argument given to it - https://github.com/puppetlabs/puppet/blob/master/lib/puppet/parser/functions/generate.rb#L16-L20.  So while it might be nice to make Puppet Server's support for this more backward compatible with what could be done with Ruby running under MRI, I'm not sure what the practical external benefit for doing so would be at this time.\n\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14702", "fixedVersions": [], "id": "14702", "issueType": "Bug", "key": "SERVER-1208", "labels": ["needs_repro"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2020-01-29T09:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Execution.execute() doesn't handle space characters for single argument array", "timeSpent": "PT0S", "updated": "2020-01-29T09:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:0b6ef3a6-d623-44ac-bf82-08635bfbf6b1", "body": "My eyes were went dark.......\n\nI completely got it wrong. ", "created": "2016-03-14T04:45:00.000000"}], "components": ["Puppet Server"], "created": "2016-03-14T04:33:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:0b6ef3a6-d623-44ac-bf82-08635bfbf6b1", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@69db6e45"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz51fj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_711733_*|*_6_*:*_2_*:*_6251661336"}], "description": "I followed the instructions exactly as the following page:\n\nhttp://docs.puppetlabs.com/puppet/4.3/reference/quick_start.html#perform-pre-install-tasks\n\nNow puppetserver 2.2.1 has been installed and started successfully. \n\nAfter I created an user and a group, I tried to add the group to the Main Manifest just as the following page says:\n\nhttp://docs.puppetlabs.com/puppet/4.3/reference/quick_start_user_group.html\n\nthen I found out that I don't have the following directory:\n\n/etc/puppetlabs/code\n\nAll I got are:\n\nroot@puppet:~# ls -al /opt/puppetlabs/\ntotal 32\ndrwxr-xr-x 8 root root 4096  3\u6708 13 20:54 .\ndrwxr-xr-x 3 root root 4096  3\u6708 13 20:54 ..\ndrwxr-xr-x 2 root root 4096  3\u6708 13 20:54 bin\ndrwxr-xr-x 3 root root 4096  3\u6708 13 20:54 facter\ndrwxr-xr-x 3 root root 4096  3\u6708 13 20:54 mcollective\ndrwxr-xr-x 9 root root 4096  3\u6708 13 20:54 puppet\ndrwxr-xr-x 4 root root 4096  3\u6708 13 20:54 pxp-agent\ndrwxr-xr-x 5 root root 4096  3\u6708 13 20:54 server\n\nPlease help.", "environment": "Ubuntu 14.04 LTS\n\nLinux puppet 3.13.0-79-generic #123-Ubuntu SMP Fri Feb 19 14:27:58 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17432", "fixedVersions": ["SERVER 2.y"], "id": "17432", "issueType": "Bug", "key": "SERVER-1207", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:0b6ef3a6-d623-44ac-bf82-08635bfbf6b1", "resolution": "Cannot Reproduce", "resolutionDate": "2016-05-25T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Can't find /etc/puppetlabs/code after puppetserver installation and start", "timeSpent": "PT0S", "updated": "2016-05-25T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I left it in *open* intentionally because I wanted for us to remember to pull it in when the time is right.  If you'd prefer a different state, we can discuss at the next grooming meeting.", "created": "2016-03-17T13:02:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Moving to done as QA has marked this as low risk and there is no work left to be done on OSS puppet server.", "created": "2016-04-25T16:20:00.000000"}], "components": [], "created": "2016-03-11T17:42:00.000000", "creator": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71d92ae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynf6v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_266939779_*|*_1_*:*_1_*:*_2772833325_*|*_10007_*:*_1_*:*_762035131_*|*_3_*:*_1_*:*_77670498_*|*_5_*:*_1_*:*_2074856478_*|*_6_*:*_1_*:*_0"}], "description": "Based on the discussion in SERVER-392, adding a task here to change the github repo name to not have a hyphen in it. We'd need to understand and list all the different place this needs to change in AND do it post major release so we don't accidentally cause something to break. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16393", "fixedVersions": ["SERVER 2.4.0"], "id": "16393", "issueType": "Task", "key": "SERVER-1206", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "resolution": "Fixed", "resolutionDate": "2016-04-25T16:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "change the Puppet Server github repo name to not have a hyphen in it", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-03-11T14:53:00.000000", "creator": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@35066b0d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "SSL UX Improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz511r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_23932478763_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16771", "fixedVersions": [], "id": "16771", "issueType": "Epic", "key": "SERVER-1205", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "resolution": "Fixed", "resolutionDate": "2016-12-13T14:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SSL UX Improvements", "timeSpent": "PT0S", "updated": "2016-12-13T14:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Based on the information that professional services frequently replaces the config_version, I think this is a potential ship blocker.  We believe the default config_version is unaffected, so it's possible that others will disagree with my assessment.  Ping [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced].", "created": "2016-03-11T14:48:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] said \"1:47 PMbut as far as I understand it, the default is not super useful, and a lot of our customers rely on setting this to validate r10k deployments\"", "created": "2016-03-11T14:50:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Why this is happening: currently when passed a single-argument array to Puppet::Utils::Execution.execute, Puppet Server is parsing it and passing it to the command-and array-of-string-args arity of ShellUtils.executeCommand(), which is parsing it incorrectly. Instead, it should be passing it to the single string arity of ShellUtils.executeCommand().\n\nPuppet itself is wrapping the set config_version in an array, for reasons unknown: https://github.com/puppetlabs/puppet/blob/8cf98ae0dd7f84c61bfca4a498caa39a9d82b62b/lib/puppet/resource/type_collection.rb#L205\n", "created": "2016-03-11T14:51:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] can you comment on how impactful this is on customers? Is this a common practice?", "created": "2016-03-11T14:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "FWIW, it does seem like the code for config_version violates the intention of the {{Puppet::Util::Execution.execute}} API.  See https://github.com/puppetlabs/puppet/blob/4.3.2/lib/puppet/util/execution.rb#L113-L115:\n\n{code:ruby}\n # @param command [Array<String>, String] the command to execute. If it is\n #   an Array the first element should be the executable and the rest of the\n #   elements should be the individual arguments to that executable.\n{code}", "created": "2016-03-11T15:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#stable at [71155c|https://github.com/puppetlabs/puppet-server/commit/71155c61f75016cd2b95f492ccf3e4867bcc9419].", "created": "2016-03-11T23:35:00.000000"}, {"author": "557058:4d037d5f-6e67-465d-84d3-9631f5599649", "body": "I'm going to add a comment for posterity (or anyone reading through these comments).  We were getting the following error:\n\n{quote}\nServer Error: Exception while executing '/etc/puppetlabs/code/environments/production/scripts/config_version.sh': Cannot run program \"/etc/puppetlabs/code/environments/production/scripts/config_version.sh\" (in directory \".\"): error=2, No such file or directory on node <node>\n{quote}\n\nWhen we tried running the config_version.sh script by hand, we got:  \"Bad Interpreter: /bin/bash^M\"   The issue was dos line ending messing with the shebang line (and the script as a whole).  Running dos2unix fixed it right up.", "created": "2017-04-10T12:28:00.000000"}], "components": ["Puppet Server"], "created": "2016-03-11T14:34:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63ddb932"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynkjj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Release blocker"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_62886425_*|*_1_*:*_1_*:*_3547413_*|*_10007_*:*_1_*:*_2876552_*|*_3_*:*_1_*:*_2450740_*|*_5_*:*_1_*:*_17188993878_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1117546"}], "description": "When Puppet Server is passed a single-argument array where the argument is a string separated by spaces, it is currently parsing it incorrectly, resulting in an error.\n\nSince {{config_version}} typically gets sent to Puppet Server as such, this means that any puppet run that has {{config_version}} set will error out.\n\nFor example, when config_version is set in puppet.conf to something like\n\n{code}\nconfig_version = 'scripts/config_version.sh $environmentpath $environment'\n{code}\n\npuppet runs will error with\n\n{code}\nroot@puppet-master-burnside ~]# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Exception while executing '/etc/puppetlabs/code/environments/production/scripts/config_version.sh /etc/puppetlabs/code/environments production': Cannot run program \"/etc/puppetlabs/code/environments/production/scripts/config_version.sh /etc/puppetlabs/code/environments production\" (in directory \".\"): error=2, No such file or directory on node puppet-master-burnside\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n{code}\n\nThis is bad because user deployments rely on config version being properly set, and given the way puppet is written there isn't a workaround for this. The default of setting the config_version value to a timestamp will still work, but any user who already has it set and upgrades will have puppet runs error, and it won't be possible for users to set a more useful config_version.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16392", "fixedVersions": ["SERVER 2.3.0"], "id": "16392", "issueType": "Bug", "key": "SERVER-1204", "labels": ["burnside-ss", "tcse"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Fixed", "resolutionDate": "2016-03-12T10:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server not correctly parsing config_version script", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-03-11T14:22:00.000000", "creator": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade", "Server"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f7e2c19"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Performance Optimization"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo7g7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_53228384507_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14701", "fixedVersions": [], "id": "14701", "issueType": "Epic", "key": "SERVER-1203", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "resolution": "Done", "resolutionDate": "2017-11-17T16:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Performance Optimization", "timeSpent": "PT0S", "updated": "2017-11-17T16:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "https://clojuredocs.org/clojure.core/run! was introduced in clojure 1.7.0, which is why these warnings have just started to appear.", "created": "2016-03-09T15:42:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "Validated using {{puppet-enterprise-2016.1.0-rc2-495-g6038ccb}} on Centos6.\n\nThe above errors are not present in the install log file.\n{code}\n[root@ktyn8wdtsblrp27 puppet-enterprise-2016.1.0-rc2-495-g6038ccb-el-6-x86_64]# grep \"already refers to\" install_log.lastrun.ktyn8wdtsblrp27.delivery.puppetlabs.net.log\n[root@ktyn8wdtsblrp27 puppet-enterprise-2016.1.0-rc2-495-g6038ccb-el-6-x86_64]#\n{code}", "created": "2016-03-15T16:38:00.000000"}], "components": [], "created": "2016-03-09T15:15:00.000000", "creator": "557058:7e650c70-cd44-450a-b593-2c5daf3aa512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@795b9846"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4yw7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_68170220_*|*_1_*:*_1_*:*_1168877_*|*_10007_*:*_1_*:*_5755983_*|*_5_*:*_1_*:*_16912391561_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_444710468"}], "description": "Installing the latest build of PE and noticed the following warnings:\n\n\n{code:java}\n==> master.inf.puppetlabs.demo: Notice: /Stage[main]/Profile::Master::Puppetserver/Firewall[110 mcollective allow all]/ensure: created\n==> master.inf.puppetlabs.demo: Warning: Could not match WARNING: run! already refers to: #'clojure.core/run! in namespace: puppetlabs.puppetserver.cli.gem, being replaced by: #'puppetlabs.puppetserver.cli.gem/run!\n==> master.inf.puppetlabs.demo: Warning: Could not match WARNING: run! already refers to: #'clojure.core/run! in namespace: puppetlabs.puppetserver.cli.gem, being replaced by: #'puppetlabs.puppetserver.cli.gem/run!\n==> master.inf.puppetlabs.demo: Notice: /Stage[main]/Hiera::Eyaml/Package[puppetserver hiera-eyaml]/ensure: created\n==> master.inf.puppetlabs.demo: Info: /Stage[main]/Hiera::Eyaml/Package[puppetserver hiera-eyaml]: Scheduling refresh of Service[pe-puppetserver]\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15988", "fixedVersions": ["SERVER 2.3.0"], "id": "15988", "issueType": "Bug", "key": "SERVER-1202", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:7e650c70-cd44-450a-b593-2c5daf3aa512", "resolution": "Fixed", "resolutionDate": "2016-03-15T16:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "run! already defined for gem and irb subcommands", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "A commit including the merge commit (02328a9b5617c9e0746f9403bab099035ca96492) passed acceptance and was promoted into puppet-agent in commit https://github.com/puppetlabs/puppet-agent/commit/24fbcbdd0cfcccc7bc7acc15d099cd6fd12e7157.", "created": "2016-04-06T10:28:00.000000"}], "components": [], "created": "2016-03-09T12:38:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b668149"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4yn3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "I'm current community goalie, so this is part of that work."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_60492634_*|*_1_*:*_2_*:*_514825885_*|*_10007_*:*_1_*:*_89698340_*|*_3_*:*_1_*:*_882892553_*|*_5_*:*_1_*:*_3737496789_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_859957319"}], "description": "See title", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15640", "fixedVersions": ["SERVER 2.4.0"], "id": "15640", "issueType": "Task", "key": "SERVER-1199", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-04-06T10:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Review PUP-5482", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-03-09T12:20:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@16d804b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynowv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7841_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_61016471232"}], "description": "Continuation of work started in SERVER-1148.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16389", "fixedVersions": [], "id": "16389", "issueType": "Task", "key": "SERVER-1198", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-13T17:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Follow-on investigation for jruby-pool-int-test hangs in CI", "timeSpent": "PT0S", "updated": "2018-02-13T17:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2016-04-04T11:45:00.000000", "name": "burnside-hup-test-2week-final-report.tgz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10938"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Completed a gatling test that simulated 1000 agents running catalog zero over the course of about 2 weeks.  For most of the duration of this run, we had a script running in the background that, every thirty minutes, would take a capture of the output of the JSON from the puppet server status endpoint, and then sent a HUP signal to restart Puppet Server.\n\nI linked a google spreadsheet with a graph of the heap memory usage statistics from the JSON.  It shows that the heap usage was pretty stable and predictable over the course of the run, which helps validate that we don't have any memory leak issues associated with HUP.\n\nAlso attached the gatling results, which confirm that the server was pretty predictable, steady, and healthy throughout the run.  You will see a decent number of connection errors and \"remotely closed\" errors during the run", "created": "2016-04-04T11:50:00.000000"}], "components": [], "created": "2016-03-09T12:13:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7bb8cbc3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z0n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_95858_*|*_3_*:*_1_*:*_2144165179_*|*_5_*:*_1_*:*_15201679113_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_97173303"}], "description": "See SERVER-1164.", "epicLinkSummary": "Support HUP for faster restart", "estimate": "PT0S", "externalId": "15986", "fixedVersions": [], "id": "15986", "issueType": "Task", "key": "SERVER-1197", "labels": [], "originalEstimate": "PT0S", "parent": "16343", "parentSummary": "Support HUP for faster restart", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-04-04T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Placeholder ticket to watch long-running gatling tests for HUP", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#stable at [a35206|https://github.com/puppetlabs/puppet-server/commit/a35206571d66c428d0e4602143892cb26770a7d5].", "created": "2016-03-11T23:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed full Jenkins CI job at https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-stable/119/.\n\nSince this just involved changes to unit tests, I don't think there's anything for QA to specifically review, so I'm closing this out.  /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2016-03-11T23:54:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This failed again on this [travis run|https://travis-ci.org/puppetlabs/puppetserver/jobs/123193556] for [this PR|https://github.com/puppetlabs/puppetserver/pull/1016#issuecomment-210546402] with this info:\n{code}\nlein test :only puppetlabs.services.master.environment-classes-int-test/environment-classes-integration-cache-enabled-test\nERROR in (environment-classes-integration-cache-enabled-test) (HttpAsyncRequestExecutor.java:341)\nUncaught exception, not in assertion.\nexpected: nil\n  actual: org.apache.http.ConnectionClosedException: Connection closed\n at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput (HttpAsyncRequestExecutor.java:341)\n    org.apache.http.impl.nio.client.InternalRequestExecutor.endOfInput (InternalRequestExecutor.java:132)\n    org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput (DefaultNHttpClientConnection.java:263)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:81)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:39)\n    org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady (AbstractIODispatch.java:123)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.readable (BaseIOReactor.java:164)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent (AbstractIOReactor.java:339)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents (AbstractIOReactor.java:317)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.execute (AbstractIOReactor.java:278)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.execute (BaseIOReactor.java:106)\n    org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run (AbstractMultiworkerIOReactor.java:590)\n    java.lang.Thread.run (Thread.java:745)\n{code}\n\nThought I'd ping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] here and see if there was anything I can do to help the investigation.", "created": "2016-04-15T12:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:557058:104b5720-714d-4539-b455-df472251ec89].  I hadn't seen this in a while so hadn't been investigating it.  Looks like from the puppetserver.log in the Travis output that the test might be issuing a request to flush the environment cache but the request never returns before the connection times out / shuts down:\n\n{noformat}\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> DELETE /puppet-admin-api/v1/environment-cache?environment=production HTTP/1.1\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> accept-encoding: gzip, deflate\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> Host: localhost:8140\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> Connection: Keep-Alive\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.headers] http-outgoing-163 >> User-Agent: Apache-HttpAsyncClient/4.1.1 (Java/1.7.0_76)\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-163 127.0.0.1:51201<->127.0.0.1:8140[ACTIVE][rw:][ACTIVE][rw][NEED_UNWRAP][0][0][226][0]: Event set [w]\n2016-04-15 17:59:28,854 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.MainClientExec] [exchange: 204] Request completed\n2016-04-15 18:00:34,581 DEBUG [Finalizer] [o.a.h.i.n.c.PoolingNHttpClientConnectionManager] Connection manager is shutting down\n...\n2016-04-15 18:00:34,679 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-163 127.0.0.1:51201<->127.0.0.1:8140[ACTIVE][rw:rw][ACTIVE][rw][NEED_WRAP][EOF][][7][0][2004][0]: -1 bytes read\n2016-04-15 18:00:34,679 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.InternalIODispatch] http-outgoing-163 [ACTIVE] End of input\n2016-04-15 18:00:34,679 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-163 127.0.0.1:51201<->127.0.0.1:8140[ACTIVE][rw:rw][ACTIVE][rw][NEED_WRAP][EOF][][7][0][2004][0]: Shutdown\n2016-04-15 18:00:34,679 DEBUG [I/O dispatcher 6305] [o.a.h.i.n.c.InternalHttpAsyncClient] [exchange: 204] connection aborted\n{noformat}\n\nThere's a gap of over a minute, followed by the connection being aborted.  Contrast that with an earlier environment-cache request which was successful:\n\n{noformat}\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> DELETE /puppet-admin-api/v1/environment-cache HTTP/1.1\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> accept-encoding: gzip, deflate\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> Host: localhost:8140\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> Connection: Keep-Alive\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.headers] http-outgoing-158 >> User-Agent: Apache-HttpAsyncClient/4.1.1 (Java/1.7.0_76)\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-158 127.0.0.1:51177<->127.0.0.1:8140[ACTIVE][rw:][ACTIVE][rw][NEED_UNWRAP][0][0][226][0]: Event set [w]\n2016-04-15 17:59:27,912 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.MainClientExec] [exchange: 199] Request completed\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-158 127.0.0.1:51177<->127.0.0.1:8140[ACTIVE][rw:w][ACTIVE][rw][NOT_HANDSHAKING][0][0][261][0]: 194 bytes written\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"DELETE /puppet-admin-api/v1/environment-cache HTTP/1.1[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"accept-encoding: gzip, deflate[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"Host: localhost:8140[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"Connection: Keep-Alive[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"User-Agent: Apache-HttpAsyncClient/4.1.1 (Java/1.7.0_76)[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 >> \"[\\r][\\n]\"\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.InternalIODispatch] http-outgoing-158 [ACTIVE] Request ready\n2016-04-15 17:59:28,068 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-158 127.0.0.1:51177<->127.0.0.1:8140[ACTIVE][r:w][ACTIVE][r][NOT_HANDSHAKING][0][0][0][0]: Event cleared [w]\n2016-04-15 17:59:28,074 INFO  [qtp2020514110-7670] [p.s.j.puppet-environments] Marking all registered environments as expired.\n2016-04-15 17:59:28,084 DEBUG [I/O dispatcher 6145] [o.a.h.i.n.c.ManagedNHttpClientConnectionImpl] http-outgoing-158 127.0.0.1:51177<->127.0.0.1:8140[ACTIVE][r:r][ACTIVE][r][NOT_HANDSHAKING][0][0][0][0]: 123 bytes read\n2016-04-15 17:59:28,084 DEBUG [I/O dispatcher 6145] [o.a.h.wire] http-outgoing-158 << \"HTTP/1.1 204 No Content[\\r][\\n]\"\n...\n{noformat}\n\nNote that a \"Marking all registered environments\" message appears in the output of the successful request but not in the output of the aborted one.  Maybe the request is getting hung up on iterating over the registered JRuby instances or somewhere even earlier?  The absence of the Jetty \"Request ready\" message from the failed request - with its presence in the second one - suggests that maybe the request is stalling out before Jetty is able to consume / route it to a handler.\n\nI'm not sure what the \"exchange: 204\" means from the failed request but I don't think it's related to the HTTP 204 response that the server would normally return if this request were successful.  I think it's some sort of request counter that Jetty bumps up as new requests are processed.\n\nSince I'm still not sure if this gives us enough to reproduce the issue specifically, I'm inclined to think that we may need to go through another round of instrumentation like we did in this ticket.   This time we might try to catch / rethrow the exception for the environment-cache delete requests - so we can see at what point in the test it is happening - like we did with the environment-classes requests in the PR for this ticket.  Also, I think it would be good to try to capture a stack trace of all of the running threads at the point of the failure so we can see where the environment-cache delete request might be getting hung up.\n\nI'll file a follow up ticket to cover next steps and we can talk in the grooming meeting next week about what we want to do with it.  Thanks, [~accountid:557058:104b5720-714d-4539-b455-df472251ec89], for pointing this out.", "created": "2016-04-15T13:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Submitted a follow-up investigation ticket as SERVER-1269.", "created": "2016-04-15T14:00:00.000000"}], "components": [], "created": "2016-03-09T10:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@538c997e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4yk7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1062305_*|*_1_*:*_1_*:*_4450385_*|*_10007_*:*_1_*:*_115287293_*|*_3_*:*_1_*:*_75113392_*|*_5_*:*_1_*:*_17228083382_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_25204674"}], "description": "The {{environment-classes-integration-cache-enabled-test}} has failed in Travis CI a couple of times, to my knowledge.  The failure looks like this:\n\n{noformat}\nERROR in (environment-classes-integration-cache-enabled-test) (HttpAsyncRequestExecutor.java:341)\n\nUncaught exception, not in assertion.\nexpected: nil\n\n  actual: org.apache.http.ConnectionClosedException: Connection closed\n at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput (HttpAsyncRequestExecutor.java:341)\n    org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput (DefaultNHttpClientConnection.java:263)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:81)\n    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch.java:39)\n    org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady (AbstractIODispatch.java:123)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.readable (BaseIOReactor.java:164)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent (AbstractIOReactor.java:339)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents (AbstractIOReactor.java:317)\n    org.apache.http.impl.nio.reactor.AbstractIOReactor.execute (AbstractIOReactor.java:278)\n    org.apache.http.impl.nio.reactor.BaseIOReactor.execute (BaseIOReactor.java:106)\n    org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run (AbstractMultiworkerIOReactor.java:590)\n    java.lang.Thread.run (Thread.java:745)\n{noformat}\n\nSee https://travis-ci.org/puppetlabs/puppet-server/jobs/114673826 for one instance of this.\n\nThe exception seems to indicate that an HTTP client request has failed.  The test does have many instances of those.  It's hard to tell from this trace which request failed, however.  I don't have any good theories at this point as to why such a failure would be occurring since all of the HTTP client requests that are made should be happening while the server is still up and running.\n\nGiven the low frequency at which this failure has occurred, will probably need to do some instrumentation to the tests and hopefully be lucky in seeing the test fail with the more useful instrumentation in place.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14979", "fixedVersions": ["SERVER 2.3.0"], "id": "14979", "issueType": "Bug", "key": "SERVER-1196", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-03-11T23:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate env-class-integration-cache-enabled-test failure", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "attachments": [], "comments": [{"author": "557058:d3df6504-2a03-49ea-8d6b-9a18d77e1e85", "body": "That PR should fix the case I detailed in PE-145111, thanks. But I'm wondering why we don't look at the paths in the modulepath defined by the environment to determine where all the modules are (and the files within them)? Eg for arguments sake, I could include \"/home/jane/modules\" in an environment's modulepath. Or I could decide to move the 'site' directory to 'my/modules' within the top level of the environment directory.  \n\nAlso, if you have heira data files in the environment and happen to use a directory named 'files' (eg /etc/puppetlabs/code/environments/production/heiradata/files/common.yaml) they could get served up by the file server too (although perhaps other access restrictions would kick in). ", "created": "2016-03-08T17:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:d3df6504-2a03-49ea-8d6b-9a18d77e1e85] the reason is because it is incredibly difficult and slow to get access to the environment's modulepath setting value from the server.  We're trying to map out some long-term improvements to how Puppet handles it's settings that would eliminate that technical obstacle, and when that happens the solution you're describing is definitely the correct one.", "created": "2016-03-08T17:52:00.000000"}, {"author": "557058:d3df6504-2a03-49ea-8d6b-9a18d77e1e85", "body": "Yeah OK, thanks [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]. Does this mean we need to document where exactly you can place modules that you want to have work with static catalogs? ", "created": "2016-03-08T18:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:d3df6504-2a03-49ea-8d6b-9a18d77e1e85] maybe?  The PUP ticket involves updating the catalog compiler so that it will only attempt static compilation for file resources that match this same pattern.  Any file resources that are located elsewhere, so the end result should be that the compiler/agent will fall back to the old behavior for any files that don't conform to this, and thus, it should not cause failures.  But if we wanted to document the locations so that users would know where they could put files in order to make sure they are taking advantage of the consistency guarantees and performance benefits that you get from static catalogs, that would make sense.\n\n/cc [~accountid:557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f]", "created": "2016-03-08T18:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "or... [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]", "created": "2016-03-08T18:50:00.000000"}, {"author": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I would like to add this to the PE docs for sure, but can I please get you--or someone--to summarize \" the locations so that users would know where they could put files in order to make sure they are taking advantage of the consistency guarantees and performance benefits that you get from static catalogs\", in this ticket or another one? ", "created": "2016-03-09T09:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] can you get someone to take a stab at pre-docs for this?  maybe as a PR on top of what [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] has already done?", "created": "2016-03-09T10:30:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] - Do you have any thoughts on how best to document that?  It seems like it perhaps is best suited for the general \"static catalogs\" doc you wrote in the puppet-docs repo?  Or ... perhaps it just belongs agent-side?", "created": "2016-03-09T12:33:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] I don't fully understand the scope of this change, but as I understand it now both the API endpoint docs in puppetserver and the general static catalogs docs in puppet-docs need updates. (Also [~accountid:557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f]'s PE docs probably need to specify this in the context of identifying which files are handled by static catalogs, but that'll build off whatever OSS docs updates we make.)", "created": "2016-03-09T12:36:00.000000"}, {"author": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e], yes, +1, to your above point about PE docs.", "created": "2016-03-10T12:10:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:623c0a337910a200718b9059] [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] this ticket seems like the best place to add a follow-up note about known multi-level modulepath components.\n\nPortland State University (my old job) is a shop that used to have deeper-than-one-level moduledir(s). Specifically, they had two control repos for two different environments that looked like the following:\n\n{code:title=legacy environment #1}\ncontrol-repo\n\u2514\u2500\u2500 modules\n    \u251c\u2500\u2500 internal\n    \u2502\u00a0\u00a0 \u2514\u2500\u2500 <modules>\n    \u251c\u2500\u2500 public\n    \u2502\u00a0\u00a0 \u2514\u2500\u2500 <modules>\n    \u2514\u2500\u2500 restricted\n     \u00a0\u00a0 \u2514\u2500\u2500 <modules>\n{code}\n\n{code:title=legacy environment #2}\ncontrol-repo\n\u2514\u2500\u2500 modules\n    \u251c\u2500\u2500 dist\n    \u2502\u00a0\u00a0 \u2514\u2500\u2500 <modules>\n    \u2514\u2500\u2500 site\n        \u2514\u2500\u2500 <modules>\n{code}\n\nThey structured things this way because it was a pre-r10k/Puppetfile environment and there was no incentive to keep each moduledir at the top level of the control-repo. The ubiquity of r10k and its ability to auto-expand a Puppetfile is likely the main glue we have enforcing/guiding the {{control-repo/modules}} + {{control-repo/site}} pattern.\n\nI just asked some of the current admins a few questions on IRC. Their modulepath is still two-level, and they run Puppet 4.x. PSU still doesn't use r10k.", "created": "2016-03-10T13:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks [~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49].\n\nOne other thought that I had about this is that our original proposal for the implementation was to manage the ACL via tk-auth.  There were discussions about that potentially not being secure enough, or users making a mistake in their tk-auth config that would make it insecure.\n\nIf we went back to that approach, the ACL could be configured to match whatever file structure the user desired.", "created": "2016-03-10T14:27:00.000000"}], "components": [], "created": "2016-03-08T15:56:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c8f2b6f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynkf3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bug in direct puppet functionality"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_67939206_*|*_1_*:*_1_*:*_4340355_*|*_10007_*:*_1_*:*_85629406_*|*_3_*:*_1_*:*_1015612_*|*_5_*:*_1_*:*_16933944220_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_423256229"}], "description": "Code which appears to need changing is:\n{code}\n(schema/defn ^:always-validate valid-static-file-path?\n  \"Helper function to decide if a static_file_content path is valid.\n  The access here is designed to mimic Puppet's file_content endpoint.\"\n  [path :- schema/Str]\n  (when-let [canonicalized-path (decode-and-canonicalize-path path)]\n     ;; Here, keywords represent a single element in the path. Anything between two '/' counts.\n     ;; The second vector takes anything else that might be on the end of the path.\n     ;; Below, this corresponds to 'modules/*/files/**' in a filesystem glob.\n     (bidi.bidi/match-route [[\"modules/\" :module-name \"/files/\" [#\".*\" :rest]] :_]\n                            canonicalized-path)))\n{code}\n\nNote the {{modules/}} in that.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15288", "fixedVersions": ["SERVER 2.3.0"], "id": "15288", "issueType": "Bug", "key": "SERVER-1195", "labels": ["burnside-ss"], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-03-15T10:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "/static_file_content should serve files from any directory, not just modules/", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-03-08T13:20:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@387cd2e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynkdj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Brought in due to direct puppet changes"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_65614772_*|*_1_*:*_1_*:*_60823_*|*_10007_*:*_1_*:*_13152282_*|*_3_*:*_1_*:*_89473809_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_41215408"}], "description": "Currently, we treat the environment (code id and code content) and code-id (content only) as opaque strings that are passed to user defined scripts. We currently do zero validation on those inputs.\n\nWe have been unable to determine an attack vector here since ShellUtils properly escapes the strings it passes to the scripts we're calling, but it still seems wise to set up some bounds on those inputs.\n\nWe already have a regex rule for code id (we use it for checking the output of the user defined code id script). For environment, use \"\\w+\" (this matches what is in puppet).\n\nWe're already doing sufficient validation on the file path passed to code content script and this ticket doesn't include touching that at all.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "16387", "fixedVersions": ["SERVER 2.3.0"], "id": "16387", "issueType": "Bug", "key": "SERVER-1194", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-10T23:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate inputs to code-content-script and code-id-script", "timeSpent": "PT0S", "updated": "2016-03-10T23:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#stable at [e90228|https://github.com/puppetlabs/puppet-server/commit/e902288a45286ec8c3a8a15e185050351864d62c].", "created": "2016-03-04T12:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Full Jenkins CI run was green for a later commit - https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-stable/103/.\n\n[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], since this was a unit test change only - no code change - I'm just going to move this to done.  Just CCing for visibility.", "created": "2016-03-08T18:26:00.000000"}], "components": [], "created": "2016-03-04T11:22:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e57b61f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4wc7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found per Travis failures"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_368150537_*|*_1_*:*_1_*:*_13251_*|*_10007_*:*_1_*:*_1842118_*|*_3_*:*_1_*:*_1013850_*|*_5_*:*_1_*:*_17507126170_*|*_6_*:*_1_*:*_0"}], "description": "The {{ruby-autosign-executable-false}} script, used by the {{handle-put-certificate-request!-test}}, needs to consume all stdin now because of a race condition between the use of JDK 8 and the new shellutils library that the CA uses to launch autosign executables, per the changes integrated in SERVER-1094.  Not consuming all of stdin otherwise can cause the test to fail periodically with error output like the following:\n\n{noformat}\nlein test :only puppetlabs.services.ca.certificate-authority-core-test/handle-put-certificate-request!-test\n\nERROR in (handle-put-certificate-request!-test) (ShellUtils.java:96)\nUncaught exception, not in assertion.\nexpected: nil\n  actual: java.lang.IllegalStateException: Exception while executing '/home/travis/build/puppetlabs/puppet-server/./dev-resources/puppetlabs/services/ca/certificate_authority_core_test/autosign/ruby-autosign-executable-false': Stream closed\n at com.puppetlabs.puppetserver.ShellUtils.executeCommand (ShellUtils.java:96)\n    com.puppetlabs.puppetserver.ShellUtils.executeCommand (ShellUtils.java:158)\n    puppetlabs.puppetserver.shell_utils$eval20050$execute_command_streamed__20059$fn__20062.invoke (shell_utils.clj:75)\n    puppetlabs.puppetserver.shell_utils$eval20050$execute_command_streamed__20059.invoke (shell_utils.clj:64)\n    puppetlabs.puppetserver.shell_utils$eval20092$execute_command__20101$fn__20104.invoke (shell_utils.clj:94)\n    puppetlabs.puppetserver.shell_utils$eval20092$execute_command__20101.invoke (shell_utils.clj:85)\n  puppetlabs.puppetserver.certificate_authority$eval21015$execute_autosign_command_BANG___21020$fn__21021.invoke (certificate_authority.clj:758)\n    puppetlabs.puppetserver.certificate_authority$eval21015$execute_autosign_command_BANG___21020.invoke (certificate_authority.clj:739)\n    puppetlabs.puppetserver.certificate_authority$eval21148$autosign_csr_QMARK___21153$fn__21154.invoke (certificate_authority.clj:825)\n    puppetlabs.puppetserver.certificate_authority$eval21148$autosign_csr_QMARK___21153.invoke (certificate_authority.clj:813)\n    puppetlabs.puppetserver.certificate_authority$eval21340$process_csr_submission_BANG___21345$fn__21349.invoke (certificate_authority.clj:949)\n    puppetlabs.puppetserver.certificate_authority$eval21340$process_csr_submission_BANG___21345.invoke (certificate_authority.clj:934)\n  puppetlabs.services.ca.certificate_authority_core$eval32213$handle_put_certificate_request_BANG___32218$fn__32219.invoke (certificate_authority_core.clj:49)\n    puppetlabs.services.ca.certificate_authority_core$eval32213$handle_put_certificate_request_BANG___32218.invoke (certificate_authority_core.clj:44)\npuppetlabs.services.ca.certificate_authority_core_test$fn__32455$fn__32458$fn__32459$fn__32462$fn__32511$fn__32516.invoke (certificate_authority_core_test.clj:159)\n    puppetlabs.services.ca.certificate_authority_core_test$fn__32455$fn__32458$fn__32459$fn__32462$fn__32511.invoke (certificate_authority_core_test.clj:155)\n    puppetlabs.services.ca.certificate_authority_core_test$fn__32455$fn__32458$fn__32459$fn__32462.invoke (certificate_authority_core_test.clj:147)\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16386", "fixedVersions": ["SERVER 2.3.0"], "id": "16386", "issueType": "Bug", "key": "SERVER-1193", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-03-08T18:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consume stdin in ruby-autosign-executable-false test script", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Added in commit [e6996a1|https://github.com/gguillotte/puppet-server/commit/e6996a142a46cee0cd6cf21974cbfb20eedafa8a] in existing [PR 949|https://github.com/puppetlabs/puppet-server/pull/949#discussion_r55445766].", "created": "2016-03-09T11:56:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "PR merged.", "created": "2016-03-09T12:10:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Resolved sted closed", "created": "2016-03-09T12:11:00.000000"}], "components": [], "created": "2016-03-03T11:38:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a9d6368"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4vgf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_519449809_*|*_10009_*:*_1_*:*_901819_*|*_5_*:*_1_*:*_17443256092_*|*_6_*:*_2_*:*_51109"}], "description": "https://github.com/puppetlabs/puppet-server/blob/master/documentation/restarting.markdown\n\nWe should document that modifications to bootstrap.cfg require a full restart.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16164", "fixedVersions": ["SERVER 2.3.0"], "id": "16164", "issueType": "Improvement", "key": "SERVER-1192", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-03-09T12:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document that modifications to bootstrap.cfg require a full restart, not just a HUP.", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2016-03-02T16:44:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d6d52d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4v33:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "got several requests for it, didn't want to lose context"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_51955_*|*_3_*:*_1_*:*_5286_*|*_5_*:*_1_*:*_18031623883_*|*_6_*:*_1_*:*_0"}], "description": "Write up some notes / a tutorial about how to debug Puppet Server memory leak issues, using the recent hiera-eyaml support escalation as an example.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14699", "fixedVersions": [], "id": "14699", "issueType": "Task", "key": "SERVER-1191", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-03-02T16:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "write notes / tutorial about memory debugging", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-03-02T16:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1929c36a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4v1r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_586152628_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_126498160675"}], "description": "The current implementation of the JRuby pool initialization spins off a single chunk of work on an agent thread, to initialize the entire pool.\n\nThis work is done asynchronously, so the rest of the app can do other things while the initialization is occurring.  If a shutdown is triggered, it schedules an action on the same agent thread.  Therefore, the shutdown action can't be performed until the agent thread becomes available, which means waiting to finish all of the pool initialization work, which is unnecessary work if we're just going to immediately shutdown anyway.\n\nIt'd be better if we had a way to cancel out of this initialization work once we noticed that a shutdown was requested.  One possible implementation of this might be to do something similar to what is described in TK-331; if we used a core.async channel to schedule the work, and if we scheduled each JRuby instance initialization as a separate unit of work instead of initializing the entire pool all in one go, it might not be too hard to bail early if a shutdown was triggered.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15983", "fixedVersions": [], "id": "15983", "issueType": "Improvement", "key": "SERVER-1190", "labels": ["refactoring"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2020-03-12T14:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "don't continue initializing JRuby pool if a shutdown is triggered", "timeSpent": "PT0S", "updated": "2020-03-12T14:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Some of this refactoring will likely happen as part of other work, so closing this.", "created": "2018-02-13T17:16:00.000000"}], "components": ["Puppet Server"], "created": "2016-03-02T15:48:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@722a9dad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynczz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_585038782_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_61023434749"}], "description": "Currently there are settings in the {{jruby-puppet}} config block that have nothing to do with JRuby (e.g. {{environment-class-cache-enabled}}). We should separate these out to some kind of {{puppetserver}} config block.\n\nIn addition, we should add a schema for what is allowed in the config file, in addition to what is required to be passed around for doing jruby things.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16978", "fixedVersions": [], "id": "16978", "issueType": "Improvement", "key": "SERVER-1189", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Won't Do", "resolutionDate": "2018-02-13T17:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Refactor jruby-puppet config block and create schema for config file", "timeSpent": "PT0S", "updated": "2018-02-13T17:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-03-02T11:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74e6218d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "minor CA / auth / SSL improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo75z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5281814230_*|*_6_*:*_1_*:*_0"}], "description": "A set of minor improvements around the usage of some of our current security measures.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15287", "fixedVersions": [], "id": "15287", "issueType": "Epic", "key": "SERVER-1188", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-05-02T15:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "minor CA / auth / SSL improvements", "timeSpent": "PT0S", "updated": "2016-05-25T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We merged an initial implementation of this to puppet-server#master at [1673f8|https://github.com/puppetlabs/puppet-server/commit/1673f849c286d5eaa0a46b0421d63f16de044c56].  That PR had put the new config setting under a new config section called {{puppetserver}}.\n\nBased on later conversations that [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] and [~accountid:70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2] had about the location of the setting, we decided instead to relocate it to the pre-existing {{jruby-puppet}} section so as not to further pollute the number of configuration sections that we already have and potentially confuse users in the process.  A follow-up PR to relocate the setting was merged to puppet-server#master at [f44185|https://github.com/puppetlabs/puppet-server/commit/f441857d90429e290b478f3ae6342f45c36f1cf3].\n\nThe resulting CI run from the second PR merged \"mostly\" passed through CI.  There were a couple of known / pre-existing test failures - https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-master/142/#showFailuresLink.  Those are both Ruby Puppet acceptance test issues and are being covered by PUP-5996 and PUP-5997.\n\nMoving this to the \"testing\" column.\n\n", "created": "2016-03-03T15:58:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "Validated by [~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6]", "created": "2016-03-16T09:57:00.000000"}], "components": [], "created": "2016-03-01T17:42:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29878f2e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynkkf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found the need to do this from Product / CS feedback on the environment_classes endpoint."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_102792518_*|*_1_*:*_1_*:*_284211_*|*_10007_*:*_1_*:*_9534741_*|*_3_*:*_1_*:*_53906918_*|*_5_*:*_1_*:*_16850049202_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1097968821"}], "description": "Where it is possible that the caching behaviors that the new environment_classes endpoint uses may be confusing / disruptive to current users, we've been asked to add a configuration setting to Puppet Server which would allow the caching behavior to be enabled or disabled per user choice.\n\nOur current proposal is to have the new setting be called {{environment-class-cache-enabled}} and live under the existing {{jruby-puppet}} Trapperkeeper config section.  The supported values for the setting would be:\n\n* {{true}} - Calls to environment_classes would compute and return an Etag response header along with the class info response and requests with an If-None-Match header will be validated against the previously stored tags in Puppet Server's in-memory cache, returning an HTTP 304 (Not Modified) if the tags match or re-parsing manifests / returning a new response body if not.\n\n* {{false}} - Calls to environment_classes would not include an Etag response header and an incoming If-None-Match header will be ignored.\n\nThe default value of the new setting would be {{false}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14978", "fixedVersions": ["SERVER 2.3.0"], "id": "14978", "issueType": "New Feature", "key": "SERVER-1185", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-03-16T09:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add configurable way to turn off environment_classes cache", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-02-29T13:34:00.000000", "name": "init.pp", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11261"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We think this goes away when PSON is removed, so probably not worth investing effort into.  We can re-open if it is causing problems.", "created": "2016-03-02T11:32:00.000000"}], "components": [], "created": "2016-02-29T13:46:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11ff2ff3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4so7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_164775222_*|*_6_*:*_1_*:*_0"}], "description": "I created a manifest with a class that had a UTF-8 encoded character in a class parameter's default value.  The value that was sent back up in the response to a request \"resource_types\" query, however, preserved the original encoding from the manifest file but indicated in the HTTP response header that the payload's charset is \"ISO-8859-1\".\n\nTo reproduce this, I deposited the attached \"init.pp\" file at .../<puppet-code-dir>/environments/production/modules/somemod/manifests/init.pp.  The file has ...\n\n{code:puppet}\nclass myclass (\n  String $astring = \"\u0400p\"\n) {}\n{code}\n\n... where the first character in the default parameter value for \"astring\" is \"\u0400\", U+0400 (Cyrillic Capital letter Ye with grave), encoded into the file in UTF-8, hex representation of 0xD080.\n\nFor a get via cURL to \"/puppet/v3/resource_types/*?kind=class&environment=production\", I saw a HTTP Content-Type response header of:\n\n{noformat}\nContent-Type: text/pson; charset=ISO-8859-1\n{noformat}\n\nIn the response body, however, the Ye with grave character was preserved in UTF-8 encoding, hex representation of 0xD080.\n\nWhen I made the same request to a WEBrick Ruby master under Puppet 4, the response payload looked the same but included the following header for Content-Type:\n\n{noformat}\nContent-Type: text/pson\n{noformat}\n\nI assume the Jetty web server is adding the default charset of ISO-8859-1 because it doesn't recognize \"text/pson\" and assumes that ISO-8859-1 would be a reasonable default charset in the absence of any upstream value being provided.  Not sure if there's a way to suppress the charset from the response payload for a Content-Type that Jetty doesn't know about.  Also not sure if there's a \"default encoding\" that would otherwise be reasonable to use \"text/pson\".  Maybe UTF-8 would be \"better\" if we have to specify something and Jetty won't let us omit it entirely?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16977", "fixedVersions": [], "id": "16977", "issueType": "Bug", "key": "SERVER-1184", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2016-03-02T11:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bad/unexpected content-type charset for pson responses", "timeSpent": "PT0S", "updated": "2016-03-02T11:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to the puppet-server#stable branch at [edd4cb|https://github.com/puppetlabs/puppet-server/commit/edd4cb80f89c32e42a7de01d8c52c530605b6355].", "created": "2016-03-08T18:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed through full Jenkins CI run - https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-stable/106/.\n\nMoving to the \"testing\" column.", "created": "2016-03-09T11:56:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Notwithstanding the low probability of happening in the field, it does seem to pose a risk of data corruption if the cache is wrongly marked unchanged.  This looks difficult to test or even reproduce in an automated way, though, so I'm pulling through to Resolved.", "created": "2016-03-23T11:25:00.000000"}], "components": [], "created": "2016-02-29T09:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d7ec454"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynkk7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found during functional review of SERVER-1130"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_63992840_*|*_1_*:*_1_*:*_8656_*|*_10007_*:*_1_*:*_717391158_*|*_3_*:*_1_*:*_5768000_*|*_5_*:*_1_*:*_16239983379_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1204180389"}], "description": "This ticket is closely related to SERVER-1130.  This is a similar case, not covered by the PR committed for SERVER-1130, where a race condition could lead to the environment class cache not being invalidated properly in response to a call to flush the environment-cache.\n\nThe following sequence would trigger this issue:\n\n1) Code for a new environment - one not previously registered with the in-memory Puppet Server environment class cache is committed to disk.\n\n2) The environment is discovered during a query to the v2.0/environments endpoint.\n\n3) A call is made to the environment_classes endpoint to parse class info for the new environment.\n\n4) While manifests are still being parsed to compute information for the previous environment_classes call, code on disk for the new environment is updated and an environment-cache call for \"all environments\" (i.e., with no specific environment provided as a query parameter) is made.\n\n5) The environment_classes call from step 3 completes and, for the first time, an entry for the new environment is added to the environment classes cache.\n\n6) The return payload from the environment_classes call includes an Etag for the parsed content, which could include data from the original version of the code on disk as opposed to the updated version of the code at step 4.\n\n7) All subsequent calls to the environment_classes endpoint for the new environment made with the Etag returned at step 6 return 304 (Not Modified).\n\nThe results at step 7 and later are unexpected.  Instead, the latest manifests on disk should be re-parsed, a new payload returned, and a new Etag for that payload should be stored in the in-memory environment classes cache.  This result should be expected because of the environment-cache call to invalidate all environments made during step 4.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16162", "fixedVersions": ["SERVER 2.3.0"], "id": "16162", "issueType": "Bug", "key": "SERVER-1183", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-03-23T11:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "environment_classes full env flush expiration race condition", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2016-02-25T14:37:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22778258"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyneev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_74984326_*|*_1_*:*_1_*:*_84850647_*|*_10007_*:*_1_*:*_6079378_*|*_3_*:*_2_*:*_174651730_*|*_5_*:*_1_*:*_1749936017_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_504914541_*|*_10006_*:*_1_*:*_3797505467_*|*_10005_*:*_1_*:*_868463998"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14697", "fixedVersions": ["SERVER 2.4.0"], "id": "14697", "issueType": "Task", "key": "SERVER-1182", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Fixed", "resolutionDate": "2016-04-29T10:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add Ubuntu 16.04 Xenial as a build/test platform", "timeSpent": "PT0S", "updated": "2016-05-25T13:15:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:0fdf0960-cf49-4a2e-b42d-ea0c53f80453] - I think your recommendation makes sense and would be good to consider along with SERVER-346, which describes a variation in which the hostcrl file might have multiple CRL PEMs within it but be unintentionally overwritten at startup with whatever is in the cacrl (which likely only has the one CRL pem issued by the Puppet Server CA in it).  I agree that it would be much better for only the CRL PEM from the corresponding PEM issued from the same CA in the cacrl to be surgically replaced at startup.\n\nI was curious in your case whether it was intentional or not for your Puppet Server to even be providing its own CA since you aren't intended for the agent on the same node to use that CA.  Is disabling that Puppet Server's CA - like is described here (https://docs.puppetlabs.com/puppetserver/2.2/external_ca_configuration.html#disabling-the-internal-puppet-ca-service) - appropriate for your setup?  If the Puppet Server CA service is disabled, the logic which tries to overwrite the hostcrl from the cacrl at startup shouldn't happen. ", "created": "2016-02-25T09:03:00.000000"}, {"author": "557058:0fdf0960-cf49-4a2e-b42d-ea0c53f80453", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], I just implemented disabling the CA service in bootstrap.cfg with a template per that doc and that works as advertised, the hostcrl is no longer replaced with the on-server cacrl.\n\nPreviously with puppet3 this hasn't been an issue, each puppetmaster ended up producing its own /var/lib/puppet/ssl/ca which just sat there inert as long as the conf had \"ca = false\". I didn't think of specifically disabling CA service in puppetserver until this item came up.\n\nI concur that in a multiple-CRL scenario the hostcrl should not be completely replaced by any one cacrl. It sounds like the hostcrl would end up multi-valued (with one file in a directory or section of concatenated file per CA CRL) if OCSP were not on the horizon. However I'm at the edges of my cert handling knowledge as it is and am badly qualified to determine feasibility here.", "created": "2016-02-25T09:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:0fdf0960-cf49-4a2e-b42d-ea0c53f80453] Thanks, that all makes sense.  Yeah, the approach of using the \"disabled\" CA service in the bootstrap.cfg is essentially a replacement for what \"ca = false\" did for the CA functionality in the Ruby-based master - see https://docs.puppetlabs.com/puppetserver/2.2/puppet_conf_setting_diffs.html#cahttpsdocspuppetlabscomreferenceslatestconfigurationhtmlca.\n\nI definitely think it should be feasible to only replace the CRL in the hostcrl file that corresponds to the CRL in the cacrl file.\n\nWe do have a separate ticket, SERVER-975, which covers the possibility of using OCSP in Puppet Server at some point.  No immediate plans on when that will happen, though.", "created": "2016-02-25T14:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] to wrap this ticket up ASAP.", "created": "2016-03-09T11:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I added a bit more text to the description in SERVER-346 so that it should cover the concern raised in this ticket about the current sync behavior.  I'm going to close this one as a \"duplicate\" of the other ticket.  Thanks again, [~accountid:557058:0fdf0960-cf49-4a2e-b42d-ea0c53f80453], for the submission.", "created": "2016-03-09T17:35:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2016-02-25T08:40:00.000000", "creator": "557058:0fdf0960-cf49-4a2e-b42d-ea0c53f80453", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@530301b8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4qd3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1155330853_*|*_5_*:*_1_*:*_17423635868_*|*_6_*:*_1_*:*_0"}], "description": "After SERVER-85 puppetserver will sync the cacrl to the hostcrl if CA service is enabled. It is the default that a newly installed puppetserver will provide CA service.\n\nhttps://puppet.atlassian.net/browse/SERVER-85\n\nThis turned out awkwardly for me because actually my puppet agent was not planning to use the local puppetserver as its CA. Once puppetserver was configured by the puppet agent, the puppet agent could no longer complete an agent run.\n\nIt would be better behaviour to check if the issuer of the on-disk cacrl matched the issuer of the puppet config's ca_server's offered CRL, and if not, do not replace the hostcrl.\n\nIt would be super-better if the agent just used the most up to date CRL from its ca_server. That discussion appears to already be happening over in PUP-2310.\n\nI am going to mitigate this in puppet by templating bootstrap.cfg and then firing an exec to rm the hostcrl if the file changes. The agent always seems to happily re-download its CRL when the hostcrl is missing.\n\nMore details, before turning on CA-enabled puppetserver (ignore silly hostnames, they are VMs with names I had left over from years ago):\n\n[root@puppetmaster2dev ~]# puppet config print --section agent server\npuppetmaster1stage.me.com\n\n[root@puppetmaster2dev ~]# openssl crl -noout -in /etc/puppetlabs/puppet/ssl/crl.pem -issuer\nissuer=/CN=Puppet CA: puppetmaster1.me.com\n\nAfter turning on the CA-enabled puppetserver:\n\n[root@puppetmaster2dev ~]# openssl crl -noout -in /etc/puppetlabs/puppet/ssl/crl.pem -issuer\nissuer=/CN=Puppet CA: puppetmaster2dev.hostopia.com\n\n[root@puppetmaster2dev ~]# puppet agent --onetime --verbose --no-daemonize\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get certificate CRL for /CN=puppetmaster1stage.me.com]\nInfo: Retrieving pluginfacts\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get certificate CRL for /CN=puppetmaster1stage.me.com]\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get certificate CRL for /CN=puppetmaster1stage.me.com]\nInfo: Retrieving plugin\nError: /File[/opt/puppetlabs/puppet/cache/lib]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get certificate CRL for /CN=puppetmaster1stage.me.com]\nError: /File[/opt/puppetlabs/puppet/cache/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get certificate CRL for /CN=puppetmaster1stage.me.com]\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get certificate CRL for /CN=puppetmaster1stage.me.com]\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\nError: Could not send report: SSL_connect returned=1 errno=0 state=error: certificate verify failed: [unable to get certificate CRL for /CN=puppetmaster1stage.me.com]\n\n\n\n", "environment": "[root@puppetmaster2dev ~]# uname -a\nLinux puppetmaster2dev 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux\n\n[root@puppetmaster2dev ~]# cat /etc/redhat-release \nCentOS release 6.7 (Final)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17356", "fixedVersions": [], "id": "17356", "issueType": "Bug", "key": "SERVER-1181", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0fdf0960-cf49-4a2e-b42d-ea0c53f80453", "resolution": "Duplicate", "resolutionDate": "2016-03-09T17:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "check if it's valid to sync cacrl to hostcrl before doing so", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [], "components": [], "created": "2016-02-24T12:52:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e89a805"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pon:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1900861940_*|*_3_*:*_1_*:*_131324_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-02)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%22SERVER%202.3.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16762", "fixedVersions": [], "id": "16762", "issueType": "Sub-task", "key": "SERVER-1180", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-17T13:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [], "components": [], "created": "2016-02-24T12:52:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@392497af"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pof:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1829073560_*|*_5_*:*_1_*:*_67295281_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_4598271"}], "description": "(Initial planned release date: 2016-03-02)\n\nUpdate dujour to notify users to use 2.3.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16384", "fixedVersions": [], "id": "16384", "issueType": "Sub-task", "key": "SERVER-1179", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T19:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.3.0 (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] should I just take care of this? Or would you like to?", "created": "2016-02-25T12:16:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "Filters for this release: \n\nIntroduced in 2.3.0: https://puppet.atlassian.net/issues/?filter=18403\nTo be fixed in 2.3.1:  https://puppet.atlassian.net/issues/?filter=18404", "created": "2016-03-16T16:55:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "{quote}\nSubject: Announcing Puppet Server 2.3.0 / Puppet 4.4.0\n\nI'm really excited to announce the arrival of new feature releases:\nPuppet 4.4.0 and Puppet Server 2.3.0. The headline feature here is \nStatic Catalogs: file resources with 'puppet:///' source attributes\nwill now include the checksum of the file inside the catalog, rather\nthan requiring additional http requests to the master as the catalog\nis being applied. This both dramatically improves performance and closes\na \"loophole\" where agents could get file content that didn't match the\ncatalog's original intent.  You can read more (much, much more) about this\non the doc site: http://docs.puppetlabs.com/puppet/4.4/reference/static_catalogs.html\n\nIn addition, there are several other noteworthy features including an\nawesome community contribution:\n* Felix Frank worked tirelessly to close a very long-standing feature\n  request that ties in with static catalogs: HTTP(S) file sources.\n  Now you can use plain http webservers as the `source` for file resources,\n  so if you have content that's large in size or managed outside Puppet's\n  fileserver, you can just point at it. Vielen dank, Felix! (PUP-1073)\n  \n* There's a new API endpoint in the Puppet Server, `environment_classes`, that\n  improves upon the old resource_types endpoint to enumerate classes, their\n  parameters, and default values. (SERVER-1110)\n\n* The Puppet Server now reloads configuration immediately upon receiving a \n  HUP signal, lowering restart times if you are changing values. (SERVER-86)\n\n* The Puppet 4 Language continues to improve: now you can alias Types directly\n  in your manifests, there's a new Iterable type, and you can now reference\n  earlier parameters in a class, define, or function. (various tickets)\n\nThere's a lot more, so please read the release notes for details:\n\nPuppet Server: http://docs.puppetlabs.com/puppetserver/latest/release_notes.html\nPuppet: https://docs.puppetlabs.com/puppet/latest/reference/release_notes.html\n\nPuppet 4.4.0 is contained inside the puppet-agent-1.4.0 package that Melissa\nannounced yesterday, as well as being independently downloadable as a gem or\ntarball\n\nTo install or upgrade puppet-agent, follow the getting started directions: \nhttp://docs.puppetlabs.com/puppet/latest/reference/index.html \n\n\n{quote}", "created": "2016-03-17T12:48:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "awesome!", "created": "2016-03-17T12:49:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Sent", "created": "2016-03-17T12:59:00.000000"}], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ab4b9bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4po7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1833185536_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_64459464"}], "description": "(Initial planned release date: 2016-03-02)\n\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16159", "fixedVersions": [], "id": "16159", "issueType": "Sub-task", "key": "SERVER-1178", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-17T12:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T12:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Docs are pushed, and the 2.3 cutover in puppet-docs _config.yml is pending approval.", "created": "2016-03-16T16:44:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Docs are built and should be live at https://docs.puppetlabs.com/puppetserver/2.3/ or https://docs.puppetlabs.com/puppetserver/latest/.", "created": "2016-03-16T19:04:00.000000"}], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48a8fb65"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pnz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_165160277_*|*_3_*:*_1_*:*_8373770_*|*_5_*:*_1_*:*_67824453_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1659604949"}], "description": "(Initial planned release date: 2016-03-02)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15980", "fixedVersions": [], "id": "15980", "issueType": "Sub-task", "key": "SERVER-1177", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T19:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ebc422e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pnr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1823694395_*|*_3_*:*_1_*:*_8710078_*|*_5_*:*_1_*:*_68554827_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-02)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15639", "fixedVersions": [], "id": "15639", "issueType": "Sub-task", "key": "SERVER-1176", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T18:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1665d1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pnj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1827055277_*|*_5_*:*_1_*:*_73896557_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-02)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15335", "fixedVersions": [], "id": "15335", "issueType": "Sub-task", "key": "SERVER-1175", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T17:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d6ffed"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pnb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1823819973_*|*_5_*:*_1_*:*_77124822_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-02)\n\nThis should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:623c0ff494742a00683e3fe4]\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14977", "fixedVersions": [], "id": "14977", "issueType": "Sub-task", "key": "SERVER-1174", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T16:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm) (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "Automated tests ran against cent/deb/ubuntu last night as part of the packaging job. Re-ran our tests against the full platform matrix this morning.", "created": "2016-03-16T11:11:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] found out from my team that we do manually test upgrades, so [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] and i did that for cent6,7 and ubuntu trusty. no issues.", "created": "2016-03-16T14:59:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "nice", "created": "2016-03-16T15:07:00.000000"}], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@560f5919"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pn3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1802753522_*|*_3_*:*_1_*:*_13749085_*|*_5_*:*_1_*:*_82438954_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1994238"}], "description": "(Initial planned release date: 2016-03-02)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14695", "fixedVersions": [], "id": "14695", "issueType": "Sub-task", "key": "SERVER-1173", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T15:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "This was done automatically by EZBake", "created": "2016-03-16T10:37:00.000000"}], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42a0fe0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1802746177_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-02)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17355", "fixedVersions": [], "id": "17355", "issueType": "Sub-task", "key": "SERVER-1172", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T10:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-16T10:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8e1af66"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pmn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_165179411_*|*_10007_*:*_1_*:*_83572084_*|*_10009_*:*_1_*:*_82844298_*|*_5_*:*_1_*:*_77139248_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1492196566"}], "description": "(Initial planned release date: 2016-03-02)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16976", "fixedVersions": [], "id": "16976", "issueType": "Sub-task", "key": "SERVER-1171", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T16:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "Susan, are you able to take care of this post-2.3.0 release stuff? thanks!", "created": "2016-03-16T16:27:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "All done.  2.3.1 created, 2.3.0 released, queries created and pasted into announcement ticket.", "created": "2016-03-16T17:00:00.000000"}], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ec6e655"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pmf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1825716624_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-02)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\nhttps://puppet.atlassian.net/issues/?filter=18403\n\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\nhttps://puppet.atlassian.net/issues/?filter=18404\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16759", "fixedVersions": [], "id": "16759", "issueType": "Sub-task", "key": "SERVER-1170", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T17:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-16T17:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72ecff37"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pm7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_424589826_*|*_1_*:*_1_*:*_182037112_*|*_10007_*:*_1_*:*_439203627_*|*_5_*:*_1_*:*_855096185_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-02)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16383", "fixedVersions": [], "id": "16383", "issueType": "Sub-task", "key": "SERVER-1169", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-07T15:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Merged at https://github.com/puppetlabs/puppet-server/commit/f7f438b3ad76db4699ab71eaf8115f7f18e89956", "created": "2016-03-16T12:05:00.000000"}], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e2ac2ab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4plz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1808015992_*|*_5_*:*_1_*:*_92904257_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-02)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16157", "fixedVersions": [], "id": "16157", "issueType": "Sub-task", "key": "SERVER-1168", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T12:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "I ran through this again due to the delayed release and found a few tickets that needed the fix version. They have been updated.", "created": "2016-03-15T13:03:00.000000"}], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6547f67"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4plr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_182033162_*|*_3_*:*_1_*:*_1767233_*|*_5_*:*_1_*:*_1717111860_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-03-02)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15978", "fixedVersions": [], "id": "15978", "issueType": "Sub-task", "key": "SERVER-1167", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-02-26T15:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@177e9396"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4plj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_99459747_*|*_3_*:*_1_*:*_1023614122_*|*_5_*:*_1_*:*_77170833_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_700661064"}], "description": "(Initial planned release date: 2016-03-02)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.3.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15638", "fixedVersions": [], "id": "15638", "issueType": "Sub-task", "key": "SERVER-1166", "labels": [], "originalEstimate": "PT0S", "parent": "15333", "parentSummary": "puppetserver 2.3.0 2016-03-16 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-16T16:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.3.0)", "timeSpent": "PT0S", "updated": "2016-03-17T13:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA says ship the FOSS puppet server 2.3.0 release.\n\nNote that there are several untested tickets dealing with NC refresh classes", "created": "2016-02-26T15:53:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "+1 [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].\nI concur with your assessment. I do not see any release blockers on behalf of QA.", "created": "2016-02-26T15:58:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] ping! Are you ready for the release tomorrow? If there's anything that we can check off the list today, that would be ideal. Shipping has a few kinks at the moment, so I'd like to start the ship as early as possible tomorrow.", "created": "2016-03-15T12:49:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "Released Wednesday, March 16th.", "created": "2016-03-16T16:42:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "re-opened as I realized all subtasks need to close before this one closes.", "created": "2016-03-16T17:26:00.000000"}], "components": [], "created": "2016-02-24T12:51:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@136291d9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynken:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_9189989_*|*_3_*:*_1_*:*_941215811_*|*_10009_*:*_1_*:*_73763528_*|*_5_*:*_2_*:*_16751985659_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_701605441_*|*_10006_*:*_1_*:*_172675137"}], "description": "puppetserver 2.3.0 2016-03-16 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15333", "fixedVersions": ["SERVER 2.3.0"], "id": "15333", "issueType": "Task", "key": "SERVER-1165", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-03-17T13:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.3.0 2016-03-16 Release", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "created": "2016-03-03T22:10:00.000000", "name": "hup_log.tgz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10649"}, {"attacher": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "created": "2016-03-03T22:12:00.000000", "name": "nohup_log.tgz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10568"}], "comments": [{"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "h2. HUP Memory Leak Test\nh3. Introduction\nIn order to determine if a HUP signal on the puppetserver process results in leaked memory, an A/B test was conducted where the only variable was the execution of the HUP action. This test focused on a small number of variables over a relatively short period.\n\nThe intent of this test was to narrowly focus on the effect of the HUP signal action on the memory consumption of the puppetserver. This test did not exercise a production load or emulate a production level of complexity of puppetserver interactions. The only variable in the test was the execution of the HUP signal. All other environmental conditions remained the same.\n \nh3. Approach\nOn a Puppet Enterprise monolithic master, at intervals of 5 minutes, the memory heap histogram of the puppetserver were captured. The puppet agent was then triggered. On the system exercising the HUP signal, this signal was triggered 7 seconds prior to the puppet agent run. Cron was used to execute these instructions.\n\nThe process above was repeated over the course of 5 hours.\n\nThe memory heap histograms from the beginning and end of this interval were compared. The object instances counts were compared. A factor of 10 was used as a threshold to determine objects were experiencing a leak of memory. A list of objects whose ending count exceeded 10 times the difference of the start and end counts are listed in the findings section.\n\nh3. Findings\n43 objects exhibited memory consumption that exceeded the test threshold on the HUP system, compared to 1 object on the control system.\n\nh4. Objects exceeding threshold on control system\nThe control system resulted in only one object exceeding the test threshold. The data below shows the object. The tuples listed afterward are the instance counts and bytes used at the beginning and end of the test respectively.\n{code}\nclojure.lang.BigInt = [('219', '3866'), ('5256', '92784')]\n{code}\n\nh4. Objects exceeding threshold on HUP system\nThe data below shows the objects exceeidng the threshold on the HUP system. The tuples listed afterward are the instance counts and bytes used at the beginning and end of the test respectively.\n{code}\npuppetlabs.services.master.master_core$eval35890$environment_class_info_fn__35897$fn__35898$fn__35899 = [('2', '63'), ('48', '1512')]\npuppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__16881 = [('11', '499'), ('264', '11976')]\npuppetlabs.puppetserver.jruby_request$wrap_with_error_handling$fn__35672 = [('3', '64'), ('72', '1536')]\npuppetlabs.puppetserver.ringutils$wrap_exception_handling$fn__16876 = [('11', '499'), ('264', '11976')]\nsun.nio.fs.NativeBuffer$Deallocator = [('4', '50'), ('96', '1200')]\npuppetlabs.puppetserver.jruby_request$wrap_with_jruby_instance$fn__35676 = [('3', '64'), ('72', '1536')]\npuppetlabs.trapperkeeper.authorization.ring_middleware$eval16015$wrap_authorization_check__16020$fn__16021$fn__16022 = [('13', '501'), ('416', '16032')]\npuppetlabs.services.master.master_core$eval36022$v3_ruby_routes__36027$fn__36028$fn__36029 = [('2', '63'), ('48', '1512')]\n[Lsun.nio.fs.NativeBuffer", "created": "2016-03-03T22:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] do you know the total number of hups that were executed?\n\nFor future reference - it would be very valuable to take some heap dumps at various points during the run.  That would allow us to examine some of these objects in terms of their eligibility for garbage collection.\n\nThe vast majority of the stuff in your list looks like anonymous clojure function definitions, and I *think* that those are probably held onto via \"soft references\", meaning that they are eligible for garbage collection but the JVM may not bother to free them up until there is memory pressure.  However, the frequency with which the pattern of 2->48 instances of an object show up is pretty interesting, and it would be interesting to know whether that corresponded to the number of HUPS or not.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] do you have any thoughts on any of this?\n\nIn an unrelated effort, I've kicked off a gatling run that I'm hoping to leave running for about 2 weeks, with high agent load and a HUP occurring once every 10 minutes.  My HUP script also does a curl to the /status endpoint, and logs that JSON output to a file.  From that we can graph the total heap memory used over the course of the run, which might help to answer some of the questions about whether these objects are leaking indefinitely or if they are just being accumulated via soft references that will eventually be freed up.", "created": "2016-03-08T18:24:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] there were a total of 62 HUPs performed in the test above.\nI can certainly repeat the test gathering heap dumps along the way. Given the size of the dump, it seems undesirable to capture after every HUP. What frequency would you be interested in seeing?", "created": "2016-03-08T18:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] 62 HUPs is good news", "created": "2016-03-08T18:56:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] I ran this test yesterday and dumped heap at 3 points. Trying to run {{jhat}} to compare them runs the JVM out of heap memory and causes it to crash ", "created": "2016-03-09T09:28:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Setting a heap size of 8192m {{jhat -J-mx8192m -baseline heap.bin.1 heap.bin.3}} kept it from blowing up in a comparison.", "created": "2016-03-09T09:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] does jhat provide information about paths to GC roots?  Have never used that particular tool.", "created": "2016-03-09T10:28:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] I have not run across the {{jhat}} tool yet. My jvm adventure has only gotten as far as the {{jmap}} tool.\n\nIn my test above, I was capturing the heap histogram with the following:\n{code}\njmap -histo:live <pid> > myhistogram.txt\n{code}\n\nMy assumption for capturing detailed heap data with {{jmap}} would be to proceed with the following:\n{code}\njmap -dump:format=b,file=myheap.bin <pid>\n{code}\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], can you provide guidance on what tool will provide you with the data you need to perform leak analysis on? Thanks.", "created": "2016-03-09T11:47:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "FYI [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced], we closed this out in our sprint planning since these tests have been started and have opened SERVER-1197 to watch these tests.", "created": "2016-03-09T12:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] that is correct, the command to capture the heap dumps that I was referring to would be along the lines of {{jmap -dump:live,format=b,file=/tmp/jvm_heap_dump.hprof <pid>}}.  For more information, see [~accountid:623e754d94742a00683f7cf0]'s [confluence page on java tools|https://confluence.puppetlabs.com/display/SUP/How+To%3A+Gather+Information+from+a+Java+Process].\n\nWe would then take those files and analyze them in a tool like YourKit Java Profiler or Eclipse MAT (Memory Analysis Tool) to see what the garbage collection roots looked like for the various objects.  If you're interested in a bit more of a deep dive into what that looks like, you can check out my page on [Debugging Puppet Server Memory Leaks|https://confluence.puppetlabs.com/display/PROD/Debugging+Puppet+Server+Memory+Leaks].\n\nAnother useful thing may be to capture the output of the {{/status/v1/services?level=debug}} endpoint at intervals during your run.  There is some data in there about heap usage now, which we can extract and graph via google spreadsheets or similar to see how the total heap usage looks over time.\n\nIn SERVER-1197 I'm tracking a long-running gatling test that is targeted at memory usage in combination with HUP.  In that test I'm HUPping every ten minutes, and collecting the {{/status}} data just before each HUP.  That test has been running for 10 days or so, and should end up running for about 2 weeks total before it ends.  When it ends I'll attach the gatling data and a google spreadsheet with the heap usage over time to the ticket in case you are interested in checking it out.\n\nI think that'll be sufficient in terms of covering what we need to test for HUP for this release, but I'm extremely interested in getting other people at the company up to speed with the tools and procedures so that we can continue to improve our coverage of this sort of thing in the future, so I'm more than happy to continue to answer questions and share knowledge to whatever extent your time and interest allow. :)\n\n", "created": "2016-03-15T13:32:00.000000"}], "components": [], "created": "2016-02-24T12:30:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7055fe12"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4oaf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_599676670_*|*_3_*:*_1_*:*_435510183_*|*_5_*:*_1_*:*_17443136505_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_173366991"}], "epicLinkSummary": "Support HUP for faster restart", "estimate": "PT0S", "externalId": "15975", "fixedVersions": ["SERVER 2.3.0"], "id": "15975", "issueType": "Task", "key": "SERVER-1164", "labels": [], "originalEstimate": "PT0S", "parent": "16343", "parentSummary": "Support HUP for faster restart", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-03-09T12:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "set up long-running gatling tests for HUP/DP", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Resolving without additional action because Risk Assessment = Low.", "created": "2016-06-28T10:06:00.000000"}], "components": [], "created": "2016-02-24T12:19:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a664c91"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1121"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn6b3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_346652053_*|*_1_*:*_1_*:*_600412335_*|*_10007_*:*_1_*:*_760471960_*|*_3_*:*_1_*:*_2867861825_*|*_5_*:*_1_*:*_3894065887_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_83026923_*|*_10006_*:*_1_*:*_6129989373"}], "description": "Remove all the code and tests that jruby-utils now has. There will definitely be some code left over in the jruby namespaces in puppetserver, but maybe we could consolidate that into one or two namespaces, rather than the 5+ that are there now.\n\nDepending on how exactly TK-367 shakes out, that ticket may have already added a dependency in puppetserver on jruby-utils in order to validate that the initialization/cleanup hook API is sufficient. But if not, then adding that dependency could be done in this ticket.", "epicLinkSummary": "Extract JRuby library", "estimate": "PT0S", "externalId": "17354", "fixedVersions": ["SERVER 2.5.0"], "id": "17354", "issueType": "Task", "key": "SERVER-1163", "labels": [], "originalEstimate": "PT0S", "parent": "15636", "parentSummary": "Extract JRuby library", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-28T10:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "delete jruby code and tests from puppet-server repo", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to jruby-utils#master at [ebc616b|https://github.com/puppetlabs/jruby-utils/commit/ebc616bff693ce876108e9b061a5d34766113cf3].", "created": "2016-04-19T12:02:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Unit tests have passed and QA reviewed this already as \"low risk\" so moving to done.", "created": "2016-04-20T10:07:00.000000"}], "components": [], "created": "2016-02-24T12:18:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e1023ec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1121"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz05wn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_79516353_*|*_1_*:*_1_*:*_600466914_*|*_10007_*:*_1_*:*_595615525_*|*_3_*:*_1_*:*_95165450_*|*_5_*:*_1_*:*_9855612754_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3456166932"}], "epicLinkSummary": "Extract JRuby library", "estimate": "PT0S", "externalId": "16975", "fixedVersions": ["SERVER 2.5.0"], "id": "16975", "issueType": "Task", "key": "SERVER-1162", "labels": [], "originalEstimate": "PT0S", "parent": "15636", "parentSummary": "Extract JRuby library", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-04-20T10:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Copy jruby code and tests to jruby library repo", "timeSpent": "PT0S", "updated": "2016-08-12T11:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I don't really think there's anything to test here - this was just setting up a new git repo and CI jobs for puppetlabs/jruby-utils.", "created": "2016-03-30T15:16:00.000000"}], "components": [], "created": "2016-02-24T12:17:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@174acf74"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1121"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z2v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_600553789_*|*_10007_*:*_1_*:*_93430680_*|*_3_*:*_1_*:*_70008369_*|*_5_*:*_1_*:*_15615648035_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_5536150_*|*_10006_*:*_1_*:*_2267137017"}], "description": "Set up github.com/puppetlabs/jruby-utils, CI jobs, HipChat notifications, etc.", "epicLinkSummary": "Extract JRuby library", "estimate": "PT0S", "externalId": "16756", "fixedVersions": ["SERVER 2.5.0"], "id": "16756", "issueType": "Task", "key": "SERVER-1161", "labels": [], "originalEstimate": "PT0S", "parent": "15636", "parentSummary": "Extract JRuby library", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-03-30T16:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "create git repos, ci jobs, etc. for jruby library", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [{"attacher": "623c13e0a1d81f0069d8e29a", "created": "2016-02-23T01:35:00.000000", "name": "f1f164e5.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10648"}], "comments": [{"author": "623c13e0a1d81f0069d8e29a", "body": "Just for info and in case somebody hits the same issue, we've replaced the problematic snippet with an inline template.\n\n{noformat}\ninline_template(\"<%= 'foo'.crypt('\\$6\\$FBxpiJWP') %>\")\n{noformat}", "created": "2016-02-23T03:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c13e0a1d81f0069d8e29a] thanks for the bug report, that does not sound like expected behavior.\n\nIs there a 1-1 correspondence between calls to this generate function and the problematic behavior with the hanging python processes?  In other words, do the python processes seem to get hung 100% of the time?\n\nAlso curious if you've tried with a newer Puppet Server in the 2.x series?\n\nWe'll try to assign to someone on our end for a repro attempt ASAP.", "created": "2016-02-23T07:18:00.000000"}, {"author": "623c13e0a1d81f0069d8e29a", "body": "Hi Chris,\n\n{quote}\nIs there a 1-1 correspondence between calls to this generate function and the problematic behavior with the hanging python processes? In other words, do the python processes seem to get hung 100% of the time?\n{quote}\n\nI'd say yes. We managed to create four Python processes by requesting catalogs with the buggy code using an idle development master. Every (failed) catalog request led to a dangling process. Also, there aren't many nodes around here with that config so it was quite easy for us to map the start time of those processes to the catalog requests coming from them.\n\n{quote}\nAlso curious if you've tried with a newer Puppet Server in the 2.x series?\n{quote}\n\nNo, we're still on Puppet 3.\n\n{quote}\nWe'll try to assign to someone on our end for a repro attempt ASAP.\n{quote}\n\nThanks for your time. Any questions please don't hesitate to ask :)", "created": "2016-02-23T07:44:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:623c13e0a1d81f0069d8e29a] Thank you so much for the detailed bug report and your patience while we looked into this. I have been able to reproduce this on Puppet Server 1.1.3 and 2.2.1. However, there have been some recent changes to the underlying code, and I cannot reproduce this on master. That said, it still does not work exactly as expected on master:\n\n{code}\nNotice: /Stage[main]/Main/Notify[foo]/message: defined 'message' as ''\n{code}\n\nwhereas if I do {{puppet apply test.pp}} where test.pp has the content you've got in the description, I get\n\n{code}\nNotice: /Stage[main]/Main/Notify[foo]/message: defined 'message' as '$6A86JNndVTdM'\n{code}\n\nso obviously something is still not working right if the result of this is an empty string when running under Puppet Server.\n\nAn interesting discovery that [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] made while looking into this is that if you do this on the command line and don't escape the strings correctly, it opens up a Python REPL:\n\n{code}\n$ /bin/sh -c /usr/bin/python -c 'print \\\"foo\\\"'\nPython 2.7.10 (default, Jul 14 2015, 19:46:27)\n[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n>>>\n{code}\n\nversus\n\n{code}\n$ /bin/sh -c \"/usr/bin/python -c 'print \\\"foo\\\"'\"\nfoo\n{code}\n\nIf the new underlying code is used directly, we see that trying to open a Python REPL results in an empty string. We would expect it to consume the REPL and hang, but it looks like instead the underlying library (Apache Commons Exec) is preventing this from happening:\n\n{code}\n(.getOutput (ShellUtils/executeCommand \"/usr/bin/python\"))\n=> \"\"\n{code}\n\nIn addition, we found that the array version of `executeCommand` works correctly, but the string-only version (which is what Puppet uses) does not:\n\n{code}\n(.getOutput (ShellUtils/executeCommand \"/bin/sh\" (into-array [\"-c\" \"/usr/bin/python -c 'print \\\"foo\\\"'\"])))\n=> \"foo\\n\"\n{code}\n\n{code}\n(.getOutput (ShellUtils/executeCommand \"/usr/bin/python -c 'print \\\"foo\\\"'\"))\n=> \"\"\n{code}\n\nCombine all this together, and my theory is that string parsing is still broken in the current version on master in the same way as it was for 1.1.x and 2.2.x, but it no longer spawns a whole bunch of python REPLs (thereby consuming a JRuby instance) and instead returns an empty string. This is probably an improvement, but still not ideal. I'll look into seeing whether we can fix this at least for the new version.", "created": "2016-03-07T18:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#stable at [f2c404|https://github.com/puppetlabs/puppet-server/commit/f2c4046a2ea14c10cce4b7312dffb7875e7a8363].", "created": "2016-03-09T10:12:00.000000"}, {"author": "623c13e0a1d81f0069d8e29a", "body": "Sorry, I was on holiday. Thanks so much for looking into the issue (and fixing it!).\n\nWill the fix be backported to puppet-server 1.x?", "created": "2016-03-21T06:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c13e0a1d81f0069d8e29a] the code base for puppet-server 1.x has diverged enough from both Puppet Server 2.x and Puppet 4.x that I think it would be non-trivial and a bit risky for us to backport this, but if it causes major issues that can't be worked around, I can try to initiate a conversation with our product team and see if they feel like it's a reasonable ROI given whatever the end-of-life dates are expected to be for Puppet 3.x and Puppet Server 1.x.", "created": "2016-03-21T11:21:00.000000"}, {"author": "623c13e0a1d81f0069d8e29a", "body": "Thanks. Well, we know how to work around it but we cannot effectively prevent our Puppet developers from using generate(). We could run code scans if we saw that our Puppet Servers started to serve less requests but proactively speaking nothing beyond asking the developers not to use the function basically. We're already putting some effort on migrating to Puppet4 but we currently don't have an ETA for PS 2.x around here. A backport would be appreciated but it's not essential for us. Thanks again for your help :)", "created": "2016-04-02T04:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c13e0a1d81f0069d8e29a] thanks for the update.  Please let us know if it continues to cause any major problems.  At this time, my guess is that backporting this particular fix would be relatively high-effort and high-risk, given that we haven't gotten any other bug reports about the issue.  That said, we are also aware that upgrading to Puppet 4 takes a bit of effort and we definitely don't want to leave our Puppet 3/Puppet Server 1.x in a bad spot in the interim.  So if it continues to cause problems for you, and you let us know about it, I can talk to our product owners about the possibility of investing some time to at least scope what exactly it would take to do a backport.", "created": "2016-04-04T10:51:00.000000"}], "components": [], "created": "2016-02-23T01:52:00.000000", "creator": "623c13e0a1d81f0069d8e29a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d5c374f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynkjz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "In Puppet Server 1.x and 2.2.x, parsing of commands executed by Puppet code that had somewhat complicated string interpolation did not work properly. Some examples include calls to the {{generate()}} function, such as {{generate('/bin/sh', '-c', \"/usr/bin/python -c 'print \\\"foo\\\"'\")}}  - in Puppet Server 1.x and 2.2.x this would not return anything but would instead spawn a Python REPL, consuming a JRuby instance and effectively DOS-ing the server. This ticket/Server 2.3.0 fixes this issue so that more complicated calls to {{generate()}} work correctly."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_111634811_*|*_1_*:*_1_*:*_121220456_*|*_10007_*:*_1_*:*_57083471_*|*_3_*:*_1_*:*_615461357_*|*_5_*:*_1_*:*_16755212426_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_583611552_*|*_10006_*:*_1_*:*_532150914"}], "description": "Hi,\n\nWe came across the following when debugging a performance degradation that we observed in a cluster of puppetservers that we're preparing to replace Passenger-driven ones. If a node with the following call to generate() in its catalog:\n\n{noformat}\n    notify{ \"foo\":\n      message   => generate('/bin/sh', '-c', \"/usr/bin/python -c 'import crypt; print crypt.crypt(\\\"foo\\\", \\\"\\$6\\$FBxpiJWP\\\")' | tr -d '\\n'\"),\n    }\n{noformat}\n\nchecks in and requests a catalog, the compilation times out and a dangling python process is left hanging from the JVM, presumably blocking (forever?) a jRuby instance:\n\n{noformat}\n# ps faux\n...\npuppet   18810 53.3 64.5 7547672 5172508 ?     Ssl  Feb22 704:40 java -Xms4608m -Xmx4608m -XX:MaxPermSize=256m  -XX:OnOutOfMemoryError=kill -9 %p -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetserver  -cp /usr/share/puppetserver/puppet-server-release.jar clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetserver/conf.d -b /etc/puppetserver/bootstrap.cfg\npuppet   31957  0.0  0.0  19624  4184 ?        S    09:03   0:00  \\_ /usr/bin/python\n...\n# pgrep -u puppet python\n31957\n# pstree -u puppet\njava--python\n     --27*[{java}]\n{noformat}\n\nWhen this happens _max-active-instances_ times (4 in our case) the PS in question runs completely out of available interpreters and stops serving requests (it hangs basically). Eventually, it logs the following:\n\n{noformat}\nERROR [p.s.r.request-handler-core] Error 503 on SERVER at /production/foo: Attempt to borrow a JRuby instance from the pool timed out; Puppet Server is temporarily overloaded. If you get this error repeatedly, your server might be misconfigured or trying to serve too many agent nodes. Check Puppet Server settings: jruby-puppet.max-active-instances.\n{noformat}\n\nKilling all the dangling Python processes helps the server recovering by itself and starts to successfully serve requests again.\n\nThe following plot shows the number of requests vs time grouped by status code as seen by our load balancers. As you can see, the number of successful requests winds down as agents with the offending piece of code check in. The performance rapidly ramped up after we killed all the Python processes via mco.\n\n!f1f164e5.png|thumbnail!\n\nWe have some more plots showing how the masters gradually go to zero requests served (individually) and how those events match to problematic nodes checking in at the same time. The start time of the Python processes also match the time they showed up.\n\nWe're running Puppet 3.8.4 and Puppetserver 1.1.3 on top of java-1.7.0-openjdk-1.7.0.95-2.6.4.0.el7_2.\n\nCould anybody please try to reproduce the problem? Thanks!\n\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16156", "fixedVersions": ["SERVER 2.3.0"], "id": "16156", "issueType": "Bug", "key": "SERVER-1160", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c13e0a1d81f0069d8e29a", "resolution": "Fixed", "resolutionDate": "2016-03-17T12:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dangling processes exhausting all available jRuby instances", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [{"attacher": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "created": "2016-02-22T13:04:00.000000", "name": "restart-failure-travis.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11025"}], "comments": [], "components": [], "created": "2016-02-22T13:11:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3af5c3f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4ntb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_166592902_*|*_3_*:*_1_*:*_1120754680_*|*_5_*:*_1_*:*_17442902372_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_91801770"}], "description": "Now that HUP support has been released in TK 1.3.0, the test-restart-comes-back test was re-enabled in puppet-server to validate the restart is successful. It has been occasionally failing in travis. I have only seen it fail on the jdk8 cell in travis, if that matters at all. I've attached the full travis run log.\n\nThe important bits are here:\n{code}\nlein test :only puppetlabs.services.jruby.jruby-pool-int-test/test-restart-comes-back\nFAIL in (test-restart-comes-back) (jruby_pool_int_test.clj:308)\nAfter a TK restart puppetserver can still handle requests\nexpected: (= (clojure.core/deref call-seq) [:init-bonus-service :start-bonus-service :stop-bonus-service :init-bonus-service :start-bonus-service])\n  actual: (not (= [:init-bonus-service :start-bonus-service :stop-bonus-service] [:init-bonus-service :start-bonus-service :stop-bonus-service :init-bonus-service :start-bonus-service]))\n2016-02-22 19:11:35,935 WARN  [async-dispatch-29] [o.e.j.s.h.ContextHandler] Empty contextPath\nlein test :only puppetlabs.services.jruby.jruby-pool-int-test/test-restart-comes-back\nERROR in (test-restart-comes-back) (SocketChannelImpl.java:-2)\nUncaught exception, not in assertion.\nexpected: nil\n  actual: java.net.ConnectException: Connection refused\n at sun.nio.ch.SocketChannelImpl.checkConnect (SocketChannelImpl.java:-2)\n    sun.nio.ch.SocketChannelImpl.finishConnect (SocketChannelImpl.java:716)\n    org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvent (DefaultConnectingIOReactor.java:173)\n    org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents (DefaultConnectingIOReactor.java:147)\n    org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute (AbstractMultiworkerIOReactor.java:350)\n    org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute (PoolingNHttpClientConnectionManager.java:191)\n    org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run (CloseableHttpAsyncClientBase.java:64)\n    java.lang.Thread.run (Thread.java:745)\n{code}\n\nThat test has a 90000 millisecond timeout, so it would be surprising if the restart is just taking too long. (on my laptop the restart returns in less than 2500 milliseconds)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17353", "fixedVersions": [], "id": "17353", "issueType": "Bug", "key": "SERVER-1159", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-03-09T12:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate test-restart-comes-back test failures", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Blocked until Burnside (after 4/6)", "created": "2016-03-24T10:30:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Dup of SERVER-1157. That work all happens in ci-job-configs", "created": "2016-03-24T10:55:00.000000"}], "components": [], "created": "2016-02-19T15:24:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39e32b8a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "CPR-300"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz589r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_600397530_*|*_10007_*:*_1_*:*_64696180_*|*_3_*:*_1_*:*_741095_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1476204_*|*_10006_*:*_1_*:*_77882998_*|*_10005_*:*_1_*:*_2172630298"}], "epicLinkSummary": "Ubuntu 15.04 went eol on 2016-02-04[1], and should be removed", "estimate": "PT0S", "externalId": "16382", "fixedVersions": [], "id": "16382", "issueType": "Task", "key": "SERVER-1158", "labels": [], "originalEstimate": "PT0S", "parent": "60107", "parentSummary": "Ubuntu 15.04 went eol on 2016-02-04[1], and should be removed", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Duplicate", "resolutionDate": "2016-03-24T10:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Ubuntu 15.04 Vivid from build targets", "timeSpent": "PT0S", "updated": "2016-03-24T10:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Blocked until Burnside (after 4/6)", "created": "2016-03-24T10:30:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Looks like this has passed", "created": "2016-04-11T15:51:00.000000"}], "components": [], "created": "2016-02-19T15:24:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c1befad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "CPR-300"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5cbz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_364031803_*|*_1_*:*_1_*:*_600410025_*|*_10007_*:*_2_*:*_65293022_*|*_3_*:*_1_*:*_724074_*|*_10009_*:*_1_*:*_3606675_*|*_5_*:*_1_*:*_14582463991_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1206224050_*|*_10006_*:*_1_*:*_77873281_*|*_10005_*:*_1_*:*_2172635293"}], "epicLinkSummary": "Ubuntu 15.04 went eol on 2016-02-04[1], and should be removed", "estimate": "PT0S", "externalId": "15973", "fixedVersions": [], "id": "15973", "issueType": "Task", "key": "SERVER-1157", "labels": [], "originalEstimate": "PT0S", "parent": "60107", "parentSummary": "Ubuntu 15.04 went eol on 2016-02-04[1], and should be removed", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Fixed", "resolutionDate": "2016-04-11T15:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Ubuntu 15.04 Vivid fro ci-job-configs repo", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Blocked until Burnside (after 4/6)", "created": "2016-03-24T10:30:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Dup of SERVER-1155\n\nThis work all happens in ci-job-configs", "created": "2016-03-24T10:54:00.000000"}], "components": [], "created": "2016-02-19T15:09:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22673ec7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "CPR-296"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz589j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_601283265_*|*_10007_*:*_2_*:*_64689419_*|*_3_*:*_1_*:*_736351_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_1457448_*|*_10006_*:*_1_*:*_77881206_*|*_10005_*:*_1_*:*_2172632206"}], "epicLinkSummary": "Fedora 21 went eol on 2015-12-01[1], and should be removed", "estimate": "PT0S", "externalId": "16754", "fixedVersions": [], "id": "16754", "issueType": "Task", "key": "SERVER-1156", "labels": [], "originalEstimate": "PT0S", "parent": "60274", "parentSummary": "Fedora 21 went eol on 2015-12-01[1], and should be removed", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Duplicate", "resolutionDate": "2016-03-24T10:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove fedora 21 from build targets", "timeSpent": "PT0S", "updated": "2016-03-24T10:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Blocked until Burnside (after 4/6)", "created": "2016-03-24T10:30:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Looks like this has passed", "created": "2016-04-11T15:51:00.000000"}], "components": [], "created": "2016-02-19T15:04:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d9db533"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "CPR-296"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5cbr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_364027909_*|*_1_*:*_1_*:*_601634018_*|*_10007_*:*_3_*:*_65271894_*|*_3_*:*_1_*:*_713744_*|*_10009_*:*_1_*:*_3606939_*|*_5_*:*_1_*:*_14582447808_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_1206257019_*|*_10006_*:*_1_*:*_77877882_*|*_10005_*:*_1_*:*_2172631647"}], "epicLinkSummary": "Fedora 21 went eol on 2015-12-01[1], and should be removed", "estimate": "PT0S", "externalId": "15637", "fixedVersions": [], "id": "15637", "issueType": "Task", "key": "SERVER-1155", "labels": [], "originalEstimate": "PT0S", "parent": "60274", "parentSummary": "Fedora 21 went eol on 2015-12-01[1], and should be removed", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Fixed", "resolutionDate": "2016-04-11T15:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove fedora 21 from ci-job-configs-repo", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:79cfdf4b-b7db-45b4-904b-68a82fb46933", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:79cfdf4b-b7db-45b4-904b-68a82fb46933] [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]", "created": "2016-02-19T10:47:00.000000"}, {"author": "557058:7bdae10b-73f2-4aa7-b72c-9998a4526110", "body": "My comments refer to the version of Puppet-server in Puppet Enterprise, but the theory is the same. Thanks to [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] for his assistance during my checks.\n\nSetup:\nVirtualbox VM, CentOS 7, `vb.memory = \"6100\"`\n\n\n*site.pp*\n{code}\n\nnode default {\n  $eyaml_message = hiera('encrypted_message') \n  notify{$eyaml_message:}\n}\n\n{code}\n\n*Run the agent constantly:*\n\n{code}\nwhile sleep 2", "created": "2016-02-26T13:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5ad302a7-67ea-4afc-baad-fa9e700de03a]'s PR was merged:\n\nhttps://github.com/TomPoulton/hiera-eyaml/pull/187#issuecomment-191454381\n\nAnd supposedly is included in version 2.1.0 of hiera-eyaml.  We should validate that that resolves the leak for PE and then I think we can close this out.", "created": "2016-03-02T15:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Customer who originally reported this issue (PE-13809) is testing the fix on one of their nodes.  If that goes well then we can close this out.", "created": "2016-03-09T11:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Fixed with the latest release of hiera-eyaml.\n\nhttps://github.com/TomPoulton/hiera-eyaml/releases/tag/v2.1.0", "created": "2016-03-16T11:09:00.000000"}], "components": [], "created": "2016-02-19T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@759fd1d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4mnb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2244178340_*|*_5_*:*_1_*:*_16845753026_*|*_6_*:*_1_*:*_0"}], "description": "h1.  The Workaround\n\nSet max-requests-per-instance to 0 ( disabled ).\n\nPE: http://docs.puppetlabs.com/pe/latest/config_puppetserver.html#tuning-maxrequestsperinstance-on-puppet-server\n\nOpen Source: http://docs.puppetlabs.com/puppetserver/2.2/config_file_puppetserver.html#settings\n\nh1. The Problem:\nAs a result of exploring a customer support escalation (PE-13809), we discovered that there is a major memory leak caused by the {{hiera-eyaml}} gem.\n\nThe situation is this:\n\n1. Adding {{eyaml}} to your configured list of hiera backends causes the {{hiera-eyaml}} code to be loaded\n2. The {{hiera-eyaml}} code has a {{require}} that loads the {{highline}} namespace from the {{Highline}} gem\n3. Loading the {{highline}} namespace has a side effect of creating a global variable called {{$terminal}}, which, when run under JRuby, causes an object called {{ConsoleReader}} (from the {{JLine}} API) to be constructed.\n4. The constructor for the {{JLine ConsoleReader}} spawns a Java Thread in the background.  The {{ConsoleReader}} API expects for you to call {{.shutdown}} to clean up this thread when you are done using it.\n5. The {{Highline}} library never attempts to clean up the {{ConsoleReader}}, so this Thread just keeps running indefinitely.  \n6. In the JVM, Threads are GC roots, which means that anything referenced by the Thread is ineligible for GC.  The thread has a reference to the {{ConsoleReader}}.\n7. A JRuby instance flush is triggered in Puppet Server, either via the pool flush API, or because we hit the value of {{max-requests-per-instance}}.\n8. Puppet Server creates a new JRuby instance and attempts to shut down the old one.\n9. It appears that JRuby is unable to clean up the old instance properly, because it still sees the reference to the {{ConsoleReader}} via the highline global {{$terminal}} variable, and something about the fact that the {{ConsoleReader}} is ineligible for GC prevents the JRuby instance from being cleaned up.\n10. We now have two JRuby instances in memory, both using large amounts of RAM, one of which is no longer referenced or used by Puppet Server, but is ineligible for GC.\n\nThe most frustrating part of all of this is that {{highline}} is really only useful for CLI tools, and should not be necessary for any server-side functionality of {{hiera-eyaml}} at all.  On the server, we're basically only ever using {{hiera-eyaml}} for decryption, and that should not ever need to interact with a TTY / CLI / readline / highline / JLine at all.\n\nSome possible options for fixing the situation:\n\n1. File a PR against {{hiera-eyaml}} that prevents {{highline}} from ever being \"require\"d, unless it's actually going to be used.  This might be the easiest fix but it's gross because it relies on the knowledge that simply loading {{highline}} is going to have a side effect that causes a memory leak.\n2. File a PR against {{highline}} that gets rid of the global variable, does not construct a {{ConsoleReader}} unless it is absolutely necessary, cleans up the {{ConsoleReader}} appropriately when it is done with it, or some combination of the above.  I'm not certain that it would be possible to make some of these changes without breaking the highline API, because it is a very magical DSL that involves monkey patching major Ruby classes, and may not be possible to implement without a global variable.\n3. Supposedly the next major version of highline (2.0) is refactored to no longer use JLine at all.  It hasn't been officially released yet, and I don't know if it's API-compatible such that it could be consumed by hiera-eyaml w/o changes to hiera-eyaml as well.  Further, I don't know that whatever replacement they have for JLine won't have the same issue with creation of and poor management of background threads, so we'd need to investigate that.\n\nWe believe that this issue came up for this customer because of the switch to provide a default value for {{max-requests-per-instance}} in the latest PE releases.  If that is true, this problem is likely to affect all PE users that are using {{hiera-eyaml}}, so we need to get a solution in place ASAP.\n\nIMHO we should be very seriously considering the idea of making {{hiera-eyaml}} an officially supported thing and moving it into the PL namespace.  We're already supporting it, frequently, whether we say it's supported or not.  Pretending that it's not supported only makes it more difficult for us to actually fix issues when they arise.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16974", "fixedVersions": [], "id": "16974", "issueType": "Bug", "key": "SERVER-1154", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-03-16T11:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "hiera-eyaml causes significant memory leak when used with Puppet Server max-request-instances", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [61aa57|https://github.com/puppetlabs/puppet-server/commit/61aa571541e18d6535c404775a925655e3cb2598].", "created": "2016-02-22T15:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed full Jenkins Puppet Server CI run - https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-master/126/.  Moving to the \"Testing\" column.", "created": "2016-02-22T15:56:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Assigning to [~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6] based on conversation with @John Duarte.", "created": "2016-03-01T16:12:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] This seems like a pretty low-risk change. Does it need additional validation?", "created": "2016-03-03T14:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] I'll leave it up to y'all to decide if this needs any more scrutiny, but I think the unit test coverage we have for this now - and NC coverage of this in PE - should be sufficient.", "created": "2016-03-03T14:51:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Resolved per discussion in comments and QA risk analysis.", "created": "2016-03-03T15:07:00.000000"}], "components": [], "created": "2016-02-18T11:34:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@428ce73b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynnc7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Discovered in existing scope"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_276262182_*|*_1_*:*_1_*:*_115968_*|*_10007_*:*_1_*:*_76713692_*|*_3_*:*_1_*:*_8298502_*|*_5_*:*_1_*:*_17951084140_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_861002693"}], "description": "When an HTTP request is made to the \"environment_classes\" endpoint and the requestor includes an \"Accept-Encoding: gzip\" header, the response, when Jetty decides to gzip it, will include some extra \"--gzip\" characters on the end of the HTTP Etag response header.  For example:\n\n{noformat}\nEtag: 916b4a4ec46e852dbceb6baa254d76b909f1dcc8--gzip\n{noformat}\n\nThe actual tag that Puppet Server is holding in memory, however, does not include this \"\\-\\-gzip\" - since Jetty is the one adding it during the HTTP response generation.  If a subsequent request includes the \"--gzip\" characters on the end of the \"If-None-Match\" header, Puppet Server will interpret the incoming tag to not match the latest one it computed and will, therefore, re-parse class content and return a 200 OK response.\n\nI don't think a client should have to have any special interpretation for the \"--gzip\" characters - i.e., knowing to chop them off before roundtripping in the \"If-None-Match\" header for a subsequent request.  I haven't found anything in HTTP RFCs, etc., which talks about this as being a \"standard\" way of indicating that the corresponding response body was gzipped.  This may just be a Jetty-specific convention, not sure.\n\nIt does look like Jetty's latest GzipHandler code has logic for stripping the \"--gzip\" characters off of the \"If-None-Match\" header for an incoming request before passing that request downstream to be handled by another servlet.  For Jetty 9.3.7, see:\n\nhttps://github.com/eclipse/jetty.project/blob/jetty-9.3.7.v20160115/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java#L440-L454\n\nWe use the GzipHandler in trapperkeeper-webserver-jetty9.  However, in the version of Jetty that tk-webserver-jetty9 is currently using, v9.2.10, this logic to strip the characters off during the request handling is not present. \n \nIn order to address this issue in Puppet Server for the short term, it would probably be better to just have Puppet Server specific code strip off the \"--gzip\" characters, when present, from an incoming \"If-None-Match\" header before doing the tag comparison.  Upgrading to a newer Jetty version would be better for the long term but would be a significantly larger investment - e.g., to qualify that other unrelated regressions have not been introduced.  Doing this work in Puppet Server now shouldn't be problematic when we upgrade to a \"fixed\" Jetty version later.  We'd just have the opportunity then to remove the code that should no longer be needed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16973", "fixedVersions": ["SERVER 2.3.0"], "id": "16973", "issueType": "Bug", "key": "SERVER-1153", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-03-03T15:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "environment_classes tag validation doesn't handle --gzip in if-none-match header", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did some analysis of this with the YourKit profiler and didn't find any signs of leakage around the use of the environment_classes endpoint.\n\nFor my test setup, I did the following:\n\n1) Started puppetserver on my Mac from a lein uberjar build of Puppet Server source at [8f2419e|https://github.com/puppetlabs/puppet-server/commit/8f2419ec53fcdf68d58dc40158831c6bba34798c] with the YourKit agent attached:\n\n{noformat}\njava -agentpath:/Applications/YourKit_Java_Profiler_2015_build_15088.app/Contents/Resources/bin/mac/libyjpagent.jnilib=disableexceptiontelemetry,disablestacktelemetry,disabletracing,disablealloc,probe_disable=* \\\n  -jar ./target/puppet-server-release.jar --bootstrap-config ./dev/bootstrap.cfg \\\n  --config ./dev/puppet-server.conf\n{noformat}\n\nI disabled some of the agent functionality just to get a bit faster execution time for the server / less YourKit instrumentation.\n\n2) Under the .../master/code/environment/production/modules directory, installed a large set of common Puppet community / Forge modules - about 50.  These were similar to the ones included in the performance.tgz attachment in SERVER-993.\n\n3) Ran a script that did the following:\n\na) Two primer cURL requests to the environment_classes endpoint with a query parameter of \"environment=production\".\n\nI did these just to allow JRuby to avoid seeing some of the expected one-time object allocations in the diffs between subsequent memory snapshots. \n\nb) 17 more of the same environment_classes cURL requests.  After each cURL query, ran the following command to create a YourKit memory snapshot:\n\n{noformat}\njava -jar /Applications/YourKit_Java_Profiler_2015_build_15088.app/Contents/Resources/lib/yjp-controller-api-redist.jar \\\n    localhost 10001 capture-memory-snapshot\n{noformat}\n\n---\n\nUsing the \"Generation\" feature in YourKit, I compared object allocations across the 17 snapshots.  The only consistent new allocations that I saw between generations were all Jetty / JDK / SSL related.  New SSL SessionId objects appeared each generation, and those typically have collateral allocations (related byte arrays and such).  Those are transitively held by \"soft\" references, though, and, therefore, should be cleaned up whenever the JVM needs to do \"hard\" GC.  I've seen this in past memory profiling as well and so am not concerned that there's anything new here related to the environment_classes endpoint.\n\nI did not see any new memory allocations across generations related to JRuby or Clojure - which are the new sets of objects that I would expect to come into play with the environment_classes endpoint.\n\nBased on the above, I'm going to close out this ticket.  /CC [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14].\n\n\n", "created": "2016-02-25T09:46:00.000000"}], "components": [], "created": "2016-02-17T17:03:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ad4a62b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynncf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_518247169_*|*_3_*:*_1_*:*_144353549_*|*_5_*:*_1_*:*_18573734111_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3582346"}], "description": "This ticket would cover doing some analysis of the use of the new environment_classes endpoint to ensure that the use of it doesn't leak memory.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14693", "fixedVersions": ["SERVER 2.3.0"], "id": "14693", "issueType": "Task", "key": "SERVER-1152", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-02-25T10:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Analyze environment_classes endpoint for memory leaks", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hmmm... I assume you are referring to the {{admin-api}} endpoint?  And that you're curling it or some such?\n\nI actually would have expected this to behave gracefully and not interfere with any existing agent connections, so that behavior is suprising to me.  I presume it's been easy for you to repro that issue?\n\nOne other thing that might be worth checking is that in our upcoming OSS release (and current nightly builds) we now support sending a HUP signal to the server to reload the services.  Would be curious to hear how the behavior of that feature compares to what you're describing here with the JRuby flush.", "created": "2016-02-16T13:19:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "You say it should be easy to reproduce, but having messed with some stuff since this, I can't reproduce.  Closing because meh.", "created": "2016-02-29T09:52:00.000000"}], "components": [], "created": "2016-02-16T08:26:00.000000", "creator": "5b1e529cba383e0814003fb3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ada43a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4jdj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1128357796_*|*_6_*:*_1_*:*_0"}], "description": "With puppet running as a rails app under Passenger, it was possible to soft restart the ruby processes gracefully by touching tmp/restart.txt in the root of the app.\n\nWith puppetserver, the flush_jruby_pool API offers a similar looking function, however it appears to hard stop the ruby processes without allowing them to finish.\n\nThis appears to result in the failure of puppet runs because it terminates the TCP connection and the client complains:\n\nFeb 16 14:55:24 thing puppet-agent[2455]: Could not retrieve catalog from remote server: Connection reset by peer - SSL_connect\n\nIs it possible to gracefully terminate terminate the processes once they have no further requests pending?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16154", "fixedVersions": [], "id": "16154", "issueType": "New Feature", "key": "SERVER-1149", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b1e529cba383e0814003fb3", "resolution": "Cannot Reproduce", "resolutionDate": "2016-02-29T09:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "flush_jruby_pool should support a soft restart", "timeSpent": "PT0S", "updated": "2016-03-01T18:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This failed again in the overnight Jenkins CI job here:\n\nhttps://jenkins.puppetlabs.com/job/platform_puppet-server_unit-clj_master/JDK=openjdk7,label=unit/149/console\n\nFailure output from the console looked the same in this case as in this ticket's description.", "created": "2016-02-19T09:22:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "https://github.com/puppetlabs/puppet-server/pull/939#issuecomment-192356052", "created": "2016-03-04T10:58:00.000000"}], "components": [], "created": "2016-02-12T14:41:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c0da8bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotjz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_420374789_*|*_3_*:*_1_*:*_1120759103_*|*_5_*:*_1_*:*_17442894056_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_696622004"}], "description": "We've seen the jruby-pool-int-test block hang in CI a few times, mostly via Travis I believe.  We did see it happen on a recent Jenkins run, too, though.\n\nHere's a snippet of the output from https://jenkins.puppetlabs.com/job/platform_puppet-server_unit-clj_master/JDK=openjdk7,label=unit/132/console:\n\n{noformat}\nlein test puppetlabs.services.jruby.jruby-pool-int-test\n2016-02-11 02:58:56,717 WARN  [async-dispatch-48] [o.e.j.s.h.ContextHandler] Empty contextPath\n2016-02-11 03:02:33,281 WARN  [async-dispatch-10] [o.e.j.s.h.ContextHandler] Empty contextPath\n2016-02-11 03:05:31,260 WARN  [async-dispatch-14] [o.e.j.s.h.ContextHandler] Empty contextPath\nBuild timed out (after 20 minutes). Marking the build as aborted.\nBuild was aborted\n{noformat}\n\nI suppose this could time out due to a really slow run but with the number of blocking promises we have in those tests which do not have associated timeouts, I'm suspicious that this may actually be a problem with the tests or potentially production code itself.  It might be worth taking a look at these tests again soon to see what might be causing these failures.  It will probably be challenging to reproduce these given that failures are so seldom and these tests are pretty slow to run anyway even when they pass.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16972", "fixedVersions": [], "id": "16972", "issueType": "Task", "key": "SERVER-1148", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-03-09T12:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Intermittent jruby-pool-int-test hangs in CI", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "https://confluence.puppetlabs.com/display/PROD/PE+Clojure+Service+Architecture", "created": "2016-02-11T14:25:00.000000"}], "components": [], "created": "2016-02-11T12:21:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e38c230"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4bhz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "blocking other teams' work, had bandwidth due to scheduling issues"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20693_*|*_3_*:*_1_*:*_7426255_*|*_10009_*:*_1_*:*_421333444_*|*_5_*:*_1_*:*_19346669547_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15330", "fixedVersions": [], "id": "15330", "issueType": "Task", "key": "SERVER-1147", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-02-16T11:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "write up notes for gareth about PE service architecture", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Can we change the name to \"lookup hocon support\" (since hiera is subcomponent in lookup, not the other way around)?", "created": "2016-02-12T00:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Done", "created": "2016-02-12T10:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] : [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] had requested that we move this work over to his team, as I believe they are actively working on related changes.", "created": "2016-09-28T10:55:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] OK. I added the team to this because Karen asked me why it was in our sprint but not in the active sprint view. If the whole thing (including the ticket we has in the sprint PUP-6476) then we should remove the team from this. If there will be tickets in this epic that both teams work on, then we should have both teams on this epic. This is a side effect of making our board use epic swim lanes - if we are not on the epic, then the ticket will be hidden. ", "created": "2016-09-28T11:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] Gotcha.  I think [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] was going to take over PUP-6476 as well.  I didn't realize it was still assigned to me / in an open sprint - I'm not actively working on it.", "created": "2016-09-28T11:20:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I will be taking things over from this epic to the \"productize lookup\" epic that we are working on. There are some tickets that I don't know how to handle (for example the \"noarch\" related tickets).", "created": "2016-09-28T12:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "FYI - I moved everything that was left in here over to PUP-6484 (if it was actually related to the remaining lookup/hocon work), or to SERVER-1577 if it had to do with the remaining (non-RE) work for packaging gems with Puppet Server.  Closing this epic out.", "created": "2016-09-30T08:18:00.000000"}], "components": [], "created": "2016-02-11T11:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f6e9aab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-1"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "lookup hocon support"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_grey"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo7gf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_125097998938_*|*_6_*:*_1_*:*_0"}], "description": "This epic is just to hold tickets relating to adding HOCON support to hiera and the newer puppet data provider stuff.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14976", "fixedVersions": [], "id": "14976", "issueType": "Epic", "key": "SERVER-1146", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Incomplete", "resolutionDate": "2020-01-29T09:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "lookup hocon support", "timeSpent": "PT0S", "updated": "2020-01-29T09:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This has been overtaken by events, may end up creating a new ticket to build a job for this at some point.", "created": "2016-08-04T16:14:00.000000"}], "components": [], "created": "2016-02-10T19:21:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f61f53c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr7r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_575965728_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_14615634295"}], "description": "This is a follow-up to SERVER-854, which ended up being a gargantuan amount of work to get the dev/ scripts working and the newly written (but previously unused) jenkins-integration automation steps working.  Because of this, I didn't get the actual OPS JJB job done and working.  This ticket is for finishing it.\n\nThe current state of this effort is:\n- a JJB job that installs PE 2015.3.1 on a given master SUT\n- Unzips the OPS tarball from test-catalogs-large-files into code-staging\n- Installs the catalog_zero module from test-catalogs\n- Kicks off the scala scenario (which may fail almost immediately with fail with little output)\n\nThe remaining work will be:\n- Run the OPS job against some dev VMs and see how far the scala scenario gets\n- Debug and resolve any issues that come up\n- (MAYBE) Do a new PE recording, although the existing PE201530CatalogZero.scala simulation might actually work\n- (MAYBE) Finish file sync integration in SERVER-1144. This might not be strictly necessary since the asynchronous background process could've synced the directories before we ever start running the simulation. But do we really want to leave this to chance?", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15970", "fixedVersions": ["None"], "id": "15970", "issueType": "Task", "key": "SERVER-1145", "labels": ["gatling", "server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Fix", "resolutionDate": "2016-08-04T16:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Finish OPS deployment jenkins job", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [], "components": [], "created": "2016-02-10T15:43:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67ae6c21"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3e0f:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Nice-to-have for Direct Puppet that team was able to pull in."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_239689068_*|*_1_*:*_1_*:*_232074_*|*_10007_*:*_1_*:*_162875471_*|*_3_*:*_1_*:*_21353482_*|*_5_*:*_1_*:*_18830170119_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_4630828_*|*_10006_*:*_1_*:*_590787829"}], "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "16971", "fixedVersions": ["SERVER 2.3.0"], "id": "16971", "issueType": "Task", "key": "SERVER-1143", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-02-22T10:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add default tk-auth rule for static_file_content", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] can you gentlemens review this and make sure it covers everything?", "created": "2016-02-10T12:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Looks good to me.  Not sure if we want to do the warning message part of it unless we have a sane way to do it as a \"warn once\" after process startup.  We do already have warning messages at server startup for the case that {{use-legacy-auth-conf}} is set to {{true}}, so maybe that would be enough?", "created": "2016-02-10T12:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Current puppet v3 \"ruby-routes\" would be node, file_content, file_metadata(s), file_bucket_file, catalog, report, resource_type(s), environment(s), and status.\n\nCurrent puppet v3 \"clojure-routes\" would be environment_classes and static_file_content.", "created": "2016-02-10T13:02:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. This has the downside that users who are using legacy auth.conf will potentially have to understand that the new routes don't respect the old legacy auth.conf stuff, which may be confusing, but hopefully this would only be an issue for a very small subset of users.\n\nThis only applies to new routes *which call into Puppet*, right?  i.e. {{static_file_content}} was never going to honor old school auth.conf (unless we did shenanigans to enable us to utilize the old auth mechanism from Puppet Server directly, which I don't think was ever really on the table).", "created": "2016-02-10T16:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] that is correct.", "created": "2016-02-10T16:44:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Makes sense (y)", "created": "2016-02-11T14:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [912992|https://github.com/puppetlabs/puppet-server/commit/9129923a88dd8add56c0cd9da89230aea2a73c7d].", "created": "2016-02-22T16:55:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The PR appears to include relevant and improved unit tests for this change.  I'm marking this Low Risk and resolving.  ", "created": "2016-02-26T10:33:00.000000"}], "components": [], "created": "2016-02-10T12:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c589b8b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynn7r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_64778264_*|*_1_*:*_2_*:*_28658402_*|*_10007_*:*_1_*:*_267604213_*|*_3_*:*_2_*:*_753227664_*|*_5_*:*_1_*:*_18485889484_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_257986516_*|*_10006_*:*_1_*:*_3187818"}], "description": "Filing this ticket as a follow-up to the issue that [~accountid:63d40628f6e1b543161789a7] and [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] discovered yesterday where we weren't parsing query params properly if legacy ruby auth.conf was enabled.\n\nThere are two things to fix/improve here:\n\n1. What happens in terms of authorization for new Clojure routes if legacy ruby auth.conf is enabled, and\n2. More predictable handling of query/form parameter parsing for Clojure routes\n\nDiscussed this in some detail with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and where we ended up was with a proposal that we split the clojure and ruby routes out into two separate route trees in the codebase.  So, e.g., instead of having one big fn that defines all of the master routes in a single route tree, we'll do something more like this:\n\n{code}\n(let [ruby-routes (comidi/routes\n                   (comidi/ANY [\"/ruby1\"] [] \"ruby1\")\n                   (comidi/ANY [\"/ruby2\"] [] \"ruby2\"))\n      clojure-routes (comidi/routes\n                      (comidi/ANY [\"/clojure1\"] [] \"clojure1\")\n                      (comidi/ANY [\"/clojure2\"] [] \"clojure2\"))]\n  (comidi/context \"/v3\"\n                  ruby-routes\n                  clojure-routes))\n{code}\n\nI've tested this in the REPL and it works fine.\n\nSwitching to this model, we can then wrap each of these subtrees with different middleware.  For the ruby routes, we'd use effectively the same middleware stack that we are currently using, which includes all of the request-handler/jruby stuff, plus the conditional tk-auth stuff here: https://github.com/puppetlabs/puppet-server/blob/46da66f06a61d6e176219b5350752e85a139b9ff/src/clj/puppetlabs/services/master/master_core.clj#L481-L484\n\nThe clojure route tree would be wrapped with an unconditional call into the tk-auth middleware, plus an unconditional call to something like ring's built-in {{wrap-params}}.  The latter will ensure that clojure routes always have query params / form-encoded params available, w/o relying on side effects from the tk-auth middleware.\n\nThe former will ensure that all non-ruby routes are authorized via tk-auth regardless of the 'use-legacy-auth-conf' setting.\n\nThis has the downside that users who are using legacy auth.conf will potentially have to understand that the new routes don't respect the old legacy auth.conf stuff, which may be confusing, but hopefully this would only be an issue for a very small subset of users.  We also had some confirmation via e-mail from [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] that he was OK with not actually supporting ruby-auth.conf-driven auth for these new routes.  This is a slight deviation from our original conversation with him, in that in our previous conversation we basically said that if a user was using legacy ruby auth.conf then these endpoints would not have any authorization at all.  Instead, under this proposal, they would always be authorized via tk-auth.  After discussion in the Direct Puppet meeting yesterday I believe that we agreed that for the static_file_content endpoint that the importance of having some authorization in place in all configurations outweighed the downsides of the possible confusion related to the legacy auth.conf.\n\nSplitting the clojure and ruby routes out like this will probably make the code cleaner and more maintainable going forward as well.\n\nA few considerations to keep in mind during the implementation work for this:\n\n* It might be worthwhile to log a warning when one of the clojure endpoints is hit and the \"use-legacy-auth-conf\" setting is enabled, and say \"WARNING: you have configured your system to use the legacy auth.conf, but this endpoint doesn't support it; performing authorization check via tk-auth\".\n* [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] pointed out that there is a chance that this refactor might require some tweaks to the legacy puppet3 routes, but if that is true, it should surface via test failures, so I wouldn't worry about this unless it happens.  And if it does happen please feel free to ping [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] or [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] for assistance.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15967", "fixedVersions": ["SERVER 2.3.0"], "id": "15967", "issueType": "Improvement", "key": "SERVER-1142", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-02-26T10:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve handling of authorization and query/form params for non-Ruby routes", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I do not think this story needs an acceptance test", "created": "2016-02-16T11:56:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated the connected story directly", "created": "2016-03-01T18:51:00.000000"}], "components": [], "created": "2016-02-09T23:11:00.000000", "creator": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@21df13a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4cv3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_43766249_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1755040733"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14691", "fixedVersions": [], "id": "14691", "issueType": "New Feature", "key": "SERVER-1140", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "resolution": "Won't Do", "resolutionDate": "2016-03-01T18:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Static catalog acceptance: Reduced load on compiler masters, Story PUP-5535", "timeSpent": "PT0S", "updated": "2016-03-01T18:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] This acceptance test references a story that isn't part of Burnside, probably want to defer until later.", "created": "2016-03-02T10:26:00.000000"}], "components": [], "created": "2016-02-09T22:36:00.000000", "creator": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@336b3eda"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4cun:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_45872721_*|*_3_*:*_1_*:*_37433405704_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1808769321"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15328", "fixedVersions": [], "id": "15328", "issueType": "New Feature", "key": "SERVER-1138", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "resolution": "Won't Do", "resolutionDate": "2017-05-09T16:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Static catalog acceptance: Compile master not to compile catalog until told, Story PUP-5530", "timeSpent": "PT0S", "updated": "2017-05-09T16:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Did I put this on the right scrum board?\n", "created": "2016-02-09T22:25:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Yes, [~accountid:557058:8872d0b6-d198-4e25-92ad-02776be82d59], this is the correct board.\n\nI do not think this needs an acceptance test", "created": "2016-02-16T12:00:00.000000"}], "components": [], "created": "2016-02-09T22:22:00.000000", "creator": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73207be4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4cuf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_46745987_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_39242563686"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14761", "fixedVersions": [], "id": "14761", "issueType": "New Feature", "key": "SERVER-1137", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "resolution": "Won't Do", "resolutionDate": "2017-05-09T17:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Static catalog acceptance: 60% reduction of compile master load, Story PUP-5529", "timeSpent": "PT0S", "updated": "2017-05-09T17:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [], "components": [], "created": "2016-02-09T22:10:00.000000", "creator": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4295a6d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4cu7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_47477378_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_39242506056"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17352", "fixedVersions": [], "id": "17352", "issueType": "New Feature", "key": "SERVER-1136", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "resolution": "Won't Do", "resolutionDate": "2017-05-09T17:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Static catalog acceptance: update manifests on master without causing agents to get those updates, Story PUP-5527", "timeSpent": "PT0S", "updated": "2017-05-09T17:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] [~accountid:63d40628f6e1b543161789a7] do either of you know who might be an SME on trusted_oid mappings?  This came up during our triage this morning, but we aren't familiar with it and have a few questions to ask before we know whether this is something in the Puppet Server code or not.", "created": "2016-02-10T11:22:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] this was a community contribution for PUP-2995. Tbh, I wouldn't say there is an SME. And without digging in, I have no idea if this was generically broken along the way somehow or whether it is puppetserver-specific.", "created": "2016-02-10T12:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] it looks like you were involved in the original PR review / merge, any ideas on this?", "created": "2016-02-10T12:26:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "No ideas, and to my horror I just spotted that the PR in question did not contain any unit tests. #asleepatthewheel", "created": "2016-02-10T12:51:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "IIRC, the mechanism itself is just a simple aliasing thing.", "created": "2016-02-10T12:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] OK, in this case it seems like nobody has any significant understanding of how this works and someone is going to need to dig into it.  Any ideas how we decide which team to do the initial spelunking?  reauchambeau?", "created": "2016-02-10T12:55:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "There is good documentation in https://docs.puppetlabs.com/puppet/latest/reference/config_file_oid_map.html.\n\nMy guess is that the oid translation only happens with ruby puppet master due to the call in https://github.com/puppetlabs/puppet/blob/master/lib/puppet/application/master.rb#L256 but not when running puppetserver? Does puppetserver use bouncycastle to extract the client cert from the request, parse the certificate extensions and add them to the trusted hash? If so, bouncycastle may not \"know\" about the oid mappings.", "created": "2016-02-10T13:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:63d40628f6e1b543161789a7] that sounds like a solid theory.  I think that's enough input to say that this ticket needs to come into a Puppet Server sprint.\n\nAlso, is there anything we can do to try to prevent changes like that from being merged in the future w/o taking Puppet Server into consideration?  I almost wonder if we should put a git commit hook in that looks for anything that touches master.rb and fire off a warning or something :)", "created": "2016-02-10T13:39:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] pointed out that this change went in a year ago and that it raises a reasonable likelihood of other differences between the two codebases.", "created": "2016-02-17T16:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] this is the other ticket that I was talking about.", "created": "2016-03-15T17:30:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] After staring at it for a while, I think this can actually be worked in parallel with TK-293.\n\nIn TK-293, I'm adding support for reading extensions from the auth conf and using them when applying auth rules", "created": "2016-03-24T12:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] I'm not sure what you mean about this ticket requiring support for a new config file.\n\nI think the change for this ticket is very likely going to be just adding the line of code that [~accountid:63d40628f6e1b543161789a7] mentioned earlier...\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/application/master.rb#L256\n\n... into Puppet Server's own Ruby initialization code.  Maybe somewhere around here?\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-2.3.1/src/ruby/puppet-server-lib/puppet/server/puppet_config.rb#L51\n\n--\n\nFor the work where we would allow any custom mappings in Puppet's recognized {{trusted_oid_mapping_file}} to be used in the CSR attributes support that we're adding to tk-auth for TK-293, I wonder if it would make sense to carve off a new SERVER project ticket (assuming one doesn't exist already).  I agree for this latter set of work that we will need to look into how we can make the Clojure-level code in Puppet Server be able to parse the custom oid mappings out of the file and make tk-auth aware of them as part of its rule matching logic.\n\n--\n\nSeems like we could cover this with the following set of tickets:\n\n- This ticket - just make the {{custom_trusted_oid_mapping}} work from Ruby Puppet's perspective (the way it does for a Ruby Puppet master) in terms of having references to trusted facts with custom extension short names in Puppet code, etc.\n\n- TK-293 - Basic tk-auth implementation support for defining certificate extensions in auth rules and providing API for consumers to inject custom OID mappings for cert extensions.\n\n- Some new SERVER ticket (if one doesn't already exist) - Puppet Server integration with the tk-auth changes in TK-293, including providing the basic set of Puppet-defined OID mappings to tk-auth.\n\n- Maybe another new SERVER ticket - Puppet Server tk-auth support for including the {{custom_trusted_oid_mappings}} that Ruby Puppet currently supports.\n\n[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5], [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] - does that make sense?", "created": "2016-03-24T12:39:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. For the work where we would allow any custom mappings in Puppet's recognized trusted_oid_mapping_file to be used in the CSR attributes support that we're adding to tk-auth for TK-293, I wonder if it would make sense to carve off a new SERVER project ticket (assuming one doesn't exist already). I agree for this latter set of work that we will need to look into how we can make the Clojure-level code in Puppet Server be able to parse the custom oid mappings out of the file and make tk-auth aware of them as part of its rule matching logic.\n\nThis sounds correct, although I wonder if there's overlap with SERVER-1005.\n\nbq. TK-293 - Basic tk-auth implementation support for defining certificate extensions in auth rules and providing API for consumers to inject custom OID mappings for cert extensions.\n\nI don't think anything in TK-293 has to do with \"providing API for consumers to inject custom OID mappings for cert extensions\".  If I'm mistaken, can you please explain?  (Maybe the description of TK-293 would be the right place for that explanation.)\n", "created": "2016-03-24T15:46:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "{quote}    TK-293 - Basic tk-auth implementation support for defining certificate extensions in auth rules and providing API for consumers to inject custom OID mappings for cert extensions.\n\nI don't think anything in TK-293 has to do with \"providing API for consumers to inject custom OID mappings for cert extensions\". If I'm mistaken, can you please explain? (Maybe the description of TK-293 would be the right place for that explanation.){quote}\n\nThe ticket is out of date, I'll update the description.", "created": "2016-03-24T16:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This issue is also covered in PE-14746.  In that case, the user was attempting to make use of the {{trusted_oid_mapping_file}} but found that the \"extensions\" listed for the node in a query to the PuppetDB facts endpoint (or the Nodes -> Inventory -> Facts tab in the PE console view of the same data) identifies the 'name' of the custom extensions by their OID value rather than by the \"short name\" listed in the mapping file.\n\nAs we attempt to implement the fix for this issue in Puppet Server, I think it would be good to run this kind of a \"system-level\" test back through as confirmation.\n\nFor example:\n\n1) Define a custom OID -> 'short name' mapping in the trusted_oid_mapping_file.\n\n2) Add an entry for the custom OID (not the 'short name' because it doesn't work - see https://docs.puppetlabs.com/puppet/latest/reference/config_file_oid_map.html#limitations-of-oid-mapping) into the 'csr_attributes.yaml' file.\n\n3) Use 'puppet cert generate myserver' to generate a cert which includes the custom extensions.\n\n4) Do an agent run against the server (where PuppetDB is the configured report processor).\n\n5) Do a query to the PuppetDB facts endpoint, something like:\n\n{noformat}\ncurl -X GET http://127.0.0.1:8080/pdb/query/v4/facts --data-urlencode 'query=[\"and\", [\"=\", \"name\", \"trusted\"], [\"=\", \"certname\", \"myserver\"]]'\n{noformat}\n\n6) Confirm that for the name values listed under the \"value.extensions\" key in the response payload, the name key for the custom extension has the custom short name and not the custom oid.\n\n", "created": "2016-03-24T16:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}For the work where we would allow any custom mappings in Puppet's recognized trusted_oid_mapping_file to be used in the CSR attributes support that we're adding to tk-auth for TK-293, I wonder if it would make sense to carve off a new SERVER project ticket (assuming one doesn't exist already).{quote}\n\n{quote}This sounds correct, although I wonder if there's overlap with SERVER-1005.{quote}\n\nI think SERVER-1005 is a totally different issue.  SERVER-1005 has to do with enabling the ability for the CA to execute a specific autosigner executable for certificate requests that have a SubjectAltName extension, something which is always disallowed today.  I don't think tk-auth support for expressing rules that match based on certificate extensions and/or support for the trusted_oid_mapping_file would come into play at all for a SubjectAltName autosigner. ", "created": "2016-03-24T16:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] I'm just doing a drive-by here, not sure I've totally grokked all of the recent comments, but I wanted to chime in and say that I believe that [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] is correct that neither this ticket nor TK-293 should require any new config files being introduced.  If we're not all on the same page about that then we should sync up.\n\nI also agree with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] that SERVER-1005 is unrelated.", "created": "2016-03-28T12:33:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I was mistakenly referring to the custom oids file as a \"new\" file. It's only \"new\" in the sense that Puppet Server will start parsing it, though. Either way, that parsing won't happen in this ticket or in tk-293.", "created": "2016-03-28T12:46:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "No new config files.\n\nFor TK-293, I believe it means that there's new configuration (new API for auth rules) supported in the existing auth.conf (which extensions to trust, etc.).  But that's it.", "created": "2016-03-28T17:20:00.000000"}], "components": ["Puppet Server"], "created": "2016-02-09T20:17:00.000000", "creator": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b52914e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyng4v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_83179131_*|*_1_*:*_1_*:*_659403057_*|*_10007_*:*_2_*:*_536580327_*|*_3_*:*_2_*:*_693623961_*|*_5_*:*_2_*:*_1266953559_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_22148753_*|*_10004_*:*_1_*:*_609865_*|*_10006_*:*_1_*:*_3453349178"}], "description": "Steps to reproduce:\n\nCreate on master:\n\n{code:title=/etc/puppetlabs/puppet/custom_trusted_oid_mapping.yaml|borderStyle=solid}\n---\noid_mapping:\n  1.3.6.1.4.1.34380.1.2.2:\n    shortname: 'ap_rs_cloud_id'\n    longname: 'RightScale Cloud ID'\n  1.3.6.1.4.1.34380.1.2.3:\n    shortname: 'ap_rs_account'\n    longname: 'RightScale Account'\n{code}\n\nCheck permissions:\n{code}\n-rw-r--r-- 1 pe-puppet pe-puppet 213 Feb 10 02:47 /etc/puppetlabs/puppet/custom_trusted_oid_mapping.yaml\n{code}\n\nRestart puppetserver: {{service pe-puppetserver restart}}\n\nOn agent create this:\n{code:title=/etc/puppetlabs/puppet/csr_attributes.yaml|borderStyle=solid}\nextension_requests:\n  1.3.6.1.4.1.34380.1.2.2:  '8'\n  1.3.6.1.4.1.34380.1.2.3:  '77504'\n{code}\n\nInstall Puppet agent from the master using the Curl command\n\nAdd the following to {{site.pp}}\n{code}\nnotify { \"trusted_hash\":\n    message => $::trusted['extensions'],\n}\n{code}\n\nOutput on the agent (styled):\n{code}\n{\n  \"1.3.6.1.4.1.34380.1.2.2\"=>\"8\", \n  \"1.3.6.1.4.1.34380.1.2.3\"=>\"77504\"\n}\n{code}\n\nExpected output:\n{code}\n{\n  \"ap_rs_cloud_id\"=>\"8\", \n  \"ap_rs_account\"=>\"77504\"\n}\n{code}\n\nI have also tried adding {{trusted_oid_mapping_file}} to {{puppet.conf}} with no luck", "epicLinkSummary": "minor CA / auth / SSL improvements", "estimate": "PT0S", "externalId": "16970", "fixedVersions": ["SERVER 2.3.2"], "id": "16970", "issueType": "Bug", "key": "SERVER-1150", "labels": [], "originalEstimate": "PT0S", "parent": "15287", "parentSummary": "minor CA / auth / SSL improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "resolution": "Fixed", "resolutionDate": "2016-04-12T22:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "custom_trusted_oid_mapping does not work", "timeSpent": "PT0S", "updated": "2016-04-27T14:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "{noformat}\n2016-02-22 12:18:36,297 INFO  [async-dispatch-2] [p.s.v.versioned-code-service] No code-content-command set for versioned-code-service. Attempting to fetch code content will fail.\n2016-02-22 12:18:36,305 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Only one of \"versioned-code.code-id-command\" and \"versioned-code.code-content-command\" was set. Both or neither must be set for the versioned-code-service to function correctly.\n{noformat}\n", "created": "2016-02-22T13:19:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated that if either code-*-command setting is missing, that puppetserver refuses to start and logs a mostly relevant error message.\nValidated that if either of the scripts that code-*-command points to is missing, that puppetserver refuses to start.\n\nValidated against 2.2.2.master.SNAPSHOT.2016.02.22T0325 on CentOS 6.", "created": "2016-02-22T17:53:00.000000"}], "components": [], "created": "2016-02-09T15:54:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@531a1785"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dzz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Pulled in from next sprint, as there was nothing left in the sprint to do."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_81868002_*|*_1_*:*_1_*:*_3837628_*|*_10007_*:*_1_*:*_164628576_*|*_3_*:*_1_*:*_86963699_*|*_5_*:*_1_*:*_18805093782_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_793008495_*|*_10006_*:*_1_*:*_41981"}], "description": "Before injecting {{code_id}} onto a catalog request, if {{code-content-command}} is not set, return an HTTP response with a (500?  409?) before even passing the catalog request into Puppet.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "16752", "fixedVersions": ["SERVER 2.3.0"], "id": "16752", "issueType": "Improvement", "key": "SERVER-1134", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-02-22T17:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fail server startup when one code-*-command setting is missing", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Fixing this will be handled in SERVER-1131, which may not be an exact duplicate, but is close enough.\n", "created": "2016-02-10T16:32:00.000000"}], "components": [], "created": "2016-02-08T16:23:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28940b96"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynsmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_154347125_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_18985429"}], "description": " The error generated by a code-id command which returns an invalid code id is a little ambiguous.\n\n{{Running script generated an error. Command executed: 'some_command', error generated: 'An absolute path is required, but 'some_command' is not an absolute path'}}\n\nIt almost makes it sound like the {{some_command}} script generates the {{'An absolute path is required, but 'some_command' is not an absolute path'}} message. Or that the script ran at all, which it hasn't at this point\n\nIt should probably be reworded to something more like:\n\n{noformat}\nCommand '<command>' can't be executed. Error: 'An absolute path is required, but '<command>' is not an absolute path'\n{noformat}\n\nThe offending code is the {{execution-error-msg}} function in https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/services/versioned_code_service/versioned_code_core.clj", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "14975", "fixedVersions": [], "id": "14975", "issueType": "Bug", "key": "SERVER-1132", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Duplicate", "resolutionDate": "2016-02-10T16:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Error generated by code-id script returning an invalid code-id is ambiguous", "timeSpent": "PT0S", "updated": "2016-02-10T16:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated error is now:\n2016-02-17 09:33:16,743 ERROR [qtp71931198-159] [p.s.v.versioned-code-core] Running script generated an error. Command executed: '/bin/echo foo', error generated: 'Command '/bin/echo foo' appears to use command-line arguments, but this is not allowed.'\n\npuppetserver --version\npuppetserver version: 2.2.2.master.SNAPSHOT.2016.02.17T0326\n\nValidated on CentOS 6.\n", "created": "2016-02-17T10:34:00.000000"}], "components": [], "created": "2016-02-08T16:07:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7759a1b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3e07:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77247347_*|*_1_*:*_1_*:*_155271939_*|*_10007_*:*_1_*:*_79002826_*|*_3_*:*_1_*:*_20047991_*|*_5_*:*_1_*:*_19263439310_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_334640063_*|*_10006_*:*_1_*:*_91391551"}], "description": "If {{code-id-command}} is set to {{/bin/echo foo}}, the following error is logged:\n\nbq. Running script generated an error. Command executed: '/bin/echo foo', error generated: 'The referenced command '/bin/echo foo' does not exist'\n\nThis error message is less than great, for the following reasons:\n1. It's not at all obvious that the root cause of the problem is that the user specified command-line arguments in {{code-id-command}}.\n2. It says that \"a script was run\" and a \"command\" was \"executed\", which seems misleading at best.\n\nInstead, this error message should be something like:\nbq. Invalid setting for \"code-id-command\"; \"/bin/echo true\" appears to use command-line arguments, but this is not allowed\". \n\nSee also SERVER-1132, it's quite similar to this ticket.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15327", "fixedVersions": ["SERVER 2.3.0"], "id": "15327", "issueType": "Improvement", "key": "SERVER-1131", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-02-17T10:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve error message for invalid code-id-command", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [8f2419|https://github.com/puppetlabs/puppet-server/commit/8f2419ec53fcdf68d58dc40158831c6bba34798c].", "created": "2016-02-24T17:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed through the Jenkins CI pipeline at https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-master/133/.  Moving to the \"testing\" column.", "created": "2016-02-25T13:53:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Assigning to [~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6] based on conversation with [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced].", "created": "2016-03-01T16:13:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] This seems a low-risk change in that the race is already present. I'm not sure I'd be able to test it such that I was confident the race is gone.", "created": "2016-03-03T14:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] I think would be pretty difficult to write a good system-level test for this race condition.  I have a Clojure integration-level test that was committed along with the implementation PR which proved that the race condition existed and was resolved but it involved doing some artificial things like making the environment manifest parsing really slow in order to have other activities take place at the same time.  Not sure how you'd be able to do the same sorts of things in a deliberate way for a system-level test.\n\nI'm okay with you resolving this without any further functional review if you don't see the need, but I'll leave that up to you to decide for sure.", "created": "2016-03-03T14:57:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Closing based on Jeremy's input and the difficulty to test this in a system-level way.", "created": "2016-03-03T15:04:00.000000"}], "components": [], "created": "2016-02-08T09:02:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c87edf9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Highest Test Level Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Unit test committed with PR"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynnbj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_72448576_*|*_1_*:*_1_*:*_180170694_*|*_10007_*:*_1_*:*_89454626_*|*_3_*:*_1_*:*_518951205_*|*_5_*:*_1_*:*_17951251430_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_609049587_*|*_10006_*:*_1_*:*_625256169"}], "description": "The PR in flight for SERVER-1111 introduces a race condition in the following scenario:\n\n1) Request to environment_classes to parse info for an environment is received.\n\n2) Sometime between when the parsing starts and the parsing ends / cache is updated with an etag based on the latest parsed content, code on disk for that environment is updated and the environment-cache endpoint is hit to expire that environment's cache entry.\n\n3) Etag is updated based on the latest parsed data from the request received at step 1.\n\nThe Etag in the cache at this point would now be based on \"old\" data but would continue to be used, essentially causing the intermediate environment-cache call to be ignored.  A second environment-cache call would be needed to \"re-expire\" the cache entry in order for fresh data to be parsed for a subsequent environment_classes call.\n\nThis race condition would not apply in a PE / file-sync based code update workflow since the activities of parsing code for an environment_classes call and updating code / requesting environment cache flushes are made mutually exclusive by virtue of the file sync updater thread locking the JRuby pool during its updates.  This race condition could exist, however, for PE users not using the file-sync feature or any OSS users that may want to use the environment_classes endpoints and call environment-cache as part of their code update workflows.\n\nThe expected outcome from this ticket should be that an environment-cache call to expire an environment lead to the very next environment_classes call for an environment to get freshly parsed data, closing up this race condition.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14760", "fixedVersions": ["SERVER 2.3.0"], "id": "14760", "issueType": "Bug", "key": "SERVER-1130", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-03-03T15:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "environment_classes etag / expiration race condition", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2016-02-22T13:11:00.000000", "name": "oss-jvisualvm-tracer-allweekend.csv.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11108"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] and I have spent a fair amount of time poking at this.  Some things we found, for posterity:\n\n* for the first 50 or so HUPs (specifically, [2 x number of cores + 42|https://github.com/clojure/core.async/blob/07e70e47a0d2f3f6b606fe2ed3a993b83cf2c29f/src/main/clojure/clojure/core/async/impl/exec/threadpool.clj#L16-L22]), core.async will create a new thread for each HUP, until its thread pool has reached the maximum size.  Afterward the thread count stays stable.  We don't believe this is an issue, but [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] has filed a ticket (TK-323) to consider some options for changing the thread pool in TK in the future.\n* the global JVM MBean registry has a class called [{{MBeanServerNotification}}|https://docs.oracle.com/javase/7/docs/api/javax/management/MBeanServerNotification.html], which tracks the registration and unregistration of MBeans.  It appears that by default the JVM will keep the most recent 1000 notifications in memory, presumably for auditing / debugging purposes.  When we stop and restart Jetty, it unregisters and re-registers a bunch of MBeans, so until this buffer of 1000 notifications is full, it will appear that memory is being accumulated across HUPs.  It stabilizes afterward.  \n* I left an instance of OSS Puppet Server running over the weekend, with a bash loop triggering a HUP every 30s.  It seemed stable, memory usage patterns looked fine.  I took heap dumps at several points during the run and have done a decent amount of comparisons on them", "created": "2016-02-22T12:56:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "The other thing that we saw while doing this that might be worth noting is that after doing several HUPs there were org.jruby.Ruby objects apparently leftover. After looking into these more, almost all were \"Pending Finalization.\"\n\nIn YourKit, this was easy to see because they were actually shown with a \"Pending Finalization\" label. In MAT, this was a bit harder to see, but tracing the GC roots of these JRuby objects showed that all but one or two (possibly depending on whether HUPs were still in progress at the time of the heap dump) had Finalizer as their GC root.\n\nGiven that these eventually disappeared after HUPs were stopped and that the thread count and memory usage didn't show issues in the longer running test that Chris did, we determined that these leftover pending finalization org.jruby.Ruby objects were probably okay.", "created": "2016-02-24T10:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "On the 'Pending Finalization' topic:\n\nIn pretty much all of the heap dumps I looked at, if 'max-active-instances' was set to n, then there were always n+1 strongly-reachable instances of org.jruby.Ruby.  n of them were ours, obviously, and the extra one appeared to be a built-in global variable called {{globalRuntime}} that is automatically created by JRuby.  We're not using that one, or loading any code into it, so that didn't seem like a problem.\n\nThere were usually about 20-30 instances of org.jruby.Ruby that showed up in YourKit as 'pending finalization'", "created": "2016-02-24T14:58:00.000000"}], "components": [], "created": "2016-02-06T08:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@492dd6d6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotjb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_354933282_*|*_3_*:*_1_*:*_507719223_*|*_10009_*:*_1_*:*_164207562_*|*_5_*:*_1_*:*_18657810236_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_536701367"}], "description": "Analyze Puppet Server memory usage before and after HUPs to ensure we're not leaking memory.", "epicLinkSummary": "Support HUP for faster restart", "estimate": "PT0S", "externalId": "14759", "fixedVersions": ["SERVER 2.3.0"], "id": "14759", "issueType": "Task", "key": "SERVER-1129", "labels": [], "originalEstimate": "PT0S", "parent": "16343", "parentSummary": "Support HUP for faster restart", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-02-24T10:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Memory testing for HUP support", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [63f662|https://github.com/puppetlabs/puppet-server/commit/63f6620d8ef2f31d799a8520e45deed307d6dc84].", "created": "2016-02-09T14:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "available in 2016.1.0-rc2-280-g068fcc3 ", "created": "2016-02-10T16:08:00.000000"}], "components": [], "created": "2016-02-06T08:18:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fd063ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4bgn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "HUP work moved into current sprint"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_70805448_*|*_1_*:*_1_*:*_5540553_*|*_10007_*:*_1_*:*_273052175_*|*_3_*:*_1_*:*_1332637_*|*_5_*:*_1_*:*_19852653078_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_18629461"}], "description": "This ticket just covers bumping the TK dependency to a version that includes HUP.", "epicLinkSummary": "Support HUP for faster restart", "estimate": "PT0S", "externalId": "16969", "fixedVersions": ["SERVER 2.3.0"], "id": "16969", "issueType": "New Feature", "key": "SERVER-1127", "labels": [], "originalEstimate": "PT0S", "parent": "16343", "parentSummary": "Support HUP for faster restart", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-02-10T14:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Integrate HUP into OSS Puppet Server", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [38295b|https://github.com/puppetlabs/puppet-server/commit/38295bb7c41abab7d29e1c49f8da6cb1e8fb5673].", "created": "2016-02-16T08:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "CI pipeline was green after this PR was merged.\n\nProbably not much here that's worth functionally testing in addition to the coverage for SERVER-1110.  The PR which was merged for this ticket largely just included some additional \"integration\" tests of the underlying work done in various PUP tickets in core Ruby Puppet.  The work to make the endpoint work for manifest parsing error cases was ultimately done as part of SERVER-1111.\n\nMoving this to the testing column for QA review.  /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2016-02-16T08:51:00.000000"}], "components": [], "created": "2016-02-03T14:22:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4068894e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4bhb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth and to help Language team validate other tickets they had completed this sprint"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_421001541_*|*_1_*:*_1_*:*_481745_*|*_10007_*:*_1_*:*_96162268_*|*_3_*:*_1_*:*_54329623_*|*_5_*:*_1_*:*_19355719512_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_317767_*|*_10006_*:*_1_*:*_531357196"}], "description": "PUP-5809 requests a change to the {{ClassInformationService.classes_per_environment}} method to ensure that when a list of classes is successfully parsed for a file that the list of classes is returned in an element under a top-level hash, as was first described in PUP-4819, rather than as a flat array, as is implemented now.  When PUP-5809 lands and we bump Puppet Server up to a newer puppet-agent which includes the associated changes, we'll need to update Puppet Server's environment_classes implementation to look for the new format.\n\nAlso, per the initial implementation in SERVER-1110, Puppet Server currently doesn't properly translate the response from a {{classes_per_environment}} call when an error occurs in parsing a manifest file.  An HTTP 500 error with a cryptic schema error is thrown instead of a well-formed response.  To avoid too much rework, it might be best to try to fix this as part of the work to sync up to the latest core Puppet changes from PUP-5809 rather than do a shorter-term Puppet Server fix that would have to be reworked when PUP-5809 lands.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15325", "fixedVersions": ["SERVER 2.3.0"], "id": "15325", "issueType": "Task", "key": "SERVER-1126", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-02-16T08:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update environment_classes implementation to use class hash instead of array", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5b61153325ea8f2ca147bd04", "body": "I really like this idea. ping [~accountid:557058:2e262343-0274-4117-9db7-d7df71049820] to help make sure it happens from our side.\n\nWe've also had folks from ops set up a desk with an engineering team -- I worked with RE for a few weeks last year, and [~accountid:557058:750ff3bd-7564-4d8a-b480-b500b85be583] is currently with QE. From our side I think there's value just to being around when people run into issues ops could help with, and conversely I imagine it'd be interesting for people from your team to overhear what our puppet experiences are even if it's not budgeted as a full-time embedded person. Maybe a desk exchange for a while?", "created": "2016-02-02T17:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "That's an interesting idea, [~accountid:5b61153325ea8f2ca147bd04], thanks.  I'm hoping to talk through some prioritization stuff with [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] and [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] soon, and we'll keep that in mind.", "created": "2016-02-02T17:25:00.000000"}, {"author": "557058:750ff3bd-7564-4d8a-b480-b500b85be583", "body": "Ooh. We need to set up a 2015.3 staging master\u2026 I have a ticket somewhere (OPS-7578). Might be good to collaborate on somehow.", "created": "2016-02-02T19:35:00.000000"}, {"author": "557058:2e262343-0274-4117-9db7-d7df71049820", "body": "I'm in favor.", "created": "2016-02-03T12:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Whenever we do this I would really like for someone to dig in to RE-5962", "created": "2016-02-19T18:04:00.000000"}, {"author": "5b61153325ea8f2ca147bd04", "body": "I don't think it's still crashing regularly. Former user do you know?", "created": "2016-02-19T18:10:00.000000"}, {"author": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "body": "[~accountid:5b61153325ea8f2ca147bd04] not sure, I feel like we've had some false alerts for service restarts lately, but I haven't looked into it so I don't really know.", "created": "2016-02-25T16:23:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We were finally able to do the \"Embed\" activity last week -- 8/1/2016 - 8/3/2016.  I sent a writeup about this to the tech-discuss list here - https://groups.google.com/a/puppet.com/forum/#!topic/tech-discuss/es53Lf79e0s.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] - do you think we should close out this epic now or was there more you were thinking we might do later on that would warrant keeping this open for longer?", "created": "2016-08-08T10:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm good w/closing it for now.", "created": "2016-08-08T10:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Ok, closing for now...", "created": "2016-08-08T14:06:00.000000"}], "components": [], "created": "2016-02-02T14:54:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@651cdbf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server Ops Embed"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo75j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16236732220_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_4636_*|*_10014_*:*_1_*:*_20108"}], "description": "We recently invited [~accountid:5b61153325ea8f2ca147bd04], Former user, and [~accountid:557058:7368c417-6ae3-44d6-b51f-851aec16cd49] to one of our show-and-tell meetings to talk about their experiences running PE Puppet Server on our own infrastructure.\n\nThey gave us a doc summarizing their situation: https://docs.google.com/document/d/1dtFUeH8KEPTRvDEDq8M_ZkDvyfv7sIs_vBhh0CS9pC0/edit#heading=h.mwq7yhw3wvgb\n\nThe meeting was really valuable, highlighted several opportunities for improvement, and reinforced some theories that we have about tuning and possible optimization options. However, to really get the full value out of it, we're going to need to have someone from our team embed with ops for some period of time to get some hands-on, brainstorm, maybe try playing with some settings related to memory and GC, etc.\n\nWe haven't had much luck blocking out time for this kind of activity in the past, so I'm creating this epic to capture the desire in the hopes that we can potentially create some tickets in here, put story points on them, and budget them against our sprint velocity.\n\nI'm thinking maybe we'd set up some initial thing where someone embedded for half a day, and then followed up for a few hours on several subsequent days to observe how well any changes went, etc. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16486", "fixedVersions": [], "id": "16486", "issueType": "Epic", "key": "SERVER-1125", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-08-08T14:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Ops Embed", "timeSpent": "PT0S", "updated": "2016-08-09T16:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-02-02T11:55:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b16a3f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1123"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3rjz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_83448763_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_63527092467"}], "description": "The current code for executing external commands is synchronous and requires buffering the entirety of STDOUT into memory at once.\n\nWe need to add some functions / methods that provide support for running commands asynchronously and using a PipedInputStream to restrict the buffer size to a maximum amount, so that we don't risk blowing out the process's heap when the external command returns a large amount of data.", "epicLinkSummary": "Extract shellutils library", "estimate": "PT0S", "externalId": "16968", "fixedVersions": [], "id": "16968", "issueType": "Improvement", "key": "SERVER-1124", "labels": [], "originalEstimate": "PT0S", "parent": "16751", "parentSummary": "Extract shellutils library", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2018-02-07T17:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "support for streaming / async shell commands", "timeSpent": "PT0S", "updated": "2018-02-07T17:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This may overlap a bit with PE-13768", "created": "2016-02-02T12:11:00.000000"}, {"author": "557058:6e79b811-3a3e-4713-9f4e-ef17b127b24f", "body": "From grooming, we discussed that\u00a0this particular library is designed to be easier to use in situations where you have Java as a common platform (read: JRuby) where projects that don't run JRuby can use conch or similar more easily. So extracting this is probably not useful at this time.", "created": "2018-02-07T17:26:00.000000"}], "components": [], "created": "2016-02-02T11:51:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48ae0bea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Extract shellutils library"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjubb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_125875398143_*|*_6_*:*_1_*:*_0"}], "description": "This epic will capture the work of extracting our latest shellutils code from Puppet Server and putting it into a general-purpose library that can be re-used by other projects.\n\nI also imagine that we'll lump a few new feature requirements in here; namely: support for timeouts, support for async execution with a max buffer size for the STDOUT stream.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16751", "fixedVersions": [], "id": "16751", "issueType": "Epic", "key": "SERVER-1123", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2020-01-29T09:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Extract shellutils library", "timeSpent": "PT0S", "updated": "2020-01-29T09:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "See SERVER-1374 for a link to a write-up of our findings.", "created": "2016-06-20T13:27:00.000000"}], "components": [], "created": "2016-02-02T11:50:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a621188"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-3"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Investigate upgrading to JRuby9k"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "yellow"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo75r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11419748580_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_278367"}], "description": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] spent some hack-week time proving out the feasibility of us upgrading to JRuby9k.\n\nWe need to push forward on this sometime soon, as all of the new development efforts in JRuby-land are focused on this version, and the older version we're currently using (1.7.x) is going to become increasingly obsolete as time goes on.\n\nThis seems especially relevant given that a lot of the stuff that [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] ran into during his spike had to do with managing external processes, and that's something we've been having a lot of other issues around lately (e.g. in support escalation PE-13809).  We don't want to burn a lot of time debugging that sort of thing in the old JRuby only to have to re-learn everything when we switch to JRuby 9k.\n\nWe also need to be thinking about whether or not security updates will continue to be available on the old JRuby branch.\n\nJeremy noted some apparent performance issues in his JRuby9k branch, so we need to dig into those ASAP so that we can report issues upstream if there are any.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16485", "fixedVersions": [], "id": "16485", "issueType": "Epic", "key": "SERVER-1122", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-06-13T17:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate upgrading to JRuby9k", "timeSpent": "PT0S", "updated": "2016-10-04T09:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This epic may overlap a bit with PE-13768.", "created": "2016-02-02T12:06:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed in Emerald sprint planning.  We don't believe any of the changes in this epic will produce changes that would be testable by QA.  I'm setting QA Reviewed on this ticket and the member tickets for this sprint.  QA does not plan to validate any of the tickets in this sprint.", "created": "2016-04-20T12:39:00.000000"}], "components": [], "created": "2016-02-02T11:49:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@737acf2d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-1"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Extract JRuby library"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_grey"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn9yf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11421540076_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_3796807877"}], "description": "This epic would entail extracting the JRuby instance / pool logic from Puppet Server and into its own git repo.\n\nThis would need to be usable by Code Manager, and probably should *not* include any of the puppet-specific logic.  Just the code for managing the configuration of JRuby ScriptingContainers, the pool logic, etc.\n\nIn addition to making the code re-usable by Code Manager, it would also break up our tests into smaller chunks, so that devs working on puppet-server don't need to run all of the very expensive JRuby tests.  It'll also give as an easier place to work on a branch for upgrading to JRuby9k.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15636", "fixedVersions": ["SERVER 2.5.0"], "id": "15636", "issueType": "Epic", "key": "SERVER-1121", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-07-27T16:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Extract JRuby library", "timeSpent": "PT0S", "updated": "2016-08-10T16:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] [~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c] based on our convo yesterday.", "created": "2016-02-02T12:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Public e-mail thread here:\n\nhttps://groups.google.com/forum/#!topic/puppet-dev/z0pPpD3Eazw\n\nNo objections, so, I'm going to go ahead and create some tickets to populate the epic.", "created": "2016-04-04T16:04:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Added link to 5.0.0 Removals thematic epic", "created": "2016-04-04T16:48:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Think we need to break the deprecation and removal sides apart since the deprecations are delivered in 4.x and removals in 5.0 (fine this way if it is just a handful of tickets in this epic).", "created": "2016-04-04T16:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] only 4 tickets for now, only one of those targeted at 4.x.  But we can reorganize however everyone else wants it to be set up.", "created": "2016-04-04T17:44:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] can we mark this epic as \"done\" now?", "created": "2017-05-16T08:57:00.000000"}], "components": [], "created": "2016-02-02T11:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a1eacaf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Deprecate/remove resource_types endpoint"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyna0v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Deprecation"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The HTTP resource_type and resource_types endpoints and the resource_type puppet command line face have been removed.  The environment_classes HTTP endpoint in Puppet Server replaces a subset of the resource_type functionality, including name and parameter metadata for classes."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_36203163932_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_3992878573_*|*_10015_*:*_1_*:*_848428613"}], "description": "This is an epic to cover the work of deprecating / removing the old {{resource_types}} endpoint from Puppet Server.\n\nThe first step of this is going to be to work with [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and start a thread on one of the public mailing lists to try to determine what (if any) other use cases for it that we need to be able to support, beyond the functionality that will be available in the new {{environment_classes}} endpoint.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15324", "fixedVersions": ["SERVER 5.0.0"], "id": "15324", "issueType": "Epic", "key": "SERVER-1120", "labels": ["tech-debt"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-05-22T14:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Deprecate/remove resource_types endpoint", "timeSpent": "PT0S", "updated": "2018-11-06T13:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping at [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] and [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0].  This is a proposed user story so I can test code-content-command.\nPing at [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5], [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a], [~accountid:557058:8872d0b6-d198-4e25-92ad-02776be82d59]  Does this sound right?\nPing at [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced].  FYI.", "created": "2016-02-01T13:44:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This and SERVER-1118 seem technically correct but perhaps a bit too low-level to be considered \"user stories\".  Reading them, I wonder - *why* does a user want these things?\n\nThat said, if these tickets are useful for testing that functionality at a lower level ... +1, with the caveat that I think QA's time is always best spent testing things by exercising them as a user would.", "created": "2016-02-01T14:18:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Setting this blocked on SERVER-1142, and on an agent that uses the static file endpoint.  This feature has been manually validated, but implementation of an automated acceptance test requires a work round until SERVER-1142 is resolved.  \n\nManual validation:\n- Run the code_scripts.rb acceptance test, after disabling the teardown, preserve hosts...\n- Create /opt/puppetlabs/server/apps/puppetserver/code-content-command_script.sh  Set owner to root:puppet, and make it rw for root and puppet.\n{noformat}\ncd /tmp/git && git checkout $1 && git show $2:modules/$3\n{noformat}\n- Workaround SERVER-1142: Disable legacy auth.conf, and create a TK-Auth rule for the static file endpoint.\n{noformat}\n        {\n            match-request: {\n                path: \"/puppet/v3/static_file_content\"\n                type: path\n                method: get\n            }\n            allow: \"*\"\n            sort-order: 500\n            name: \"static_file_content\"\n        },\n{noformat}\n\nThen curl at the static file content endpoint:\ncurl -v -k \"https://localhost:8140/puppet/v3/static_file_content/hello_world/README.md?code_id=$code_id&environment=production\"\n\nEXPECTED RESULTS:\nYou should get the content of the hello_world module's README.md.\n\n", "created": "2016-02-16T11:34:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Given that we don't do use cases, and that we need some kind of structured way for QA (and Docs?) to say \"how will this thing work\", I think we should avoid the practice of keeping low level details out of a user-story.  We should definitely answer the \"why does the use want this?\" question when we can.\n", "created": "2016-02-18T15:32:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This was manually validated.  ", "created": "2016-02-22T17:58:00.000000"}], "components": [], "created": "2016-02-01T13:22:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d1760cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz481b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "User story for QA that reflects existing scope"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_165593135_*|*_3_*:*_1_*:*_357811950_*|*_5_*:*_2_*:*_3892117163_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1307543309"}], "description": "As a FOSS puppet-server administrator, I want a code-content-command setting that executes a shell command that accepts a file-path, a code-id, and an environment, and returns the content of the specified file to the static-file-content endpoint for consumption by an agent.\n", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "16152", "fixedVersions": [], "id": "16152", "issueType": "Story", "key": "SERVER-1119", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2016-02-22T17:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "User Story: code-content-command", "timeSpent": "PT0S", "updated": "2016-04-07T20:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping at [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] and [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0].  This is a proposed user story so I can test code-id-command.\nPing at [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5], [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a], [~accountid:557058:8872d0b6-d198-4e25-92ad-02776be82d59]  Does this sound right?\nPing at [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced].  FYI.", "created": "2016-02-01T13:18:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "{{+1}}", "created": "2016-02-01T13:42:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Setting this to \"Ready for Review\"  https://github.com/puppetlabs/puppet-server/pull/914 is up (which will introduce an acceptance test for the feature), and the feature has been manually tested.", "created": "2016-02-16T11:13:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "PR914 has been merged and is running without failure in puppet-server CI.", "created": "2016-02-18T14:30:00.000000"}], "components": [], "created": "2016-02-01T13:16:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63f905e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz480v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "late, bad bookkeeping."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "7.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_165923883_*|*_10009_*:*_1_*:*_184807609_*|*_5_*:*_1_*:*_4250167216_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_589392210_*|*_10005_*:*_1_*:*_533122629"}], "description": "User Story:\nAs a FOSS puppet-server administrator, I want a 'code-id-command' setting in puppet-server that executes a shell command that returns the current code-id of a given environment on a version controlled file system.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15635", "fixedVersions": ["SERVER 2.3.0"], "id": "15635", "issueType": "Story", "key": "SERVER-1118", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2016-02-18T14:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "User Story: code-id-command config setting", "timeSpent": "PT0S", "updated": "2017-05-01T11:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Subsequent Clojure unit test jobs that have run through CI have passed per these changes - e.g., https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_unit-clj_master/103/.\n\nMoving this to \"Resolved\" as these were just test changes, which shouldn't require extra QA functional review.  /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2016-02-01T12:41:00.000000"}], "components": [], "created": "2016-01-29T14:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e85dd38"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz473z:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found following bump of Puppet submodule to more recent code"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_249714774_*|*_1_*:*_1_*:*_94022_*|*_10007_*:*_1_*:*_3286787_*|*_3_*:*_1_*:*_425291_*|*_5_*:*_1_*:*_20638048636_*|*_6_*:*_1_*:*_0"}], "description": "The class_info tests in Puppet Server started failing when we bumped Puppet Server's Puppet submodule up to bce6b in https://github.com/puppetlabs/puppet-server/pull/888.\n\nThe failures were primarily due to the implementation of the Ruby {{ClassInformationService.classes_per_environment}} now including a {{default_source}} even for parameters that also have a {{default_literal}}.  This change was specifically requested as part of PUP-5713 and so was expected.  The tests just needed to be updated to reflect this change.\n\nThe tests also now fail because when they try to lookup an environment by the environment name, the type of the environment parameter provided to the {{getClassInfoForEnvironment}} method in \"master.rb\" is a String but a comparison is being made to the {{name}} member variable on a {{Puppet::Node::Environment}} Puppet Ruby class which is a Symbol. For some reason, the String to Symbol comparison \"worked\" before but fails now.  It would seem to make sense to have \"master.rb\" ensure that the types of both variables being compared are the same before doing the comparison, although I don't understand what changed exactly to cause this aspect of the tests to fail.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16967", "fixedVersions": ["SERVER 2.3.0"], "id": "16967", "issueType": "Bug", "key": "SERVER-1117", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-02-01T12:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "class_info tests failing per recent ClassInformationService.classes_per_environment changes", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Also, we just determined that the upstream bug/issue is a race condition", "created": "2016-01-28T12:35:00.000000"}, {"author": "557058:2d86d754-2fbb-4e17-8e03-6e58f4f29aa4", "body": "-[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I am currently encountering this error. I changed my Java version 8u91 to 8u60, which is the version Justin runs but it continues to throw this error. Additionally, this error occurs 100% of the time for me. However, one of my unit tests will fail and produce this error only when I run lein test but not lein test :unit.-\n\n-Here is some of the output from doing a lein test:-\n{code}\n\nFAIL in (autosign-csr?-ruby-exe-test) (certificate_authority_test.clj:330)\nstdout is added to master's log at debug level\nexpected: (logged? #\"print to stdout\" :debug)\n  actual: (logged [#object[ch.qos.logback.classic.spi.LoggingEvent 0x459bd7b4 \"[DEBUG] Executing '/home/jane/i18n_proj/puppetserver/./dev-resources/puppetlabs/puppetserver/certificate_authority_test/autosign_exes/ruby-autosign-executable test-agent'\"] #object[ch.qos.logback.classic.spi.LoggingEvent 0x5a1448d8 \"[WARN] Executed an external process which logged to STDERR: /usr/bin/env: \u2018ruby\u2019: No such file or directory\\n\"] #object[ch.qos.logback.classic.spi.LoggingEvent 0x54a82e5b \"[DEBUG] Autosign command '/home/jane/i18n_proj/puppetserver/./dev-resources/puppetlabs/puppetserver/certificate_authority_test/autosign_exes/ruby-autosign-executable test-agent' exit status: 127\"] #object[ch.qos.logback.classic.spi.LoggingEvent 0x4bd833fc \"[DEBUG] Autosign command '/home/jane/i18n_proj/puppetserver/./dev-resources/puppetlabs/puppetserver/certificate_authority_test/autosign_exes/ruby-autosign-executable test-agent' output on stdout: \"] #object[ch.qos.logback.classic.spi.LoggingEvent 0x50656b44 \"[WARN] Autosign command '/home/jane/i18n_proj/puppetserver/./dev-resources/puppetlabs/puppetserver/certificate_authority_test/autosign_exes/ruby-autosign-executable test-agent' generated output to stderr: /usr/bin/env: \u2018ruby\u2019: No such file or directory\\n\"] #object[ch.qos.logback.classic.spi.LoggingEvent 0x284fab18 \"[WARN] Autosign command '/home/jane/i18n_proj/puppetserver/./dev-resources/puppetlabs/puppetserver/certificate_authority_test/autosign_exes/ruby-autosign-executable' rejected certificate 'test-agent' because the exit code was 127, not zero\"]])\n\nlein test :only puppetlabs.puppetserver.certificate-authority-test/autosign-csr?-ruby-exe-test\n\nERROR in (autosign-csr?-ruby-exe-test) (ShellUtils.java:96)\nUncaught exception, not in assertion.\nexpected: nil\n  actual: java.lang.IllegalStateException: Exception while executing '/home/jane/i18n_proj/puppetserver/./dev-resources/puppetlabs/puppetserver/certificate_authority_test/autosign_exes/ruby-autosign-executable': Stream closed\n at com.puppetlabs.puppetserver.ShellUtils.executeCommand (ShellUtils.java:96)\n    com.puppetlabs.puppetserver.ShellUtils.executeCommand (ShellUtils.java:158)\n    puppetlabs.puppetserver.shell_utils$eval16902$execute_command_streamed__16911$fn__16914.invoke (shell_utils.clj:76)\n    puppetlabs.puppetserver.shell_utils$eval16902$execute_command_streamed__16911.invoke (shell_utils.clj:65)\n    puppetlabs.puppetserver.shell_utils$eval16944$execute_command__16953$fn__16956.invoke (shell_utils.clj:95)\n    puppetlabs.puppetserver.shell_utils$eval16944$execute_command__16953.invoke (shell_utils.clj:86)\n    puppetlabs.puppetserver.certificate_authority$eval17870$execute_autosign_command_BANG___17875$fn__17876.invoke (certificate_authority.clj:782)\n    puppetlabs.puppetserver.certificate_authority$eval17870$execute_autosign_command_BANG___17875.invoke (certificate_authority.clj:761)\n    ....\n{code}\n\n-Is there any fix for this? I currently am ignoring that error because it does not seem like it is because of my work.-", "created": "2016-06-17T11:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:2d86d754-2fbb-4e17-8e03-6e58f4f29aa4] - in the output from your example, I see:\n\n{quote}\n\\[WARN\\] Executed an external process which logged to STDERR: /usr/bin/env: \u2018ruby\u2019: No such file or directory\\n\n{quote}\n\nIs there a \"ruby\" executable accessible via the PATH environment variable when you run the test?  If not, I think you could get this error.", "created": "2016-06-17T11:53:00.000000"}, {"author": "557058:2d86d754-2fbb-4e17-8e03-6e58f4f29aa4", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - you have saved me. It did not occur to me that ruby was not installed. Thank you so much!", "created": "2016-06-17T15:43:00.000000"}, {"author": "70121:1924e2f1-78f2-434f-a2c2-7ac0bb1b5e16", "body": "So what's the workaround here for a bash script?  My autosign script is pretty simple - look for a file entry in my one-file-per-host node classifier directory, and sign if it's there - but now it's only working ~60% of the time.  This isn't really okay. \n\nThe code, in short:\n\n{code}\nHOST=$1\n\nif [[ \"x${HOST}\" == \"x\" ]]", "created": "2016-09-13T15:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We have another ticket related to improving the shell execution stuff that is needing some attention soon, so I've moved this one back to the triage pile in hopes that we can revisit it at the same time.\n\n[~accountid:70121:1924e2f1-78f2-434f-a2c2-7ac0bb1b5e16] in the meantime, if you can just add something to your script that ensures you are consuming STDIN, that should hopefully suffice as a workaround.  e.g.:\n\n{code}\n# Read everything from stdin\ncert=$(cat)\n{code}\n\nLet us know if that doesn't work for now!\n\n", "created": "2016-09-13T15:26:00.000000"}, {"author": "70121:1924e2f1-78f2-434f-a2c2-7ac0bb1b5e16", "body": "Will there *always* be STDIN when this script is invoked?", "created": "2016-09-13T15:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "For autosign scripts, yes - the CSR will always be on STDIN.", "created": "2016-09-13T15:35:00.000000"}, {"author": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "body": "Just ran into this after upgrading from a v4 to v5 master.  The workaround of reading everything from STDIN did work.", "created": "2017-11-02T11:13:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Neither upstream library has made progress towards fixing the bug, so we're closing this ticket as interminably blocked.", "created": "2018-02-13T17:12:00.000000"}], "components": [], "created": "2016-01-28T12:11:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c24beaa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymvgn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_582505028_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_63976317154"}], "description": "As part of the work for SERVER-1094, we discovered that there was a change between JDK7 and JDK8 that causes exceptions to be thrown by shell execution libraries such as commons-exec in certain edge-case situations.\n\nSpecifically, if you call an external command and feed it an InputStream for its STDIN, and the external program doesn't consume that input stream, then commons-exec will throw an IOException with the fairly useless error message \"Stream closed\".\n\nA simple reproducer is to use our puppetserver shell-utils code to call a command like {{/bin/true}} and pass it *anything* for its STDIN.\n\nThis doesn't happen on JDK7, it doesn't happen if the external program does read STDIN (e.g., works fine with {{cat}}), and doesn't happen if you call a program like {{/bin/true}} *without* passing it any STDIN data.  After talking it through, we decided that for SERVER-1094 we were just going to document this as a known issue and try to make sure that our error messages are useful enough for a user to figure out what's going on, and then wait for a fix upstream in commons-exec (which is the library that we are currently using to implement our shellutils).\n\nAnother option is to switch from commons-exec to [zt-exec|https://github.com/zeroturnaround/zt-exec].  That library has the same bug at the time of this writing, but the maintainers may be more proactive about fixing it than the commons-exec maintainers will be.\n\nWe've filed bug reports against both projects.  At some point in the future we should check in on those and decide how we want to move forward.\n\nRelevant bug reports are:\n\nhttps://issues.apache.org/jira/browse/EXEC-102\nhttps://github.com/zeroturnaround/zt-exec/issues/30", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15323", "fixedVersions": [], "id": "15323", "issueType": "Task", "key": "SERVER-1116", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2018-02-13T17:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade to newer version of commons-exec (or switch to zt-exec) when STDIN bug is fixed", "timeSpent": "PT0S", "updated": "2018-02-13T17:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [63f0d0|https://github.com/puppetlabs/puppet-server/commit/63f0d01105e04eddda7fe03206ef4a494772f866].", "created": "2016-02-03T15:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed through full Jenkins CI pipeline run - https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-master/87/.\n\nMoving to testing.", "created": "2016-02-03T15:25:00.000000"}], "components": [], "created": "2016-01-28T09:19:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12810296"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz465r:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found during local testing"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_96479743_*|*_1_*:*_1_*:*_18611_*|*_10007_*:*_1_*:*_339163146_*|*_3_*:*_1_*:*_104723790_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_501173166"}], "description": "Per code changes committed for SERVER-1071, if the \"master-service\" entry in the web-router-service config has an \"invalid-in-puppet-4\" key in it, the server will fail to startup with an error like the following:\n\n{noformat}\n2016-01-28 07:59:31,285 INFO  [main] [p.s.m.master-service] Master Service adding ring handlers\n2016-01-28 07:59:31,292 ERROR [main] [p.t.internal] Error during service init!!!\njava.lang.IllegalArgumentException: endpoint with id :default does not appear in configuration for service :puppetlabs.services.master.master-service/master-service\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$get_endpoint_and_server_from_config.invoke(webrouting_service_core.clj:55) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$compute_common_elements.invoke(webrouting_service_core.clj:68) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$eval11614$add_ring_handler_BANG___11621$fn__11622.invoke(webrouting_service_core.clj:114) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$eval11614$add_ring_handler_BANG___11621.invoke(webrouting_service_core.clj:110) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service$reify__11980$service_fnk__5056__auto___positional$reify__11988.add_ring_handler(webrouting_service.clj:51) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service$eval11756$fn__11933$G__11730__11941.invoke(webrouting_service.clj:10) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service$eval11756$fn__11933$G__11729__11950.invoke(webrouting_service.clj:10) ~[na:na]\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2494) ~[clojure-1.7.0.jar:na]\n\tat puppetlabs.services.master.master_service$reify__18484$service_fnk__5056__auto___positional$reify__18501.init(master_service.clj:63) ~[na:na]\n{noformat}\n\nThe failure does not occur if the \"invalid-in-puppet-4\" key is removed from the configuration.  Even though it is no longer used in Puppet Server 2.1 and later, \"invalid-in-puppet-4\" was a valid key at the time Puppet Server 2.0 was released.  For backward compatibility, it would be best for Puppet Server to continue to tolerate the presence of this key, still booting to ready but just ignoring the value for the key as Puppet Server 2.2.0 does.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16484", "fixedVersions": ["SERVER 2.3.0"], "id": "16484", "issueType": "Bug", "key": "SERVER-1115", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-02-09T10:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server fails at startup if \"invalid-in-puppet4\" key in master-service web-router-service entry", "timeSpent": "PT0S", "updated": "2016-02-26T13:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Since the endpoint is only available in Puppet Server, we should document it only in the Puppet Server docs. We should also mention the endpoint in the Puppet API docs, but prominently note that the endpoint is only available when Puppet Server is installed and link to the Puppet Server docs.", "created": "2016-01-27T12:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] - thanks, that all makes sense to me.\n\nI'd originally opened this ticket thinking that it would be a reminder to me to create some \"pre-docs\" for the new API that hopefully you'd be able to review / fix up later on.  In terms of how the work would happen for this one, would it make sense for me to take a first swing at submitting a PR with the doc updates to the puppet-server repo and then just have you follow-up sometime later with a \"clean-up\" PR?  If so, do you think we need separate tickets for the work I'd do vs. the work you'd do?", "created": "2016-01-27T15:48:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:62438584f813eb006928dc81] Sorry, this slipped off my radar", "created": "2016-01-29T17:12:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Thansk [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], I'll take a longer look at the PR tomorrow.", "created": "2016-03-03T18:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#stable at [6433e4|https://github.com/puppetlabs/puppet-server/commit/6433e45b849e49bfc649914c004680481b2879a5].", "created": "2016-03-09T10:15:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] Since this ticket was basically just about pre-docs work and the work has been integrated into the puppet-server repo, I'm going to just close it out.  I can submit a follow-up DOC project ticket for your additional review / revision work, if you'd like.  What do you think?", "created": "2016-03-09T10:16:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Awesome, go for it!", "created": "2016-03-09T10:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Closing this out.  Not sure there's anything to QA per-se since this is just documentation but /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] for visibility.", "created": "2016-03-09T10:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Follow-on doc ticket submitted as DOC-2599.", "created": "2016-03-09T12:11:00.000000"}], "components": [], "created": "2016-01-27T10:59:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4abf33d6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotjr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1850092_*|*_10007_*:*_1_*:*_487927078_*|*_3_*:*_1_*:*_554034822_*|*_5_*:*_1_*:*_17449866927_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2582512515"}], "description": "This is a placeholder ticket for documenting the environment_classes endpoint.  Details about the proposed implementation live in SERVER-1110 and SERVER-1111 for now.\n\nThis will be a Puppet Server-hosted (but not Ruby Puppet master - Rack or WEBrick hosted) endpoint but will live under the /puppet/v3 namespace.  Not sure where the best place to document this will be yet - in the core Puppet v3 HTTP API docs (https://docs.puppetlabs.com/puppet/latest/reference/http_api/http_api_index.html#puppet-v3-http-api?), Puppet Server-specific docs, or both?\n\n/CC [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17056", "fixedVersions": ["SERVER 2.3.0"], "id": "17056", "issueType": "Task", "key": "SERVER-1114", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-03-09T10:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Documentation for the environment_classes endpoint", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "Closing this ticket, as this was a placeholder for work. \nIf this is critical for future work, please reopen it. ", "created": "2017-10-05T17:53:00.000000"}], "components": [], "created": "2016-01-27T10:45:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fdb700d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr8n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2637516_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_53328198554"}], "description": "The work for SERVER-1110 would provide an implementation of an \"environment_classes\" endpoint that could be used to request class information on a per-environment basis.  It may be worthwhile to augment this with provide a way to invoke this endpoint without an environment in order to get:\n\n- A list of the available environments\n- A list of associated class information most recently cached for the available environments.\n\nJust getting a list of the available environments may not be of much value on its own, given that the /puppet/v3/environments endpoint would already provide the same data.  Although I suppose there could be some performance benefit to doing this if the environment list could be returned from data held in an in-memory Clojure cache - as opposed to having to borrow a JRubyPuppet instance and query into Ruby Puppet code to get the list, as the implementation of /puppet/v3/environments does.\n\nIf the environment_classes endpoint could additionally return an aggregated form of the most recently cached class information for all environment, however, this could help reduce the number of calls that would be necessary for \"environment_classes\" consumers to get the latest data available.  For example, if a consumer had already gotten 100 environments worth of data previously and the endpoint could somehow return aggregated \"latest\" information for the consumer which could show that 1 of the 100 environments had been updated since the consumer's last request, this could allow the consumer to only have to make 1 more call to get new data for the 1 environment - as opposed to having to query each of the 100 environments individually to see if a change has occurred.\n\nDue to the potentially large return payload / long running request which could result from such a call, I'm not sure if it would make sense to make an \"environment-less\" request to \"environment_classes\" return the full class info payload for every environment currently available on the server.\n\nIf we decide to do anything for this ticket, it may be worth figuring out how to incorporate the use of the per-environment \"etags\" from SERVER-1111 into the payload that the \"environment-less\" request to \"environment_classes\" would return.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15964", "fixedVersions": [], "id": "15964", "issueType": "Improvement", "key": "SERVER-1113", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2017-10-05T17:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider adding environment / cache enumeration support to the environment_classes endpoint", "timeSpent": "PT0S", "updated": "2017-10-05T17:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [19efb20|https://github.com/puppetlabs/puppet-server/commit/19efb20552fea86ebbd1f8097aef7a44bc07939b].", "created": "2016-02-09T14:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed through full Jenkins CI pipeline run - results at https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-master/102/.  Moving to the \"testing\" column.", "created": "2016-02-10T09:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This was promoted into PE in enterprise-dist commit 8acf6bd6, but I haven't seen a PE build come out from that commit yet.", "created": "2016-02-10T09:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] [~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] FYI: the etag support has been merged and promoted, just waiting for the next PE build to come out of the pipe.", "created": "2016-02-10T09:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "available in 2016.1.0-rc2-280-g068fcc3 ", "created": "2016-02-10T16:07:00.000000"}], "components": [], "created": "2016-01-27T09:45:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50301da5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4bh3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_68014632_*|*_1_*:*_1_*:*_6279793_*|*_10007_*:*_1_*:*_328941185_*|*_3_*:*_1_*:*_259919253_*|*_5_*:*_1_*:*_19852789607_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_20445135_*|*_10006_*:*_1_*:*_544449125"}], "description": "As a follow-on to SERVER-1110, this ticket would add on the ability for requests to the environment_classes endpoint with an environment to return an \"Etag\" that uniquely identifies the returned resource body.  That \"Etag\" could then be roundtripped by a caller in a subsequent \"If-None-Match\" header, returning an HTTP 304 (Not Modified) response if the requested resource is still the latest parsed data available.\n\nSome examples:\n\nh4. Initial request from the client without tag:\n\nRequest:\n\n- URL: GET /puppet/v3/environment-classes?environment=production\n\nResponse:\n\n- Status: 200 (OK)\n- Header: Etag: \u201cABC123\u201d\n- Body:\n\n{code}\n{\n  \"name\": \"production\",\n  \"files\": [\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/manifests/site.pp\",\n          \"classes\": []\n        },\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/modules/sample/manifests/class1.pp\",\n          \"classes\": [\n            {\n              \"name\": \"sample::class1\",\n              \"params\": [\n                {\n                  \"default_literal\": \"literal default\",\n                  \u201cdefault_source\u201d: \u201c\\\u201dliteral default\\\u201d,\n                  \"name\": \"string_with_literal_default\",\n                  \"type\": \"String\"\n                },\n                {\n                  \"default_source\": \"undef\",\n                  \"name\": \"string_with_undef_default\",\n                  \"type\": \"String\"\n                },\n                {\n                  \"default_source\": \u201cdefault\u201d,\n                  \"name\": \"string_with_default_default\",\n                  \"type\": \"String\"\n                },\n                {\n                  \"name\": \"string_with_no_default\",\n                  \"type\": \"String\"\n                },\n                {\n                  \"name\": \"variant_with_no_default\",\n                  \"type\": \"Variant[Boolean, String, Enum['one', 'three', 'two']]\"\n                },\n                {\n                  \"default_source\u201d: \u201c/^123*/\u201c,\n                  \"name\": \"regex_with_default\",\n                  \"type\": \"Regexp\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/modules/sample/manifests/class2.pp\",\n          \"classes\": [\n            {\n              \"name\": \"sample::class2\",\n              \"params\": []\n            }\n          ]\n        },\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/modules/sample/manifests/corrupt.pp\",\n          \"error\": \"Syntax error at 'up' at /etc/puppetlabs/code/environments/production/modules/sample/manifests/corrupt.pp:1:15\"\n        },\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/modules/sample/manifests/init.pp\",\n          \"classes\": [\n            {\n              \"name\": \"sample\",\n              \"params\": []\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n{code}\n\nh4. Request from client with tag:\n\nRequest:\n\n- Header: If-None-Match: \u201cABC123\u201d\n- URL: GET /puppet/v3/environment-classes?environment=production\n\nResponse:\n\n- Status: 304 (Not Modified)\n- Header: Etag: \u201cABC123\u201d\n- Body: <None>\n\nh4. Request from client with invalidated tag (i.e., because the data on the server has been updated)\n\nRequest:\n\n- Header: If-None-Match: \u201cABC123\u201d\n- URL: GET /puppet/v3/environment-classes?environment=production\n\nResponse:\n\n- Status: 200 \n- Header: Etag: \u201cDEF234\u201d\n- Body:\n\n{code}\n{\n  \"name\": \"production\",\n  \"files\": [\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/manifests/somethingnew.pp\u201d,\n          \"classes\": []\n        },\n        \u2026\n  ]\n}\n{code}\n\nImplementation tasks for this ticket will include:\n\n- Each time class information is parsed for an environment_classes request, a SHA-1 of the environment class info payload will be computed, with the SHA-1 being returned as the \"Etag\" HTTP header in the web service response.\n\n- Adding an in-memory Clojure cache that maps environments to the latest computed Etag for each environment.  The cache would be updated per environment_classes request.  The cache would likely live inside of the JRubyPuppetService's Trapperkeeper context.\n\n- Change the environment_classes request handling to look for an \"If-None-Match\" header.  If it finds one and the supplied value is non-empty and matches the corresponding value in the in-memory cache of environment etags, return an HTTP 304 (Not Modified) response, else call through to the Puppet Server Ruby layer to parse environment content as before.\n\n- Any call into {{JRubyPuppetService.mark-environment-expired!}} - whether via a File Sync update or the \u201cenvironment-cache\u201d endpoint being invoked - would cause the corresponding \u201cenvironment\u201d tag in the \u201cenvironment class info cache\u201d to be cleared.\n\n- Calls to {{JRubyPuppetService.mark-all-environments-expired!}} would clear the environment \u201ctags\" for \u201call\u201d environments currently in the \u201cenvironment class info cache\u201d.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14758", "fixedVersions": ["SERVER 2.3.0"], "id": "14758", "issueType": "New Feature", "key": "SERVER-1111", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-02-10T14:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Per-environment etag support for the environment_classes endpoint", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-01-26T15:55:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1be11398"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynsmn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Elaboration of existing Direct Puppet scope"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_146271779_*|*_1_*:*_1_*:*_69291821_*|*_10007_*:*_2_*:*_87129676_*|*_3_*:*_1_*:*_20478839_*|*_5_*:*_1_*:*_19854038642_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_535419014_*|*_10006_*:*_1_*:*_432360880"}], "description": "User-generated code IDs from {{code-id-command}} should only be considered valid if they contain  only alphanumerics, ':', '-', and '_', otherwise an error should be thrown and the catalog request should fail.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15322", "fixedVersions": ["SERVER 2.3.0"], "id": "15322", "issueType": "Improvement", "key": "SERVER-1109", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-02-10T14:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "User-generated code_id should contain only certain characters", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Filed [PR 941|https://github.com/puppetlabs/puppet-server/pull/941].", "created": "2016-03-03T18:52:00.000000"}], "components": ["DOCS"], "created": "2016-01-26T15:52:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@234eefbc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynn7z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_69509040_*|*_3_*:*_1_*:*_1234769131_*|*_10009_*:*_1_*:*_338610209_*|*_5_*:*_1_*:*_17598821007_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1903308756"}], "description": "* {{static_file_content}} endpoint\n* {{code-id-command}} setting (in other places was previously called code-id-script)\n* {{code-content-command}} setting", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "14757", "fixedVersions": ["SERVER 2.3.0"], "id": "14757", "issueType": "Task", "key": "SERVER-1108", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Done", "resolutionDate": "2016-03-07T16:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server-specific docs for Direct Puppet / static catalogs", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This has seen green tests.", "created": "2016-02-19T14:40:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Seems low risk. Was it failing before, just not failing fast?", "created": "2016-02-19T14:49:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We were allowing {{code-id-command}} to return any exit code, not gating compilation on zero, but I believe we were already checking for this and logging an error or warning.", "created": "2016-02-19T14:55:00.000000"}], "components": [], "created": "2016-01-26T15:48:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72f8f53d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dyv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_94672379_*|*_1_*:*_1_*:*_70507778_*|*_10007_*:*_1_*:*_583817272_*|*_3_*:*_1_*:*_13186154_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_5557029_*|*_10006_*:*_1_*:*_1307274187"}], "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "16750", "fixedVersions": ["SERVER 2.3.0"], "id": "16750", "issueType": "Improvement", "key": "SERVER-1107", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-02-19T16:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Catalog requests should fail-fast if code-id-command returns non-zero", "timeSpent": "PT0S", "updated": "2016-02-19T16:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2016-01-22T12:22:00.000000", "creator": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5faa56f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynsn3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_427822353_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2606866646"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15321", "fixedVersions": [], "id": "15321", "issueType": "Task", "key": "SERVER-1104", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "resolution": "Duplicate", "resolutionDate": "2016-02-26T15:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SERVER 2.3.0 release placeholder ticket", "timeSpent": "PT0S", "updated": "2016-02-26T15:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm not aware of any failures related to these tests surfacing either in Jenkins CI or Travis.\n\nLatest run from Jenkins (successful) - https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_unit-clj_master/91.\n\nI also haven't seen any per-pull requests or build history Travis failures since the PR for this ticket was merged that appeared to have anything to do with the JRuby pool locking tests.\n\nAs these were just unit test changes, marking this as resolved.  /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]", "created": "2016-01-26T12:40:00.000000"}], "components": [], "created": "2016-01-21T17:31:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@488fe323"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz427b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found from intermittent CI failures."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_326491830_*|*_1_*:*_1_*:*_28601_*|*_10007_*:*_1_*:*_87203253_*|*_3_*:*_1_*:*_826321_*|*_5_*:*_1_*:*_21156697850_*|*_6_*:*_1_*:*_0"}], "description": "We've seen some intermittent failures, mostly with Travis but sometimes locally, when running the following 2 tests - {{pool-can-borrow-after-borrow-interrupted-during-lock}} and {{pool-can-borrow-after-borrow-timed-out-during-lock}}.\n\nHere are a couple of snippets from failures.\n\nFor the {{pool-can-borrow-after-borrow-interrupted-during-lock}}:\n\n{noformat}\nFAIL in (pool-can-borrow-after-borrow-interrupted-during-lock) (lockable_pool_test.clj:532)\ncan do a borrow after another borrow was interrupted while a write lock was held\ntimed out waiting for the lock to be acquired\nexpected: (true? (timed-deref lock-thread-locked?))\n  actual: (not (true? :timed-out))\n\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-can-borrow-after-borrow-interrupted-during-lock\n\nFAIL in (pool-can-borrow-after-borrow-interrupted-during-lock) (lockable_pool_test.clj:538)\ncan do a borrow after another borrow was interrupted while a write lock was held\nsecond borrow could not be interrupted\nexpected: (thrown? ExecutionException (timed-deref borrow-thread-2))\n  actual: nil\n\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-can-borrow-after-borrow-interrupted-during-lock\n\nFAIL in (pool-can-borrow-after-borrow-interrupted-during-lock) (lockable_pool_test.clj:542)\ncan do a borrow after another borrow was interrupted while a write lock was held\ntimed out waiting for the lock thread to finish\nexpected: (true? (timed-deref lock-thread))\n  actual: (not (true? :timed-out))\n\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-can-borrow-after-borrow-interrupted-during-lock\n\nFAIL in (pool-can-borrow-after-borrow-interrupted-during-lock) (lockable_pool_test.clj:544)\ncan do a borrow after another borrow was interrupted while a write lock was held\nexpected: (not (.isLocked pool))\n  actual: (not (not true))\n\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-can-borrow-after-borrow-interrupted-during-lock\n\nFAIL in (pool-can-borrow-after-borrow-interrupted-during-lock) (lockable_pool_test.clj:549)\ncan do a borrow after another borrow was interrupted while a write lock was held\ndid not get back the same instance from the third borrowattempt as was returned from the first borrow attempt\nexpected: (identical? borrow-1 (timed-deref borrow-thread-3))\n  actual: (not (identical? \"foo0\" :timed-out))\n{noformat}\n \n\nFor the {{pool-can-borrow-after-borrow-timed-out-during-lock}}:\n\n{noformat}\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-can-borrow-after-borrow-timed-out-during-lock\n\nFAIL in (pool-can-borrow-after-borrow-timed-out-during-lock) (lockable_pool_test.clj:585)\ncan do a timed borrow from pool after previous borrow timed out while a write lock was held\ntimed out waiting for the lock to be acquired\nexpected: (true? (timed-deref lock-thread-locked?))\n  actual: (not (true? :timed-out))\n\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-can-borrow-after-borrow-timed-out-during-lock\n\nFAIL in (pool-can-borrow-after-borrow-timed-out-during-lock) (lockable_pool_test.clj:588)\ncan do a timed borrow from pool after previous borrow timed out while a write lock was held\nsecond borrow attempt did not time out\nexpected: (nil? (timed-deref borrow-thread-2))\n  actual: (not (nil? \"foo0\"))\n\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-can-borrow-after-borrow-timed-out-during-lock\n\nFAIL in (pool-can-borrow-after-borrow-timed-out-during-lock) (lockable_pool_test.clj:591)\ncan do a timed borrow from pool after previous borrow timed out while a write lock was held\ntimed out waiting for the lock thread to finish\nexpected: (true? (timed-deref lock-thread))\n  actual: (not (true? :timed-out))\n\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-can-borrow-after-borrow-timed-out-during-lock\n\nFAIL in (pool-can-borrow-after-borrow-timed-out-during-lock) (lockable_pool_test.clj:593)\ncan do a timed borrow from pool after previous borrow timed out while a write lock was held\nexpected: (not (.isLocked pool))\n  actual: (not (not true))\n\nlein test :only puppetlabs.puppetserver.lockable-pool-test/pool-can-borrow-after-borrow-timed-out-during-lock\n\nFAIL in (pool-can-borrow-after-borrow-timed-out-during-lock) (lockable_pool_test.clj:594)\ncan do a timed borrow from pool after previous borrow timed out while a write lock was held\ndid not get back the same instance from the third borrowattempt as was returned from the first borrow attempt\nexpected: (identical? borrow-1 (timed-deref borrow-thread-3))\n  actual: (not (identical? \"foo0\" nil))\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16149", "fixedVersions": ["SERVER 2.3.0"], "id": "16149", "issueType": "Bug", "key": "SERVER-1103", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-01-26T12:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Timing related failures running pool-can-borrow-after-borrow tests", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "body": "Keeping this reasonably close to the API of me.raynes.conch/run-command will make it easiest for code-manager to adopt.", "created": "2016-01-15T14:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Probably before this work is done, we will want to pull this stuff out into a shared library.  At that point, the work could probably be picked up by any team.", "created": "2016-01-20T11:23:00.000000"}], "components": [], "created": "2016-01-15T14:40:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71f4fdf3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1123"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3yun:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1628824480_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_63527028031"}], "description": "The DefaultExecutor class being used in ShellUtils supports adding a watchdog that can wait for a timeout during command execution. Timeouts will likely prove useful for many of the direct puppet uses for these execution functions.", "epicLinkSummary": "Extract shellutils library", "estimate": "PT0S", "externalId": "15320", "fixedVersions": [], "id": "15320", "issueType": "Improvement", "key": "SERVER-1100", "labels": [], "originalEstimate": "PT0S", "parent": "16751", "parentSummary": "Extract shellutils library", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Won't Fix", "resolutionDate": "2018-02-07T17:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add support for execution timeout to ShellUtils/executeCommand and the shell-utils/execute-command function", "timeSpent": "PT0S", "updated": "2018-02-07T17:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-01-15T11:39:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e46181c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ykf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Unexpected time spent dealing with CI Goalie responsibilities"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_430127993_*|*_5_*:*_1_*:*_21680614383_*|*_6_*:*_1_*:*_0"}], "description": "I burned a whole day working with [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] trying to figure out why the new release of pe-file-sync was causing unit test failures in pe-puppet-server-extensions/2016.1.x.\n\nThis upgrade process started because of expected failures in pe-puppet-server-extensions/2016.1.x that would be resolved by a new file-sync release.\n\nTurns out it was a legitimate bug in file sync: PE-13717", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17351", "fixedVersions": [], "id": "17351", "issueType": "Bug", "key": "SERVER-1098", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2016-01-20T11:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CI Time Sink: file-sync causing unit test failures during upgrade attempt", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc] - thanks for filing this one.  Just to clarify, you saw these failures running with Puppet Server, right?  If so, might be better to move this over to the SERVER project.\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - I swear I've heard you talk about various problems we've seen in the past with upper-case characters in certnames but I've forgotten the details of that now.  Any knowledge you can drop here?", "created": "2016-01-14T13:02:00.000000"}, {"author": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "body": "This was with Puppet server, yea.  Interestingly the client and server both partially handled it.  I had to sign 'puppet cert sign puppetclient.meltbeforefailure.com', and the cert itself was all lowercase.  I don't know exactly where the error lies.", "created": "2016-01-14T13:50:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:8b78034b-6c75-4679-8040-8454689b0b07", "body": "I just ran into this as well.  Puppet client 4.4.0, Puppet Server 2.3.0.  The client had a mixed case certname in puppet.conf, requested a cert, and it was signed on the server as lower case.  When running Puppet agent, these errors were seen:\n\n\n\n{code:java}\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: Error 403 on SERVER: Forbidden request: pupperserver.example.com (x.x.x.x) access to /puppet/v3/node/mixed-Case-Hostname.example.com [find] at :123\nInfo: Retrieving pluginfacts\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': Error 403 on SERVER: Forbidden request: pupperserver.example.com (x.x.x.x) access to /puppet/v3/file_metadata/pluginfacts [search] at :123\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: Error 403 on SERVER: Forbidden request: pupperserver.example.com (x.x.x.x)access to /puppet/v3/file_metadata/pluginfacts [find] at :123\nInfo: Retrieving plugin\nError: /File[/opt/puppetlabs/puppet/cache/lib]: Failed to generate additional resources using 'eval_generate': Error 403 on SERVER: Forbidden request: pupperserver.example.com (x.x.x.x) access to /puppet/v3/file_metadata/plugins [search] at :123\nError: /File[/opt/puppetlabs/puppet/cache/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: Error 403 on SERVER: Forbidden request: pupperserver.example.com (x.x.x.x) access to /puppet/v3/file_metadata/plugins [find] at :123\nError: Could not retrieve catalog from remote server: Error 403 on SERVER: Forbidden request: pupperserver.example.com (x.x.x.x) access to /puppet/v3/catalog/mixed-Case-Hostname.example.com [find] at :123\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog", "created": "2016-07-25T14:15:00.000000"}, {"author": "557058:208fc471-d54e-4e45-8455-7aaaa6d786ac", "body": "I have seen the same issue with puppet 4.10 on puppetserver behind apache reverse proxy. I ran the issue with strace and debugging and it seems that it is a internal bug in puppet agent causing this issue.\n\nRunning with a UPPERCASE entry as certname in puppet.conf, the agent just uses it. Providing it on the command line,  puppet aborts: \n\n{noformat}\n[root@WEBSERVER01 ~]# puppet agent --onetime --test --certname WEBSERVER01.vagrant.local\nError: Could not initialize global default settings: Certificate names must be lower case", "created": "2017-04-28T01:49:00.000000"}, {"author": "557058:208fc471-d54e-4e45-8455-7aaaa6d786ac", "body": "One more piece. From googeling (I think http://stackoverflow.com/questions/5136198/what-strings-are-allowed-in-the-common-name-attribute-in-an-x-509-certificate) it seems that cert names can be upper and lowercase. So puppet should work independent of case (which was proven to work above with a simple fix).", "created": "2017-04-28T02:10:00.000000"}, {"author": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "body": "FWIW, we had someone blow an hour troubleshooting certificate issues only to find out they had mistakenly added an uppercase character.", "created": "2020-02-19T14:20:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "It is unlikely that we will allow uppercase characters, because puppet agents and servers (unfortunately) have a direct mapping of certnames to file paths. Since filesystems can be mounted case-insensitively, supporting both upper and lower chars would introduce some security risks.\n\nAlso note X509 common names can contain Unicode, but we only accept [printable ASCII|https://github.com/puppetlabs/puppet/blob/9e029437b7caaebcb37569c23075d54743e58fef/lib/puppet/x509/cert_provider.rb#L15] so the issue is bigger than just upper case.\n\nThe part I'm not understanding is puppet CLIs should not allow you to create a CSR or issue a cert with uppercase/invalid chars. If so, then that's a bug we should fix. I remember this used to be a problem on Windows, because Facter would report the hostname with uppercase and that is used as subject's common name. But that should be fixed.\n\nIf the CSR is generated through something else, then that could be a problem. We've talked about adding a {{puppet ssl generate_csr}} command (PUP-10589) in cases where you want puppet to generate a CSR but not submit it to the CA. In theory you could have a provisioning step run this command and copy the private key and CSR to the newly provisioned host.", "created": "2022-02-11T13:59:00.000000"}, {"author": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "body": "[~accountid:63d40628f6e1b543161789a7] note that this bug is about 6 years old at this point - We have most recently hit it back in 2020, so I think it's probably still an issue.\n\nIt's pretty easy to test - just update puppet.conf to have a `certname` value with uppercase characters, then run `puppet agent -t` and see if the CSR is generated with uppercase characters in it...\n\nWe aren't using any CLI commands to generate this, just relying on the default behavior of the agent when there's no cert present.\n\n\u00a0\n\nIn case it's not clear here, my ask is that the agent exit immediately when configured with a certname that contains uppercase characters.\u00a0 \u00a0I am *not* asking that uppercase characters be supported.", "created": "2022-02-13T17:31:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The most recent agent exits as expected if the certname contains uppercase:\n\n{noformat}\n# cat /etc/puppetlabs/puppet/puppet.conf \n[main]\ncertname = puppetclient.MELTbeforefailure.com\nserver = puppetmaster.meltbeforefailure.com\nnode_name = cert\n# puppet agent -t\nError: Could not initialize global default settings: Certificate names must be lower case\n# echo $?\n1\n{noformat}\n\nNote there was a corner case whereby the uppercase name could \"get through\" if it was defined in the {{[agent]}} section, but the lowercase name was in the {{[main]}} section. That was fixed in PUP-9481, so I'm going to close this. Please reopen with steps to reproduce if it's still an issue.", "created": "2022-02-15T23:10:00.000000"}], "components": [], "created": "2016-01-14T12:55:00.000000", "creator": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@89f44ff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk48n:q0200000jr0u9u"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_42141456882_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2443445773_*|*_10005_*:*_1_*:*_147605615426"}], "description": "I've just spent 5 hours debugging weird SSL issues that were ultimately caused by having uppercase characters in my certname.\n\nI have a simple config:\n{noformat}\ncertname = puppetclient.MELTbeforefailure.com\nserver = puppetmaster.meltbeforefailure.com\nnode_name = cert\n{noformat}\n\nWhich causes this:\n\n{noformat}\n# puppet agent -t\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: Error 403 on SERVER: Forbidden request: 104.207.129.134.vultr.com(104.207.129.134) access to /puppet/v3/node/puppetclient.MELTbeforefailure.com [find] at :123\nInfo: Retrieving pluginfacts\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': Error 403 on SERVER: Forbidden request: 104.207.129.134.vultr.com(104.207.129.134) access to /puppet/v3/file_metadata/pluginfacts [search] at :123\nError: /File[/opt/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet:///pluginfacts: Error 403 on SERVER: Forbidden request: 104.207.129.134.vultr.com(104.207.129.134) access to /puppet/v3/file_metadata/pluginfacts [find] at :123\nInfo: Retrieving plugin\nError: /File[/opt/puppetlabs/puppet/cache/lib]: Failed to generate additional resources using 'eval_generate': Error 403 on SERVER: Forbidden request: 104.207.129.134.vultr.com(104.207.129.134) access to /puppet/v3/file_metadata/plugins [search] at :123\nError: /File[/opt/puppetlabs/puppet/cache/lib]: Could not evaluate: Could not retrieve file metadata for puppet:///plugins: Error 403 on SERVER: Forbidden request: 104.207.129.134.vultr.com(104.207.129.134) access to /puppet/v3/file_metadata/plugins [find] at :123\nError: Could not retrieve catalog from remote server: Error 403 on SERVER: Forbidden request: 104.207.129.134.vultr.com(104.207.129.134) access to /puppet/v3/catalog/puppetclient.MELTbeforefailure.com [find] at :123\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\nError: Could not send report: Error 403 on SERVER: Forbidden request: 104.207.129.134.vultr.com(104.207.129.134) access to /puppet/v3/report/puppetclient.MELTbeforefailure.com [save] at :123\n{noformat}\n\nGetting rid of the uppercase characters makes this work fine:\n\n{noformat}\n# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for puppetclient.meltbeforefailure.com\nInfo: Applying configuration version '1452801282'\nNotice: Applied catalog in 0.01 seconds\n{noformat}\n\n*Please* add a warning or error here when the certname is uppercase.  These errors are completely impossible to debug otherwise.\n\n*Outcomes*\n* Error when parsing puppet settings if a certname contains uppercase letters\n", "environment": "CentOS 6 x64, CentOS 7 x64, Puppetserver", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "17350", "fixedVersions": [], "id": "17350", "issueType": "Bug", "key": "SERVER-1809", "labels": ["ca", "low-hanging-fruit", "ssl"], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "resolution": "Cannot Reproduce", "resolutionDate": "2022-02-15T23:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Uppercase characters in certname cause pain and suffering", "timeSpent": "PT0S", "updated": "2022-02-15T23:11:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-01-14T12:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@613a0919"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xyv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Help with CI triage failures as may be needed."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_59961440_*|*_1_*:*_1_*:*_529147_*|*_10007_*:*_1_*:*_9362679_*|*_3_*:*_1_*:*_9020575_*|*_5_*:*_1_*:*_22114112292_*|*_6_*:*_1_*:*_0"}], "description": "Several of the tests in the lockable-pool-test suite involve waiting on promises to be delivered.  In the event that those might fail to be delivered, those tests could possibly block forever - at least until the test runner kills the test anyway - if something goes wrong.  The test kills could happen in such a way that we can't tell why/where the test failed.  It would be better to time the promise waits in these spots and assert if the promises haven't been delivered in a reasonable amount of time.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16749", "fixedVersions": ["SERVER 2.3.0"], "id": "16749", "issueType": "Task", "key": "SERVER-1097", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-01-15T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add timeouts to blocking promises in lockable-pool-tests", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [a9b38c|https://github.com/puppetlabs/puppet-server/commit/a9b38c051c246b9020c7f493048cc252f0ef71be].", "created": "2016-02-11T13:40:00.000000"}], "components": [], "created": "2016-01-14T11:36:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ad9aabd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotiv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Super easy ticket, avoid code bitrot"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_87101415_*|*_1_*:*_1_*:*_517382274_*|*_10007_*:*_1_*:*_5659916_*|*_3_*:*_1_*:*_9440749_*|*_5_*:*_1_*:*_19683578012_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1894180404"}], "description": "The test-hup-comes-back test is currently disabled in puppetlabs.services.jruby.jruby-pool-int-test because HUP support is not yet available in TK. Once the TK version that supports HUP is in use in puppet-server, that test should get uncommented. It will also need to be updated to call tk-internal/restart-tk-apps directly, as jenkins clients swallow up HUP signals.", "epicLinkSummary": "Support HUP for faster restart", "estimate": "PT0S", "externalId": "15962", "fixedVersions": ["SERVER 2.3.0"], "id": "15962", "issueType": "Task", "key": "SERVER-1096", "labels": [], "originalEstimate": "PT0S", "parent": "16343", "parentSummary": "Support HUP for faster restart", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-02-12T13:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable restart-tk-apps test in puppet-server once that function is available in TK", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-01-13T17:11:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c699e77"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4xzb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_583654551_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_65324471636"}], "description": "The `puppetserver config set` CLI tool will modify puppet server config files, but those changes won't be picked up until the puppet server service is restarted.  \n\nWe should have it send a SIGHUP to the service after modifying the config files, and probably toggle this with an optional flag like {{--restart-service}} or whatever.  See TK-202 for SIGHUP information.\n\nThe implementation will need to know the PID of the server process, so it'll probably have to reference {{$master-var-dir/puppetserver.pid}} directly to get that.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14974", "fixedVersions": [], "id": "14974", "issueType": "Task", "key": "SERVER-1095", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Do", "resolutionDate": "2018-02-14T13:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send SIGHUP to restart server from `puppetserver config` CLI", "timeSpent": "PT0S", "updated": "2018-02-14T13:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This broke beaker tests", "created": "2016-01-27T10:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I was able to repro this on the RHEL box by just grabbing the puppet server source and doing this in a REPL:\n\n{code}\nuser=> (require '[puppetlabs.puppetserver.shell-utils])\nnil\nuser=> (ns puppetlabs.puppetserver.shell-utils)\nnil\npuppetlabs.puppetserver.shell-utils=> (execute-command \"/bin/true\")\n{:exit-code 0, :stderr \"\", :stdout \"\"}\npuppetlabs.puppetserver.shell-utils=> (import '[java.io ByteArrayInputStream])\njava.io.ByteArrayInputStream\npuppetlabs.puppetserver.shell-utils=> (execute-command \"/bin/true\" {:in (ByteArrayInputStream. (.getBytes \"foo\" \"UTF-8\"))})\nIOException Stream closed  java.lang.ProcessBuilder$NullOutputStream.write (ProcessBuilder.java:433)\npuppetlabs.puppetserver.shell-utils=>\n{code}\n\nSo it definitely seems to have something to do with the STDIN.", "created": "2016-01-27T10:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "After further investigation we've determined that this is a race condition, and doesn't happen 100% of the time.  Therefore it does not seem possible to write a test that validates that the log message is useful.  See SERVER-1116.", "created": "2016-01-28T12:48:00.000000"}], "components": [], "created": "2016-01-13T10:47:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7dc494f5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynplr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "There was a behavior change in JDK8 that can cause execution of external shell commands to fail in rare edge cases:\n\n* If you pass data on STDIN\n* And the external shell program does not consume it\n\nA workaround is to write a wrapper script that consumes STDIN, until there is a fix in the upstream shell execution library.  \n\nHowever we have no known use cases where a user would trigger this kind of behavior.  It is technically possible in a pathological configuration of PE autosign, but extremely unlikely."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_146582076_*|*_1_*:*_1_*:*_3908383_*|*_10007_*:*_2_*:*_662293088_*|*_3_*:*_2_*:*_98175133_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_603478273_*|*_10006_*:*_1_*:*_817888909"}], "description": "There are currently two execution libraries in use in puppet-server. The first is ExecutionStubImpl, which is used in the jruby code to execute commands. The second is clojure.java.shell/sh, which is in use in the certificate authority autosign command function. The ExecutionStubImpl is more robust than clojure.java.shell and will be getting used in more places, so consolidating the existing code to also use that library would be advantageous.\n\nThis will necessitate adding support to pass in an environment for the ExecutionStubImpl library, as the autosign command messes with RUBYLIB and PATH.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14756", "fixedVersions": ["SERVER 2.3.0"], "id": "14756", "issueType": "Improvement", "key": "SERVER-1094", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-02-09T10:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update CA autosign code to use ExecutionStubImpl/executeCommand", "timeSpent": "PT0S", "updated": "2016-08-10T14:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This has been validated.", "created": "2016-03-29T13:29:00.000000"}], "components": [], "created": "2016-01-12T11:28:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@533bb92c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3vlr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_87731014_*|*_5_*:*_1_*:*_801478006_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6568706439"}], "description": "The {{code_id_script}} and {{code_content_script}} settings should be usable in Puppet Enterprise as well as open-source Puppet Server.\n\nPresumably, if the user configures values for these settings in PE, they should simply overwrite the default behavior of using File Sync.\n\nAn open question is: how should these settings be handled during an upgrade from OSS to PE?  It's important that PE \"just work\" after an upgrade, and that *probably* means that File Sync should be used, even if the user had these settings configured in OSS, but that might warrant further thought.  In any case, the user should at least be able to easily restore their previous configuration for these settings.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15634", "fixedVersions": [], "id": "15634", "issueType": "Story", "key": "SERVER-1092", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2016-03-29T13:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "'code_id_script' and'code_content_script' should be usable in PE", "timeSpent": "PT0S", "updated": "2016-04-07T20:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [], "components": [], "created": "2016-01-12T10:24:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@21477622"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynrbr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found need for this from CI test failures when bumping OSS Puppet Server into PE"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77667812_*|*_1_*:*_1_*:*_661090_*|*_10007_*:*_1_*:*_9730787_*|*_3_*:*_1_*:*_4360630_*|*_5_*:*_1_*:*_21670327470_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_611696938"}], "description": "We have some upstream dependencies of the JRubyPool class that have the need to determine when the JRubyPool is locked.  Where there is no exposed method on the class to determine if the pool is locked, those dependencies are forced to use some unwieldy methods to determine whether or not the pool is locked - e.g., try timed borrows and make the assumption that if those fail that the pool must be locked.  Some of this type of work is already being done in the Puppet Server tests to validate the lock state of the pool but it would be nice to not have to replicate that approach in upstream tests - especially since it imposes extra test time / likelihood for race conditions to produce intermittent test failures, etc.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15319", "fixedVersions": ["SERVER 2.3.0"], "id": "15319", "issueType": "Task", "key": "SERVER-1091", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-01-20T14:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create .isLocked() method for JRubyPool", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "From my initial poking at the test in question, it does indeed seem like this issue repros pretty reliably with Clojure 1.7 and not at all with Clojure 1.6.  Going to see if I can find anything in the release notes that would support [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]'s theory from SERVER-1086.", "created": "2016-01-11T15:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I went through the Clojure 1.7 changelog, and also asked around, and didn't see anything that was totally obvious that would explain this behavior.  That said, the eyeball test obviously indicates that *something* changed w/rt this in Clojure 1.7, so I am probably just going to stop digging and fix the test.  The current behavior of the test seems buggy anyway.", "created": "2016-01-11T15:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [854912|https://github.com/puppetlabs/puppet-server/commit/8549120d4aeb26d9ed26ecfa4c806c1dbbf33fff].", "created": "2016-01-12T12:16:00.000000"}], "components": [], "created": "2016-01-11T13:34:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a02ae1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynrbj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Work to resolve CI-related issue"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_191992401_*|*_1_*:*_1_*:*_30883_*|*_10007_*:*_1_*:*_66363554_*|*_3_*:*_1_*:*_15196041_*|*_5_*:*_1_*:*_22175884043_*|*_6_*:*_1_*:*_0"}], "description": "As described in SERVER-1086, there is a race condition in the puppet-server-config-test where JRuby initializations may be happening on multiple threads simultaneously, causing weird classloader errors.  This ticket is to capture the work of fixing that race condition and eliminating the transient failures from CI.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15633", "fixedVersions": ["SERVER 2.3.0"], "id": "15633", "issueType": "Bug", "key": "SERVER-1090", "labels": ["qe-task"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-01-14T17:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "fix race condition with JRuby initialization in puppet-config-service-test", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to the puppet-server#master branch at [7298de|https://github.com/puppetlabs/puppet-server/commit/7298de9b5f3597160a91e9a963a67b167370fe07].", "created": "2016-01-11T16:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "@karen this one might be better as {{ci-server}} instead of {{qe-task}}.  What say you, [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049]?", "created": "2016-01-15T14:28:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. this one might be better as ci-server instead of qe-task. What say you, Nate Wolfe?\n\nYeah this time sink wasn't due to anything QE is responsible for or cares about, so {{qe-task}} isn't correct", "created": "2016-01-15T15:00:00.000000"}], "components": [], "created": "2016-01-11T13:19:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d3e05a9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynrbb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found CI test failure"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_262236291_*|*_1_*:*_1_*:*_11516_*|*_3_*:*_1_*:*_10718943_*|*_5_*:*_1_*:*_22175902806_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1481241"}], "description": "After pushing puppet-server into pe-puppetserver, the acceptance test for puppetdb integration (in puppet-server) started failing due to duplicate resources (since puppetdb is already installed in a PE environment).\n\nThis ticket captures the unexpected time to resolve this issue.\n\nFailure: https://jenkins-enterprise.delivery.puppetlabs.net/view/pe-puppet-server-extensions/job/enterprise_pe-puppet-server-extensions_integration-system_smoke-2016.1.x/LAYOUT=64mdca,LDAP_TYPE=default,PLATFORM=centos6,SAUCE=default,label=beaker/9/testReport/junit/(root)/puppet-server_acceptance_suites_tests_00_smoke/puppetdb_integration_rb/", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14973", "fixedVersions": [], "id": "14973", "issueType": "Bug", "key": "SERVER-1089", "labels": ["qe-task"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2016-01-14T17:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CI time sink: puppedb acc. test failure in pe-puppetserver pipeline", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2016-01-11T11:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@641ec007"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3unj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found CI test failure"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_103167_*|*_5_*:*_1_*:*_22456691705_*|*_6_*:*_1_*:*_0"}], "description": "Filing this as a tracking ticket for sprint metrics, just to indicate that I spent time helping triage SERVER-1086.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16216", "fixedVersions": [], "id": "16216", "issueType": "Task", "key": "SERVER-1088", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-01-11T11:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Help look at the `config-service-test' failure in Jenkins CI", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "IMO this should not be worked until after SERVER-537 and PE-13552, because they may involve changes to implementation details that are relevant to this work.", "created": "2016-01-11T13:38:00.000000"}], "components": [], "created": "2016-01-11T11:20:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2bacc5d1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3rjr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1242491662_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_24264856899_*|*_10005_*:*_1_*:*_106002144368"}], "description": "With SERVER-1086, we encountered a problem with one of the Clojure unit tests where an error that happened during service initialization led to the {{prime-pool!}} call on the jruby-puppet-pooled-service's pool agent thread continuing on even after the jruby-puppet-pooled-service had been stopped.  It would seem better to have the jruby-puppet-pooled-service have some logic in its {{stop}} function implementation to ensure that the {{prime-pool!}} call had finished before proceeding with the actions of flushing instances from the pool and proceeding with service shutdown.\n\nSERVER-537 reworks the JRuby pool initialization and shutdown logic significantly.  It probably would be best to wait until the work on that ticket has been completed before picking up this ticket.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17349", "fixedVersions": [], "id": "17349", "issueType": "Bug", "key": "SERVER-1087", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2020-03-12T14:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "jruby-puppet-pooled-service should wait until pool primed before completing stop", "timeSpent": "PT0S", "updated": "2020-03-12T14:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Another thought that I had on this one was that maybe in the transition to the new Jenkins hosts, something changed about how we clean up the jenkins workspace between runs... maybe [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] would have thoughts on that?", "created": "2016-01-08T13:09:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I had that thought, but I'm able to recreate a similar error locally. confusingly, the path in question is puppetlabs/services/config/puppet_server_config_service_test/master/conf/ssl/certificate_requests instead of puppetlabs/services/config/puppet_server_config_service_test/master/conf/ssl but it happens at the same time.\n\nI'm seeing enough local weirdness that it's clear to me we need to fix some stuff", "created": "2016-01-08T14:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] well that's a damn thing.  Yeah, sounds like we should poke at it if you are able to reproduce locally.  Perhaps a git bisect would help.", "created": "2016-01-08T14:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] and I have been trying to reproduce this failure locally by running the tests in the 'puppetlabs.services.config.puppet-server-config-service-test' namespace in isolation from the rest of the test suite.  We have each been able to reproduce failures when running these tests, but not the \"change from absent to directory failed\" test.  Here are a couple of the failures that I've seen:\n\n{noformat}\nlein test puppetlabs.services.config.puppet-server-config-service-test\nNameError: uninitialized constant JSON::Ext::Generator\n      const_missing at org/jruby/RubyModule.java:2733 \n...\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval7261$create_scripting_container__7266$fn__7267.invoke(jruby_puppet_internal.clj:138)\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval7261$create_scripting_container__7266.invoke(jruby_puppet_internal.clj:127)\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval7401$create_pool_instance_BANG___7406$fn__7407.invoke(jruby_puppet_internal.clj:203)\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval7401$create_pool_instance_BANG___7406.invoke(jruby_puppet_internal.clj:186)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval7702$prime_pool_BANG___7707$fn__7711.invoke(jruby_puppet_agents.clj:53)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval7702$prime_pool_BANG___7707.invoke(jruby_puppet_agents.clj:38)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval7900$send_prime_pool_BANG___7905$fn__7906$fn__7908.invoke(jruby_puppet_agents.clj:181)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:281)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:265)\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__6619$service_fnk__5250__auto___positional$reify__6624.shutdown_on_error(internal.clj:322)\n\tat puppetlabs.trapperkeeper.internal$eval6555$fn__6567$G__6547__6575.invoke(internal.clj:291)\n\tat puppetlabs.trapperkeeper.internal$eval6555$fn__6567$G__6546__6584.invoke(internal.clj:291)\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2494)\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2493)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval7675$send_agent__7680$fn__7681$agent_fn__7682.invoke(jruby_puppet_agents.clj:32)\n...\n{noformat}\n\n{noformat}\nCaused by: org.jruby.exceptions.RaiseException: (NameError) missing class name (`org.jruby.ext.openssl.OpenSSL')\n\tat org.jruby.javasupport.JavaUtilities.get_proxy_or_package_under_package(org/jruby/javasupport/JavaUtilities.java:54)\n...\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval7261$create_scripting_container__7266$fn__7267.invoke(jruby_puppet_internal.clj:138)\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval7261$create_scripting_container__7266.invoke(jruby_puppet_internal.clj:127)\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval7401$create_pool_instance_BANG___7406$fn__7407.invoke(jruby_puppet_internal.clj:203)\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval7401$create_pool_instance_BANG___7406.invoke(jruby_puppet_internal.clj:186)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval7702$prime_pool_BANG___7707$fn__7711.invoke(jruby_puppet_agents.clj:53)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval7702$prime_pool_BANG___7707.invoke(jruby_puppet_agents.clj:38)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval7900$send_prime_pool_BANG___7905$fn__7906$fn__7908.invoke(jruby_puppet_agents.clj:181)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:281)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:265)\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__6619$service_fnk__5250__auto___positional$reify__6624.shutdown_on_error(internal.clj:322)\n\tat puppetlabs.trapperkeeper.internal$eval6555$fn__6567$G__6547__6575.invoke(internal.clj:291)\n\tat puppetlabs.trapperkeeper.internal$eval6555$fn__6567$G__6546__6584.invoke(internal.clj:291)\n...\n{noformat}\n\nIt appears to be necessary to run the 'config-key-conflicts' test before the 'config-service-functions' and/or 'multi-webserver-setting-override' test.  With the 'config-key-conflicts' test, the intentionally corrupt configuration passed to the 'with-app-with-config' causes an exception that leads to the app being terminated.  The test, and backing implementation of the 'jruby-puppet-pooled-service', has no provision to wait until the pool agent has finished with the 'prime-pool!' call before moving on to the next test.  Through instrumentation, I found that the pool agent from the 'config-key-conflicts' test was often still running when the next test in line tries to do its own 'prime-pool!' call on a separate agent.  I believe that when two overlapping ScriptingContainer / Ruby puppet initializations occur from different threads that random errors like the 'missing class name' ones are more likely to happen.  This could be due to some shared state across JRuby containers not being properly synchronized in JRuby - see https://puppet.atlassian.net/browse/SERVER-858?focusedCommentId=241260&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-241260, for example.\n\nAs for why we seem to have started seeing the \"change from absent to directory failed\" failure in Jenkins only recently, I don't have a solid answer at this point.  One possibility is that it is related to our recent migration of Puppet Server to using Clojure 1.7.  The periodic test failures seem to have started happening around the same time as this change was integrated - although we don't have any hard evidence on the exact commits where this started occurring.  The 'config-key-conflicts' test does a with-redefs of 'create-pool-instance!' to 'create-mock-pool-instance'.  Where the 'create-pool-instance!' call is only executed on the pool agent, which may happen after execution has fallen out of the 'with-redef' block on the main test thread, I wonder if there may have been some change in how the scope of the 'with-redef' is handled in Clojure 1.6 vs. Clojure 1.7.  If in 1.6, the with-redef were to retain scope within the launched pool agent, the initializations being done for the agents for the different tests would not collide - since one would just be a mock vs. a \"real\" one that involves the use of a JRuby ScriptingContainer.  If in 1.7, the with-redef were to only retain scope across threads while code on the main thread is running within the with-redef block, this could have the side effect of the pool initialization done for the 'config-key-conflicts' test be using a real JRuby ScriptingContainer, which could conflict with the real JRuby ScriptingContainer initialization going on in the next test.  \n\nIn this case, I had found that - by just having the 'config-key-conflicts' test sleep for a while before it terminates or changing the behavior of the config service to wait until the JRubyPuppet instance is available in the pool before throwing the config validation exception - the problems were no longer locally reproducible.  All of the tests passed every time for me with either of these configurations.  I talked with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] about this.  He suggested that for now we could try to have the 'config-key-conflicts' test get access to the pool agent from the Trapperkeeper service context and wait on it to complete the 'prime-pool!' before ending.  This might be the best short-term solution.\n\nLonger term, I think it would be good to add some logic to the 'stop' function in the 'jruby-puppet-pooled-service' to wait on the 'prime-pool!' to have completed before trying to flush pool instances / proceed with shutdown.  This way, any direct users of the pool service should not run the risk of having the pool initialization agent running after the service has already been stopped.  We may want to wait on trying to do that until the work on SERVER-537 has been completed since that ticket involves some significant rework to the pool initialization and shutdown logic.  I'll file a separate ticket about the long-term suggestion and link that back to this ticket.", "created": "2016-01-11T11:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I added a ticket for the longer-term idea of having the jruby-puppet-pooled-service {{stop}} be gated on the completion of {{prime-pool!}}.  The ticket for that is SERVER-1087.", "created": "2016-01-11T11:21:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "thanks so much for your investigation, [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]! i figured it was some kind of shared state problem but didn't even know where to start investigating.\n\nas an additional data point, I *have* been able to repro the \"change from absent to directory failed\" locally", "created": "2016-01-11T13:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Treating this ticket as covering the investigatory work to diagnose and delegate the issue.  I've created SERVER-1090 to capture the work of fixing the test, so I think this issue can be marked as resolved.\n\nAlso, for posterity, I am planning on taking a short-term approach such as one of the ones that Jeremy mentioned.  I think that SERVER-1087 is necessary in the long run, but I think that it should be deferred until after both SERVER-537 and PE-13552 because both of those will have implications on the implementation that might affect it.", "created": "2016-01-11T13:36:00.000000"}], "components": [], "created": "2016-01-08T12:39:00.000000", "creator": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56e196f0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3tuv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CI related work - serious bug"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_31186_*|*_3_*:*_1_*:*_440847454_*|*_6_*:*_1_*:*_0"}], "description": "We've gotten that same failure with the Clojure Unit Tests in Jenkins enough time now that I don't think it's just the \"two runs at the same time\" theory that we've floated around previously:\nlein test puppetlabs.services.config.puppet-server-config-service-test\nRuntimeError: Got 1 failure(s) while initializing: File[/var/lib/jenkins/workspace/platform_puppet-server_unit-clj_master/JDK/openjdk7/label/unit/dev-resources/puppetlabs/services/config/puppet_server_config_service_test/master/conf/ssl]: change from absent to directory failed: Could not set 'directory' on ensure: File exists - /var/lib/jenkins/workspace/platform_puppet-server_unit-clj_master/JDK/openjdk7/label/unit/dev-resources/puppetlabs/services/config/puppet_server_config_service_test/master/conf/ssl\nI'm wondering if one of our config_service_tests is somehow causing \"ssl\" to be created as a file but not cleaned up, causing a later test to fail when core Ruby Puppet tries to coerce it into a directory?\nSeems like it would be worthwhile to look through the tests in that namespace to see if something like that could cause these failures?\nOr maybe there was some cleanup that was going on for these git repos in Jenkins that was removed recently, making this more likely to happen from run to run. Dunno...", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15318", "fixedVersions": [], "id": "15318", "issueType": "Bug", "key": "SERVER-1086", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "resolution": "Fixed", "resolutionDate": "2016-01-13T15:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet cleanup issue in test suite", "timeSpent": "PT0S", "updated": "2016-01-13T15:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] for viz", "created": "2016-01-07T16:59:00.000000"}], "components": [], "created": "2016-01-07T16:58:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20cb1684"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotjj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_507732543_*|*_10007_*:*_1_*:*_62649411_*|*_3_*:*_1_*:*_1883626_*|*_10009_*:*_1_*:*_884031_*|*_5_*:*_1_*:*_17443346855_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4242903430_*|*_10005_*:*_1_*:*_523411853"}], "description": "It's likely that whatever Puppet Server releases we ship around the Burnside timeframe will contain HUP support, but that EZBake won't contain the integration with the service init script yet.  We should write up some docs on how/why to use it manually until the EZBake changes roll out.", "epicLinkSummary": "Support HUP for faster restart", "estimate": "PT0S", "externalId": "16215", "fixedVersions": ["SERVER 2.3.0"], "id": "16215", "issueType": "Task", "key": "SERVER-1084", "labels": [], "originalEstimate": "PT0S", "parent": "16343", "parentSummary": "Support HUP for faster restart", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-03-09T12:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "docs for manual HUP for burnside timeframe", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-01-07T15:22:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1bae53b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3t7z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_505332735_*|*_6_*:*_1_*:*_0"}], "description": "We have some weird stuff in our JRuby configuration because there are some common methods on the JRuby classes `ScriptingContainer` and `JRubyInstanceConfig`, but no shared interface between them.\n\nSee comments here:\n\nhttps://github.com/cprice404/puppet-server/blob/ccb894b6f0b3db0c169064d2ac626d3a4f14017f/src/clj/puppetlabs/services/jruby/jruby_puppet_schemas.clj#L203-L210\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] suggested that we consider creating wrapper classes that *do* share a common interface.  The motivation is our concern that future versions of JRuby might break these signatures, and executing on Jeremy's suggestion would move us from runtime errors to compile-time errors.\n\nThe same PR where the above commit came in already introduces a wrapper class for `ScriptingContainer`, so it wouldn't be that much extra work to do what Jeremy has suggested.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16748", "fixedVersions": [], "id": "16748", "issueType": "Task", "key": "SERVER-1083", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2016-01-13T11:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "create common interface for ScriptingContainer and JRubyInstanceConfig", "timeSpent": "PT0S", "updated": "2016-01-13T11:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi [~accountid:557058:a1dc061a-072b-4499-acc0-481330ac2c40], sorry for the delayed response on this.\n\nIs this a pattern / approach that you have used in the past?  Has it worked before, or is this the first time you've tried it?\n\nAlso, might it be possible to do the decoding on the agent side somehow?  Maybe via an exec resource?", "created": "2016-01-13T11:43:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "I am using an exec resource as a hacky workaround at the moment, but...\nshouldn't the file resource handle binary data?\n\nOn Wed, Jan 13, 2016 at 11:44 AM, Christopher Price (JIRA) <\n\n", "created": "2016-01-13T11:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It should be, though the support for that has been problematic at times in the past.  I linked in some other tickets describing future work around improving the situation, but those obviously won't be of immediate use to you.\n\nI know that there are users who do this in production, but it may be the case that they are doing it via the {{file}} function, and/or via the {{source}} parameter on a file resource as opposed to the {{content}} parameter.  (I don't have a ton of experience with this, so, apologies for being a little fuzzy on the details).  I'm not aware of any reason why it *shouldn't* work with {{base64}}.  It's possible that it's a bug related to the specific bytes in question here?\n\n[~accountid:63d40628f6e1b543161789a7] do you have any thoughts on this?\n\n[~accountid:557058:a1dc061a-072b-4499-acc0-481330ac2c40] was this behaving differently for you in previous versions of Puppet?", "created": "2016-01-13T13:46:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "I believe (but am not entirely certain) that this was working until very\nrecently", "created": "2016-01-14T15:19:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The puppet file type can't handle all binary content unfortunately, see PUP-3600. If your binary content appears to look like the start of a UTF-8 encoded string, then things will break. For example, the euro symbol \u20ac in UTF-8 is the 3 byte sequence {{0xE2 0x82 0xAC}}. If you have file content that contains {{0xE2 0x82 0x10}} (note the last byte), then the agent will reject it when trying to deserialize the catalog, since it's not a valid UTF-8 sequence:\n\n{noformat}\nError: invalid byte sequence in UTF-8\n{noformat}\n\nIf you really must transfer binary content, you are better off using the {{source}} parameter, assuming you're not applying a template or other function.\n\nNote puppet won't always fail with binary content, as it just depends on the binary content being transferred.\n\nThat said, there could be a puppetserver issue here, as I would still expect the agent to get a catalog, and fail to deserialize the catalog, as opposed to the agent hanging.", "created": "2016-01-15T17:16:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:a1dc061a-072b-4499-acc0-481330ac2c40] it would be very helpful if you could work up a small reproducer case - could you please determine if this is actually true?\n\n{quote}\nI believe (but am not entirely certain) that this was working until very recently", "created": "2016-01-20T11:34:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "Well, I tried creating a test case, but now it seems to be working-- I have\nno idea why.\n\nOn Wed, Jan 20, 2016 at 11:35 AM, Eric Sorenson (JIRA) <\n\n", "created": "2016-01-21T14:44:00.000000"}], "components": [], "created": "2016-01-07T11:32:00.000000", "creator": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3247f462"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z47:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1123027930_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_65323194282"}], "description": "I'm trying to distribute a binary key for corosync. I've generated it with corosync-keygen, then base64-encoded it and stored it in hiera. I have the following resource in my manifest:\n\n{code:puppet}\nfile { '/etc/corosync/authkey':\n  content => base64('decode', $authkey),\n  mode => '0400'\n}\n{code}\n\nThis causes the puppet agent to time out, with no useful information in the puppetserver log. I've verified that I can successfully encode/decode base64 strings with the base64() function from stdlib, so I don't think that's the issue; I've tested against the current version of stdlib (4.10.0).\n\nThe only other relevant issue I can find is this old one: https://projects.puppetlabs.com/issues/5261\n", "environment": "Debian Jessie, packages from puppetlabs repo:\n\npuppetlabs-release-pc1         0.9.3.3.g91e66b9-1jessie\npuppetserver                   2.2.1-1puppetlabs1\nstdlib  4.10.0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15632", "fixedVersions": [], "id": "15632", "issueType": "Bug", "key": "SERVER-1082", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "resolution": "Fixed", "resolutionDate": "2018-02-14T12:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet file resource can't handle binary data", "timeSpent": "PT0S", "updated": "2018-03-12T21:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We should see if this ever got fixed.", "created": "2020-03-12T14:46:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Closing ticket due to age/priority\n\nWe can re-consider & re-open if there is enough interest from the community", "created": "2021-12-22T11:22:00.000000"}], "components": [], "created": "2016-01-05T16:20:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1915fa6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3rjj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1742736402_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_24264841661_*|*_10005_*:*_1_*:*_162153723354"}], "description": "This ticket came out of some conversation that we had for some work done for SERVER-862 - https://github.com/puppetlabs/puppet-server/pull/813/files#r48903855.\n\nWe discovered that there are a couple of places in Puppet Server code where the {{.clear()}} method is being called on the JRubyPool:\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-2.2.1/src/clj/puppetlabs/services/jruby/jruby_puppet_agents.clj#L59\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-2.2.1/src/clj/puppetlabs/services/jruby/jruby_puppet_agents.clj#L115\n\nIn both cases, these calls are made if an exception is thrown during the creation of a new JRubyPool instance.  This exception could be thrown when one or more instances has already been populated in the pool, so it would be appropriate to clear out the pool before replacing it with a \"poison pill\" that causes future borrowers to detect that an error has occurred during the borrow.  The {{.clear()}} method, however, will only remove the instances from the pool but will not do all of the cleanup on each of the instances that would be needed to dispose of resources that the ScriptingContainers are still holding onto - specifically, the logic done here in {{flush-instance!}}:\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-2.2.1/src/clj/puppetlabs/services/jruby/jruby_puppet_agents.clj#L73-L75\n\nThis could lead to memory / thread leaks and an inability for the Puppet Server process to shut down cleanly in the event of a failure like is covered in SERVER-537.\n\nIt would be best to change these references to the {{.clear()}} method to instead do something like:\n\n1) Borrow all of the instances that currently exist in the pool.\n2) Do the appropriate terminate logic on the instance resources.\n3) Call releaseItem and unregister to disassociate the instance from the pool.\n\nTo avoid propagating this problem into other places, we could then also eliminate the {{JRubyPool.clear()}} method entirely.", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16747", "fixedVersions": [], "id": "16747", "issueType": "Bug", "key": "SERVER-1080", "labels": ["final_triage", "nice-to-have"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2021-12-22T11:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Replace usages of JRubyPool.clear with more appropriate instance termination logic", "timeSpent": "PT0S", "updated": "2021-12-22T11:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [], "components": [], "created": "2016-01-04T18:21:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7762a4b7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3or3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_509791477_*|*_1_*:*_1_*:*_246716_*|*_10007_*:*_2_*:*_515936390_*|*_3_*:*_1_*:*_17840378_*|*_5_*:*_1_*:*_21150542487_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_842496624"}], "description": "Implement the {{VersionedCodeService}}.  The initial implementation of {{current-code-id}} should read a new Trapperkeeper setting to find the filesystem path of an executable file, and then pass that path into the function from SERVER-885 to compute the code ID.  If that setting is undefined, {{current-code-id}} should return {{nil}}.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15317", "fixedVersions": ["SERVER 2.3.0"], "id": "15317", "issueType": "Task", "key": "SERVER-1079", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Done", "resolutionDate": "2016-01-26T14:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement VersionedCodeService's current-code-id", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "So, this is NOT ready for engineering.  There is still a body of work to be completed before the TK VersionedConfigService is exposed to end users.", "created": "2016-01-08T17:08:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I'm setting this ticket to \"Needs Information/Blocked.\"  In order to proceed, I need:\n-- Ratified User stories.  (I will link in PROPOSED user stories.)\n-- The implementation of per environment behavior of code-id-command and code-content-command.\n\nParts of this ticket can proceed without the above", "created": "2016-02-01T13:13:00.000000"}], "components": [], "created": "2015-12-31T12:55:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59119cf5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3pun:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "13.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_514737791_*|*_10007_*:*_1_*:*_38115525080_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1290701550_*|*_10006_*:*_1_*:*_191683023_*|*_10005_*:*_1_*:*_2057375901"}], "description": "Create a test to validate the behavior of the TK VersionedConfigService described in SERVER-874 & SERVER-887.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14972", "fixedVersions": [], "id": "14972", "issueType": "Task", "key": "SERVER-1078", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Won't Do", "resolutionDate": "2017-05-02T15:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create acceptance test to validate TK VersionedConfigService", "timeSpent": "PT0S", "updated": "2017-05-02T15:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Dupes SERVER-1118.", "created": "2017-05-01T11:49:00.000000"}], "components": ["Puppet Server"], "created": "2015-12-31T12:42:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5865e03b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ptr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_515518298_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_41554502648"}], "description": "Puppet server can be configured to accept and use an externally provided value as the source of current_code_id. This test should ensure that the server rejects invalid data, doesn't crash, and doesn't use the invalid value.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16746", "fixedVersions": [], "id": "16746", "issueType": "Bug", "key": "SERVER-1077", "labels": ["QA"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Duplicate", "resolutionDate": "2017-05-01T11:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create acceptance test to validate that puppet server rejects and does not use an invalid user-provided current_code_id", "timeSpent": "PT0S", "updated": "2017-05-01T11:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2015-12-31T12:38:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47f65f14"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ptb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_515713789_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_41655325237"}], "description": "Puppet server can be configured to accept and useran externally provided value as the source of current_code_id. This test should ensure that the server accepts valid data without crashing and that it uses the provided value.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16214", "fixedVersions": [], "id": "16214", "issueType": "Bug", "key": "SERVER-1076", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Won't Do", "resolutionDate": "2017-05-02T15:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create acceptance test to validate that puppet server accepts and uses a user-provided current_code_id", "timeSpent": "PT0S", "updated": "2017-05-02T15:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-31T11:07:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d9e1adc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3prb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521158412_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_41655402229"}], "description": "The specific Beaker options that need to be removed because they have been deprecated (for a _long_ time):\n|| Deprecated Usage || New Usage ||\n| {{-c, --config _FILE_}} | {{--hosts _FILE_}} |\n| {{--debug}} | {{--log-level debug}} |\n| {{--no-debug}} | N/A |\n| {{-x}} | JUnit XML generated by default |\n| {{--no-xml}} | N/A |\n| {{--type TYPE}} | _TYPE_ (PE, FOSS, AIO) determined at runtime |", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15611", "fixedVersions": [], "id": "15611", "issueType": "Task", "key": "SERVER-1075", "labels": ["QA", "tech-debt"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Won't Do", "resolutionDate": "2017-05-02T15:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove/update deprecated Beaker options and usage in acceptance tests, scripts, Rakefiles", "timeSpent": "PT0S", "updated": "2017-05-17T15:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Jar jar is working out, so I don't think this is an issue.", "created": "2018-02-07T17:28:00.000000"}], "components": [], "created": "2015-12-22T10:20:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29243680"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyojdj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1299282488_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_65945563799"}], "description": "In recent explorations around the possibility of running multiple components of the PE stack in the same JVM process together, one issue that came up several times is namespacing for configuration settings.\n\nSince all of the Clojure apps use a conf.d style configuration pattern, where config settings can appear in any file in the conf.d directory, there is a risk of collisions between configuration sections or setting names.\n\nMost of Puppet Server's settings seem reasonably namespaced, with the possible exception of the 'profiler' section.  If this  were renamed to something like 'puppet-profiler', that would probably be sufficient.\n\nIn the interest of backward compatibility, we'll probably need to implement it such that the new name is preferred if found, but if not, fall back to the old name and issue a deprecation warning.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15024", "fixedVersions": [], "id": "15024", "issueType": "Improvement", "key": "SERVER-1073", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2018-02-07T17:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "use a better namespace for 'profiler' setting", "timeSpent": "PT0S", "updated": "2018-02-07T17:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-22T08:44:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10af390d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynraf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_503902985_*|*_1_*:*_1_*:*_19063030_*|*_10007_*:*_2_*:*_3071406_*|*_3_*:*_1_*:*_511753_*|*_5_*:*_1_*:*_21594704604_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_2073613410"}], "description": "Puppet Server's test utils jar contains a utility function called {{with-puppet-conf-file}}, which allows you to deploy a temporary {{puppet.conf}} for the duration of a test run.\n\nIn some test environments you need the same functionality, but with several config files as opposed to just a single one (e.g. files for configuring termini for various extensions, etc.)\n\nWe should add a {{with-puppet-conf-files}} function that does the same thing, but supports passing in a map of files rather than just a single file.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17348", "fixedVersions": ["SERVER 2.3.0"], "id": "17348", "issueType": "Improvement", "key": "SERVER-1072", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-01-21T11:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add `with-puppet-conf-files` test utility", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm hoping to hold this in 'integrating' until I get the {{pe-aio}} repo updated with a voom build and ensure that the tests run properly there.", "created": "2016-01-26T12:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This PR should get us to a version of pe-pse that can be brought into PE-AIO:\n\nhttps://github.com/puppetlabs/pe-puppet-server-extensions/pull/525", "created": "2016-01-26T18:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "These changes found their way up into pe-aio as of ae88ebe2e87e9c12e3e1efd0811e5ab10ff4ff4a , and everything seems to be working fine there, so, closing this out.", "created": "2016-01-29T11:47:00.000000"}], "components": [], "created": "2015-12-22T08:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@322d647"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynpmn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_610531958_*|*_1_*:*_1_*:*_19293972_*|*_10007_*:*_2_*:*_339669727_*|*_3_*:*_1_*:*_491564_*|*_5_*:*_1_*:*_20900657695_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_2324461014"}], "description": "In order to be compatible with PE-AIO, Puppet Server needs to be able to be run in an environment where there are multiple Jetty servers configured and the routes are configured in the usual PE way via webrouting, e.g.:\n\n{code}\n    \"puppetlabs.services.legacy-routes.legacy-routes-service/legacy-routes-service\": {\n        route: \"\"\n        server: puppet-server\n    }\n{code}\n\nThe current code does not work with this type of route configuration.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17055", "fixedVersions": ["SERVER 2.3.0"], "id": "17055", "issueType": "Bug", "key": "SERVER-1071", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-01-29T11:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server's \"legacy routes\" are not compatible with a TK multi-server configuration", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-22T08:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e376fa7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynvmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_15621_*|*_1_*:*_1_*:*_19806615_*|*_10007_*:*_1_*:*_116052_*|*_3_*:*_1_*:*_85272795_*|*_5_*:*_1_*:*_22872408115_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1217992895"}], "description": "In order to be compatible with PE-AIO, Puppet Server needs to update some of its dependencies to more recent versions.  These include:\n\n* clojure\n* comidi\n* schema", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16745", "fixedVersions": [], "id": "16745", "issueType": "Task", "key": "SERVER-1070", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-01-06T16:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dependencies on Clojure/comidi etc. to more recent versions", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [{"attacher": "623e75781c7f6a00704b2904", "created": "2016-01-06T09:11:00.000000", "name": "kibana.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10567"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for filing this, [~accountid:623e75781c7f6a00704b2904].  I'm pretty sure we'll be able to get it in.\n\nCouple of minor questions:\n\n1. What version of Puppet Server are you on?  We are not currently planning any more feature releases in the 1.x series (though it shouldn't really hurt anything to merge it into the stable branch).\n2. Just for future reference (and maybe for inspiration for us for our docs), what sorts of things were you able to see in Elastic/kibana that were helpful in managing your production instances?", "created": "2015-12-22T07:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e75781c7f6a00704b2904] nice, is there a specific log message that you are pulling that data from?", "created": "2016-01-06T09:31:00.000000"}, {"author": "623e75781c7f6a00704b2904", "body": "Sorry for not getting back earlier [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] !\n\n1. We're already using 2.x. Currently 2.1.2, aiming for 2.2.\n\n2. So far, we've focused on access logs, catalog compilation times more precisely, trying to make sense of the relationship between agent run spread, response time and server load. More broadly, being able to track the topN slowest & most frequent requests of each type helps us know where to focus optimisation efforts.\nAlso filtering out all logs with < 400 HTTP status codes proves to be pretty useful when problems occur. We didnt'd get there yet, but a \"deprecation warnings\" dashboard, based on the application logs, should be pretty easy to setup now. Finally I noticed switching com.puppetlabs.puppetserver.LoggingPuppetProfiler to DEBUG would be pretty useful to find the slowest & most frequent function calls in catalog compilations.\n\nHere a screenshot showing clearly a catalog compilation time slowdown every half an hour: !kibana.png|thumbnail!\n\nHere are our logback configurations files if you want to take a look: https://github.com/camptocamp/docker-puppetserver/blob/ee4f11740a62d356a40a9959dfac396d363aff87/request-logging.xml and https://github.com/camptocamp/docker-puppetserver/blob/ee4f11740a62d356a40a9959dfac396d363aff87/logback.xml", "created": "2016-01-06T09:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e75781c7f6a00704b2904] I'm hoping to get this run to ground this week.  That will entail merging your PR (or a similar one that adds the dependency), and adding a bit of documentation on how a user might use it.\n\nI'm looking at the config files that you posted (thanks!), and if I'm understanding correctly, those will result in two JSON files being created (one for the regular server logs, and one for the HTTP access logs).\n\nI don't have much experience with logstash, so I'm assuming that once those JSON files are around, you just go into logstash and configure it to import/monitor them.  Is that accurate?  If that's how this works then I'll just need to write up a little verbiage to suggest how someone might go about that.  I will plan on poking through logstash docs and maybe trying to play around with this locally a bit, but if you can confirm that I'm on the right track and/or share any other pointers, that'd be super helpful and might speed things up a bit for me.\n\nThanks again for sharing your setup!", "created": "2016-01-15T14:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I discussed this with [~accountid:557058:5f998a8b-08b1-46f5-beb0-60cd1d60b36b] and [~accountid:5b61153325ea8f2ca147bd04] from our Ops team earlier this week, and I think I have a better understanding of it now.  The plan of record will be to:\n\n1. Bundle the logback-logstash-json dependency,\n2. Add docs that show examples of what the relevant logback config will look like, based on [~accountid:623e75781c7f6a00704b2904]'s examples,\n3. Add a few links to docs on feeder daemons, to illustrate how to ship the JSON over the wire to logstash.  Seems like the two most relevant were [Filebeat|https://www.elastic.co/products/beats/filebeat] and its predecessor [Logstash Forwarder|https://github.com/elastic/logstash-forwarder].\n\nping [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e], heads up, I'll have a PR with these docs in it afore long.", "created": "2016-01-22T10:58:00.000000"}, {"author": "623e75781c7f6a00704b2904", "body": "Sorry for not answering earlier [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] ! It seems you figured it out by yourself, so I don't have anything else to add. I posted some feedback on the PR on github though. (And I found which misconfiguration was preventing these JIRA emails from hitting my inbox !)", "created": "2016-01-25T09:49:00.000000"}, {"author": "557058:d70e5262-9b0d-45fa-a6f7-467510401530", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14][~accountid:623e75781c7f6a00704b2904] Is this also available in older version?\nI am on puppet server 1.1.3 and can not get it to work.", "created": "2016-11-07T06:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:d70e5262-9b0d-45fa-a6f7-467510401530] unfortunately the patches associated with this ticket are only available in the 2.x versions of Puppet Server.  If you were to download the relevant {{.jar}} files for the loogback-logstash support and add them to the Puppet Server classpath, I'm not aware of any reason why it wouldn't work with Puppet Server 1.x, but in 2.x we ship with all of the prerequisites bundled.", "created": "2016-11-07T08:53:00.000000"}, {"author": "557058:d70e5262-9b0d-45fa-a6f7-467510401530", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Thanks for the quick reply!\nI'll give it a shot, but we are working on the upgrade anyways.", "created": "2016-11-07T09:01:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2015-12-22T06:33:00.000000", "creator": "623e75781c7f6a00704b2904", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@553dba53"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynpn3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_342203544_*|*_1_*:*_1_*:*_2101084405_*|*_10007_*:*_1_*:*_601970422_*|*_3_*:*_1_*:*_599655637_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_603433739"}], "description": "Adding the ability to emit custom json-formatted logs allows (or at least greatly helps) to index them in Elasticsearch and analyse usage with kibana.\n\nProbably other use cases can be imagined, but at least this one helped us a lot improving insight on our production puppet-server instances. As the addition is minimal and (IMHO) low-impact, I wanted to share it so everyone can benefit from this out of the box.\n\nSee https://github.com/puppetlabs/puppet-server/pull/787 for a suggestion & discussion of this so far.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15022", "fixedVersions": ["SERVER 2.3.0"], "id": "15022", "issueType": "Improvement", "key": "SERVER-1069", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e75781c7f6a00704b2904", "resolution": "Fixed", "resolutionDate": "2016-02-09T10:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "bundle logback json encoder in distribution", "timeSpent": "PT0S", "updated": "2016-11-07T09:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Now that we have a helper, writing this test is much easier.  We might even say that it is now implicitly tested...  [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] ?", "created": "2016-05-18T12:41:00.000000"}], "components": [], "created": "2015-12-21T12:59:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fc7d173"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1235"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4v1z:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth for additional points"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2155687178_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_28781805415"}], "epicLinkSummary": "Puppet Server HUP Loose Ends", "estimate": "PT0S", "externalId": "16483", "fixedVersions": [], "id": "16483", "issueType": "Task", "key": "SERVER-1099", "labels": [], "originalEstimate": "PT0S", "parent": "16983", "parentSummary": "Puppet Server HUP Loose Ends", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Done", "resolutionDate": "2016-12-13T14:44:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create acceptance test to validate using SIGHUP to signal TK services", "timeSpent": "PT0S", "updated": "2016-12-13T14:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "was another failure", "created": "2015-12-21T03:15:00.000000"}], "components": [], "created": "2015-12-21T02:06:00.000000", "creator": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4682bb00"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3n3b:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4135193_*|*_6_*:*_1_*:*_0"}], "description": "Any time a function is created, Puppet Server must be restarted before the function can be found.\n\nEven worse, when migrating functions from unqualified names to fully qualified names, the same problem occurs:\n\n{code}\n$ sudo puppet agent --test --tags test\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/.make_boolean.rb.swp]/ensure: removed\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/make_boolean.rb]/ensure: removed\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/mymodule]/ensure: created\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/puppet/functions/mymodule/make_boolean.rb]/ensure: defined content as '{md5}f59e3cac376620b2c08bd47266065954'\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Unknown function: 'make_boolean'. at /etc/puppetlabs/code/environments/production/manifests/testfunction.pp:1:30 on node client.example.com\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n{code}\n\nEnvironment timeout is already 0. Is there any way to make Puppet Server recognize the new functions without a restart?\n\nFWIW: same problem exists for both Puppet language and Ruby language functions.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16744", "fixedVersions": [], "id": "16744", "issueType": "Bug", "key": "SERVER-1068", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "resolution": "Cannot Reproduce", "resolutionDate": "2015-12-21T03:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "server must be restarted to find function", "timeSpent": "PT0S", "updated": "2015-12-30T16:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I tried following these instructions on both wheezy and jessie and wasn't able to reproduce it. It may be related to how [~accountid:557058:dc666788-5651-476c-a211-ec5b44a7b0dd] has the debian system set up (docker container).", "created": "2015-12-18T14:29:00.000000"}], "components": [], "created": "2015-12-18T13:21:00.000000", "creator": "557058:dc666788-5651-476c-a211-ec5b44a7b0dd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d920d13"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3mtj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4038487_*|*_6_*:*_1_*:*_0"}], "description": "I have noticed this on Wheezy and on Jessie. Below is the information on Jessie:\n\npuppetserver - 2.2.1-1puppetlabs1\npuppet-agent - 1.3.2-1jessie\n\nFrom a minimal debian system I:\n\n# Installed the PC1 repo package\n# apt-get update && apt-get install puppetserver puppet-agent\n# puppet config set certname $(facter fqdn) --section master\n# puppet config set server $(facter fqdn) --section main\n# puppet cert generate $(facter fqdn) --dns_alt_names  $(hostname -s),$(facter fqdn) --ca_name \"Puppet CA generated on $(facter fqdn) at $(date '+%Y-%m-%d %H:%M:%S %z')\"\n# service puppetserver start\n# service puppetserver stop\n\nStopping the service returns immediately. There are no errors in the log (or any indication that a stop was issued). Running a kill -9 is what I needed to do to stop it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15371", "fixedVersions": [], "id": "15371", "issueType": "Bug", "key": "SERVER-1067", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:dc666788-5651-476c-a211-ec5b44a7b0dd", "resolution": "Cannot Reproduce", "resolutionDate": "2015-12-18T14:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PuppetServer fails to stop cleanly on Debian", "timeSpent": "PT0S", "updated": "2015-12-30T16:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] or [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] thoughts on this?\n\nBtw, puppet's rack support is deprecated, so I wouldn't add this there. But the feature is worth evaluating.", "created": "2015-12-17T14:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] Yeah, makes sense to me to consider moving this to the SERVER project going forward.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], you agree?\n\nThis ticket sounds a bit like TK-293, which is requesting that we augment the trapperkeeper-authorization framework that Puppet Server uses to have the {{allow}} keyword reference be able to reference sources other than just the CN in the SSL certificate, e.g., a custom certificate extension (trusted fact).  Seems like the ability to reference dNSName attributes could be factored into that type of feature as well.  I'll add a comment to that ticket about that idea.\n\nNot sure if we'd cover this one by just having an option for the authorization layer be able to validate against the client's dNSName or if we'd also need to have a provision for an alternate source for {{result\\[:node\\]}} to be passed down through core Ruby Puppet.  I don't have a good grasp of how the {{result\\[:node\\]}}  gets used elsewhere within core Ruby Puppet beyond just authorization, which we've now replaced with the trapperkeeper-authorization \"auth.conf\" in Puppet Server.\n\nIn any event, it seems like we could end up doing all of the work for this in Puppet Server since we set {{result\\[:node\\]}} from there as well, see https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.2.1/src/ruby/puppet-server-lib/puppet/server/network/http/handler.rb#L67-L72.", "created": "2015-12-17T17:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] yep", "created": "2015-12-18T09:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Per the work done for TK-293, it would now be possible to create a tk-auth rule which validates the value of the [subject-alt-name|https://github.com/puppetlabs/trapperkeeper-authorization/blob/master/doc/extensions.md#subject-alt-name] parameter.  We still do not have any method for mapping anything other than the cn through as the {{result\\[:node\\]}}.  Maybe this ticket should remain open just if we decide that this part of the work is important to pursue. ", "created": "2017-05-16T14:04:00.000000"}], "components": [], "created": "2015-12-17T01:42:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:c73dcb68-8b06-47d3-86a8-4ee41dcf6a70", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49e40e59"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "TK-288"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3m2v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_45237550710_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_22470029109"}], "description": "Since puppet is allowing the use of external CA-s to authenticate clients it would be nice if client authentication would take into account subjectAlternativeName: dNSName field. \nI ran into this in our environment where we have a AD CA that can autoenroll certificates to servers that are authenticated by AD using kerberos. The CN is set to the kerberos principal name but SAN:dNSName is set to hosts dns name. Puppet runs under redhat satellite 6 (katello), through httpd. \n\nI implemented this locally like this: \n{code}\n--- network/http/rack/rest.rb     2015-12-17 10:10:41.227905960 +0200\n+++ network/http/rack/rest.rb.mod 2015-12-17 10:11:51.425907634 +0200\n@@ -100,6 +98,27 @@\n     end\n   end\n\n+  def cert_dns_name(request)\n+    cert = request.env['SSL_CLIENT_CERT']\n+    if cert.nil? || cert.empty?\n+      nil\n+    else\n+      ossl_cert = OpenSSL::X509::Certificate.new(cert)\n+      ossl_cert.extensions.each do |ext|\n+        next if ext.oid != \"subjectAltName\"\n+        san = OpenSSL::ASN1.decode(ext.to_der).value.last\n+        alt_names = OpenSSL::ASN1.decode(san.value)\n+        alt_names.value.each do |san|\n+     # 2 is dNSName (RFC3280), only use first\n+          next if san.tag != 2\n+          return san.value\n+        end\n+        break\n+      end\n+      nil\n+    end\n+  end\n+\n   # Passenger freaks out if we finish handling the request without reading any\n   # part of the body, so make sure we have.\n   def cleanup(request)\n@@ -117,7 +136,10 @@\n     subj_str = request.env[Puppet[:ssl_client_header]]\n     subject = Puppet::Util::SSL.subject_from_dn(subj_str || \"\")\n\n-    if cn = Puppet::Util::SSL.cn_from_subject(subject)\n+    if dns_name = cert_dns_name(request)\n+      result[:node] = dns_name\n+      result[:authenticated] = (request.env[Puppet[:ssl_client_verify_header]] == 'SUCCESS')\n+    elsif cn = Puppet::Util::SSL.cn_from_subject(subject)\n       result[:node] = cn\n       result[:authenticated] = (request.env[Puppet[:ssl_client_verify_header]] == 'SUCCESS')\n     else\n{code}", "epicLinkSummary": "trapperkeeper-auth improvements", "estimate": "PT0S", "externalId": "16213", "fixedVersions": [], "id": "16213", "issueType": "New Feature", "key": "SERVER-1810", "labels": [], "originalEstimate": "PT0S", "parent": "10365", "parentSummary": "trapperkeeper-auth improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:c73dcb68-8b06-47d3-86a8-4ee41dcf6a70", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable use of client certificate dNSName for client authentication ", "timeSpent": "PT0S", "updated": "2018-02-07T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This should come up in the Puppet Server scrum team's backlog grooming this week since it has the \"Puppet Server\" scrum team on it.  We can talk in that meeting about what project would be most appropriate for this ticket to be under.", "created": "2016-03-01T12:54:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I've gone ahead and linked this to the Pull Request manually since the auto-linking doesn't seem to have worked.", "created": "2016-04-13T16:00:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Thanks [~accountid:623e7507866b810069e57527]!", "created": "2016-04-13T17:27:00.000000"}], "components": [], "created": "2015-12-16T21:04:00.000000", "creator": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1629203a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5gtr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Pulled in from minor ssl improvements epic, as there was nothing left in the sprint to do."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_259946325_*|*_1_*:*_1_*:*_6617386786_*|*_10007_*:*_1_*:*_169211835_*|*_3_*:*_1_*:*_78326710_*|*_5_*:*_1_*:*_2681136064_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_4702207_*|*_10006_*:*_1_*:*_3561881225"}], "description": "Not sure if this belongs in PUP or SERVER. Puppet/Puppet Server should log at INFO whenever it attempts to validate a cert using autosigning and the results of that. If using policy-based autosigning and the script writes to stderr, that output should probably be logged too.", "epicLinkSummary": "minor CA / auth / SSL improvements", "estimate": "PT0S", "externalId": "14755", "fixedVersions": ["SERVER 2.4.0"], "id": "14755", "issueType": "Bug", "key": "SERVER-1187", "labels": [], "originalEstimate": "PT0S", "parent": "15287", "parentSummary": "minor CA / auth / SSL improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "resolution": "Fixed", "resolutionDate": "2016-04-18T15:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet should log the results of running an autosign script", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-15T14:11:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32b3ee8c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3kq7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Needed this to support hack week work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26634_*|*_3_*:*_1_*:*_79155338_*|*_5_*:*_2_*:*_24700679243_*|*_6_*:*_1_*:*_0"}], "description": "Bump the lein-ezbake dependency up to 0.3.21 so that we can do local ezbake builds that don't fail due to the removal of Utopic build support.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16482", "fixedVersions": [], "id": "16482", "issueType": "Task", "key": "SERVER-1066", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-12-16T12:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump lein-ezbake dep to 0.3.21", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "My understanding is that this won't happen for Burnside.  I'm not sure what to do with the tickets...", "created": "2016-01-07T13:01:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091], [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7], [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] Is this still a desirable tool or should these tickets be closed?", "created": "2017-05-09T17:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] I'd be fine with closing this one as a dupe of SERVER-705.  It would still seem good to me to implement this tool at some point but I can't say when / if it might be done at this point.", "created": "2017-05-09T17:17:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "dupe of SERVER-705", "created": "2017-05-10T13:41:00.000000"}], "components": [], "created": "2015-12-15T13:58:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4866894a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Difficult recovery"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr93:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Hack Week!"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_46485_*|*_3_*:*_1_*:*_1912039290_*|*_10009_*:*_1_*:*_42320090229_*|*_6_*:*_1_*:*_0"}], "description": "Just creating this ticket to track my work on the puppetserver config CLI tool for our HACK WEEK.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17054", "fixedVersions": [], "id": "17054", "issueType": "Task", "key": "SERVER-1065", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Duplicate", "resolutionDate": "2017-05-10T13:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "HACKWEEK: Create \"puppetserver config [get|set]\" CLI tool", "timeSpent": "PT0S", "updated": "2017-05-10T13:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This seems done.", "created": "2018-02-07T16:14:00.000000"}], "components": [], "created": "2015-12-15T09:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2185267e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr8v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Hack week project"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_13234_*|*_3_*:*_1_*:*_2073783801_*|*_10009_*:*_1_*:*_65773966917_*|*_5_*:*_1_*:*_0"}], "description": "This ticket would cover experimenting with having Puppet Server run under JRuby 9000, including any code changes to just get the server up and running and investigating / resolving any unit / acceptance test failures that may come up.  Would be good also to try to do a couple of Gatling runs against a Puppet Server running under JRuby 9000 to see how well the server holds up and how performance compares to Puppet Server when running under JRuby 1.7.x.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15607", "fixedVersions": [], "id": "15607", "issueType": "Task", "key": "SERVER-1064", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2018-02-07T16:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "HACK; Experiment with configuring Puppet Server to run under JRuby 9000", "timeSpent": "PT0S", "updated": "2018-02-07T16:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-14T14:00:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dd5d857"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3jv3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Part of CI goalie work."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9814_*|*_5_*:*_1_*:*_24867085238_*|*_6_*:*_1_*:*_0"}], "description": "Spent under an hour this morning on failures in the burnside pipeline. The first was a race condition in the file sync tests, the second was a stale dependency causing build failures. There is a PR open for the dependency in the burnside branch of pe-puppet-server-extensions.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17347", "fixedVersions": [], "id": "17347", "issueType": "Bug", "key": "SERVER-1063", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2015-12-14T14:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CI timesink (12/14) Failures on the burnside pe-puppet-server-extensions pipeline", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "-[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] do we still want to do this?-\n\nanswered via SERVER-705.  but we may want to close this as it'll come post-Hoyt and YAGNI rules apply", "created": "2017-05-09T16:58:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "pinged server folks to see if SERVER-1065 is still on the roadmap. (closed as dupe of SERVER-705)", "created": "2017-05-09T17:01:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "re-evaluate when upstream feature is ready for eng.", "created": "2017-05-23T16:45:00.000000"}], "components": [], "created": "2015-12-14T13:52:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8ae6f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3juv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2582607839_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_42870599502"}], "description": "Once we get a puppet-server CLI tool for reading/writing values from the config files, we should use it in our acceptance tests rather than using the lower-level trapperkeeper support.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16743", "fixedVersions": [], "id": "16743", "issueType": "Task", "key": "SERVER-1062", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Do", "resolutionDate": "2017-05-23T16:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use `puppetserver config` CLI tool in acceptance tests", "timeSpent": "PT0S", "updated": "2017-05-23T16:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2015-12-14T12:31:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d60aa5a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2117"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3jsv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_3_*:*_162499502_*|*_1_*:*_1_*:*_2587396325_*|*_10007_*:*_1_*:*_1089044_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_25341_*|*_10005_*:*_1_*:*_161850428646"}], "description": "We need to remember to remove our pre-suite(s) that set updates.puppetlabs.com to 127.0.0.1 when BKR-237  is released in a gemified version of beaker, and when we start using that version in our repos and CI.", "epicLinkSummary": "Improve Froyo Component CI", "estimate": "PT0S", "externalId": "16212", "fixedVersions": ["SERVER 6.15.3", "SERVER 7.1.0"], "id": "16212", "issueType": "Task", "key": "SERVER-1061", "labels": [], "originalEstimate": "PT0S", "parent": "17104", "parentSummary": "Improve Froyo Component CI", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2021-03-02T15:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "remove pre-suite tests that set updates.puppetserver.com to 127.0.0.1 when next beaker is released and used in puppet-server", "timeSpent": "PT0S", "updated": "2021-03-02T15:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "I was thinking we'd just wait for the next release of Beaker to be announced and then just try upgrading (assuming it had the bugfix).", "created": "2015-12-11T13:01:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Beaker seems to be going to a maintenance only mode.  All the version I have tried above 2.24.0 have issues.  So we can't really move of the present version.  Recommend we close this as Not Doing/ Won't Do.", "created": "2016-01-06T11:20:00.000000"}], "components": [], "created": "2015-12-11T12:19:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@736e91d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3j6f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2243165480_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_10284"}], "description": "We need to identify the best version of beaker and update the gemfile in puppet-server.\n\nOn Dec 9, I updated the Gemfile in puppet-server to the newest version of beaker:\nhttps://github.com/puppetlabs/puppet-server/pull/809\n\nBut subsequent runs of puppet-server in CI found fails with the new version of beaker in CI.  [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] filed BKR-650 discussing this difficulties.\n\nhttps://github.com/puppetlabs/puppet-server/pull/811 reverted PR809.\n\nIt appears these problems only occur within Fedora 21 and Ubuntu 15.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17053", "fixedVersions": [], "id": "17053", "issueType": "Task", "key": "SERVER-1060", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2016-01-06T11:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Identify and upgrade to the newest working beaker", "timeSpent": "PT0S", "updated": "2016-01-06T11:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-11T11:56:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@753e8158"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3j53:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_293708_*|*_3_*:*_1_*:*_7583_*|*_5_*:*_1_*:*_25133394748_*|*_6_*:*_1_*:*_0"}], "description": "Spent the better portion of an hour digging into beaker failures in our CI with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] and [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] and got help from [~accountid:557058:42ee807e-7bdc-4d08-8c59-b269f42cee43].\nEffort resulted in filing BKR-650 and downgrading our Beaker version.\n\nThis ticket is an attempt to track the amount of time we spend doing these things.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17346", "fixedVersions": [], "id": "17346", "issueType": "Bug", "key": "SERVER-1059", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-12-11T12:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CI time sink", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5e4c5042bbb5110c9a677f43] we discussed this today, but aren't sure of what a reasonable solution might be.  It seems like this is a common situation with config files that are installed as part of OS packages", "created": "2016-01-06T11:25:00.000000"}, {"author": "5e4c5042bbb5110c9a677f43", "body": "The particular constellation of config/install options that led to the automated rpm upgrade breaking puppetserver were ...\n* Puppetserver itself installed via [theforeman/puppet|https://github.com/theforeman/puppet-puppet] module, which deploys puppetserver via package resource, in this case via rpm from http://yum.puppetlabs.com\n* Using an external CA that requires [modifying bootstrap.cfg|https://docs.puppetlabs.com/puppetserver/latest/configuration.html#service-bootstrapping], such that the rpm upgrade from 2.1 -> 2.2 wrote updated config to bootstrap.cfg.rpmnew\n* Default action on the package resource mentioned above was default, i.e. \"installed.\"  This somehow still caused the new rpm to be installed upon automated puppet agent run, and bootstrap.cfg.rpmnew to be created invisibly.\n\nIs preferred approach to just to pin puppetserver to a specific version (major and minor), especially when deployed via package resource?", "created": "2016-01-06T13:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5e4c5042bbb5110c9a677f43] interesting, thanks for the additional context.\n\nSo, from your description, I presume that the package resource that was managing puppetserver was just using ensure => 'latest'?  If so, then I *think* that we generally advise against that in favor of pinning to a specific version and upgrading intentionally, but I wouldn't say that I'm an expert on that topic.\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] do you have any thoughts on this one?  Or suggestions on other folks I might ping for input?", "created": "2016-01-06T14:04:00.000000"}, {"author": "5e4c5042bbb5110c9a677f43", "body": "The puppet catalog applied only used ensure => 'installed', but I acknowledge a \"yum update\" occurring outside of puppet management (or more specifically, in parallel to the package resource declaration in puppet) could have triggered the same failure.\n\nAt any rate, my chosen resolution will be to pin the puppetserver package to a specific version, and only permit upgrades to that package manually.", "created": "2016-01-06T16:32:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Definitely it's best practise to maintain your own repo and/or pin your puppet infrastructure to known-good versions. \n\nI think under the hood, the RPM upgrade saw the existing {{bootstrap.cfg}} and did not replace it, to preserve local changes", "created": "2016-01-06T17:10:00.000000"}], "components": ["Puppet Server"], "created": "2015-12-09T11:34:00.000000", "creator": "5e4c5042bbb5110c9a677f43", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b8eaf5f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3hlj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2439378797_*|*_6_*:*_1_*:*_0"}], "description": "After automated puppetserver upgrade from v2.1 to v2.2, the puppetserver service would not start, with the following complaints found in /var/log/puppetlabs/puppetserver/puppetserver.log:\n\n{code}\n2015-12-09 11:48:10,343 INFO  [main] [o.e.j.u.log] Logging initialized @10554ms\n2015-12-09 11:48:17,460 ERROR [main] [p.t.internal] Error during app buildup!\njava.lang.RuntimeException: Service ':AuthorizationService' not found\n\tat puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invoke(internal.clj:70) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$instantiate$fn__5589.invoke(internal.clj:111) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$instantiate.invoke(internal.clj:108) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$build_app_STAR_.invoke(internal.clj:426) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_$fn__5789.invoke(internal.clj:463) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_.invoke(internal.clj:462) [na:na]\n\tat puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:113) [na:na]\n\tat puppetlabs.trapperkeeper.core$run.invoke(core.clj:144) [na:na]\n\tat puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159) [na:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:457) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:394) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:165) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:700) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:624) [puppet-server-release.jar:na]\n\tat puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:457) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:394) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:165) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:700) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:624) [puppet-server-release.jar:na]\n\tat clojure.main$main_opt.invoke(main.clj:315) [puppet-server-release.jar:na]\n\tat clojure.main$main.doInvoke(main.clj:420) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:512) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:409) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:178) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:700) [puppet-server-release.jar:na]\n\tat clojure.main.main(main.java:37) [puppet-server-release.jar:na]\n2015-12-09 11:48:17,475 INFO  [Thread-1] [p.t.internal] Shutting down due to JVM shutdown hook.\n2015-12-09 11:48:17,476 INFO  [Thread-1] [p.t.internal] Beginning shutdown sequence\n2015-12-09 11:48:17,476 INFO  [Thread-1] [p.t.internal] Finished shutdown sequence\n{code}\n\nUpon learning of Puppetserver 2.2 deprecating previous auth.conf implementation, this was resolved by adding the following line to /etc/puppetlabs/puppetserver/bootstrap.cfg, which previously had been modified to support an external CA:\n\n{code}\npuppetlabs.trapperkeeper.services.authorization.authorization-service/authorization-service\n{code}\n\nThe bootstrap.cfg file was modified per [Puppet's own documentation|https://docs.puppetlabs.com/puppetserver/latest/configuration.html#service-bootstrapping] to support an external CA, yet having this file modified appears to have prevented rpm from making a required edit to bootstrap.cfg to enable the new authorization service, causing Puppet Server to fail after the upgrade.", "environment": "CentOS 7, previously using puppetserver-2.1.2-1.el7.noarch, upgraded to puppetserver-2.2.0-1.el7.noarch.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17345", "fixedVersions": [], "id": "17345", "issueType": "Bug", "key": "SERVER-1058", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5e4c5042bbb5110c9a677f43", "resolution": "Won't Fix", "resolutionDate": "2016-01-06T17:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server breaks after 2.1 -> 2.2 upgrade from missing trapperkeeper authorization in bootstrap.cfg", "timeSpent": "PT0S", "updated": "2016-01-06T17:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We shouldn't do this until beaker is receiving more support and maintenance.", "created": "2016-01-06T11:16:00.000000"}], "components": [], "created": "2015-12-09T11:30:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e868992"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3hlb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2418328777_*|*_6_*:*_1_*:*_0"}], "description": "We should update the beaker pin in our Gemfiles to the new version of beaker (2.30 ?) after we release.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16742", "fixedVersions": [], "id": "16742", "issueType": "Task", "key": "SERVER-1057", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-01-06T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update beaker pin after releases", "timeSpent": "PT0S", "updated": "2016-01-13T12:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623e75fc562ab90069f9ec16], thanks for the ticket submission.\n\nThis is a good question.  When we put together the default rule definition for Puppet Server's new auth.conf format, we tried to just use the corresponding rules that have been bundled with core Ruby Puppet's auth.conf as a guide.  For the CRL, the core Ruby Puppet auth.conf rule, from https://github.com/puppetlabs/puppet/blob/4.3.1/conf/auth.conf#L94-L97:\n\n{noformat}\n# allow all nodes to access the certificates services\npath /puppet-ca/v1/certificate_revocation_list/ca\nmethod find\nallow *\n{noformat}\n\nBecause the {{auth}} keyword was not included in the rule, this meant that the rule would only allow authenticated clients to get the CRL.  We basically intended to do the same with the corresponding new auth.conf rule for Puppet Server, from https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.2.0/ezbake/config/conf.d/auth.conf#L26-L36:\n\n{noformat}\n{\n  # Allow all nodes to access the certificate revocation list\n  match-request: {\n    path: \"/puppet-ca/v1/certificate_revocation_list/ca\"\n    type: path\n    method: get\n   }\n   allow: \"*\"\n   sort-order: 500\n   name: \"puppetlabs crl\"\n},\n{noformat}\n\nIn the new format, the use of {{allow: \"*\"}} instead of {{allow-unauthenticated: true}} would mean that only authenticated clients would be permitted access to the CRL.\n\nI'm not sure, though, how we arrived at the original decision for the Ruby Puppet auth.conf rule set to not allow unauthenticated clients access to the CRL.\n\n[~accountid:63d40628f6e1b543161789a7] and [~accountid:63d40635a05386069cdb69d6] - what do you think of this?  Is there a compelling rationale from either of your perspectives as to why we would disallow unauthenticated clients to download the server's CRL?  Not sure if we did this intentionally for security purposes or maybe if there just wasn't a known use case where the ability for an unauthenticated client to access the CRL was important?", "created": "2015-12-04T09:18:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "To add some context, because the puppet agent doesn't download the CRL other than on first connection, we run cronjobs (mainly on puppet masters (now servers)) to freshen the CRL and re-feed it to Apache which we use to terminate SSL because load balancing.\n\nIt's a bit of extra work to authenticate, so we allowed anonymous access to the CRL - I couldn't see any real downside to doing it.", "created": "2015-12-04T09:28:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "It looks like it's been this way since the beginning in https://github.com/puppetlabs/puppet/commit/e623f8a32a7363d98843fdb361c717b6198d32de#diff-31aa454291c8618bb69ca2ff711be75eR14. That said I can't think of a good reason to disallow anonymous access to the CRL, eg. GeoTrust Global CRL is http://crl.geotrust.com/crls/gtglobal.crl", "created": "2015-12-04T09:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It sounds like there is consensus on the CRL being accessible by default, so we should probably just go ahead and knock this out.", "created": "2015-12-16T11:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I have 3 PRs up for this", "created": "2016-01-22T16:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "OSS PR merged to the puppet-server#master branch at [d0b07a|https://github.com/puppetlabs/puppet-server/commit/d0b07a55f2892f974116fee277807b92375208b1].", "created": "2016-01-26T12:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "pe-puppetserver PR merged to the pe-puppetserver#2016.1.x branch at [3220bf|https://github.com/puppetlabs/pe-puppetserver/commit/3220bf1a7376d96a2de718890e28f5a07dc2492b].", "created": "2016-01-26T12:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "pe-puppet-server-extensions PR merged to pe-puppet-server-extensions#2016.1.x at [6a0a8|https://github.com/puppetlabs/pe-puppet-server-extensions/commit/6a0a8a1827fed14ff577b759ff1da74ca445ec47].", "created": "2016-01-26T12:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Just waiting on the modules PR to be merged before we can close this out.", "created": "2016-01-26T16:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "pe-module PR merged tp puppetlabs-puppet_enterprise#2016.1.x at [b92614|https://github.com/puppetlabs/puppetlabs-puppet_enterprise/commit/b92614a86b93059bd1ad027ce7a43ac55876a016].", "created": "2016-01-28T12:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I'm not sure this change is interesting enough to warrant any functional review, but moving it into the testing column so that you can decide for yourself.", "created": "2016-01-29T11:48:00.000000"}], "components": ["Puppet Server"], "created": "2015-12-04T08:21:00.000000", "creator": "5b1e529cba383e0814003fb3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@199aa786"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynplj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_85645030_*|*_1_*:*_1_*:*_1048868399_*|*_10007_*:*_1_*:*_502340103_*|*_3_*:*_1_*:*_219130_*|*_5_*:*_2_*:*_20892680491_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_7946620_*|*_10006_*:*_1_*:*_3213721345"}], "description": "The default puppet authorisation layer requires that a client be authorised before downloading the CRL - this seems unnecessarily restrictive - they are usually public documents ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16481", "fixedVersions": ["SERVER 2.3.0"], "id": "16481", "issueType": "Bug", "key": "SERVER-1056", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b1e529cba383e0814003fb3", "resolution": "Fixed", "resolutionDate": "2016-01-29T14:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Should downloading the CRL require authentication, or be open?", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "attachments": [], "comments": [], "components": [], "created": "2015-12-03T15:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Have a CI job that installs an old version of Puppet Server and do an upgrade to the new version and run a smoke test."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ff01329"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1832"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9nxr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_67944503_*|*_1_*:*_1_*:*_1110910193_*|*_10007_*:*_2_*:*_957776909_*|*_3_*:*_1_*:*_6348_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1505560486_*|*_10005_*:*_1_*:*_46468677284"}], "description": "At one point in time, we had a Jenkins job which was intended to be used for upgrading from a previously released version of Puppet Server to a package built from latest code on a branch.  There were various problems with that approach which ultimately led to us to setting it aside / disabling the tests.  SERVER-256 documents one of the problems, a Beaker issue, but not sure if there were others.\n\nIn lieu of these tests running in CI, we've instead been doing manual upgrade smoke testing prior to release.  We don't do this very frequently, though, and often don't cover many OS variants in the process.  It would be much better if we could have this covered in an automated test suite which runs frequently.\n\nI would be happy with at least having the basic scenario that we cover in manual smoke testing covered as a starting point:\n\n1) Puppet Server installed on the latest release version.\n2) Puppet Server upgraded to a new candidate version based on the build from branch latest.\n3) Validate that Puppet Server can be started successfully.\n4) Validate that an agent can be run against the newly upgraded Puppet Server.\n\nWe may ultimately want to go beyond this and run through at least the equivalent of the \"20: Acceptance Smoke Test\" suite job against the Puppet Server upgrade pipeline - if not also the \"25: Full Acceptance Test Suite\" (perhaps at a significantly reduced frequency than \"on every merge\" like we have with the standard pipelines today.\n\n ", "epicLinkSummary": "Tooling & preparation for monthly external Server release cadence", "estimate": "PT0S", "externalId": "16211", "fixedVersions": ["SERVER 5.1.0"], "id": "16211", "issueType": "Task", "key": "SERVER-1055", "labels": [], "originalEstimate": "PT0S", "parent": "16225", "parentSummary": "Tooling & preparation for monthly external Server release cadence", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2017-07-05T15:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Revisit automated upgrade tests", "timeSpent": "PT0S", "updated": "2017-09-08T10:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-03T14:46:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@35e8bf57"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Release process improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3f13:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_32486371832_*|*_6_*:*_1_*:*_0"}], "description": "This epic is intended to be used to organize various tickets related to process improvements we could make around the release of Puppet Server - e.g., automating away some manual steps through CI improvements.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14754", "fixedVersions": [], "id": "14754", "issueType": "Epic", "key": "SERVER-1054", "labels": ["tech-debt"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-12-13T14:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Release process improvements", "timeSpent": "PT0S", "updated": "2017-06-06T08:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "{quote}I think one of the reasons for this was covered in SERVER-359, where we had to resort to referring to the project artifact version in multiple places in the project.clj file for use with ezbake but which in turn was not compatible with the way \"lein release\" does version bumps{quote}.\nSince the last time I talked with y'all about this, I added some fixes to the CI clojure dependency updating script that might address this concern:\nhttps://github.com/puppetlabs/ci-job-configs/commit/46de7141c982c81995fa3cb98ceb5c95620a8d84#diff-f2ed840b1dddefc20a2514c526a84ce0\n\n{quote}2) Remove the redundant references back to the base project artifact in ezbake profiles - assuming EZ-57 makes this safe to do now.{quote}\nI don't think this is the case. EZ-57 appears to only grab files from the jar based on where that jar can be found using information from the lein project data structure. If the project has tk service dependencies in its jar, it still needs to be explicitly set in the list of ezbake dependencies for those jars to be included in the uberjar created by ezbake.", "created": "2015-12-03T15:32:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "{quote}Have successful completion of the \"Lein Release\" job lead to kicking the full pipeline - 01 Clojure Unit Tests -> 25 Full Acceptance Suite - against the \"full\" OS matrix for the \"released\" project tag.{quote}\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] One idea i've had at the back of my mind to accommodate this kind of behavior would be a kickoff job similar to the \"on-merge\" job but would instead run \"on-tag\" since git polling can be configured to target only updated tag references. One thing I thought was preventing this kind of behavior was the need to wait for RE to tag a release...", "created": "2015-12-18T10:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I'm a little confused on this. I believe from discussion with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] that the current work for this ticket is around item two in the description. However, it seems like Wayne disagreed with the approach? Looking at the current [ezbake|https://github.com/puppetlabs/puppetserver/blob/master/project.clj#L192-L212] section it looks like we're currently doing overrides (to set them to nil) not because of ezbake recursively adding subprojects dependencies within composite builds, but because of ezbake will overwrite conflicts with lein-parent. Is that the current work to do?", "created": "2017-07-06T11:24:00.000000"}], "components": [], "created": "2015-12-03T14:43:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d563aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1832"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymawv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1111743934_*|*_5_*:*_2_*:*_15094111053_*|*_10006_*:*_1_*:*_21285650125_*|*_10005_*:*_1_*:*_31374750877"}], "description": "This ticket is a collection of some ideas I'd been kicking around with [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] around the possibility of revitalizing / using an automated release job / pipeline in place of some of the manual steps we've been doing in Puppet Server for the last few releases.\n\nItems include:\n\n1) Re-enable the \"Release-05: Lein Release\" job.\n\nThis would hopefully allow us to eliminate the manual version bumping that we've been doing across separate PRs for Puppet Server, e.g., one PR to bump to 2.2.1 followed by another to bump to 2.2.1-SNAPSHOT. \n\nThese jobs exist but are currently disabled.  I don't know what all about them is not working at this point.\n\nI think one of the reasons for this was covered in SERVER-359, where we had to resort to referring to the project artifact version in multiple places in the project.clj file for use with ezbake but which in turn was not compatible with the way \"lein release\" does version bumps.  In theory, it seems like we shouldn't have to do the multiple references anymore since ezbake now includes work from EZ-57, which eliminated the need to duplicate the project artifact as a dependency in an ezbake profile just so ezbake can parse out the associated ezbake.conf file.\n\nMaybe there are other things that need to be done to get this working again?\n\nWhich brings me to...\n\n2) Remove the redundant references back to the base project artifact in ezbake profiles - assuming EZ-57 makes this safe to do now.\n\nFor an example of the self-reference, see https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.2.0/project.clj#L110.\n\n3) Have successful completion of the \"Lein Release\" job lead to kicking the full pipeline - 01 Clojure Unit Tests -> 25 Full Acceptance Suite - against the \"full\" OS matrix for the \"released\" project tag.\n\nThis is one of the most painful things about the current \"manual\" release process.  Today, we would push through a PR that would update the project.clj to a non-SNAPSHOT, released version - e.g., 2.2.1.  The resulting pipeline would be run through with the \"reduced set\" matrix associated with mergely kickoff jobs rather than the \"fuller set\" matrix currently associated with our nightly (periodic) kickoff jobs.  To compensate for that, I've been letting the pipeline run for the reduced set but then manually kicking off a subsequent job starting with \"20: Smoke Acceptance Test Suite\" against the release version, e.g., 2.2.1, which covers the fuller OS matrix that we run for the nightly jobs.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], fyi on the above, since you're planning on doing the next couple of releases. \n\nIt would be awesome to have a tailored platform/layout matrix for the full set of supported platforms be used automatically for the jobs downstream from the \"Lein Release\" job.\n\n---\n\n[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] may have others he'd like to add here, and maybe some of this should be split into separate tickets depending upon where the work needs to be done - e.g., some QENG tickets for parts where we need direct involvement from QE.\n\nAlso interested in any perspective [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] may want to add here...", "epicLinkSummary": "Tooling & preparation for monthly external Server release cadence", "estimate": "PT0S", "externalId": "16711", "fixedVersions": [], "id": "16711", "issueType": "Task", "key": "SERVER-1053", "labels": [], "originalEstimate": "PT0S", "parent": "16225", "parentSummary": "Tooling & preparation for monthly external Server release cadence", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2018-02-07T16:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Release pipeline for Puppet Server", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] in the early prototypes of Puppet Server (2+ years ago), using the default optimization settings for JRuby was causing all kinds of really, really scary JIT-related PermGen errors that I had never even seen in the JVM before and did not know were possible.  The goals for the initial release of Puppet Server focused on stability and feature parity with the Rack master, with the intention of coming back around and optimizing and improving performance later.  So, we took the approach of choosing the absolute most conservative values for every option.  Even with those conservative settings, perf testing showed us at parity or better than Rack in almost all cases.  The recent performance ticket related to the Racc parsing is the first significant performance-related ticket we've ever gotten that has actually boiled down to a JRuby vs. MRI issue.\n\nWe've always intended to come back around and explore these settings, but haven't had the time to do so because we have so much feature-related work that tends to get prioritized above this.  We still intend to, but, it's not entirely clear when.  Direct Puppet and the Node Classifier-related memory issues for installations with large numbers of environments are a few things that we definitely have to get sorted before we'll be able to really give JRuby optimization the attention that it deserves.\n\nWe've had enough issues with JRuby (mostly occurring when we bump to a new version) in the past that we consider anything like this to be a high-risk endeavor that warrants a great deal of long-running test coverage before we roll out changes to the default production code / configuration, so we'll need to budget a significant chunk of time before we would consider rolling out a switch of the default settings to JIT.\n\nAlso, because we use JRuby via multiple ScriptingContainer objects controlled programatically, we are exercising a slightly different code path than what the CLI JRuby commands use, which means that even though flags like this might be well tested and stable for typical JRuby use cases, we still feel like we need to give them special testing and attention before rolling them out as defaults for Puppet Server.\n\nSo, I guess the tl", "created": "2015-12-04T11:18:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [af706e0|https://github.com/puppetlabs/puppet-server/commit/af706e0ee1683dbe8de294f86429bc50c2d93871].", "created": "2016-01-07T15:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] I couldn't find the dang \"docs\" tab in Jira to flag that this ticket is probably worthy of discussion in terms of whether we want to add any docs around it or not.", "created": "2016-01-20T14:07:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] For the release notes fields, edit the ticket and you should see the docs tab between CS and Scope Change. The ticket's already got the DOCS component on it.\n\nGlancing through the PR, the {{puppetserver.conf}} docs line describing {{compile-mode}} is good, but we should update [the tuning guide|https://docs.puppetlabs.com/puppetserver/latest/tuning_guide.html] to explain why someone would (or wouldn't) want to change the setting, and link to that guide from the reference for context.", "created": "2016-01-20T14:25:00.000000"}], "components": ["DOCS"], "created": "2015-12-03T14:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2763392"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynrb3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Offshoot of sprint-related work; perf improvement"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_612209264_*|*_1_*:*_1_*:*_507716708_*|*_10007_*:*_1_*:*_404506907_*|*_3_*:*_1_*:*_212981_*|*_5_*:*_1_*:*_21670304997_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_505640185_*|*_10005_*:*_1_*:*_2116575209"}], "description": "Through some work done for SERVER-993, we discovered that there could be a considerable performance benefit in at least some scenarios to having Puppet Server use the \"compile.mode\" setting of {{JIT}} instead of the Puppet Server default of {{OFF}} when initializing JRuby ScriptingContainers.\n\nTo allow for others to experiment with this for performance, it might be good to expose this as a configurable setting, e.g., via the {{jruby-puppet}} section in Trapperkeeper configuration, rather than having it just be hard-coded / unchangeable in Puppet Server code - see https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.2.0/src/clj/puppetlabs/services/jruby/jruby_puppet_internal.clj#L35.  \n\nProbably best to stick with {{OFF}} as the default value for now until such time as we might have done sufficient characterization to recommend the use of {{JIT}}.  Note that {{JIT}} is the default value used when running JRuby from the command line.\n\nFor more about the compile.mode setting, see https://github.com/jruby/jruby/wiki/JRubyCompiler#tweaking-and-troubleshooting.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15603", "fixedVersions": ["SERVER 2.3.0"], "id": "15603", "issueType": "Task", "key": "SERVER-1052", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-01-20T14:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider allowing JRuby compile.mode setting to be end-user configurable", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-02T16:30:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4da0aa9e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3e5j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1191835797_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_20058335333"}], "description": "Currently if you want to use a feeder node list for a gatling scenario (which you have to do with PE because puppetdb will fall over with Postgres problems if the same certname checks in repeatedly and concurrently for hours), you have to generate a csv file with nodenames, and then update the scenario to draw from that csv file to populate the nodes.\n\nThe problem is, if you want to change the number of nodes running, you need a new set of node config, scenario config, and scala scenario because the feeder csv file is hardcoded in the scala scenario, and the scenario is hardcoded in the node config, and the node config is hard coded in the scenario config.\n\nIt seems like scala must have the facility to dynamically generate a list of n names, which is all using a feeder really requires. As the scenario config already has the number of instances being set, if that were passed through correctly the node list could be generated in scala rather than hardcoded. This would allow the same configs and scenarios to be used for multiple node counts without the current required level of duplication.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15960", "fixedVersions": ["None"], "id": "15960", "issueType": "Improvement", "key": "SERVER-1051", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-08-04T16:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update gatling configuration to remove need for separate feeder files", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T16:22:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e2351e2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3e3j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1104273879_*|*_3_*:*_1_*:*_20146622430_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_85909"}], "description": "Current in gatling simulations the agent sleeps for 30 minutes between runs. This differs from the actual puppet agent behavior, in which the agent runs every 30 minutes, regardless of how long the actual run takes. In gatling simulations, this can lead to clumping, in which agents begin to gather together in larger and larger groups, eventually overwhelming the running master.\n\nThe clumping happens because as the puppet master experiences load, agent interactions get slower. This moves those agents further back into the agent distribution on the next cycle, which lines them up with other agents, which increases the load and slows down the responses, which moves them back further. This repeats, until the agent distribution is very clustered, with periods of quiet alternating with periods of high load. These high load periods eventually overwhelm the master, causing agent timeouts and other failures.\n\nThis could avoided if the gatling sleep calculation were updated to take into account how long the puppet run took. If the agent slept for (30 minutes minus length of last agent run), we wouldn't see this clumping behavior as often, if at all.\n\nThe sleeping is defined here: https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/simulation-runner/src/main/scala/com/puppetlabs/gatling/runner/ConfigDrivenSimulation.scala#L20-L50", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16210", "fixedVersions": ["None"], "id": "16210", "issueType": "Improvement", "key": "SERVER-1050", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2016-08-04T16:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update Gatling scenario to avoid agent clumping", "timeSpent": "PT0S", "updated": "2016-09-07T08:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Nice to have, but probably won't get around to it any time soon.", "created": "2018-02-14T12:05:00.000000"}], "components": [], "created": "2015-12-02T11:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ee51f7f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz303r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_602928922_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_68950528882"}], "description": "The clojure namespaces that are used in our log messages are not always the most user-friendly way to distinguish between different types of log messages.  e.g., it would be nice to be able to tail a log and pipe to grep for something like 'file-sync', and get all log messages related to file sync.  In today's world, that doesn't work well because there are probably 5 namespaces that are relevant.\n\nIs there a way in logback to add a 'tag' or something in addition to the namespaces?  I'm sure there's a way to just override the namespaces in the log messages and use something akin to a tag instead of the namespace, but ideally we'd be able to keep both pieces of data and choose how to format the log output.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14753", "fixedVersions": [], "id": "14753", "issueType": "Improvement", "key": "SERVER-1049", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2018-02-14T12:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Look into better namespacing of log messages", "timeSpent": "PT0S", "updated": "2018-02-14T12:05:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@55e82704"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dpr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_631713176_*|*_5_*:*_1_*:*_24791612906_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.2.1%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15958", "fixedVersions": [], "id": "15958", "issueType": "Sub-task", "key": "SERVER-1048", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28ef96c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dpj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_631281516_*|*_5_*:*_1_*:*_24792029488_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nUpdate dujour to notify users to use 2.2.1.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15599", "fixedVersions": [], "id": "15599", "issueType": "Sub-task", "key": "SERVER-1047", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.2.1 (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "{noformat}\nSubject: Announce: puppet-server 1.1.3 and 2.2.1 available!\n\nNew bugfix releases of Puppet Server for Puppet 3.x and 4.x installations are now available.\nThe primary change for both of these releases is a fix for a memory leak triggered by \nenabling the `max-requests-per-instance` setting. \n\nCheck out the release notes here:\nhttp://docs.puppetlabs.com/puppetserver/latest/release_notes.html\n\nHere are the installation and upgrade instructions for Puppet Server 2.x / Puppet 4.x sites:\nhttp://docs.puppetlabs.com/puppetserver/2.2/install_from_packages.html\n\nAnd here are the instructions for Puppet Server 1.x / Puppet 3.x sites:\nhttp://docs.puppetlabs.com/puppetserver/1.1/install_from_packages.html\n{noformat}\n", "created": "2015-12-09T17:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "s/There/These?\n\n+1 otherwise", "created": "2015-12-09T17:33:00.000000"}], "components": [], "created": "2015-12-02T10:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72c2dd83"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dpb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_631272008_*|*_5_*:*_1_*:*_24792048698_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15369", "fixedVersions": [], "id": "15369", "issueType": "Sub-task", "key": "SERVER-1046", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Notes are live!", "created": "2015-12-09T17:01:00.000000"}], "components": [], "created": "2015-12-02T10:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7665c8d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dp3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_442340468_*|*_5_*:*_1_*:*_24796096310_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_184890001"}], "description": "(Initial planned release date: 2015-12-09)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15020", "fixedVersions": [], "id": "15020", "issueType": "Sub-task", "key": "SERVER-1045", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T17:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71eb987a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dov:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_624277253_*|*_5_*:*_1_*:*_24799050267_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14752", "fixedVersions": [], "id": "14752", "issueType": "Sub-task", "key": "SERVER-1044", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T16:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d5a03b9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3don:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_624267239_*|*_5_*:*_1_*:*_24799064667_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17344", "fixedVersions": [], "id": "17344", "issueType": "Sub-task", "key": "SERVER-1043", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T16:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4026129e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dof:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622796787_*|*_5_*:*_1_*:*_24800530208_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nThis should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17052", "fixedVersions": [], "id": "17052", "issueType": "Sub-task", "key": "SERVER-1042", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T15:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm) (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Smoke tested the following variants:\n\n* Trusty: upgrade, PuppetDB\n* Cent7: upgrade, PuppetDB", "created": "2015-12-08T17:37:00.000000"}], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24f4f1ab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3do7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_541839886_*|*_3_*:*_1_*:*_80936086_*|*_5_*:*_1_*:*_24800557627_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16710", "fixedVersions": [], "id": "16710", "issueType": "Sub-task", "key": "SERVER-1041", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T15:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [{"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "Artifacts up at http://builds.puppetlabs.lan/puppetserver/2.2.1\n\nTagged at eeb54fc608777d67cc2aa027ce2e50977c775d1e", "created": "2015-12-09T12:22:00.000000"}], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43872bd6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dnz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_609695561_*|*_5_*:*_1_*:*_24813649027_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16480", "fixedVersions": [], "id": "16480", "issueType": "Sub-task", "key": "SERVER-1040", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T12:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] this one should also be ready to go.  Query is here:\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20fixVersion%20%3D%20%22SERVER%202.2.1%22\n\nBut it's just one ticket, SERVER-1016.", "created": "2015-12-07T11:32:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Notes in PR 805.", "created": "2015-12-08T23:36:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Merged!", "created": "2015-12-09T15:17:00.000000"}], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32d09b08"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dnr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_442358967_*|*_10007_*:*_1_*:*_56491080_*|*_5_*:*_1_*:*_24802328589_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_122153177"}], "description": "(Initial planned release date: 2015-12-09)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16209", "fixedVersions": [], "id": "16209", "issueType": "Sub-task", "key": "SERVER-1039", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T15:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4644ccb6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dnj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_434630763_*|*_5_*:*_1_*:*_24988695782_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15956", "fixedVersions": [], "id": "15956", "issueType": "Sub-task", "key": "SERVER-1038", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-07T11:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@563a0ffd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dnb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_434625987_*|*_5_*:*_1_*:*_24988707767_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15594", "fixedVersions": [], "id": "15594", "issueType": "Sub-task", "key": "SERVER-1037", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-07T11:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@720bebd6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dn3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_434618751_*|*_5_*:*_1_*:*_24988725657_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15367", "fixedVersions": [], "id": "15367", "issueType": "Sub-task", "key": "SERVER-1036", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-07T11:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@214c8537"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_434615196_*|*_5_*:*_1_*:*_24988732348_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15018", "fixedVersions": [], "id": "15018", "issueType": "Sub-task", "key": "SERVER-1035", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-07T11:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6084c6e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dmn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_434524694_*|*_5_*:*_1_*:*_24988817812_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.2.1%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14751", "fixedVersions": [], "id": "14751", "issueType": "Sub-task", "key": "SERVER-1034", "labels": [], "originalEstimate": "PT0S", "parent": "17343", "parentSummary": "puppetserver 2.2.1 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-07T11:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 2.2.1)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f2eecf6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo5mn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6853636_*|*_3_*:*_1_*:*_8948539_*|*_5_*:*_1_*:*_25283726227_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_615948458"}], "description": "puppetserver 2.2.1 2015-12-09 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17343", "fixedVersions": [], "id": "17343", "issueType": "Task", "key": "SERVER-1033", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.2.1 2015-12-09 Release", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61fa1a82"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dmf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_631768290_*|*_5_*:*_1_*:*_24791608273_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nClose any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%221.1.3%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16709", "fixedVersions": [], "id": "16709", "issueType": "Sub-task", "key": "SERVER-1032", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f379a6b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dm7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_631323734_*|*_5_*:*_1_*:*_24792055051_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nUpdate dujour to notify users to use 1.1.3.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16479", "fixedVersions": [], "id": "16479", "issueType": "Sub-task", "key": "SERVER-1031", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 1.1.3 (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2795f399"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dlz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_631334624_*|*_5_*:*_1_*:*_24792064241_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16208", "fixedVersions": [], "id": "16208", "issueType": "Sub-task", "key": "SERVER-1030", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Notes are live!", "created": "2015-12-09T17:03:00.000000"}], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45b0a569"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dlr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_442408647_*|*_5_*:*_1_*:*_24796024805_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_184958806"}], "description": "(Initial planned release date: 2015-12-09)\n\nPush the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15953", "fixedVersions": [], "id": "15953", "issueType": "Sub-task", "key": "SERVER-1029", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T17:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e9b0731"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dlj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_625938058_*|*_3_*:*_1_*:*_4978070_*|*_5_*:*_1_*:*_24792483060_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nPush packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15590", "fixedVersions": [], "id": "15590", "issueType": "Sub-task", "key": "SERVER-1028", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3383459b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dlb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_630909866_*|*_5_*:*_1_*:*_24792497046_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nThe development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15364", "fixedVersions": [], "id": "15364", "issueType": "Sub-task", "key": "SERVER-1027", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19ee734d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dl3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622860740_*|*_5_*:*_1_*:*_24800542727_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nThis should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n  * [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15016", "fixedVersions": [], "id": "15016", "issueType": "Sub-task", "key": "SERVER-1026", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T15:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm) (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Working on smoke tests:\n\n* Trusty:  clean install, PuppetDB.\n* Trusty: upgrade\n* Cent7: upgrade, PuppetDB", "created": "2015-12-08T13:19:00.000000"}], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65f33735"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dkv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_527531302_*|*_3_*:*_1_*:*_95305594_*|*_5_*:*_1_*:*_24800571033_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nProcedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14750", "fixedVersions": [], "id": "14750", "issueType": "Sub-task", "key": "SERVER-1025", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T15:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [{"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "Artifacts available at http://builds.puppetlabs.lan/puppetserver/1.1.3\n\nTagged SHA d353f53f11587e0b5346782a4df2b74dcaeca188", "created": "2015-12-09T12:18:00.000000"}], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17bea341"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dkn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_610313292_*|*_5_*:*_1_*:*_24813094272_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nTag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17342", "fixedVersions": [], "id": "17342", "issueType": "Sub-task", "key": "SERVER-1024", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T12:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] we should be good to go on this.  The Jira query is here:\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20fixVersion%20%3D%20%22SERVER%201.1.3%22\n\nThere's just the one ticket, SERVER-1006.  Let me know if you need anything from me!", "created": "2015-12-07T11:25:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Merged!", "created": "2015-12-09T15:17:00.000000"}], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6558a5da"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dkf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_442425064_*|*_5_*:*_1_*:*_24802358751_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1932_*|*_10005_*:*_1_*:*_178609048"}], "description": "(Initial planned release date: 2015-12-09)\n\nCollaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17051", "fixedVersions": [], "id": "17051", "issueType": "Sub-task", "key": "SERVER-1023", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T15:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51b31a6d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dk7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_434293069_*|*_5_*:*_1_*:*_24989104670_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16708", "fixedVersions": [], "id": "16708", "issueType": "Sub-task", "key": "SERVER-1022", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-07T11:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@417f9bbc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3djz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_431907738_*|*_3_*:*_1_*:*_649450_*|*_5_*:*_1_*:*_24990840236_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nFor some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16478", "fixedVersions": [], "id": "16478", "issueType": "Sub-task", "key": "SERVER-1021", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-07T10:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1934d2e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3djr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_94992427_*|*_1_*:*_1_*:*_431459654_*|*_10007_*:*_1_*:*_655800_*|*_3_*:*_1_*:*_446108_*|*_5_*:*_1_*:*_24895854724_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nBump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16207", "fixedVersions": [], "id": "16207", "issueType": "Sub-task", "key": "SERVER-1020", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-08T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e1fae70"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3djj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_430617088_*|*_3_*:*_1_*:*_822863_*|*_5_*:*_1_*:*_24991983328_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nUse the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15843", "fixedVersions": [], "id": "15843", "issueType": "Sub-task", "key": "SERVER-1019", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-07T10:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fd08867"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3djb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_193405055_*|*_3_*:*_1_*:*_237211685_*|*_5_*:*_1_*:*_24992811253_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2015-12-09)\n\nIf there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%221.1.3%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15587", "fixedVersions": [], "id": "15587", "issueType": "Sub-task", "key": "SERVER-1018", "labels": [], "originalEstimate": "PT0S", "parent": "15362", "parentSummary": "puppetserver 1.1.3 2015-12-09 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-07T10:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release? (SERVER 1.1.3)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-12-02T10:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e1bb12e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo5mf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6916245_*|*_3_*:*_2_*:*_450175346_*|*_5_*:*_1_*:*_25283711804_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_174715647"}], "description": "puppetserver 1.1.3 2015-12-09 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15362", "fixedVersions": [], "id": "15362", "issueType": "Task", "key": "SERVER-1017", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-12-09T18:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 1.1.3 2015-12-09 Release", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server stable at [61235b|https://github.com/puppetlabs/puppet-server/commit/61235b2d0e3c673019cd428ae63becab976eae54].", "created": "2015-12-01T11:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed full Puppet Server (25) acceptance tests against the stable branch - http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-stable/237/.\n\nMoving to testing - /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2015-12-01T11:38:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This modification also passed Preban's Gatling run, which was the method that originally found this issue.  This test is described in PE-12967.  Resolving.", "created": "2015-12-01T11:45:00.000000"}], "components": [], "created": "2015-11-30T16:30:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ef184f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Customer would have experienced this issue on first jruby flush after first file-sync commit."}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Puppet Server stops responding to requests."}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3c4v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Critical bug found in existing scope (release blocker)"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_42982330_*|*_1_*:*_1_*:*_4917353_*|*_10007_*:*_1_*:*_19824193_*|*_3_*:*_1_*:*_1172710_*|*_5_*:*_1_*:*_25998352240_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_421702"}], "description": "With the new pool locking functionality in Puppet Server, instances which are flushed when the {{max-requests-per-Instance}} or jruby pool flush endpoints are hit do not also have \"unlock\" called for the read lock for the corresponding threads.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16206", "fixedVersions": ["SERVER 2.2.1"], "id": "16206", "issueType": "Bug", "key": "SERVER-1016", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-12-01T11:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Lock not released on flushed instances", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "created": "2015-11-27T10:22:00.000000", "name": "puppetserver-http.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11260"}, {"attacher": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "created": "2015-11-27T10:22:00.000000", "name": "puppetserver-ssl.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11184"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user thanks for the bug report.\n\nPuppet Server will always communicate with PuppetDB over HTTPS, even when they are running on the same machine.  At present I do not believe there is a way to configure it otherwise.\n\nThe port that it uses to connect to PuppetDB should come from a file called {{puppetdb.conf}}, in the same directory as your {{puppet.conf}} file (which I believe should be {{/etc/puppetlabs/puppet}}).\n\nDid you have a working setup, and then you upgraded it in place and the behavior changed?  Or is this a new/clean installation?  If the latter, what procedure did you use for configuring Puppet Server to use PuppetDB?", "created": "2015-11-30T09:58:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "body": "Hello,\n\nit was a working installation that I upgraded. In the meantime, I tried a reinstall, that also doesn't work. I read in a puppet book that puppet will switch to http with port 8080 if they are both on the same server, but maybe that was for an older version only.\n\nI upgraded using the rpm's from the puppet-repo.", "created": "2015-12-02T08:02:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "body": "Hello Christopher,\n\nafter a long search, I found the problem. I'm using the dalen-puppetdbquery-plugin, which also makes some local changes?\n\nAnyway, I was on version 2.0.1 and after upgrading to the latest version (2.1), clearing all the puppet-caches and restarting puppetserver and puppetdb, it works again apparently ...\n\nThanks,\n\nMichel", "created": "2015-12-03T06:51:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "body": "combination of latest puppet (2.2) with older version pf puppetdbquery (2.0.1)", "created": "2015-12-03T06:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user great, glad you got it working!\n\n[~accountid:70121:7b50b988-18ad-4913-8df5-c67397870b32] just out of curiosity - does your terminus support non-HTTPS comms now?", "created": "2015-12-03T06:54:00.000000"}, {"author": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] no it does not.", "created": "2015-12-03T08:28:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "body": "Well,\n\n'actually, today I have the problem again. I think I'll just stop using puppet. This is costing me too much time as I spent already a lot of time trying to figure out the cause of this issue, which I can't afford anymore. The stange thing is also that on my first \"puppet agent --test\"-run, puppserver can't find my modules in \"environments/test/modules\" and on the second run it can. I could live with that, but now, it's trying to fo to port 8080 with http again.\n\nThank you for your help. Kind regards,\n\nMichel", "created": "2015-12-04T02:38:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "body": "The strange thing, is that when I run without --test, I don't get the following error, but else I get (only on the first run):\n\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Resource Statement, Could not autoload puppet/type/archive: Could not autoload puppet/provider/archive/default: Unable to find archive module in modulepath /etc/puppetlabs/code/modules:/opt/puppetlabs/puppet/modules\n\nThis is the nanlieu-archive-module from the forge. If I knew why, but it all suddenly went from fully working to non-working ...", "created": "2015-12-04T04:17:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "body": "Problem found: I was fetching puppetdburi and modiying it ... As I didn't clone it, I was modifying the internal copy of puppetserver.\n\nThe modulepath-error is still there, but only happens when running \"puppet agent --test\".\n\nSo, I think I found it now ...\n\nFor reference, puppetserver will never do clear http from what I saw as the http_instance-class of puppet has default ssl=true, which isn't set in the calling procedure.\n\nThanks for the help.\n\nMichel", "created": "2015-12-04T09:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user glad you figured out what was causing the PuppetDB issue.  If you are still having trouble with the modulepath issue, it might be best to open a separate ticket, but we would definitely be happy to try to help you get it sorted out.", "created": "2015-12-04T10:35:00.000000"}], "components": ["Puppet Server"], "created": "2015-11-27T10:23:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b9cb53b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3bf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Nov/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_505732381_*|*_5_*:*_1_*:*_1317492764_*|*_6_*:*_1_*:*_0"}], "description": "Hello,\n\nI was trying to setup a config with the provided puppet-rpm-packages. Everything worked well, but then suddenly it all stopped working. I thought it may be my updated code, but now I think it happened during the update to the last version.\n\nBecause both (puppet server version 4 and puppetdb) are installed on the same server, puppet automatically uses http on port 8080, instead of the configured https on port 8081. All fine, but then it still tries to setup an ssl-connection to the http-port of puppetdb, causing that one to respond with an \"illegal character error 0x16\".\n\nYou can see this in the 2 wireshark-screenshot, showing the same data. Once decoded as http, then as ssl:\n\n", "environment": "centos 6.6 64bit\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16205", "fixedVersions": [], "id": "16205", "issueType": "Bug", "key": "SERVER-1015", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cb1487c8-952a-4a24-aad3-3168ec5310bd", "resolution": "Cannot Reproduce", "resolutionDate": "2015-12-18T12:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver tries to use an ssl-connection on the puppetdb-http-port (when both are installed on the same server)", "timeSpent": "PT0S", "updated": "2015-12-18T12:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7b5ed32a94006a65d790] I believe this is the same issue as SERVER-571.  Would you mind testing out the workaround described there?  Which basically involves adding the agent's libdir to the Puppet Server ruby load path?", "created": "2015-12-01T15:04:00.000000"}, {"author": "623e7b5ed32a94006a65d790", "body": "I added to path to {{ruby-load-path}} in {{puppetserver.conf}} and indeed the report works with this setting.", "created": "2015-12-01T23:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7b5ed32a94006a65d790] great, glad that the workaround worked for you.  We'll discuss this in our next backlog meeting to try to sort out the best long-term solution for this.", "created": "2015-12-01T23:56:00.000000"}], "components": ["Puppet Server"], "created": "2015-11-25T11:44:00.000000", "creator": "623e7b5ed32a94006a65d790", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@397850d6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3b0n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1813160113_*|*_6_*:*_1_*:*_0"}], "description": "I am trying to write a custom report but the code doesn't seem to be picked up by the Puppetserver (2.2.0). Following [https://puppetlabs.com/blog/when-puppet-reports-part-2] I have written a small module with a dummy report that only writes out a single line to the server log. The module is available at [https://github.com/smoeding/puppet-foobar]\n\nh4. First environment: Puppet 3.6.2, Debian Wheezy\n- Install module foobar\n- Verify parameters in {{puppet.conf}}: {{pluginsync=true}}, {{reports=foobar}}\n- Start the puppetmaster\n- Run {{puppet agent -t}}\n- Observe the creation of {{/var/lib/puppet/lib/puppet/reports/foobar.rb}}\n\nThe logfile shows a successful call to the report (last line):\n\n{noformat}\nInfo: Caching node for xxx\nInfo: Caching node for xxx\nNotice: Compiled catalog for xxx in environment production in 9.54 seconds\nInfo: Puppet run on xxx ended with status unchanged\n{noformat}\n\nSo the report code seems to be working in this environment.\n\nh4. Second Environment: Puppetserver 2.2.0, Puppet-Agent 1.3.0, Debian Wheezy\n- Install module foobar\n- Verify parameters in {{puppet.conf}}: {{pluginsync=true}}, {{reports=foobar}}\n- Start the puppetmaster\n- Run {{puppet agent -t}}\n- Observe creation of {{/opt/puppetlabs/puppet/cache/lib/puppet/reports/foobar.rb}}\n\nThe logfile {{/var/log/puppetlabs/puppetserver/puppetserver.log}} only contains:\n\n{noformat}\n2015-11-25 18:49:12,105 WARN  [qtp559733227-62] [puppet-server] Puppet No report named 'foobar'\n{noformat}\n\nSo the report is configured but obviously not registed in the server. Restarting the Puppetserver does not change that situation and the warning remains.\n\nWhen I manually copy the file {{foobar.rb}} to\n{{/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/reports}} (where the standard report files {{http.rb}}, {{log.rb}} and {{store.rb}} reside), then the report suddenly works:\n\n{noformat}\n2015-11-25 19:04:14,042 INFO  [qtp1605533662-61] [puppet-server] Puppet Puppet run on yyy ended with status unchanged\n{noformat}\n\nIt seems to me as if the documented way of writing a custom report as part of a module does not cause the new Puppetserver to pick up the deployed code and execute the report. Other code in modules (custom facts, types & providers) works the expected way.", "environment": "Debian Wheezy with the Puppetserver 2.2.0, Puppet Agent 1.3.0 packages from the Puppetlabs APT repository. Puppetserver and Agent are running on the same host.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16707", "fixedVersions": [], "id": "16707", "issueType": "Bug", "key": "SERVER-1014", "labels": ["reports"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7b5ed32a94006a65d790", "resolution": "Duplicate", "resolutionDate": "2015-12-16T11:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver ignores custom reports", "timeSpent": "PT0S", "updated": "2018-06-19T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f].  This is the ticket I discussed with you this morning.\n", "created": "2015-11-24T12:34:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I need to remember to investigate doing this in Java if it is simple, and doing it in something that works well with Gatling.  This shouldn't be implemented as JUST a beaker test.", "created": "2015-12-16T11:26:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed with [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049]", "created": "2016-01-12T14:08:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] do we still want to do this?", "created": "2017-05-09T16:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] It would be okay with me to close this out.", "created": "2017-05-09T17:10:00.000000"}], "components": [], "created": "2015-11-24T11:44:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ed7737c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr9b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1899457140_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_44155313384"}], "description": "We need a test that views jmap counters and checks to see that there aren't any counters that are only rising.\n\nSee PE-13030, PE-13026, SERVER-1006 for a case where a rising counter was an indication of jruby scripting containers not getting cleaned up.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16706", "fixedVersions": [], "id": "16706", "issueType": "Task", "key": "SERVER-1013", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2017-05-10T13:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Write puppet-server acceptance test that validates jmap counters ", "timeSpent": "PT0S", "updated": "2017-05-10T13:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-11-24T04:43:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c5e4634"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xo7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1924471748_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_68347041191"}], "description": "It looks like there might be a race condition in the {{admin-api-flush-jruby-pool-test}}. https://github.com/puppetlabs/puppet-server/pull/787, which only changes some dependencies, failed in travis but did not fail locally. Failure was:\n\n{code}\nlein test :only puppetlabs.services.jruby.jruby-pool-int-test/admin-api-flush-jruby-pool-test\n\nFAIL in (admin-api-flush-jruby-pool-test) (jruby_pool_int_test.clj:140)\nFlushing the pool results in all new JRuby instances\nexpected: (true? (verify-no-constants pool-context 4))\n  actual: (not (true? false))\n{code}\n\nhttps://travis-ci.org/puppetlabs/puppet-server/jobs/92899188", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17406", "fixedVersions": [], "id": "17406", "issueType": "Bug", "key": "SERVER-1012", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Cannot Reproduce", "resolutionDate": "2018-02-14T12:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Possible race condition in admin-api-flush-jruby-pool-test", "timeSpent": "PT0S", "updated": "2018-02-14T12:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We build packages using a tool called [ezbake|https://github.com/puppetlabs/ezbake], which is basically just a Clojure-specific wrapper on top of Puppet Labs' more general [packaging|https://github.com/puppetlabs/packaging] system.  We have a lot of Jenkins infrastructure set up that supports these for our internal use, so I actually don't have a great idea as to how realistic it would be to use them from outside of our network.\n\nIn the PuppetDB docs here: https://github.com/puppetlabs/puppetdb/blob/master/documentation/install_from_source.markdown#step-2-option-a-install-from-source\n\nThere are some steps that show some of the process.  It should pretty much the same for Puppet Server.\n\nIf you experiment with this and have any success (or otherwise), we'd be interested in hearing about it and happy to update our docs to include some additional info.", "created": "2015-12-01T18:18:00.000000"}], "components": ["DOCS"], "created": "2015-11-24T03:19:00.000000", "creator": "623e75781c7f6a00704b2904", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46cf5faf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xon:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1327215650_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_68949349669"}], "description": "While iterating around https://github.com/puppetlabs/puppet-server/pull/787 I couldn't figure out how to build custom deb/rpm packages including the updated jar file.\n\nWould it be possible to add a section to the developer documentation ? My understanding is that I need to create an \"ext/project_data.yaml\" file. Could you provide a sample one maybe ?\n\nThanks !", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15014", "fixedVersions": [], "id": "15014", "issueType": "Improvement", "key": "SERVER-1011", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e75781c7f6a00704b2904", "resolution": "Fixed", "resolutionDate": "2018-02-14T12:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "building custom packages isn't easy", "timeSpent": "PT0S", "updated": "2018-02-14T12:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:806bec00-11b5-4dd0-a9d7-efe82e2f4047", "body": "Not necessarily a serious bug, but could throw off end-user enough when debugging.  Came across this with a user on IRC.  More info:\n\n{code}\n[master ~]# ruby --version\nruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]\n[master ~]# puppetserver ruby --version\njruby 1.7.20.1 (1.9.3p551) 2015-06-10 d7c8c27 on OpenJDK 64-Bit Server VM 1.7.0_79-icedtea-mockbuild_2015_04_16_15_49-b00 +jit [linux-amd64]\n{code}", "created": "2015-11-20T14:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Former user, I'm able to reproduce this issue as well. I also installed the latest JRuby binaries - 1.7.22 and 9.0.4.0 - and saw the same behavior when running the command via jruby.  Here's what I saw for jruby 9.0.4.0:\n\n{noformat}\n\u203a jruby --version\njruby 9.0.4.0 (2.2.2) 2015-11-12 b9fb7aa Java HotSpot(TM) 64-Bit Server VM 25.45-b02 on 1.8.0_45-b14 +jit [darwin-x86_64]\n\u203a jruby -ryaml -e \"YAML.load_file 'test.yaml'\"\nPsych::SyntaxError: (test.yaml): could not found expected ':' while scanning a simple key at line 4 column 1\n               parse at org/jruby/ext/psych/PsychParser.java:227\n        parse_stream at /Users/jbarlow/.rbenv/versions/jruby-9.0.4.0/lib/ruby/stdlib/psych.rb:376\n               parse at /Users/jbarlow/.rbenv/versions/jruby-9.0.4.0/lib/ruby/stdlib/psych.rb:324\n                load at /Users/jbarlow/.rbenv/versions/jruby-9.0.4.0/lib/ruby/stdlib/psych.rb:251\n  block in load_file at /Users/jbarlow/.rbenv/versions/jruby-9.0.4.0/lib/ruby/stdlib/psych.rb:470\n                open at org/jruby/RubyIO.java:1125\n           load_file at /Users/jbarlow/.rbenv/versions/jruby-9.0.4.0/lib/ruby/stdlib/psych.rb:470\n               <top> at -e:1\n{noformat}\n\nSince the problem is reproducible with standard JRuby - with the puppetserver package not involved - it would seem to be best to raise this with the JRuby community.  Would you be willing to submit this as an issue here - https://github.com/jruby/jruby/issues - and link back to this ticket for tracking?", "created": "2015-11-23T16:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Closing this since it's a JRuby issue, but we would definitely like to bump to a new JRuby version when they get a fix in.", "created": "2015-12-09T11:50:00.000000"}], "components": ["Puppet Server"], "created": "2015-11-20T14:16:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:806bec00-11b5-4dd0-a9d7-efe82e2f4047", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2dfc63e4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz38q7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Nov/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1632633432_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_186694"}], "description": "Noticing that puppetserver outputs the incorrect line for a YAML syntax error whereas CLI ruby reports correctly:\n\n{code}\n[master ~]# cat test.yaml\n---\nmessage: hello\nkey = value\n[master ~]# /opt/puppet/bin/ruby --version\nruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]\n[master ~]# /opt/puppet/bin/ruby -ryaml -e \"YAML.load_file 'test.yaml'\"\n/opt/puppet/lib/ruby/1.9.1/psych.rb:203:in `parse': (test.yaml): could not find expected ':' while scanning a simple key at line 3 column 1 (Psych::SyntaxError)\n\tfrom /opt/puppet/lib/ruby/1.9.1/psych.rb:203:in `parse_stream'\n\tfrom /opt/puppet/lib/ruby/1.9.1/psych.rb:151:in `parse'\n\tfrom /opt/puppet/lib/ruby/1.9.1/psych.rb:127:in `load'\n\tfrom /opt/puppet/lib/ruby/1.9.1/psych.rb:297:in `block in load_file'\n\tfrom /opt/puppet/lib/ruby/1.9.1/psych.rb:297:in `open'\n\tfrom /opt/puppet/lib/ruby/1.9.1/psych.rb:297:in `load_file'\n\tfrom -e:1:in `<main>'\n[master ~]# /opt/puppet/bin/puppetserver --version\npuppetserver version: 1.1.1\n[master ~]# /opt/puppet/bin/puppetserver ruby -ryaml -e \"YAML.load_file 'test.yaml'\"\nPsych::SyntaxError: (test.yaml): could not found expected ':' while scanning a simple key at line 4 column 1\n         parse at org/jruby/ext/psych/PsychParser.java:215\n  parse_stream at /opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/psych.rb:205\n         parse at /opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/psych.rb:153\n          load at /opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/psych.rb:129\n     load_file at /opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/psych.rb:299\n          open at org/jruby/RubyIO.java:1183\n     load_file at /opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/psych.rb:299\n        (root) at -e:1\n        invoke at jruby_puppet_core.clj:170\n        invoke at jruby_puppet_core.clj:164\n        invoke at subcommand.clj:38\n      doInvoke at ruby.clj:7\n        invoke at core.clj:624\n        invoke at main.clj:315\n      doInvoke at main.clj:420\n[master ~]#\n{code}\n\n\nSame occurs on 2015.2.x", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15012", "fixedVersions": [], "id": "15012", "issueType": "Bug", "key": "SERVER-1010", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:806bec00-11b5-4dd0-a9d7-efe82e2f4047", "resolution": "Incomplete", "resolutionDate": "2015-12-09T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver ruby reports wrong line numbers for YAML errors", "timeSpent": "PT0S", "updated": "2015-12-16T08:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Any ideas on this one?\n\nFor Debian7, I tried the following today:\n\n{noformat}\n> wget https://apt.puppetlabs.com/puppetlabs-release-wheezy.deb\n> dpkg -i puppetlabs-release-wheezy.deb\n> apt-get update\n> apt-get install puppetserver\n> dpkg -l puppetserver\nDesired=Unknown/Install/Remove/Purge/Hold\n| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend\n|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)\n||/ Name           Version      Architecture Description\n+++-==============-============-============-==================================\nii  puppetserver   1.1.2-1puppe all          Puppet Labs puppetserver\n> /usr/bin/puppetserver --version\npuppetserver version: 1.1.2\n{noformat}\n\nCould be something about this I'm not understanding...\n", "created": "2015-11-19T13:29:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "We're not building packages targeted specifically at debian stable. If you want to install packages on debian stable, please use the Debian Jessie repos, as Debian Jessie is the stable debian release currently out.", "created": "2015-11-20T04:16:00.000000"}, {"author": "557058:cb322f58-28e5-4bea-9672-e239335535d5", "body": "The Jessie repo has nothing in it: http://apt.puppetlabs.com/pool/jessie/main/, just the puppetlabs release package.", "created": "2015-11-20T13:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Thanks for the clarification.  I think your comment for Jessie only applies to the latest major version releases for puppet-agent, puppetserver, et al., right?  For the puppetserver 2.x series, there are packages for 2.1.2 and 2.2.0 - http://apt.puppetlabs.com/pool/jessie/PC1/p/puppetserver/.  My understanding, however, is that we have not been building any packages for Puppet 3.x or Puppet Server 1.x for Jessie.  Is that your understanding / expectation as well?", "created": "2015-11-20T14:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Can you verify [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]'s comments about Jessie and Puppet 3.x / Puppet Server 1.x?", "created": "2015-12-09T11:41:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Oops, sorry about never responding. Correct, Puppet 3.x and Puppet Server 1.x are not a part of the latest version series, so we are not adding any new platform support to those versions. All new platforms are added only to the latest release series (major version) for a project (Puppet Server 2.x, Puppet Agent 1.x, etc.). ", "created": "2015-12-09T17:36:00.000000"}, {"author": "557058:cb322f58-28e5-4bea-9672-e239335535d5", "body": "This isn't a new platform and it looks like EL6/EL7 are still receiving binaries for puppetserver (latest rpms are 1.1.3). I can't see why you can't build Puppet Server 1.x for jessie/stable.", "created": "2015-12-28T18:07:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "Jessie was new in the Puppet Server 2 lifetime (puppet 4 as well). The platforms that existed in Puppet Server 1 and Puppet 3 will continue to get updates, but we won't be adding new ones. IIRC, Jessie also has Ruby 2 by default and Puppet 3 has some known issues with Ruby 2, which is a blocker for backporting it. ", "created": "2015-12-29T10:44:00.000000"}], "components": ["Puppet Server"], "created": "2015-11-19T13:14:00.000000", "creator": "557058:cb322f58-28e5-4bea-9672-e239335535d5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d68dcfa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz37yf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2325754433_*|*_6_*:*_1_*:*_0"}], "description": "Please add newer packages for puppet server to the apt.puppetlabs.com debian stable repository. The last one that was released here was 1.0.8", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16477", "fixedVersions": [], "id": "16477", "issueType": "Bug", "key": "SERVER-1008", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cb322f58-28e5-4bea-9672-e239335535d5", "resolution": "Won't Fix", "resolutionDate": "2015-12-16T11:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 1.1.2 package for debian stable", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e75fc562ab90069f9ec16] thanks for the heads up!\n\nHas this difference caused any issues for you?  We discussed this today and are leaning towards leaving it as it is in Puppet Server, since UTC seems like it might be better, but if it's breaking anything for users then we might reconsider.", "created": "2015-12-09T11:33:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "I found it due to some additional validation we do when comparing inventories on primary/backup CA machines and the regex stopped matching - no specific failures, this was more informational than anything.", "created": "2015-12-09T15:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Cool.  Thanks for the heads up!", "created": "2015-12-09T15:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm going to close this for now, but will re-open if it turns out that this difference is causing issues for users.", "created": "2015-12-09T15:52:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "So this hit me while I was onboarding. [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] had also seen something similar and created a [patch|https://github.com/haus/puppet-server/commit/32131a27479202cf231167cadbbc67130b9c54d8] for it. I dug into it to see what exactly was happening and its root cause. Here's the tl", "created": "2016-02-23T13:09:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "If updating to the latest clj-time fixes it, that definitely seems like the best path to me.  We use it in tons of projects, but I don't think anyone has any major concerns about bumping it frequently.  We end up bumping it pretty regularly in the puppet server projects.\n\nMost of the projects you have listed up there that are pre-0.10.0 are just libraries, which get pulled into the actual application projects later on in the build process, and so the newer versions that are used by the app projects end up overriding the older versions in the libraries.  (this isn't to say that we shouldn't also update the version in the library projects", "created": "2016-02-23T13:15:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Cool. I wasn't sure about the overriding that would happen and the downstream/upstream relations there.\n\nI've opened a PR for puppet-server here: https://github.com/puppetlabs/puppet-server/pull/924\n\nIf downstream projects override dependencies of upstream projects does that me we need to update pe-puppet-server-extensions and/or pe-puppetserver as well?", "created": "2016-02-23T15:57:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] (since you're the QA Contact listed on the ticket)\n\nThere is a unit test for this timestamp format but the issue in question was only happening on relatively recent JVMs (more recent then the JVMs used CIs). Matthaus and I both confirmed the unit test passed locally with this change and the existing CI has validated there haven't been regressions.\n\nHowever that unit test isn't run (as far as I can tell) in pe-puppetserver or pe-puppet-server-extensions which control the library for our PE customers.\n\nI don't know if there's an acceptance test for the CA inventory.txt format but to manually test this I would assume that in both FOSS puppet-server and in PE we would see the CA creating an inventory.txt formatted the same as the old Ruby CA fiddy mentions above:\n{code}\n0x0009 2015-11-17T16:45:48UTC 2040-11-11T16:45:48UTC /CN=puppetcertgenerate\n{code}\n\nHTH in triaging this for testing purposes!", "created": "2016-02-24T17:27:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] Thank you!\n\nBased on the fact that this was closed back in Dec, and reopened based on the availability of a relatively easy fix more than on customer need, and that there are unit tests that have that have been executed by developers, I'm leaving this risk assessment as it stands and am closing out this ticket. ", "created": "2016-02-26T10:16:00.000000"}], "components": [], "created": "2015-11-18T09:58:00.000000", "creator": "5b1e529cba383e0814003fb3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3acb582e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynn7b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "issue arose while onboarding, took on extra triaging as an edu exercise, fix was found to be trivial after root causing"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_65705145_*|*_1_*:*_1_*:*_1835616493_*|*_10007_*:*_1_*:*_3466139_*|*_4_*:*_1_*:*_3338276_*|*_6_*:*_2_*:*_6566541208_*|*_10011_*:*_1_*:*_166501128"}], "description": "puppet cert generate and puppetserver write the inventory.txt in subtly different formats:\n\n0x0009 2015-11-17T16:45:48UTC 2040-11-11T16:45:48UTC /CN=puppetcertgenerate\n0x000A 2015-11-17T16:46:06+00:00 2040-11-11T16:46:06+00:00 /CN=puppetagentminust\n\nNote - the puppetserver CA writes the time with the timezone written in a different format (though it's still valid as far as I can tell)\n\nI tried to run the JVM with -Duser.timezone=UTC in case, but that doesn't seem to have made it add the timezone as a word, rather than an offset to the record.\n\nThis might be just a feature as it's all valid ISO time but I thought it worth pointing out.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17404", "fixedVersions": ["SERVER 2.3.0"], "id": "17404", "issueType": "Bug", "key": "SERVER-1007", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b1e529cba383e0814003fb3", "resolution": "Fixed", "resolutionDate": "2016-02-26T10:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Clojure CA writes times in inventory.txt in slightly different format", "timeSpent": "PT0S", "updated": "2016-02-26T13:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This bug went out in PE 3.8.3 and 2015.2.3, so we probably need to target the fix at the 1.x branch and merge it forward.  Since we don't currently have a branch that represents 2.1.x, we will need to decide what to do about that... my guess is we'll probably have to create one.", "created": "2015-11-16T22:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] I'm not sure if we need to account for this in Jira or not, but we are also targeting this fix at a 1.1.3 release of Puppet Server and a 2.1.3 release.  These could theoretically be internal-only releases that are only used by PE, or they could be full-on OSS releases", "created": "2015-11-17T15:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server 1.x branch at [b1160a|https://github.com/puppetlabs/puppet-server/commit/b1160aa0cc8bc60a505dd10ce2f43fbcd1c0b89f].", "created": "2015-11-17T23:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server 1.x at [f84cc0|https://github.com/puppetlabs/puppet-server/commit/f84cc0431840624adef3732c458f84b586126a0e].", "created": "2015-11-18T13:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], here's what I did to functionally test this against the Puppet Server stable branch on CentOS 7:\n\n1) Copied down .repo files for puppet-agent 1.3.0 and puppet-server 2.2.0.stable.SNAPSHOT.2015.11.17T0218 to /etc/yum.repos.d.\n\n2) Ran {{yum install puppetserver}}.\n\n3) To the file at {{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}}, add the following:\n\n{noformat}\njruby-puppet: {\n  ...\n  max-requests-per-instance: 10\n  ...\n}\n{noformat}\n\n4) Ran {{yum restart puppetserver}}.\n\n5) Ran {{yum install java-1.8.0-openjdk-devel}}.  Did this to ensure that the {{jmap}} tool used later for validating memory references was available on the system.\n\n6) Ran the following:\n\n{noformat}\nwatch \"sudo -u puppet /usr/bin/jmap -histo:live `ps -ef | grep -i puppetserver | grep java | awk '{print $2}'` | grep ScriptingContainer\"\n{noformat}\n\nThis displays a line like the following, which updates about every 2 seconds:\n\n{noformat}\nEvery 2.0s: sudo -u puppet /usr/bin/jmap -histo:live ...  Wed Nov 18 12:28:40 2015\n\n7485:             1             32  org.jruby.embed.ScriptingContainer\n{noformat}\n\nNote that the second column has the value of 1, the number of live {{ScriptingContainer}} objects.\n\n7) In a separate shell window, ran the following:\n\n{noformat}\nfor i in `seq 1 10`", "created": "2015-11-18T14:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Full Jenkins stable pipeline run - puppet-server #25 job - with this change was green - http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-stable/218/.  Moving this to the testing column.  /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2015-11-18T14:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The fix for SERVER-1006 went into enterprise-dist in 0ca8ccb3cc812003dbe0705d93a8979de2e14164, and passed monolithic smoke tests here:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/pe-integration/view/all/job/enterprise_pe-acceptance-tests_integration-system_pe_smoke-monolithic_2015.3.x/412/", "created": "2015-11-18T19:05:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Functional review performed by @jb above.  Marking resolved.", "created": "2015-11-19T10:50:00.000000"}, {"author": "557058:de061074-a878-4ca5-823d-51eb605817e8", "body": "Will a new 1.x version also be released containing this fix? We are still testing Puppet 4.x and have not yet moved our production server to it, so we are still using version 1 of the server and have been affected by this bug for months.\n", "created": "2015-11-24T09:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:de061074-a878-4ca5-823d-51eb605817e8] yes, we will definitely do a 1.x release, we just hadn't sorted out the timing yet.  We weren't aware that any 1.x users were being affected by it, so, will discuss this today and start to figure out a plan for a release date.", "created": "2015-12-01T09:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:de061074-a878-4ca5-823d-51eb605817e8] we released 1.1.3 today.", "created": "2015-12-09T18:16:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Set Priority to Critical per earlier comments.", "created": "2015-12-18T13:11:00.000000"}], "components": [], "created": "2015-11-16T22:27:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4409daae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo8vz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Critical bug found in existing scope (release blocker)"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Nov/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_92399_*|*_10007_*:*_1_*:*_143045574_*|*_3_*:*_1_*:*_619101_*|*_5_*:*_1_*:*_37068316_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_73606225"}], "description": "In SERVER-813, we added a \"registration\" list to the JRuby pool data structure, so that we would have an authoritative list of all registered instances even when they were in use / on loan from the pool.  Prior to that fix, calls to the administrative API to do things like flush the environment cache would only affect instances that happened to be in the pool at the time that the request was received.\n\nThere was a bug in the implementation of the fix for that issue where, when we hit the max-requests-per-instance value and flushed an instance from the pool, we did not unregister it, and thus the pool still held a reference to it.  This prevents these flushed instances from being eligible for garbage collection, and thus results in memory being leaked over time when the max-requests-per-instance settings is used.\n\nThe flush logic should be modified to unregister the instances from the pool at the time when they are flushed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17050", "fixedVersions": ["SERVER 1.1.3", "SERVER 2.2.0"], "id": "17050", "issueType": "Bug", "key": "SERVER-1006", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-11-19T10:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "jruby instances flushed by max-requests-per-instance do not get unregistered from pool", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "As noted in SERVER-572, this is currently disabled for security reasons. However, requiring extra steps or a separate workflow for certificates with alternative names complicates the process of rolling out compile masters.\n\nI think the current behavior is definitely appropriate for na\u00efve autosigning and basic glob-based autosigning, but limits the power of policy-based autosigning. A policy-based autosigner should have the option to approve requests containing alternative names.\n\nPerhaps something like the following would be backwards-compatible with existing policy autosigners in a secure way:\n\n  - If the autosigner returns no information about what to do with alternative names, don't sign the request.\n\n  - If the autosigner explicitly confirms that alternative names should be accepted along with the request, sign the request.", "created": "2015-11-13T12:09:00.000000"}, {"author": "70121:9c658341-861b-467e-8f57-dfcff20944cb", "body": "[~accountid:623e754d94742a00683f7cf0] I was thinking being even more specific about this: you have to provide an altnames_autosigner in the puppet.conf that is specifically for handling certificates with alt names, so instead of worrying about backwards compatibility for people using existing autosigners, this is adding a new configuration option. \n\nIf the user writes their autosigner to handle altnames and wants to use it for both normal and alt name situations, they can add the same executable to both settings. This would also allow for us to ship an altname autosigner as part of a future version of PE that doesn't conflict with a users existing autosigning behavior.\n\n", "created": "2015-11-14T16:23:00.000000"}, {"author": "623c135e1c7f6a007049e9ad", "body": "This is required for autoscaling Puppet servers with an external CA, as each server must have a unique certificate. Please allow this.", "created": "2016-02-17T06:29:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "There's a converse problem that we got into a bit in the comments to TK-293 \u2014\u00a0the _manual_ cert signing tools don't support cert extensions at all, so if anyone's been submitting CSRs with extension requests, you've likely been silently signing them into certs. Puppet cert (list/sign) should support displaying extension requests, especially if we decide to start using extensions as an alternate HTTP request auth path. \n\nFurthermore, you should be able to configure autosigning to reject CSRs with certain properties and request manual intervention. That way, autosigners that DON'T take extensions into account (or only handle some extensions) can bail if Puppet sees something unaccounted for. ", "created": "2016-02-24T12:09:00.000000"}, {"author": "557058:4c309f92-9630-443a-9b46-10ae90c6e7e9", "body": "Is there any chance this ticket will get any love in the future? It sucks having to provision the master manually, even with policy based autosigning in an environment :(", "created": "2016-11-07T14:23:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Editing ticket title and expanding description to include reference to the OTHER thing an autosigner doesn't deal with, Puppet Certificate Authorization Extensions ({{puppet cert sign --allow-authorization-extensions}}).", "created": "2017-02-01T16:20:00.000000"}, {"author": "623c135e1c7f6a007049e9ad", "body": "Any news on this ticket?", "created": "2017-08-23T02:47:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "We discussed this during ticket triage yesterday, and we need to do a little bit of design work before we jump to implementing this feature. Since subject alt names are potentially dangerous, policy autosigner scrips need a way to indicate that they can safely handle certs with the SAN extension request. This could be as simple as adding some additional option for the Puppet setting, or perhaps the script itself could be invoked to request features before handed the CSR.\n\n[~accountid:623c135e1c7f6a007049e9ad] what do you think would be a good way for scripts to mark themselves as able to autosign certs with the SAN extension?", "created": "2017-08-23T11:52:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "My vote is use options. Keep it simple and explicit, don't require additional complexity in the autosign script.\n\n{code}\n[master]\n  autosign = /etc/puppetlabs/puppet/autosign.sh \n  allow_autosign_dnsaltnames = true\n  allow_autosign_authextensions = true\n{code}", "created": "2017-08-23T12:13:00.000000"}, {"author": "70121:9c658341-861b-467e-8f57-dfcff20944cb", "body": "[~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49] - per the original ticket, we would want to allow an additional autosigner to be specified in the case of altnames and authextensions, so keeping with the example you provided (and how we specify autosigners today):\n\n{code}\n[master]\n  autosign = /etc/puppetlabs/puppet/autosign.sh \n  autosign_dnsaltnames = /opt/puppetlabs/puppet/meep_infra_autosign.rb\n  autosign_authextensions = /opt/puppetlabs/puppet/meep_infra_autosign.rb\n{code}\n\nOr similar - we want to be able to drop in a new autosigner to just handle infra type cert requests, and not expect the cert signer designed to authorize agent certs (and that security policy around it, etc) to be able to take into account the security considerations around granting access to puppetdb or filesync services.", "created": "2017-08-24T10:41:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "I'd +1 that too.\n\nIn the event a certificate has BOTH alt names AND auth extensions, my intuition from this example would be that it has to pass both autosign_dnsaltnames and autosign_authextensions. Open question: would it have to pass autosign as well? For consistency I think I would want it to. The conceptual model becomes a series of checks, of which all checks applicable to any given cert need to pass for the cert to be signed.", "created": "2017-08-24T10:53:00.000000"}, {"author": "70121:9c658341-861b-467e-8f57-dfcff20944cb", "body": "Maybe?\n\nThe other way to scope these options are:\nautosign\nautosign_secure_extensions (which includes SAN and auth extensions)\n\nSo you have in essence the distinction between autosigning for clients and autosigning for sensitive (in Puppet terms) certs. It also lets us offload the logic of how to handle the certs from the puppet server to the autosigner, and trust the author to know what they are doing - while also being explicit that these are sensitive certs (and ensuring that we don't accidentally send a sensitive cert to a generic autosign script that was installed in the days before this was possible).", "created": "2017-08-24T11:29:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "I would support simplifying to two options only, but still prefer additive checks rather than partitioning.\n\n{code}\n[master]\n  autosign = /etc/puppetlabs/puppet/autosign.sh\n  autosign_secure = /opt/puppetlabs/puppet/meep_infra_autosign.rb\n{code}\n\nIn this example I *still* expect that for a cert with either dns alt names or auth extensions to be signed, that it pass BOTH the {{autosign}} check, AND the {{autosign_secure}} check (which it needs to because it has either dns alt names or auth extensions).\n\nI believe making {{autosign_secure}} an _aditional_ check is more straightforward than routing some certs on an entirely different path. More straightforward is better. Certs with security-related concerns are then still a cert, just a subclass of cert, rather than an entirely different class of object.\n\nAssuming {{autosign_secure}} accepts booleans, it can default to {{false}}.", "created": "2017-08-24T12:03:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Watchers, what do y'all think about the prospect of an alternate autosigning extension point that, instead of receiving the CSR and returning a y/n to the internal signing routine, receives a CSR and returns a *completed certificate* to be added to the trust store? This would allow you to modify the attributes, incorporate SAN, etc, according to local site policy. I'm thinking of this in aggregate with similar requests like [SERVER-2109] and [SERVER-1596], and I think the addition of all this complexity into the core signing workflow itself isn't super scalable, but I understand the use cases and want to provide a mechanism for it.", "created": "2018-02-20T17:13:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] I like the idea. It somehow would enable to integrate with a third party CA solution. \n\nBut if there is a request to sign the cert and it can't be signed immediately - what\u00a0 happens then and what if someone calls {{puppet cert --sign $certname}} ?", "created": "2018-02-21T14:07:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "In the simplest sense:\n\nAssuming an alternate autosigning endpoint such as the one described exists, how does a Puppet admin configure autosigning for new compile masters?\n\nUnless I'm missing something an alternate autosigning endpoint doesn't really do much to change this problem. The hack we employ today changes very slightly. Our new autosigning script still does a manual {{puppet cert sign --allow-dns-alt-names --allow-authorization-extensions}}. The main difference is the autosigner then has to {{cat}} the certificate created by {{puppet cert sign}}\n\nA new endpoint which waives alt-name and auth-extension restrictions is more an opportunity to polish a workaround than an actual solution for this ticket. For the use case here it would be far preferable to enable waiving of these restrictions on today's simpler, easier autosigner.", "created": "2018-02-21T14:32:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Wait so you're running puppet cert sign *inside the policy script*? Ok, I hadn't anticipated that :)\n\nI like this, from the comment above:\n\n{code}\n[master]\n  autosign = /etc/puppetlabs/puppet/autosign.sh \n  allow_autosign_dnsaltnames = true\n  allow_autosign_authextensions = true\n{code}\n\nThis would let the program decide whether to sign or not, and return a \"yes\" back into the built-in signing code, which would consult the options and include altnames and/or extensions if they were present in the request. \n\nIf they were present in the request but should not be signed, it would be the responsibility of the policy script to deny those requests.\n\nI'm having a harder time with [~accountid:70121:9c658341-861b-467e-8f57-dfcff20944cb]'s suggestion that there needs to be *two different* signing scripts, one for infrastructure (which presumably only differs in the sense that its requested SAN should be approved?) and one for agents. \n\nClearly folks like [~accountid:557058:2268636a-3880-4b3c-a73a-6200f2fd381a] enjoy the convenience of puppet's auto-enrolling functionality but want a higher degree of customization than is reasonable to expose in settings, which is why I proposed an external signer (not just a yes/no policy decision but actual CSR-into-certificate issuance). Tough to know where to draw the line, though.", "created": "2018-02-21T15:47:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "I think the {{allow_autosign_*}} settings pattern would work great for this use case. +1", "created": "2018-02-21T15:56:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "(For future spelunkers, the code in question is https://github.com/puppetlabs/puppetserver/blob/puppet-server-2.0.0/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L871-L877 )", "created": "2018-02-21T16:14:00.000000"}, {"author": "70121:9c658341-861b-467e-8f57-dfcff20944cb", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - the justification for allowing for two different autosigners is to allow for PE to ship with one specific to PE infrastructure (ie, autoscale compile master support) while allowing for a user to create and customize an autosigner for their client certificates. The trust domains end up being different - end user may be comfortable autosigning any client scoped certificate if it's a request associated with a running instance-id, while that would be entirely too lax a trust to sign a compile masters certificate which would enable r/w access to PuppetDB, etc.\n\nThe alternatives would be writing the PE Infrastructure autosigner to then also be extensible for customers to append their own autosign code to it (recreating the basic autosign ability) or something like that. Thats why part of the original upstream thread was about\u00a0specifying a different autosigner for CSRs that had altnames and auth extensions: customers who are happily using an autosigner today to handle\u00a0existing CSRs wouldn't see a change in behavior (and we don't have to worry about accidentally making their autosigner sign csrs with altnames) but 'complicated' CSRs could be passed to a different process to handle it.\u00a0", "created": "2018-03-01T11:29:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Relevant: [Current CS Standard on autosigning|https://github.com/puppetlabs/cs-standards/blob/master/standards/autosigning.md]", "created": "2018-03-01T11:43:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "With the removal of the Ruby CA, we added two settings to Puppet Server, {{allow-subject-altnames}} and {{allow-authorization-extensions}} that are configurable in the the {{ca.conf}} file. These are respected both when signing via {{puppetserver ca sign}} and when autosigning. We re-evaluated the security concerns as part of the scoping for Puppet 6 and determined that we had been overly cautious in the past, see comment at https://puppet.atlassian.net/browse/SERVER-2268?focusedCommentId=580382&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-580382.\n\nDoes this solve some or all of the use cases in this ticket?", "created": "2018-10-29T16:46:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] can you link to some documentation for these configuration settings? I don't see them on our docs site, or in\u00a0[https://github.com/puppetlabs/puppetserver/blob/master/documentation/config_file_ca.markdown]\n\nIt sounds like the fix would solve the use cases. What I'm looking for in the documentation is information on whether or not it's possible to granularly authorize some users to sign certs without dns/auth extensions via tkauth. That would be a nice-to-have, not a requirement though.", "created": "2018-10-29T16:55:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There is a small mention of it here: https://puppet.com/docs/puppetserver/6.0/subcommands.html#signing-certs-with-sans-or-auth-extensions We are in the process of doing a major overhaul of the CA docs, hopefully that kind of thing will be easier to find once that's finished.\n\nCurrently it is not possible to make this granular per user via tk-auth. Signing (and revoking) in general is controllable per node via restricting or allowing access to the {{certificate-status}} endpoint, but currently the settings are the only way to control alt-names and auth extensions. We are looking into adding some RBAC integration into tk-auth, which would making signing/revoking controllable by user in PE. We also have https://puppet.atlassian.net/browse/SERVER-2318, which would enable some more granular control of those special attributes, but that feedback came in too late for Puppet 6 and now constitutes a breaking change, so will probably be a ways out.", "created": "2018-10-29T17:05:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "More docs: https://puppet.com/docs/puppetserver/6.0/config_file_ca.html#signing-settings\n\nAlso note that these settings also work in Puppet Server 5.3.6+ when signing via the API or {{puppetserver ca sign}} (they won't affect {{puppet cert sign}}).", "created": "2018-10-29T17:06:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Marking this closed as it is available in Puppet 6 and PE 2019.", "created": "2018-12-06T11:52:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2015-11-13T09:18:00.000000", "creator": "70121:9c658341-861b-467e-8f57-dfcff20944cb", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a8f4eea"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "5 - $$$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - 25-50% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This is an important consideration for many large customers. It impacts both automated provisioning of new PE infrastructure as well as having a story around autoscaling compile masters. As more customers move into the cloud the priority of this increases. We've heard of workarounds where the autosign script itself inspects the CSR for dns-alt-names and then shells out to \"manually\" sign the cert but those seem pretty dodgy."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - Serious"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylq27:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Nov/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2253687678_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_79246580675_*|*_10005_*:*_1_*:*_15190538458"}], "description": "Current autosign behavior blocks entirely if a csr is submitted with a dns alt name. This complicates scenarios where we want to rapidly provision compile masters or deal with better automation around failover.\n\nEnabling the current autosign process to all of a sudden start signing certificates with alt names would be a disruptive behavior, however if we could specify a different policy signer for csr's containing alt_names, or more granularly, specify autosigners based on csr_attributes, then it would be possible to securely automate provisioning of PE Infrastructure nodes (compile masters, puppetdb replicas, etc) by giving the hooks needed to route requests to get a sign a certificate for a compile master with dns_alt_names to a PE specific autosigner, etc.\n\nNote that in addition to DNS Alt Names ({{puppet cert sign --allow-dns-alt-names}}), Puppet Certificate Authorization Extensions ({{puppet cert sign --allow-authorization-extensions}}) should also be resolvable with a policy autosigner.", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "17049", "fixedVersions": [], "id": "17049", "issueType": "Improvement", "key": "SERVER-1005", "labels": ["ca", "cstop10"], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:9c658341-861b-467e-8f57-dfcff20944cb", "resolution": "Fixed", "resolutionDate": "2018-12-06T11:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "It should be possible to specify a policy autosigner for certs with altnames, auth extensions", "timeSpent": "PT0S", "updated": "2018-12-06T11:52:00.000000", "votes": "5", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-11-11T09:42:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@663f6df1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz32kf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2424675460_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_130627891527"}], "description": "It would be nice to have a test that validates that a user can modify the new TK auth.conf configuration so that agents can delete their own certificates.  See SERVER-857.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16204", "fixedVersions": [], "id": "16204", "issueType": "Task", "key": "SERVER-1003", "labels": ["QA"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2020-01-29T08:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create automated test to validate ability of agent to delete its own certificate", "timeSpent": "PT0S", "updated": "2020-01-29T08:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We want to try to get this into a 2015 sprint.  QA to look and use [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] for assistance if we get stuck.", "created": "2015-12-02T11:49:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I can't find a method in beaker code that specifically installs puppet-server on foss systems.  The install_puppet_on method in beaker installs an agent.  The puppet-server FOSS install then sets a manifest to install puppet server.\n\nSo, to handle the FOSS puppet-server install case, we will modify beaker to use set_etc_hosts or the stub_hosts_on method during puppet agent installs to point updates.puppetlabs.com to 127.0.0.1.\n\nTo handle the PE on systemd case, we will modify beaker to write out the opt-out file. ", "created": "2015-12-08T11:16:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "NOT using stub_hosts_on because it contains a teardown.  We want this setting to persist.  ", "created": "2015-12-08T11:24:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Earlier this week I thought that we used the beaker method install_utils::foss_util::install_puppet_on", "created": "2015-12-09T17:47:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[4:49 PM] John Duarte: Add a call to a dns entry method here:\u2028\t\thttps://github.com/puppetlabs/beaker/blob/master/lib/beaker/hypervisor.rb#L104\n[4:50 PM] John Duarte: Actual method would live here:\u2028\t\thttps://github.com/puppetlabs/beaker/blob/master/lib/beaker/host_prebuilt_steps.rb may be a good location to handle this problem.\n\nUsing the update proposed by John above, we can handle both the PE case and the FOSS case at provision time.", "created": "2015-12-09T17:53:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "BKR-237 has been merged.\n", "created": "2015-12-11T10:18:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] We've accomplished this by modifying beaker so that on vmpooler provision, the /etc/hosts file is modified to resolve updates.puppetlabs.com to 127.0.0.1.  This covers FOSS and PE.  This isn't released yet.\n\nI suggest perhaps we throw another follow on ticket that says once this change (in BKR-237) is in a released version of beaker, we can clean out the other pre-suites that make the same change above.\n\nIs there anything else you want done with this ticket before it is closed?  If not, I think we can close this.", "created": "2015-12-11T10:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I think that sounds fine.  My only question is: does it have to be limited to the vmpooler provisioning?  i.e. it won't work for EC2/GCE?", "created": "2015-12-11T11:46:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "IMO, we should do this during beaker's setup stage.  \nit should mock out the update server when a beaker-library for the mocking is installed/enabled. \nwe should do this with the forge as well, and it could all be part of a general beaker-puppetlabs-infra library.\ni'm thinking of spiking on this during QA tech-debt week.", "created": "2015-12-14T11:05:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I shouldn't have said vmpooler provision.  This modification works on all beaker supported hypervisor platforms.  [~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] This is already done.  See BKR-237 for details.", "created": "2015-12-14T12:29:00.000000"}], "components": [], "created": "2015-11-09T18:25:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e8d934"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo5mv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2480182094_*|*_10007_*:*_1_*:*_143601373_*|*_3_*:*_1_*:*_109539317_*|*_10009_*:*_1_*:*_267133345_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_2390990"}], "description": "We need to step through our tests in puppet-server and pe-puppet-server-extensions and ensure that we are not writing install numbers to the active production dujour server.\n\nThis is documented as fixed for PE, in BKR-182.  If possible, we need a beaker way of doing this for foss, (BKR-237.)\n\nFor puppet-server, we intend to accomplish this by calling to beaker::dsl::helpers::puppet_helpers.rb method stub_hosts_on.  (https://github.com/puppetlabs/beaker/blob/1a9784e9c8591d57227558e991c8f94db5269d61/lib/beaker/dsl/helpers/puppet_helpers.rb#L487-L513)\n\nCurrently, we are doing this for puppet-server at least:\nhttps://github.com/puppetlabs/puppet-server/blob/master/acceptance/suites/pre_suite/foss/85_configure_sut.rb#L4-L13\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17402", "fixedVersions": [], "id": "17402", "issueType": "Task", "key": "SERVER-1000", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2015-12-14T12:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ensure that our tests are not hitting the dujour server", "timeSpent": "PT0S", "updated": "2015-12-15T13:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-11-09T12:00:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a0ca51d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-1"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "(Burnside) Direct Puppet: Server Static Catalog"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_grey"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo6d3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_188458530_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_7338970379_*|*_10013_*:*_1_*:*_5353782455"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15840", "fixedVersions": [], "id": "15840", "issueType": "Epic", "key": "SERVER-999", "labels": ["Burnside"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-04-06T15:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "(Burnside) Direct Puppet: Server Static Catalog", "timeSpent": "PT0S", "updated": "2016-12-27T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] [~accountid:70121:daea3119-cdf4-43ae-bb73-2d9ef9d71335] : I'm trying to find some time to poke at this in the next few days.  I feel like both of you guys have probably messed around with this metrics stuff more recently than I have... any tips / prior art to share with me before I dive in?\n\nI know that, e.g., the metrics names have changed (especially the ones for the web routes), so I'll need to factor that in.  [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] did you end up with an updated grafana JSON file that accounts for that? \n\nI also feel like probably someone has a newer / better module for setting up graphite and grafana than the old one that I created when I first worked on this stuff... true or false?", "created": "2015-12-10T11:06:00.000000"}, {"author": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], unless he gets horribly swamped, [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] is going to take over this documentation since he's already handling server docs. Thanks. \n\nIf you need any help [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e], just let me know. ", "created": "2015-12-10T16:17:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Garrett has the info he needs.", "created": "2016-02-10T14:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "PR merged.", "created": "2016-03-28T15:26:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "{{grafanadash}} module update is live and Server team's completed its end of this ticket.", "created": "2016-04-04T12:10:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2015-11-09T11:08:00.000000", "creator": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70b9d9c1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynplz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2591649864_*|*_3_*:*_1_*:*_1217123356_*|*_4_*:*_1_*:*_15882_*|*_5_*:*_1_*:*_3809747866_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_844827224_*|*_10006_*:*_1_*:*_4237579847"}], "description": "I need some help updating the [graphing puppet server metrics|http://docs.puppetlabs.com/pe/latest/puppet_server_metrics.html] page. We've been carrying for a few releases now without any updates. \n\nI can work with you however you want on getting this updated. Thanks.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "17399", "fixedVersions": [], "id": "17399", "issueType": "Task", "key": "SERVER-998", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "resolution": "Fixed", "resolutionDate": "2016-04-04T12:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Help DOCS update PE Graphing Puppet Server Metrics Doc", "timeSpent": "PT0S", "updated": "2016-04-04T12:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-11-09T10:57:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59ffa687"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz30wf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1989957654_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_131231059388"}], "description": "The puppet-server foreground test originally had an assertion which checked to see that the service was shutdown gracefully after a SIGINT was performed.  This was removed in https://github.com/puppetlabs/puppet-server/pull/764 because it was found that, depending upon the OS and amount of time it takes for the puppetserver process to be shut down, that the puppetserver process might end up being killed before puppetserver's shutdown hooks were processed completely.\n\nThis appears to only be the case when SIGINT is sent to puppetserver on some OSes - specifically RedHat-based ones - from within the shell that spawns the process.  For example, I've found that a puppetserver which frequently did not shutdown cleanly when running puppetserver via {{timeout -s INT 60s puppetserver foreground --debug}} or by hitting CTRL-C in the terminal when running {{puppetserver foreground --debug}} will shutdown gracefully when {{puppetserver foreground --debug}} is run from one terminal session and {{kill -INT <proc_id>}} is run from another terminal.  Simulating this in a beaker test - e.g., by running {{puppetserver foreground}} in the background - would probably be tricky and not seemingly worthwhile.\n\n{{puppetserver foreground}} is ultimately intended to be used only for troubleshooting.  A more useful production workflow acceptance test would involve starting/stopping the puppetserver service through the service framework and confirming that all of the expected shutdown logic executes properly before the service is terminated.  This ticket would capture the work to be done to create such a test. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16203", "fixedVersions": [], "id": "16203", "issueType": "Task", "key": "SERVER-997", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2020-01-29T08:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create clean shutdown service framework acceptance test", "timeSpent": "PT0S", "updated": "2020-01-29T08:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c0ad3ee1b5a0070293186", "created": "2015-11-03T15:24:00.000000", "name": "hiera.yaml", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10646"}, {"attacher": "623c0ad3ee1b5a0070293186", "created": "2015-11-03T15:29:00.000000", "name": "puppetdb.pp", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10795"}, {"attacher": "623c0ad3ee1b5a0070293186", "created": "2015-11-03T15:27:00.000000", "name": "puppetserver.conf", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10725"}, {"attacher": "623c0ad3ee1b5a0070293186", "created": "2015-11-04T10:38:00.000000", "name": "puppetserverdump.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10647"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Can you attach a copy of your puppetserver.conf file and your hiera.yaml file?  The formatting seems to have gone a little wonky in the description field.", "created": "2015-11-03T15:20:00.000000"}, {"author": "623c0ad3ee1b5a0070293186", "body": "/etc/puppetlabs/code/environments/production/site/profile/manifests/puppetlabs/puppetdb.pp.  This file as part of IRC-based troubleshooting fails when it cannot discover the requested value.  I also tested a company-internal value listed in the common.yaml, it cannot find that either.", "created": "2015-11-03T15:30:00.000000"}, {"author": "623c0ad3ee1b5a0070293186", "body": "At Christopher Price's recommendation I tried the following command:\n{code}\n/opt/puppetlabs/server/bin/puppetserver ruby /opt/puppetlabs/puppet/bin/hiera -d puppetdb::master::config::puppetdb_server\n{code}\n\nThis yielded the correct value:\n{code}\nDEBUG: 2015-11-03 17:08:56 -0600: Hiera YAML backend starting\nDEBUG: 2015-11-03 17:08:56 -0600: Looking up puppetdb::master::config::puppetdb_server in YAML backend\nDEBUG: 2015-11-03 17:08:57 -0600: Looking for data source puppetlabs\nDEBUG: 2015-11-03 17:08:57 -0600: Found puppetdb::master::config::puppetdb_server in puppetlabs\npuppetdb\n{code}", "created": "2015-11-03T16:10:00.000000"}, {"author": "623c0ad3ee1b5a0070293186", "body": "As requested I copied the /etc/puppetlabs/code/hiera.yaml into /etc/puppetlabs/code/environments/production/hiera.yaml, restarted the puppetserver, no change.", "created": "2015-11-03T16:15:00.000000"}, {"author": "623c0ad3ee1b5a0070293186", "body": "As suggested first thing tomorrow I'm going to test:  puppet agent -t --masterport 8141\n", "created": "2015-11-03T16:28:00.000000"}, {"author": "623c0ad3ee1b5a0070293186", "body": "Discovered at least SOME progress, the /etc/puppetlabs/code/hieradata and files therein were permission codes 700 and 600 respectively, owned by root.  In Puppet 4 it by default runs at the puppet user and did not seem to have access to those files.  After setting the directory to 750 and the files to 640 and changing the group to puppet, there seems to be some progress.\n\nUnfortunately, there seems to be another error.  When running Puppet Agent as before there seems to be an issue reading the hiera data:\n{code}\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Error from DataBinding 'hiera' while looking up 'ntp::autoupdate': undefined method `empty?' for nil:NilClass at /etc/puppetlabs/code/environments/production/site/profile/manifests/ntp.pp:2:3 on node puppetserver\n{code}\n\nAlternately I've also received this error:\n{code}\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Error from DataBinding 'hiera' while looking up 'ntp::autoupdate': (<unknown>): found character   '\\t(TAB)' that cannot start any token. (Do not use \\t(TAB) for indentation) while scanning for the next token at line 9 column 19 at /etc/puppetlabs/code/environments/production/site/profile/manifests/ntp.pp:2:3 on node puppetserver\n{code}", "created": "2015-11-04T09:45:00.000000"}, {"author": "623c0ad3ee1b5a0070293186", "body": "Uploaded dump from /opt/puppet/server/bin/puppetserver foreground --debug.", "created": "2015-11-04T10:30:00.000000"}, {"author": "623c0ad3ee1b5a0070293186", "body": "Figured it out!  YAML supports tabs naturally but Hiera *DOES NOT*.  As a result you *absolutely* need to run {code}grep -P '\\t' *{code} on the directories containing hiera YAML files.\n\nUpon converting the tabs to spaces, it works perfectly now.  Thank you so much for all your help!", "created": "2015-11-04T11:04:00.000000"}, {"author": "623c0ad3ee1b5a0070293186", "body": "Discovered the problem was a mix of directory permission, file permission, and tabs-in-YAML-files issues.", "created": "2015-11-04T11:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks, [~accountid:623c0ad3ee1b5a0070293186]!  Glad you got it resolved.", "created": "2015-11-04T14:11:00.000000"}], "components": ["Puppet Server"], "created": "2015-11-03T15:13:00.000000", "creator": "623c0ad3ee1b5a0070293186", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e32ebac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2xf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_74336153_*|*_5_*:*_1_*:*_28330820704_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_5308"}], "description": "Puppet Server does not seem to be reading values from Hiera.  Setup is an install of Puppet 4 and Puppet Server 2.1.1 on Ubuntu 14.04.  Discovered values were not being read when configuring PuppetDB on a second node.\n\nFilling out the requested information in an file /etc/puppetlabs/code/hieradata/puppetlabs.yaml for the class and listing that file in the /etc/puppetlabs/code/hiera.yaml does NOT produce the variables in question for the class.\n\nWhen testing hiera with Puppet 4 directly via \"/opt/puppetlabs/bin/puppet apply -e '$x = hiera(puppetdb::master::config::puppetdb_server) notify { $x: }'\" it works just fine, retrieves the variable value.  When restarting Puppet Server and running \"puppet agent --test\" it does not retrieve the value.\n\nConfiguration data is as follows:\nPROFILE:\n--------\n{code}\nclass profile::puppetlabs::puppetdb::server {\n  class { 'puppetdb::database::postgresql': }\n  class { 'puppetdb::server': }\n}\n \nclass profile::puppetlabs::puppetdb::master {\n  class { 'puppetdb::master::config': }\n}\n{code}\n \nROLE:\n-----\n{code}\nclass role::management::puppetmaster {\n  include profile::base\n  include profile::ntp\n  include profile::puppetlabs::puppetdb::master\n}\n \nclass role::management::allocator {\n  include profile::base\n  include profile::ntp\n  include profile::puppetlabs::puppetdb::server\n}\n{code}\n \nMANIFESTS:\n----------\n{code}\nnode puppetserver {\n  include role::management::puppetmaster\n}\n \nnode puppetdbhost {\n  include role::management::allocator\n}\n{code}\n \npuppet.conf:\n------------\n{code}\n# This file can be used to override the default puppet settings.\n# See the following links for more details on what settings are available:\n# - https://docs.puppetlabs.com/puppet/latest/reference/config_important_settings.html\n# - https://docs.puppetlabs.com/puppet/latest/reference/config_about_settings.html\n# - https://docs.puppetlabs.com/puppet/latest/reference/config_file_main.html\n# - https://docs.puppetlabs.com/references/latest/configuration.html\n[master]\nvardir = /opt/puppetlabs/server/data/puppetserver\nlogdir = /var/log/puppetlabs/puppetserver\nrundir = /var/run/puppetlabs/puppetserver\npidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid\ncodedir = /etc/puppetlabs/code\ndns_alt_names = puppetserver\n \n[main]\nserver = puppetserver\n{code}\n \n/etc/puppetlabs/code/hieradata/puppetlabs.yaml:\n-----------------------------------------------\n{code}\n---\npuppetdb::server::database_host:                'puppetdb'\npuppetdb::database::postgresql::listen_address: 'puppetdb'\npuppetdb::master::config::puppetdb_server:      'puppetdb'\n{code}\n \n/etc/puppetlabs/code/hiera.yaml:\n--------------------------------\n{code}\n---\n:backends:\n  - yaml\n:hierarchy:\n  - puppetlabs\n  - common\n \n:yaml:\n# datadir is empty here, so hiera uses its defaults:\n# - /etc/puppetlabs/code/environments/%{environment}/hieradata on *nix\n# - %CommonAppData%\\PuppetLabs\\code\\environments\\%{environment}\\hieradata on Windows\n# When specifying a datadir, make sure the directory exists.\n  :datadir: /etc/puppetlabs/code/hieradata\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17048", "fixedVersions": [], "id": "17048", "issueType": "Bug", "key": "SERVER-996", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0ad3ee1b5a0070293186", "resolution": "Fixed", "resolutionDate": "2015-11-04T11:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server is not loading Hiera values", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:6243b143f3824d006a579629] Puppet Server 1.1.1 does not have support for Puppet 4.x agents.  You'll need to upgrade to the Puppet Server 2.x series - latest is 2.1.2.  Can you confirm if that addresses the issue you are seeing?", "created": "2015-10-31T17:08:00.000000"}, {"author": "6243b143f3824d006a579629", "body": "Okay, thanks for that pointer!\n\nI figured it was something like that but the message did a very poor job of explaining that and my Googling did little to reveal the truth.  I had browsed the yum repos via a browser and it looked like the latest was puppetserver-1.1.2 which didn't seem different enough.  However, given your hint above, I now see the whole deal with PC1 and realize I was just looking in the wrong directory.  Are the contents in \"products/\" just going to grow old now where everything fresh going into a PC?\n\nI'm going to try migrating my Puppet Server over to EL7 and will give the 2.x series a shot.", "created": "2015-10-31T18:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] suggested that perhaps, if we do another 1.x release in the future, we could add code to catch the new puppet 4 URLs and log a more useful error message.", "created": "2015-11-04T11:27:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Are the contents in \"products/\" just going to grow old now where everything fresh going into a PC?{quote}\n\n[~accountid:6243b143f3824d006a579629] - yeah, my understanding is that for the Puppet 4+ ecosystem going forward - which includes the new puppet-agent and Puppet Server 2.x - that the PC repos are where the packages are going to be delivered.\n\nWould still be interested in hearing if the problem you were seeing was resolved by upgrading your Puppet Server to a 2.x series release.", "created": "2015-11-04T11:53:00.000000"}, {"author": "6243b143f3824d006a579629", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I'll try to get that info along soon.  Since I didn't see any full support (including PuppetDB) of Fedora in the PC repos I had to redo lots of work (like porting ALL of my 53 modules) getting my Puppet Server atop CentOS 7.  That's done now so I've more or less achieved parity with where I'd been atop Fedora, but I've yet to move it to the PC repos -- it's still running Server 1.1.2.", "created": "2015-11-04T14:36:00.000000"}, {"author": "6243b143f3824d006a579629", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] & [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] -- regarding the old \"products/\" directories, it would be immediately helpful to plop down a few prominent README's directing folks to the announcements regarding PC replacing the legacy stuff.  I recall reading about it when first announced via your blogs but then completely forget about it.  This might help prevent some confusion until/if another 1.x release can help better explain the problems.  None of this should be an issue for anyone who's proactively managing their infrastructure as a daily dev-ops job, but when you're doing a zillion other jobs (i.e., I'm a reactive puppet administrator) it can be too easy to lose track of what's going on and why strange things start happening.  The \"v1\" bit in the URL causing the 404 actually provided me a clue, but it would have been more obvious if it said \"v2\" -- I guess the first round of the API was retroactively named v0???\n\nI don't mean any of this as harsh criticism, but rather as constructive feedback from a user since the v0.24 days that has drank the cool-aid, become a believer in repeatable system configurations who'd also like to squeeze a bit more productiveness out of the whole arrangement.", "created": "2015-11-04T14:49:00.000000"}, {"author": "6243b143f3824d006a579629", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I now have PupperServer 2.1.2 installed and serving all my clients, including the Fedora 22 box (more or less).  While I can't fully support F22 yet due to a need to update many of my modules (e.g., to handle Fedora's move from yum to dnf), I no longer see the 404 error.  Thus, I think this issue can be closed AFAIC.\n\nThanks again for the pointers!", "created": "2015-11-06T10:32:00.000000"}], "components": ["Puppet Server"], "created": "2015-10-31T15:33:00.000000", "creator": "6243b143f3824d006a579629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a21cf78"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2vpb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_334474896_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_71973323678"}], "description": "I have puppetserver-1.1.1-1.fc20.noarch installed and running on a Fedora 20 host that has been serving me well.  Today I tried to bring up a Fedora 22 client with puppet-4.1.0-5.fc22.noarch and when I do my first run to push a CSR I get the following:\n\n{{[root@ophelia ~]# puppet agent --test \nError: Could not request certificate: Find /puppet-ca/v1/certificate/ca?environment=production&fail_on_404=true resulted in 404 with the message: <html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\"/>\n<title>Error 404 </title>\n</head>\n<body>\n<h2>HTTP ERROR: 404</h2>\n<p>Problem accessing /puppet-ca/v1/certificate/ca. Reason:\n<pre>    Not Found</pre></p>\n<hr /><i><small>Powered by Jetty://</small></i>\n</body>\n</html>\n\nExiting; failed to retrieve certificate and waitforcert is disabled}}\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15010", "fixedVersions": [], "id": "15010", "issueType": "Bug", "key": "SERVER-995", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243b143f3824d006a579629", "resolution": "Fixed", "resolutionDate": "2018-02-14T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Agent cannot submit a CSR -- results in a 404", "timeSpent": "PT0S", "updated": "2018-02-14T12:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-10-30T13:00:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@341fdc09"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotvz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_429852885_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_71970935940"}], "description": "This log message ... \n{noformat}\n2015-10-30 11:20:26,424 INFO  [clojure-agent-send-off-pool-27] [p.s.j.puppet-environments] Marking all registered environments as expired.\n{noformat}\n... could use some improvement.\n\nFirst of all, it is logged per-JRuby, and that's confusing - it looks like the cache is being invalidated N times (where N is the number of JRubies); and technically, it *is*, since the caching is per-JRuby; but if you just see a block of those messages go by, it can be confusing - especially so for an end-user who might not understand the guts of Puppet Server.\n\nSo, perhaps it should only be logged once at INFO level for the entire operation, and the per-JRuby messages could be bumped down to DEBUG.  It would also be clearer if they mentioned that they were per-JRuby, perhaps by including the JRuby instance ID.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14749", "fixedVersions": [], "id": "14749", "issueType": "Improvement", "key": "SERVER-994", "labels": ["low-hanging-fruit", "puppethack", "server"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Fix", "resolutionDate": "2018-02-14T11:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Log message about environment cache invalidation needs improvement", "timeSpent": "PT0S", "updated": "2018-02-14T11:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623a44978d8b9c0068b7e126", "attachments": [{"attacher": "623a44978d8b9c0068b7e126", "created": "2015-10-28T04:20:00.000000", "name": "debug_puppetserver", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10936"}, {"attacher": "623a44978d8b9c0068b7e126", "created": "2015-11-23T02:00:00.000000", "name": "performance.tgz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10566"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2015-12-02T13:20:00.000000", "name": "puppet-server-release.jar.part-aa", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11185"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2015-12-02T13:20:00.000000", "name": "puppet-server-release.jar.part-ab", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11106"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2015-12-02T13:20:00.000000", "name": "puppet-server-release.jar.part-ac", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11024"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2015-12-02T13:20:00.000000", "name": "puppet-server-release.jar.part-ad", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10937"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2015-12-02T13:20:00.000000", "name": "puppet-server-release.jar.part-ae", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10867"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2015-11-24T17:43:00.000000", "name": "site.zip", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11183"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] one idea to help narrow it down might be to run `puppet master --compile` for a given node, both in your old Puppet 3.x environment and then in your new Puppet 4.x environment.  This might help determine whether the webserver has anything to do with the compilation times or not.", "created": "2015-10-28T09:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] just in case you recognize these error messages.", "created": "2015-10-28T11:23:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Two regressions were found in versions after 3.7.5 that will be fixed in 3.8.4. \n\nOne regression was that file watching was accidentally turned on for files in directory environments. That coupled with the changed behavior in directory environments caused a lot of overhead.\n\nThe other was about excessive calls to check if future parser is in effect or not. This code is refactored in 3.8.4 which resulted in far fewer loads of environment.conf. The slowdown is irrespective of if future parser is in use or not. It also depends on what are in the manifests.\n\n", "created": "2015-10-28T12:29:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Those problems would not affect Puppet 4.x though as both concepts are gone (there is only one parser, and only directory environments, and file watching have been removed).", "created": "2015-10-28T12:30:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "On 3.x - was future parser in use or not? I would expect a small speedup between 3.x future parser and 4.x.", "created": "2015-10-28T12:32:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I know there is a bug reported about accuracy of puppet compile profiling information (there are steps missing in the output on 4.x) - we hope to get that fixed before 4.3.0 release.", "created": "2015-10-28T12:33:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\nOn puppet 3 :\nfor a given node not already migrated passenger shows \"Compiled catalog in 0.56 seconds\"\nfor the same node with command puppet master --compile  shows \"Compiled catalog in 11.98 seconds\"\n\n\nOn puppet 4 :\n\n= Puppetserver\nfor a given node show \"Compiled catalog in 27.25 seconds\"\nand with puppet master --compile  \"Compiled catalog in 7.05 seconds\"\n\n\nFor information, due to these poor performance I installed this morning a new server on puppet4 but using passenger (5.0.21) instead of puppetserver, to compare performance in my case\nAnd the performances are around 3 times faster on passenger. I don't know how to explain this.\nAlso, I don't understand the 0.xx compilation time I have on puppet3 and not on puppet4\n\n= Puppetmaster on passenger\nfor a given node \"Compiled catalog in 6.20 seconds\"\nand with puppet master --compile \"Compiled catalog in 9.27 seconds\"\n\n\n\n[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd]\n\nMy puppet 3 server is 3.7.4 with passenger-4.0.56, future parser isn't activated.\n", "created": "2015-10-29T05:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] OK, that seems like an issue that we'd definitely like to dig into on the server side.\n\nOur best chance of being able to sort this out would be if we are able to create a repro case on our side", "created": "2015-10-29T09:10:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n\nI finally found exactly where the performance issue is.\nThis isn't with our modules code because I tried this on a new raw environment :\n\n- my test node\n- adding modules one by one to find which cause the bottleneck\n\nNo results... compilation in less than 1 second with all of our modules.\n\nSo I added \n- all nodes manifest\n\nAnd now, again, 30seconds of compilation.\n\nSo the problem is :\n- 12 node manifests (very different sizes)\n- 790 nodes declarations\n- 69041 lines non-empty, non-commented\n\nWhich takes at least 20seconds to puppetserver to parse it\n\nI don't really know how to optimize this... I thought about modules just like you suggest, but nodes, this is unexpected.", "created": "2015-10-30T03:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "That's very interesting.  [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] do you do any caching of the nodes / site.pp manifest?  Is it possible that somehow we aren't leveraging the caching of that on Puppet Server?\n\n[~accountid:623a44978d8b9c0068b7e126] I wonder if we could just substitute in some 'notify' resources in place of all of your real classes in your `site.pp` file, so that it wouldn't have any dependencies at all on module code, and see if compiles are still slow.  If they are, then perhaps you could send us the site.pp file so we'd have a concrete example for us to do some testing against?", "created": "2015-10-30T08:52:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "With directory based environments, I think the effect is that there is no caching of the site manifest. \n\nA work around would be to break out the 69000 lines of code in the site manifest and place that in classes. That would also reduce the amount of time it takes for the cold run (since not all of the node logic would be used at the same time).", "created": "2015-10-30T08:59:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "Hi, sorry for the time since this answer...\n\nSo I tried some other tests : \n\n1 - I tried the suggestion of [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] to manage the 70000 lines of code within node manifests by replacing all declarations just with one class for each node\n\nSame performances at all\n\n2 - Then I tried the suggestion of [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] to replace all classes content by  :  notify{\"$name\":}\n\nSame performances at all\n\n3 - Finally I tried both at the same time (only one class for each node, and each class contain only notify) \n\n1 second to compile.\n\n\nSo It really seems that the combination of number of nodes and number of elements in classes is the concrete drawback in this case.\nBut, It doesn't explain why I don't have this problem with Passenger, which I have installed in production now, because it can handle enough nodes and java don't.\n", "created": "2015-11-18T01:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] thanks for the additional info.  This is definitely something we'd like to investigate on our end.\n\nCan you provide a few more details on your Passenger setup?  Is it using the same version of Puppet, and the same exact directory of manifest/module code, as your Puppet Server setup does/did?\n\nAlso, would it be possible for you to share the version of your site.pp that you used for #2 above, where it's just got all of the 'notify' resources in it?  It seems like that would accelerate our ability to set up a repro case on our end.", "created": "2015-11-18T13:24:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:623a44978d8b9c0068b7e126] I am interested in how you organized the breakout of the code. For what I envisioned being relevant, only nodes, and no classes at all would be in the site wide part of the logic and all classes being autoloaded. Could you elaborate on how you organized the experiments?", "created": "2015-11-18T16:18:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Sorry, I have misunderstood your suggestion and my #2 test is a replacement of the content of all \"init.pp\" for all classes\nSo I made a new test, as your suggestion in site.pp with no classes but only notify for each node\n\nResult = 2s of compilation\n\n\nAnd of course I used the exact same code for my tests.\n\n{noformat}\nMy passenger setup is :\nCentos-7.1.1503\n\n# yum \nApache 2.4.10\npuppetlabs-release-pc1 1.0.0-1\npuppet-agent 1.2.7-1\npuppetdb-termini 3.2.0-1\n\n#gems\nbigdecimal (1.2.4)                                                                                                                                                                                                                           \ndeep_merge (1.0.1)                                                                                                                                                                                                                           \nhocon (0.9.3)                                                                                                                                                                                                                                \nio-console (0.4.3)                                                                                                                                                                                                                           \njson (1.8.1)                                                                                                                                                                                                                                 \nminitest (5.8.2, 4.7.5)                                                                                                                                                                                                                      \nnet-ssh (3.0.1, 2.9.2)                                                                                                                                                                                                                       \npassenger (5.0.21)                                                                                                                                                                                                                           \npower_assert (0.2.5)                                                                                                                                                                                                                         \npsych (2.0.5)                                                                                                                                                                                                                                \nrack (1.6.4)                                                                                                                                                                                                                                 \nrake (10.1.0)                                                                                                                                                                                                                                \nrdoc (4.1.0)                                                                                                                                                                                                                                 \nrubygems-update (2.4.8)                                                                                                                                                                                                                      \nstomp (1.3.4, 1.3.3)                                                                                                                                                                                                                         \ntest-unit (3.1.5, 2.1.7.0)\n\n#Tuning Apache\nStartServers 32\nServerLimit 128\nMaxClients 128\nMaxRequestsPerChild 1000\nThreadsPerChild 32\nKeepAlive On\nKeepAliveTimeout 15\nMaxKeepAliveRequests 100\n\n#Tuning Passenger\nPassengerMaxPoolSize 128\nPassengerMaxRequests 1000\nPassengerStatThrottleRate 30\nPassengerPoolIdleTime 300\nPassengerHighPerformance on\nPassengerMinInstances 32\n{noformat}\n\nMy site.pp is really simple in sense I made it by a script.\nOnly one true machine on this environment for my test, you can create the 794 fake nodes just as me by this simple template, a simple for loop will do the trick\n\n{noformat}\nnode \"host${i}.toto.com\" {\n  notify {\"$name\":}\n}\n{noformat}\n\nBut since I tried your suggestion correctly, there is no real problem here.\n", "created": "2015-11-19T01:21:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] There is the ordering of my experiments \n\n#1\nThinking problem is about the way our classes are made, I have create a raw environment, with 1 node, and adding classes slowly to see if compilation time grows.\nNo changes at all.\n\n#2\nThen I thought the problem is about nodes, so I've added my differents nodes.pp files, one by one.\nThere I see the compilation time growing next to each node file declaration I add.\n\n#3\nThen I tried your suggestion, by shorten the nodes definitions, and I made just ONE class declaration on all of my nodes (class which calls some others to manage system basics : crond, ntp, ssh_keys, editors...etc..) with no parameters.\nNo changes at all\n\n#4 Then I tried to shorten my classes, but using full nodes definitions (many classes, many objects).\nSo I replaced ALL code in init.pp and in some of defined types and sub-classes (and just init.pp, I dont removed templates and parameters) with a notify.\n{noformat}\nclass toto (\n  parameter1 => false,\n  ....\n) {\n  notify {\"$name\"':}\n}\n{noformat}\n\nNo changes at all... Which surprises me\n\n#5 Then I tried the combination of #3 and #4 : Only one class for each node and all classes just containing a notify\n1second to compile\n\n#6 Then I tried the suggestion of [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] : Only notify for each node without any call to any classes. Same result if classes are normal or modified like #4\n1 second to compile\n", "created": "2015-11-19T01:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] thanks...\n\n{quote}\nOnly one true machine on this environment for my test, you can create the 794 fake nodes just as me by this simple template, a simple for loop will do the trick\n\nnode \"host${i}.toto.com\" {\n\n  notify {\"$name\":}\n\n}\n\nBut since I tried your suggestion correctly, there is no real problem here.\n{quote}\n\nCan you suggest a modification to the script that you describe above that would generate something that *does* reproduce the issue for you?  It sounds like instead of the notify I'd just be putting in an {{include toto}}?, and that the {{toto}} class could just have a notify?  If that is the case, is {{toto}} the same class for each node?  Or do you have a unique class name for each node?\n\nOr if you can share the site.pp and classes from your #4 above in a tarball or something, that seems like it would allow us to repro on our end.", "created": "2015-11-19T07:14:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "Test environment to reproduce performance difference between puppetserver and puppetmaster", "created": "2015-11-23T02:01:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "Hello,\n\nSo I managed to reproduce the problem with community modules, and following my previous tests I have done, where I really tried to find the bottleneck in our code, it seems that the performance problem is also seen with community modules.\n\nAs an attachment you can find an environment with 36 modules (our have 97) and 1000 nodes (1 true for test at first line, 999 generated by script, containing only class calls).\nUsing puppetserver I have this result : \n\nINFO  [puppet-server] Puppet Compiled catalog for mytrue_vm_test.com in environment performance in 19.33 seconds\n\nAnd with puppet master --compile :\n\nNotice: Compiled catalog for mytrue_vm_test.com in environment performance in 6.40 seconds\n\n", "created": "2015-11-23T02:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I may have been able to reproduce the problem locally with this example.  I used the {{puppet module tool}} to load the latest versions of many of the same community modules as were included in the attached tarball.  The tool encountered conflicts with some of the modules but also ended up recursively loading some additional modules that weren't in the tarball.  In total, I ended up with 49 modules being loaded.  I also created a site.pp, attached, which looks a lot like the one that [~accountid:623a44978d8b9c0068b7e126] had uploaded - with one node resource including just the {{apache}} class and 999 others including a named class matching the corresponding module.\n\nWith this manifest and modules loaded, I did a few agent runs against a puppetserver 2.2.0 master vs. a WEBrick-hosted Ruby 4.3.0 puppet master on a CentOS 7 VM.  Note that the Ruby puppet master was being run under the bundled MRI Ruby 2.1.7.  puppetserver runs JRuby under Ruby 1.9.3.\n\nI looked for the \"Compiled catalog for ... in environment production in X seconds\" message to see how long the catalog compiles were taking.  On average, the runs against the puppetserver 2.2.0 master were taking about 12 - 15 seconds vs. just 5 - 5.5 seconds for the WEBrick master.  With some extra instrumentation added to the Ruby Puppet code, I was able to see that the big difference in performance between the puppetserver and WEBrick-hosted masters was the amount of time taken behind the {{yyparse}} call that occurs here - https://github.com/puppetlabs/puppet/blob/4.3.0/lib/puppet/pops/parser/parser_support.rb#L242 - when parsing the {{site.pp}} manifest for {{known_resource_types}}.\n\nFrom this, I created the following stripped down Ruby script:\n\n{code:ruby|title=doparse.rb}\nrequire 'benchmark'\n\nrequire 'puppet'\nrequire 'puppet/pops'\n\nfile_to_parse = 'site.pp'\n\ncnt = 1\nif ARGV.length > 0\n    cnt = Integer(ARGV[0])\nend\n\nparser = Puppet::Pops::Parser::Parser.new()\n\ntotal = 0\n\ncnt.times do |i|\n    elapsed = Benchmark.realtime { parser.parse_file(file_to_parse) }\n    puts \"parse #{i+1}: #{elapsed}\"\n    total += elapsed\nend\n\nputs \"mean: #{total/cnt}\"\n{code}\n\nI then ran the following:\n \n{noformat}\n> RUBYLIB=/opt/puppetlabs/puppet/lib/ruby/vendor_ruby /opt/puppetlabs/puppet/bin/ruby ./doparse.rb 50\n...\nmean: 2.738 seconds  \n\n> /opt/puppetlabs/server/bin/puppetserver ruby doparse.rb 50\n...\nmean: 8.705 seconds\n{noformat}\n\nI also ran this command against a few different versions of ruby under rbenv on my OSX laptop, using the {{jruby}} executable for runs under JRuby, as opposed to with the {{puppetserver}} wrapper.  For this set of tests, I ran Puppet from source at the 4.3.0 git tag.  The JRuby runs were faster in this case.  Not sure if that's due in part to the JRuby executable not having to go through a {{ScriptingContainer}} like we do for Puppet Server - or maybe in part that I was running natively as opposed to going through a VM like I did with CentOS 7?  In any event, I did still see a significant discrepancy across 50 {{site.pp}} parses from an MRI-based Ruby as opposed to JRuby:\n\n| version | mean time |\n| --------- | --------------- |\n| MRI 1.9.3 | 3.014 seconds |\n| MRI 2.1.0 | 2.678 seconds | \n| JRuby 1.7.20 (emulating Ruby 1.9.3) | 5.495 seconds |\n| JRuby 1.7.22 (emulating Ruby 1.9.3) | 5.398 seconds |\n| JRuby 9.0.4.0 (emulating Ruby 2.2.2) | 4.886 seconds |\n\nNot sure at this point if this suggests that there are significant differences between the JRuby and MRI Ruby versions of Racc::Parser for parsing this particular kind of manifest file for some reason?  The next step may to instrument deeper into the Racc parsing to see where the bottleneck may be.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] or [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] - what do you think?", "created": "2015-11-24T17:40:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "MRISeems to be a known problem: http://osdir.com/ml/lang.jruby.user/2008-05/msg00279.html (note the year). \nMRI uses a native driver. If the JRuby Racc is written in Java I am not surprised. There seems to be a native extension since 2014. https://twitter.com/jruby/status/504323381509255168. \n\nThere is back and forth on this ticket (2013/2014) https://github.com/tenderlove/racc/issues/22\n\nAs usual in the Ruby world, the information and release notes are pretty terrible. I failed to get any good information on the state of racc on jruby.\n\nAre we sure we are using the native Racc extension on JRuby ? (Not that I know how to check...)", "created": "2015-11-24T19:14:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "FWIW, I tested this with jruby and racc 1.4.14 which incorporates the PR mentioned in [Racc issue 22|https://github.com/tenderlove/racc/issues/22]. I verified that it indeed is using the cparse-jruby.jar. Problem is, I don't see any performance boost compared to racc 1.4.11 where that change isn't present. When running profiling it seems most of the time is spent in {{Puppet::Pops::Parser::Lexer2#lex_token}} but I'm not sure whether the profiler includes time spent in native methods or not.\n\nI looked at the culprit lex_token method and my qualified guess is that the optimizations made there can be part of the problem. While they provide great results on the MRI, some of them may actually be really bad for the jruby machine.\n\nI'll make a minor effort just to check if this theory holds true.", "created": "2015-11-26T14:07:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "I did the aforementioned minor effort and it gave some promising results. Attached as [PR-4470|https://github.com/puppetlabs/puppet/pull/4470] on PUP-5554. Would be great if someone could test that to verify it's impact on this issue.", "created": "2015-11-27T03:38:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "The 'doparse.rb' attached in a previous comment needs to be modified to really parse all pp files found in an environment. At present, it will only parse one file (the 'site.pp'). The parser doesn't automatically load referenced classes.\n\nI added this piece of code to really parse everything. It doesn't care about settings. It just assumes that all modules reside beneath the environment:\n{code}\nrequire 'benchmark'\n \nrequire 'puppet'\nrequire 'puppet/pops'\n \n\ncnt = 1\nif ARGV.length > 0\n    cnt = Integer(ARGV[0])\nend\n\nenv_to_parse = '/etc/puppetlabs/code/environments/production'\nif ARGV.length > 1\n    env_to_parse = ARGV[1]\nend\n\nparser = Puppet::Pops::Parser::Parser.new()\n \ntotal = 0\n \nDir.chdir(env_to_parse)\ncnt.times do |i|\n    elapsed = 0\n    Dir.glob('**/*.pp') do |file|\n        elapsed += Benchmark.realtime { parser.parse_file(file) }\n    end\n    puts \"parse #{i+1}: #{elapsed}\"\n    total += elapsed\nend\n \nputs \"mean: #{total/cnt}\"\n{code}", "created": "2015-11-28T09:22:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "Some additional info that might be valuable.\n\nI tested with:\n{code}\nexport JRUBY_OPTS=\"-Xcompile.invokedynamic=true\"\n{code}\nand got very interesting results. The initial iterations takes longer but interesting things happen when JIT really kicks in. The iterations are now 25% faster on average and 15% faster than MRI.\n\nTypical run with above option and JRuby:\n{code}\nparse 1: 11.730755757999873\nparse 2: 6.260041269999874\nparse 3: 5.014679593001688\nparse 4: 4.05624749100059\n...\nparse 16: 3.0298004719992377\n...\nparse 37: 2.927366432998383\n...\nparse 64: 2.875723538999864\n{code}\nFrom there on the optimization seems to be complete.\n\nSame run with MRI (2.2.1)\n{code}\nparse 1: 3.822166640006344\nparse 2: 3.5026318540012653\n...\nparse 16: 3.4431655680054973\n...\nparse 64: 3.4878210889987713\n{code}\n", "created": "2015-11-29T07:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] thanks for looking into this.  I have a few questions:\n\n1. Is the relevant code here only used for parsing the site.pp file?  Or for parsing all Puppet code?  If it's used for parsing all puppet code, then do we feel like we understand why [~accountid:623a44978d8b9c0068b7e126] was only seeing these performance issues with certain variants of his site.pp?  Does that have to do with environment caching?\n2. Do you see the performance benefit from {{invokedynamic}} without the linked PR against Puppet?  Or do we need that patch before we can get the performance improvement?\n3. Conversely, do you have any data on the performance improvements with *just* your Puppet patch, and without {{invokedynamic}}?", "created": "2015-11-30T09:44:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "1. I adjusted the code to parse all files. The problem is apparent both when just parsing the site.pp and when parsing all code but it is more apparent when parsing all code. I can't see that the problem is tied to certain code variants.\n2. {{invokedynamic}} will give a boost without the fix too. About 20%.\n3. Just the puppet patch will yield about 55% better performance (i.e. it executes in 45% of the time). The numbers noted in the PR description are without {{invokedynamic}}.\n", "created": "2015-11-30T10:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] ok, thanks.\n\n[~accountid:623a44978d8b9c0068b7e126] if you are interested in trying out either or both of those suggestions, we'd love to hear your results.  The {{-Xcompile.invokedynamic=true}} can just be added to the java opts in, e.g. {{/etc/sysconfig/puppetserver}}.  For the Puppet code changes in PUP-5554 you'd need to take the patch from that PR and apply it to your local Puppet ruby code, or, alternately you could check out that git branch and point puppet server to the source code by modifying the {{ruby-load-path}} setting in {{puppetserver.conf}}.  If you're interested in trying that out but need any help figuring out how to set up, let us know and we can provide more detailed instructions.", "created": "2015-11-30T10:27:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "I updated PUP-5554 with [PR-4476|https://github.com/puppetlabs/puppet/pull/4476] which targets stable instead of master.", "created": "2015-12-01T06:06:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] So following your suggestion I tried out both :\n\nWith PR-4476 :\n1 : 26.29s\n2 : 15.85s\n3 : 17.75s\n4 : 17.78s\n5 : 19.53s\n6 : 18.20s\n\nSo,  around 20% better.\n\n\nBut still so far from passenger :\n1 : 7.46\n2 : 7.16\n3 : 5.43\n4 : 5.01\n5 : 5.64\n6 : 5.23\n\n\n\nWith -Xcompile.invokedynamic=true the puppetserver dont start, no usefull information in log, even in debug mode.\n", "created": "2015-12-01T07:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] whoops, my fault.  Can you try {{-Djruby.compile.invokedynamic=true}} as the JVM arg?", "created": "2015-12-01T07:52:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I tried with java option :\n\n1 : 23.98\n2 : 17.68\n3 : 17.63\n4 : 20.11\n5 : 21.21\n6 : 19.89\n\n\nAnd so I tried with both Java option and PR-4476\n1 : 20.58\n2 : 16.95\n3 : 17.21\n4 : 19.13\n5 : 16.91\n6 : 17.03\n\nSubstancial improvments indeed, but still far from Pupper master performance", "created": "2015-12-01T08:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] thanks.  These latest numbers you are showing in your last few comments - are they based on the site.zip file that you provided?", "created": "2015-12-01T08:28:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "yes, the 4 last tests I made are all with environment provided here\n", "created": "2015-12-01T08:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Great, then we should be able to dig in a bit deeper on our end.  Are the numbers you are quoting just coming directly from the log messages (e.g. `Puppet Compiled catalog for mytrue_vm_test.com in environment performance in 19.33 seconds`) under Puppet Server and Passenger respectively?\n\n[~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] were you using that same site.zip file for your parsing benchmarks?", "created": "2015-12-01T08:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] also what version of MRI ruby are you using in your passenger setup?", "created": "2015-12-01T08:40:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "Yes, I used the same zip. The major part of the performance diff must come from some place other than the parser.", "created": "2015-12-01T08:41:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yes, all my results come from puppetserver.log and puppetmaster.log\nBut dont have any idea how to get MRI ruby version, my ruby is : ruby 2.1.6p336 (2015-04-13 revision 50298) [x86_64-linux] \nBut said in ticket environment, I suppose you need something else ?\n\n", "created": "2015-12-01T08:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] no, sorry, that's what we needed.  The text with the environment info was collapsed by Jira so I didn't see that part in there.  Thanks!  Will try to allocate some more time to perf testing on this on our end ASAP.", "created": "2015-12-01T08:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did some more local testing on my CentOS 7 VM - using the \"doparse.rb\" example to benchmark parser performance of the MRI-based ruby 2.1.7 (delivered as part of the \"puppet-agent 1.3.0\" package) vs. puppetserver 2.2.0 (which includes JRuby 1.7.20.1).  Note that puppetserver was running under JDK version 1.7.0_51.\n\nFor the first set of tests, I ran 50 iterations of each of the following combinations with code very similar to the original doparse.rb file that I'd listed earlier.  To limit the scope a bit, I only had it parse the 1000 node \"site.pp\" file from before, rather than the full set of manifests delivered in the zip file.  For the mean times below, I threw away the first 10 measurements from each run, considering that the first few runs tend to take significantly longer while code paths are still being optimized.\n\nIn the columns below, a \"parser code version\" of \"pup-agt 1.3.0\" means that just the standard code from puppet-agent 1.3.0 was used.  \"pup5554 pr\" means that the Ruby code from [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d]'s PR for PUP-5554 was patched in for the test run.  I also experimented with the JRuby \"compile.mode\" flag - see https://github.com/jruby/jruby/wiki/JRubyCompiler#tweaking-and-troubleshooting.  In Puppet Server today, we hardcode a value of {{OFF}} for the \"compile.mode\" flag.  As the table below shows, though, running with the JRuby default value of {{JIT}} instead seems like it might offer a significant improvement over {{OFF}}.\n\n|| Configuration || Parser code version || invokedynamic || JRuby compile.mode || Mean time (in seconds) ||\n| MRI | pup-agt 1.3.0 | N/A | N/A | 2.909\n| MRI | pup5554 pr | N/A | N/A | 2.197\n| puppetserver | pup-agt 1.3.0 | false | OFF | 8.566\n| puppetserver | pup5554 pr | false | OFF | 6.247\n| puppetserver | pup5554 pr | true | OFF | 6.348\n| puppetserver | pup5554 pr | false | JIT | 3.218\n| puppetserver | pup5554 pr | true | JIT | 2.848\n\nFor at least this set of experiments, it appears that the changes from the PR for PUP-5554 are beneficial for both MRI and Puppet Server / JRuby.  For Puppet Server specifically, using a \"compile.mode\" of {{JIT}} appears to have a significant benefit over the value of {{OFF}}.  The results for the {{invokedynamic}} flag seemed a bit inconclusive.  It may help most only when the \"compile.mode\" of {{JIT}} is being used.\n\nIt does still seem that MRI outperforms Puppet Server / JRuby in all configuration scenarios.  It may be that for the one scenario [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] saw where JRuby could outperform MRI that parsing all of the manifests under the production environment vs. just the one \"site.pp\" manifest was important.\n\nI also did a follow-on test where I ran the variation of doparse.rb which parses over all of the manifests in the production environment 100 times - comparing the performance of MRI vs. puppetserver with \"compile.mode\" set to {{JIT}} and \"invokedynamic=true\" and with the changes from the PR for PUP-5554 in place.  In this case, the mean time for MRI across all runs was 3.74 seconds vs. 5.95 seconds for PuppetServer.  The numbers for the final 10 or so iterations of each was a bit closer:\n\nFor MRI:\n\nparse 90: 3.5940851399999962\nparse 91: 3.396483578999994\nparse 92: 3.3532608970000046\nparse 93: 3.699473139000003\nparse 94: 3.738742035999995\nparse 95: 3.809521127999994\nparse 96: 3.7104314179999958\nparse 97: 3.390724071\nparse 98: 3.3356633929999995\nparse 99: 3.2623399600000074\nparse 100: 3.3991133940000005\n\nFor Puppet Server:\n\nparse 90: 4.385999999999984\nparse 91: 4.403999999999978\nparse 92: 4.330999999999979\nparse 93: 4.349999999999985\nparse 94: 4.441999999999974\nparse 95: 4.836999999999996\nparse 96: 4.361999999999984\nparse 97: 4.28099999999997\nparse 98: 4.312999999999977\nparse 99: 4.31499999999998\nparse 100: 4.32699999999998\n\n[~accountid:623a44978d8b9c0068b7e126], would you be interested in testing catalog compilation with JRuby \"compile.mode\" set to {{JIT}} instead of {{OFF}}?  Unfortunately, to do this today, you would have to make a change to the Clojure code which is embedded in the {{puppet-server-release.jar}} from the puppetserver package - or we could build a custom, experimental one for you to play with.  Note that we haven't done any significant testing with a value of {{JIT}}, so we can't vouch for the overall stability of using this value with Puppet.\n\nA couple of other notes on the \"compile.mode\" setting...\n\nThe default value of this setting in standard JRuby is {{JIT}}.  So presumably any test runs that [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] did earlier may have been done with this set to {{JIT}} rather than the {{OFF}} value we use in puppetserver today.\n\nWith a value of {{JIT}}, the first few parse attempts after the Java process can be considerably slower than with a value of {{OFF}}.  For example, the very first time to parse all manifests in the production environment took 44.739 seconds for {{JIT}} and just 12.388 for {{OFF}} when I tried.  You'd have to do a significant number of iterations before all of the optimizations kick in - seemed like about 30 - 40 from my one quick test.", "created": "2015-12-01T18:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] that is interesting stuff, thanks.  It might be nice for us to also set up a test environment where we are trying to basically run the exact stuff that [~accountid:623a44978d8b9c0068b7e126] is running, though... with his same site.zip files and full catalog compiles, just to make 100% sure that the perf difference is all in the parsing?  Or do you feel like on your first pass at this you did enough instrumentation to where you are confident that the only significant difference is in the parsing?\n\nAlso, [~accountid:623a44978d8b9c0068b7e126], do you use the {{environment_timeout}} setting at all?  If the performance difference is all related to parsing, then the environment caching stuff seems like it would probably make a big difference for you.", "created": "2015-12-01T18:26:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "Three comments on Jeremy's thorough testing:\n\n1. All tests that I ran used JRuby 9.0.4.0 / JDK 8. I made some tests with JRuby 1.7.19 / JDK 8 too and that was significantly slower. [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], if you have the time, I'd be interested to see what numbers you get using JRuby 9.0.4.0 / JDK 8.\n2. My testing didn't go through PuppetServer at all. I used plain JRuby so yes, JIT was always enabled.\n3. I agree with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] about testing full compiles. Reason being that with my PR we already reach the point where JRuby is faster in the parsing phase provided the latest versions are used with the JIT and dynamic invocations. What is unknown to me is the impact of that during evaluation. Is the evaluation significantly slower? Can it be optimized too?\n", "created": "2015-12-01T18:44:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] No problem for me to try with a new jar.\nBut sorry I'm not able to make this change by myself, if you could provide a modified .jar it would be great\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] trying changes with environment_timeout are not in my perspective for now, documentation is not encouraging this, and never used before. Why puppetmaster dont need it ?\nIn fact, when we migrate our platform on Puppet4 we wanted to go on new features provided with.\nPuppetserver was one of it, especially because we heard the benefits from conferences which seems to be a good solution in our case (we had 2 puppetmaster on passenger to loadbalance our 300seconds runinterval and ~800 nodes).\nBut performance was so far from we expected (at least 3x less puppet nodes served by hour), we installed puppet4 on puppetmaster/passenger instead of puppetserver.", "created": "2015-12-02T01:18:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The environment timeout is set to 0 by default because it was surprising to users that changes to files in their environment did not have an immediate effect. With a reasonably current puppet, there are no known issues that should prevent environment timeout from being used in production (you may want it to be off, or short for development).\n\nRue of thumb: if an increased environment timeout does not have an impact on subsequent compilations (within that timeout), then the performance problem is unrelated to loading and parsing.", "created": "2015-12-02T04:00:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] I tried with timeout 30m, and the compilation time is about 1s in logs. But, as expected, any modification at modules or at nodes level dont change anything during cache timeout. This is a valuable workaround.\n", "created": "2015-12-02T06:21:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I am glad that worked out well. Now we also definitively know it is a load/parse performance problem as oppose to an evaluation/compile problem.\n\nIf you need to evict the environment cache, there is a way to do that with PuppetServer. Note that if you have many environments (for testing and development) and you set 30m for all of them you may need a lot of memory. You can set those that are for development to have a lower timeout (or 0) in their environment.conf file.", "created": "2015-12-02T06:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] here are the docs for how to flush the environment cache on demand: https://docs.puppetlabs.com/puppetserver/latest/admin-api/v1/environment-cache.html\n\nFor many users, we recommend setting the environment_timeout to 'unlimited' and then hitting that HTTP endpoint to flush the caches when code changes are rolled out.  As [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] pointed out, you can set a different value for the timeout for different environments, so if you have a development environment where you want the changes to be visible immediately, you can set it to zero.\n\nUntil recently the default value for this setting was to enable this caching, so most of our performance testing of Puppet Server vs. Passenger so far has probably included the caching, which may explain why you are seeing big performance differences without the caching enabled.  We'd definitely like to improve the performance for the case where the caching is not enabled, though, so thanks very much for bringing it to our attention and helping to provide repro steps!\n\nI think it should be easy for us to build a jar that has [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]'s changes in it and attach it to the ticket so that you can try it out.  Thanks again!", "created": "2015-12-02T07:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623a44978d8b9c0068b7e126], I attached a puppet-server-release.jar, split into 5 parts due to size restrictions on individual attachments for JIRA.  To reassemble this, you should just need to download each of the puppet-server-release.jar.part* files into a directory and run:\n\n{noformat}\ncat puppet-server-release.jar.part-* > puppet-server-release.jar\n{noformat}\n\nHere's what I'd expect to see if you run md5sum against the reassembled jar:\n\n{noformat}\ndfcfc130755796c3a242e27f3e8d249e  puppet-server-release.jar\n{noformat}\n\nThis jar is basically the same as what is packaged for the Puppet Server 2.2.0 release for CentOS 7.  The only difference should be that I updated one of the Clojure namespaces within it to set the {{compile.mode}} for JRuby ScriptingContainers to {{JIT}} instead of the default, {{OFF}}.  To install this, you should just need to swap out this {{puppet-server-release.jar}} file with the file installed by default at {{/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar}} and just do a {{service puppetserver restart}}.  It would be good to backup the original {{puppet-server-release.jar}} file there so that you can restore it when you are done experimenting with this file.\n\nDuring the startup of the puppetserver service, you should see a message like the following in the {{/var/log/puppetlabs/puppetserver/puppetserver.log}} file:\n\n{noformat}\n2015-12-02 11:59:12,561 INFO  [clojure-agent-send-pool-0] [p.s.j.jruby-puppet-internal] prepping scripting container with compile-mode: JIT\n{noformat}\n\nThis would indicate that the custom jar file has been installed / is working as expected.\n\nWe definitely wouldn't recommend trying to use this for production even if it does appear to improve the performance you've been seeing with your Puppet code on the Puppet Server platform.  We would definitely be interested in what impact this would have for the performance with your test case.  Note as mentioned earlier that you may need to do a significant number of catalog compilations against a running Puppet Server before all of the JIT optimizations have completed - about 30 - 40 or so in my case locally - and, therefore, any potential performance benefit could be seen.\n\nIf this does prove to be beneficial for you, we may consider making the {{compile.mode}} flag externally configurable for Puppet Server in some future release.\n\nThanks for any time you may have to look at this further!", "created": "2015-12-02T13:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], it is interesting to me that when [~accountid:623a44978d8b9c0068b7e126] enabled environment caching that the time to compile dropped to ~1 second for Puppet Server.  As mentioned earlier, I think the Racc parsing of the {{site.pp}} file, which has 1000 node resources, is what has appeared to be responsible for a large percentage of the time spent in the catalog compilation - several seconds at best from the testing I and [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] had been doing.  You had mentioned earlier that you didn't think the parsed result for the site manifest would be cached.  Do these results suggest that this file is actually being cached per the environment?  Or maybe you meant that an environment-specific {{site.pp}} file would be cached and that if the {{site.pp}} were in the \"global\" manifests directory that it would not be cached?", "created": "2015-12-02T14:08:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I have not looked at what it actually does - but I do think that the \"initial import\" (i.e. Puppet settings \"code\" , and \"manifest\") may possibly always be parsed - but I may be wrong, Requires debugging to figure out (or by making a change that is an error in site.pp while the environment is still cached).\n\nThe caching that takes place in an environment is the binding of \"type/name\" to code. The name of the code loaded from \"code\" and \"manifest\" (the initial import) does end up in a named entity - the class having the name '' (an empty string", "created": "2015-12-02T15:20:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "site.pp is cached\n\n{noformat}\n[root@master20153-centos ~]# puppet config set environment_timeout unlimited\n[root@master20153-centos ~]# cat /etc/puppetlabs/puppet/puppet.conf\n[main]\n## site.pp ##\n    certname = master20153-centos\n    server = master20153-centos\n    user  = pe-puppet\n    group = pe-puppet\n    archive_files = true\n    archive_file_server = master20153-centos\n    module_groups = base+pe_only\n    environmentpath = /etc/puppetlabs/code/environments\nenvironment_timeout = unlimited\n\n[agent]\n    graph = true\n\n\n[master]\napp_management = false\nnode_terminus = classifier\nstoreconfigs = true\nstoreconfigs_backend = puppetdb\nreports = puppetdb\ncertname = master20153-centos\nalways_cache_features = true\n[root@master20153-centos ~]# service pe-puppetserver restart\nStopping pe-puppetserver:                                  [  OK  ]\nStarting pe-puppetserver:                                  [  OK  ]\n[root@master20153-centos ~]# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for master20153-centos\nInfo: Applying configuration version '1449092598'\nNotice: Applied catalog in 9.08 seconds\n[root@master20153-centos ~]# vim /etc/puppetlabs/code/environments/production/manifests/site.pp\n[root@master20153-centos ~]# puppet agent -t\nInfo: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for master20153-centos\nInfo: Applying configuration version '1449092598'\nNotice: Applied catalog in 9.76 seconds\n[root@master20153-centos ~]# service pe-puppetserver restart", "created": "2015-12-02T15:54:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]Thanks for your attachment. So I updated my puppetserver to 2.2, using puppetlabs-pc1 yum repo, and now puppetserver dont start (with standard jar and with the one you provided)\n\nThis is the error I have :\n{noformat}\nat clojure.main.main(main.java:37)\nat clojure.lang.Var.applyTo(Var.java:700)\nat clojure.lang.AFn.applyToHelper(AFn.java:178)\nat clojure.lang.Var.invoke(Var.java:409)\nat clojure.lang.RestFn.invoke(RestFn.java:512)\nat clojure.main$main.doInvoke(main.clj:420)\nat clojure.main$main_opt.invoke(main.clj:315)\nat clojure.core$apply.invoke(core.clj:624)\nat clojure.lang.Var.applyTo(Var.java:700)\nat clojure.lang.AFn.applyToHelper(AFn.java:165)\nat clojure.lang.Var.invoke(Var.java:394)\nat clojure.lang.RestFn.invoke(RestFn.java:457)\nat puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7)\nat clojure.core$apply.invoke(core.clj:624)\nat clojure.lang.Var.applyTo(Var.java:700)\nat clojure.lang.AFn.applyToHelper(AFn.java:165)\nat clojure.lang.Var.invoke(Var.java:394)\nat clojure.lang.RestFn.invoke(RestFn.java:457)\nat puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159)\nat puppetlabs.trapperkeeper.core$run.invoke(core.clj:144)\nat puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:113)\nat puppetlabs.trapperkeeper.internal$boot_services_STAR_.invoke(internal.clj:462)\nat puppetlabs.trapperkeeper.internal$boot_services_STAR_$fn__5789.invoke(internal.clj:463)\nat puppetlabs.trapperkeeper.internal$build_app_STAR_.invoke(internal.clj:426)\nat puppetlabs.trapperkeeper.internal$instantiate.invoke(internal.clj:108)\nat puppetlabs.trapperkeeper.internal$instantiate$fn__5589.invoke(internal.clj:111)\nat puppetlabs.trapperkeeper.internal$handle_prismatic_exception_BANG_.invoke(internal.clj:70)\nException in thread \"main\" java.lang.RuntimeException: Service ':AuthorizationService' not found\n{noformat}\n", "created": "2015-12-03T02:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a44978d8b9c0068b7e126] that error sounds like your {{/etc/puppetlabs/puppetserver/bootstrap.cfg}} file didn't get updated properly from the new package, maybe?  Did you get any warnings from yum on the upgrade?\n\nI suspect that you are missing this line:\n\nhttps://github.com/puppetlabs/puppet-server/blob/9a2db1144c9f8d5850ec3f64232b2010a289e04f/ezbake/config/bootstrap.cfg#L10\n\n{{puppetlabs.trapperkeeper.services.authorization.authorization-service/authorization-service}}", "created": "2015-12-03T06:58:00.000000"}, {"author": "623a44978d8b9c0068b7e126", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yes this is a misconfiguration by my side, sorry.\n", "created": "2015-12-03T09:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I spent some more time yesterday doing some tests with the full environment zip file from [~accountid:623a44978d8b9c0068b7e126].  I dumped the files into {{/etc/puppetlabs/code/environment/performance}}.  I noticed that the zip file did not include the {{puppetlabs/stdlib}} module but the apache class that catalog compilation would exercise has a dependency on {{stdlib}}.  In order to compile a full catalog properly, then, I used the {{puppet module tool}} to load version \"4.9.0\" of {{puppetlabs/stdlib}} under the base module directory, {{/etc/puppetlabs/code/modules}}.\n\nSince we seem to have substantiated that both the module manifests and site manifest are cached per the environment timeout configuration, it seemed most interesting at this point to compare performance of a Puppet master running under Apache / Passenger vs. Puppet Server with environment caching disabled.\n\nFor these tests I again used a CentOS 7 VM with the following configurations:\n\nFor the Ruby master under Passenger:\n\n- Apache 2.4.6\n- Passenger 5.0.21\n\nFor Puppet Server:\n\n- Puppet Server 2.2.0\n- JRE 1.7.0_51\n\nFor both of the above, I configured core Ruby puppet/facter code from puppet-agent 1.3.1 to be used.  I also applied the changes from [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d]'s PR for PUP-5554 for all test configurations.\n\nI pre-generated a certificate named 'mytrue_vm_test.com' to match that of the node in [~accountid:623a44978d8b9c0068b7e126]'s sample.  I did one full noop agent run against the server in order to have a yaml facts file for the node be cached under the server's vardir.  For the test iterations that I measured, I just did {{curl}} calls to the catalog endpoint for the 'mytrue_vm_test.com' node:\n\n{noformat}\ncurl -sS \"https://[myserver]:8140/puppet/v3/catalog/mytrue_vm_test.com?environment=performance\" --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem --cert /etc/puppetlabs/puppet/ssl/certs/mytrue_vm_test.com.pem --key /etc/puppetlabs/puppet/ssl/private_keys/mytrue_vm_test.com.pem\n{noformat}\n\nThe times measured would include the roundtrip time for the full curl call from the client's perspective.  This would add in a little more overhead than what is involved in just the catalog compilation phase on the server.  It looked like for both the tests with Passenger and tests with Puppet Server that the amount of time spent in non-catalog compilation work was in the range of 0.3 - 0.4 seconds.  I didn't see an appreciable difference between the two.  As with prior measurements, I did 50 iterations of the test for each configuration, throwing away the first 10 to account for optimization that occurs the first time through code paths after startup.\n \nHere are the results of the tests:\n\n|| Configuration || invokedynamic || JRuby compile.mode || Mean time (in seconds) ||\n| Passenger (using Ruby 2.0.0p598) | N/A | N/A | 3.2588\n| Passenger (using Ruby 2.1.7p400) | N/A | N/A | 2.9324\n| puppetserver | false | OFF | 7.3884\n| puppetserver | true | OFF | 7.4295\n| puppetserver | false | JIT | 4.1309\n| puppetserver | true | JIT | N/A - ERROR\n\nNote that for the combination of {{compile.mode = JIT}} and {{compile.invokedynamic = true}}, the server wasn't able to complete a single catalog compilation.  Each attempt resulted in the following error being thrown on the server:\n\n{noformat}\nPuppet Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, com.headius.invokebinder.InvalidTransformException: java.lang.IllegalAccessException: no such method: rubyjit.Module$$get_function_info_89777804a596e7525bfd76db55db4cfbbc2c53571301399523.__file__(Module$$get_function_info_89777804a596e7525bfd76db55db4cfbbc2c53571301399523,ThreadContext,IRubyObject,IRubyObject,Block)IRubyObject/invokeStatic at /etc/puppetlabs/code/environments/performance/modules/concat/manifests/fragment.pp:61:16\n{noformat}\n\nThis error has been reported to the JRuby community - see https://github.com/jruby/jruby/issues/1518.  Most references there seem to have been problems with using invokedynamic in conjunction with JDK 8.  I didn't see any suggestions for workarounds - other than to not use invokedynamic (leave implicitly set to false).  Maybe there's something specific about this code that could be reworked in order for invokedynamic to be viable in this case, but I didn't spend any further time looking into this.\n\nFor the above combinations, it does appear that Passenger is still faster in the best case - running under Ruby 2.1.7p400 (~ 2.9234 seconds) - vs. Puppet Server with compile.mode set to JIT (~ 4.1309 seconds).  Note that the performance under Puppet Server for the last 10 measurements was a little better than the overall mean, so it may be that for an even longer run that further optimizations would occur.\n\nLast 10 measurements for Passenger / Ruby 2.1.7p400:\n\nparse 40: 2.977790956\nparse 41: 2.74109675\nparse 42: 2.876411698\nparse 43: 2.871555633\nparse 44: 2.804396444\nparse 45: 3.044006175\nparse 46: 2.763741381\nparse 47: 2.851122733\nparse 48: 2.865767259\nparse 49: 2.72697933\nparse 50: 2.999128202\n\nLast 10 measurements for Puppet Server 2.2.0 with compile.mode set to JIT:\n\nparse 40: 3.849922537\nparse 41: 3.894616278\nparse 42: 3.958217466\nparse 43: 3.911266052\nparse 44: 3.891125976\nparse 45: 3.90737945\nparse 46: 3.875692769\nparse 47: 3.795240027\nparse 48: 3.830240376\nparse 49: 3.988967762\nparse 50: 4.292533626\n\nTo comments that [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] made earlier, I suspect that we would see further performance improvements with Puppet Server when running on JDK 8 and JRuby 9.0.0.X.  Note that for the Passenger tests that there was some improvement just in moving from Ruby 2.0.0p598 (~ 3.2588 seconds) to Ruby 2.1.7p400 (~ 2.9324 seconds).  Note that JRuby 9.0.0.X is a Ruby 2.2-based implementation whereas the JRuby 1.7.20.1 version that we are currently using in Puppet Server is a Ruby 1.9.3-based implementation.  At some point, we'll be looking to move Puppet Server up to JRuby 9.0.0.X - no set timeframe yet.  Might be good to pick up some of these tests again at that point.\n\nWhere {{compile.mode = JIT}} seems to offer a noticeable improvement here, though, I'll go ahead and file a separate ticket for us to at least look into making this externally configurable for Puppet Server (even if not necessarily the default mode until further characterization could be done).", "created": "2015-12-03T10:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "fyi, I submitted a ticket for making {{compile.mode}} be end-user configurable for Puppet Server as SERVER-1052.", "created": "2015-12-03T14:07:00.000000"}], "components": ["Performance", "Puppet Server"], "created": "2015-10-28T04:33:00.000000", "creator": "623a44978d8b9c0068b7e126", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d06016c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2th3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24576771_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_72582027193"}], "description": "I recently started the migration of our production puppet from Puppet 3 / Apache with passenger to Puppet 4 / PuppetServer\n\nThe problem I encounter is about catalog compilation performance, indeed the duration passed from 1~3seconds on old platform to 20~50seconds on the new one.\n\nI tried to get some DEBUG information by puppetserver with activating DEBUG loglevel, and with activating ruby profiling.\nUnfortunately I can't obtain the precise informations I need, because it seems that the problem resides with compilation (ruby/puppet code).\n\n\n{noformat}\n[...]\n2015-10-28 10:21:17,416 DEBUG [c.p.p.LoggingPuppetProfiler] [compiler find_node] (87 ms) Found node information\n2015-10-28 10:21:20,731 WARN  [puppet-server] Puppet Unrecognized escape sequence '\\.'\n2015-10-28 10:21:20,801 WARN  [puppet-server] Puppet Unrecognized escape sequence '\\.'\n2015-10-28 10:21:20,843 WARN  [puppet-server] Puppet Unrecognized escape sequence '\\.'\n2015-10-28 10:21:21,877 WARN  [puppet-server] Puppet Unrecognized escape sequence '\\;'\n2015-10-28 10:21:22,213 WARN  [puppet-server] Puppet Unrecognized escape sequence '\\.'\n2015-10-28 10:21:22,218 WARN  [puppet-server] Puppet Unrecognized escape sequence '\\.'\n2015-10-28 10:21:22,503 WARN  [puppet-server] Puppet Unrecognized escape sequence '\\*'\n2015-10-28 10:21:22,506 WARN  [puppet-server] Puppet Unrecognized escape sequence '\\*'\n2015-10-28 10:21:39,209 DEBUG [c.p.p.LoggingPuppetProfiler] [compiler set_node_params] (2 ms) Compile: Set node parameters\n[...]\n2015-10-28 10:21:40,676 DEBUG [c.p.p.LoggingPuppetProfiler] [compiler finish_catalog] (1 ms) Compile: Finished catalog\n2015-10-28 10:21:40,682 DEBUG [c.p.p.LoggingPuppetProfiler] [compiler compile myenv vincent-centos7.mydomain.local] (23266 ms) Compiled catalog for vincent-centos7.mydomain.local in environment myenv\n{noformat}\n\n\nMost of the 23 seconds (~17s) duration is with compilation, which I suppose is starting just after the puppet parser validate, generating the output \"Unrecognized escape...\" which I can produce manually.\n\nMy need I to have output on what happens next, the compilation.\nIs there a way have a trace to find why there is such a performance issue ?\n\n\nAs an attachment there is Profiler output of the full test catalog application", "environment": "Linux Centos 7 - Fully installed by yum\n32vcpu / 32Go Ram\n\nJava HEAP 25Go\nTried max-actives-instances 4/16/32 without performances notable differences\n\npuppetlabs-release-pc1.noarch 1.0.0-1.el7 \npuppetserver version: 2.1.2\npuppet --version 4.2.2\nruby 2.1.6p336 (2015-04-13 revision 50298) [x86_64-linux]\nopenjdk version \"1.8.0_65\"\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14747", "fixedVersions": [], "id": "14747", "issueType": "Bug", "key": "SERVER-993", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a44978d8b9c0068b7e126", "resolution": "Fixed", "resolutionDate": "2018-02-14T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Catalog compilation time", "timeSpent": "PT0S", "updated": "2018-02-14T12:03:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "created": "2015-10-26T19:17:00.000000", "name": "puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10645"}], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:669d4655-0c85-469a-a11c-e5290cf2955d] - This needs a lot more information to be a useful bug report.  For starters, the message from the attached log \"Shutting down due to JVM shutdown hook.\" indicates that the server was shutdown normally, i.e. via {{service puppetserver stop}}.  Note that there is not a single ERROR in that log snippet.  Are you sure that the server really crashed?  I suspect that it was simply stopped by the test or a post-suite or something along those lines.", "created": "2015-10-26T19:53:00.000000"}, {"author": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Sorry for the terse report, I was on my way out the door when I found this.  I circle back on it today and provide you with the relevant information.  ", "created": "2015-10-27T09:03:00.000000"}, {"author": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "body": "can you get /var/log/puppetlabs/puppetserver/puppetserver-daemon.log for me? I suspect it's being shutdown by puppet to update config and just not starting again.", "created": "2015-10-27T09:29:00.000000"}, {"author": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "body": "A bug In the Beaker method 'upgrade_package' resulted in the service not being started.  ", "created": "2015-10-27T10:12:00.000000"}], "components": [], "created": "2015-10-26T19:23:00.000000", "creator": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@512acc18"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2skv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1811747_*|*_5_*:*_1_*:*_29031334776_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_51540810"}], "description": "This was found in [Code-Managers CI pipeline.|http://kahless.delivery.puppetlabs.net/view/code-manager/job/enterprise_code-manager_integration-system_smoke-master/52/]\n\n[This is where failure occurs|https://github.com/puppetlabs/code-manager/blob/master/test/acceptance/pre-suite/shared/91_config_code_manager.rb#L27] in the Code-Manger pre-suite.  ", "environment": "Ubuntu Master 1404 2015.3.0-rc4-15-g6130f89\nUbuntu Master 1204 2015.3.0-rc4-15-g6130f89", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15836", "fixedVersions": [], "id": "15836", "issueType": "Bug", "key": "SERVER-992", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "resolution": "Cannot Reproduce", "resolutionDate": "2015-10-27T10:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server shuts down after updating profile class and attempted puppet run", "timeSpent": "PT0S", "updated": "2016-09-27T10:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] is this the same thing as SERVER-912?", "created": "2015-10-23T11:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Similar.  There are no metrics in OSS, just event notifications.  So probably what I should do is use this ticket for the OSS work and move the other one over to PE to capture the actual metrics plumbing.", "created": "2015-10-23T11:06:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Ah, okay, got it. Thanks for the clarification.", "created": "2015-10-23T11:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "If what I described about SERVER-912 makes sense to you, I'll go ahead and do that (move it to PE).", "created": "2015-10-23T11:10:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Yep, sounds good to me!", "created": "2015-10-23T11:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Done, it's now PE-12613.", "created": "2015-10-23T11:18:00.000000"}], "components": [], "created": "2015-10-23T10:55:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a4522dc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoa1z:"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "No release notes needed."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "needed for OSS 2.2.0 release in case we get to file sync metrics"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_252472168_*|*_1_*:*_1_*:*_264647177_*|*_10007_*:*_1_*:*_587011971_*|*_5_*:*_1_*:*_1254209778_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_18028_*|*_10006_*:*_1_*:*_14810389"}], "description": "Our current event notifications for the JRuby events don't include notifications about the pool locking.  These will be important metrics for us to be able to track, so we need to add events for them.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "16705", "fixedVersions": ["SERVER 2.2.0"], "id": "16705", "issueType": "Improvement", "key": "SERVER-989", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-11-05T08:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add jruby event notifications for pool locking", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "implemented and manually tested.", "created": "2015-11-19T11:57:00.000000"}], "components": [], "created": "2015-10-22T13:28:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@411080c0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2r9z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_510285745_*|*_5_*:*_1_*:*_27034295394_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1907062845"}], "description": "As a Puppet administrator I want to provide a sort order so that I can control the order in which my rules are evaluated.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "14744", "fixedVersions": [], "id": "14744", "issueType": "Story", "key": "SERVER-988", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T11:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TK Authorization rule sort order", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Implemented and manually tested.", "created": "2015-11-19T11:57:00.000000"}], "components": [], "created": "2015-10-22T13:26:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32d70b64"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2r9r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_510402058_*|*_5_*:*_1_*:*_27034262949_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1907101892"}], "description": "As a Puppet administrator I want to be able to name my rules.  If the sort order of two rules is the same, I want the alphabetical sort of the name to break the tie.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "17398", "fixedVersions": [], "id": "17398", "issueType": "Story", "key": "SERVER-987", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T11:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TK Authorization rule name", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "implemented and tested in CI.", "created": "2015-11-19T12:21:00.000000"}], "components": [], "created": "2015-10-22T13:23:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34adc285"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2r9j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_510572523_*|*_5_*:*_1_*:*_27032831604_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1908546769"}], "description": "As a Puppet administrator I want to be able to DENY access once a rule is matched.\n-> I want to be able to DENY every matched request -> deny: ['*']\n-> I want to be able to DENY specific Canonical Names as presented in the requester's certificate ->  deny: ['adminhost.mydomain.com']\n-> In the case of a regex rule, I want to be able to DENY the request if the capture group returned by the regex matches the Canonical Name presented in the requester's certificate   -> deny: [\"$1\"]\n-> I want to be able to place any of the above ACE values in an array.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "17047", "fixedVersions": [], "id": "17047", "issueType": "Story", "key": "SERVER-986", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TK Authorization rule Access Control Entry -> Deny", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "implemented and tested in CI.", "created": "2015-11-19T12:22:00.000000"}], "components": [], "created": "2015-10-22T13:13:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10b73b2a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2r9b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_511149585_*|*_5_*:*_1_*:*_27032815509_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1908563317"}], "description": "As a Puppet administrator I want to be able to allow access once a rule is matched.\n-> I want to be able to allow every matched request -> allow: ['*']\n-> I want to be able to allow specific Canonical Names as presented in the requester's certificate ->  allow: ['adminhost.mydomain.com']\n-> In the case of a regex rule, I want to be able to allow the request if the capture group returned by the regex matches the Canonical Name presented in the requester's certificate SO THAT I can allow agents to retrieve their own catalogs.  -> allow: [\"$1\"]\n-> I want to be able to place any of the above ACE values in an array.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "16704", "fixedVersions": [], "id": "16704", "issueType": "Story", "key": "SERVER-985", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T12:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TK Authorization rule Access Control Entry -> Allow", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "implemented and tested in CI.", "created": "2015-11-19T12:22:00.000000"}], "components": [], "created": "2015-10-22T13:12:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2bcf5733"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2r93:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_511234499_*|*_5_*:*_1_*:*_27032802732_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1908578154"}], "description": "As a Puppet administrator I want to be able to match a rule based on the HTTP method (or HTTP verb) that was used in the request.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "16476", "fixedVersions": [], "id": "16476", "issueType": "Story", "key": "SERVER-984", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T12:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TK Authorization match on HTTP method", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "implemented and tested in CI.", "created": "2015-11-19T11:54:00.000000"}], "components": [], "created": "2015-10-22T13:10:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ac92fa1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2r8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_511342537_*|*_5_*:*_1_*:*_27034461471_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1906926622"}], "description": "As a Puppet administrator I want to be able to match a rule to on the query-parameters contained within a request, so that I can, for example, create a rules that handle environments.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "16202", "fixedVersions": [], "id": "16202", "issueType": "Story", "key": "SERVER-983", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T11:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TK Authorization match on query-parameters.", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "implemented and well tested in CI.", "created": "2015-11-19T11:54:00.000000"}], "components": [], "created": "2015-10-22T13:08:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@652d68fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2r8n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_511428179_*|*_5_*:*_1_*:*_27034495718_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1906906974"}], "description": "As a Puppet administrator I want to be able to match a rule to the path of an incoming request with a regex.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15834", "fixedVersions": [], "id": "15834", "issueType": "Story", "key": "SERVER-982", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T11:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TK Authorization match type regex", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "implemented and well tested in CI.", "created": "2015-11-19T11:53:00.000000"}], "components": [], "created": "2015-10-22T13:04:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cf119fb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2r8f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_511682231_*|*_5_*:*_1_*:*_27034514027_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1906886655"}], "description": "As a Puppet administrator I want to be able to match a rule to the exact path requested in the url.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15583", "fixedVersions": [], "id": "15583", "issueType": "Story", "key": "SERVER-981", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T11:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TK Authorization match type path", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Done and manually tested.", "created": "2015-11-19T11:53:00.000000"}], "components": [], "created": "2015-10-22T13:01:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a077211"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2r87:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_511868338_*|*_5_*:*_1_*:*_27034548766_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1906861325"}], "description": "I want to be able to describe what version of syntax I'm using when I write out the auth.conf file.\nI want to be able to expand TK-Auth in the future to support multiple versions of the auth.conf file.\n\n", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15359", "fixedVersions": [], "id": "15359", "issueType": "Story", "key": "SERVER-980", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T11:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Version TK-Authorization's auth.conf", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "The old CA implementation seems to return the number of certificate requests which were deleted ...\n{code}\nDELETE /puppet-ca/v1/certificate_request/agency?environment=production\nAccept: s\n\nHTTP/1.1 200 OK\nContent-Type: text/plain\n\n1\n{code}\nInstead I suggest returning HTTP 204 No Content.", "created": "2016-02-24T17:53:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Looking further into this the delete handler for the certificate_status endpoint will delete any certificate and certificate request ([docs|https://docs.puppetlabs.com/puppet/4.2/reference/http_api/http_certificate_status.html#delete], [endpoint|https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.3.1/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L168-L170], [impl|https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.3.1/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1147-L1159]). I'm wondering if this wasn't not implemented because it's duplicated functionality and the documentation just wasn't updated?\n\nRegardless, I didn't find that information out until I did a first pass at implementing my own handler for deleting just certificate requests.\n\nMy first question is should we implement a delete handler for the certificate_request endpoint since that functionality is available in the certificate_status endpoint or should we instead update the documentation?\n\n*If* the answer to that is to implement the delete method for the certificate_request endpoint, I have some questions regarding the best approach to the implementation in this [PR|https://github.com/puppetlabs/puppet-server/pull/998] for review.", "created": "2016-03-31T06:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Good points, [~accountid:557058:104b5720-714d-4539-b455-df472251ec89].\n\nWhile it's true that the certificate_status endpoint could be used to delete a certificate request, I think there could be a use case related to authorization rules for making it possible to remove a certificate request via the certificate_request API even though the certificate_status API provides the same functionality.  For example, some users might want to create an authorization rule that allows the certificate_request API to be used by clients to delete their own requests but not more generally give clients (especially ones without authenticated certificates) the ability to manage the state of both certificate requests and certificates themselves.  We don't really have a way with the certificate_status API to craft custom rules that apply to just certificate requests vs. certificates since those aren't encoded into the URI request path or a query parameter.  I can't envision where it would ever be desirable to grant access to the certificate_status endpoint for clients that don't have authenticated certificates whereas the certificate_request endpoint generally has to be available to unauthenticated clients since the typical clients of the endpoint don't actually have a certificate yet.  Granted, this use case could be dangerous as well in that if the DELETE method for the certificate_status endpoint were opened up to all users - authenticated or not - then an unscrupulous client could use that endpoint to remove certificate requests made by users other than themselves.\n\nIn any event, it still seems we should implement support for the DELETE method on the certificate_request API for backward compatibility.  In a future version of the CA API, though, I definitely think it would make sense to discuss whether or not we need to preserve the ability to delete certificate requests across multiple APIs.\n\nCurious to hear [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5]'s and/or [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]'s take.", "created": "2016-03-31T11:55:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "That makes a lot of sense, [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]. I can definitely see why we would do both now.", "created": "2016-03-31T16:30:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This commit has gone through CI up to the smoke test stage. I believe all the tests necessary to validate it are ran within that step. The pipeline has not continued because of a different issue, failures in the pipeline were all unrelated to this patch.\n\nNot sure if this ticket is blocked until we have a green build through the full pipeline, or if can move forward based on the preliminary results.\n\nSee https://jenkins.puppetlabs.com/view/puppet-server/view/master/job/platform_puppet-server_integration-system_no-conditional_smoke-master/223/LAYOUT=centos7-64ma-64a,LDAP_TYPE=default,PLATFORM=default,label=beaker/  for example.", "created": "2016-04-12T11:47:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We typically wait for CI to go completely green before advancing tickets, but that's not a hard and fast rule.  However, if this is testable by QA now, it probably makes sense to go ahead and move it over.", "created": "2016-04-12T11:51:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Cool. Thanks, Kevin.\n\n[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] this should be manually testable/reviewable at this point (assuming I understand that process - its been EZBaked). I'll leave this in this JIRA state until its passed all the stages in the CI pipeline, but if I understood the pipeline correctly it's passed against all tests but not against all platforms, but there's no platform specific code in the patch.", "created": "2016-04-12T12:16:00.000000"}], "components": [], "created": "2015-10-20T12:14:00.000000", "creator": "557058:80bcb7bb-c13d-445f-ab52-d3d93964accf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4128c234"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Highest Test Level Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Should have caught this in automated testing; low risk, but also low-hanging fruit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyng4f:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Onboarding going well, pulling in work to prep for next sprint"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_587166096_*|*_1_*:*_1_*:*_83518721_*|*_10007_*:*_1_*:*_993591504_*|*_5_*:*_1_*:*_2612298636_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_73532687_*|*_10006_*:*_2_*:*_13982697227"}], "description": "API Documentation indicates the certificate_request should support destroy/delete.\nhttps://docs.puppetlabs.com/puppet/4.2/reference/http_api/http_certificate_request.html#destroy\n\n$ curl -X GET -H 'Accept: s' -k --cert /home/msg31/.config/nasi/infra-mgmt.ccs.ornl.gov.cert.pem --key /home/msg31/.config/nasi/infra-mgmt.ccs.ornl.gov.key.pem https://puppetca1.ccs.ornl.gov:8140/puppet-ca/v1/certificate_request/msg31-test2.ccs.ornl.gov?environment=production\n\nReturns the CSR (works as expected)\n\n$ curl -X DELETE -H 'Accept: s' -k --cert /home/msg31/.config/nasi/infra-mgmt.ccs.ornl.gov.cert.pem --key /home/msg31/.config/nasi/infra-mgmt.ccs.ornl.gov.key.pem https://puppetca1.ccs.ornl.gov:8140/puppet-ca/v1/certificate_request/msg31-test2.ccs.ornl.gov?environment=production\n\nReturns a 404 Not Found (not expected/broken)\n\nAfter a conversation with camlow325, KevinCorcoran, and cprice404 it appears this not implemented. See code: https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L265-L269\n\nRelevant sections of the IRC log\n<camlow325> nwolfe: Hmm, kind of looks like we aren't supporting DELETE for the certificate_request API in the Puppet Server CA.  Agree?\n<camlow325> I don't see a DELETE handler for it - https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L265-L269.\n<KevinCorcoran> camlow325: pyther: Yeah, that looks like a bug.\n<KevinCorcoran> I don't think we left it out on purpose.\n<camlow325> KevinCorcoran: Yeah, I think you're right\n<KevinCorcoran> Looks like we missed that at the very beginning with Puppet Server, we've never supported DELETE on that endpoint.  Not a recent regression.  Ya know, I really hate how with compojure/comidi you just get a 404 when you get the verb wrong.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16475", "fixedVersions": ["SERVER 2.4.0"], "id": "16475", "issueType": "Bug", "key": "SERVER-977", "labels": ["puppethack"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:80bcb7bb-c13d-445f-ab52-d3d93964accf", "resolution": "Fixed", "resolutionDate": "2016-04-19T11:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "DELETE handler not implemented in the certificate_request API", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I believe that this is the same as PUP-4885 and SERVER-571, and is related to PE-10757.", "created": "2015-10-12T17:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - weren't the other tickets that you linked related to the split of agent and master libdirs that was first attempted with Puppet Server 2.x / Puppet 4?  Wasn't sure if this issue was the same where it was tagged against Puppet Server 1.1.1.", "created": "2015-10-12T17:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Another possible workaround for the short term is to add the agent libdir ('/opt/puppetlabs/puppet/cache/lib' in Puppet 4+", "created": "2015-10-12T17:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] got some feedback about this at puppetconf, going to need help getting it prioritized against other things.", "created": "2015-10-12T17:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] oh, that may be true... not sure.", "created": "2015-10-12T17:53:00.000000"}, {"author": "623a4744a95758006959fe55", "body": "The behavior under 2.1.1 appears to be identical to 1.1.1:\n\n{code:java}\n2015-10-12 17:02:06,238 ERROR [puppet-server] Puppet Evaluation Error: Error while evaluating a Resource Statement, Could not autoload puppet/type/jenkins_user: no such file to load -- puppet_x/jenkins/type/cli\n{code}\n\n", "created": "2015-10-12T18:06:00.000000"}, {"author": "623a4744a95758006959fe55", "body": "I may have found a short-term workaround here:\nhttps://github.com/jeffmccune/puppet-server/blob/10b8fd13dc8662c75f08c4d0fde60f59d6d9a88f/resources/ext/config/conf.d/puppetserver.conf#L5\n\nEssentially:\n{code:java}\njruby-puppet: {\n    ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby, /opt/puppetlabs/puppet/cache/lib]\n    ...\n}\n{code}\n", "created": "2015-10-12T18:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4744a95758006959fe55] yes, that is the workaround I was hinting at", "created": "2015-10-12T18:30:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "Has this been added to milestone?\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] is there a way to manage this jruby-puppet['ruby-load-path'] in PE Console without manually modifying on all compile masters?", "created": "2016-04-13T09:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:dc702caf-5630-4bcc-9efa-066ea2fc3530] we have a puppet module called [puppetlabs/hocon|https://forge.puppet.com/puppetlabs/hocon] which you can use to manage the settings in these configuration files.  Example usage is described [here|https://github.com/puppetlabs/puppetlabs-hocon#usage].\n\nYou could add something like this to your puppet code:\n\n{code}\nhocon_setting { \"puppetserver-jruby-load-path\":\n  ensure  => present,\n  path    => '/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf',\n  setting => 'jruby-puppet.ruby-load-path',\n  value   => ['/opt/puppetlabs/puppet/lib/lib/ruby/vendor_ruby', '/opt/puppetlabs/puppet/cache/lib'],\n}\n{code}\n\nModifying the setting requires a server restart, so you might also want to add a {{notify => Service['pe-puppetserver']}}.\n\nIf you try that and it doesn't work please feel free to let us know and we can try to assist further!\n", "created": "2016-04-13T10:35:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I just checked my /etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf on 2015.3.3 and it already contains:\n\n{code}\njruby-puppet: {\n    # Where the puppet-agent dependency places puppet, facter, etc...\n    # Puppet server expects to load Puppet from this location\n    ruby-load-path: [\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby\",\n        \"/opt/puppetlabs/puppet/cache/lib\"\n    ]\n{code}\n\nI checked the agent and it has these files already sync'd down to cache:\n\n{code}\n[centos@ip-10-16-13-100 log]$ sudo ls -la /opt/puppetlabs/puppet/cache/lib/puppet/type/jenkins_num_executors.rb\n-rw-r--r--. 1 root root 884 Sep  1 04:16 /opt/puppetlabs/puppet/cache/lib/puppet/type/jenkins_num_executors.rb\n[centos@ip-10-16-13-100 log]$ sudo ls -la /opt/puppetlabs/puppet/cache/lib/puppet_x/jenkins/type/cli.rb\n-rw-r--r--. 1 root root 753 Sep  1 04:16 /opt/puppetlabs/puppet/cache/lib/puppet_x/jenkins/type/cli.rb\n{code}\n\nBut still getting the error that it's not found.\n\n{code:puppet}\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Resource Statement, Could not autoload puppet/type/jenkins_num_executors: no such file to load -- puppet_x/jenkins/type/cli at ...\n{code}\n\n\n", "created": "2016-09-01T09:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:dc702caf-5630-4bcc-9efa-066ea2fc3530] thanks for the update.  I'd definitely like to try to get this prioritized and sorted out.  Can you help me define a minimal repro case that someone on our side could use when we get a chance to test it out?\n\nI'm guessing it's something like:\n1. Clean install of PE\n2. Install puppet-jenkins module\n3. Do an agent run on the master and validate that the files you mention above get synced to the agent cache dir\n4. Set up {{environments/production/site.pp}} such that it declares a resource from the jenkins module - in this case, {{cli}}\n5. Do another agent run and expect to see the failure you've described above.\n\nDoes that sound accurate?  If so, can you maybe give me a snippet illustrating what your resource declaration looks like for #4, so that we'll be sure we're triggering the same thing you're hitting?\n\nThanks!", "created": "2016-09-01T11:30:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "Thanks,\n\nI believe all you need to reproduce would be as simple as:\n\n{code:puppet}\ninclude ::jenkins\ninclude ::jenkins::master\njenkins_num_executors{ '0': ensure => present }\n{code}", "created": "2016-09-01T13:44:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] by chance do you have any workaround I can try until this is resolved?", "created": "2016-09-01T14:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:dc702caf-5630-4bcc-9efa-066ea2fc3530] tbh, I don't have any great ideas because I really expect/expected the agent cache dir workaround to handle this.  You could try renaming those directories from 'puppet_x' to just 'puppet' and see if that makes any difference.\n\nI'll do my best to get this put into the hopper for someone our end to try to repro soon.", "created": "2016-09-01T14:44:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] ha not sure if [~accountid:623a4744a95758006959fe55] wants to go ahead and merge those 2.", "created": "2016-09-01T14:56:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] so it seems the workaround, as mentioned, is already in the PE server. Think it's working as it should since the files are pluginsync'd to local cache dir. \n\nThe issue, I would think, now is on the \"client\" (puppet-agent) side. Is there a rubylib hardcoded into the agent? Is there a way to specify the {noformat}/opt/puppetlabs/puppet/cache/lib/puppet_x/{noformat} and {noformat}/opt/puppetlabs/puppet/cache/lib/puppet/{noformat} ? \nWould that work around the issue?", "created": "2016-09-06T16:17:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "Nevermind, tried setting {code}RUBYLIB=/opt/puppetlabs/puppet/cache/lib/puppet:/opt/puppetlabs/puppet/cache/lib/puppet_x puppet agent -t{code} and still no luck", "created": "2016-09-06T16:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "If the error says \"cannot retrieve catalog\", then it's still happening on the server.  Hoping to queue this up for someone to try to repro on our end very soon.", "created": "2016-09-12T11:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I tried but failed to reproduce the problem that [~accountid:557058:dc702caf-5630-4bcc-9efa-066ea2fc3530] has been encountering.\n\nI did a monolithic install of PE 2015.3.3 on CentOS 7 and then did the following steps on the PE master:\n\n1) Installed the 'retries' gem - which is a dependency of the providers in the rtyler/jenkins module - under both the Puppet Server gem dir and the agent gem dir:\n\n{code}\n/opt/puppetlabs/bin/puppetserver gem install retries\n/opt/puppetlabs/puppet/bin/gem install retries\n{code}\n\n2) Install the rtyler/jenkins module via the \"puppet module\" tool.  Since the \"file sync\" feature is enabled in the default install, I installed it to the code-staging directory for the production environment:\n\n{code}\npuppet module install --modulepath /etc/puppetlabs/code-staging/environments/production/modules rtyler/jenkins\n{code}\n\n3) Added the following to the {{/etc/puppetlabs/code-staging/environments/production/manifests/site.pp}} file:\n\n{code:puppet}\nnode default {\n  include ::jenkins\n  include ::jenkins::master\n  jenkins_num_executors{ \u201915\u2019: ensure => present }\n}\n{code}\n\n4) In order to avoid a conflict between the use of the '8080' port from Jenkins and PuppetDB, added the following hiera parameter in {{/etc/puppetlabs/code-staging/environment/production/hieradata/common.yaml}} to move PuppetDB to a different port.  I imagine I could have moved the Jenkins port instead but didn't spend time looking at how to do that:\n\n{code:yaml}\npuppet_enterprise::profile::puppetdb::listen_port: '8082'\n{code}\n\n5) Did a file-sync commit-all to publish the code-staging directory to the {{/etc/puppetlabs/code}} directory:\n\n{code}\ncurl -k -X POST https://mypemaster -H \"Content-Type: application/json\" -d '{\"commit-all\":true}' --cert ... --key ...\n{code}\n\n6) Upgraded nss in order to avoid a Java/SSL initialization problem which would otherwise come up on the Jenkins server:\n\n{code}\nyum upgrade nss\n{code}\n\n7) Restarted the pe-puppetserver service in order for the new hiera settings to take effect:\n\n{code}\nservice pe-puppetserver restart\n{code}\n\n8) Ran the puppet agent on the PE master:\n\n{code}\npuppet agent -t\n{code}\n\nThe agent run was successful, including the following output:\n\n{noformat}\nInfo: Applying configuration version '1474998131'\nNotice: /Stage[main]/Main/Node[default]/Jenkins_num_executors[15]/ensure: created\nNotice: Applied catalog in 17.68 seconds\n{noformat}\n\n9) Browsed to http://mypemaster:8080/configure on the new Jenkins server.  Confirmed that the \"# of executors\" was set to \"15\", from the Puppet configuration.\n\n---\n\nI then did the following steps on a separate CentOS 7 node, to see if the results would be any different for the case that the agent and master were on different nodes:\n\n1) Used the curl / bash technique to install the Puppet agent:\n\n{code}\ncurl -k https://mypemaster:8140/packages/current/install.bash | sudo bash\n{code} \n\n2) Installed the \"retries\" gem, just as on the PE master:\n\n{code}\n/opt/puppetlabs/puppet/bin/gem install retries\n{code}\n\n3) Upgraded nss just as on the PE master:\n\n{code}\nyum upgrade nss\n{code}\n\n4) Ran the puppet agent on the agent node:\n\n{code}\npuppet agent -t --server mypemaster\n{code}\n\nThe agent run was successful, just as on the PE master.  I did the same steps on the agent node as above on the PE master to confirm that the newly installed Jenkins server was running and with the expected \"# of executors\" being set in the UI.\n\n--\n\nAs noted earlier, the workaround of putting the agent's lib dir - {{/opt/puppetlabs/puppet/cache/lib}} - into the master's {{jruby-puppet.ruby-load-path}} setting in the pe-puppet-server.conf file was necessary in order for an agent run to be successful.  If I were to take the agent lib directory out via hiera config...\n\n{code:yaml}\npuppet_enterprise::master::puppetserver::puppetserver_jruby_puppet_ruby_load_path:\n  - '/opt/puppetlabs/puppet/lib/ruby/vendor_ruby'\n{code}\n\n... and attempt the agent run again, the run would fail with this error:\n\n{noformat}\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Could not autoload puppet/type/jenkins_num_executors: no such file to load -- puppet_x/jenkins/type/cli at /etc/puppetlabs/code/environments/production/manifests/site.pp:33:3\n{noformat}\n\nWhere you are using the PE default - which should have the following values in the {{/etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf}} file...\n\n{code:hocon}\n# configuration for the JRuby interpreters\njruby-puppet: {\n...\n    ruby-load-path: [\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby\"\n        \"/opt/puppetlabs/puppet/cache/lib\"\n    ]\n...\n}\n{code}\n\n... - then I am not exactly sure what the important difference may be in our test setups.\n\n---\n\n[~accountid:557058:dc702caf-5630-4bcc-9efa-066ea2fc3530], can you confirm that you can see the problem if you have only the above Jenkins code in the {{site.pp}} file - with no other classes being assigned to your agents via the PE console / node manager or other custom Puppet code in the environment modules directory?  I'm wondering if there is something specific to the additional Puppet code loaded in your test setup which may be necessary in order for us to be able to reproduce the problem you are seeing.", "created": "2016-09-27T13:11:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]: I can confirm I see the problem with just those lines in the site.pp\nNo other classes assigned in PE console\n\nEnvironment: jenkins_test\n\nsite.pp\n{code:puppet}\nnode default {\n  # This is where you can declare classes for all nodes.\n  # Example:\n  #   class { 'my_class': }\n\n  include ::jenkins\n  include ::jenkins::master\n  jenkins_num_executors{ '15': ensure => present }\n\n}\n{code}\n\nMaster:\n{code}\n[root@ctcpuppet01 environments]# puppet -V\n4.3.2\n[root@ctcpuppet01 environments]# rpm -qa | grep puppet-agent\npuppet-agent-1.3.6-1.el7.x86_64\n[root@ctcpuppet01 environments]# rpm -qa | grep pe-puppet\npe-puppetserver-2.2.41-1.el7.noarch\npe-puppet-license-cli-0.1.7.20-1.pe.el7.noarch\npe-puppet-enterprise-release-2015.3.3.0-1.pe.el7.noarch\npe-puppetdb-termini-3.2.4-1.el7.noarch\n{code}\n\nAgent\n{code}\n[root@i-0a67aad345b881108 ~]# puppet -V\n4.3.2\n[root@i-0a67aad345b881108 ~]# /opt/puppetlabs/puppet/bin/gem list retries\n\n*** LOCAL GEMS ***\n\nretries (0.0.5)\n[root@i-0a67aad345b881108 ~]# puppet agent -t --server ctcpuppet01 --environment jenkins_test\nInfo: Using configured environment 'jenkins_test'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Could not autoload puppet/type/jenkins_num_executors: no such file to load -- puppet_x/jenkins/type/cli at /etc/puppetlabs/code/environments/jenkins_test/manifests/site.pp:48:3 on node i-0a67aad345b881108\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog", "created": "2016-09-27T13:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:dc702caf-5630-4bcc-9efa-066ea2fc3530] Have you done a run of the puppet agent on the master itself using an environment which has the rtyler/jenkins and dependent modules loaded in it?\n\nIn my case, I had installed all of the related modules to the production environment on the master, so those files would appear under {{/etc/puppetlabs/code/environments/production/modules/}}.  Then, when I did a {{puppet agent -t}} run of the agent on the master, the plugin sync would copy down the module files to the {{/opt/puppetlabs/puppet/cache/lib}} directory on the master.  In particular:\n\n{noformat}\n[root@mypemaster lib]# ls -l /opt/puppetlabs/puppet/cache/lib/puppet_x/jenkins/type/cli.rb\n-rw-r--r--. 1 root root 753 Sep 27 12:58 /opt/puppetlabs/puppet/cache/lib/puppet_x/jenkins/type/cli.rb\n{noformat}\n\nIn other words, can you confirm if the problem is reproducible once you've done an agent run on the master which has plugin synched down files from the rtyler/jenkins module and its related dependencies?", "created": "2016-09-27T14:11:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] that fixes it but that's a really bad permanent solution. \n\nFor example we have our PE Infra controlled under it's own repo and don't want to mix with things like this. \n\nAlso by having environments as such allows to be running and testing different versions of modules. \n\nTherefore requiring the version of a module with a pluginsync requirement like this could have different versions of that plugin sync type/provider in each \"environment\". Only way to avoid this would be to keep every node on the same exact puppet environment to ensure that the same version of that sync'd file is available for every node.", "created": "2016-09-27T14:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:dc702caf-5630-4bcc-9efa-066ea2fc3530], yeah, I agree it is a bad permanent solution for all the reasons you mentioned.  Unfortunately, I don't know of a better one available in current PE code.\n\nPuppet 4.7 introduced a new \"environment isolation\" feature which is relevant here - https://docs.puppet.com/puppet/4.7/reference/environment_isolation.html.  With the use of the {{puppet generate types}} tool, catalog compilations for remote agents can use type definitions which are unique per-environment -- no longer requiring the agent lib directory on the master, {{/opt/puppetlabs/puppet/cache/lib}}, to be populated with content that's used globally / across environments.\n\nWith a master and agent node running open-source Puppet 4.7.0, I used the same Jenkins reproduction code but in an environment called \"jenkins_test\".  My agent on the master did its runs against the \"production\" environment, which did not include the Jenkins modules and its dependencies.  The remote agent was run against the \"jenkins_test\" environment.\n\nEven with the \"ruby-load-path\" on the master set to include the master's lib directory only (and not the agent's lib directory)...\n\n{code}\njruby-puppet: {\n...\n    ruby-load-path: [\n        \"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby\"\n    ]\n...\n}\n{code}\n\n... the remote agent runs succeeded, with the {{jenkins_num_executor}} resource being applied properly.\n\nIn short, then, there should be a better option available to you soon for this.  We expect the new functionality from Puppet 4.7.0 to roll up into the next Y version of PE.  Hopefully, this will meet your needs.\n\nYou may also want to track SERVER-94 for some ongoing discussions about \"environment isolation\".\n", "created": "2016-09-27T16:15:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "Glad to see there is a solution in the works. \nHowever forgive my confusion but why do some pluginsync custom type and providers work fine without requiring master to load those modules during its agent run but these don't? What makes these different that they require this hack or the 4.7.0 changes you mentioned?\nYou'd think that if some can work fine, they all should be able to. ", "created": "2016-09-27T16:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:dc702caf-5630-4bcc-9efa-066ea2fc3530], I would have expected that any custom type/provider implemented in Ruby which is delivered in a module to have required the approach of having an agent run done against the environment on the master (for a plugin sync) and the agent's lib dir to have been added into the Puppet Server master's {{jruby-puppet.ruby-load-path}} setting.  Without adding the agent lib dir to the master's load path, I'm not sure how the master would have been able to resolve the type and provider during catalog compilation.  To my knowledge, we don't have any logic in the Ruby Puppet-level code today which would implicitly have added the lib paths into the Ruby load path for the types and providers in their original directory environment locations on disk.  Did you have an example in mind which doesn't fit this pattern that works without the agent lib dir / pluginsync approach?", "created": "2016-09-27T18:33:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "Would elasticsearch/elasticsearch be good example? I've used the elasticsearch_shield_user and role types without them being sync'd on masters agent. \n", "created": "2016-09-27T18:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Good question.  I think the critical difference is that the {{jenkins_num_executors}} type has a {{require}} statement in it...\n\nhttps://github.com/jenkinsci/puppet-jenkins/blob/v1.7.0/lib/puppet/type/jenkins_num_executors.rb#L1\n\n... whereas the elasticsearch types that you mentioned do not:\n\nhttps://github.com/elastic/puppet-elasticsearch/blob/0.13.2/lib/puppet/type/elasticsearch_shield_role.rb#L1\nhttps://github.com/elastic/puppet-elasticsearch/blob/0.13.2/lib/puppet/type/elasticsearch_shield_role.rb#L1\n\nSince the module's lib directory on disk - /etc/puppetlabs/code/environments/<env>/modules/jenkins/lib - is not implicitly added to the Ruby load path ahead of the {{require}} statement being processed, the cli file cannot be found and the error is displayed.\n\nEven if the Jenkins module types could be rewritten in such a way that they didn't have to reference helper/common functionality in different namespaces, though, the issue you raised earlier about different implementations of the same type/provider in different environments would still be present.  For that, the {{puppet generate types}} tool is the best option we currently have.  That tool creates Puppet code representations of each of the Ruby types which satisfy the master's need to resolve the types during compilation, can be environment specific, and don't pull in any Ruby code (thereby avoiding the problems around the Ruby load path configuration).\n\nDoes that make sense?\n\n", "created": "2016-09-28T10:36:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "{quote}I think the critical difference is that the jenkins_num_executors type has a require statement in it{quote}\n\nYes that is the problem. The autoloader can load the type from the {{<env>}} specific directory, but the autoloader does not participate in loading the helper code that the type is {{require}}ing. This is a long standing puppet bug where the autoloader can only load the immediate type, provider, report processor, etc, but does not load its transitive dependencies. This leads to the split-brain behavior you're seeing.\n\nHaving the agent do a run will temporarily fix the problem, but it is fragile and there is no guarantee that the version of code the agent pluginsync'ed is compatible with the version of code that the master is compiling for that agent's environment.\n\nA better solution is to fix the module so that it doesn't use an unqualified file path in its require statement. See https://puppet.atlassian.net/browse/PUP-4450?focusedCommentId=241533&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-241533 for more details. The short version is to just do:\n\n{code:ruby}\nrequire File.dirname(__FILE__) + ' /../../path/to/helper/code'\n{code}\n\nThere are lots of examples where we do the same:\n\nhttps://github.com/puppetlabs/puppetlabs-mysql/blob/d58a100fa67bc99b4388d4ea3921b11647d483d7/lib/puppet/provider/mysql_database/mysql.rb#L1\nhttps://github.com/puppetlabs/puppetlabs-acl/blob/c62a08341d9a74ab0aefdef7b7a3fbac51a5d915/lib/puppet/type/acl.rb#L5\nhttps://github.com/puppetlabs/puppetlabs-vcsrepo/blob/81d5cff2741a10dc9a3e2c3ba6cfcdc22da6b73b/lib/puppet/provider/vcsrepo/git.rb#L1", "created": "2016-09-28T11:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:63d40628f6e1b543161789a7].  Using a fully-qualified path in the require statement had occurred to me.  Just wasn't sure if we thought that was a good idea to do as a best practice.  Sounds like there's a lot of prior art there, though.", "created": "2016-09-28T11:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:dc702caf-5630-4bcc-9efa-066ea2fc3530], are you satisfied at this point that we've gotten to the root cause of the issue that you were seeing?  If so and given that we now also have the \"environment isolation\" feature shipping in Puppet 4.7 to mitigate the type/provider collision problem, I'm inclined to close out this ticket and use PUP-4885 for further discussion on the long-term approach for resolving the master/agent libdir pollution issue.  Any objections from others?", "created": "2016-09-28T18:39:00.000000"}, {"author": "557058:dc702caf-5630-4bcc-9efa-066ea2fc3530", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Few things:\n - PUP-4885 hasn't had any updates or traction since 2015, so is this a good issue to track for this issue?\n - If Puppet 4.7 fixes the issue with environment isolation, any reason SERVER-94 isn't resolved, is there something that this isn't accounting for?\nI guess I'd have to defer to [~accountid:623a4744a95758006959fe55] since this was originally his case. Would it be reasonable to update the module with the qualified path for the require statement as [~accountid:63d40628f6e1b543161789a7] suggested?\n - Will 4.7 be the version included in 2016.4? As a PE subscriber having a solution for this, along with PUP-6530 fixed in 4.6.0", "created": "2016-09-29T09:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}PUP-4885 hasn't had any updates or traction since 2015, so is this a good issue to track for this issue?{quote}\n\nIt's probably the best issue to track with respect to needing to populate the agent libdir into the master's Ruby load path in order to workaround problems like the one raised with the cli require from the jenkins module in this ticket.  To be honest, I'm not sure that we've rooted out all of the different situations in which the pluginsync via an agent run on the master is necessary.  There's a fair bit of discussion on SERVER-571, for example, that goes into how this issue affects other extension points besides types and providers - hiera plugins, custom report processors, etc.  I can't speak to timing on any additional improvements which may be pursued in that area although maybe [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] can?\n\n{quote}If Puppet 4.7 fixes the issue with environment isolation, any reason SERVER-94 isn't resolved, is there something that this isn't accounting for?{quote}\n\nPuppet 4.7 provides a method for mitigating the problem of colliding implementations among types/providers across environments, which is relevant for the jenkins module issues discussed in this case.  There's a broader discussion going on in SERVER-94 beyond just the type/provider pollution issue - including possibilities for doing broader isolation of all aspects of an environment (e.g., for Ruby helper functions).\n\n{quote}I guess I'd have to defer to Joshua Hoblitt since this was originally his case. Would it be reasonable to update the module with the qualified path for the require statement as Josh Cooper suggested?{quote}\n\nI can't think of a reason why that would not work.  I think it will involve applying a fully-qualified path to all of the {{require}} statements that are sourced from the affected types on down through the different helper Ruby files that they use but it seems doable.  The pattern that [~accountid:63d40628f6e1b543161789a7] mentioned, though, should be considerably easier - just changing the content of each {{require}} line - than applying the larger begin/rescue block linked from the nanliu/archive module in this issue's description.  I guess I'd too have to defer to [~accountid:623a4744a95758006959fe55] as to whether that's something that would be reasonable to change in the Jenkins module code.\n\n{quote}Will 4.7 be the version included in 2016.4? As a PE subscriber having a solution for this, along with PUP-6530 fixed in 4.6.0{quote}\n\nI believe the code from Puppet 4.7 will be rolled up into the next PE Y release, yes, but will defer to [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] on exact version numbers.", "created": "2016-09-29T10:17:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] should this be targeted for SERVER 5.0?", "created": "2017-03-29T11:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] I don't believe we're doing anything in the Puppet 5 timeframe which is related to this ticket.  With respect to the specific issues referenced here, I agree with [~accountid:63d40628f6e1b543161789a7]'s original suggestion that \"unable to load code\" error could be addressed by making a change in affected module implementations to use a qualified path for any require statements which reference helper code.  It may make sense to close this issue with this recommendation.  Also, as mentioned earlier, there was [some work delivered in Puppet 4.7|https://docs.puppet.com/puppet/latest/environment_isolation.html] which may mitigate the worst of the environment isolation issues related to this case, those where sourcing of Ruby code for differing type definitions per environment on the master could be replaced with the use of types generated in the Puppet language.  Longer term, there's still some work around the environment and agent / master isolation issues raised in this thread which might be better to track in SERVER-94 and PUP-4885.", "created": "2017-03-29T11:45:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "Thanks, [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]. Should it be removed from the epic (PUP-4885) then (since it is targeted for PUP 5.0)?", "created": "2017-03-29T11:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] Yeah, I think 'PUP 5.0' should be removed from the PUP-4885 epic.", "created": "2017-03-29T11:50:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "This issue can be resolved by requiring the absolute path or using relative_require. In both cases, types or report processors will be able to load helper code when running in server or apply contexts. And it doesn\u2019t rely on adding the local agent\u2019s libdir to the servers ruby load path. I\u2019m going to close this as there\u2019s nothing for puppet to do here.", "created": "2022-02-16T23:49:00.000000"}], "components": ["Puppet Server"], "created": "2015-10-12T16:48:00.000000", "creator": "623a4744a95758006959fe55", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7137da46"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-7537"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtzr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1271073705_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_55667204904_*|*_10005_*:*_2_*:*_143452249045"}], "description": "puppetserver appears to be unable to load (require) ruby code that resides in paths other than `lib/puppet` inside of a module.  This breaks any module that follows the recommended convention of putting module specific logic into the PuppetX::<vendor> name space (./lib/puppet_x/<vendor>/...).\n\nThere is a known work around:  https://github.com/nanliu/puppet-archive/blob/766062a3465053ca8a326ea0b3c31648a49474a4/lib/puppet/provider/archive/default.rb#L1-L10 but it is both hackish and needs to be applied to all files that require code from outside ./lib/puppet/.  I'm facing having to insert this boiler plate into ~20 files for my module to be compatible with puppetserver, which is undesirable.  It's also undesirable to require users to have to change their puppetserver configuration to support this idiom.\n\n{code:java}\n2015-10-12 13:16:39,202 INFO  [puppet-server] Puppet Caching node for agent.lsst.org\n2015-10-12 13:16:39,283 ERROR [puppet-server] Puppet Could not autoload puppet/type/jenkins_user: no such file to load -- puppet_x/jenkins/type/cli\norg/jruby/RubyKernel.java:1072:in `require'\n/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54:in `require'\n/etc/puppet/modules/jenkins/lib/puppet/type/jenkins_user.rb:1:in `(root)'\norg/jruby/RubyKernel.java:1091:in `load'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/autoload.rb:1:in `(root)'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/autoload.rb:62:in `load_file'\n{code}\n\n", "environment": "EL6", "epicLinkSummary": "Agent/Master Separation", "estimate": "PT0S", "externalId": "15579", "fixedVersions": [], "id": "15579", "issueType": "Bug", "key": "SERVER-973", "labels": [], "originalEstimate": "PT0S", "parent": "26182", "parentSummary": "Agent/Master Separation", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4744a95758006959fe55", "resolution": "Incomplete", "resolutionDate": "2022-02-16T23:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "unable to load code from puppet modules outside of `lib/puppet`", "timeSpent": "PT0S", "updated": "2022-02-16T23:50:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Filed PUP-5351 to cover the work to be done in core Ruby Puppet to enable Puppet Server with another hook for bypassing loading of the Ruby-based auth.conf file.", "created": "2015-10-12T09:59:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "\nEcD To test by checking log file:\nSet the \"use-legacy-auth-conf\" to false, validate that we no longer see a list of messages enumerating the contents of the ruby auth.conf.\nIf Set to True, we should the auth.conf ruby messages.\n", "created": "2015-10-14T16:23:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server master at [ddb02f|https://github.com/puppetlabs/puppet-server/commit/ddb02f9c2f13e334e2072d3c22a6ed97db8228dd].", "created": "2015-10-15T14:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Full Jenkins integration suite runs have been green for many days with this fix integrated.  Last full suite run is here: http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/208/.\n\nMoving to testing.", "created": "2015-10-28T09:31:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated in 2015.3.0-rc4-40-g68d9651", "created": "2015-10-28T12:41:00.000000"}], "components": [], "created": "2015-10-07T18:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@509330cb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyobuv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Discovered when doing the tk-auth logging work, pulled in b/c of bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1104380129_*|*_1_*:*_1_*:*_405380349_*|*_10007_*:*_1_*:*_180077340_*|*_3_*:*_1_*:*_92994321_*|*_5_*:*_1_*:*_1934815374_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_11398335_*|*_10006_*:*_1_*:*_81696"}], "description": "When the {{jruby-puppet.use-legacy-auth-conf}} flag is set to {{false}}, Puppet Server is configuring Ruby Puppet to ignore its embedded auth.conf with respect to authorizing the request.  This is working in the sense that authorization is actually being skipped at the Ruby Puppet layer, however, the \"auth.conf\" file is still being processed and, therefore, messages end up being written to the puppetserver log.  For example, you would see messages like the following written out following the first request after Puppet Server is started up:\n\n{noformat}\n2015-10-07 16:01:09,609 INFO  [puppet-server] access[/] adding authentication any\n2015-10-07 16:01:09,609 INFO  [puppet-server] access[/] adding authentication any\n2015-10-07 16:01:09,609 INFO  [puppet-server] access[/] allowing * access\n{noformat}\n\nThe appearance of these messages in the log file could be confusing to a user since they are not actually used for authorization purposes.  It would be better to have this logic skipped when Ruby auth.conf is disabled.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15357", "fixedVersions": ["SERVER 2.2.0"], "id": "15357", "issueType": "Task", "key": "SERVER-972", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-28T12:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet's auth.conf still read / messages logged when use-legacy-auth-conf false", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2015-10-07T03:01:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:7485ab63-dd2a-442e-a9a4-d37e6a84551f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57279c7c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2k3j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_94561541_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_17299_*|*_10005_*:*_1_*:*_74331809197"}], "description": "I am trying to do a POC for Puppet labs.However I am unable to find a link to configure dashboard-vhosts.conf. \nhttps://www.youtube.com/watch?v=cHRHKKkCdTU\n\nnow I am gettting following error in dashboard error logs\nDirectory index forbidden by Options directive: /usr/share/puppet-dashboard/public/", "environment": "POC for evaluation against  depolyment\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16474", "fixedVersions": [], "id": "16474", "issueType": "Bug", "key": "SERVER-970", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:7485ab63-dd2a-442e-a9a4-d37e6a84551f", "resolution": "Won't Fix", "resolutionDate": "2018-02-14T12:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet dashboard not working", "timeSpent": "PT0S", "updated": "2018-02-14T12:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi [~accountid:623c133ed32a94006a649947].  I think you're on the right track", "created": "2015-10-06T08:30:00.000000"}, {"author": "623c133ed32a94006a649947", "body": "Thanks for your answer. It is now working.\n\nIndeed, I've tried to add the jar file using an extra args '-cp' in the /etc/default/puppetserver file :( But my value was overridden by the \"cp\" found in the init.d file.\n\nThere is no easy way right now, to add an extra jar, because the cp  is hard coded in the init.d file. Here is a little fix to help with this case :  \n\ndiff /etc/default/puppetserver /etc/default/puppetserver.orig\n11,12d10\n< EXTRA_JAR=\":/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/jdbc-mysql-5.1.36/lib/mysql-connector-java-5.1.36-bin.jar\"\n\ndiff /etc/init.d/puppetserver /etc/init.d/puppetserver.orig\n34c34\n< JAVA_ARGS=\"${JAVA_ARGS} -cp '${INSTALL_DIR}/${JARFILE}${EXTRA_JAR}' clojure.main -m puppetlabs.trapperkeeper.main --config ${CONFIG} -b '${BOOTSTRAP_CONFIG}'\"\n---\n> JAVA_ARGS=\"${JAVA_ARGS} -cp '${INSTALL_DIR}/${JARFILE}' clojure.main -m puppetlabs.trapperkeeper.main --config ${CONFIG} -b '${BOOTSTRAP_CONFIG}'\"\n\nIs it possible to include such fix in the next release ? (maybe with a better name ? )\n\nor maybe using a CLASSPATH variable in the default/sysconfig puppetserver file,  and set this variable to CLASSPATH=${CLASSPATH}:${INSTALL_DIR}/${JARFILE} in the init.d file ?\n\nRegards\n\nOlivier", "created": "2015-10-07T03:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Glad you were able to get it working!  Yes, we do need to improve that.  We have a ticket, SERVER-249, about that", "created": "2015-10-07T08:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Closing this as a dupe of SERVER-249 since the workaround seemed to resolve this particular occurrence of the problem.  Please feel free to re-open if there is still an issue.", "created": "2015-10-14T11:21:00.000000"}], "components": ["DOCS"], "created": "2015-10-06T03:50:00.000000", "creator": "623c133ed32a94006a649947", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@77add677"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2jef:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_718215813_*|*_6_*:*_1_*:*_0"}], "description": "Hello, \n\nIn a erb file, we were using the Mysql DBI driver. It works great within a puppetmaster environment.  But I can't get this erb file working inside puppetserver. \n\nAfter reading [link native-c-extension|https://docs.puppetlabs.com/puppetserver/latest/gems.html#gems-with-native-c-extensions], I've switched to jdbc/mysql. But I can't get it working. \n\nHere a simple code that didn't run inside a puppserver \n\n{quote}\nrequire 'dbi'\nrequire 'dbd/Jdbc'\nrequire 'jdbc/mysql'\nJdbc::MySQL.load_driver\nDBI.connect('dbi:jdbc:mysql://localhost/test', 'username', 'password', 'driver' => 'com.mysql.jdbc.Driver') do |dbh|\n puts \"Connected\"\nend\n{quote}\n\nIt gives: \n\n{quote}\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Function Call, Failed to parse template test.erb:\n  Filepath: /opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/dbd-jdbc-0.1.6-java/lib/dbd/jdbc/driver.rb\n  Line: 66\n  Detail: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/test\n at /etc/puppetlabs/code/environments/ohanesse/modules/test/manifests/ohanesse.pp:7:16 on node test-*\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n{quote}\n\nI've tried to add the 'mysql-connector-java-5.1.36-bin\" jar file to the classpath (using -cp in the command line), same error.\n\nAny ideas ?\n", "environment": "Debian Wheezy with PC1 repo \n\nii  puppetserver                         2.1.1-1puppetlabs1            all          Puppet Labs puppetserver\n\npuppetserver gem list\n\n*** LOCAL GEMS ***\n\ndbd-jdbc (0.1.6 java)\ndbi (0.4.5)\ndeprecated (2.0.1)\nhiera-eyaml (2.0.8)\nhighline (1.6.21)\njar-dependencies (0.1.13)\njdbc-mysql (5.1.36)\njruby-openssl (0.9.7 java)\njson (1.8.0 java)\nrake (10.1.0)\nrdoc (4.1.2)\ntrollop (2.1.2)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15354", "fixedVersions": [], "id": "15354", "issueType": "Bug", "key": "SERVER-969", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c133ed32a94006a649947", "resolution": "Duplicate", "resolutionDate": "2015-10-14T11:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Calling jbdc-mysql inside puppetserver jruby", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "5b61153325ea8f2ca147bd04", "created": "2015-10-02T17:05:00.000000", "name": "slow_sync.gif", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10866"}], "comments": [{"author": "5b61153325ea8f2ca147bd04", "body": "Former user pointed out to me that a more likely cause of this is that we're killing jruby threads after a handful of requests because of memory bloating issues. The solution is probably the same (reimplement fileserver in clojure?) but my initial analysis is probably wrong.", "created": "2015-10-02T17:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5b61153325ea8f2ca147bd04] thanks for filing this.\n\nWhat settings are you using for max-active-instances, max-requests-per-instance, and -Xmx?", "created": "2015-10-05T10:19:00.000000"}, {"author": "5b61153325ea8f2ca147bd04", "body": "{code}\nJAVA_ARGS=\"-Xms8192m -Xmx8192m -XX:MaxPermSize=512m\"\nmax-requests-per-instance : 4\n{code}\n\nmax-active-instances is set to the default, on a box with 6 cores. (should be 8?)\n\nI realize that max-requests-per-instance is extraordinarily low -- the reason for that is avoiding OOMing due to the large number of environments we run. We have a larger number on our compile masters -- this is just on the master of masters.", "created": "2015-10-05T19:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "So, for PE 2015.2.1, the default number of JRubies will be the lower value out of (num cores - 1) or 4.  So, 4 in your case.\n\n{{max-requests-per-instance}} is extraordinarily low as well.  Even if you were doing zero catalog compiles, if you had 5 agents trying to do a pluginsync at the same time, and we had to flush each JRuby instance after 4 requests, that will be really, really slow.\n\nSo, for now, I'd say that if you guys are having to keep {{max-requests-per-instance}} and {{max-active-instances}} set that low due to PE-10214 / PE-10759, then we need to fix that before we jump to any conclusions about file requests.  (Those tickets are at the very, very top of my post-Ankeny hitlist.)\n\nI think it's likely there are still big wins to be had by improving the file handling code afterwards, but I'd say there's a 90% chance that what you're describing goes away once we are able to get your JRuby settings tuned rationally.\n\nIn the interim if you'd like some help or pointers on tweaks we could try making to those settings before the memory improvements land, we'd be happy to help.  And we should definitely revisit this ticket and see how things are going after the memory changes land.", "created": "2015-10-06T08:40:00.000000"}, {"author": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] With the follow specs and settings (PE 2015.2.0), puppetserver crashed after about 13 hours with a heap OOM.\n\n6-core, 24GiB total RAM\n\nmax-requests-per-instance: 8\nmax-active-instances: 6\nJAVA_ARGS=\"-Xms12288m -Xmx12288m -XX:MaxPermSize=512m\"\nenvironment_timeout = 0\n\nThe MaxPermSize setting was leftover from when I was tuning for PE 3.8, I only just realized as I'm writing this that it is no longer relevant.\n\nBefore, I had it max-active-instances at default (so 4) and max-requests-per-instance at 4, with 8192m for the heap, and it stayed online indefinitely, so somewhere between that and this we run into issues, and it's getting out of the realm of reasonability to give the MoM more than 24G RAM just to run compiles for half a dozen nodes, the CA service for ~400 (which aren't even connected yet), PuppetDB, and the Console.\n\nAny tuning suggestions would be quite welcome", "created": "2015-10-06T16:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\nit's getting out of the realm of reasonability to give the MoM more than 24G RAM just to run compiles for half a dozen nodes\n{quote}\n\nBelieve me, I understand and agree with that", "created": "2015-10-06T18:57:00.000000"}, {"author": "5b61153325ea8f2ca147bd04", "body": "Former user can I assign this ticket to you so you can collaborate with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] on tuning? (might be worth converting this to an ops ticket at this point)", "created": "2015-10-07T08:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5b61153325ea8f2ca147bd04] I'd love to keep a SERVER ticket open about improving the filemeta request performance because I do believe there's a real issue there to poke at.  But I think you're probably right that the tuning conversation for the interim situation might be best on an OPS ticket, maybe we can create a new one for that?  If you ping me there I'll be happy to help.  Also happy to help in person once we're all back in the office if that's easier.", "created": "2015-10-08T08:11:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We've created the epic SERVER-2026 to track moving file serving into clojure", "created": "2017-11-28T10:43:00.000000"}], "components": ["Performance", "Puppet Server"], "created": "2015-10-02T17:12:00.000000", "creator": "5b61153325ea8f2ca147bd04", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51c05a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1789"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2hyn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1015614147_*|*_6_*:*_2_*:*_32739_*|*_10005_*:*_1_*:*_67047825731"}], "description": "puppetserver (or perhaps nginx in PE) currently runs into what I believe are head-of-line blocking performance issues because fileserver requests and catalog compile requests end up in the same queue.\n\nWe're setting up a PE 2015.2.1 master that currently has about 5 nodes connected, including itself, currently running on 3 CPU cores and 24gb memory. The initial module sync for a new node takes 15+ minutes. I'm attaching a gif of a screen recording of three minutes of it, to give a sense for the pace. It's too heavily compressed to see many details, idea is just to show general performance.\n\nI don't know what the right solution is. We've experimented with terminating SSL at the load balancer and using that to create separate queues for fileserver and other requests, and have also tried sending fileserver requests to a dedicated master that doesn't do compiles. I suspect you can do something much more elegant inside of puppetserver.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and I discussed this in hipchat a few days ago, so feel free to close if there's a better ticket to attach this to. I'm just reporting it again because it feels like it's probably relatively low hanging fruit for improving performance.", "epicLinkSummary": "Characterize JRuby performance problems", "estimate": "PT0S", "externalId": "17046", "fixedVersions": [], "id": "17046", "issueType": "Improvement", "key": "SERVER-968", "labels": [], "originalEstimate": "PT0S", "parent": "15992", "parentSummary": "Characterize JRuby performance problems", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b61153325ea8f2ca147bd04", "resolution": "Duplicate", "resolutionDate": "2017-11-28T10:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "improve fileserver api request performance", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-10-01T10:34:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33c4f480"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2h1b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Prep for forthcoming Puppet Server 2.2.0 release."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24239919_*|*_10007_*:*_1_*:*_63300905_*|*_3_*:*_1_*:*_4766253_*|*_5_*:*_1_*:*_31184347733_*|*_6_*:*_1_*:*_0"}], "description": "For QENG-2770, we temporarily reduced the set of OS platforms that the puppet-server CI nightly jobs for the master branch were using.  We did this because, at the time, only a reduced set of OS packages were being built for puppet-agent.  Since that time, though, the fuller set of OS packages are now being built on a nightly basis for puppet-agent master.  See https://jenkins.puppetlabs.com/view/All%20in%20One%20Agent/view/Master/view/Puppet%20Agent%20Daily/job/platform_aio-suite_pkg-promote_master-pe/.\n\nWe should re-expand the set of OSes that puppet-server CI nightly jobs are using in order to increase coverage.  This will probably just involve undoing the ci-job-config change that was made for QENG-2770.  In the process, we should confirm that the latest puppet-agent version being used in Puppet Server maps to a puppet-agent daily/nightly build off of the master branch.  Note that puppet-agent per-merge builds likely are still using the reduced matrix, so we want to be using the daily/nightly builds from puppet-server since our CI will require it.\n\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15575", "fixedVersions": [], "id": "15575", "issueType": "Task", "key": "SERVER-966", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-02T12:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Re-expand puppet-server master periodic jobs to \"full OS\" matrix", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2015-09-30T16:03:00.000000", "creator": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a76894"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1ten:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Forgot to include during sprint planning"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1676788_*|*_3_*:*_1_*:*_1043723270_*|*_5_*:*_1_*:*_30297919951_*|*_6_*:*_1_*:*_0"}], "description": "Represents all puppetconf work during this sprint by the team.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15831", "fixedVersions": [], "id": "15831", "issueType": "Task", "key": "SERVER-965", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "resolution": "Fixed", "resolutionDate": "2015-10-12T18:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "PuppetConf work by team", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623e7507866b810069e57527] Is this a duplicate of SERVER-402?", "created": "2015-09-30T10:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server master at [e2a854|https://github.com/puppetlabs/puppet-server/commit/e2a854b25b23fd7342f577c58e44a266b2b1941c].", "created": "2015-10-01T16:39:00.000000"}], "components": [], "created": "2015-09-30T10:46:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@69aeae4a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1tef:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_422779213_*|*_1_*:*_1_*:*_2792972_*|*_10007_*:*_1_*:*_90270535_*|*_3_*:*_1_*:*_4892751_*|*_5_*:*_1_*:*_3830555336_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_9621442"}], "description": "In Puppet Server, we are overriding a bunch of the webserver settings with settings from Ruby Puppet if those settings are not explicitly present in the configuration. That check is performed [here|https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/services/config/puppet_server_config_core.clj#L117] in the configuration service. \n\nThe call to that function containing that check is performed [here|https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/services/config/puppet_server_config_service.clj#L28-L30]. Puppet Server is explicitly reading the settings under the {{:webserver}} key to check if they need to be overridden.\n\nThis works fine if only a single webserver is configured. However, TK-Jetty9 allows you to configure one or more webservers by assigning a webserver an id. In this case, the configuration for the Puppet SErver webserver no longer lives under the {{:webserver}} key. As a result, this check will always fail, and the webserver configuration will always be overridden by values from ruby Puppet.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16201", "fixedVersions": ["SERVER 2.2.0"], "id": "16201", "issueType": "Bug", "key": "SERVER-964", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Fixed", "resolutionDate": "2015-10-06T14:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server always overrides webserver settings when multiple webservers are configured", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27887002"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2ffj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_160730_*|*_5_*:*_1_*:*_29138765536_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1792850805"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.1.2%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16200", "fixedVersions": [], "id": "16200", "issueType": "Sub-task", "key": "SERVER-963", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-20T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7cdd10bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2ffb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_163596_*|*_5_*:*_1_*:*_29138851159_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1792772240"}], "description": "Update dujour to notify users to use 2.1.2.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15829", "fixedVersions": [], "id": "15829", "issueType": "Sub-task", "key": "SERVER-962", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-20T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.1.2", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c81ea36"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2ff3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_165787_*|*_5_*:*_1_*:*_29135560659_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1796045458"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15572", "fixedVersions": [], "id": "15572", "issueType": "Sub-task", "key": "SERVER-961", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-20T12:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@757401c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_168401_*|*_5_*:*_1_*:*_29138905169_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1792722175"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15351", "fixedVersions": [], "id": "15351", "issueType": "Sub-task", "key": "SERVER-960", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-20T11:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e323b62"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fen:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_171250_*|*_5_*:*_1_*:*_29202195208_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1729410343"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15009", "fixedVersions": [], "id": "15009", "issueType": "Sub-task", "key": "SERVER-959", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T18:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17f589e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fef:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_172911_*|*_5_*:*_1_*:*_29202217766_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1729405428"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17572", "fixedVersions": [], "id": "17572", "issueType": "Sub-task", "key": "SERVER-958", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T18:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3157275"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fe7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_176574_*|*_5_*:*_1_*:*_29200945228_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1730663949"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n  * [~accountid:623c08e1562ab90069f8aed4]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17396", "fixedVersions": [], "id": "17396", "issueType": "Sub-task", "key": "SERVER-957", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T18:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Installed puppet server and puppet DB on the following platform:\nUbuntu 12.04.05\nUbuntu 14.04\nCent 6\nCent 7\nand everything went fine", "created": "2015-10-19T17:14:00.000000"}], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a0ba45"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fdz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_178001_*|*_5_*:*_1_*:*_29205279904_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1726348025"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17045", "fixedVersions": [], "id": "17045", "issueType": "Sub-task", "key": "SERVER-956", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c593b3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fdr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_181329_*|*_5_*:*_1_*:*_29205126881_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1726485114"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16703", "fixedVersions": [], "id": "16703", "issueType": "Sub-task", "key": "SERVER-955", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Release notes added in PR 739.", "created": "2015-10-15T01:53:00.000000"}], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63ca0512"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fdj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_183561_*|*_10009_*:*_1_*:*_1171063580_*|*_5_*:*_1_*:*_28435136086_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1325412789"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16473", "fixedVersions": [], "id": "16473", "issueType": "Sub-task", "key": "SERVER-954", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-28T15:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b53bc62"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fdb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_185846_*|*_5_*:*_1_*:*_29205187991_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1726420966"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16199", "fixedVersions": [], "id": "16199", "issueType": "Sub-task", "key": "SERVER-953", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T17:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Not applicable to this release.", "created": "2015-10-15T13:05:00.000000"}], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@389c10f2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fd3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_187560_*|*_5_*:*_1_*:*_30058190236_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1365712558"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15827", "fixedVersions": [], "id": "15827", "issueType": "Sub-task", "key": "SERVER-952", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2015-10-15T13:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-09-27T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d3a6bb1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fcv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_190221_*|*_5_*:*_1_*:*_29205290800_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1726326668"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15570", "fixedVersions": [], "id": "15570", "issueType": "Sub-task", "key": "SERVER-951", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@374a5405"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fcn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_193287_*|*_3_*:*_1_*:*_538834040_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1365678528"}], "description": "Use the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15349", "fixedVersions": [], "id": "15349", "issueType": "Sub-task", "key": "SERVER-950", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-10-21T18:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets", "timeSpent": "PT0S", "updated": "2015-10-21T18:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:39:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5893feaf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fcf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_195212_*|*_5_*:*_1_*:*_29205304770_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1726321316"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.1.2%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15007", "fixedVersions": [], "id": "15007", "issueType": "Sub-task", "key": "SERVER-949", "labels": [], "originalEstimate": "PT0S", "parent": "17571", "parentSummary": "puppetserver 2.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:39:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@781a4946"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz28wf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75486080_*|*_5_*:*_1_*:*_29627638548_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1720797337"}], "description": "puppetserver 2.1.2 2015-10-19 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17571", "fixedVersions": [], "id": "17571", "issueType": "Task", "key": "SERVER-948", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-20T12:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.1.2 2015-10-19 Release", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26769eca"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fbr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_366906_*|*_3_*:*_1_*:*_192866_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4422583087"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%22SERVER%202.2.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15825", "fixedVersions": [], "id": "15825", "issueType": "Sub-task", "key": "SERVER-947", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T21:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c4fbcc2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fbj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_368627_*|*_5_*:*_1_*:*_26521602342_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4410468439"}], "description": "Update dujour to notify users to use 2.2.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15567", "fixedVersions": [], "id": "15567", "issueType": "Sub-task", "key": "SERVER-946", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T17:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.2.0", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sent messages to:\n\n* Puppet Users - https://groups.google.com/forum/#!topic/puppet-users/N0ZE9DcgcQ0\n* Puppet Developers - https://groups.google.com/forum/#!topic/puppet-dev/NzQXvJzZCmk\n* Puppet Announce - https://groups.google.com/forum/#!topic/puppet-announce/3wlCmG0dXWI", "created": "2015-11-19T21:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "fyi, [~accountid:557058:41dc5120-addb-42c7-aff4-2d00c35c948c] and [~accountid:557058:96a443bf-a3ab-426b-9442-ce50c9977428].", "created": "2015-11-20T10:56:00.000000"}], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17c6cede"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fbb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_372139_*|*_3_*:*_1_*:*_8597_*|*_5_*:*_1_*:*_26510283504_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4422331704"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15346", "fixedVersions": [], "id": "15346", "issueType": "Sub-task", "key": "SERVER-945", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-11-19T21:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm now seeing content under http://docs.puppetlabs.com/puppetserver/2.2/, so I assume this is done.  Marking this as resolved...", "created": "2015-11-19T17:48:00.000000"}], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@262c3b7e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fb3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_374084_*|*_5_*:*_1_*:*_26521279999_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4410775045"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15006", "fixedVersions": [], "id": "15006", "issueType": "Sub-task", "key": "SERVER-944", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T17:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b8f694a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fav:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_376755_*|*_5_*:*_1_*:*_26522360100_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4409697959"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17570", "fixedVersions": [], "id": "17570", "issueType": "Sub-task", "key": "SERVER-943", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T17:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14ec26e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fan:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_379341_*|*_5_*:*_1_*:*_26522388202_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4409679653"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17395", "fixedVersions": [], "id": "17395", "issueType": "Sub-task", "key": "SERVER-942", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T17:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Had a go/no go meeting.  Received a (y) from [~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584], [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], and [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e].", "created": "2015-11-19T12:56:00.000000"}], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52b3e95c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2faf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_381232_*|*_3_*:*_1_*:*_1127500_*|*_5_*:*_1_*:*_26538815073_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4392124576"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n  * [~accountid:623c08e1562ab90069f8aed4]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17044", "fixedVersions": [], "id": "17044", "issueType": "Sub-task", "key": "SERVER-941", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T12:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] and I did smoke testing on Cent6, Cent7, Debian7, and Ubuntu14.04.  All testing went well - showed no issues.\n\nThe steps roughly involved:\n\n1) Installed puppetserver 2.2.0.\n\n2) Installed puppetdb via a puppet agent run against the server.\n\n3) Did another agent run and confirmed, via curl to the reports endpoint, that puppetdb stored a report with reasonable-looking data for the puppet agent run.\n\n4) Cleaned off VM.\n\n5) Installed puppetserver 2.1.2.\n\n6) Did an agent run and confirmed it was successful.\n\n7) Upgraded to puppetserver 2.2.0.\n\n8) Did another agent run and confirmed it was successful.\n\n9) Ran puppetserver --version command to confirm that the system was running puppetserver 2.2.0.\n", "created": "2015-11-19T12:36:00.000000"}], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5cb51bd7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2fa7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_385697_*|*_10007_*:*_1_*:*_4753_*|*_3_*:*_1_*:*_48619683_*|*_5_*:*_1_*:*_26539994011_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4343441652"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16702", "fixedVersions": [], "id": "16702", "issueType": "Sub-task", "key": "SERVER-940", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T12:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] - here's the merge-commit where we bumped puppet-server to 2.2.0 - https://github.com/puppetlabs/puppet-server/commit/25ffc3a27675aa8740ca0f612478a3156345cbf4.", "created": "2015-11-19T13:02:00.000000"}, {"author": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] we normally tag off of the actual commit not the merge commit, so I'm tagging off a51c605d5cace4b62ab3cca929919a756f8e87b2", "created": "2015-11-19T14:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] Sounds good, thanks!", "created": "2015-11-19T14:39:00.000000"}], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5cd36687"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f9z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_387257_*|*_5_*:*_1_*:*_26522400263_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4409652531"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16472", "fixedVersions": [], "id": "16472", "issueType": "Sub-task", "key": "SERVER-939", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T17:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Release noted added in PR 739.", "created": "2015-10-15T01:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Release notes were merged to the puppet-server stable branch at [965c3a|https://github.com/puppetlabs/puppet-server/commit/965c3a6be530aaa2d8321f14826dc1f7b1d0203f].  Resolving this ticket...", "created": "2015-11-19T16:54:00.000000"}], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42cc34be"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f9r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_389205_*|*_10009_*:*_1_*:*_3081665069_*|*_5_*:*_1_*:*_26524508256_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1325879278"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16198", "fixedVersions": [], "id": "16198", "issueType": "Sub-task", "key": "SERVER-938", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T16:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e82007b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f9j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_392609_*|*_3_*:*_1_*:*_30012532_*|*_5_*:*_1_*:*_26509958600_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4392079270"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15823", "fixedVersions": [], "id": "15823", "issueType": "Sub-task", "key": "SERVER-937", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T20:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The old stable branch was merged up into the master branch at [9dda9f|https://github.com/puppetlabs/puppet-server/commit/9dda9fba997da9e18b8d525d18e568410d926d7c], which also became the new head of the stable branch prior to the release.", "created": "2015-11-18T15:44:00.000000"}], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@376a22f2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f9b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Want to do this a few days prior to the 2.2.0 release"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_394543_*|*_5_*:*_1_*:*_26615047135_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4317008784"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15564", "fixedVersions": [], "id": "15564", "issueType": "Sub-task", "key": "SERVER-936", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-18T15:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:31c596d1-7e27-4c91-bc18-1254edb3caab] - here's the merge-commit where we bumped puppet-server to 2.2.0 - https://github.com/puppetlabs/puppet-server/commit/25ffc3a27675aa8740ca0f612478a3156345cbf4.", "created": "2015-11-19T12:28:00.000000"}], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@663de28e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f93:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_396597_*|*_3_*:*_1_*:*_75065715_*|*_5_*:*_1_*:*_26540499213_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4316495445"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15343", "fixedVersions": [], "id": "15343", "issueType": "Sub-task", "key": "SERVER-935", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T12:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d52d008"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_398912_*|*_5_*:*_1_*:*_26615376944_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4316681260"}], "description": "Use the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15005", "fixedVersions": [], "id": "15005", "issueType": "Sub-task", "key": "SERVER-934", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-18T15:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "SERVER 2.2.0 packages went through CI and passed on all OSes.  See http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-stable/218/ and http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-stable/219/.", "created": "2015-11-19T12:25:00.000000"}], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@298496bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f8n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_401846_*|*_3_*:*_1_*:*_74319200_*|*_5_*:*_1_*:*_26540653219_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4317076695"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.2.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17569", "fixedVersions": [], "id": "17569", "issueType": "Sub-task", "key": "SERVER-933", "labels": [], "originalEstimate": "PT0S", "parent": "17394", "parentSummary": "puppetserver 2.2.0 2015-11-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T12:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@350f4c41"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyobuf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_76127704_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4347061877"}], "description": "puppetserver 2.2.0 2015-11-12 Release\n\nDependent on agent 1.3.0\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17394", "fixedVersions": ["SERVER 2.2.0"], "id": "17394", "issueType": "Task", "key": "SERVER-932", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-11-19T21:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.2.0 2015-11-19 Release", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:07:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64439723"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f7j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_830175_*|*_3_*:*_1_*:*_459900076_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1445922870"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%221.1.2%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15562", "fixedVersions": [], "id": "15562", "issueType": "Sub-task", "key": "SERVER-931", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-10-21T18:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2015-10-21T18:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:07:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50428f42"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f7b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_831783_*|*_5_*:*_1_*:*_29138818072_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1794121586"}], "description": "Update dujour to notify users to use 1.1.2.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15340", "fixedVersions": [], "id": "15340", "issueType": "Sub-task", "key": "SERVER-930", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-20T11:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 1.1.2", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:07:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d84acc8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f73:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_835178_*|*_5_*:*_1_*:*_29135569926_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1797371378"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15004", "fixedVersions": [], "id": "15004", "issueType": "Sub-task", "key": "SERVER-929", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-20T12:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:07:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a306508"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f6v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_836965_*|*_5_*:*_1_*:*_29138892063_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_15233_*|*_10006_*:*_2_*:*_1794033012"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17568", "fixedVersions": [], "id": "17568", "issueType": "Sub-task", "key": "SERVER-928", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-20T11:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:07:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@cfb5174"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f6n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_840213_*|*_5_*:*_1_*:*_29202158269_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1730781990"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17392", "fixedVersions": [], "id": "17392", "issueType": "Sub-task", "key": "SERVER-927", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T18:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d354c4f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f6f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_842107_*|*_5_*:*_1_*:*_29202184383_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1730752091"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17043", "fixedVersions": [], "id": "17043", "issueType": "Sub-task", "key": "SERVER-926", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T18:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48fa4132"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f67:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_844966_*|*_5_*:*_1_*:*_29200955571_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1731984611"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n\nParticipants:\n  * [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n  * [~accountid:623c08e1562ab90069f8aed4]\n  * [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]\n  * [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]\n", "duedate": "2015-10-19T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16701", "fixedVersions": [], "id": "16701", "issueType": "Sub-task", "key": "SERVER-925", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T18:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Installed puppet server and puppet DB on the following platform:\n\nUbuntu 12.04.05\nUbuntu 14.04\nCent 6\nCent 7\n\nand everything went fine", "created": "2015-10-19T17:13:00.000000"}], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b7de5c8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f5z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_846402_*|*_5_*:*_1_*:*_29205308207_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1727635467"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\nFor the Puppet gem, we don't yet have automated acceptance testing, so some quick manual smoke testing should always be performed.  Platform packages express their dependencies differently than gems, so it's possible to encounter a situation where the build pipeline produced packages out of sync with the gems.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * gem - select one Linux for the universal gem, Windows with x64 platform-specific gem, and Windows with x86 platform-specific gem\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16411", "fixedVersions": [], "id": "16411", "issueType": "Sub-task", "key": "SERVER-924", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T17:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:31c596d1-7e27-4c91-bc18-1254edb3caab", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2be95218"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f5r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_848831_*|*_5_*:*_1_*:*_29205112803_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1727825720"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16196", "fixedVersions": [], "id": "16196", "issueType": "Sub-task", "key": "SERVER-923", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T17:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Release notes added in PR 740.", "created": "2015-10-15T01:52:00.000000"}], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f60928b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f5j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_851405_*|*_10009_*:*_1_*:*_1171339698_*|*_5_*:*_1_*:*_28435178923_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1326436315"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15821", "fixedVersions": [], "id": "15821", "issueType": "Sub-task", "key": "SERVER-922", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-28T15:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4586c4b5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f5b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_854875_*|*_3_*:*_1_*:*_538107489_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1367706293"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15629", "fixedVersions": [], "id": "15629", "issueType": "Sub-task", "key": "SERVER-921", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-10-21T18:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2015-10-21T18:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19bebae4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f53:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_856773_*|*_5_*:*_1_*:*_29566768899_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1366838198"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15339", "fixedVersions": [], "id": "15339", "issueType": "Sub-task", "key": "SERVER-920", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2015-10-15T13:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-09-21T18:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57c48d76"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f4v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_859040_*|*_5_*:*_1_*:*_29205318596_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1727621486"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Reconcile git commits and JIRA tickets\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15003", "fixedVersions": [], "id": "15003", "issueType": "Sub-task", "key": "SERVER-919", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T17:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6dbd29a0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f4n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_862163_*|*_3_*:*_1_*:*_538850317_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1366952493"}], "description": "Use the [ticketmatch|https://github.com/puppetlabs/ticketmatch] script to ensure all tickets referenced in the commit log have a bug targeted at the release, and ensure all tickets targeted at the release have a corresponding commit.\n\n  * cd ~/work\n  * git clone https://github.com/puppetlabs/ticketmatch\n  * cd ~/work/puppet # or whatever the repo is you're releasing from\n  * ruby ../ticketmatch/ticketmatch.rb\n    Enter Git From Rev: 4.1.0\n    Enter Git To Rev: |master| stable\n    Enter JIRA project: |PUP|\n    Enter JIRA fix version: PUP 4.2.0\n\nThe output may contain the following headers:\n\nCOMMIT TOKENS NOT FOUND IN JIRA (OR NOT WITH FIX VERSION OF ...)\n\nLists git commits that don't have a corresponding ticket, at least not for the specified fix version. If the commit has a ticket, but the ticket is not targeted correctly, then the ticket's fixVersion should be updated. This can frequently happen if a ticket is initially targeted for a future release (master), but is pulled into an earlier release (stable), but the ticket's fixVersion is not updated.\n\nUNRESOLVED ISSUES NOT FOUND IN GIT\n\nLists JIRA tickets that have a matching fixVersion, e.g. PUP 4.2.0, but none of the commits have the JIRA ticket in the subject. If the JIRA ticket really is fixed in the release, e.g. the JIRA ticket was typo'ed in the git commit subject, then leave the ticket as is. If the JIRA ticket should not be fixed in the release, e.g. it was originally targeted for the release, but was later bumped out, then update the ticket's fixVersion accordingly, e.g. PUP 4.3.0.\n\nUNRESOLVED ISSUES FOUND IN GIT\n\nLists JIRA tickets have a git commit, but the ticket is not resolved. Usually this is because the ticket is still passing CI or going through manual validation. It can also occur if a fix is made, but a problem is encountered, and the ticket is reopened. If that happens, make sure the ticket reflects reality, so it's clear the ticket is not actually fixed in the release.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17567", "fixedVersions": [], "id": "17567", "issueType": "Sub-task", "key": "SERVER-918", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-10-21T18:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reconcile git commits and JIRA tickets", "timeSpent": "PT0S", "updated": "2015-10-21T18:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13b05d92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2f4f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_864547_*|*_5_*:*_1_*:*_29205329958_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1727611039"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%221.1.2%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17390", "fixedVersions": [], "id": "17390", "issueType": "Sub-task", "key": "SERVER-917", "labels": [], "originalEstimate": "PT0S", "parent": "17042", "parentSummary": "puppetserver 1.1.2 2015-10-19 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-19T17:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b938daa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz28w7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_77474289_*|*_5_*:*_1_*:*_29627655269_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1720802304"}], "description": "puppetserver 1.1.2 2015-10-19 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17042", "fixedVersions": [], "id": "17042", "issueType": "Task", "key": "SERVER-916", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-20T12:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 1.1.2 2015-10-19 Release", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - please let me know if anything about the description for this ticket doesn't look right.  Thanks!", "created": "2015-09-29T14:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server master at [c95180|https://github.com/puppetlabs/puppet-server/commit/c9518053fb0888cf1edae1d53ac5def46236eba2].", "created": "2015-10-12T11:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed through full Jenkins puppet-server acceptance test job run - http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/177/.  Moving to testing.", "created": "2015-10-12T11:39:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "In the past, when the client-white list was present but empty (client-whitelist: []), ALL hosts would be denied.  This setting was the default in previous installations.\n\nWith this modification, \n-> when client-whitelist is present and empty, we use TK-AuthSettings.\n-> when client-whitelist is present and non-nil, we honor client-whitelist.\n\n\n", "created": "2015-10-27T11:35:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "\nValidated that when client-whitelist is present and has an empty array, that we do not allow access (until we supply a rule in TK-Auth auth.conf)\nValidated that when client whitelist is present and has an empty array, and has the \"authorization-required: false\" setting, that we can get in without sending certificates.\nValidated that when a client-whitelist is present and has an item in the array, that we deny access to hosts not listed in the array.\nValidated that when client-whitelist is present and has an item in the array, that we allow access to the CN/Subject/host listed in the array EVEN IF we are denying all in auth.conf.\n\nValidated on 2015.3.0-rc4-4-ge0fa77d on CentOS release 6.5 (Final)\n", "created": "2015-10-27T12:07:00.000000"}], "components": [], "created": "2015-09-29T14:43:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f3c6e06"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyobtr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_340312112_*|*_1_*:*_1_*:*_238160_*|*_10007_*:*_1_*:*_518950843_*|*_3_*:*_1_*:*_128684124_*|*_5_*:*_2_*:*_2023260913_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1297644048_*|*_10006_*:*_1_*:*_124019378"}], "description": "This ticket comes out of some of the trailing comments on SERVER-835.\n\nAs of SERVER-835, tk-authz is enabled for the CA and Admin endpoints only when the corresponding {{client-whitelist}} and {{authorization-required}} settings for those endpoints is completely absent from configuration.  In current Puppet Server, an empty {{client-whitelist}} is set for each of these endpoints by default:\n\n{noformat}\npuppet-admin: {\n  client-whitelist: []\n}\n\ncertificate-authority: {\n    certificate-status: {\n        client-whitelist: []\n    }\n}\n{noformat}\n\nPer the current implementation, then, even users that had never configured authorization for the {{puppet-admin}} and/or {{certificate-authority}} endpoints would end up having the empty whitelist honored instead of having tk-authz used.\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] suggested that for the case that an empty whitelist is in place like this, that we just have Puppet Server use tk-authz automatically.\n\nThe changes for this ticket, then, would include:\n\n1) For the settings as they apply to the CA vs. the Admin endpoints:\n\na) If either the {{client-whitelist}} and {{authorization-required}} settings are absent from configuration, use tk-authz.  (Current behavior after SERVER-835 was completed.)\n\nb) If the {{client-whitelist}} is present but empty and the {{authorization-required}} is absent or explicitly set to true (the default), use tk-authz.  (New behavior to be covered in this ticket).\n\nc) Else, use the {{client-whitelist}} / {{authorization-required}} settings for authorization.\n\n2) Update the `log/warn` messages in the `certificate-authority-service` and `puppet-admin-service` with appropriate language about the change in behavior.\n\nI'm thinking it would be good to still have the warning be written for any case that the {{client-whitelist}} / {{authorization-required}} settings are present but we might adjust the content of the message slightly for the case where the case that tk-authz is going to used vs. the {{client-whitelist}} / {{authorization-required}} settings are going to be used.\n\n3) Update documentation, where appropriate, to describe the new behaviors.\n\nNote that some of the initial documents in Puppet Server around tk-authz integration are currently up for review in the PR at https://github.com/puppetlabs/puppet-server/pull/709.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "16194", "fixedVersions": ["SERVER 2.2.0"], "id": "16194", "issueType": "Task", "key": "SERVER-915", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-27T12:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Enable tk-authz for CA/Admin when client-whitelist present but empty", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-09-29T13:33:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ee140cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2er3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "discovered blocker for another ticket in sprint"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_74417396_*|*_1_*:*_1_*:*_130303_*|*_10007_*:*_1_*:*_7132717_*|*_3_*:*_1_*:*_600340_*|*_5_*:*_1_*:*_4355025878_*|*_6_*:*_1_*:*_0"}], "description": "The current implementation of our JRuby request-handler service strips out any params from the ring request that didn't come from query-params or form-params.  This makes it impossible to add parameters from any other middleware and make them accessible to JRuby.  We now have concrete use cases for this pattern, so we should loosen the restrictions.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17387", "fixedVersions": ["SERVER 2.2.0"], "id": "17387", "issueType": "Improvement", "key": "SERVER-914", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-09-30T12:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support middleware additions to :params of ring request", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Once the linked PR passes review, I'll rebase it against stable and master.", "created": "2015-10-07T15:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:63d40628f6e1b543161789a7], [~accountid:63d40635a05386069cdb69d6] - So, related to this work, I discovered another Puppet feature that I didn't know about - the {{manage_internal_file_permissions}} setting - https://docs.puppetlabs.com/references/latest/configuration.html#manageinternalfilepermissions.  In playing around with it, I found that it seems to do what is advertised.  If it is set to \"true\" (default) and the file permissions on the host privatekeydir and host private key have drifted from the internal Puppet default, Puppet will fix them up when it is started up.  (This is true for Ruby Puppet running in Puppet Server as well, not just a Rack/WEBrick master).  If it is set to \"false\", though, Puppet won't touch the permissions on these files.\n\nAs part of the work we're doing for this ticket, do you think Puppet Server should be honoring Puppet's {{manage_internal_file_permissions}} setting with respect to managing the CA private key - namely, that we would only change the permissions back to 0640 if the setting is {{true}} but not touch them if it is {{false}}?\n\nWDYT?", "created": "2015-10-09T13:53:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "I just added the previously-described functionality to the PR. ", "created": "2015-10-12T13:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to the puppet-server 1.x branch at [5a6f87|https://github.com/puppetlabs/puppet-server/commit/5a6f87d4c97cb8e404e7a5468d38668022e8ac70].", "created": "2015-10-13T17:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed full Puppet Server 25 acceptance test job - http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-1.x/71/ - against the 1.x branch.  Moving to testing.", "created": "2015-10-13T17:31:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Checked in 2.1.2.master.SNAPSHOT.2015.10.14T1004\nValidated that puppet server restarts, permissions on the master's private key in the private key dir are reset to 640.\nValidated that when puppet server restarts, permissions on ca_key.pem are reset to -rw-r-----\n\nValidated private_keys dir is reset to drwxr-x---\nValidated that after setting puppet config set manage_internal_file_permissions false, no permissions in ssldir were reset on puppetserver restart.\n \n", "created": "2015-10-14T14:53:00.000000"}], "components": [], "created": "2015-09-23T14:21:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@da52d27"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyodaf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Security issue"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_153866602_*|*_10007_*:*_1_*:*_527725612_*|*_3_*:*_1_*:*_1057770566_*|*_5_*:*_1_*:*_9155065_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_76967450"}], "description": "As reported in SERVER-906, Puppet Server currently creates the CA and Master private keys without explicitly setting file permissions.  Per typical umasks in place at the time the puppetserver process is launched, a user would typically end up with a permissions mask of {{\\-rw\\-r\\-\\-r\\-\\-}} (0644) for both private keys.  These keys, however, should instead be created with a permissions mask of {{\\-rw\\-r\\-\\-\\-\\-\\-}} (0640), making them inaccessible to \"world\" users.\n\nThis ticket would cover:\n\n1) Work to make the CA and Master private keys world-inaccessible as they are first generated.\n\nBoth of the keys should have their permissions mask set to 0640.  Also, the {{privatekeydir}},  https://docs.puppetlabs.com/references/latest/configuration.html#privatekeydir, should be set to 0750.\n\n2) On each Puppet Server startup, remove world permissions from the CA and Master private keys in the event that they had been previously granted.  Also, write a warning-level message to the Puppet Server master log whenever this remediation happens.\n\nThe second point would take care of automatically hiding the CA key from world users the first time that the puppetserver service is started after an upgrade with this fix.  Note that the Master key should already automatically be hidden from world users by Puppet Server after any service restart - due to the file \"ensure\" logic which runs in core Ruby Puppet each time a JRuby instance is initialized - but doing this work at the Puppet Server level as well seems like it would be a good idea as a failsafe (and shouldn't cause any harm anyway).  The second point above would allow for the CA and Master key to be hidden from world users for any accidental permissions changes done by users after the files are initially created.\n\nh5. Additional implementation notes\n\nI haven't yet found any Clojure fs utilities that allow for full control U/G/O management of files and directories.  {{raynes.fs}} has a {{chmod}} function, but it is layered on top of Java's {{File}} set/Read/Writ/Executable methods, which only allow for setting User vs. non-User permissions (i.e., not specific to Group). That doesn't seem like what we want here.  It seems like the typical way this is done in Java is via the {{PosixFilePermissions}} class - http://docs.oracle.com/javase/7/docs/api/java/nio/file/attribute/PosixFilePermission.html. This link in particular has some good examples - https://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html#posix.\n\nUsing this approach, I created a small Clojure function which atomically creates / sets file permissions for a new file. I added that to the current code in the Puppet Server's Clojure CA, at the point where the CA private key is generated:\n\n{code:clojure}\n(ns puppetlabs.puppetserver.certificate-authority\n   (:import ...\n           (java.nio.file Paths Files)\n           (java.nio.file.attribute FileAttribute PosixFilePermissions))\n \n(defn create-file\n  [path permissions]\n  (-> path\n      (Paths/get (into-array String []))\n      (Files/createFile\n        (into-array FileAttribute\n                    [(-> permissions\n                         (PosixFilePermissions/fromString)\n                         (PosixFilePermissions/asFileAttribute))]))\n      (.toFile))\n \n(schema/defn generate-ssl-files!\n  ...\n  (utils/key->pem! private-key (create-file (:cakey ca-settings) \"rw-r-----\"))\n...\n{code}\n\nWith this code in place, the CA private key which is initially generated is set to 640, as opposed to what it was being set to by default, 644.\nThe {{Files}} API has similar methods for setting permissions on directories, e.g., {{createDirectory}}. Also, the {{setPosixFilePermissions}} method could be used for setting permissions on a directory/file which already exists - which could be helpful for any cases where we might need to correct for permissions drift.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16698", "fixedVersions": ["SERVER 1.1.2", "SERVER 2.1.2", "SERVER 2.2.0"], "id": "16698", "issueType": "Bug", "key": "SERVER-910", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-14T14:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make CA and Master private keys inaccessible to \"world\" users", "timeSpent": "PT0S", "updated": "2015-10-14T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "6217ba0a71554c00695601a8", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi [~accountid:6217ba0a71554c00695601a8], thanks for the bug report.\n\nI think this is probably expected behavior", "created": "2015-09-21T12:39:00.000000"}, {"author": "6217ba0a71554c00695601a8", "body": "Fixed by showing me the PEBCAK problem.\nThanks.", "created": "2015-09-21T16:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Excellent, thanks!", "created": "2015-09-21T16:53:00.000000"}], "components": ["Puppet Server"], "created": "2015-09-20T10:00:00.000000", "creator": "6217ba0a71554c00695601a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a01b152"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2akn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_109056379_*|*_6_*:*_1_*:*_0"}], "description": "/opt/puppetlabs/bin/puppetserver gem install pg --no-ri --no-rdoc\nFetching: pg-0.18.3.gem (100%)\nBuilding native extensions.  This could take a while...\nERROR:  Error installing pg:\n\tERROR: Failed to build gem native extension.\n\n    java -jar /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar -r ./siteconf20150920-3623-q62pu5.rb extconf.rb\n\n\nError(s) occurred while parsing command-line arguments: Unknown option: \"-r\"\n\n  -d, --debug                                   Turns on debug mode\n  -b, --bootstrap-config BOOTSTRAP-CONFIG-FILE  Path to bootstrap config file\n  -c, --config CONFIG-PATH                      Path to a configuration file or directory of configuration files, or a comma-separated list of such paths.See the documentation for a list of supported file types.\n  -p, --plugins PLUGINS-DIRECTORY               Path to directory plugin .jars\n  -h, --help                                    Show help\n\nextconf failed, uncaught signal 1\n\nGem files will remain installed in /opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/pg-0.18.3 for inspection.\nResults logged to /opt/puppetlabs/server/data/puppetserver/jruby-gems/extensions/universal-java-1.7/1.9/pg-0.18.3/gem_make.out\nroot@master:~# /opt/puppetlabs/bin/puppetserver --version\npuppetserver version: 2.1.1", "environment": "netinstalled Debian 7 with PL PC1 repo", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15000", "fixedVersions": [], "id": "15000", "issueType": "Bug", "key": "SERVER-905", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6217ba0a71554c00695601a8", "resolution": "Fixed", "resolutionDate": "2015-09-21T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver gem install fails", "timeSpent": "PT0S", "updated": "2015-09-22T11:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This is still at least partially applicable. It [looks like|https://github.com/puppetlabs/puppetserver/blob/b5f087f210b10af20930c307bb26d572ffc27249/src/clj/puppetlabs/services/config/puppet_server_config_core.clj#L118]\u00a0we are still using {{cacrl}} rather than {{hostcrl}} though we are now automatically copying one to the other when it changes, so they won't be potentially out of sync like the original ticket was concerned with. Also, the definition of both of these settings have been in flux as we consider intermediate CA work. I'm going to link this ticket with one of those epics as an example of how we conflate host and ca settings on masters.", "created": "2018-02-15T14:39:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We should verify that this is no longer an issue once we have separate CA and SSL dirs.", "created": "2018-07-23T22:20:00.000000"}], "components": [], "created": "2015-09-18T16:13:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@212eff3f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-8918"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xr3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_414948638_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_87870338178_*|*_10005_*:*_1_*:*_3473968070"}], "description": "In SERVER-85, we changed the Puppet Server override logic to synchronize the {{hostcrl}} with the {{cacrl}} during startup and also changed the webserver setting override logic to pull from the {{hostcrl}} setting rather than from the {{cacrl}}.  That work was undone by a merge-up PR, https://github.com/puppetlabs/puppet-server/commit/9ec455d57ee543af4b98f9619c2f82099994e6be.  Creating this ticket to restore the original changes.", "epicLinkSummary": "Finalize separation of CA from Ruby", "estimate": "PT0S", "externalId": "15819", "fixedVersions": [], "id": "15819", "issueType": "Bug", "key": "SERVER-904", "labels": ["needs_repro"], "originalEstimate": "PT0S", "parent": "29493", "parentSummary": "Finalize separation of CA from Ruby", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2018-08-15T16:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Restore hostcrl / cacrl synchronization changes", "timeSpent": "PT0S", "updated": "2018-08-15T16:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Is this for the connection to PuppetDB?", "created": "2015-09-18T11:18:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "When connecting to a report server, e.g. with this config\n\n{code}\n[master]\n   reports = store, http\n   reporturl = https://dashboard.example.com/reports/upload\n{code}\n ", "created": "2015-09-18T11:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Got it", "created": "2015-09-18T12:03:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Adding this to a SSL UX Improvements epic as we're looking at our use of SSL and PKI more holistically.", "created": "2016-03-11T15:24:00.000000"}], "components": [], "created": "2015-09-18T02:01:00.000000", "creator": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27820f61"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz29kn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_466275224_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_75605038389"}], "description": "The error message generated when the server fails to connect to the report server is vague and unspecific.  Here is the error when the report target doesn't have a TLS cert that validates:\n\n{code}\n2015-09-18 07:47:19,278 INFO  [puppet-server] Puppet Compiled catalog for client.example.com in environment production in 0.86 seconds\n2015-09-18 07:47:20,142 ERROR [c.p.h.c.i.PersistentSyncHttpClient] Error executing http request\njavax.net.ssl.SSLHandshakeException: General SSLEngine problem\n\tat sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1431) ~[na:1.8.0_51]\n\tat sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ~[na:1.8.0_51]\n\tat sun.security.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1214) ~[na:1.8.0_51]\n\tat sun.security.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1186) ~[na:1.8.0_51]\n\tat javax.net.ssl.SSLEngine.wrap(SSLEngine.java:469) ~[na:1.8.0_51]\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15626", "fixedVersions": [], "id": "15626", "issueType": "Improvement", "key": "SERVER-903", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "resolution": "Won't Fix", "resolutionDate": "2018-02-14T11:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "error logged for TLS connection failure to report target is vague and unspecific", "timeSpent": "PT0S", "updated": "2018-02-14T11:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:96a443bf-a3ab-426b-9442-ce50c9977428] - do we still need this ticket now that the release ticket for Puppet Server 2.2.0 exists - SERVER-932?", "created": "2015-09-30T14:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Closing as a dupe of SERVER-932.", "created": "2015-10-02T13:06:00.000000"}], "components": [], "created": "2015-09-16T15:51:00.000000", "creator": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fb3b7f5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1n7z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_587834016_*|*_5_*:*_1_*:*_31181000726_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_784669427"}], "description": "Potentially Nov timeframe\n\n- Need lead time from the docs team\n-- Auth.conf (susan to ping that docs team)\n\n", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15817", "fixedVersions": ["SERVER 2.2.0"], "id": "15817", "issueType": "Story", "key": "SERVER-902", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "resolution": "Duplicate", "resolutionDate": "2015-10-02T13:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Next OSS release of Puppet Server", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [], "components": [], "created": "2015-09-16T15:35:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d9e9779"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo8wn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Testing work identified during sprint"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11926256_*|*_10009_*:*_1_*:*_5585_*|*_3_*:*_1_*:*_3808798213_*|*_5_*:*_1_*:*_27032156119_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1701544536"}], "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "16193", "fixedVersions": [], "id": "16193", "issueType": "Task", "key": "SERVER-901", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-11-19T12:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create automated beaker test to validate default set of TK auth.conf rules. ", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:8b5c4705-c0a3-432d-82cf-e12cd95346bc] - this issue sounds like it may be the same as SERVER-528.  Do you agree?  If so, I'd suggest closing this as a duplicate of that issue.", "created": "2015-09-16T13:35:00.000000"}, {"author": "70121:8b5c4705-c0a3-432d-82cf-e12cd95346bc", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] yes, you're right. I'm sorry for the duplicate! Issue linked and closed.", "created": "2015-09-16T13:38:00.000000"}], "components": ["Puppet Server"], "created": "2015-09-16T13:23:00.000000", "creator": "70121:8b5c4705-c0a3-432d-82cf-e12cd95346bc", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@757fbf86"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz28tr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_937621_*|*_6_*:*_1_*:*_0"}], "description": "I figured out that Puppet Server is not creating the certificates when puppet (puppet-agent) is running and did create a private/public key pair already.\n\n{code}\nyum install puppetserver\nsystemctl start puppet\n\n# directory:\n[root@puppetmaster ~]# tree /etc/puppetlabs/puppet/ssl/\n/etc/puppetlabs/puppet/ssl/\n\u251c\u2500\u2500 certificate_requests\n\u251c\u2500\u2500 certs\n\u251c\u2500\u2500 private\n\u251c\u2500\u2500 private_keys\n\u2502   \u2514\u2500\u2500 puppetmaster.example.com.pem\n\u2514\u2500\u2500 public_keys\n    \u2514\u2500\u2500 puppetmaster.example.com.pem\n5 directories, 2 files\n{code}\n\n`puppetserver` fails to start:\n{code}\nsystemctl start puppetserver\nJob for puppetserver.service failed. See 'systemctl status puppetserver.service' and 'journalctl -xn' for details.\n\n# puppetserver.log\n2015-09-16 20:57:01,060 ERROR [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Cannot initialize master with partial state; need all files or none.\nFound:\n/etc/puppetlabs/puppet/ssl/private_keys/puppetmaster.example.com.pem\nMissing:\n/etc/puppetlabs/puppet/ssl/certs/puppetmaster.example.com.pem\n\n# directory:\ntree /etc/puppetlabs/puppet/ssl/\n/etc/puppetlabs/puppet/ssl/\n\u251c\u2500\u2500 ca\n\u2502   \u251c\u2500\u2500 ca_crl.pem\n\u2502   \u251c\u2500\u2500 ca_crt.pem\n\u2502   \u251c\u2500\u2500 ca_key.pem\n\u2502   \u251c\u2500\u2500 ca_pub.pem\n\u2502   \u251c\u2500\u2500 inventory.txt\n\u2502   \u251c\u2500\u2500 requests\n\u2502   \u251c\u2500\u2500 serial\n\u2502   \u2514\u2500\u2500 signed\n\u251c\u2500\u2500 certificate_requests\n\u251c\u2500\u2500 certs\n\u2502   \u2514\u2500\u2500 ca.pem\n\u251c\u2500\u2500 crl.pem\n\u251c\u2500\u2500 private\n\u251c\u2500\u2500 private_keys\n\u2502   \u2514\u2500\u2500 puppetmaster.example.com.pem\n\u2514\u2500\u2500 public_keys\n    \u2514\u2500\u2500 puppetmaster.example.com.pem\n{code}\n\nEverything is running well if there are no keys and I do just start puppetserver:\n{code}\ntree /etc/puppetlabs/puppet/ssl/\n/etc/puppetlabs/puppet/ssl/\n\u251c\u2500\u2500 ca\n\u2502   \u251c\u2500\u2500 ca_crl.pem\n\u2502   \u251c\u2500\u2500 ca_crt.pem\n\u2502   \u251c\u2500\u2500 ca_key.pem\n\u2502   \u251c\u2500\u2500 ca_pub.pem\n\u2502   \u251c\u2500\u2500 inventory.txt\n\u2502   \u251c\u2500\u2500 requests\n\u2502   \u251c\u2500\u2500 serial\n\u2502   \u2514\u2500\u2500 signed\n\u2502       \u2514\u2500\u2500 puppetmaster.example.com.pem\n\u251c\u2500\u2500 certificate_requests\n\u251c\u2500\u2500 certs\n\u2502   \u251c\u2500\u2500 ca.pem\n\u2502   \u2514\u2500\u2500 puppetmaster.example.com.pem\n\u251c\u2500\u2500 crl.pem\n\u251c\u2500\u2500 private\n\u251c\u2500\u2500 private_keys\n\u2502   \u2514\u2500\u2500 puppetmaster.example.com.pem\n\u2514\u2500\u2500 public_keys\n    \u2514\u2500\u2500 puppetmaster.example.com.pem\n{code}\n\nI don't know if this has to be considered as a bug. But perhaps there's a way to make it a bit simpler for beginners (what service to start first)?\nIs this issue related to SERVER-352?", "environment": "CentOS Linux release 7.1.1503\npuppetserver-2.1.1-1.el7.noarch\npuppet-agent-1.2.2-1.el7.x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15361", "fixedVersions": [], "id": "15361", "issueType": "Bug", "key": "SERVER-899", "labels": ["puppet-server"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:8b5c4705-c0a3-432d-82cf-e12cd95346bc", "resolution": "Duplicate", "resolutionDate": "2015-09-16T13:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Missing cert when puppet-agent started", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "cc/ [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] I believe we are ready to start testing Vivid as well. I can successfully build a package, the service starts up, but there's an error in the log. I haven't looked into it in detail though", "created": "2015-09-16T13:06:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "Per my comment in SERVER-829, I think adding Ubuntu 15.04 can be done by someone on the puppet-server team by editing this file:\nhttps://github.com/puppetlabs/ci-job-configs/blob/master/enterprise/projects/puppet-server.yaml\n\nSpecifically, https://github.com/puppetlabs/ci-job-configs/blob/master/enterprise/projects/puppet-server.yaml#L38 and one of \nhttps://github.com/puppetlabs/ci-job-configs/blob/master/enterprise/projects/puppet-server.yaml#L23\nor https://github.com/puppetlabs/ci-job-configs/blob/master/enterprise/projects/puppet-server.yaml#L28\n", "created": "2015-09-16T13:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], what is the timeframe in which this work is expected to be done?  Do we have a target release date for Puppet Server on Vivid?  Are there already supporting puppet-agent packages being built for Vivid?", "created": "2015-09-16T13:41:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Yes, puppet-agent packages for vivid became available with the release earlier this week.\n\nThere is no definite timeframe, but it would be wonderful to get it in sooner rather than later. From my perspective, if we can get vivid running green through the pipelines before the next FOSS puppetserver release, that would be ideal.", "created": "2015-09-16T14:10:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:96a443bf-a3ab-426b-9442-ce50c9977428], [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584], this is the ticket for adding Ubuntu 15.04 Vivid into the puppetserver pipelines. I believe ideally acceptance tests should be run prior to adding that platform in to the current pipelines, but I'm not sure how you all want to handle that.\n\nPuppetserver packages successfully build. You can find my test build at http://builds.puppetlabs.lan/puppetserver/2.1.2.stable.SNAPSHOT.2015.09.30T1516\nThe packages also successfully installs and runs, though it looks like there's an error with jruby in puppetserver.log", "created": "2015-09-30T16:25:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:96a443bf-a3ab-426b-9442-ce50c9977428] I just realized we compiled facter incorrectly on ubuntu 15.04, so you'll get the errors with jruby when you try to start the puppetserver service. Luckily this is a quick fix, but we probably need to make new puppet-agent packages available soon....", "created": "2015-09-30T16:42:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "also, that previous puppetserver build was for wheezy. Ignore it, and refer instead to http://builds.puppetlabs.lan/puppetserver/2.1.2.stable.SNAPSHOT.2015.09.30T1559/ which includes vivid packages", "created": "2015-09-30T17:03:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Once https://github.com/puppetlabs/puppet-agent/pull/320 is merged, we will start building puppet-agent packages for vivid that have jruby support", "created": "2015-09-30T17:45:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] yeah, it looks like this might be delayed. I was trying to get it in for the 1.2.6 release that's happening this week, but it looks like it's going to be pushed out until 1.2.7, and I don't have a timeframe on that release, unfortunately.", "created": "2015-10-05T10:29:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Do you expect this will be ready in conjunction with the puppet-agent 1.3.0 release?  If so, we could at least try to expand our Puppet Server coverage to Vivid in conjunction with the puppet-server 2.2.0 release that we're planning for sometime early next month.  puppet-server 2.2.0 will have a hard dependency on puppet-agent 1.3.0 or later.", "created": "2015-10-20T10:03:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] the code is in, it's just waiting for a release. I'm hoping it will get out in puppet agent 1.2.7, which should include everything in the puppet-agent stable branch", "created": "2015-10-20T10:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Checking in again on this.  Since puppet agent 1.2.7 just shipped, does that mean that we could pick this up now?  And can we assume that the code to support Vivid builds that presumably rolled into 1.2.7 will be rolled up into puppet agent 1.3.0 later on as well?", "created": "2015-10-30T13:02:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] yup, we should be good to go! Thanks for checking back on this", "created": "2015-10-30T13:43:00.000000"}], "components": ["Puppet Server"], "created": "2015-09-16T12:43:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60001989"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "CPR-226"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz28wn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_179837445_*|*_1_*:*_1_*:*_1629483270_*|*_10007_*:*_1_*:*_259293288_*|*_3_*:*_1_*:*_2963442_*|*_5_*:*_1_*:*_28307758607_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2185607009"}], "epicLinkSummary": "Provide server packages for Ubuntu 15.04", "estimate": "PT0S", "externalId": "16697", "fixedVersions": [], "id": "16697", "issueType": "Task", "key": "SERVER-898", "labels": [], "originalEstimate": "PT0S", "parent": "60505", "parentSummary": "Provide server packages for Ubuntu 15.04", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Fixed", "resolutionDate": "2015-11-04T18:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add Ubuntu 15.04 Vivid to ci-job-configs for FOSS pipeline only", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm not sure I'd describe that as an \"oddity\"", "created": "2015-09-15T21:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "discussed in triage", "created": "2015-09-16T11:46:00.000000"}, {"author": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "body": "We might be able to close this ticket now that we've completed https://puppet.atlassian.net/browse/DOC-1854 [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]", "created": "2016-01-05T12:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "+1, thx", "created": "2016-01-05T13:53:00.000000"}], "components": [], "created": "2015-09-15T18:48:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d36fcc4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2887:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_667025476_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_8995670484"}], "description": "We need a HOCON gotchas document where we can warn our customers and module writers about some of the oddities of HOCON we've run into.  For example:\n\n- A string ought to be surrounded by double quotes.\nThe HOCON spec relies on the JSON spec for part of its string definition.  The JSON spec contains this somewhat unhelpful paragraph:\n\"The formal JSON format does not allow strings in single quotes, but an implementation is allowed to accept them.\"\nFor Trapper Keeper apps, use double quotes around strings.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15002", "fixedVersions": [], "id": "15002", "issueType": "Task", "key": "SERVER-896", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-01-05T13:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "HOCON Best Practices Doc", "timeSpent": "PT0S", "updated": "2016-01-13T12:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "[~accountid:557058:96a443bf-a3ab-426b-9442-ce50c9977428], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5]", "created": "2015-09-11T11:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Just finished a first cut of my slides, in [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]'s google slides preso.", "created": "2015-09-21T16:51:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "work for this week", "created": "2015-09-30T12:13:00.000000"}], "components": ["Puppet Server"], "created": "2015-09-11T11:01:00.000000", "creator": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@767d89a3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0e3z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_432176840_*|*_3_*:*_1_*:*_1035443537_*|*_5_*:*_1_*:*_31356951373_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_178285680"}], "description": "Demo\nPast year for Server\nFuture roadmap\n\nPrep!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15358", "fixedVersions": [], "id": "15358", "issueType": "Task", "key": "SERVER-894", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "resolution": "Done", "resolutionDate": "2015-09-30T12:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Conf Prep for Puppet Server team", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I chose Trapperkeeper because it seemed substantial enough to have a meaningful diff of changes to discuss from the formatting, but small enough that those familiar with it could review the whole formatting changes in a timely manner (though after running the formatting tool, I realized I was very wrong on the size of the diff -- sorry!).\n\nI've opened [PR 226|https://github.com/puppetlabs/trapperkeeper/pull/226] containing the integration with the pl-clojure-style repo. Because I didn't know if the approach would be approved, or if approved the changes made by it would be accepted at this time, I submitted the changes made by cljfmt in a separate pull request [PR 227|https://github.com/puppetlabs/trapperkeeper/pull/227].", "created": "2016-03-17T04:50:00.000000"}], "components": [], "created": "2015-09-11T09:13:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70acb8cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynimf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Had time for additional low hanging fruit while on-boarding"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_309781_*|*_1_*:*_1_*:*_438931778_*|*_10007_*:*_1_*:*_1667292173_*|*_5_*:*_1_*:*_15114698722_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_15788107255"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15355", "fixedVersions": [], "id": "15355", "issueType": "Task", "key": "SERVER-893", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-04-05T11:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add Patrick's clojure style guide stuff to one of our repos", "timeSpent": "PT0S", "updated": "2022-01-18T07:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Can you try removing the single quotes in your config file?  Or using double-quotes instead?  I would have thought that single quotes would probably work, but comparing your config to the default config files with ship with PE, the first thing that jumps out at me is that we aren't quoting those certnames inside of the array at all.", "created": "2015-09-11T08:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I instrumented the {{client-whitelist}} at the point in the code where we evaluate it and saw that if my original file had single quotes around the array element values that the single-quotes are preserved literally in the value that is used in service code.  Double-quotes, however, are removed from the values seen by service code.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I wonder if this is an artifact of how the HOCON parser handles value quoting.  In any event, I would expect your suggestion to work.", "created": "2015-09-11T08:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:c5ea6c35-c500-4334-8131-e031af9f81a4] did you have a chance to try this w/o the single quotes?  We've definitely determined that since HOCON is a superset of JSON, and JSON doesn't support single quotes for strings, that you will want to avoid putting single quotes in your config files.", "created": "2015-09-16T11:30:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "Sorry, been busy this week. I can validate tonight.\n\nThis information about format should be added to the pages about server config ", "created": "2015-09-16T12:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:c5ea6c35-c500-4334-8131-e031af9f81a4] agreed - we have some tickets about updating docs and providing a \"best practices\" for HOCON.  We'll make sure that happens.  Thanks for the nudge!", "created": "2015-09-16T14:12:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "Thanks, that worked perfectly. Results of my tests:\n\n{code}\n2015-09-18 09:34:40,274 INFO  [p.s.j.puppet-environments] Marking all registered environments as expired.\n2015-09-18 09:34:53,179 INFO  [p.s.j.puppet-environments] Marking environment 'test' as expired.\n2015-09-18 09:34:59,560 INFO  [p.s.j.puppet-environments] Marking environment 'production' as expired.\n{code}", "created": "2015-09-18T03:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Great!  Glad to hear it.  And we're actively working on getting some docs up.", "created": "2015-09-18T11:14:00.000000"}], "components": [], "created": "2015-09-11T06:02:00.000000", "creator": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@572955d3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz25xr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_596098914_*|*_5_*:*_1_*:*_32424614358_*|*_6_*:*_1_*:*_0"}], "description": "I've created a certificate which works when talking with the Puppet Server.  \n\n{code}\n$ puppet agent --certname code-deployment --no-daemonize --noop --test\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for code-deployment\nInfo: Applying configuration version '1441972907'\nNotice: Applied catalog in 0.01 seconds\n{code}\n\nI've added that certificate to the server client whitelist:\n\n{code}\n# tail -5 /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf \n\n# Settings related to the puppet-admin HTTP API\npuppet-admin: {\n    client-whitelist: ['code-deployment']\n}\n{code}\n\nI've restarted the service:\n\n{code}\n# systemctl restart puppetserver\n{code}\n\nHowever the server is refusing the query\n\n{code}\n# tail -2 /var/log/puppetlabs/puppetserver/puppetserver.log\n2015-09-11 11:52:45,744 INFO  [p.p.ringutils] Client 'code-deployment' access to /puppet-admin-api/v1/environment-cache rejected;\nclient not found in whitelist configuration.\n{code}\n\nThe server has confirmed here in this message that the client key and certificate have been validated. The server whitelist... is there a format to the entry which isn't documented?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17385", "fixedVersions": [], "id": "17385", "issueType": "Bug", "key": "SERVER-892", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "resolution": "Cannot Reproduce", "resolutionDate": "2015-09-18T03:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "API whitelist for admin interface does not work.", "timeSpent": "PT0S", "updated": "2016-09-27T10:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This issue of half completed ssl configuration will be addressed in currently-being-scoped CA improvements. Closing this but linking it to the Epic as a valuable example of issues in the current implementation.", "created": "2018-02-20T16:24:00.000000"}], "components": ["Puppet Server", "UX"], "created": "2015-09-10T07:56:00.000000", "creator": "557058:9776b0c4-df6d-484f-8e38-a8ae88fc9b2d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39a5d5d1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz256f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1135669095_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76139996712"}], "description": "If for any reason the initial startup gets interrupted (systemd timeout in my case) and the CA has not been fully created, Puppet server will not go ahead and generate the CA.\n\nI my case only `/etc/puppetlabs/puppet/ssl/ca/serial` had been created. As the CA creation wants all or nothing, the server startup just kept dying.\n\nIf the CA has only been partially created then the server should clean up and start again.", "environment": "Centos 7", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17086", "fixedVersions": [], "id": "17086", "issueType": "Bug", "key": "SERVER-891", "labels": ["ca"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:9776b0c4-df6d-484f-8e38-a8ae88fc9b2d", "resolution": "Duplicate", "resolutionDate": "2018-02-20T16:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "A half-completed SSL configuration breaks everything", "timeSpent": "PT0S", "updated": "2018-02-20T16:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] [~accountid:623c12b6ee1b5a0070293582] I have a vague recollection that this may have come up before, and we maybe decided that the current behavior was the desired behavior?  I don't have a strong opinion either way.", "created": "2015-09-10T09:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This one sounds like SERVER-398.  I think we all were in agreement from the conversation on that ticket that the service should be enabled but not immediately started after initial install.  I assume that would mean that the service, however, would automatically start after a reboot.  I'm not sure that we actually followed-up after that conversation to implement the behavior we discussed, though.  Again, would defer to [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] and [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] on this.", "created": "2015-09-10T09:42:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Yes, this sounds correct. We should be running the above command in the post to enable the service correctly. As [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] mentions, this means the service will start on a reboot, but won't be immediately started. This is to give the user the opportunity to configure it before starting it. Presumable reboots are relatively rare events. I think we'll want a companion ezbake ticket here for the general case.", "created": "2015-09-10T10:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "discussed this in triage today", "created": "2015-09-16T11:27:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yup. exactly.", "created": "2015-09-16T11:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Created and linked EZ-55 to capture the packaging fix.", "created": "2015-09-16T14:20:00.000000"}], "components": ["Puppet Server"], "created": "2015-09-10T05:35:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:fd48619b-accd-4d14-8dd9-b0817283c7b2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b55b04b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz255r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_549908115_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_75550328176"}], "description": "puppetserver 1.1.1-1 package installed from PuppetLabs apt repo doesnt set itself to autostart. No records are created in /etc/rc?.d/...\n\nDoing 'update-rc.d puppetserver defaults' fixes this.\n\nThe postinst packaging script runs 'usr/share/puppetserver/scripts/install.sh postinst_deb'\n\nThe 'postinst_deb' procedure only sets permissions, it should however also do 'update-rc.d puppetserver defaults'.", "environment": "Ubuntu Server 12.04.05 on a VMware VM", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15815", "fixedVersions": [], "id": "15815", "issueType": "Bug", "key": "SERVER-890", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:fd48619b-accd-4d14-8dd9-b0817283c7b2", "resolution": "Won't Do", "resolutionDate": "2018-02-06T23:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver not set to autostart by deb package", "timeSpent": "PT0S", "updated": "2018-02-06T23:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Note: we've decided that for an MVP / Burnside deliverable for Direct Puppet, we can get away without robust streaming on the OSS side.  So we'll put this ticket in the post-Burnside bucket.", "created": "2015-11-09T12:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Does that mean that this ticket shouldn't block SERVER-868?  Or that SERVER-868 shouldn't be in the Burnside epic?", "created": "2016-01-07T12:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0ff494742a00683e3fe4] it just means that in the Burnside time frame, SERVER-868 will have the known limitation that it will load the entire contents of a file into memory before serving it to the client via HTTP,  meaning that people can't really use this in an environment with large files unless they allocate a shitload of RAM.  We will probably document that as a known issue for the initial release, until we come back and handle this ticket later.", "created": "2016-01-07T13:01:00.000000"}], "components": [], "created": "2015-09-09T19:21:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ff96d15"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1123"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoto7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_575325736_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_75626496012"}], "description": "In SERVER-888, we will make it possible for users to provide an external script that is responsible for returning code content for a file at a given code_id.  This will rely on us having added support for streaming output from external shell scripts (SERVER-884).\n\nThis ticket is to capture the effort of writing some tests and/or doing some manual validation to verify that the streaming is working properly.  We should validate at least the following:\n\n* For large-ish files, we do not read the entire file contents into memory before we begin to stream the response body back to the client, and\n* In the event that the client closes the HTTP connection before we've successfully streamed back all of the file content, we are able to properly clean up the objects related to our call to the external shell process, and thus we don't end up leaking any memory.", "epicLinkSummary": "Extract shellutils library", "estimate": "PT0S", "externalId": "15352", "fixedVersions": [], "id": "15352", "issueType": "New Feature", "key": "SERVER-889", "labels": ["code_content"], "originalEstimate": "PT0S", "parent": "16751", "parentSummary": "Extract shellutils library", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2018-02-07T17:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tests / validation re: streaming code content", "timeSpent": "PT0S", "updated": "2018-02-07T17:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We decided to bump up the SERVER-868 \"Extensible FOSS implementation of DP functionality\" story to a higher priority, because it's useful for the client team for testing purposes.  As a result of that, SERVER-867 and SERVER-879 will probably be closed as \"won't fix\".\n\nI pulled SERVER-879 out of the Burnside epic for this reason, but since that work would have provided some foundation for this ticket, I'm bumping up the estimate on this one from 3 points to 5 points.", "created": "2015-11-09T12:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] we are going to need to document a \"known issue\" around this ticket, as per the comments on SERVER-889.  What's the best way to flag this ticket accordingly so we make sure to do that when the time comes?", "created": "2016-01-07T13:05:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Edit the ticket, and in the DOCS tab select \"Known Issue\" in the Release Notes dropdown.", "created": "2016-01-07T13:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Awesome, thanks.", "created": "2016-01-07T13:12:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "doing SERVER-880 instead", "created": "2016-01-19T12:28:00.000000"}], "components": [], "created": "2015-09-09T19:16:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5acd209e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynslj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_575603346_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10808285103"}], "description": "We need an OSS implementation of the code_content endpoint that, if a user has specified a value for the new code_content_script setting in SERVER-887, we call out to that script to get the file content.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15001", "fixedVersions": [], "id": "15001", "issueType": "New Feature", "key": "SERVER-888", "labels": ["code_content", "docs_reviewed"], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2016-01-19T12:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Extensible FOSS implementation of code_content endpoint to prefer code_content_script", "timeSpent": "PT0S", "updated": "2016-08-10T14:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "What is the desired behavior if code-id-command is nil? [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]", "created": "2016-01-21T13:28:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "My guess is that it should just return the latest version, but I defer to [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14].", "created": "2016-01-21T14:02:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "... which is basically exactly what should happen when there is no {{code-id-command}} at all, which is how Puppet Server will work in the out-of-the-box configuration.  So, yeah, most recent version is sounding even more correct.", "created": "2016-01-21T14:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This is an OSS ticket, right?  So there *is* no \"latest version\" if they don't provide a {{code-id-command}}.  I think the only option here is {{nil}}.", "created": "2016-01-22T09:57:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Thinking about this some more ...\n\nI realize that this ticket needs to include the addition of the {{get-code-content}} service function to the protocol.  It's not exactly spelled-out what that function should look like, so I'll throw out a straw man:\n\n{code}\n(get-code-content [this code-id environment]\n{code}\n\nIf we go with that (or anything which includes {{code-id}}), the answer to [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a]'s original question is: it does not matter if {{code-id-command}} is {{nil}} when implementing this function, because this function should never use that setting - instead, it gets {{code-id}} as a parameter.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] - does that seem correct?", "created": "2016-01-22T11:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ah, crap, in my previous comment I thought we were talking about an empty `code-id-command`, but it seems like what we are actually talking about here is the case where we have an empty `code-content-command`?\n\nIf that's the case then I think we should throw an exception.  We should not ever end up in a situation where we have static catalogs w/o a code_id, and if we have a static catalog and a code_id, then we *must* have a `code-content-command` for OSS in order to retrieve content.  If we don't have the command then any return value we came up with would be ambiguous and/or meaningless, right?", "created": "2016-01-22T11:44:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. ah, crap, in my previous comment I thought we were talking about an empty `code-id-command`,\n\nThis is, in fact, what [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] originally asked about.\n\nI think the rest of your comment makes sense.  Jumping out an abstraction layer, I think this would happen if an agent somehow send a {{static_file_content}} request without a {{code_id}} ... right?  Which would definitely be an error, so, yeah, if no {{code_id}} throwing seems correct.\n\nOn the other hand, if there *is* a {{code-id}} in request but no {{code-content-command}} setting, what should happen?  Seems like we should throw in that case as well, since there is no way we can really fulfill the need for a file at the specified {{code-id}}.", "created": "2016-01-22T11:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "agree, throw in either case", "created": "2016-01-22T12:05:00.000000"}, {"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] This is making sense, thanks. here is a potentially stupid and/or naive question: shouldn't a code-content funcion take a file path argument as well? in addition to environment and code id?", "created": "2016-01-22T15:44:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "As [~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] just pointed out IRL ...\n\nYes, file path.\n\nDon't think we need {{environment}} signature, either.", "created": "2016-01-22T16:09:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I was assuming the sig would take {{environment}} and {{path}}, yes.  I don't quite recall where we landed in discussions with [~accountid:63d40628f6e1b543161789a7] about whether the relative path that they send us with a {{static_file_content}} will be rooted from $codedir or from the root of the specific environment.", "created": "2016-01-22T16:59:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Right.  Although that question is probably only relevant to the PE implementation, since in OSS we'll just be passing that path along to {{code-content-command}} wholesale.  Although, probably need to know for docs and such.\n\nCan we think of a concrete reason to include the environment?  If not, we should probably leave it out.", "created": "2016-01-22T17:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\nCan we think of a concrete reason to include the environment?\n{quote}\n\nAs an argument?  Or as part of the path?  Because if it's not part of the path then you absolutely need it as an argument.\n\nEven if we include it in the path, I think we should pass it as an argument, because we can use it to find the root of the git repo w/o having to munge anything out of the path argument.\n\nOverall I think my preference would be to pass the environment as an explicit argument and have the path that gets passed in be relative to the environment root dir, as opposed to $codedir, because that's what seems like it would require the least amount of path munging.  It seems like the main question is whether or not that satisfies whatever OSS use cases we have in mind.", "created": "2016-01-22T17:40:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I think that's a reasonable decision.  It implies that the path which is included in the {{static_file_content}} request made by the agent is rooted at (but does not include) the directory for the environment itself (e.g. {{production}}).  [~accountid:63d40628f6e1b543161789a7] - does that seem reasonable to you?", "created": "2016-01-25T10:50:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The board is green.", "created": "2016-02-02T10:55:00.000000"}], "components": [], "created": "2015-09-09T19:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70653a04"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynph3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "DP work from later sprint pulled in ahead of schedule."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_341749130_*|*_1_*:*_1_*:*_575749756_*|*_10007_*:*_1_*:*_4740655_*|*_3_*:*_1_*:*_683966146_*|*_5_*:*_1_*:*_20557990633_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10981889796"}], "description": "Add {{get-code-content}} service function to  VersionedCodeService protocol and implement in Puppet Server.  This implementation should read a new TK setting called {{code-content-comand}} (should go alongside {{code-id-command}}) that allows the user to specify an external script that should be called to get file content for a given file at a given code_id.\n\nImplementation must return a stream.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "17632", "fixedVersions": ["SERVER 2.3.0"], "id": "17632", "issueType": "New Feature", "key": "SERVER-887", "labels": ["code_content"], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-02-02T10:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "OSS implementation of get-code-content", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-09-09T19:11:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6859cd9f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotnr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_575897436_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_23474457324"}], "description": "In SERVER-885, we will add a setting that can be used to specify an external script to call to get a value for 'current_code_id'.  This ticket covers the work of modifying the catalog_metadata endpoint to call this script when the setting is provided.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17383", "fixedVersions": [], "id": "17383", "issueType": "New Feature", "key": "SERVER-886", "labels": [], "originalEstimate": "PT0S", "parent": "16145", "parentSummary": "Direct Puppet: Server Catalog Metadata", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-06-14T03:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Modify implementation of catalog_metadata endpoint to use current_code_id_script", "timeSpent": "PT0S", "updated": "2016-06-20T03:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The command will need to accept the relevant arguments (environment, etc.), either as actual CLI arguments, or on STDIN (serialized as JSON or similar?).\n\nI would say that we definitely care about the process exit code.  As for STDERR, probably not, unless the exit code is non-zero, and then we should probably include STDERR in the exception or something.\n\nShould probably have some debug-level logging that prints everything... the command that is being run, STDOUT, STDERR, and the exit code?  That might need to be conditional though, because in the case of the code_content endpoint, STDOUT might be huge.", "created": "2016-01-04T20:36:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] and [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] want to discuss the security implications of this feature with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] in the near future.  Is the script required to run as the same user as the puppet server process?  What other security risks are there that QA ought to look at?\n\nWe shall additionally point this ticket out to management as a potential security risk that ought to be audited.", "created": "2016-01-14T12:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The external process will always be run as the puppet-server user, and we are already doing this via the certificate {{autosign}} functionality, so it's not necessarily any new risk in terms of allowing users to trigger an external process to be executed.\n\nThere may be new risk in terms of validating that the new code is safe in its handling arbitrary user input, but I don't think that necessarily has anything to do with command execution", "created": "2016-01-14T12:57:00.000000"}], "components": [], "created": "2015-09-09T19:08:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@406623b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr1r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_349718251_*|*_1_*:*_1_*:*_576063268_*|*_10007_*:*_1_*:*_680760274_*|*_3_*:*_1_*:*_262781951_*|*_5_*:*_1_*:*_21670628394_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_9606447186"}], "description": "Add a function which executes a file at a given filesystem path.  This will be used as the basis of Puppet Server's implementation of the {{VersionedCodeService}}: users will specify a path in configuration with a script which will return the code ID.\n\nThe initial version of this function should return the STDOUT of the process as String.  Streaming will be investigated/implemented in a future version.\n\nThere is already some prior art of this in Puppet Server, primarily in the \"execution stub\" provided to Puppet.  Look in to this code, see what is reusable.\n\nAlso, figure out what contract around error handling is.  Do we care about STDERR?  Process exit code?\n", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "17085", "fixedVersions": ["SERVER 2.3.0"], "id": "17085", "issueType": "New Feature", "key": "SERVER-885", "labels": ["code_content", "QA"], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-01-20T13:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add a function which runs an external process", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Note: we've decided that for an MVP / Burnside deliverable for Direct Puppet, we can get away without robust streaming on the OSS side. So we'll put this ticket in the post-Burnside bucket.", "created": "2015-11-09T12:15:00.000000"}], "components": [], "created": "2015-09-09T19:07:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ac9ff13"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1123"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotof:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_576159485_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_75626496570"}], "description": "The current support for running external processes from Puppet Server uses a background thread to read buffered data from the STDOUT/STDERR streams, but it buffers all of the data in memory and does not expose it to the caller until the external process completes.\n\nFor Direct Puppet we have some requirements around allowing the user to specify an external script to call to provide file content that should be returned directly in an HTTP response.  It's possible that there may be extremely large files involved in this transaction, so we can't get away with buffering the STDOUT results in memory.\n\nWe need to extend our capabilities around calling external shell commands such that we can stream the data from the command in some way.  In all likelihood, this just means that we need to provide a way to pass in an OutputStream that we use to read the data into; in cases where we want to stream the data we can either use an OutputStream with a fixed buffer size (so that we know the maximum number of bytes that we'll read into memory at a given time), or a PipedOutputStream, or perhaps a combination of the two.\n\nThere will probably be a bit of trickiness involved in this just due to the fact that our current API for this in Puppet Server is synchronous (blocks until the system command exits), and this change may force us to switch to an asynchronous model, which may require us to refactor some places where we currently call that code from, e.g., Puppet::Util::ExecutionStub.", "epicLinkSummary": "Extract shellutils library", "estimate": "PT0S", "externalId": "16694", "fixedVersions": [], "id": "16694", "issueType": "New Feature", "key": "SERVER-884", "labels": ["code_content"], "originalEstimate": "PT0S", "parent": "16751", "parentSummary": "Extract shellutils library", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2018-02-07T17:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add support for streaming output from external shell processes", "timeSpent": "PT0S", "updated": "2018-02-07T17:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:775cefa6-86ab-4922-a646-c92fc405c021", "body": "You can close this case.\n\nEventually found the solution to do this.  Basically we need to combine both private and  key and certificate using  \n\"openssl pkcs12 -export -in\u00a0 /etc/puppetlabs/puppet/ssl/certs/restapi.prudential.com.pem   -inkey \u00a0/etc/puppetlabs/puppet/ssl/private_keys/restapi.prudential.com.pem   -out restapi.prudential.com.pfx\" \n\nThen import the pkcs12 file into Windows certificate manager. Then we are able to communicate with PowerShell Invoke-RestMethod.\n\n", "created": "2015-09-08T08:33:00.000000"}], "components": ["DOCS"], "created": "2015-09-04T08:34:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:775cefa6-86ab-4922-a646-c92fc405c021", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d46fa14"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz223j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_441818752_*|*_6_*:*_1_*:*_0"}], "description": "I have requirement to integrate Puppet with REST call originating from powershell 3.0\n\nWe have good example in the doc to show how this can be done using curl. ( https://docs.puppetlabs.com/pe/latest/nc_forming_requests.html)  \n\nSame example needed to do through PowerShell.   Powershell we can use invoke-Rest cmdlets (https://technet.microsoft.com/en-us/library/Hh849971.aspx)  But I am confused about how to setup the SSL  certificates and how to invoke PowerShell.\n\n", "environment": "Redhat 6 server/AIX clients", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14999", "fixedVersions": [], "id": "14999", "issueType": "Task", "key": "SERVER-883", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:775cefa6-86ab-4922-a646-c92fc405c021", "resolution": "Won't Fix", "resolutionDate": "2015-09-09T11:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "RESTAPI Sample", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:63d40628f6e1b543161789a7], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a], [~accountid:557058:94d3052b-8fff-43b1-91b3-4cdcbc8fcd91] - These are the auth rules we are planning for the {{code_content}} endpoint.  Please let us know if you have any concerns.", "created": "2016-01-19T12:26:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Just to make sure I understand, this allows the listed paths and denies everything else not explicitly permitted? If so, (y).", "created": "2016-01-19T16:35:00.000000"}, {"author": "557058:94d3052b-8fff-43b1-91b3-4cdcbc8fcd91", "body": "Looks good to me", "created": "2016-01-19T17:09:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] - yup, that's correct.  ", "created": "2016-01-19T17:40:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "(y)", "created": "2016-01-20T23:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Whomever picks up this ticket needs to make sure that we have some kind of test coverage to validate against path traversal attacks.  I think we have those kind of tests already for tk-auth, but, since we changed direction and will be implementing the URL restrictions ourselves now, rather than relying on tk-auth, we need to make sure we account for path traversal stuff explicitly.", "created": "2016-01-22T10:00:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Resolving per QA risk assessment.", "created": "2016-02-19T13:29:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Reopening: QA risk assessment doesn't say why its low and @Chris Price asked specifically for path traversal testing above.", "created": "2016-02-22T18:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] FWIW, [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] put some path traversal tests into the clojure test coverage.  I'll leave it to you to decide whether you consider those sufficient, though.", "created": "2016-02-22T18:17:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]  Please let me know if this is a good test approach:\n\n- overwrite any existing tk-auth rule for the static_file_content endpoint with a wide open no auth required rule.\nCreate a \"test-hello_world\" module:\nhello_world/spec/spec_helper.rb\nhello_world/spec/classes/init_spec.rb\nhello_world/README.md\nhello_world/metadata.json\nhello_world/Gemfile\nhello_world/manifests/init.pp\nhello_world/tests/init.pp\nhello_world/Rakefile\nhello_world/files/READTHIS.md\n- copy the hello world module to the production environment\n- add a \"READTHIS.md\" file at ./production/modules/files/READTHIS.md\n\n- Validate that we can curl \nhttps://localhost:8140/puppet/v3/static_file_content/hello_world/READTHIS.md\n\n- but not /hello_world/README.md\n- /README.md\n- /RakeFile.md\n- RakeFile.md\n- etc for each file listed above except for the READTHIS.md file.\n\n\n\n", "created": "2016-02-22T18:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] the url for the READTHIS would be {{/hello_world/files/READTHIS.md}}.  Also you will want to try some URLs that have combinations of {{../}} in them", "created": "2016-02-22T18:31:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The above comment does not need any attention.\n\nDiscussed with Haus.  Linked PR, reviewed pr, especially the unit testing that is happening here:\nhttps://github.com/haus/puppet-server/blob/09c1b015f59a85aebda6a60d668400ea0bc1f5a4/test/unit/puppetlabs/services/master/master_core_test.clj#L202\n\nGiven that there is substantial unit testing that performs path transversal attacks, I'm setting the QA RA back to low, linking the PR, and re-resolving this ticket.\n", "created": "2016-02-22T18:34:00.000000"}], "components": [], "created": "2015-09-04T08:33:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c4e8d4a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3dzr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "pulled in from next sprint. out of things to do."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_88615991_*|*_1_*:*_1_*:*_441420933_*|*_10007_*:*_1_*:*_251490527_*|*_3_*:*_1_*:*_355390903_*|*_5_*:*_2_*:*_19078445871_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_519622750_*|*_10006_*:*_1_*:*_12881683446_*|*_10005_*:*_1_*:*_21681"}], "description": "The implementation of the {{static_file_content}} endpoint should only provide access to a subset of the files in an environment.  This should be hard-coded in the implementation, not expressed in TK auth rules.  Restrict the access to something that maps to roughly the subset of the puppet module code that you could formerly access via the {{file_content}} endpoint; so, roughly:\n\n{code}\nallow environments/*/modules/*/files/**\nallow modules/*/files/**\ndeny *\n{code}\n", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "17631", "fixedVersions": ["SERVER 2.3.0"], "id": "17631", "issueType": "Task", "key": "SERVER-882", "labels": ["code_content"], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-02-22T18:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Restrict the set of files accessible via static_file_content", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "NB: PE-11916 used to capture the requirement of doing this in PE as well, but the scope was narrowed on that ticket to only account for {{code_content}}", "created": "2016-01-19T12:35:00.000000"}], "components": [], "created": "2015-09-04T08:30:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@443592ba"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_441590584_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_39847539902"}], "description": "We need to add a new default ACL rule for accessing the new catalog_metadata endpoint.  This will probably end up looking just like the node/catalog endpoint rules; so, match the certname against the URL substring that appears after /catalog_metadata.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17381", "fixedVersions": [], "id": "17381", "issueType": "Task", "key": "SERVER-881", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-13T14:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add default authz rule for catalog_metadata", "timeSpent": "PT0S", "updated": "2016-12-13T14:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "There's not much to this, but to put a PipedInput/PipedOutputStream in between ring and JGit, you can just do something like this, with a fixed buffer size:\n\nhttps://github.com/puppetlabs/clj-http-client/blob/ca5ad63179052c1cba540649e6e6520f9d6dce06/src/java/com/puppetlabs/http/client/impl/StreamingAsyncResponseConsumer.java#L36-L38\n\nYou can probably ignore the `ExceptionInserting` subclass that this code uses, and just use PipedInput/PipedOutputStream classes both directly.", "created": "2016-01-19T12:23:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This passed CI", "created": "2016-02-09T16:14:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Resolved per QA risk assessment.", "created": "2016-02-10T14:30:00.000000"}], "components": [], "created": "2015-09-04T08:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b60ac24"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynpif:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "DP work from later sprint pulled in ahead of schedule."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_445328675_*|*_1_*:*_1_*:*_441854211_*|*_10007_*:*_1_*:*_584833809_*|*_3_*:*_2_*:*_376616108_*|*_5_*:*_1_*:*_3426339284_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_80192044_*|*_10004_*:*_1_*:*_165765354_*|*_10006_*:*_1_*:*_11668452064"}], "description": "We need a common implementation of the new {{static_file_content}} endpoint.  Logic will probably be as simple as:\n\n* get environment, code_id, path from request\n* call into TK service implementation of {{get_code_content}}\n", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "17084", "fixedVersions": ["SERVER 2.3.0"], "id": "17084", "issueType": "Task", "key": "SERVER-880", "labels": ["code_content"], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-02-10T14:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add static_file_content endpoint", "timeSpent": "PT0S", "updated": "2016-03-21T07:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Update: this ticket and the associated story are probably going to need some cleanup for post-Burnside.\n\nIt's looking like we're going to skip the whole phase of SERVER-867 : Base FOSS implementation of DP functionality and jump straight to the SERVER-868 : Extensible FOSS implementation, with a few caveats.  For now I'm just going to populate the new \"Burnside- Puppet Server Direct Puppet\" epic (SERVER-999) with my latest understanding of things, and then we'll come back and clean up the other tickets later.  SERVER-867 and some of its related tickets are likely to end up being \"Closed - won't fix.\"", "created": "2015-11-09T12:12:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Dupe of SERVER-887", "created": "2016-01-19T12:23:00.000000"}], "components": [], "created": "2015-09-04T08:24:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f6e2bce"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynsl3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_442001677_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11412774403"}], "description": "We need a basic FOSS implementation of the {{get_code_content}} function defined by the new TK service protocol from SERVER-874.\n\nThis function probably just needs to do the following:\n\n{code}\n(if (nil? code_id)\n   (throw (Exception. \"AHAJAJAA\"))\n   (slurp (str code_dir path))\n{code}", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "16692", "fixedVersions": [], "id": "16692", "issueType": "Task", "key": "SERVER-879", "labels": ["code_content"], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2016-01-19T12:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "FOSS base implementation of get_code_content", "timeSpent": "PT0S", "updated": "2016-01-19T12:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-09-04T08:19:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f5f37f3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotmn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_442247466_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_24079206849"}], "description": "This ticket is to capture the implementation work that will come out of the R&D on SERVER-877.  Presumably once we've finalized that algorithm, we can implement the catalog_metadata endpoint as a common bit of code in OSS that calls out to the TK service for the implementation of {{get_current_code_id}}, but otherwise is identical between FOSS and PE.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16410", "fixedVersions": [], "id": "16410", "issueType": "Task", "key": "SERVER-878", "labels": [], "originalEstimate": "PT0S", "parent": "16145", "parentSummary": "Direct Puppet: Server Catalog Metadata", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-06-14T03:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "catalog_metadata endpoint common implementation", "timeSpent": "PT0S", "updated": "2016-06-20T03:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-09-04T08:17:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53d657e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotmf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_442390684_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_24079199522"}], "description": "The catalog_metadata endpoint for DP has some fairly complex implementation details.\n\nThis ticket is just to budget some R&D time to finalizing the decisions about the implementation.\n\nCurrent thinking is that it will be something like this:\n\n* Define schema for response tuple (\u2018catalog_mode\u2019, \u2018use_code_id\u2019?)\n* Read query params from request (environment, node name, cached code id, desired code id, job id?) - still some conversation going on around what this list should be\n* Check environment setting for Direct Puppet; if we\u2019re not in DP mode, return [normal, nil].\n* Else, we are in Direct Puppet mode\u2026 then we have a crazy algorithm for determining whether to use a cached catalog or not.\n\nCurrent thinking on what the crazy algorithm might look like:\n\n{code}\nif direct_puppet\n  if cached_code_id\n    if desired_code_id.nil?\n      (cache, cached_code_id) # scheduled run\n    else\n      if desired_code_id == cached_code_id\n        (cache, cached_code_id) # agent already has it\n      else\n        if desired_code_id != current_code_id\n          raise error # can't compile historical catalog\n        else\n          (fresh, current_code_id) # get current\n        end\n      end\n    end\n  else\n    if desired_code_id != current_code_id\n      raise error # can't compile historical catalog\n    else\n      (fresh, current_code_id)\n    end\n  end\nelse\n  if desired_code_id\n    error # direct_puppet is misconfigured\n  else\n    (fresh, nil) # what puppet does now\n  end\nend\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16189", "fixedVersions": [], "id": "16189", "issueType": "Task", "key": "SERVER-877", "labels": [], "originalEstimate": "PT0S", "parent": "16145", "parentSummary": "Direct Puppet: Server Catalog Metadata", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-06-14T03:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "R&D to finalize catalog_metadata inputs and algorithm details", "timeSpent": "PT0S", "updated": "2016-06-20T03:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA plans to discuss this with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] to determine the risk of this ticket, and the appropriate QA level of work.", "created": "2016-01-14T12:55:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The board is green.", "created": "2016-02-02T10:55:00.000000"}], "components": [], "created": "2015-09-04T08:04:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52a8bb82"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynphr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_674024171_*|*_1_*:*_1_*:*_443195459_*|*_10007_*:*_4_*:*_416784973_*|*_3_*:*_2_*:*_527126397_*|*_5_*:*_1_*:*_20558015477_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10999150030"}], "description": "This will hopefully be a minor re-work of what was done for PE-11911.  Once we have the TK service from SERVER-874, we'll want to put the logic for adding the current_code_id into the catalog endpoint directly into the OSS implementation.  We'll call the {{get_current_code_id}} function from the TK service to support swappable implementations.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15348", "fixedVersions": ["SERVER 2.3.0"], "id": "15348", "issueType": "Task", "key": "SERVER-876", "labels": ["code_content"], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-02-02T10:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "inject current code id into catalog request", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Update: this ticket and the associated story are probably going to need some cleanup for post-Burnside.\n\nIt's looking like we're going to skip the whole phase of SERVER-867 : Base FOSS implementation of DP functionality and jump straight to the SERVER-868 : Extensible FOSS implementation, with a few caveats.  For now I'm just going to populate the new \"Burnside- Puppet Server Direct Puppet\" epic (SERVER-999) with my latest understanding of things, and then we'll come back and clean up the other tickets later.  SERVER-867 and some of its related tickets are likely to end up being \"Closed - won't fix.\"", "created": "2015-11-09T12:08:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - I just wrote up SERVER-1079 ... and then I found this ticket, which is basically identical.  (facepalm)  \n\nI think we should close one of them as a duplicate.  SERVER-1079 seems a little cleaner and I think it covers everything in this ticket that we need, so is it okay with you if I close this one?  ", "created": "2016-01-04T18:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "yup", "created": "2016-01-04T20:29:00.000000"}], "components": [], "created": "2015-09-04T07:58:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65bd4cf4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqaf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_443523549_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10197459789"}], "description": "Once we've defined the protocol we need for Direct Puppet (SERVER-874), we need to provide a base FOSS implementation of get_current_code_id.  The two options for how to implement this so far are to have it return {{nil}} or to have it throw an exception; probably leaning toward {{nil}} for now, as this will need to be called as part of every catalog request in order to add the current code id to the catalog.\n\nBudgeting a bit of extra time for this one since it probably needs to be coordinated with other tasks, and we may need a bit more R&D to validate that returning {{nil}} is a sufficient implementation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14998", "fixedVersions": [], "id": "14998", "issueType": "Task", "key": "SERVER-875", "labels": ["code_content"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2016-01-05T10:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "FOSS implementation of get_current_code_id", "timeSpent": "PT0S", "updated": "2016-01-19T07:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:da659199-c749-426a-b5d9-6563e2c1710a] Please do not resolve tickets when QA Risk Assessment = High.  Reopening...", "created": "2016-01-07T13:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Re-Resolving having set down the risk assessment.  This modification (and other related modifications) will be tested in SERVER-1078.", "created": "2016-01-07T13:26:00.000000"}], "components": [], "created": "2015-09-04T07:51:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4303377f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyojef:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_443926429_*|*_10007_*:*_1_*:*_153182430_*|*_3_*:*_1_*:*_83956534_*|*_5_*:*_2_*:*_22800143631_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_753910_*|*_10006_*:*_1_*:*_10137229182"}], "description": "We need to create a new TK service protocol for Direct Puppet.  It might be called something like {{VersionedCodeService}} and will allow us to provide different implementations of certain behavior between FOSS and PE.\n\nInitially it will probably only have one function:\n\n{code}\n(current-code-id [environment]) :- current-code-id\n{code}\n\nEventually, it will have this function as well, but that's saved for a later ticket:\n\n{code}\n(code-content [environment code-id path]) :- InputStream\n{code}", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "17630", "fixedVersions": ["SERVER 2.3.0"], "id": "17630", "issueType": "Task", "key": "SERVER-874", "labels": ["code_content"], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-01-07T13:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "TK VersionedCodeService protocol definition", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-09-04T07:44:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78b29af3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotlr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_444394969_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_39847499247"}], "description": "We need to clear out environment config settings and reload them when we flush the environment cache.\n\nImplementation-wise, I can imagine this might look something like:\n\n* rename {{mark-all-environments-expired!}} to {{flush-environment-cache!}} or similar\n* add logic that flushes and re-populates the settings cache from SERVER-872 during {{flush-environment-cache!}}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17378", "fixedVersions": [], "id": "17378", "issueType": "Task", "key": "SERVER-873", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-13T14:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "flush and reload environment config data when flushing environment cache", "timeSpent": "PT0S", "updated": "2017-05-16T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-09-04T07:41:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@100756f9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotlb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_444557880_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_39847457023"}], "description": "When the server starts up, we need to make a call to JRuby to get the config data for all of the Puppet environments.  We'll cache it so that it is accessible for things such as determining whether or not Direct Puppet is enabled for an environment.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17083", "fixedVersions": [], "id": "17083", "issueType": "Task", "key": "SERVER-872", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-13T14:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add environment config cache in clojure, populate at startup", "timeSpent": "PT0S", "updated": "2016-12-13T14:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-09-04T07:37:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ed92f6c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotlj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_444813527_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_39847487150"}], "description": "This is somewhat of a placeholder ticket that may evolve into some other tickets or end up being closed out as a dupe.\n\nWe've been having conversations about ways to improve the semantics of the JRuby pool data structure in order to give us better guarantees about minimizing the downtime during a code deploy, plus prioritizing code deploys over pending agent requests, making sure there's a way to access a JRuby instance *during* the code deploy event, etc.\n\nThis ticket is just here to capture that we still have a bit of work to do to finalize the details on that.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16666", "fixedVersions": [], "id": "16666", "issueType": "Task", "key": "SERVER-871", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-13T14:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Finish work to support atomic code deploy life cycle", "timeSpent": "PT0S", "updated": "2016-12-13T14:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-09-04T07:22:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a3437c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotl3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_445721264_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_39847444396"}], "description": "This is a placeholder to capture whatever implementation work falls out of the final design discussions on SERVER-869.  This ticket may end up being flagged as a dupe of PUP-5011.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16409", "fixedVersions": [], "id": "16409", "issueType": "Task", "key": "SERVER-870", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-13T14:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implementation of Ruby API for retrieving environment settings", "timeSpent": "PT0S", "updated": "2016-12-13T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "59f91f3e34edd66a56c83302", "body": "Is this the API for environment providers?\n\nIn that case it would be good if it was changed to allow them to provide a list of paths to individual modules instead of a list of modulepaths. That way I could implement something like https://github.com/dalen/spikor as an environment provider instead of copying/linking stuff around on the filesystem. IMHO this is an extension point that is really missing in puppet (even librarian-puppet or r10k could be implemented in much nicer ways if they didn't have to copy all modules into a single directory ahead of time).", "created": "2016-04-14T02:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hey [~accountid:59f91f3e34edd66a56c83302].  I'm not sure this ticket is about environment \"providers\", per se, but it's possible that it has some overlap with what you're wanting to do?  This ticket is mostly about providing a Ruby API for Puppet Server to use to just get the configuration info from the environment.conf file.\n\nThere are some other tickets that we've already completed about defining a Ruby API for asking Puppet for a list of all of the classes in an environment, which would have information about all of the modules as well as the module paths.\n\nBut if I understand correctly, what you're asking for is something that goes in the opposite direction?  Something where Puppet would call *your* code to ask for a list of modules / module paths, prior to doing a compilation?  If that's the case it'd probably be worth creating a separate ticket for it.", "created": "2016-04-14T07:27:00.000000"}, {"author": "59f91f3e34edd66a56c83302", "body": "Yeah, exactly. Some plugin that puppet would ask to get a list of modules for an environment. At the moment that sort of exists with the environment providers (implemented for directory environments). But the API is very limited as it only allows them to return a directory containing all the modules instead of a list of individual modules.\n\nI can create a separate ticket, was just wondering if that would be duplicating this ticket.", "created": "2016-04-14T09:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Nah, I think a new ticket is appropriate for that.  Thanks!", "created": "2016-04-14T09:22:00.000000"}, {"author": "59f91f3e34edd66a56c83302", "body": "I created https://puppet.atlassian.net/browse/PUP-6175 for it (and linked it to this one)", "created": "2016-04-14T09:25:00.000000"}], "components": [], "created": "2015-09-04T07:07:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1bb25b12"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotkv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_446601390_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_39847434379"}], "description": "We need a supported API that we can use to call from Clojure into JRuby to get back the latest copy of the environment configuration data for Puppet environments.\n\nThis ticket is to capture the remaining design work that needs to be done to finalize the desired API.  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and I have been discussing this with the language team, mostly in PUP-5011.  The API needs to be sufficient for use in managing a cache of environment settings in Clojure for Direct Puppet, but also for the NC class refresh work described in PE-10214.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16186", "fixedVersions": [], "id": "16186", "issueType": "Task", "key": "SERVER-869", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-13T14:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Finalize design for Ruby API for getting environment config from Puppet", "timeSpent": "PT0S", "updated": "2016-12-13T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "This was for planning purposes and now we don't need it.", "created": "2016-01-19T12:30:00.000000"}], "components": [], "created": "2015-09-04T02:10:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@277c4e2b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynslb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_464395019_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11413204361"}], "description": "This is a story to group together the work relating to building an implementation of the Direct Puppet features in FOSS that supports user extensibility via configuring external scripts to call to fulfill the API contracts.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15814", "fixedVersions": [], "id": "15814", "issueType": "Story", "key": "SERVER-868", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-01-19T12:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Extensible FOSS implementation of Direct Puppet functionality", "timeSpent": "PT0S", "updated": "2016-02-01T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "PE-12003 (duplicate of)", "created": "2015-10-14T15:07:00.000000"}], "components": [], "created": "2015-09-03T11:49:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c36bb48"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyodan:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_46225_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_3554272580_*|*_10005_*:*_1_*:*_7239"}], "description": "Once we have a Puppet module (from [FM-3579]) and a we need to use that module to configure PE. This will probably entail a collaboration between the Server team and the Integration team. This will probably result in changes to the PE_* management modules and/or default config files.\n\nDetermine division of work between Integration and Server E.\n", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15345", "fixedVersions": ["SERVER 2.2.0"], "id": "15345", "issueType": "Task", "key": "SERVER-865", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Duplicate", "resolutionDate": "2015-10-14T15:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use tk-auth module to configure auth.conf rules for PE", "timeSpent": "PT0S", "updated": "2015-10-14T15:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Update: this story and the associated tickets are probably going to need some cleanup for post-Burnside.\n\nIt's looking like we're going to skip the whole phase of SERVER-867 : Base FOSS implementation of DP functionality and jump straight to the SERVER-868 : Extensible FOSS implementation, with a few caveats.  For now I'm just going to populate the new \"Burnside- Puppet Server Direct Puppet\" epic (SERVER-999) with my latest understanding of things, and then we'll come back and clean up the other tickets later.  SERVER-867 and some of its related tickets are likely to end up being \"Closed - won't fix.\"", "created": "2015-11-09T12:09:00.000000"}], "components": [], "created": "2015-09-03T05:53:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@be11bcc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotn3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_537437734_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_39847569780"}], "description": "This is a story to capture all of the work for building the basic OSS implementation of the Direct Puppet functionality.  (It might make sense to move this ticket over to the SERVER project; just erring on the side of caution for now.)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15622", "fixedVersions": [], "id": "15622", "issueType": "Story", "key": "SERVER-867", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-13T14:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Base FOSS implementation of Direct Puppet functionality", "timeSpent": "PT0S", "updated": "2016-12-13T14:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "In the past we've assessed risk more broadly", "created": "2016-01-14T12:57:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We decided to close all of the Story tickets for Burnside Server static catalogs.", "created": "2016-01-19T14:29:00.000000"}], "components": [], "created": "2015-09-03T05:50:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f3bcec8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-999"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3orb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_537602252_*|*_3_*:*_1_*:*_346873060_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11073437287"}], "description": "This is a story to group together the tickets required for building the common foundation of the Direct Puppet functionality; code that will be shared between both FOSS and PE implementations.", "epicLinkSummary": "(Burnside) Direct Puppet: Server Static Catalog", "estimate": "PT0S", "externalId": "15342", "fixedVersions": ["SERVER 2.3.0"], "id": "15342", "issueType": "Story", "key": "SERVER-866", "labels": [], "originalEstimate": "PT0S", "parent": "15840", "parentSummary": "(Burnside) Direct Puppet: Server Static Catalog", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-01-19T14:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Common functionality for Direct Puppet (FOSS + PE)", "timeSpent": "PT0S", "updated": "2016-01-22T12:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I was able to reproduce this - any request to {{/production/certificate_statuses/*}} results in an HTTP 404, which I guess explains the {{[]}} you were seeing.  Note that the {{?for=certificate_request}} query parameter is not necessary to trigger this behavior.  (And, in fact, it's completely ignored.)\n\nThat behavior is not too surprising, based on the implementation.  I am not sure if {{*}} is supposed to be valid in this URL, but I suppose it could be considered a bug due to the wording in http://docs.puppetlabs.com/puppet/latest/reference/http_api/http_certificate_status.html.", "created": "2015-09-02T10:59:00.000000"}, {"author": "557058:5223fd10-1107-4311-8310-f1ef1e182aaa", "body": "Yeah I noticed that it was not respecting the certificate_request parameter as well, I wasn't sure why they were doing that in that agent face since there is nothing in the API spec about parameters like that but the face is definitely broken in more than one way so I guess it just wasn't surprising ", "created": "2015-09-03T07:05:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Opened a PR for this here: https://github.com/puppetlabs/puppet-server/pull/980\n\nIt looks like we're calling bidi incorrectly to achieve what we want. My notes:\n{code}\nRoutes are defined for certificate-authority in the services core[1].\n\nWe use comidi/routes, comidi/context, and comidi/ANY to construct a route,\nwhich is then turned into a ring handler via comidi/routes->handler in the\ntrapperkeeper service definition[2].\n\ncomidi/routes->handler[3] calls bidi/compile-route on our routes before\npassing them to comidi/make-handler[4] which calls bidi/match-route on the\ncompiled routes.\n\nThis flow is where we create the handler that will eventually match the route\ngiven to it. All of the meaningful work is delegated to bidi/match-route and\nthere is no coercion of the route definition at this level. The fn\ncomidi/make-handler is also largely copied from bidi (see upstream here[5])[6].\n\nTurning to the fns we use to construct our route in the first place to see if\nwe are using comidi incorrectly, or that comidi it altering our routes:\n* comidi/ANY is a macro that does not alter the route at all\n  (it wraps the bindings and body into an simple handler)\n* comidi/context merely associates a url prefix with the subsequent route\n  definitions\n* comidi/routes merely wraps anything in vector with a blank string prefix\n  (which in bidi will match anything).\n\nBased on reading the code we should get a route passed to bidi/compile-route\nthat looks like this:\n[base-url\n  [\"\"\n    [\"/v1\"\n      [[\"/certificate_statuses/\" :ignored-but-required] $anonHandler]]]]\n\n\nCan validate that by instrumenting comidi's version of make-handler and starting\npuppet-server. This is what comidi is passing to bidi's match-route:\n\n[\"/puppet-ca\"\n [[\"\"\n   [[[\"/v1\"]\n     [ ...skip certificate_status endpoint...\n      [[\"/certificate_statuses/\" :ignored-but-required]\n       #object[puppetlabs.services.ca.certificate_authority_core$eval30983$web_routes__309\n88$fn__30989$fn__30992 0x3c47d635 \"puppetlabs.services.ca.certificate_authority_core$eval3\n0983$web_routes__30988$fn__30989$fn__30992@3c47d635\"]]\n      ...skip remaining endpoints...\n      ]]]]]]\n\n\nA minimal reproduction from the repl would be:\n```clojure\nuser=> (require '[bidi.bidi :as b])\nnil\n\nuser=> (def route [[\"base/\" :segment] :success])\n#'user/route\n\nuser=> (b/match-route route \"base/supplied\")\n{:route-params {:segment \"supplied\"}, :handler :success]}\n\nuser=> (b/match-route route \"base/*\")\nnil\n```\n\nChris pointed out in email that there are other characters that do not appear\nto be valid within a bidi route:\n```clojure\n", "created": "2016-03-18T22:59:00.000000"}], "components": ["Certificate Authority"], "created": "2015-09-02T07:43:00.000000", "creator": "557058:5223fd10-1107-4311-8310-f1ef1e182aaa", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44ba15c6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynimn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Had time for additional low hanging fruit while on-boarding"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_86282051_*|*_1_*:*_1_*:*_14929816_*|*_10007_*:*_1_*:*_231352201_*|*_3_*:*_1_*:*_1684857_*|*_5_*:*_1_*:*_4319730620_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_696686747_*|*_10006_*:*_1_*:*_8967_*|*_10005_*:*_1_*:*_17145549092"}], "description": "Using the puppet certificate face (after fixing PUP-5132) the face does a HTTP request:\n\n{quote}\nGET /production/certificate_statuses/*?for=certificate_request HTTP/1.1\n{quote}\n\nWhich Puppet Server responds with [], but changing the asterisk to a 0 or any other alphanumeric key, the server responds with all certificates.", "environment": "RHEL6, Puppet Server 1.1.0, client is Puppet 3.7.1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15812", "fixedVersions": ["SERVER 2.4.0"], "id": "15812", "issueType": "Bug", "key": "SERVER-864", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:5223fd10-1107-4311-8310-f1ef1e182aaa", "resolution": "Fixed", "resolutionDate": "2016-03-30T16:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver CA does not return certs from certificate_statuses when key is asterisk (*)", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "Completed as part of other work [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] has completed. \n\ncc [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]", "created": "2016-03-02T11:37:00.000000"}], "components": [], "created": "2015-09-02T07:35:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4921c447"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3um7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15291040_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_15727590969"}], "description": "In SERVER-860 and friends, we have some work around adding locking to the data structure that manages our JRuby pools.\n\nIn various design discussions we've talked about performance tradeoffs between the various implementations; ReentrantReadWriteLock fair vs. unfair, Sempahores fair vs. unfair, and maybe an approach involving managing two queues instead of one.\n\nWe need to do some performance testing to get a sense for how big the tradeoffs are between the various implementation strategies.  Assuming that PE-11856 is done before then, we will hopefully have some gatling data that might give us some sense of how much the locking performance will really matter given that the JRuby operations themselves are likely to be much more expensive.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17629", "fixedVersions": [], "id": "17629", "issueType": "Task", "key": "SERVER-863", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-03-02T11:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "perf testing for locking strategies", "timeSpent": "PT0S", "updated": "2016-03-31T10:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2015-12-14T11:19:00.000000", "name": "file-sync-test.sh", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11107"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I conquer.\n\n!http://24.media.tumblr.com/tumblr_m48cddrbNY1r3yxp8o1_500.jpg!", "created": "2015-12-18T10:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged to the puppet-server#master branch at [bba72d|https://github.com/puppetlabs/puppet-server/commit/bba72de7c1a93c74a053fadbcda01e1049280c68].\n\nAll tests in the puppet-server#master CI pipeline passed.  Link to the last job in the pipeline (puppet-server#master 25 / full acceptance test suite) - https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-master/45/.\n\nMoving ticket to testing.", "created": "2016-01-08T09:41:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This change has been well tested as documented above.  There will be additional future testing as well.  Moving to resolved.", "created": "2016-01-12T12:53:00.000000"}], "components": [], "created": "2015-09-02T07:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3080df17"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynvlb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_74994379_*|*_1_*:*_1_*:*_15507862_*|*_10007_*:*_1_*:*_2321912166_*|*_3_*:*_1_*:*_193559450_*|*_5_*:*_1_*:*_22365525760_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_357115448_*|*_10006_*:*_1_*:*_8464592608"}], "description": "In SERVER-860 we're putting some locking infrastructure into a data structure that manages the JRuby pool, to facilitate things like atomic code deploys.\n\nThe initial implementation of that data structure will be built using a read/write lock, which has some properties that limit our ability to use it for more complex tasks in the future.\n\nThis ticket is to capture some remaining design work about modifying the implementation of that data structure to use Semaphores rather than the read/write lock, to make sure that we meet all of the requirements about managing access to the pool, prioritizing code deploys over handling agent requests, minimizing the code deploy window, and supporting a 'borrow' operation on the thread that is holding the write lock (this last property is the one that is not possible with the read/write lock approach).\n\nWe have some POC designs in branches, but the current efforts may have some race conditions or concerns about starvation, so we need to talk through the remaining details and come up with a final plan.\n\nOutput of this ticket should be another ticket that describes the final implementation strategy.\n\nh6. Update\n\nNotes from [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]...\n\nAfter doing some more research, we ended up turning this into a ticket which covers the actual implementation as well.  We previously experimented with several other variations on the current {{ReentrantReadWriteLock}} + {{LinkedBlockingDeque}} based approach is used in Puppet Server 2.2.0.  Each of those variations seemed to present some potential race conditions which could be problematic.  The needs to minimize the time to a write lock being acquired for a code deploy and also to allow for instances to be borrowed by the write lock writer during the code deploy were particularly challenging.\n\nI put together a PR which basically consolidates all of the locking around pool access - both for read borrowers and write lock holders - behind a single {{ReentrantLock}}, which is also what a {{LinkedBlockingDeque}} uses in its internal implementation to guard access to its underlying deque.  The {{ReentrantLock}} would synchronize access to an underlying {{LinkedList}} deque.  By requiring that all read/write access to the deque go through the {{ReentrantLock}}, the race conditions around atomicity of updates to the internal deque and its corresponding set which includes all of the registered elements should go away.\n\nSimilar to how the {{LinkedBlockingDeque}} synchronizes access to its underlying queue, this new JRubyPool implementation uses Java {{Condition}} variables to park incoming requests when the pool is not prepared to handle them:\n\n- a {{notEmpty}} variable which parks an incoming borrow request when the underlying queue is empty\n- a {{notWriteLocked}} variable which parks an incoming borrow or lock request when the underlying queue is locked\n- an {{allRegisteredInQueue}} variable which parks a newly-granted lock request which needs to wait to cede control back to the requester until all of the registered pool instances have been returned to the pool\n\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17315", "fixedVersions": ["SERVER 2.3.0"], "id": "17315", "issueType": "Task", "key": "SERVER-862", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-01-12T12:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "R&D to finalize semaphore-based approach for JRuby Pool data structure", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] if you have any notes or links to add on this topic, please do!", "created": "2015-09-02T07:36:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Finally remembered to do this - sorry it's taken me so long.\n\nI watched the talk linked to in the description, and it does seem relevant to what we'd like to do here. The first half is mostly an overview of generative testing and clojure test.check. The second half (beginning at about the 17 minute mark) talks about using generative for testing concurrency, specifically using knossos (https://github.com/aphyr/knossos).\n\nThe slides for this talk can be found at http://www.philandstuff.com/slides/2014/euroclojure.html. Note that this uses reveal.js \u201csubsections\" - press the down arrow to show additional slides/subsections, use the right arrow to go to a new section. The code for the example used in the talk is at https://github.com/philandstuff/test-check-knossos.\n\nLinked from this talk is a blog post written by a Basho engineer about using QuickCheck to do generative testing of poolboy, an erlang tool for managing worker pools. http://basho.com/posts/technical/quickchecking-poolboy-for-fun-and-profit/ Although it\u2019s about doing generative testing in erlang, I think they\u2019re testing very similar things that we want to test.\n\nThere are some additional resources linked from the closing slide of the EuroClojure talk. I have mostly skimmed over these things, I haven't done any in-depth thinking of how exactly we would apply these ideas to testing the JRubyPool data structure, but it does seem like some of these ideas are applicable and that it could be done.", "created": "2015-12-23T07:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks, Ruth!\n\nAnother resource we should look into is the stuff that the PuppetDB team did for generative testing on their HA code:\n\nhttps://github.com/puppetlabs/pe-puppetdb-extensions/blob/master/test/puppetlabs/pe_puppetdb_extensions/sync/convergence_test.clj\n\nI haven't had time to get very deep into it yet, but I think they're also doing some similar things to what we want to do.", "created": "2015-12-23T08:01:00.000000"}, {"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "Closing this ticket, as this was a placeholder for work. \nIf this is critical for future work, please reopen it. ", "created": "2017-10-05T17:53:00.000000"}], "components": [], "created": "2015-09-02T07:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30092a2e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ulz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15930084_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_66031356150"}], "description": "I would like to look into the possibility of writing some generative tests that will perform various operations on the JRuby Pool concurrent data structure, to try to help validate that there are no deadlocks or race conditions.\n\nThis talk:\n\nhttps://vimeo.com/100976693\n\nSupposedly covers some things about using the clojure test.check library along with some other tools to write tests for concurrent code.  I'd like for us to get a bit of research done on this topic to see whether it's a viable approach for testing our data structure's concurrency properties.  Output from this ticket would probably be some notes, and perhaps example code, about how we might do this... plus the creation of a follow-up ticket that covers actually building out some tests like this for our data structure if it proves viable.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17082", "fixedVersions": [], "id": "17082", "issueType": "Task", "key": "SERVER-861", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2017-10-05T17:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "R&D / generative tests for correctness for JRubyPool data structure", "timeSpent": "PT0S", "updated": "2017-10-05T17:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Is this user-visible at all? It doesn't read like it. Trying to decide if it's high risk from the QA point of view, and I think \"No.\"", "created": "2015-09-22T11:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] it's not user-visible at all... but it is somewhat risky as it changes an important implementation detail of one of the fundamental parts of the system.\n\nThat said, I don't think there's necessarily anything specific that QA can do to test it, other than ensuring that we get some good long-running test runs of the whole system via gatling / clamps / etc.\n\nWe really need to schedule / kick-off a long-running gatling test *anyway*, and I think that would largely mitigate the risk of this ticket, but we haven't actually scheduled that yet due to being swamped with other work :/", "created": "2015-09-22T11:14:00.000000"}], "components": [], "created": "2015-09-02T06:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@104d90e7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoejz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_201984647_*|*_1_*:*_1_*:*_18174305_*|*_10007_*:*_1_*:*_502409056_*|*_3_*:*_1_*:*_604928684_*|*_5_*:*_1_*:*_4355121149_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1111841287"}], "description": "After R&D and discussion with several members of the team, we've decided to move the locking logic relating to atomic code deploys into an encapsulated data structure that manages the JRuby pool.\n\nAssumptions:\n\n1. We'll do this in the OSS codebase\n2. It will be built using a ReentrantReadWriteLock, just like the current implementation in PE is, but the RRWL will be encapsulated in the API of the data structure rather than being used directly from Clojure.\n\nWe already have most of the code for this in our scratch branches, so hopefully this should be fairly easy to integrate.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15338", "fixedVersions": ["SERVER 2.2.0"], "id": "15338", "issueType": "Task", "key": "SERVER-860", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-09-30T12:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Introduce ReentrantReadWriteLock into JRubyPool data structure", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "attachments": [], "comments": [{"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "I'm looking into whether this should be a Puppet Server writing task.", "created": "2015-09-01T11:27:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] This is the ticket that I mentioned. This is a troubleshooting doc, and since we don't have someone actively writing puppet server content on the team, it would be great if someone could provide us with the information that Nick is requesting. ", "created": "2015-09-02T12:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] my guess is that we probably need some general docs about configuring logging for all Puppet Labs clojure applications.  The instructions should be consistent for all of them, which will include: Puppet Server, PuppetDB, PE Console, and the new App Manager / Deployer services.\n\nTo my knowledge, all that we really have on that topic so far is:\n\nhttps://github.com/puppetlabs/trapperkeeper/wiki/Built-in-Configuration-Service#logging-configuration\n\nwhich is probably not sufficient for your needs, and mostly just redirects users to the documentation for the underlying \"logback\" library that we are using for logging:\n\nhttp://logback.qos.ch/manual/configuration.html\n\n[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] [~accountid:557058:dc666788-5651-476c-a211-ec5b44a7b0dd] do either of your projects have any other prior art on documentation for logging configuration?\n\n[~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] if you need a dev to write something up as a first pass at this, let me know whether you think it will be sufficient for us to document it as a general thing that spans multiple PL applications or whether it needs to be specifically focused on Puppet Server.  Either way I'm sure we can find someone to take that on, but if the former approach is acceptable then we have a broader pool of developers we could potentially ask to help out.\n\n", "created": "2015-09-03T03:57:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "We have nothing. There is a ticket soon to add some commented stuff in the logback.xml but that seems only slightly related.", "created": "2015-09-03T10:30:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - sorry for the long delay on this. Can you find someone to document configuring logging as a general thing that spans multiple PL applications and we'll add that to the docs?", "created": "2015-11-23T16:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] yes, but we just started a new sprint so it might be something we have to try to do next sprint unless it's more urgent than that for you?\n\nAlso if we can move this ticket over to one of our Jira projects that'll make it easier to get it onto our radar so we pick it up as soon as we can", "created": "2015-12-02T18:11:00.000000"}, {"author": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Please feel free to move it. cc [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e].", "created": "2015-12-18T10:53:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "(I moved it)", "created": "2015-12-22T12:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, thanks, this should come up in our next triage meeting then and we'll get it into a sprint.", "created": "2015-12-22T12:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We will pull this into the next Emerald sprint, and maybe reach out to [~accountid:623e754d94742a00683f7cf0] to see if he wants to help.", "created": "2016-01-06T11:19:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Per [PR 882|https://github.com/puppetlabs/puppet-server/pull/882] and SERVER-1069, we have some Logback docs in the pipe.", "created": "2016-01-27T15:31:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Logback docs are merged. The rest of the work to close this out is backlogged until direct puppet docs and 2.3.0 docs are done.", "created": "2016-03-09T12:17:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] [~accountid:557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f] Would a link to https://docs.puppetlabs.com/puppetserver/latest/config_file_logbackxml.html resolve this? If so, I might be able to hand this off.", "created": "2016-03-09T12:18:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Bumping and reassigning per last comment.", "created": "2016-03-23T12:14:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] That would be better than the current page.  \n\n[~accountid:623e754d94742a00683f7cf0] [~accountid:557058:745ad6f8-2461-4691-9873-549d5904bb16] thoughts?  ", "created": "2016-06-24T09:38:00.000000"}, {"author": "557058:745ad6f8-2461-4691-9873-549d5904bb16", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] I agree that link would be an improvement over what we have out there now.  That document will at least tell the customer how to set puppetserver to log debug messages, which is critical to the function of that page.  \n\nI'm not sure why we even mention --logdest in the first place.  The additional logging will just go to the standard puppetserver log and I see no reason to muddy the waters for the customer by suggesting they redirect the logs in these instructions.  Even if we were going to suggest they redirect the server logs, it would be done via the instructions at https://docs.puppetlabs.com/puppetserver/latest/config_file_logbackxml.html or done with syslog configuration.  I think the --logdest reference should just be removed as it really doesn't fit here.", "created": "2016-07-07T14:20:00.000000"}], "components": [], "created": "2015-08-27T17:11:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@31b38b22"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynit3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11995608963_*|*_3_*:*_2_*:*_3629228821_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_59810830346_*|*_10006_*:*_2_*:*_45600_*|*_10005_*:*_2_*:*_2414901586"}], "description": "This page: \nhttps://docs.puppetlabs.com/pe/latest/trouble_puppet.html\n\nSays you need to up the logs to debug and maybe change the --logdest.  However, there is no indication of how to do that with puppetserver. \n\ndebug can be set in logback.xml however I'm not sure about logest.  ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14997", "fixedVersions": [], "id": "14997", "issueType": "Bug", "key": "SERVER-1074", "labels": ["tcse"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Fixed", "resolutionDate": "2018-02-13T17:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "profiling documentation page should mention how to change settings in puppetserver", "timeSpent": "PT0S", "updated": "2018-02-13T17:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c0f04562ab90069f8b137", "created": "2015-10-01T02:36:00.000000", "name": "32core-1-cpu.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10794"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2015-10-01T02:36:00.000000", "name": "32core-1-load.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10865"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2015-10-01T02:36:00.000000", "name": "32core-2-cpu.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11023"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2015-10-01T02:36:00.000000", "name": "32core-2-load.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10935"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2015-10-01T02:36:00.000000", "name": "64core-1-cpu.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11182"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2015-10-01T02:36:00.000000", "name": "64core-1-load.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11105"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2015-08-25T08:53:00.000000", "name": "puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10565"}, {"attacher": "623c0943866b810069e433c3", "created": "2015-09-11T02:33:00.000000", "name": "puppetserver.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11022"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2015-08-26T01:42:00.000000", "name": "puppetserver8u25.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10933"}, {"attacher": "623c0f04562ab90069f8b137", "created": "2015-10-15T13:20:00.000000", "name": "puppetserver_2.1.1.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10724"}, {"attacher": "623c0943866b810069e433c3", "created": "2015-09-14T07:16:00.000000", "name": "puppetserver_gc.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10934"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi Stefan, thanks for opening a ticket for this.\n\nCan you tell me the precise version numbers of the JDK that you've tried?  I found this post:\n\nhttps://github.com/jruby/jruby/issues/2708\n\nWherein the JRuby devs seem to suspect that this issue may be related to a change in OpenJDK 8u40, and that it might not happen in older versions of the JDK.\n\nSo, it'd be useful to know which versions you've tried, and also to know if it would be possible to try any other versions (perhaps trying JDK7, just to see if the problem is present there as well?)\n", "created": "2015-08-25T09:13:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Hi Chris,\n\nwe use the OpenJDK 8 as provided from Scientific Linux and switched the Java versions via alternatives system:\n\n{noformat}\n# rpm -qa java-\\* | sort\njava-1.7.0-openjdk-1.7.0.85-2.6.1.3.el6_6.x86_64\njava-1.8.0-openjdk-1.8.0.51-0.b16.el6_6.x86_64\njava-1.8.0-openjdk-devel-1.8.0.51-0.b16.el6_6.x86_64\njava-1.8.0-openjdk-headless-1.8.0.51-0.b16.el6_6.x86_64\njava-1.8.0-oracle-1.8.0.45-1jpp.dz.1.el6.x86_64\njava-1.8.0-oracle-jce-policy-1.8.0-1jpp.dz.1.noarch\n\n# java -version\nopenjdk version \"1.8.0_51\"\nOpenJDK Runtime Environment (build 1.8.0_51-b16)\nOpenJDK 64-Bit Server VM (build 25.51-b03, mixed mode)\n{noformat}\n\nFor Oracle JRE 8, we only had an older version available, which is not from RHEL nor SL:\n{noformat}\n# java -version\njava version \"1.8.0_45\"\nJava(TM) SE Runtime Environment (build 1.8.0_45-b14)\nJava HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)\n{noformat}\n\nWe tried it 2-3 times with OpenJDK 7, but this did not change anything in the error messages or behaviour.\nSee below for the exact version:\n{noformat}\n# java -version\njava version \"1.7.0_85\"\nOpenJDK Runtime Environment (rhel-2.6.1.3.el6_6-x86_64 u85-b01)\nOpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)\n{noformat}\n\nRegards,\nStefan", "created": "2015-08-25T09:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, thanks.  Some other random questions:\n\nI noticed a weird Jetty HTTP error message in your log file.  I presume that you have agents actively checking in to this system as it's coming online?  Would it be possible to try running it on a different port so that there are no agents hitting it as it comes up?  Just curious whether the load has anything to do with the ability to reproduce.\n\nAnother question is whether or not you have anything special / custom about your SSL certificates, or if you're just using the vanilla ones that Puppet manages.  I'm curious if there's anything specific about your environment that is triggering the access of the {{NetscapeSPKI}} class, that perhaps we don't see in a typical environment.", "created": "2015-08-25T09:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Also, how many CPU cores does your server have?", "created": "2015-08-25T09:37:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "During the migration process itself, we disabled the hosts in the loadbalancer. Agent requests were not delivered to the backend servers.\nThe HTTP requests might be from the monitor of the loadbalancer, to check if the service is alive. I will try to let it run on a different port, just to make sure.\n\nWe use the default Puppet CA. Due to a limitation in the loadbalancer, we reduced the keylength to 2048 bit.\nBesides the unencrypted endpoint serving the puppet agent requests through the LB, the SSL endpoint is active as well. We use it only for the admin API, so that only certain hosts with a valid certificate are allowed to reset the environment cache.\n\nThe 2x R715 have each 32 cores with 64GB RAM, the R815 has 64 cores with 128GB RAM. As I wrote, this is beefy hardware :)", "created": "2015-08-25T10:02:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Tried to start Puppet Server on a different set of ports, where no traffic could disturb the startup process.\nSame result, throwing the exception at instance 8 of configured 32 and a JVM heap size of 48g.", "created": "2015-08-25T12:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, thanks.  That at least helps us reduce the number of variables in the equation.\n\nThe best next steps that I can think of are:\n\n1. Try with JDK 8u25.  I presume that'll be easier to do with an Oracle JDK than with OpenJDK because you can just grab the older tarball from the Oracle download site, but I think either would be fine.  Because of the comments on that JRuby issue ( https://github.com/jruby/jruby/issues/2708 ), it'd be good to confirm whether or not you can repro the error with the same JDK that the user on that thread said fixed the problem for them.\n\n2. If you are unable to repro with JDK 8u25 then we can maybe look into the JDK changelogs and see if anything jumps out, and maybe file a JDK bug.  The JRuby ticket suggests that it might be a garbage collection issue, so we could potentially try playing around with some GC flags as well.  or...\n\n3. If you *are* able to repro with that JDK then I think the next step will be to try to simplify the reproduction case.  The challenge there may be that we might not have access to hardware that is as awesome as yours :)  If we get to that point we can check and see what hardware we have available and maybe try a simple repro there, and/or, if you're willing, we could maybe ship you over some simplified code that attempts to repro without necessarily starting up the whole server.  That process may take some back and forth, though, so if you can try JDK 8u25 first, let's see how that goes.\n", "created": "2015-08-26T00:12:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "I had been able to reproduce the issue with Oracle JRE 8u25:\n{noformat}\n# java -version\njava version \"1.8.0_25\"\nJava(TM) SE Runtime Environment (build 1.8.0_25-b17)\nJava HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)\n{noformat}\n\nmax-instances was set to 32 and JVM heap to 48g, Puppet server was dying at instance 14.\n\nThis time, an exception about the deep_merge gemspec was logged (see [^puppetserver8u25.log]):\n{noformat}\nCaused by: org.jruby.embed.EvalFailedException: (Errno::EACCES) /var/lib/puppet/jruby-gems/specifications/deep_merge-1.0.1.gemspec\n{noformat}\n\nThe gem has been installed via the puppetserver gem command and is also in the list of gems:\n{noformat}\n# puppetserver gem list\n\n*** LOCAL GEMS ***\n\ndeep_merge (1.0.1)\njar-dependencies (0.1.13)\njruby-openssl (0.9.7 java)\njson (1.8.0 java)\nrake (10.1.0)\nrdoc (4.1.2)\n{noformat}", "created": "2015-08-26T01:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, thanks for the confirmation.  I'll work on getting the following things in motion then:\n\n1. a ticket opened against JRuby to see if they have any suggestions\n2. an attempt to repro this on some hardware in our office, though I'm not sure we have anything as beefy as yours\n3. If you're amenable, I can have someone on our end try to put together a simpler repro case to ship over to you to try out.  I'm thinking we'd start with something that just tries to do all of the JRuby initialization in a loop w/o starting any of the other parts of the server.", "created": "2015-08-26T02:03:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Yep, if you have code for testing/reproduction, we can run it.\nUnfortunately, I will be absent for the next 3 weeks, but I have added 2 colleagues ([~accountid:623c0bcca2f6400069eb77f4] and [~accountid:623c0943866b810069e433c3]) as watchers.\nThey will follow this issue for updates :)", "created": "2015-08-28T07:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks, [~accountid:623c0f04562ab90069f8b137]", "created": "2015-08-28T07:56:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Hi [~accountid:623c0f04562ab90069f8b137], [~accountid:623c0bcca2f6400069eb77f4], [~accountid:623c0943866b810069e433c3] -\n\nI've been looking into this a little bit over the past day or so.  I don't have much to report at this point - perhaps the only thing of interest is that I've been able to start up Puppet Server on Scientific 6 with 32 JRubies, but I didn't have any manifests/modules on that machine, so that's a somewhat artificial test.\n\nIn catching up on the reading on this ticket and the e-mail thread, [~accountid:623a46a67910a200718ac239]'s comments on the e-mail thread have me wondering if this is simply a memory issue that is manifesting itself in weird and terrible ways.  In particular, I am wondering if there is actually an {{OutOfMemoryError}} being thrown that is just not ending up in the log - if this occurred in a static initializer, this could possibly result in the {{NoClassDefError}} in your initial log snippet.  To root this out - could one of you please have a look in {{/var/log/puppetserver/puppetserver-daemon.log}} and let me know if there is any mention of an {{OutOfMemoryError}} in there?\n\nI don't yet know what to make of the error in puppetserver8u25.log.  I'm not sure if it fits in with this theory.  I also can't explain why it was working reliably with 16 JRubies and a 16GB heap", "created": "2015-09-01T17:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] - good call", "created": "2015-09-02T02:06:00.000000"}, {"author": "623c0943866b810069e433c3", "body": "Hi!\n\nthere is no OutOfMemoryError in the log, and there is also no .hperf file in\n/var/log/puppetserver/\n :-/\n\nbest regards!\n\nSven", "created": "2015-09-02T02:50:00.000000"}, {"author": "623c0943866b810069e433c3", "body": "I want to stress some points which may be missing.\n\nWe have an virtual machine which nearly identical OS installation which doesn't show any problems\nwe could start 16 instances with 6GB of ram.\n\nThe amount of RAM for heap in our test of the production machines seems not to influence\nthe problem. AND what was really scary is that the number of instances was more or less stable\nBUT but sometimes we could start more instances (never 64).\n\nThe difference between the production machine and the test VM are the number of cores, the amount\nof RAM and that the production machine was migrated from puppetmaster to puppetserver.\n\nregards!\n\nSVen", "created": "2015-09-02T03:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for the additional info.  I presume that the version of the JVM running on the VM is the same as one of the ones that you've seen cause the error on the bare metal?", "created": "2015-09-02T05:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] if you've tested on bare metal on our side and can't repro, I think maybe a next step would be to see if we can build a one-off JAR file that just starts up the JRubies in a loop w/o the rest of the server, and see if that repros for [~accountid:623c0943866b810069e433c3].  If it does then maybe we can whittle it down a bit from there and open an issue against the JRuby project to see if they have any input.", "created": "2015-09-02T05:14:00.000000"}, {"author": "623c0943866b810069e433c3", "body": "Yes we ran the same JVM on test VM and on bare metal. All versions worked on the test machine\n(oracle, openjdk, ver7 and 8)\n", "created": "2015-09-02T05:23:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. Kevin Corcoran what kind of hardware did you run your 32 JRuby SLES setup on?\n\nIt was a VM from the vmpooler.", "created": "2015-09-02T15:59:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c0943866b810069e433c3] - Thanks for your comments.  It seems clear that this problem is not caused by Puppet Server exhausting the JVM's heap.  I'm not too surprised to hear that based, on the second log snippet and some of the other data.\n\nI'm going to continue working on this when I get back from vacation next week, starting by attempting to reproduce the error on one of the more powerful servers we have around the office.", "created": "2015-09-02T17:56:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I got my hands on the most powerful machine I could find laying around the office - a 32-core, 128GB machine.  I was able to start Puppet Server with 32 JRubies and couldn't reproduce this error.  This testing was done on CentOS 6.5.  I'd like to follow-up and get Scientific 6 on to this machine, but that's not something I can easily do at the moment.\n\nIn the interest of trying to track this down, I've come up with a way that we can drastically limit the amount of code exercised during Puppet Server startup.  Edit {{/etc/puppetserver/bootstrap.cfg}} and remove everything *except* the following two lines:\n{code}\npuppetlabs.services.jruby.jruby-puppet-service/jruby-puppet-pooled-service\npuppetlabs.services.puppet-profiler.puppet-profiler-service/puppet-profiler-service\n{code}\nThis'll result in the JRubies still being created during startup, but that's about it.  It'll cause a big chunk of code to completely ignored - namely, all of the Jetty/web stuff - so, the process won't be able to *do* anything after it starts up, but it'll be a useful data point to see if this problem can be reproduced in a simpler scenario like this.\n\nIf one of you would be willing to try that out and report back, we can go from there.", "created": "2015-09-10T17:16:00.000000"}, {"author": "623c0943866b810069e433c3", "body": "I commented out in /etc/puppetserver/bootstrap.cfg all lines except:\n\npuppetlabs.services.jruby.jruby-puppet-service/jruby-puppet-pooled-service\npuppetlabs.services.puppet-profiler.puppet-profiler-service/puppet-profiler-service\n\nBut no change see attached log ", "created": "2015-09-11T02:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0943866b810069e433c3] thanks for trying that out.  Since we haven't been able to reproduce this locally yet, we're just brainstorming ideas on how to reduce the number of variables in the equation.  We're still working on seeing if we can get Scientific installed on our hardware but it will probably take some time for us to achieve that, due to resource contention for the hardware.\n\nHere are some suggestions of things that might be worth trying on your end:\n\n# Based on [this JRuby issue|https://github.com/jruby/jruby/issues/2708] linked above, it seems like the JRuby devs suspected a bug in the JVM garbage collector.  In the case described in their ticket, it seemed like the issue went away with other versions of the JDK, and that hasn't worked for you, so I'm not entirely confident about the diagnosis from that ticket... but, it is probably worth just trying a different garbage collector to see if that helps.  You can do that by modifying the JVM command line args in the /etc/sysconfig/puppetserver file", "created": "2015-09-11T12:42:00.000000"}, {"author": "623c0943866b810069e433c3", "body": "Hello!\n\ntoday I had not much time to look into it. But I tried Point Number 1 and indeed it looks much better.\nMy test were 32 instances and they startet quickly without any warnings (I tried it two times)\nI send you the gc log.\n\nWhat is strange is that the init scripts gives me an \"ok\" but don't return to the shell. Is this due\nto the debug option in the JAVA_ARGS???\n\nregards!", "created": "2015-09-14T07:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0943866b810069e433c3] that sounds very promising, thanks for trying it out!\n\nAs to why it might cause the init scripts to hang -- no idea.  That's not something I'd expect.\n\nSometimes the init scripts will print OK and then still do some more work for a while before returning, but it sounds like you waited for a while and they just never returned?\n\nMy best guess would be that maybe there some slight syntax error in the args?  Maybe a missing space or quote or something?  I'd suggest trying just the \"-XX:+UseG1GC\" arg without those other debugging args and see what happens, and then maybe try adding some of the others back in one at a time and see what happens?", "created": "2015-09-14T10:48:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c0943866b810069e433c3] - Wow, very interesting!  Thanks again for giving that a shot.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - What do you think about changing the {{JAVA_ARGS}} we ship with Puppet Server to use the G1?", "created": "2015-09-14T11:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] I sent out a mail with notes about my experimentation with G1 a while back.  I don't think we should do it by default yet.  Check out those notes if you want more info.", "created": "2015-09-14T11:13:00.000000"}, {"author": "623c0943866b810069e433c3", "body": "Hello!\n\nI found the problem with the init script. It was my fault, I didn't reset the bootstrap.cfg from further\nexperiments and so jetty wasn't started and wait_for_app looped until timeout. Now\neverythings looks fine. We will wait until Stefan Dietrich  is back from vacation and than we will\ngive puppetserver the next try.\n\nbest regards and many thanks for your great support.\n", "created": "2015-09-15T02:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0943866b810069e433c3], ah, that makes sense.  Glad to hear you got it working!\n\nIf that gets you unstuck for now, we'll probably move this ticket off of the top of our priority list because we've got a lot of other things going on to try to get us ready for an upcoming release.  However, we would be very interested in trying to narrow this down further so that we could submit a simpler reproduction case to the JRuby and/or OpenJDK teams to try to get the \"real\" problem resolved.  If we're able to find some time to work on narrowing down the reproduction case in the future, would you potentially still be able to help us test the builds?  This would probably be a month or two down the road from now, depending on how things go.", "created": "2015-09-15T07:42:00.000000"}, {"author": "623c0943866b810069e433c3", "body": "I think that we have a good solution for now. And of course we'd like to help to find the source of\nthe problem.", "created": "2015-09-15T11:44:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Great.  Thanks again, will ping you all when we have time to dig back into this.", "created": "2015-09-15T11:59:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Just a brief update, we tried to migrate to Puppetserver once again with the G1 GC workaround in place.\nWith the G1 GC in place, starting Puppetserver was no longer an issue, however the compile times were abnormal slow and with varying speeds.\nThe compile time ranged from ~10s to ~300s on a single node, even after waiting ~2h to let the nodes settle up.\n\nThis seemed to be especially bad on the biggest machine with 64 JRubies/96GB heap, the 2 masters with the 32 JRubies/48GB heap seemed to work better.\nWe have not yet found the root cause for this behaviour, this needs still some investigation/testing on our side :(\n\nIf possible, could you share some details about the G1 GC experiments and why this is not yet the default?", "created": "2015-09-28T08:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The tl", "created": "2015-09-28T10:13:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Thanks for the info about the G1 experiments!\n\nWe used {{environment_timeout=unlimited}}, a git hook would invalidate the cache via the Puppetserver REST API on a per environment basis.\n\nAverage (!) compile times:\nApache/Passenger: ~35s\nPuppetserver: ~130s\n\nThe average values are of course hiding the varying speeds of Puppetserver and even some slow peaks of our Apache/Passenger setup.", "created": "2015-09-29T01:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yikes, those numbers are not good, and I haven't heard anything like that before.  :(\n\nWe'd be interested in digging into it further", "created": "2015-09-29T08:35:00.000000"}, {"author": "623c133ed32a94006a649947", "body": "Hello, \n\nI  \"think\", I got a similar issue, maybe more \"repeatable\" \n\nI am running Debian Wheezy (so java 7u79-2.5.6-1~deb7u1) and  I got a similar issue when starting Puppet Server 2.1.1 :\n\nException in thread \"main\" java.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6743$prime_pool_BANG___6744$fn__6748.invoke(jruby_puppet_agents.clj:60)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6743$prime_pool_BANG___6744.invoke(jruby_puppet_agents.clj:38)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6849$send_prime_pool_BANG___6850$fn__6851$fn__6853.invoke(jruby_puppet_agents.clj:133)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:254)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:238)\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5401$service_fnk__4090__auto___positional$reify__5406.shutdown_on_error(internal.clj:293)\n\tat puppetlabs.trapperkeeper.internal$eval5337$fn__5349$G__5323__5357.invoke(internal.clj:262)\n\tat puppetlabs.trapperkeeper.internal$eval5337$fn__5349$G__5322__5366.invoke(internal.clj:262)\n[...]\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) load error: jopenssl/load -- java.lang.NoClassDefFoundError: org/jruby/ext/openssl/x509store/X509Object\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:132)\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1341)\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1334)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\nMy box got 12 go of memory, my java Xms/Xmx are set up to \"6g\" and I have configured 4 Jruby instances.\nThere is no 'trafic' coming to the puppetserver (iptables -I INPUT -p tcp --dport 8140 -j DROP)\n\nIf I set my java memory to 4Go, this issues disappears.\n\nPutting 8go of java memory, raising permsize doesn't solve this issue either.\n\nKeeping only  in bootstrap.cfg the following didn't solve the issue.\n\npuppetlabs.services.jruby.jruby-puppet-service/jruby-puppet-pooled-service\npuppetlabs.services.puppet-profiler.puppet-profiler-service/puppet-profiler-service\n\nBut when setting 1 instance of Jruby, it works every times (4go , 6go , 8go of java xmx).\n\nUsing \"\"-XX:+UseG1GC\" also solves this issue.\n\nI can run some tests if you want.\n\nRegards\n\nOlivier\n\n", "created": "2015-09-29T09:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c133ed32a94006a649947] thanks for the info.  What does your machine look like?  Bare metal or VM?  What kind of hardware specs?", "created": "2015-09-29T09:27:00.000000"}, {"author": "623c133ed32a94006a649947", "body": "It is a VM (xen domU) hosting on a Xen server 4.1\n4 vcpus (I tried 8, with no effect)\n12 go of memory\nrunning a  \"clean\" debian wheezy.\n\nMy first tests were on a 2.6.32 kernel (squeeze kernel, xen dom0 default kernel)\nI tried to switch to a 3.2 kernel (wheezy kernel)\n\nand switching kernel seems to affect this issue .... I got no issues so far (10 restarts in a row without errors).\n\n[~accountid:623c0f04562ab90069f8b137] , Scientific Linux 6.6  is also running on a 2.6.32 kernel. Could you give a try with a 3.2 kernel or higher ?\n\n", "created": "2015-09-29T09:57:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "So, to answer the first questions:\n* As SL6 is a RHEL6 clone, we are using the system provided ruby: {{ruby 1.8.7 (2013-06-27 patchlevel 374)}}\n* Yes, we are running PuppetDB 2.3.7\n* I have attached a couple of CPU usage and load plots from the servers\n\nExplanation for the plots:\nWe started the migration around ~10:30 o'clock, at 14:00 o'clock puppetserver has been restarted on all masters and ~15:00 o'clock we reverted to Apache/Passenger.\nThe 2x 32 core machines look good, however the 64 core machine is wasting a lot of CPU time in system/kernel mode.\nThe average compile times with ~20s are also way better on the 32 core machines. However even there is big distribution of the compile times, ranging from ~10s to ~150s.\nBut not as bad as on the 64 core machine, where it ranged from ~10s to ~450s, checked the logs again for both values.\nThe high system cpu usage might be related to NUMA, as it is a 4way system.\n\nWe are preparing at the moment a testbed, so what we can move around puppet masters and let some agents hit those masters for debugging.\nThis allows easier debugging for us, but will take a couple of days to prepare everything.\nTesting on Puppetserver 2.1.1 is not an option, this would probably require some work on our F5 due to changed URLs.\nWe do not believe that this might be an CentOS vs Scientific issue, however CentOS 7 is on our testing list as well.", "created": "2015-10-01T04:28:00.000000"}, {"author": "623c133ed32a94006a649947", "body": "you can't try (quickly) a newer kernel ? It was day and night on my side,  it's worth a shot no ?", "created": "2015-10-01T07:48:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "[~accountid:623c133ed32a94006a649947] Not before we have the testbed up and running. In the current setup, changing from Apache/Passenger -> Puppetserver and vice-versa requires changes on our loadbalancer.", "created": "2015-10-01T08:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0f04562ab90069f8b137] so on the 32-core boxes your average compile time is a bit lower than on Apache/Passenger?\n\nWould it be possible to try configuring the 64-core box to use 32 JRubies, as you have the 32-core box configured?  That would help us understand whether the problem is something that occurs when the JRubies exceed a certain number, or something like that.\n\nThose CPU graphs are really interesting.  It might be helpful for us to get some log files to compare from both of the systems:\n\n* A sample of the GC logs from a time when the system CPU level is so high", "created": "2015-10-01T10:07:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Yes, the average compile time on the 32 core box with Puppetserver is lower than Apache/Passenger.\n\nWhen everything is prepared, we try to collect the requested logs :)", "created": "2015-10-01T13:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks!  No urgency on our end, I know you probably have plenty of other things to do :)  Just trying to cue up suggestions that might be helpful when they are possible to follow through on.", "created": "2015-10-01T13:22:00.000000"}, {"author": "623c0f04562ab90069f8b137", "body": "Just a brief update on this issue\n* Scientific Linux 6 has been excluded as the error source\n** Puppetserver 1.1.1 on CentOS 7 is dying as well on startup with the default GC\n** Using G1 GC as a workaround helps here as well\n* CentOS 7 uses kernel 3.10.x, this excludes the kernel version as an error source (as reported by [~accountid:623c133ed32a94006a649947]}\n* Puppetserver 2.1.1 on CentOS 7 shows the same issues ([^puppetserver_2.1.1.log])\n** Same error message with the default GC, G1 GC worked as a workaround\n** No performance tests have been done with 2.1.1, just starting the daemon has been tested\n\nThe performance tests and requested logs are now next on the list.", "created": "2015-10-15T13:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for the update.  We'll keep an eye on it.", "created": "2015-10-15T13:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I ran into this recently with our load test environment that we had been running for pre-2015.3.0 release.  The environment included 4 compile masters talking to a \"master of masters\" and a load balancer distributing agent requests among the 4 compile masters.  There were roughly 3000 agents involved in the simulation.  I reproduced the error on a couple of the compile masters only when setting the {{max-requests-per-instance}} down to a really low value - {{2}}. With it set to a much larger value - I tried {{1000}} and {{10000}} - I wasn't able to reproduce it.  It appeared that in both instances in which the problem occurred, a JRuby pool instance was being flushed / replaced.\n\nBeyond this maybe just being a bug in certain versions of the JDK - or certain GCs in the JDK - I'm wondering if concurrent / overlapping reinitialization of ScriptingContainers might be contributing to this somehow.\n\nFor example, see https://github.com/jruby/jruby/issues/2561 and the backing article that it links to - http://ruby.11.x6.nabble.com/JRuby-complete-multi-threading-and-java-lang-NoClassDefFoundError-td5004808.html. This issue references problems where concurrent {{require openssl}} calls made from different threads for different containers could result in a {{LoadError}} which looks similar to the one that we've been seeing.  This jruby github issue references ScriptingContainers created with {{LocalContextScope.THREADSAFE}}, whereas we use {{LocalContextScope.SINGLETHREAD}} in Puppet Server. So maybe the behavior of one JRubyClassLoader being shared for the loading of some jar files and resulting in conflicts like these is irrelevant.  It would be good for us to take a look a deeper look at the implementation of {{LocalContextScope}} and ScriptingContainers to see if there is a relationship.\n\nI still wish at some point that we could somehow get rid of the need to have any of the {{jopenssl}} classes loaded within a JRuby runtime under Puppet Server. Where we use Java / BouncyCastle for all of our HTTP over SSL in JRuby under Puppet Server and at one point had reworked various spots in current Puppet code to avoid having {{jopenssl}} even be loaded, I'm not sure it would be too much more work at this point to eliminate the dependency entirely. The root loading problem may end up not being specific to {{jopenssl}} but it does seem suspicious that all of the flavors of this error we've seen so far - to my knowledge anyway - seem to have been related to loading {{jopenssl}}.", "created": "2015-12-01T15:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] let's figure out how to slot this in to our roadmap somewhere and dedicate some time to it.  Probably has to be after the class refresh stuff, but maybe immediately after.", "created": "2015-12-14T12:09:00.000000"}, {"author": "623a4d9ca2f6400069eaab82", "body": "Hi,\n\nWe're in the process of migrating to puppetserver as well and run into the same issue as described here.\nOur setup runs on RHEL7.2, 32 core machine with 128GB of memory. Tried OpenJDK 7 version 101 and OpenJDK 8 version 91 (both from rhel repos). We use puppetserver 1.1.3.\nI try to start 32 instances on a JVM with 32GB of heap. Most of the times it fails at around 17-20 instances. If I set it to 16, it works.\n\nAfter configuring the G1 collector as described here, it seems stable but I need to do some more testing to make sure.\n\nIs there any progress on a root cause and a proper fix (don't mind using G1 but it seems tricky that this 'fixes' it without knowing why)\n", "created": "2016-07-13T01:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] the last comments you made here about concurrency made some sense to me, but I'm not entirely sure how they'd explain a failure during startup.  Any thoughts?\n\n[~accountid:623a4d9ca2f6400069eaab82] was  your server under any load when you hit this?  Or were you just testing startup?\n\nInternally, our support team seems to be recommending G1 more regularly these days anyway, so we have a lot of customers using it successfully.  One of its primary design goals is to work with applications that have very large (> 6GB) heap sizes, so I don't think it's a bad thing to go ahead and switch to it permanently.  We may even make it the default at some point.  \n\nThat said, we would definitely still like to get to the bottom of this.", "created": "2016-07-13T06:43:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "We continue to have this problem, and we ended up having to remove puppet-server from any environments that had high number of cpus.  The chance of it dying on startup seems to be directly proportional to the number of workers we configure.  This occurs for us with no load at all (we've disabled all the puppet agents).  We also tried the G1 GC and that made no significant difference in how often it occurred.  Unfortunately we're back to running puppet-master under passenger in most of our environments and this is blocking our upgrade to puppet 4.x.\n\nOS: Ubuntu 14.04.04\nJVM: OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.14.04.1)\nPuppet Server: 1.1.3-1puppetlabs1", "created": "2016-07-13T08:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Jeremy Barlow the last comments you made here about concurrency made some sense to me, but I'm not entirely sure how they'd explain a failure during startup. Any thoughts?{quote}\n\nYeah, I haven't been able to rationalize exactly how/if the concurrency scenario which I mentioned in a prior comment matches up with the failure during startup described in this ticket.  They may ultimately be different issues, not sure.\n\nDuring Puppet Server startup - even with no load coming in from external sources - we can have some Ruby Puppet code being executed on a different thread (Clojure agent) from that which is handling the full JRubyPuppet pool initialization.  The master and CA services can request setting values from Ruby Puppet while additional containers are still in the process of initializing.  I think -- can't remember for sure offhand -- that the first {{require 'openssl'}} which occurs in any specific container will happen during JRubyPuppet initialization on the Clojure agent - before any different thread (i.e., one handling an incoming webserver request) might have a chance to source code that does its own {{require 'openssl'}}.\n\nFor the concurrency issue that the JRuby community had been discussing, https://github.com/jruby/jruby/issues/2561, it wasn't clear to me if any code that sourced {{require 'openssl'}} from different containers on different threads around the same time was enough to trigger the issue - even if the initial {{require 'openssl'}} call that was done for each of the containers occurred on the same thread (i.e, our Clojure agent's thread).\n\nFWIW, if the startup issue described here ultimately is related to the concurrency issue, it sounds from the linked JRuby ticket like this problem may have been fixed in JRuby 9000, for whenever we might be able to move Puppet Server up to use it.", "created": "2016-07-13T09:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - not sure if we ever were able to reproduce this issue at startup with a large number of JRuby instances being configured.  If not, maybe one thing we could try is to configure a bunch of JRuby instances at startup and, during the process of initialization, try to force GC to occur.  With all of the usage of finalizers, weak references, etc. in JRuby, I wonder if some of the logic run during cleanup around the same time other initializations are going on makes it more likely to reproduce this issue.", "created": "2016-07-13T09:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5e98f00263acd40c3fa08559] wow, thanks for the info.  We weren't aware of situations where this issue was that pervasive and not able to be resolved by switching to the G1 GC.  Can you confirm that in your environments, the error you are getting is the same?  i.e., {{Caused by: org.jruby.embed.EvalFailedException: (LoadError) load error: jopenssl/load \u2013 java.lang.NoClassDefFoundError: org/jruby/ext/openssl/x509store/X509Object}}?  Also, can you provide any info on what values you were using for {{max-active-instances}} and {{-Xmx}}, and how many cores you have in the machines where this problem is occurring?\n\nI'll see if we can up the priority of this bug and pick back up on our attempts to reproduce in-house.  Assuming we are able to find a fix, we can definitely do another 1.x release with the fix to try to make it easier for people to upgrade.", "created": "2016-07-13T09:48:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:5e98f00263acd40c3fa08559] As far as I can tell the previous mentions of resolving the issue by switching to GC1 GC are with users on Java 8.  I think there are reasonably significant differences with GC1 on java 7 vs java 8 based on my own anecdotal evidence.  \n\nIf you have the ability to try out GC1 on java 8 and see if that changes your outcome I think that would be very interesting.  ", "created": "2016-07-13T09:54:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "Error from the logs when we tried this a few weeks ago in production:\n\n\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) load error: jopenssl/load -- java.lang.NoClassDefFoundError: org/jruby/ext/openssl/X509CRL\n        at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:132) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1341) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1334) ~[puppet-server-release.jar:na]\n        at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source) ~[na:na]\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_95]\n        at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_95]\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) ~[puppet-server-release.jar:na]\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) ~[puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_internal$create_scripting_container.invoke(jruby_puppet_internal.clj:136) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_internal$eval6490$create_pool_instance_BANG___6491$fn__6492.invoke(jruby_puppet_internal.clj:176) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_internal$eval6490$create_pool_instance_BANG___6491.invoke(jruby_puppet_internal.clj:161) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval6731$prime_pool_BANG___6732$fn__6736.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        ... 24 common frames omitted", "created": "2016-07-13T10:05:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "The max-active-instances setting is set to 1/2 of the cpu cores, these boxes where we had the issue had 40 cores, so we had max-active-instances set to 20.  \n\nJAVA_ARGS in /etc/default/puppetserver is set to \"-Xms40960M -Xmx40960M -XX:MaxPermSize=256m -XX:+UseG1GC\".  These servers have 256GB of memory.", "created": "2016-07-13T10:08:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "Unfortunately, it appears that there is still no OpenJDK 8 available for Trusty.\n\nhttp://askubuntu.com/questions/464755/how-to-install-openjdk-8-on-14-04-lts and https://bugs.launchpad.net/trusty-backports/+bug/1368094", "created": "2016-07-13T10:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5e98f00263acd40c3fa08559] thanks much for the additional info.\n\nDepending on the security policy in your environment, you could install OpenJDK8 from this PPA:\nhttps://launchpad.net/~openjdk-r/+archive/ubuntu/ppa\n\nIf that's possible, we'd definitely be interested in hearing the results, but I recognize that it may not be possible.\n", "created": "2016-07-13T11:09:00.000000"}, {"author": "623a4d9ca2f6400069eaab82", "body": "Today we did some more testing.\nOur setup is also not used by any clients, so no risk of clients influencing the startup process.\n\nHere are some results of our tests:\n- Best results are with Java 8\n- But not all the time, it seems with 32 clients, there is a 33% percent chance it fails\n- On java 7, it fails more often\n- If it fails, it fails when trying to add the 25th - 30th instance\n\nThis is a complete list of all the NoClassDef errors:\norg/jruby/ext/openssl/ASN1$ASN1Data\norg/jruby/ext/openssl/Cipher$NamedCipherAllocator\norg/jruby/ext/openssl/Digest$1\norg/jruby/ext/openssl/PKCS5\norg/jruby/ext/openssl/PKCS7\norg/jruby/ext/openssl/PKCS7$SignerInfo\norg/jruby/ext/openssl/PKeyDH\norg/jruby/ext/openssl/PKeyDH$1\norg/jruby/ext/openssl/PKeyDSA\norg/jruby/ext/openssl/SSL\norg/jruby/ext/openssl/X509CRL\norg/jruby/ext/openssl/X509CRL$1\norg/jruby/ext/openssl/X509Extension$1\norg/jruby/ext/openssl/X509ExtensionFactory\norg/jruby/ext/openssl/X509Name$1\norg/jruby/ext/openssl/X509Request\norg/jruby/ext/openssl/X509Revoked\norg/jruby/ext/openssl/X509Revoked$1\norg/jruby/ext/openssl/X509StoreContext\norg/jruby/ext/openssl/x509store/Store$CheckRevocationFunction$1\norg/jruby/ext/openssl/x509store/Store$CleanupFunction\norg/jruby/ext/openssl/x509store/Store$VerifyCallbackFunction\norg/jruby/ext/openssl/x509store/X509Object\norg/jruby/ext/openssl/x509store/X509Utils", "created": "2016-07-14T07:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4d9ca2f6400069eaab82] is that 33% failure rate on Java 8 with G1 GC?", "created": "2016-07-14T07:09:00.000000"}, {"author": "623a4d9ca2f6400069eaab82", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] yes.\nFollowing JVM settings:\n-Xms32g -Xmx32g -XX:+UseG1GC -verbose:gc -Xloggc:/var/log/puppetserver/gc.log -XX:+PrintTenuringDistribution -XX:+PrintGCDateStamps -XX:ParallelGCThreads=4 -XX:+DisableExplicitGC -XX:+PrintGCDetails", "created": "2016-07-14T07:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I was able to reproduce this error with the following configuration:\n\n- CentOS 6.5 host\n- 128 GB RAM\n- {{max-active-instances}} in the {{puppetserver.conf}} set to \"32\"\n- {{JAVA_ARGS}} configured to set both -Xms and -Xms to \"40g\"\n- OpenJDK version: 1.7.0_65\n\nNote that I was unable to reproduce the error by resetting the -Xms/-Xmx settings to \"24g\".\n\nIn my case, the error fairly reliably occurred, with the 40 GiB heap, as the 7th of the 32 configured JRuby instances was being created.  The top of the call stack in the nested exception cause looked like this:\n\n{noformat}\nCaused by: org.jruby.exceptions.RaiseException: (LoadError) load error: jopenssl/load -- java.lang.NoClassDefFoundError: org/jruby/ext/openssl/x509store/Store$CheckIssuedFunction\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072)\n{noformat}\n\nUnfortunately, this error is thrown from a level in the JRuby code which masks its actual source.  The original exception is triggered from this line in the JRuby source: https://github.com/jruby/jruby/blob/1.7.20.1/core/src/main/java/org/jruby/util/JRubyClassLoader.java#L203.  With a custom build of JRuby which logs the exception thrown from this line, I saw:\n\n{noformat}\njava.io.FileNotFoundException: /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar (Too many open files)\n        at java.io.FileInputStream.open(Native Method)\n        at java.io.FileInputStream.<init>(FileInputStream.java:146)\n        at java.io.FileInputStream.<init>(FileInputStream.java:101)\n        at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)\n        at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)\n        at java.net.URL.openStream(URL.java:1037)\n        at org.jruby.util.CompoundJarURLStreamHandler$CompoundJarURLConnection.getInputStream(CompoundJarURLStreamHandler.java:152)\n        at java.net.URL.openStream(URL.java:1037)\n        at org.jruby.util.JRubyClassLoader.findClass(JRubyClassLoader.java:204)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)\n        at org.jruby.ext.openssl.x509store.Store.<init>(Store.java:126)\n        at org.jruby.ext.openssl.X509Store.<init>(X509Store.java:96)\n        at org.jruby.ext.openssl.X509Store.newStore(X509Store.java:91)\n        at org.jruby.ext.openssl.SSLContext.createSSLContext(SSLContext.java:201)\n        at org.jruby.ext.openssl.SSL.createSSL(SSL.java:99)\n        at org.jruby.ext.openssl.OpenSSL.createOpenSSL(OpenSSL.java:83)\n        at org.jruby.ext.openssl.OpenSSL.load(OpenSSL.java:51)\n        ...\n{noformat}\n\nI added a sleep into the Puppet Server code to keep the process alive for long enough to be able to run the following:\n\n{code}\n# lsof -p `pgrep -fo puppet-server-release` | wc -l\n4096\n{code}\n\nI ran the following command to determine what limits the OS was placing on open files for the process:\n\n{code}\ncat /proc/`pgrep -fo puppet-server-release`/limits | grep \"Max open files\"\nMax open files            4096                 4096                 files\n{code}\n\nThis confirmed that the process had indeed hit the OS configured limit for open files.\n\nLooking into this further, I saw that all but about 50 of the open descriptors were handles back to the jar itself, /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar.\n\nI then bumped the open file maximum up to 6144 by adding the following lines to the end of the {{/etc/security/limits.conf}} file:\n\n{noformat}\n*         hard    nofile      6144\n*         soft    nofile      6144\nroot      hard    nofile      6144\nroot      soft    nofile      6144\n{noformat}\n\nWith these new limits in place, after restarting the system and puppetserver service in order to confirm that they had taken effect, I was unable to reproduce the error.  Puppet Server booted to ready every time - with the pool of JRuby instances fully initialized.  While pool initialization was running, I observed - via periodic runs of the {{lsof}} command -- that the number of open descriptors peaked out around 4900 open descriptors before falling back down to a much lower number, less than 100.\n\nMy guess - unconfirmed - is that these jar file handles might be held via {{WeakReference}} or {{SoftReference}} objects and that a Garbage Collection cycle cleans up the handles.  I noticed after one pool initialization had finished that about 1000 file descriptors were still open.  With the following command, I requested that Garbage Collection be triggered on the running process:\n\n{noformat}\n<JAVA_BIN>/jcmd `pgrep -f0 puppet-server-release` GC.run\n{noformat}\n\nAfter running that command, I found that the number of open descriptors had dropped to around 50.\n\nI can't say that 4900 is a reliable upper bound to expect for file descriptor usage.  It may be larger the heap size that is configured for the Java process, the longer the initial GC cycle can be deferred.  When combined with a higher number of JRuby instances being configured - and the resulting jar file handles that are temporarily opened along with each instance - the peak number of open files could grow considerably, making it more likely that the upper bound for open files is reached and the process dies.\n\nI'm going to continue to look into the JRuby source code to figure out exactly how the jar file handles are being managed - in hopes that we could get a fix implemented upstream to limit the amount that these can be outstanding at a given time.  I'm also going to look into seeing if we can get an error message logged by JRuby around the source of this issue to help with better identifying this in the future.\n\nIn the meantime, though, I would be interested in seeing if one or more of the submitters here could try bumping up the open file limit considerably on the nodes where they have seen this problem - like maybe to 6144 or so like I did - and see what affect it has on the ability to reproduce the problem.  [~accountid:623a4d9ca2f6400069eaab82], [~accountid:5e98f00263acd40c3fa08559], [~accountid:623c0f04562ab90069f8b137], [~accountid:623c0bcca2f6400069eb77f4], [~accountid:623c0943866b810069e433c3], and/or [~accountid:623c133ed32a94006a649947], would you be willing/able to try this out?", "created": "2016-07-27T14:15:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "I did some quick testing here with lsof against a puppet server running in a relatively small VM, but with max-active-instances set fairly high.  In that situation I see the same sort of thing you report above, where memory pressure is forcing GC to clean up the file descriptors.  I'll do some testing with a 64GB VM and report back.", "created": "2016-07-27T14:32:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "I set the JVM memory limits to 40G and the number of interpreters to 32 and was able to reproduce the problem.  I added \"ulimit -n 100000\" to the bottom of /etc/default/puppet and that appears to work around the issue.  In that situation, I've seen the number of FDs get as high as 7500, whereas the default limit was 4k.", "created": "2016-07-27T15:50:00.000000"}, {"author": "623a4d9ca2f6400069eaab82", "body": "Be careful when setting JVM heapsize to something larger than 32GB.\nFound this article: https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html#compressed_oops\n\nWe reduced our heap size to 31GB (from 32GB) as we were GC issues. If this fixes the startup issues is hard to tell, haven't done any tests.", "created": "2016-07-28T07:31:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "Early next week we'll deploy this work around to one of our staging environments that previously had the issue and I'll report back.", "created": "2016-07-28T09:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5e98f00263acd40c3fa08559] thanks!  Very eager to hear your results.\n\n[~accountid:623a4d9ca2f6400069eaab82] thanks for the link.  I read that article that you linked and did a bit more poking around.  I found (among other things) this: http://stackoverflow.com/questions/35411754/java8-xxusecompressedoops-xxobjectalignmentinbytes-16\n It looks like on JDK8 if you set -XX:ObjectAlignmentInBytes=16 then you may be able to go up to 64GB while still taking advantage of compressed oops.  I also suspect that with heap sizes this large it would be wise to try the G1 garbage collector and see how it compares.", "created": "2016-07-28T09:57:00.000000"}, {"author": "623a4d9ca2f6400069eaab82", "body": "I had seen that article as well, but figured that 31GB should be enough with 32 threads if you assume 512MB per JRuby thread.\nWe seem to be experiencing a memory leak of some sort though, will probably raise a new ticket for that or are there known (open) tickets for that already?", "created": "2016-07-28T13:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We don't have any known memory leaks in the core product, but it's possible for modules to introduce memory leaks.  If it's a leak in a module you might be able to set {{max-requests-per-instance}} to alleviate it (though perhaps with a performance penalty).  If you're able to repro the leak / OOM on a server with a smaller heap size (6GB or less, ideally), we'd be happy to take a look at the .hprof file and see if we can help.  Probably best to open a separate ticket for that, though, as you suggested.", "created": "2016-07-28T13:23:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "The most common memory leak was caused by hiera-eyaml though and an older version of the iis module.  SERVER-1154", "created": "2016-07-28T13:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}We seem to be experiencing a memory leak of some sort though, will probably raise a new ticket for that or are there known (open) tickets for that already?{quote}\n\n[~accountid:623a4d9ca2f6400069eaab82], are you implying that the increasing number of open file descriptors during startup of the JRuby instances that we're observing here constitutes a memory leak?  Given that they are eventually cleaned up by Garbage Collection, I wouldn't classify this as a leak per-se.  However, I do still think that we should try to find a solution to this issue which doesn't involve bumping file descriptor counts up to an arbitrarily high amount.  I'm continuing to look into this in the JRuby source.  I'm okay with continuing this part of investigation in the context of this JIRA ticket.", "created": "2016-07-28T14:01:00.000000"}, {"author": "623a4d9ca2f6400069eaab82", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] I had found that ticket about the eyaml issue. We upgraded on two nodes but behaviour didn't change so could be a module indeed.\n\nWhat in a module could cause a memory leak so we can look for it?\n", "created": "2016-07-29T01:20:00.000000"}, {"author": "623a4d9ca2f6400069eaab82", "body": "As for the original issue, what I've observed is that when a machine is freshly rebooted, we had to try a few times to get the puppetserver started fully. This was with 32GB of memory (so with CompressedOops off, which means a lot less usable memory).\nOnce it started, we could restart it without issues.\n\nYesterday, two new nodes were added, this time with 31GB of heap (so more usable memory due to CompressedOops) and they started on first attempt, even with clients connecting to it during startup.\nMachines all have same specs.\n", "created": "2016-07-29T01:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4d9ca2f6400069eaab82] I worry that the comment thread on this ticket is twisty enough already without getting too deep into a memory leak discussion here, but if you don't mind opening a new ticket for that I'd be happy to share some ideas.", "created": "2016-07-29T09:54:00.000000"}, {"author": "5e98f00263acd40c3fa08559", "body": "We deployed this to one of our staging environments earlier this week and haven't had any problems with the fd limit set to 100k.  We plan to roll this out to one of our prod sites next week.", "created": "2016-08-04T10:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5e98f00263acd40c3fa08559] that's great news, thanks for the update.", "created": "2016-08-04T10:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The root cause for JRuby accruing all of the extra file descriptors was in some code that opens streams to the JRuby \"stdlib\" jar file but does not explicitly close those streams when the objects fall out of scope.  Garbage Collection does eventually close the file descriptors as it cleans up those streams later on, though, which is probably why we hadn't seen this problem except for in cases where a sufficiently large number of JRuby containers are being created - in conjunction with a sufficiently large Java heap size for the Puppet Server process.\n\nI filed a [PR|https://github.com/jruby/jruby/pull/4063] to the JRuby team which closes the file descriptors immediately as they are no longer needed.  With this code in place locally, my {{lsof}} loop for Puppet Server never showed over 100 file descriptors being allocated - even with 32 JRuby containers being created and a large Java heap.  This should make the need to increase the file descriptor limit in order to work around this problem unnecessary.  The PR has already been merged into the JRuby 1.7 branch and so this fix should be in the next JRuby 1.7 release, probably 1.7.26.  We don't currently know when the next JRuby release will occur so I'm going to move this issue into \"Blocked\" / \"Needs Information\" for now.\n\nI also tested this scenario with JRuby 9000, the latest branch of JRuby code - 9.1.2.0, specifically.  The problem with stream objects open to the \"stdlib\" jar is not present with the newer code, fortunately.  There is a separate issue with excessive jar-related file descriptors on JRuby 9000 for which we have already filed a [separate ticket|https://github.com/jruby/jruby/issues/3928] with the JRuby project.  We'll continue to track progress on that ticket even though that won't affect Puppet Server for now since it is not using drops from the JRuby 9000 branch yet.\n\n", "created": "2016-08-11T09:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We've incorporated the new JRuby release, 1.7.26, which has a fix for this issue into all of the Puppet Server branches. CI jobs are all still passing. This fix will be going into the Puppet Server 1.2.0 and 2.6.0 releases, which should drop very soon. Marking this issue resolved.", "created": "2016-09-07T14:07:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Accidentally set tickets in active sprint to closed. Moving back to resolved. ", "created": "2016-09-27T17:09:00.000000"}, {"author": "557058:362bc1c3-742f-4428-a556-fa2b03887e0f", "body": "Re-closing because I can't click on the right thing...", "created": "2017-02-23T10:58:00.000000"}], "components": ["Puppet Server"], "created": "2015-08-25T09:05:00.000000", "creator": "623c0f04562ab90069f8b137", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c1c1516"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Low probability because I don't know if a high number of jruby instances is a common use case or not."}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "No data loss, but the server falls over, which degrades or stops the service"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtsv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "For cases where a large JVM memory heap and large number of JRuby instances is being used with Puppet Server, a fix was implemented which should prevent Puppet Server from failing to startup properly with error messages like the following in the puppetserver.log file:\n\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) load error: jopenssl/load -- java.lang.NoClassDefFoundError: org/jruby/ext/openssl/NetscapeSPKI"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "high priority community ticket"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_3_*:*_96641818_*|*_3_*:*_3_*:*_13680639475_*|*_10009_*:*_1_*:*_701926011_*|*_5_*:*_2_*:*_210501291_*|*_6_*:*_3_*:*_14383336570_*|*_10011_*:*_1_*:*_9124_*|*_10004_*:*_2_*:*_1685681871_*|*_10006_*:*_3_*:*_16598853157"}], "description": "h1. The Problem\nwe tried to today to migrate our Puppet Masters from Apache/Passenger to Puppet Server 1.1.1.\nHowever, Puppet Server just dies with error messages as soon as we increase the number of JRuby instances to >24 and a JVM heapsize of > 16GB.\n\nDuring startup of Puppet Server, it starts to spawn the JRuby instances one after another and around ~8 instances an exception is logged:\n\n{noformat}\n2015-08-25 10:25:05,676 INFO  [puppet-server] Puppet Puppet settings initialized; run mode: master\n2015-08-25 10:25:06,254 INFO  [p.s.j.jruby-puppet-agents] Finished creating JRubyPuppet instance 7 of 32\n2015-08-25 10:25:08,567 ERROR [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) load error: jopenssl/load -- java.lang.NoClassDefFoundError: org/jruby/ext/openssl/NetscapeSPKI\n        at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:132) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1341) ~[puppet-server-release.jar:na]\n{noformat}\n\n\nI have attached the complete [^puppetserver.log] to this issue.\nThe log file is from the initial setup with max-active-instances set to 32 and a JVM heap size of 48gb.\nWe had a working setup with 16GB Heap and 16 instances. Sometimes 24 worked as well, but not always.\nWith 24 instances, we expected it to fail at 17 instances, but the error happened at instance 20.\nHowever, 16 instances will be too small to handle all the Puppet agents.\nIncreasing the timeout in /etc/sysconfig/puppetserver did not help either.\n\nWe use rather beefy HW for our 3x Puppet Masters (2x Dell R715, 1x R815), for Apache/Passenger this scaled nicely.\n\nThe OS on the Puppet Masters is Scientific Linux 6.6 (RHEL 6.6 clone) and OpenJDK 8 is used.\nWe tried the Oracle JRE as well, but this did not change anything.\nHTTPS is terminated at our F5 Loadbalancer, which forwards the traffic unencrypted to Puppet Server.\n\nFollow up from [this|https://groups.google.com/forum/?fromgroups#!topic/puppet-users/sUS2Mg0j0OQ] mailing list post.\n\nh1. A Workaround \n\nEnabling GC1 garbage collection on the puppetserver JVM seems to be a stable workaround to the issue.  \n\nThe argument is {{-XX:+UseG1GC}}\n\nhttp://www.oracle.com/technetwork/articles/java/vmoptions-jsp-140102.html\n\nhttps://puppet.atlassian.net/browse/SERVER-858?focusedCommentId=225898&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-225898", "environment": "Scientific Linux 6.6 x86_64 (RHEL 6.6 clone)\nOpenJDK 8\nPuppet 3.8.2", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16408", "fixedVersions": ["SERVER 1.2.0", "SERVER 2.6.0"], "id": "16408", "issueType": "Bug", "key": "SERVER-858", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0f04562ab90069f8b137", "resolution": "Fixed", "resolutionDate": "2017-02-23T10:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\tPuppet Server opens a large number of file descriptors during jruby startup, causing spurious \"NoClassDefFoundError\" crashes", "timeSpent": "PT0S", "updated": "2017-05-30T11:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:13909895-6fc9-487a-a07d-c6b1891fc66f], yes, it is true that Puppet Server 1.x (as well as the latest Puppet Server 2.x release, 2.1.1), does not provide a way to configure the \"certificate_status\" endpoint in the way you described.  Basically, the \"certificate_status\" endpoint can only be opened up to the specific nodes listed on a {{client-whitelist}}, http://docs.puppetlabs.com/puppetserver/2.1/configuration.html#caconf, and any node in that list would have the ability to delete any other node's certificate.\n\nFor SERVER-111, we are currently investigating replacement for the core Ruby auth.conf functionality.  This replacement would unify auth.conf handling such that it could be applied to any HTTP endpoint that Puppet Server services - including those handled by the CA service.  With this replacement, it would be possible to create an authorization rule which would allow a client to delete its own certificate, just as you described.", "created": "2015-08-24T10:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did some functional validation of this use case against a recent internal build of puppetserver - 2.1.2.master.SNAPSHOT.2015.11.10T0136.\n\nHere's the sequence of steps I followed:\n\n1) Installed puppetserver.\n\n2) Used {{puppet cert generate}} to generate two certificates - tester-one and tester-two.\n\n3) Issued the following curl request:\n\n{noformat}\ncurl -v --header \"Content-Type: application/json\" -X DELETE \"https://jb-centos7.localdomain:8140/puppet-ca/v1/certificate_status/tester-one\" --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem --cert /etc/puppetlabs/puppet/ssl/certs/tester-one.pem --key /etc/puppetlabs/puppet/ssl/private_keys/tester-one.pem\n{noformat}\n\nReceived an HTTP 403 / Forbidden response and validated that the {{/etc/puppetlabs/puppet/ssl/ca/signed/tester-one.pem}} file was still present.\n\n4) Added the following rule to the {{/etc/puppetlabs/puppetserver/conf.d/auth.conf}} file:\n\n{noformat}\n{\n            # Allow nodes to retrieve their own catalog\n            match-request: {\n                path: \"^/puppet-ca/v1/certificate_status/([^/]+)$\"\n                type: regex\n            }\n            allow: \"$1\"\n            sort-order: 200\n            name: \"puppetlabs certificate status\"\n},\n{noformat}\n\n5) Restarted puppetserver.\n\n6) Issued the same curl request as above.\n\nThis time, received an HTTP 204 / No Content response.  Validated that the {{/etc/puppetlabs/puppet/ssl/ca/signed/tester-one.pem}} file was still present.\n\n7) Issued the following curl request:\n\n{noformat}\ncurl -v --header \"Content-Type: application/json\" -X DELETE \"https://jb-centos7.localdomain:8140/puppet-ca/v1/certificate_status/tester-two\" --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem --cert /etc/puppetlabs/puppet/ssl/certs/tester-one.pem --key /etc/puppetlabs/puppet/ssl/private_keys/tester-one.pem\n{noformat}\n\nReceived an HTTP 403 / Forbidden response and validated that the {{/etc/puppetlabs/puppet/ssl/ca/signed/tester-two.pem}} file was still present.", "created": "2015-11-10T12:02:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Resolving based on [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]'s functional review above.  Created SERVER-1003 to document that we need to make an automated test case some day.", "created": "2015-11-11T09:42:00.000000"}], "components": ["Certificate Authority"], "created": "2015-08-24T09:53:00.000000", "creator": "70121:13909895-6fc9-487a-a07d-c6b1891fc66f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d433da8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyobu7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Complete before release"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_179923332_*|*_3_*:*_1_*:*_1921769_*|*_5_*:*_1_*:*_732331267_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_77885558_*|*_10006_*:*_1_*:*_6568801641"}], "description": "I've noticed a loss of functionality when moving from a Puppet 3.x Master to Puppet Server 1.x. In auth.conf I used to be able to allow nodes to delete their own certificates like this:\n\n{code:java}\n#LB: allow hosts to delete their own certificates\npath ~ ^/certificate_status/([^/]+)$\nauth any\nallow $1\n{code}\n\nWithe CA functionality now configured with PuppetServer ca.conf it doesn't appear that I can do this any more. The way Puppet Server does CA API authentication might make this quite hard to do as well. Is this a reasonable feature for you to implement or should I try handle this by some other means?", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "16665", "fixedVersions": ["SERVER 2.2.0"], "id": "16665", "issueType": "New Feature", "key": "SERVER-857", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:13909895-6fc9-487a-a07d-c6b1891fc66f", "resolution": "Fixed", "resolutionDate": "2015-11-11T09:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "loss of functionality in CA API when moving from Puppet -> Puppet Server", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "From the perspective of work provided from engineering for this one, I think what we did for TK-280 largely covers this ticket.  There's some more general \"pre-docs\" work that will be covered in SERVER-812.  Closing this one in favor of that remaining work.", "created": "2015-09-30T14:59:00.000000"}], "components": [], "created": "2015-08-21T12:26:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@204ea6f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1n87:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_427404005_*|*_5_*:*_1_*:*_31346979767_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_3037856051"}], "description": "We've been having discussions in a number of the tickets under the SERVER-111 epic which entail changes to the current format of the rules / configuration that the trapperkeeper-authorization service will consume.  This is intended as a roll-up ticket to capture the result of all of those changes in documentation.  We'll need to consider the best strategy for doing this.\n\nWe could look to follow some precedent for Puppet Server.  trapperkeeper-authorization is intended to be consumable by other Clojure services besides Puppet Server, like the trapperkeeper-webservices-jetty9 service.  For tk-jetty9, we created docs in the tk-jetty9 repo which included the settings / format of the configuration file (e.g., https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/trapperkeeper-webserver-jetty9-1.1.1/doc/jetty-config.md) as well as several examples (e.g., https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/tree/trapperkeeper-webserver-jetty9-1.1.1/examples).  From Puppet Server, we also included some documentation about the webserver settings, https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.1.1/documentation/configuration.markdown#webserverconf, but the documentation at that layer was much lighter, pointing back to the canonical tk-jetty9 documentation for more details.\n\nThis approach may be hold for tk-authz as it applies to Puppet Server as well.  Would definitely like to get opinions from [~accountid:623c08e1562ab90069f8aed4] and [~accountid:557058:7edde36a-845c-4e08-9172-c7b2f0265ea1] on this.  This ticket may somewhat overlap with the activities in the pre-docs ticket, SERVER-812.  Depending upon what strategy we end up with here, we may want to break out tk-authz repo-specific work into a TK ticket vs. Puppet Server-specific work being tracked to this ticket.\n", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "16185", "fixedVersions": [], "id": "16185", "issueType": "Task", "key": "SERVER-856", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Duplicate", "resolutionDate": "2015-09-30T15:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document the canonical specification of the tk-authz config file format", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "My findings:\n* The {{puppet-gatling-jenkins}} plugin requires version 1.0.3 of the {{gatling}} jenkins plugin, which can be found at https://updates.jenkins-ci.org/download/plugins/gatling/\n* The [changelog|https://wiki.jenkins-ci.org/display/JENKINS/Gatling+Plugin#GatlingPlugin-Changelog] for the {{gatling}} plugin says that version 1.1.0 adds support for gatling 2.1 and 1.1.1 fix compatibility with Jenkins 1.597. \n* The {{puppet-gatling-jenkins}} definitely doesn't work with {{gatling}} plugin 1.1.1, as some java namespaces were changed I think.\n\nI didn't get as far as actually getting gatling reports to show up in jenkins, so I can't say if the newer versions of the {{gatling}} plugin are actually required. So the work might be a very simple, or very nebulous and involve changes to the {{puppet-gatling-jenkins}} plugin. \n\nThe main work of adding support for the {{puppet-gatling-jenkins}} to our gatling automation, assuming the plugin works, would be to create a script that copies a {{simulation_runner/results/}} dir from the gatling driver to the jenkins machine.", "created": "2015-08-20T11:52:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Maybe you could comment on how the {{puppet-gatling-jenkins}} plugin extends the {{gatling}} plugin, I'm confused about the difference, since it sounds like the {{gatling}} does what we want (historical data across builds)", "created": "2015-08-20T11:55:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. Maybe you could comment on how the puppet-gatling-jenkins plugin extends the gatling plugin, I'm confused about the difference, since it sounds like the gatling does what we want (historical data across builds)\n\n[~accountid:623c0b72bef8a60068c796ce] If I remember correctly, the primary thing that our extension does is change it to graph agent runs rather than HTTP requests.  Obviously, gatling has no idea that a set of requests comprise an agent run, so it just graphs the requests over time.  Our plugin instead aggregates the requests that make up an agent run, and graphs the aggregate value.\n\nThat way, we could graph 3.x agent runs alongside 4.x agent runs (i.e. same graph) and we can compare them.  If the graph was just HTTP requests, we wouldn't be able to compare the agent runs because we can't see them, and (for example) the trend of the {{catalog}} request wouldn't differentiate between 3.x requests and 4.x requests.\n\nMy hunch is that we'll need our plugin to work in order for us to view the results meaningfully.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] did I get that right?", "created": "2015-08-20T13:06:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. My hunch is that we'll need our plugin to work in order for us to view the results meaningfully.\n\nI take that back.  If we're not going to do multiple agents in the same run, then I think we could live with the HTTP requests graph since we would know that they're all from the same simulation.  We'd have to do the math ourselves if we wanted aggregate numbers, but in terms of technical necessity we might be able to use the standard plugin for the purposes of our one-off OPS job.", "created": "2015-08-20T13:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks, [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], I think you have it all pretty much right.  I think the \"normal\" gatling jenkins plugin could be a reasonable first step, and then we can advance from there to a custom plugin with more business logic later.", "created": "2015-08-24T13:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "For posterity: I've been playing around with the new Jenkins \"Pipeline\" jobs, and would greatly prefer to use those.  However, it seems that there are required modifications to many/most existing Jenkins plugins in order to make them compatible with the Pipeline jobs, so now I'm doing some exploration to try to determine how much work it will take to make the official Gatling plugin compatible with the Pipeline jobs.", "created": "2016-05-17T09:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This is basically blocked until https://github.com/puppetlabs/puppetlabs-modules/pull/5875 is merged, which apparently needs to be during a Jenkins maintenance window.", "created": "2016-06-06T17:05:00.000000"}], "components": [], "created": "2015-08-19T17:43:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23009aa3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn47r:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "blocks current tickets in gatling automation sprint"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_582383751_*|*_3_*:*_1_*:*_1749476558_*|*_5_*:*_1_*:*_7181186012_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_2558501170_*|*_10006_*:*_1_*:*_22894583530"}], "description": "Add the gatling-jenkins plugin so we can get some basic trend visualization.\n\n[~accountid:623c0b72bef8a60068c796ce] has already started working with this plugin.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16664", "fixedVersions": ["None"], "id": "16664", "issueType": "Task", "key": "SERVER-1002", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2016-07-06T07:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Add gatling-jenkins plugin for graphing", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Do you have any ideas which OPS environment(s) we'll want to capture agent runs for?", "created": "2015-08-17T18:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] I've actually been thinking that we might just play a catalog zero sim for this test.  I don't think we need to actually exercise any of the ops module code in order to reproduce the failure", "created": "2015-08-18T03:07:00.000000"}], "components": [], "created": "2015-08-17T18:53:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e5e5784"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1pf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_145422999_*|*_6_*:*_1_*:*_0"}], "description": "Once we have the OPS deployment recreated we need to do a Gatling recording of the agent(s) so we can start running the dedicated OPS JJB job (SERVER-854).\n\nConsidering that OPS has several different environments, we'll need to figure out which environment(s) we capture agent recordings for.\n\nOnce we have the Gatling simulation recorded, we'll need to create the corresponding JSON configuration files to define the scenario & nodes. We'll need to be able to specify the r10k control repo, so SERVER-852 will need to be done for this part.\n\n\n", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15618", "fixedVersions": ["None"], "id": "15618", "issueType": "Task", "key": "SERVER-855", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Fix", "resolutionDate": "2015-08-19T11:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Record OPS deployment", "timeSpent": "PT0S", "updated": "2016-10-14T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049]Please comment on current status. We're assuming you will create tickets for remaining work.", "created": "2016-02-10T14:13:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Follow-up work in SERVER-1145 SERVER-1144", "created": "2016-02-10T19:26:00.000000"}], "components": [], "created": "2015-08-17T18:48:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22a04880"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynpmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_145785709_*|*_3_*:*_1_*:*_2511967989_*|*_5_*:*_1_*:*_19855109995_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_12622170152"}], "description": "We need a static (i.e. hard-coded) JJB job for running the OPS deployment performance test.\n\nWe can write the JJB job, but we'll need to have the recorded OPS deployment in order for us to define the gatling-puppet-load-test scenario that the JJB job will reference.\n\nh5. Implementation\n\nThe JJB job will just call the {{install_foss}} or {{install_pe}} shell script directly with the necessary arguments to install the OPS deployment, and then call the {{run_sbt}} shell script with the necessary arguments to run the OPS scenario.\n\nWe might actually use the direct sbt support in JJB for the second half rather than having it through the shell wrapper we have.\n\nWe currently have an example JJB job here: https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/jenkins-jobs/run_gatling_scenario.yml ", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15336", "fixedVersions": ["None"], "id": "15336", "issueType": "Task", "key": "SERVER-854", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2016-02-10T14:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Create JJB job for running OPS deployment", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Progress on this front was made here: https://github.com/puppetlabs/gatling-puppet-load-test/pull/45\n\nh5. Implementation\n\nThe implementation ended up a bit more general than the Implementation section above.\n\nRather than templating the r10k.yaml file and injecting only the control repository URL from the scenario JSON config, we instead define the entire r10k.yaml file in the {{jenkins-integration/config/r10ks/}} directory as X.yaml and then reference X in the scenario JSON config like {{\"r10k\": \"X\"}}.\n\nThis is better because the contents of the r10k.yaml file are coupled in many ways to the control repository, so it's not enough to have a hard-coded r10k.yaml and inject only the control repo URL.  This is the same pattern we already have for hiera support.\n\nh5. TODO\n\nThe first pull request only runs {{r10k deploy}} on the control repository to create the directory environments, but that's not enough - we'll also need to somehow hook in any hiera data that may be in the control repository, and potentially the contents of the site.pp file.\n\nh5. Questions / Unknowns\n\nr10k will manage the entire environments/ directory, meaning it will remove environments that aren't branches in the control repo, as well as anything within a directory environment that isn't also in the branch of the control repo.\n\nThis conflicts with some of the other supported installation steps, such as the {{50_install_modules.rb}} which will create directory environments out of names found in the node JSON files and install modules within.\n\nThis isn't a breaking conflict, it just means if you're using r10k to configure the master, you can't really use any of the other methods of configuring the master (e.g. defining environments + modules in the node JSON config files).  Not sure if this is something we'll need to allow for in the future though.", "created": "2015-12-10T12:09:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Moving back to Ready for Engineering because it's not really Done.\n\nIf / when we need to support configuration via r10k we'll likely need to address the hiera and site.pp issues mentioned above.", "created": "2015-12-10T12:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Accidentally ended up duplicating this with SERVER-1450.", "created": "2016-08-04T16:16:00.000000"}], "components": [], "created": "2015-08-17T15:43:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d4fa09"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp6hb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_156894090_*|*_3_*:*_1_*:*_691981850_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_29652342032"}], "description": "Add support for configuring the master's environments via r10k (alongside the existing JSON-based configuration file approach).\n\nThe immediate use case for this functionality will be recreating the OPS deployment using their control repo: https://github.com/puppetlabs/puppetlabs-modules\n\nh5. Implementation\n\nWe probably want to add a new configuration parameter to the scenario JSON file that directs r10k. It _might_ just be a path to a git repo (at least on github, but maybe also local), so something like:\n{code:javascript}\n{\n  \"run_description\": \"...\",\n  \"hiera\": \"...\",\n  \"r10k\": \"https://github.com/puppetlabs/puppetlabs-modules.git\",\n  \"nodes\": [...]\n}\n{code}\n\nWe would then write a new Beaker script that:\n* Installs r10k on the master ({{gem install r10k}})\n* Creates the {{r10k.yaml}} configuration file\n** Define {{:sources:}} as the git repo from scenario JSON config\n* Runs r10k to create the environments + modules ({{r10k deploy ...}})\n\nh5. Questions / Unknowns\n\nHiera - we'll need to create the appropriate hiera configurations to support the environments/modules that r10k creates.\n\n* Does r10k do anything with Hiera, or will we have to write this?\n* If we have to write this, we should be able to re-use the existing hiera support pretty easily\n** See: https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/beaker/install/shared/70_install_hiera.rb", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17628", "fixedVersions": ["None"], "id": "17628", "issueType": "Task", "key": "SERVER-852", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Duplicate", "resolutionDate": "2016-08-04T16:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Add r10k support", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-08-14T14:51:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b0ceb40"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "TK-288"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp6hr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_418711588_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_78045123970"}], "description": "With respect to the management of the rules for Clojure's replacement for core Puppet's auth.conf, we've been discussing the conundrum that we have where users will need to add/modify their own authorization rules which may conflict with the ones that Puppet Server / PE needs to lay down by default, further compounded by how changes are managed through a software upgrade.\n\nOne approach which we've discussed is the possibility of having Puppet packaging lay down the \"default\" rules under the {{/opt/...}} directory whereas users could create their rule definitions under the {{/etc/...}} directory.  Puppet Server could only honor the settings in {{/etc/...}} if those exist, otherwise defaulting to honoring the settings under {{/opt/...}}.  With this approach, Puppet packaging could assume that it \"owns\" and, therefore, can completely replace the content under {{/opt/...}} during an upgrade without adversely affecting user changes.  Likewise, any user changes under {{/etc/...}} would be preserved across an upgrade.\n\nThis same approach is being discussed as part of TK-215.  Ultimately, it may be best, if we decide to do this, with making this an integral part of the Trapperkeeper framework - allowing for the possibility of reuse across all Trapperkeeper applications.  If we end up doing that, this ticket may be a no-op.  This ticket, for now, mostly exists just for visibility around the issue as it affects tk-auth integration into Puppet Server and to capture any non-general TK discussion that may be relevant.\n", "epicLinkSummary": "trapperkeeper-auth improvements", "estimate": "PT0S", "externalId": "17627", "fixedVersions": [], "id": "17627", "issueType": "Task", "key": "SERVER-851", "labels": [], "originalEstimate": "PT0S", "parent": "10365", "parentSummary": "trapperkeeper-auth improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-02-07T17:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "/opt unless /etc configuration for tk-auth's auth.conf and Puppet Server", "timeSpent": "PT0S", "updated": "2018-02-07T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Comment from [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] in design doc, pasting here for posterity:\n\n{quote}\nI talked with Reid Vandewiele about our thinking on the Puppet module with a rule type/provider. He suggested that we not designate a \"name\" field as the \"namevar\" but instead create a composite \"namevar\" based on other elements in the rule that could go toward establishing uniqueness - e.g., path + sort-order? I think his primary concern is to help prevent users from accidentally creating rules that hide other rules without realizing it, e.g., you probably wanted to just add on to the allow/deny for your \"certificate_status\" rule instead of creating another one at a lower priority which never ends up getting read and you can't figure out why (or just don't realize that it's being used). I'm thinking it may be better to do uniqueness composite checks in the service initialization rather than trying to force it via the \"namevar\" of the Puppet resource, if we want to do those at all. I tend to think that the \"namevar\" values would be better to have as a fixed resource throughout the life of the rule - therefore, not having any potentially volatile fields like sort_order in it - and that a friendlier handle than a path regex is what the user would want to be coding to in their Puppet manifests\n{quote}\n\nFWIW I agree with the last couple of sentences here. But though composite namevars are largely hidden from the user (they are 'composed' by the type out of the constituent parameters, and only show up in reports and run output, i.e. users never have to explicitly write them out or know about them) I tend to shy away from them because Puppet's handling of them internally is complicated and unless/until there's a specific need (i.e. the Package type which frequently has the same package name installed by two providers) I would not want to require their use in this module's implementation.", "created": "2015-08-21T12:03:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Ping [~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49] because you're mentioned above.", "created": "2015-08-21T12:04:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "The consideration that drove the conversation to namevars is internal determinism of a built catalog.\n\nIf it's possible to write two resources A and B which both specify the same path C and the same sort order, there is no determinism with regards to the functional outcome. The way tk-auth rules work one of the rules will override the other functionally. Puppet will consider the configuration to be correct both when A is listed first and is therefore in force or B is listed first and is therefore in force.\n\nThis is certainly not a novel problem. Firewall, specifically, suffers from the same non-determinism today.\n\nThe purpose of a namevar is to provide a mechanism during catalog compilation that alerts the user to when they provide conflicting definitions for the same logical resource. In the configuration file it is valid to list multiple elements at the same priority", "created": "2015-08-25T10:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49] is there a specific set of fields you're proposing for the composite namevar?  I agree with most of your comments and am open to the idea, but, like Jeremy I'm worried that 'sort order' is too volatile a field to include in a composite namevar, because we have a goal of being able to support both managed and unmanaged resources... so if sort order was part of the composite namevar and someone tried to change the sort order of an existing rule, they'd end up with an unmanaged resource for the previous sort order and a managed resource that was exactly the same (except for sort order) for the new one.\n\nIf we can't come up with a set of fields for a composite namevar that makes sense, maybe the service itself could have some error-checking for the situations your concerned about, and either fail fast or log a warning if it detects things like duplicate rules?", "created": "2015-08-26T00:29:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] That make sense. I agree that \"losing\" a resource like that is similarly concerning. I would be +1 for logging a warning about unreachable rules or otherwise error-checking in the service as a resolution for the concern.", "created": "2015-08-26T12:02:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We landed on a solution for using just the {{name}} - a new field in each {{rule}} - as the \"namevar\" for each Puppet rule resource with a separate field, {{sort-order}}, used to signify the order in memory in which rules are evaluated as a match to the corresponding request.  For the {{sort-order}} field, we established \"ranges\" in which user-defined vs. Puppet default rules can reside - see https://github.com/puppetlabs/trapperkeeper-authorization/blob/master/doc/authorization-config.md#sort-order.  One of the benefits of this approach is that the PE module would have the ability to manage the default Puppet rules without running the risk of overwriting any custom rules that might reside in the user-defined range.  With the approach of user-defined vs. PE module managed rules, the possibility of \"conflicting\" resources seems like it would be greater - although the user would have the ability to mitigate conflicts though the {{sort-order}} field.\n\nFor example, I could see our default PE module managed rule for the \"certificate_status(es)\" endpoints only allowing access to the \"administrative\" nodes.  We've frequently, however, heard use cases where some users would like to have nodes be able to delete their own certificates via the \"certificate_status\" endpoint.  Strictly speaking, these two rules could overlap one another with respect to the path and method(s) that might be considered sufficient for a match.  It would seem bad, then, to have the implementation enforce a startup failure in this case.  It may be reasonable to consider outputting a warning in this case if we were to come up with a good way to detect match-requests whose criteria could match multiple requests, though.\n\nAlthough it might make for a cleaner-looking file, I also don't think we'd want to have users be able to remove the default Puppet rules \"manually\" - especially if the PE module would just \"dumbly\" put them right back on the next Puppet agent run - as opposed to just having the user create higher-priority rules in the user-defined space which supersede the default Puppet ones.\n\nDefinitely open overall, though, to adding messaging in the logs for cases where tk-authz detects that their might be a problem in the user's rule definitions if we can come up with some good heuristics for that.  Maybe do that as a separate ticket from this one, though?", "created": "2015-09-29T13:46:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We should close this as a dup of FM-3579.\n", "created": "2015-09-29T14:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I agree with [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]'s suggestion to close this in favor of FM-3579.  Doing that now...", "created": "2015-09-30T14:40:00.000000"}], "components": [], "created": "2015-08-14T14:33:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e327f3b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1n7r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_419737611_*|*_5_*:*_1_*:*_31348103857_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3641556325"}], "description": "This ticket would cover an investigation into a Puppet module which would allow users and PE infrastructure to model tk-auth rules in code.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] created a proof of concept in Ruby which uses the HOCON gem to manage content in an array of hashes which is analogous to what we're looking to use for trapperkeeper-authorization's \"flat list\" representation of rules.  The code for that POC is here:\n\nhttps://gist.github.com/cprice404/c08c7abcf0a82faa2fdf\n\nThis POC mimics how a Puppet module might be able to allow for management of authorization rules as individual Puppet resources to/from the \"flat list\" representation.\n\nOther notes from [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] as to what this example code demonstrates:\n\n* Supports retaining unmanaged rules resources if desired.\n* Supports purging unmanaged rules resources if desired.\n* Handles relative sort order of unmanaged and managed rules resources.\n* Does not preclude rules resources being placed into the catalog from disparate sources (user modules, PSE modules, PE modules, PL-app-specific modules)\n\nCode like this would need to have a Puppet module/type/provider wrapped around it, to plug in to the prefetch/instances/flush stuff.\n\nActivities for this ticket should include spec'ing out the module and validating that code like in the POC would meet the use cases of having rules interchangeably managed by: the PE Installer, a user via Puppet, and a user making raw edits to a file.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "16663", "fixedVersions": ["SERVER 2.2.0"], "id": "16663", "issueType": "Task", "key": "SERVER-850", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Duplicate", "resolutionDate": "2015-09-30T14:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Spec Puppet module for managing tk-auth rules", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server master branch at [b63087|https://github.com/puppetlabs/puppet-server/commit/b6308725654e47e39f39a8c04de466fdf7ddd28f].", "created": "2015-10-12T11:26:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I don't see anything here for QA to functionally review since this is just documentation.  So I'm going to just close this out.  /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2015-10-12T11:27:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA Agrees that this is properly resolved without a specific testing act.", "created": "2015-10-12T12:40:00.000000"}], "components": [], "created": "2015-08-14T13:43:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f823866"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2h1j:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_422766088_*|*_10007_*:*_1_*:*_845303371_*|*_3_*:*_1_*:*_12425192_*|*_5_*:*_1_*:*_30322858617_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3809008929"}], "description": "As we integrate trapperkeeper-authorization into Puppet Server, we will need to deprecate support for a few settings.  Following the pattern on how we did this for deprecations in Puppet 3.7, [~accountid:623c08e1562ab90069f8aed4] indicated that we should create a page in the Puppet Server docs about the deprecated features - and link to the core Puppet deprecation docs as appropriate.  Example of the deprecations writeup for Puppet 3.8:\n\nhttps://docs.puppetlabs.com/puppet/3.8/reference/deprecated_summary.html\n\nFor each deprecation, we try to tell the user four things:\n\n- Why it was deprecated and what replaces it.\n- When it's going away for good.\n- How to tell whether you're using it and need to take action.\n- What action to take to get off that feature.\n\n---\n\nThe settings being deprecated when trapperkeeper-authorization is referenced in Puppet Server include (may add others later):\n\n- {{certificate-authority.certificate-status.client-whitelist}}\n- {{certificate-authority.certificate-status.authorization-required}}\n- {{puppet-admin.client-whitelist}}\n- Ability to use Puppet auth.conf for Ruby master endpoints.  We'll be adding a \"feature flag\" setting called {{jruby-puppet.use-legacy-auth-conf}} in support of this.  Technically, it's a \"new\" setting that will be deprecated right away, along with its associated feature.\n", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15614", "fixedVersions": ["SERVER 2.2.0"], "id": "15614", "issueType": "Task", "key": "SERVER-849", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-10-12T11:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document deprecated Puppet Server settings when tk-auth comes in", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "AFAICT this passed full acceptance here:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-1.x/10/\n\nBut the next instance of that job appears to have more cells than that instance did, and I'm not quite sure what to make of that.", "created": "2015-08-18T07:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] this is the first ticket in the series for the metrics stuff we talked about a while back.  This one doesn't actually do anything except add support for registering callbacks when JRuby events occur.  It doesn't actually register any callbacks yet.", "created": "2015-08-18T07:32:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Resolved per QA risk analysis.", "created": "2015-08-18T10:09:00.000000"}], "components": [], "created": "2015-08-14T06:58:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3acdef55"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovkv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "This ticket was opened retroactively for some work that was done for https://github.com/puppetlabs/puppet-server/pull/658 - the work was in the open-source puppet-server project, so we wanted a ticket in SERVER to capture it."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_52549684_*|*_1_*:*_1_*:*_58655_*|*_10007_*:*_1_*:*_287405136_*|*_3_*:*_1_*:*_7554705_*|*_5_*:*_1_*:*_4951013612_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_9527361"}], "description": "In order to improve our ability to debug and reason about the state of the running server, we need more insight into the utilization of the JRuby instances in the pool.  We should add a callback registration function the service protocol, and make calls to the callbacks whenever a JRuby instance is requested, borrowed, or returned.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "17626", "fixedVersions": ["SERVER 1.1.2", "SERVER 2.1.2", "SERVER 2.2.0"], "id": "17626", "issueType": "New Feature", "key": "SERVER-847", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-08-18T10:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add support for event callbacks in JRuby service", "timeSpent": "PT0S", "updated": "2015-10-15T15:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This came up in some of the comments on TK-260.  Copying over some of the conversation from there:\n\nFrom [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]:\n\n{quote}I had been thinking that ... (we would not)... embed any default rules in code - that it can be driven only from configuration. I think this becomes even more important when we're talking about trapperkeeper-authorization as a service that could be used by any services that might exist in the application stack where it is running. tk-auth would not have any knowledge ahead of time of what other services might be using it and, so, embedding defaults in tk-auth itself wouldn't seem to make sense. Also, embedding defaults that would be service-specific in those services and contributing those back to a consolidated rules list seems like it could complicate things as well in cases where those rules could conflict among services - in addition to with those in a separate configuration file.{quote}\n\nFrom [~accountid:623c12b6ee1b5a0070293582]:\n\n{quote}\n> I had been thinking that the simple way out of that would be to not embed any default rules in code - that it can be driven only from configuration.\n\nIf we go that route then we'll be taking on quite a bit of complexity internally in Engineering that we could otherwise avoid. For example, reconciling ez-bake changes, packaging changes, filesystem permissions, coordinating with the integration team, docs, etc...\nMy thinking is that in the ideal world we ship by default with no configuration file at all in order to avoid these complexities internally in Engineering. Most users will never touch rules.conf so organizing things so that changes to the default behavior don't create churn in the packages, ezbake, integration, etc... is desirable.\n\nWhatever future module exists that manages rules could help the user ensure there is always a copy of the default rules whenever it manages a single rule. In this way we can safely make changes to the default behavior without much overhead or concern and the end users have a clear way to handle their customizations of those defaults.\n\n> I think this becomes even more important when we're talking about trapperkeeper-authorization as a service that could be used by any services that might exist in the application stack where it is running.\n\nYes, I agree. This is the primary reason I'm in opposition to the idea of making trapperkeeper-authorization responsible for knowing all of the rules required by all of the services using trapperkeeper-authorization. It will be difficult to coordinate and separate out concerns because all of the consuming services will need to have their endpoints changed in code in tk-authz.\n\nNow, we could get around this by just having tk-authz, and all services, not hard-code defaults. The only mechanism for a consuming service to register rules would be through filesystem configuration. This is where a filesystem based precedence list would be useful. Read from /etc if the file exists, otherwise read from /opt to populate the defaults.\n\nEither way, filesystem or hard-coded defaults, the goal is to provide some clear way to toggle entirely from default rules to user-defined rules, avoiding mixing and matching user defined rules with default rules.\n\n> Also, embedding defaults that would be service-specific in those services and contributing those back to a consolidated rules list seems like it could complicate things as well in cases where those rules could conflict among services - in addition to with those in a separate configuration file.\n\nYeah, I see the complexity too and agree with you that it's a concern. I've been struggling to try and reduce that complexity while also avoiding the sort of issue Nick highlighted.\n\nIn my mind the balance point (thing we should do taking everything into account) is on the /opt unless /etc all-or-nothing approach with no defaults in code.{quote}", "created": "2015-08-11T18:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] If we did go with something like the \"embed all of the default rules in code by default and use those, only use rules from a separate file that is user-defined\" approach that you described, how would you suggest that the user would become cognizant of what the default rules are when creating their own rules?  For example, I could envision that in many cases that users would be generally happy with our defaults but just want to add a couple of small tweaks to selected endpoints - like add access to \"certificate_status\" for one extra node in their infrastructure...  If we are introducing new endpoints in a new Puppet Server release along with a rule definition, how would the user become aware of this fact so that they could consider merging it into their default ruleset?  If we were to go with the approach of shipping our defaults as a configuration file (or files), though, it seems like we'd have a built-in way to make that information available to users.  They either leave that file alone and it gets automatically updated when Puppet Server is upgraded or, if they change it, they have an .rpmnew file or the like as an artifact to compare against their current copy after an upgrade is performed.", "created": "2015-08-11T18:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I had been thinking that in general we're trying to drive more and more of our configuration out of code.  The auth.conf rules seem more analogous to me to what we've been doing with web-routing configuration in the Trapperkeeper world - where even the URIs themselves are defined in configuration files rather than in code.\n\nWould like to get [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]' take on all of this...", "created": "2015-08-11T18:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm pretty strongly opposed to the idea of baking any rules into the code, personally.  That seems really complicated and opaque.\n\nI'm interested in the mid-to-long term goal of coming up with ways to put defaults for various TK things into an /opt directory and allowing them to be user-overridable, but I think that we should be designing that in terms of the broader TK config system and not in terms of this specific service, and I'm not 100% sure that I think it's worth spending the effort on it right now.\n\nMy #1 preference would be to just deploy the default rules in the single, authoritative config file.  It seems like we're all in agreement that the 90% case is that users will never touch that file, and if that's the case, then the package managers should be able to handle rolling out new versions of the file when we change defaults, right?  And will prompt users to do something about it if there's a conflict?\n\nThat's not the perfect UX, but I'm not sure that any of the other options we've discussed are obviously superior, and therefore it's hard to justify in my mind the extra work that they would entail.\n\nI'm a little suspect about any solution that would involve the users needing to understand too many details about how we're piecing the config data together from a bunch of disparate locations on disk.  To me, it seems like a better UX to be able to just say \"this is the directory where all of your config files live.  go look there.\".\n\nIf at some point in time we do decide to split things out into multiple locations and have rules about how we merge together the various bits of config to produce the final result, I think it will make it much more urgent that we a) provide CLI tooling to make it easier to interrogate settings, and b) retain file/line metadata attributions alongside the various settings values.  These are both worthwhile features to consider regardless, but I'm leery of adopting a design today that might force us to take on all of that extra work immediately rather than being able to pick it up at some appropriate, less-rushed time in the future.\n\n$.02", "created": "2015-08-12T02:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Another thing: as we're standardizing on config tooling across the three languages (Clojure, Ruby, C++), a recurring theme is that there is a tremendous amount of value in being able to parse and reason about config data from any of the languages without relying on any logic beyond the basic functionality of the config parser.  As soon as we start splitting things out into multiple directories and applying rules about how to merge config data from multiple files (especially anything that is specific to a single service), it gets much more complicated to reason about the configuration from other languages.  This is really huge recurring problem when attempting to deal with Ruby Puppet's configuration from any other language, so we need to be really careful to learn from those experiences.", "created": "2015-08-12T02:08:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n\n{quote}[...] there is a tremendous amount of value in being able to parse and reason about config data from any of the languages without relying on any logic beyond the basic functionality of the config parser.{quote}\n\nCould you clarify, maybe with an example?  Do you mean \"parse and reason\" from the perspective of building an entire applications's configuration data structure, building a sub-set of the data structure, or focusing on a specific file in the filesystem and being able to parse and reason about the contents?\n\nIf we take Apache as an example, I've never needed to parse and load the _entire_ apache configuration and reason about it in it's entirety.  I would frequently, however, need to parse and load a single {{<VirtualHost>...</VirtualHost>}} structure located in a single file because the main Apache configuration does something like {{include \"conf.d/*.conf\"}}.", "created": "2015-08-12T10:11:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n\n{quote}I'm pretty strongly opposed to the idea of baking any rules into the code, personally. That seems really complicated and opaque.{quote}\n\nWhat is complicated and opaque about it?  From my perspective it's intuitive and not at all opaque given the detailed information that will be coming out of the system as TK-261 and SERVER-841.  As part of those ticket I expect the system to inform the user what the default ACL is and looks like as part of initialization, regardless of where the defaults originate from.", "created": "2015-08-12T10:14:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n\n{quote}I'm a little suspect about any solution that would involve the users needing to understand too many details about how we're piecing the config data together from a bunch of disparate locations on disk.{quote}\n\nWhy are you suspect of this?  {{conf.d}} run-parts style composition of configuration files is always preferable, as an experienced SysAdmin, to a monolithic configuration file.  All good configuration parsing engines allow a main file to include other files, e.g. nginx, Apache, Makefiles, every programming language I've seen, etc...", "created": "2015-08-12T10:17:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n\n{quote}I had been thinking that in general we're trying to drive more and more of our configuration out of code. The auth.conf rules seem more analogous to me to what we've been doing with web-routing configuration in the Trapperkeeper world - where even the URIs themselves are defined in configuration files rather than in code.{quote}\n\nTo my mind, web routing configuration in TK is a good example of something that definitely should not be in a configuration file by default.  If the user (or any stakeholder) changes the values in that configuration file then the system will break.  There is no other outcome other than breakage.  The configuration serves no good purpose when exposed by default, the only outcome is to trip people up.  We've seen this on the development team, losing time to being tripped up by forgetting to make changes to the web routing configuration and keeping the file in sync across upgrades and PE vs FOSS packaging.\n\nIf the default web-routing configuration were in code rather than configuration then it would be simpler.  There would no longer need to be a need to keep packaging in sync around the configuration file.\n\nI support the mechanism of allowing a configuration file to override the defaults coming from code in order to allow 3rd party stakeholders to customize default behavior, applicable to both rules.conf and web routing, but that's an explicit override, not the defaults themselves.\n\nThe main point I'm trying to make is that the current approach is that we expect users to change the _defaults themselves_ when they change the configuration.  This is wrong.  The default behavior should somehow be _overriden_ with the key point being that there is a distinction between the default value and the overriding value and that distinction is preserved at all times during operation of the system.\n\nIf we decide to continue keeping defaults out of code and place them in the filesystem then we still need to preserve the distinction between the default value and the overriding value.  This is why I proposed the {{/opt unless /etc}} convention and approach.\n\n{quote}If we did go with something like the \"embed all of the default rules in code by default and use those, only use rules from a separate file that is user-defined\" approach that you described, how would you suggest that the user would become cognizant of what the default rules are when creating their own rules?{quote}\n\nThe system should display the default ACL as part of initialization.  Ideally, it should do so in a form the user can copy and paste.  We're already capturing some of these requirements in TK-261 and SERVER-841, and [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] also mentioned this:\n\n{quote}When fully parsed, log out the internal representation of the rulesets w/ ordering, so people can see that things are landing where they expect. {quote}\n\nIn the process of doing so, the system should ideally print out the list of rules in a user-consumable way.  The best applications and tools I've used do so in a way that I can simply copy and paste into a configuration file.  See also the rise of log messages that aren't free-form text but are instead structured data, e.g. JSON for easy consumption and parsing by tools like Logstash, ElasticSearch and Splunk.  This is different and tangential, but there is prior-art here that we should take inspiration from.\n\nIn the future, ideally there would be a API that returns the configuration.  Imagine if the user could just do:  {{curl https://puppetserver:8141/authorization/v1/rules.conf > rules.conf}} and then edit the file.", "created": "2015-08-12T10:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}Could you clarify, maybe with an example? Do you mean \"parse and reason\" from the perspective of building an entire applications's configuration data structure, building a sub-set of the data structure, or focusing on a specific file in the filesystem and being able to parse and reason about the contents?{quote}\n\nThe examples that are causing me the most pain right now are Puppet's {{puppet.conf}} files and the new directory environments {{environment.conf}} file.  We constantly find ourselves needing access to data from these files in the Clojure code, and, while the structure of the files and the resulting config data is generally very simple, the crazy complex logic that exists in the Puppet Ruby code for parsing and interacting with this data makes it basically impossible for us to parse the config and do anything useful with it from any other language besides Ruby (and even in Ruby you have to load the whole Puppet settings API in order to do it).\n\nI'm talking about the desire to be able to use a fairly simple, language-agnostic config format where at the end of the day the entirety of the configuration can be represented as a simple data structure, so that it can be parsed and used easily from any language.\n\nThe moment that you start adding additional complexity in the code that involves going through sophisticated transformations and/or applying logic that conditionally merges together data from different config files, it becomes significantly more complex and expensive to do anything at all with the config files from outside of the actual application code.\n\nI am not saying that there are not circumstances where that tradeoff is necessary / warranted, but I am not convinced that this is such a situation.\n", "created": "2015-08-13T04:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}To my mind, web routing configuration in TK is a good example of something that definitely should not be in a configuration file by default.{quote}\n\nFine, but we've already discussed this many times, I don't explicitly disagree with it, we already have tickets in the backlog about considering a change related to it in the future, and there are other possible solutions besides hard-coding the configuration data into the application code.\n\n{quote}We've seen this on the development team, losing time to being tripped up by forgetting to make changes to the web routing configuration and keeping the file in sync across upgrades and PE vs FOSS packaging.{quote}\n\nWe've also seen the opposite, where the application code contains logic about how to build up defaults, possibly spread across many locations and possibly very difficult to reason about, and the possibility for developers getting tripped up by that.  So it's not like putting defaults into the code is guaranteed to solve this particular problem you're alluding to.\n\n{quote}If the default web-routing configuration were in code rather than configuration then it would be simpler. There would no longer need to be a need to keep packaging in sync around the configuration file.{quote}\n\nIt would be simpler for some things and potentially significantly more complex for others.  And it would make it literally, utterly impossible to write code in another language that could load the configuration data without loading the application and still end up with a reasonably complete picture of what the final state of the app was going to look like.\n\nI do not believe that we have a sufficient body of evidence weighing what you perceive as the costs of the current approach against what I see as the benefits, and thus I believe that it would be premature to introduce this as a requirement for this feature without a more concrete, compelling forcing function.\n\n{quote}The system should display the default ACL as part of initialization. Ideally, it should do so in a form the user can copy and paste. We're already capturing some of these requirements in TK-261 and SERVER-841, and Eric Sorenson also mentioned this{quote}\n\nThat's great, and I'm in favor of it, but it means that the only place you can possibly get that data is from the running application.  If we can provide that and *also* keep the on-disk representation simple so that people (or tools) can introspect it outside of the running system, isn't there value in that?\n\n{quote}In the future, ideally there would be a API that returns the configuration. Imagine if the user could just do: curl https://puppetserver:8141/authorization/v1/rules.conf > rules.conf and then edit the file.{quote}\n\nImagine if the user could just do:\n\n{code}\ncat /etc/puppetlabs/puppetserver/conf.d/rules.conf\nvi /etc/puppetlabs/puppetserver/conf.d/rules.conf\n{code}", "created": "2015-08-13T04:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think the conversation has stalled out on this one.\n\nI'm still in the same camp as [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] on this one with respect to preferring that we maintain the \"default\" tk-auth rules in a configuration file (or files if we decide to go to a snippets-based approach in the future) rather than embedding them in code.  I think we're all in agreement with the general notion of exploring an {{/opt unless /etc}} configuration, like is captured in SERVER-851, to help with problems we've seen in cases where users are modifying files that we really don't want to have them be modifying.  And I think we're in agreement that we would explore this as a follow-on to the first release of tk-auth.\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - Do you have any strong preferences on this topic?  Would you be good with the \"default rules in configuration file(s)\" approach?", "created": "2015-08-17T12:22:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}we maintain the \"default\" tk-auth rules in a configuration file (or files if we decide to go to a snippets-based approach in the future) rather than embedding them in code.{quote}\n\nI'm good with that, provided we also implement SERVER-851, or something like it that satisfies the same user need and provides a similarly good user experience.\n\nIf we don't have a way to provide a good experience for users who need to augment the default values, then I'm in disagreement.\n\nWe do, so I'm +1.\n\nIt will be a smell if we ship \"defaults\" in /etc however, because /etc/ is specifically for users.  This is why SERVER-851 is so carefully named \"/opt unless /etc\"", "created": "2015-08-17T17:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Code changes merged to puppet-server master branch at [b221a9|https://github.com/puppetlabs/puppet-server/commit/b221a90911ee0ab1da6b9893ba775c410ba26c3f].\n\nAcceptance test changes merged to puppet-server master branch at [f1a969|https://github.com/puppetlabs/puppet-server/commit/f1a969bcc8c16e7379d8d2deb10de388f8629d19].", "created": "2015-09-30T14:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Initial smoke test run with new acceptance tests failed.  PR with fixes merged to master at [17db687|https://github.com/puppetlabs/puppet-server/commit/17db6871310a78d89b6aa3cf252bbd75d2296405].\n\nFull puppet-server master acceptance test suite passed at http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/164/.\n\nMoving to testing.", "created": "2015-10-01T00:15:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I've directly validated the existence of the new auth.conf file numerous times and in many different builds over the last few days.  The correctness of the hocon has also been validated.  The positive functional operation of the rules in this file are being validated in CI, and I have validated many of the the negative cases.\n\nMarking resolved.", "created": "2015-10-06T11:31:00.000000"}], "components": [], "created": "2015-08-11T18:20:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c8faeab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoda7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_37092508_*|*_1_*:*_1_*:*_63536195_*|*_10007_*:*_1_*:*_73479979_*|*_3_*:*_1_*:*_1035967718_*|*_5_*:*_1_*:*_3839811938_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_472537770_*|*_10006_*:*_1_*:*_3131216888"}], "description": "For a Puppet Server integrated with {{trapperkeeper-authorization}}, we need to bundle a default {{auth.conf}} file which reflects the same set of rules as users would get with the legacy Ruby Puppet {{auth.conf}} file.  This ticket will involve researching into the default rule set that core Ruby Puppet uses - some of which is derived from the {{auth.conf}} file that it ships with but with some rules merged in from Ruby code itself.\n\nAn appropriate translation of the default Ruby Puppet rule set into Puppet Server's HOCON-formatted {{auth.conf}} file in the {{ezbake/config/conf.d}} directory would be the primary artifact delivered with this ticket.\n\nWe'll also need to release and pull in a newer version of {{trapperkeeper-authorization}} than is currently available since we need to have the full set of elements in each rule definition - including {{sort-order}} and {{name}}.\n\nTo validate the default rule set, we've discussed creating a set of Beaker-level tests.  This would be done so that the tests can be run against the package form of Puppet Server, as opposed to just Clojure-level unit tests, and would help validate that the proper \"auth.conf\" file was included and being used from the package.  The Beaker test work would be done as part of SERVER-901. ", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "17625", "fixedVersions": ["SERVER 2.2.0"], "id": "17625", "issueType": "Task", "key": "SERVER-846", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-10-06T11:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Default tk-auth rules management for Puppet Server", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "perf-bl13", "created": "2015-08-11T14:32:00.000000"}], "components": [], "created": "2015-08-11T14:27:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@548cf54"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0u3b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_76571092_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_140911467228"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15610", "fixedVersions": [], "id": "15610", "issueType": "Task", "key": "SERVER-845", "labels": [], "originalEstimate": "PT0S", "parent": "16150", "parentSummary": "Manual Gatling Test Epic", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2020-01-29T08:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Placeholder for long running Gatling test against PE 4.0", "timeSpent": "PT0S", "updated": "2020-01-29T08:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to stable at [86b66e|https://github.com/puppetlabs/puppet-server/commit/86b66e47644b1601f47196be4789257dd4ceb387].", "created": "2015-11-18T14:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did some functional testing of the packages built from this to see that they worked as expected on a RedHat-derivative (CentOS 7) and Debian-derivative (Ubuntu 14.04).\n\n1) Downloaded puppetserver-2.2.0.stable-0.1SNAPSHOT.2015.11.18T0732 .repo/.list file to {{/etc/yum.repos.d}} (Cent) and {{/etc/apt/sources.list.d}} (Ubuntu).\n\n2) Downloaded puppet-agent 1.2.7 .repo/.list files to the same directories as above.\n\n3) For Ubuntu-only, ran {{apt-get update}}.\n\n4) Ran {{yum install puppet-agent}} (Cent) and {{apt-get install puppet-agent}} (Debian).\n\npuppet-agent 1.2.7 was installed.\n\n5) Ran {{yum install puppetserver}} (Cent) and {{apt-get install puppetserver}} (Debian).\n\nReceived an error on each OS.\n\nFor Cent:\n\n{noformat}\nError: Package: puppetserver-2.2.0.stable-0.1SNAPSHOT.2015.11.18T0732.el7.noarch (pl-puppetserver-2.2.0.stable.SNAPSHOT.2015.11.18T0732)\n           Requires: puppet-agent >= 1.3.0\n           Installed: puppet-agent-1.2.7-1.el7.x86_64 (@pl-puppet-agent-1.2.7)\n               puppet-agent = 1.2.7-1.el7\n{noformat}\n\nFor Ubuntu:\n\n{noformat}\nThe following packages have unmet dependencies:\n puppetserver : Depends: puppet-agent (>= 1.3.0) but 1.2.7-1trusty is to be installed\nE: Unable to correct problems, you have held broken packages.\n{noformat}\n\n6) Downloaded puppet-agent 1.3.0 .repo/.list files to the same repo directories as above.\n\n7) For Ubuntu-only, ran {{apt-get update}}.\n\n8) Ran {{yum install puppetserver}} (Cent) and {{apt-get install puppetserver}} (Debian).\n\nInstallation was successful for both OSes.\n", "created": "2015-11-18T14:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Putting this in the testing column.  Not sure if there's anything else you'd want to test for on this one?", "created": "2015-11-18T14:56:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "No, resolving.\n", "created": "2015-11-19T10:48:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This change was committed and passed through CI with no problems found.", "created": "2015-11-19T10:48:00.000000"}], "components": [], "created": "2015-08-07T18:36:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6dbb5d4c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1hf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Nov/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_54345345_*|*_1_*:*_1_*:*_407319262_*|*_10007_*:*_1_*:*_181128_*|*_3_*:*_1_*:*_386244563_*|*_5_*:*_1_*:*_37174108_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_71542963_*|*_10004_*:*_1_*:*_8041479403"}], "description": "This follows from SERVER-828.\n\n*On the master branch, we should pin the puppet-agent dependency to >= 1.3.0 before the next release of puppet-server.*\n\nThe puppet-agent was not yet released in the 1.3.z series at the time of SERVER-828.\n\nChange these lines:\n* https://github.com/puppetlabs/puppet-server/blob/master/resources/ext/ezbake.conf#L10\n* https://github.com/puppetlabs/puppet-server/blob/master/resources/ext/ezbake.conf#L37\n\nThe debian declaration should follow https://www.debian.org/doc/debian-policy/ch-relationships.html, specifically:\n{quote}\nThe relations allowed are <<, <=, =, >= and >> for strictly earlier, earlier or equal, exactly equal, later or equal and strictly later, respectively. The deprecated forms < and > were confusingly used to mean earlier/later or equal, rather than strictly earlier/later, and must not appear in new packages (though dpkg still supports them with a warning).\n{quote}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15605", "fixedVersions": ["SERVER 2.2.0"], "id": "15605", "issueType": "Task", "key": "SERVER-836", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-11-19T10:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pin puppet-agent package dependency to >= 1.3.0", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c08e1562ab90069f8aed4], [~accountid:557058:7edde36a-845c-4e08-9172-c7b2f0265ea1] - I would appreciate it if you could suggest some verbiage that we could use in the deprecation warnings that would be written to the puppetserver.log file for these.  Here's my current draft:\n\nFor the puppet-admin settings:\n\n{quote}The 'client-whitelist' and 'authorization-required' settings in the 'puppet-admin' section are deprecated and will be removed in a future release.  Remove these settings and instead create an appropriate authorization rule in the auth.conf file.\"{quote}\n\nFor the certificate-authority.certificate-status settings:\n\n{quote}The 'client-whitelist' and 'authorization-required' settings in the 'certificate-authority.certificate-status' section are deprecated and will be removed in a future release.  Remove these settings and instead create an appropriate authorization rule in the auth.conf file.{quote}\n\nIf you need me to file a separate DOCS ticket about this for your team to account for the time to come up with some better messages, please let me know.  Thanks!", "created": "2015-08-25T14:08:00.000000"}, {"author": "557058:7edde36a-845c-4e08-9172-c7b2f0265ea1", "body": "I wouldn't rewrite those at all. They're fine in terms of clarity and understandability.", "created": "2015-08-25T14:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:557058:7edde36a-845c-4e08-9172-c7b2f0265ea1].\n\nI'm thinking we should fully-qualify the reference to \"auth.conf\" here since we actually want users to be putting their new rules into the \"auth.conf\" file that Puppet Server owns, {{/etc/puppetlabs/puppetserver/conf.d/auth.conf}}, as opposed to the one that core Puppet reads and which is being deprecated, {{/etc/puppetlabs/puppet/auth.conf}}.\n\nAlso, we'll need to create a deprecation warning around the new {{use-legacy-auth-conf}} setting mentioned in the description.  My current language for that one in the code is:\n\n{quote}The 'use-legacy-auth-conf' setting in the 'jruby-puppet' section is deprecated and will be removed in a future release.  Change the value of this setting to 'false' and migrate your authorization rule definitions in the /etc/puppetlabs/puppet/auth.conf file to the /etc/puppetlabs/puppetserver/conf.d/auth.conf file.{quote}\n\n[~accountid:557058:7edde36a-845c-4e08-9172-c7b2f0265ea1], [~accountid:623c08e1562ab90069f8aed4], would also appreciate any thoughts you have around the verbiage for this message as well.  Thanks again!", "created": "2015-08-25T14:39:00.000000"}, {"author": "557058:7edde36a-845c-4e08-9172-c7b2f0265ea1", "body": "Sure, makes sense about adding the fully qualified path name. \n\nIf the use-legacy-auth-conf setting and the rule definitions are all in /etc/puppetlabs/puppet/auth.conf (I don't know whether that's true), then we can probably just assume that in the last sentence and change it to:\n\nChange the value of this setting to 'false' and migrate your authorization rule definitions [stuff deleted here] to the /etc/puppetlabs/puppetserver/conf.d/auth.conf file.\n\nIf the settings and/or the rule definitions aren't in that file, then leave the sentence as you have it.", "created": "2015-08-25T15:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}If the use-legacy-auth-conf setting and the rule definitions are all in /etc/puppetlabs/puppet/auth.conf (I don't know whether that's true){quote}\n\n[~accountid:557058:7edde36a-845c-4e08-9172-c7b2f0265ea1], the {{use-legacy-auth-conf}} setting will be in the /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf file (open-source) or /etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf file (PE).  The /etc/puppetlabs/puppet/auth.conf file just has the \"authorization rules\" themselves.  So, sounds like the sentence as I had it is probably the better way to go.\n\nThanks again for taking a look at this!", "created": "2015-08-25T16:09:00.000000"}, {"author": "557058:7edde36a-845c-4e08-9172-c7b2f0265ea1", "body": "Agreed. Sure thing. Thanks for asking. ", "created": "2015-08-25T16:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to master at [e600a8|https://github.com/puppetlabs/puppet-server/commit/e600a8c4909b1dbe046b5b807e4b766af988e8ba].", "created": "2015-09-08T14:26:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Full puppet-server acceptance test suite job passed in Jenkins - http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/127/.\n\nLast build off master with these changes which went through was 2.1.2.SNAPSHOT.2015.09.14T0134.  All tests passed with this build.\n\nMoving this to \"testing\".", "created": "2015-09-14T10:43:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Resolved per QA risk assessment.", "created": "2015-09-28T11:08:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}2) For the certificate-authority.certificate-status.client-whitelist and the puppet-admin.client-whitelist settings, if the client-whitelist setting is present, authorization for the related endpoints will continue to be done against value of the client-whitelist setting - same as in current Puppet Server code - and a WARNING message indicating that the client-whitelist setting is now deprecated will be written into the Puppet Server log at startup. If the client-whitelist setting is not present, authorization will be done via the new trapperkeeper-authorization service.{quote}\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I was talking about this with [~accountid:623c08e1562ab90069f8aed4] and [~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e].  Nick indicated, IIUC, that typical Puppet practice is that the resulting behavior of the application should be the same for defaults that are implicitly derived vs. those being explicitly set and that the above approach violates that pattern.\n\nAs the code in Puppet Server works for tk-authz today, the presence vs. absence of the client-whitelist settings control whether the code honors the client-whitelist (present) vs. tk-authz (absent).  So if you had this in your puppetserver.conf file...\n\n{noformat}\npuppet-admin: {\n    client-whitelist: []\n}\n{noformat}\n\n... then Puppet Server would honor the {{client-whitelist}} and not permit any users to access the {{puppet-admin}} endpoints whereas if you delete the {{puppet-admin}} section entirely, tk-authz would be used for the {{puppet-admin}} endpoints - even though the implicit defaults for this case could arguably be the same.\n\nWhere this may be problematic in particular - something I hadn't been reminded of until [~accountid:623c08e1562ab90069f8aed4] had asked today - is that the default conf files in Puppet Server packaging ship with the explicitly defined \"empty\" {{client-whitelist}} as above.  Presuming the user might have changed something else in the puppetserver.conf file but not the {{puppet-admin}} section, the user would have to delete the {{puppet-admin}} section in order for tk-authz to be used.  For the \"ca.conf\" file, we had removed that from latest Puppet Server code on master.  If someone were upgrading from an older Puppet Server to the latest version, the empty {{client-whitelist}} for the {{certificate-status}} endpoint would most likely be present, meaning that a user who had never customized this file would have to delete it - or at least just the {{client-whitelist}} setting from it - in order to opt into using tk-authz for the {{certificate-status}} endpoint.\n\nDo you think it would be better to have the Puppet Server behavior to be that if {{authorization-required}} is set to true (implicitly or explicitly) and the associated {{client-whitelist}} is empty (implicitly or explicitly), then tk-authz would be used - as opposed to only having tk-authz come into play if the settings are explicitly absent from the configuration.\n\nI don't think moving to this would involve significant code changes and it might make it easier for users to be opted into tk-authz by default for the {{client-whitelist}} controlled endpoints when upgrading from an older Puppet Server.\n\nWhat do you think?\n\n\n\n\n", "created": "2015-09-28T16:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I don't have any strong opinions other than being really glad we didn't introduce more of these whitelist settings before building this :)", "created": "2015-09-28T18:22:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "In short, I think the approach you describe in the last comment is sound, Jeremy.\n\nThe way I'd abstract this is: users shouldn't have to do extra work to adopt a new feature. ", "created": "2015-09-29T10:35:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "I really like the idea of reducing it from three possible states to two. ", "created": "2015-09-30T13:02:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - thanks, we'll go with your suggestion then.  Created a new ticket to cover that - SERVER-915.", "created": "2015-09-30T13:05:00.000000"}], "components": ["Puppet Server"], "created": "2015-08-07T14:28:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c7333eb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoeg7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Adopted to get the Puppet Server -> tk-auth integration going sooner"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_505024169_*|*_1_*:*_1_*:*_421384945_*|*_10007_*:*_1_*:*_946047532_*|*_3_*:*_1_*:*_611972310_*|*_5_*:*_1_*:*_4532374746_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1211082932_*|*_10006_*:*_1_*:*_785322055"}], "description": "In support of SERVER-111 a feature flag needs to be added to the puppetserver configuration files.  If enabled, jruby-puppet's authconfig behavior will be disabled through the mechanism implemented in PUP-5012 and trapperkeeper-authorization will be used for authorizing jruby-puppet endpoints.\n\nNote, for non-jruby-puppet endpoints, i.e. those implemented in pure Clojure, trapperkeeper-authorization will always be enabled and will replace certificate whitelist behavior.\n\nThis feature flag was [originally implemented as a simple environment variable check|https://github.com/jeffmccune/puppet-server/commit/771645021f83e4a0b19514c2bb186862600e5ffc], however the flag implemented as part of this ticket should be copacetic with existing trapperkeeper configuration conventions.\n\n---\n\nEDIT: Based on some additional conversations with PROD, UX, etc., we decided to go with the following approach for the configuration settings:\n\n1) As mentioned above, we will be exposing a \"feature flag\" in Puppet Server configuration which will be used to control the authorization mechanism which is used for the legacy Ruby master routes.  The current proposal for the name of that setting is {{use-legacy-auth-conf}} and the setting would reside in the {{jruby-puppet}} section in Puppet Server.  The default value for the setting, if not present, would be \"true\".\n\n- For \"true\", the legacy Puppet auth.conf would be used to authorize access to Ruby master endpoints and a WARNING message indicating that the use of the legacy auth.conf is deprecated would be written into the Puppet Server log at startup.\n- For \"false\", the new trapperkeeper-authorization service would be used to authorize access to Ruby master endpoints.\n\n2) For the {{certificate-authority.certificate-status.client-whitelist}} and the {{puppet-admin.client-whitelist}} settings, if the {{client-whitelist}} setting is present, authorization for the related endpoints will continue to be done against value of the {{client-whitelist}} setting - same as in current Puppet Server code - and a WARNING message indicating that the {{client-whitelist}} setting is now deprecated will be written into the Puppet Server log at startup.  If the {{client-whitelist}} setting is not present, authorization will be done via the new trapperkeeper-authorization service.\n\nFor the deprecation messages in the log, we'll need to inform the user how to silence the message.  We'll probably want to consult with [~accountid:623c08e1562ab90069f8aed4] or someone on the docs team for suggested language for each.\n\n---\n\nImplementation details:\n\nWith respect to the approach for switching between trapperkeeper-authorization vs. the client-whitelist for related Clojure endpoints, [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] suggested that, to accrue the least amount of technical debt that we'd need to pay back when we would stop supporting the deprecated settings later, that we look at an approach where we'd wrap the client-whitelist handling middleware around the trapperkeeper-authorization middleware, which would in turn be wrapped around the full set of routes that need to be authorized.  For the case that the client-whitelist needs to be used to handle authorization, the client-whitelist middleware could set an \"is_preauthorized: true\" or similar setting onto the Ring request that gets passed up to the trapperkeeper-authorization middleware when authorization is successful.  The trapperkeeper-authorization middleware, then, could use the \"is_preauthorized: true\" setting as an indication that it doesn't need to try to authorize the request per its rules.  There may be other approaches that can accomplish the same end.\n", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15329", "fixedVersions": ["SERVER 2.2.0"], "id": "15329", "issueType": "New Feature", "key": "SERVER-835", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-09-28T11:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add feature flag to enable jruby-puppet authorization in puppet-server", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Discussed this in backlog grooming today", "created": "2015-08-12T11:30:00.000000"}, {"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "Closing this ticket, as this was a placeholder for work. \nIf this is critical for future work, please reopen it. ", "created": "2017-10-05T17:53:00.000000"}], "components": [], "created": "2015-08-07T10:24:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e91b5e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyntnz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_435960727_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_67846953455"}], "description": "This is a follow-on ticket to SERVER-815.  Through some discussion in the linked PR for that ticket, https://github.com/puppetlabs/puppet-server/pull/651/files#r36301283, we agreed it would be best for any code that has to interact with Puppet Environments to enumerate manifest files - including settings cache invalidation, etc. - should live in core Ruby Puppet rather than in Puppet Server itself.  I filed PUP-5011 as a feature request to have new APIs added to core Ruby Puppet for this purpose.  This ticket would serve as a follow-on where we would ideally gut the code merged for SERVER-815 and replace with calls to the new functionality added in PUP-5011.  Action on this ticket is gated on the completion of PUP-5011.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15600", "fixedVersions": [], "id": "15600", "issueType": "New Feature", "key": "SERVER-834", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2017-10-05T17:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Replace environment manifest enumeration logic with calls into core Ruby Puppet", "timeSpent": "PT0S", "updated": "2017-10-05T17:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] I think we are getting ready to close this ticket.  I think we could mark this as low risk, because this issue was caught in CI.  We should probably talk to [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] about WHERE in CI this failed, so we can verify.  Does this make sense to you?", "created": "2015-08-12T11:25:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] +1.", "created": "2015-08-12T11:32:00.000000"}], "components": [], "created": "2015-08-06T11:28:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@15f9668c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1gen:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_518110195_*|*_5_*:*_1_*:*_35593690297_*|*_6_*:*_1_*:*_0"}], "description": "pe-puppet-server-extensions (2015.2.x) 10: Lein EZBake #15 failed with:\n{code}\nlein with-profile ezbake ezbake stage\n'ezbake' is not a task. See 'lein help'.\nError encountered performing task 'ezbake' with profile(s): 'ezbake'\nTask not found\n{code}\n\nIt looks like ezbake was removed from the project.clj: https://github.com/puppetlabs/pe-puppet-server-extensions/commit/a32c7c9dc90632ffc7dfd1b913d5682d1bc3657c#diff-0fff143854a4f5c0469a3819b978a483L83", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15595", "fixedVersions": [], "id": "15595", "issueType": "Bug", "key": "SERVER-833", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-08-12T11:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CI Failure - ezbake plugin removed from project.clj in pe-puppet-server-extensions", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR #661 merged to puppet-server stable at [84da4e|https://github.com/puppetlabs/puppet-server/commit/84da4eecad385c9b7cf31bfae2336018d848eb1d].", "created": "2015-08-10T18:13:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR #651 merged to puppet-server master at [828aa7|https://github.com/puppetlabs/puppet-server/commit/828aa76ad773b9104a1970a0ceaf3f3364bc2989].", "created": "2015-08-10T18:14:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Although the master acceptance tests are not yet green, that's due to other failures", "created": "2015-08-18T11:49:00.000000"}], "components": [], "created": "2015-08-05T16:36:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a98a076"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1g1z:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Causing CI failures"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1021862840_*|*_1_*:*_1_*:*_1965983_*|*_10007_*:*_1_*:*_82151951_*|*_3_*:*_1_*:*_3469_*|*_5_*:*_1_*:*_4945052862_*|*_6_*:*_1_*:*_0"}], "description": "I believe due to a bug in [temp_file_utils|https://github.com/puppetlabs/puppet/commit/8d2a8722642cb66f54bf4ee2e865125f32581581#diff-b7866d0da0e8d9813e2e60eaaad36557R143]\n\n{code}\n\n  * when the user and group are missing\n\nxzvxdg8ta39hcam.delivery.puppetlabs.net (redhat6-64-1) 04:02:44$ rm -rf /tmp/ticket_9862_puppet_runs_without_service_user_or_group_present.Io662P/log\n\nxzvxdg8ta39hcam.delivery.puppetlabs.net (redhat6-64-1) executed in 0.02 seconds\n\nxzvxdg8ta39hcam.delivery.puppetlabs.net (redhat6-64-1) 04:02:44$ puppet apply -e \"notify { puppet_run: }\" --logdir /tmp/ticket_9862_puppet_runs_without_service_user_or_group_present.Io662P/log --user missinguser --group missinggroup\nNotice: Compiled catalog for xzvxdg8ta39hcam.delivery.puppetlabs.net in environment production in 0.35 seconds\nNotice: puppet_run\nNotice: /Stage[main]/Main/Notify[puppet_run]/message: defined 'message' as 'puppet_run'\nNotice: Applied catalog in 0.02 seconds\n\nxzvxdg8ta39hcam.delivery.puppetlabs.net (redhat6-64-1) executed in 1.71 seconds\n#<TypeError: can't convert String into Integer>\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_full-master/LAYOUT/redhat6-64ma-32a/LDAP_TYPE/default/PLATFORM/default/label/beaker/ruby/puppet/acceptance/lib/puppet/acceptance/temp_file_utils.rb:143\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_full-master/LAYOUT/redhat6-64ma-32a/LDAP_TYPE/default/PLATFORM/default/label/beaker/ruby/puppet/acceptance/lib/puppet/acceptance/temp_file_utils.rb:143\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_full-master/LAYOUT/redhat6-64ma-32a/LDAP_TYPE/default/PLATFORM/default/label/beaker/ruby/puppet/acceptance/tests/ticket_9862_puppet_runs_without_service_user_or_group_present.rb:11\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_full-master/LAYOUT/redhat6-64ma-32a/LDAP_TYPE/default/PLATFORM/default/label/beaker/ruby/puppet/acceptance/tests/ticket_9862_puppet_runs_without_service_user_or_group_present.rb:45\n{code}\n\nLooks like the code references an {{agent}} instead of {{host}}.\n\nSolution should be to fix the bug in the {{stat}} function", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17080", "fixedVersions": ["SERVER 2.1.2"], "id": "17080", "issueType": "Bug", "key": "SERVER-832", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-08-18T11:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet-server (master) CI failure from puppet acceptance test bug", "timeSpent": "PT0S", "updated": "2015-10-14T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] - I have no idea how this stuff works in ci-job-configs but would it be possible to still run Debian 8 as a server OS for these tests but with at least one other OS running with Puppet 3.x on the agent side?", "created": "2015-08-05T16:03:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I'm not sure how easily that could be done", "created": "2015-08-05T16:05:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091]\nYeah that's possible, just add a layout called {{debian8-64mda-centos6-64a}} here: https://github.com/puppetlabs/ci-job-configs/blob/master/enterprise/projects/puppet-server.yaml#L28", "created": "2015-08-05T16:28:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "http://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_puppet-server_integration-system_no-conditional_puppet3-compat_master/87/ all passed, not running debian8-64ma-32-a, is running debian8-64ma-centos6-64a.", "created": "2015-08-06T16:03:00.000000"}], "components": [], "created": "2015-08-05T15:28:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f012aa5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyojhz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "causing acceptance tests to fail, small fix"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_207629_*|*_10007_*:*_1_*:*_84336468_*|*_3_*:*_2_*:*_3931571_*|*_5_*:*_1_*:*_36095317923_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3403"}], "description": "http://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_puppet-server_integration-system_no-conditional_puppet3-compat_master/85/LAYOUT=debian8-64ma-32a,LDAP_TYPE=default,PLATFORM=default,label=beaker/ failed with\n\n{code}\nReading state information...\n\tE: Version '3.8.1-1puppetlabs1' for 'puppet-common' was not found>\n{code}\n\nThis is because we did not produce packages of Puppet 3.8.1 for Debian 8. This is the first time we have seen this failure because https://github.com/puppetlabs/ci-job-configs/pull/404 (which expands the test matrix in ci-job-configs) was recently merged.\n\nI think that we need to add debian 8 to be excluded in the {{puppet3_compat_combination_filter}} (https://github.com/puppetlabs/ci-job-configs/blob/45827cd56206e4c7ae3c9cd0c0e24e354d4a0759/enterprise/projects/puppet-server.yaml#L40)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17079", "fixedVersions": [], "id": "17079", "issueType": "Bug", "key": "SERVER-831", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-08-06T16:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Debian 8 from Puppet 3 compatibility tests", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "I can't find references to ubuntu 14.10 utopic in ci-job-configs for the testing portion, but it would be great to get another set of eyes on this", "created": "2015-09-16T11:15:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "https://github.com/puppetlabs/ci-job-configs/pull/590", "created": "2015-09-23T12:39:00.000000"}], "components": [], "created": "2015-08-05T11:01:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dfec7b8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1fiv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Quality Engineering"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9559601_*|*_10007_*:*_1_*:*_83360705_*|*_5_*:*_1_*:*_31877033139_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4229918269"}], "description": "This needs to happen before September 9th.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15591", "fixedVersions": ["SERVER 2.y"], "id": "15591", "issueType": "Task", "key": "SERVER-830", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Fixed", "resolutionDate": "2015-09-24T11:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Ubuntu 14.10 from build targets in jenkins", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "This should happen soon. Utopic should be removed from https://github.com/puppetlabs/ci-job-configs/blob/master/enterprise/projects/puppet-server.yaml#L38", "created": "2015-09-16T11:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], I see this is assigned to the \"Quality Engineering\" scrum team.  Is someone in QE - [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241]? - planning on taking care of this?", "created": "2015-09-16T12:07:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "I believe a dev has taken care of this work in the past, though I'm not positive", "created": "2015-09-16T12:20:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "We certainly welcome PRs of the \"change the platform list\" nature! We prefer QENG tickets if the work falls on us (I think that's how they end up on our sprint board).\n\nI was unaware of this ticket until being pinged.", "created": "2015-09-16T13:09:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Because this work is going to happen a lot, I really want define exactly what's needed here. If this ticket wasn't sufficient, could you help me out and respond to the email I sent on Sept. 8th, titled \"AIO Pipeline Addition Process (server-side)\" to make sure we have all the steps outlined for new platforms? This hopefully also includes who is responsible for the work.", "created": "2015-09-16T13:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] - did we decide who is supposed to own / drive these kinds of tickets from this point on - RE, QE, or our dev team?\n\nI agree with [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] that if these are intended to be done by QE that it would be better to file these as QENG tickets rather than as a SERVER ticket assigned to the \"Quality Engineering\" scrum team.", "created": "2015-09-16T13:14:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] I do not think there is anything constructive I can add to that email thread.\n\nI believe this ticket is the right thing to do, but the scrum team should be set to either the puppet-server Jade or Emerald teams.\n\nI would also be interested in modifying your ticket generator to include a URL pointing to the ci-job-configs project file where changes like this can be made. Is that possible to do on a per-project/team basis? (Okay, maybe this comment does belong in the thread)", "created": "2015-09-16T13:22:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Just saw your last comment.\n\nIn the email referenced by [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] it was proposed that the dev team be responsible for this kind of change. Here is a link to the thread:\nhttps://groups.google.com/a/puppetlabs.com/forum/#!topic/dev-team/JddRvsh2RHs", "created": "2015-09-16T13:24:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] I haven't created a script for the server side tickets yet, but yeah, I think we should be able to do that.", "created": "2015-09-16T14:02:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "Sorry, I was working on getting utopic out everywhere and did this. https://github.com/puppetlabs/ci-job-configs/pull/590", "created": "2015-09-23T12:41:00.000000"}], "components": [], "created": "2015-08-05T11:00:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7023fbc0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1fi7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Quality Engineering"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9569115_*|*_10007_*:*_1_*:*_83221757_*|*_5_*:*_1_*:*_31877038978_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4230055235"}], "description": "This needs to happen before September 9th.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14995", "fixedVersions": ["SERVER 2.y"], "id": "14995", "issueType": "Task", "key": "SERVER-829", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Fixed", "resolutionDate": "2015-09-24T11:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Ubuntu 14.10 from ci-job-configs repo", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-08-05T10:42:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3bbf6973"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyojf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1489122_*|*_3_*:*_1_*:*_503496573_*|*_5_*:*_1_*:*_35502705223_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_193319910"}], "description": "This ticket requests that we move OSS Puppet Server from two branches...\n\n* master - for 2.x development, tracking puppet 4+\n* stable - for 1.x development, tracking puppet 3.x\n\n... to three branches ...\n\n* master - for 2.x development, tracking puppet 4.3+\n* stable - for 2.x development, tracking puppet 4.2.z\n* 1.x - for 1.x development\n\nThe basic rationale for this is that we want to have a 1-1 correspondence between the branches of core Ruby Puppet, OSS Puppet Server, and PE Puppet Server.\n\nThis ticket will involve:\n\n* \"Moving\" the current stable branch to 1.x.\n\n* Creating a new stable branch from the current master branch.  The HEAD of that new stable branch may be based on the current HEAD of the master branch or may need to be backed up to a slightly earlier commit, depending upon whether or not https://github.com/puppetlabs/puppet-server/pull/655 or https://github.com/puppetlabs/puppet-server/pull/651 has already been merged to the master branch before this activity is started.  Note that those two PRs have turmoil that is only applicable per changes coming for Puppet 4.3.\n\n* Fixing up the \"dependencies\" in {{resources/ext/ezbake.conf}} to:\n** cap the maximum supported \"puppet-agent\" for the stable branch at less than 1.3.0 (since the supported range for \"puppet 4.2.z\" compatibility is currently planned to be \"1.2.z\").\n** bind the minimum supported \"puppet-agent\" for the master branch to be 1.3.0 or above.  (Although maybe we should hold off on this and file a ticket to handle this later on since there aren't any puppet-agent 1.3.z packages yet, AFAIK).\n\n* Adjusting ci-job-configs for OSS puppet-server to cover the changes to the three branches.\n\n* Updating the Branching Strategy document, https://github.com/puppetlabs/puppet-server/wiki/Branching-Strategy, to reflect these changes.\n\n--\n\nThis ticket will also involve some coordination related to any PRs currently in flight and with the DOCS team, [~accountid:623c08e1562ab90069f8aed4], to ensure that the docs repo is updated with references to the new branches - for publishing to pl.com.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17312", "fixedVersions": [], "id": "17312", "issueType": "Task", "key": "SERVER-828", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-08-13T12:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move to 3 OSS Branches, Tracking Core Puppet", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-08-03T12:18:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@be0ea3e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1dg7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_272893_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16178", "fixedVersions": [], "id": "16178", "issueType": "Sub-task", "key": "SERVER-827", "labels": [], "originalEstimate": "PT0S", "parent": "16616", "parentSummary": "Move the puppet-server specific tests out of the qatests github repo", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2015-08-03T12:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Discuss how to tag tests using beaker's new tagging feature", "timeSpent": "PT0S", "updated": "2015-08-03T12:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing this out", "created": "2015-10-05T11:51:00.000000"}], "components": [], "created": "2015-08-03T12:06:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b4a37ff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1df3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5442265265_*|*_6_*:*_1_*:*_0"}], "description": "Tests such as the clojure unit tests and other puppet server acceptance tests run as a single large job; Jenkins views these as a single pass or fail.\n\nThe puppet server tests in the QATests repository selected the opposite strategy: Use many jenkins jobs so that when there is a failure it is easier to find.\n\nDo we need to convert to the \"one large monolithic job\" strategy for the Jenkins job that runs puppet -server acceptance, and keep the incoming tests within 1 large monolithic job?\n\nIf so, do we need to examine the junit output of beaker in general?  I do not want a situation where we have to parse megabytes of a jenkins log output from a monolithic job to find an individual test that fails.  When a test fails, some of the work of locating the failure ought to fall on Jenkins in the form of small, manageable jobs.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17310", "fixedVersions": [], "id": "17310", "issueType": "Sub-task", "key": "SERVER-826", "labels": [], "originalEstimate": "PT0S", "parent": "16616", "parentSummary": "Move the puppet-server specific tests out of the qatests github repo", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2015-10-05T11:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Resolve the problem of Jenkins reporting of a single big job vs smaller jobs.", "timeSpent": "PT0S", "updated": "2015-10-05T12:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-08-03T12:03:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@232f03bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1den:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26972647219_*|*_6_*:*_1_*:*_0"}], "description": "Do we want to keep the git history of the tests that we are moving over?  If so, what method shall we use to preserve the git history?\n\nElse, close this ticket as \"Done.\"", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16662", "fixedVersions": [], "id": "16662", "issueType": "Sub-task", "key": "SERVER-825", "labels": [], "originalEstimate": "PT0S", "parent": "16616", "parentSummary": "Move the puppet-server specific tests out of the qatests github repo", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-06-10T16:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Discuss git history;", "timeSpent": "PT0S", "updated": "2016-06-10T16:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "!http://img4.wikia.nocookie.net/__cb20080712043322/muppet/images/3/3c/TellyMonster.jpg!", "created": "2015-08-03T12:08:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "!https://upload.wikimedia.org/wikipedia/commons/9/90/Telly_Savalas_Kojak_1973.JPG!", "created": "2015-08-03T12:09:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We generally don't use test rail because we are short staffed, and because the overhead of using test rail isn't worth the results on the puppet server team.", "created": "2016-06-10T16:26:00.000000"}], "components": [], "created": "2015-08-03T12:02:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e8cbb6c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1def:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26972625586_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16406", "fixedVersions": [], "id": "16406", "issueType": "Sub-task", "key": "SERVER-824", "labels": [], "originalEstimate": "PT0S", "parent": "16616", "parentSummary": "Move the puppet-server specific tests out of the qatests github repo", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-06-10T16:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Integrate Telly", "timeSpent": "PT0S", "updated": "2016-06-10T16:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-08-03T12:01:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@669ceaaa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1ddz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26972732437_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15855", "fixedVersions": [], "id": "15855", "issueType": "Sub-task", "key": "SERVER-823", "labels": [], "originalEstimate": "PT0S", "parent": "16616", "parentSummary": "Move the puppet-server specific tests out of the qatests github repo", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-06-10T16:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use proper teardown on all the tests / always clean up", "timeSpent": "PT0S", "updated": "2016-06-10T16:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-08-03T12:00:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7648b389"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1ddr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26972833802_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15586", "fixedVersions": [], "id": "15586", "issueType": "Sub-task", "key": "SERVER-822", "labels": [], "originalEstimate": "PT0S", "parent": "16616", "parentSummary": "Move the puppet-server specific tests out of the qatests github repo", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-06-10T16:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Identify the Repos and directories (targets) for the move", "timeSpent": "PT0S", "updated": "2016-06-10T16:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e0ff1820-9e7a-4a0b-9edf-403c9d0c6227", "body": "I think this might need a scope change category and reason.", "created": "2015-08-05T12:59:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "CI hasn't actually passed since this was merged, so not sure it really should've been moved to done? I think that this may have fixed some failures, but caused some others. Don't really want to move it back, but just for future reference, we probably shouldn't move things to one until the relevant tests have all passed (in this case http://kahless.delivery.puppetlabs.net/job/enterprise_puppet-server_integration-system_no-conditional_full-master/).", "created": "2015-08-06T16:23:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "You're totally right, I'm confused as to why I moved it over now. I thought I saw a build pass in jenkins, but I imagine I saw stable build and misread it.", "created": "2015-08-06T17:13:00.000000"}], "components": [], "created": "2015-07-31T10:26:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c2d4636"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1cjz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "It came up mid-sprint and was causing CI failures."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_254989169_*|*_1_*:*_1_*:*_38385_*|*_10007_*:*_1_*:*_2158431_*|*_3_*:*_1_*:*_15688478_*|*_5_*:*_1_*:*_6232359279_*|*_6_*:*_1_*:*_0"}], "description": "A known issue with facter caused a [CI failure|http://kahless.delivery.puppetlabs.net/job/enterprise_puppet-server_integration-system_no-conditional_full-master/83/LAYOUT=fedora21-64ma-32a,LDAP_TYPE=default,PLATFORM=default,label=beaker/console]. Bumping puppet-agent dependency in puppet-server from 1.2.1 to 1.2.2 should fix the issue\n\n{code}\n\nJul 31 05:24:32 spsyfsc8muin39v java[26839]: terminate called after throwing an instance of 'facter::execution::execution_exception'\nJul 31 05:24:32 spsyfsc8muin39v java[26839]: what():  failed to fork child process.\nJul 31 05:24:45 spsyfsc8muin39v systemd[1]: puppetserver.service: main process exited, code=killed, status=6/ABRT\nJul 31 05:24:46 spsyfsc8muin39v systemd[1]: puppetserver.service: control process exited, code=exited status=1\nJul 31 05:24:46 spsyfsc8muin39v systemd[1]: Failed to start puppetserver Service.\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15854", "fixedVersions": ["SERVER 2.1.2"], "id": "15854", "issueType": "Bug", "key": "SERVER-820", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-08-03T14:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CI failure for puppet-server due to old version of facter", "timeSpent": "PT0S", "updated": "2015-10-14T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2015-07-29T11:19:00.000000", "creator": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@373ed939"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Server: OS work to support Ankeny"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyor9r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7088991751_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17078", "fixedVersions": [], "id": "17078", "issueType": "Epic", "key": "SERVER-817", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "resolution": "Done", "resolutionDate": "2015-10-19T12:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server: OS work to support Ankeny", "timeSpent": "PT0S", "updated": "2015-11-10T17:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [{"attacher": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:c4e41ecb-e3a8-4166-8302-a93246de41a5", "created": "2015-07-28T13:00:00.000000", "name": "puppet-agent-error.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10722"}, {"attacher": "70121:518ceac5-ae55-496b-a6ca-eefb9a8024fb", "created": "2015-07-30T10:41:00.000000", "name": "puppet.jordanlab.local-bad.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10723"}, {"attacher": "70121:518ceac5-ae55-496b-a6ca-eefb9a8024fb", "created": "2015-07-30T10:41:00.000000", "name": "puppet.jordanlab.local-good.pem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10644"}, {"attacher": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:c4e41ecb-e3a8-4166-8302-a93246de41a5", "created": "2015-07-28T13:01:00.000000", "name": "puppetserver-errorlog.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10643"}, {"attacher": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:c4e41ecb-e3a8-4166-8302-a93246de41a5", "created": "2015-07-28T13:06:00.000000", "name": "signed-certificates.diff", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10564"}], "comments": [{"author": "70121:518ceac5-ae55-496b-a6ca-eefb9a8024fb", "body": "I can confirm the same issue working in a separate test environment.\nExternal CA also worked with openssl generated CA and cert/key but not with FreeIPA 4.x provisioned certs/CA.", "created": "2015-07-28T13:16:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Thanks for the bug reports.  At first glance, your theory that the \"X509v3 Extended Key Usage\" extension is not supported sounds likely, but we'll have to dig into this a bit further to figure it out for sure.\n\n[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] might know more about the cause of this error.", "created": "2015-07-29T17:35:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Last night I hacked up a quick and dirty repro case and found that it's actually a problem parsing the General Names extension value, which shows up in a number of places in X.509. The ASN.1 parsing code in ssl-utils doesn't currently account for some of different forms this extension can take. Should be a fairly easy fix which I'll volunteer for. \n", "created": "2015-07-30T10:20:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] - Thanks for looking into that!  But ... I'm little confused ... I don't see the Subject in the signed-certificates.diff ... so I'm not quite connecting the dots on how that could be the cause of the error Former user reported.\n\nFormer user or [~accountid:70121:518ceac5-ae55-496b-a6ca-eefb9a8024fb] - Is there a chance that either of you could provide good/bad certificates that we could use to try to reproduce this?", "created": "2015-07-30T10:29:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}But ... I'm little confused ... I don't see the Subject in the signed-certificates.diff ... so I'm not quite connecting the dots on how that could be the cause of the error herlo reported.{quote}\n\nThe {{puppetserver-errorlog.txt}} shows that the error happens on a line of code that is executed when the General Names extension is being parsed - https://github.com/puppetlabs/jvm-ssl-utils/blob/ssl-utils-0.8.0/src/java/com/puppetlabs/ssl_utils/ExtensionsUtils.java#L867.\n\n{noformat}\n2015-07-28 18:10:28,851 ERROR [puppet-server] Puppet java.util.ArrayList cannot be cast to java.lang.String\ncom.puppetlabs.ssl_utils.ExtensionsUtils.generalNamesToMap(com/puppetlabs/ssl_utils/ExtensionsUtils.java:867)\ncom.puppetlabs.ssl_utils.ExtensionsUtils.asn1ObjToObj(com/puppetlabs/ssl_utils/ExtensionsUtils.java:582)\n{noformat}\n\nSo, it seems reasonable that the General Names extension parsing is the source of this problem.  It would still be good to get a sample full blown certificate that we can use to validate that there aren't any other decoding problems in {{jvm-ssl-utils}} - if nothing else, to at least ensure that we are accounting for the format of the General Names extension used in these particular certificates.\n", "created": "2015-07-30T10:41:00.000000"}, {"author": "70121:518ceac5-ae55-496b-a6ca-eefb9a8024fb", "body": "attached the following:\npuppet.jordanlab.local-good.pem - taken from working setup using ipa3\npuppet.jordanlab.local-bad.pem - from broken setup with ipa4", "created": "2015-07-30T10:41:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Oops, yeah I amended my comment to be a little less specific. It's possible that OpenSSL is stringifying two different forms of a General Name in the same way. Having a copy of the bad cert would help quite a bit.", "created": "2015-07-30T10:58:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - \nbq. The puppetserver-errorlog.txt shows that the error happens on a line of code that is executed when the General Names extension is being parsed\n\nOh, right, of course.\n\n[~accountid:70121:518ceac5-ae55-496b-a6ca-eefb9a8024fb] - thank you for providing those .pem files!", "created": "2015-07-30T11:02:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I would place the effort on the shorter side of a 2. I'll pull it in.", "created": "2015-07-31T12:45:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "The PR I just put up fixes the issue presented on this ticket. Stack traces are no longer thrown when encountering unknown forms of X.509 General Name values. ", "created": "2015-08-05T14:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "jvm-ssl-utils PR merged to master at [c827b11|https://github.com/puppetlabs/jvm-ssl-utils/commit/c827b11d242f42619181d069e21dea9d3e7763fd].\n\n[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314], I think before we would mark this ticket as resolved that we should do a jvm-ssl-utils release with that change in it and push through a PR to puppet-server that updates to the new jvm-ssl-utils version.  Could you work on that?", "created": "2015-08-10T12:54:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Sounds good, I'm on it.", "created": "2015-08-10T15:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "puppet-server PR merged to 1.x at [0dc399|https://github.com/puppetlabs/puppet-server/commit/0dc3993082b46eb7f49ad27f783907c85e20e214] and to master at [c91996|https://github.com/puppetlabs/puppet-server/commit/c91996defee5864be1f67e834be60e6360c747b0].", "created": "2015-08-13T15:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "puppet-server 1.x full acceptance test suite passed at http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-stable/92/.  Moving to \"testing\" column.", "created": "2015-08-13T15:52:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Reproduced in 2.1.2.SNAPSHOT.2015.08.08T0209.  \nopenssl.cnf snippet :\nsubjectAltName=@alt_section\n [alt_section]\n otherName=1.3.6.1.4.1.311.20.2.3", "created": "2015-08-21T18:08:00.000000"}], "components": ["Puppet Server"], "created": "2015-07-28T13:08:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:c4e41ecb-e3a8-4166-8302-a93246de41a5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52b673c2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyogxj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Has extra time in sprint for a bug fix"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_81643634_*|*_10007_*:*_1_*:*_694804452_*|*_3_*:*_1_*:*_101476559_*|*_5_*:*_1_*:*_4661839727_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_700621915_*|*_10006_*:*_1_*:*_514304212"}], "description": "It appears that the newer FreeIPA 4.x server provides new fields in the CA signed certificates that cause an interesting error. When running puppet-agent against a puppetserver with these certificates, an error is reported (as shown in attachment puppet-agent-error.txt). This produces a log of some 400+ lines, mostly traceback (as show in attachment puppetserver-errorlog.txt) indicating the error: \n\n2015-07-28 18:10:28,851 ERROR [puppet-server] Puppet java.util.ArrayList cannot be cast to java.lang.String\n\nFurther investigation leads to show that a FreeIPA 3.x CA signed certificate does not incur this issue. To that end, I've included what appears to be the difference between the two signed certificates (attached as signed-certificates.diff).\n\nI'm theorizing that the value 'X509v3 Extended Key Usage' is not accounted for in the puppetserver code.\n\n\n", "environment": "RHEL7.1, using puppetserver 2.x (have tested specifically with the RPMS for 2.0.0 and 2.1.1)\nPuppet 4 (rpm is puppet-agent 1.1.0 and 1.2.2)\nBoth installed following the instructions provided on docs.puppetlabs.com", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16404", "fixedVersions": ["SERVER 1.1.2", "SERVER 2.1.2", "SERVER 2.2.0"], "id": "16404", "issueType": "Bug", "key": "SERVER-816", "labels": ["freeipa", "ipa", "ssl"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:c4e41ecb-e3a8-4166-8302-a93246de41a5", "resolution": "Fixed", "resolutionDate": "2015-08-21T18:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver using FreeIPA 4.x as external CA fails with java.util.ArrayList cannot be cast to java.lang.String", "timeSpent": "PT0S", "updated": "2015-10-15T15:11:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to master at [828aa7|https://github.com/puppetlabs/puppet-server/commit/828aa76ad773b9104a1970a0ceaf3f3364bc2989]", "created": "2015-08-13T15:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "puppet-server master branch tests have been failing for the #25 (full acceptance test suite) for several days now. Those changes have nothing to do with the changes in this PR, though. From the most recent minimal matrix run:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/99/\n\nThe failures there have been captured and are being worked on for PUP-5041.\n\nMoving this to the \"testing\" column.\n\nErik Dasher - I don't really see anything that you can test here since this is basically just some infrastructure for the NC Class Refresh feature that isn't hooked up to anything with external effects to Puppet Server. Might be best to just move this to \"resolved\"?", "created": "2015-08-18T14:00:00.000000"}], "components": [], "created": "2015-07-27T13:02:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68a76009"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyojfj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_425780229_*|*_1_*:*_1_*:*_14205_*|*_10007_*:*_1_*:*_1212283844_*|*_3_*:*_1_*:*_266240095_*|*_5_*:*_1_*:*_8061799274_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_2643727"}], "description": "This ticket would cover the work needed to expose a new method from the JRubyPuppet interface that can be used to enumerate information available in each of the classes found in manifests in a Puppet code environment.  The ticket builds on work in PE-10887 and PE-11122 around enumerating the available manifest paths per environment.  The ticket would involve using this approach to build up an environment hash to pass into the {{Puppet::InfoService.classes_per_environment()}} method and return the result from the call from the new JRubyPuppet method.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16402", "fixedVersions": ["SERVER 2.2.0"], "id": "16402", "issueType": "New Feature", "key": "SERVER-815", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-08-18T14:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement JRubyPuppet getClassInfo method", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "@krw Thank you for the idea.", "created": "2015-07-27T12:40:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "If we discover that there is a difference between the sshd config for RHEL7 vs CentOS7, I'll file a seperate ticket with RE.", "created": "2015-07-27T12:41:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "sshd_config is identical.", "created": "2015-07-27T13:51:00.000000"}], "components": [], "created": "2015-07-27T12:39:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26e1a567"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xhz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_168034322_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_16181885052"}], "description": "Beaker tests against CentOS 7 seems slow, flakey and inconsistent when measured against RHEL 7.  Someone (probably me/[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]) needs to investigate the differences in the standard test images in use by beaker / vmpooler / re.\n\nOne possible line of inquiry relates to the sshd config.  CentOS7 has GSSAPIAuthentication set to yes.  It's possible that this is the difference between the two platforms that makes things appear to run slowly for CentOS 7.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14994", "fixedVersions": [], "id": "14994", "issueType": "Task", "key": "SERVER-814", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-02-01T17:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate differences between RHEL 7 and CentOS 7 image, especially sshd config", "timeSpent": "PT0S", "updated": "2016-02-02T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This is a bug but I think we need to separate the conversation about fixing the environment cache flushing from the conversation about the file sync locking.  Let's discuss the atomicity/locking stuff in another ticket.\n\nFor this ticket, looking at the code, I agree that there's a bug there.  I think the fix is to modify the state atom so that in addition to holding a reference to the {{pool}} (which is a blocking queue), we should also keep a vector of all of the instances that are *supposed* to be in the pool.  Then we should change the implementation of {{pool->vec}} to use that vector instead (we should audit the uses of {{pool->vec}} first, but I suspect that probably everywhere where we use it we're intending to operate on the entire list of instances, not just the ones that happen to be in the pool at the time).\n\nAs far as concurrency issues go w/rt flushing the jruby instances, etc., it seems like we could update the vector in the same {{swap!}} operation that we use to swap out the pool object itself when we flush, and that should be pretty safe?\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] let me know what you think.  If that sounds reasonable I'll take a swing at the fix in the next few days.", "created": "2015-08-04T14:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}As far as concurrency issues go w/rt flushing the jruby instances, etc., it seems like we could update the vector in the same swap! operation that we use to swap out the pool object itself when we flush, and that should be pretty safe?{quote}\n\nAre you thinking that would happen around here - https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.1.1/src/clj/puppetlabs/services/jruby/jruby_puppet_agents.clj#L99?  If I understand that correctly, we currently swap out the pool object before we actually create any of the JRubyPuppet objects to put into the pool.  Are you thinking instead that we would build up all of the new JRubyPuppet objects first and put them in the vector so that the vector has all of them at the time the `reset!` would occur?  I think we mainly want to just avoid having a case where objects might have actually gone into the pool that don't appear in the \"supposed to be in the pool\" vector.  Otherwise, the {{environment-cache}} endpoint couldn't be used to flush those instances.  Although, maybe that isn't too big of a deal if we assume that the window of time where the instances couldn't be flushed is narrow enough that the underlying environment files probably wouldn't have changed in the meantime anyway?\n\nTo avoid the possibility of the \"supposed to be in the pool\" and \"actually added to pool\" objects being out of sync, I kind of like the idea of just having the objects be accessible only from the pool itself - meaning that an {{environment-cache}} flush would have to move to a borrow instead of an iterate.  I keep thinking ahead to a possible time in the future where we might need to be able to scale up or down the number of JRubyPuppet instances dynamically and any race conditions around making multiple updates to state that might be problematic - e.g., updating a vector of instances separately from removing an instance from a pool.  Layering this on borrows, however, could definitely make the {{environment-cache}} flush much slower to complete, though - which I suppose is a big part of why we went with the original design of just having the registry be in Clojure in the first place.\n", "created": "2015-08-04T15:39:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "It doesn't seem like the amount of time it takes for the server to handle a {{DELETE /environment-cache}} request is an important performance benchmark right now.  If there is an option that removes race conditions and/or results in simpler code ... those two things seem much more important to me.", "created": "2015-08-04T15:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Anything that relies on borrowing instances from the pool is *not* going to be simpler, IMO.  In the JRuby flush case we can get away with it because we make the old pool inaccessible to requests, which means that we know we will be able to eventually borrow everything from it.  And we need to borrow them anyway because we actually need isolated access to the JRuby ScriptingContainer.\n\nIn the case of the environment cache flushing the pool is still live and if we try to borrow things from it we will have basically no way of guaranteeing that we'll actually get our hands on each of the instances because we have no idea what order we'll get access to them.  We could do 100 borrows and get instance number 1 all 100 times, or any other permutation based on the current request traffic.  That road would only lead to madness.\n\nAlso, the performance of the environment cache delete is most definitely a meaningful benchmark.  The whole reason for the existence of it is so that when users deploy new code, they hit it, and then after they hit it, they expect subsequent agent runs to see their new code.  It needs to be synchronous.\n\n{quote}Are you thinking that would happen around here - https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.1.1/src/clj/puppetlabs/services/jruby/jruby_puppet_agents.clj#L99? If I understand that correctly, we currently swap out the pool object before we actually create any of the JRubyPuppet objects to put into the pool.{quote}\n\nYes.  And I'm saying we'd also swap out a vector (or some other container object) right there as well.\n\n{quote} Are you thinking instead that we would build up all of the new JRubyPuppet objects first and put them in the vector so that the vector has all of them at the time the `reset!` would occur?{quote}\n\nNo, that would cause way too much downtime when the pool was flushed.\n\n{quote}I think we mainly want to just avoid having a case where objects might have actually gone into the pool that don't appear in the \"supposed to be in the pool\" vector. Otherwise, the environment-cache endpoint couldn't be used to flush those instances. Although, maybe that isn't too big of a deal if we assume that the window of time where the instances couldn't be flushed is narrow enough that the underlying environment files probably wouldn't have changed in the meantime anyway?{quote}\n\nYes, that will be the trickiest part of this.  In the simplest implementation of this, there could be a tiny race condition where the operation that puts a new instance into the pool is not atomic with the operation that puts it into the vector.  If the biggest problem that comes out of that is that, in the rare case where a pool flush / population is in progress at the time when an environment cache flush is requested, some of the instances might not get flushed... that doesn't really seem like a big deal.  Especially since we're talking about brand new instances that shouldn't have any environments cached yet anyway... and since a subsequent request to flush the environment cache after the pool was fully populated would work fine.\n\nOr... we could put the instance into the vector *before* we put it into the pool?\n\nIf we really did decide we had to eliminate that race, then we could either look into coming up with some kind of atomic mechanism for adding the instance to the pool and updating the vector (maybe would involve subclassing the Java Queue class or something), or, we could look into making the environment cache flush operation be executed on the same agent that is responsible for flushing the JRuby pool, so we'd be guaranteed it couldn't be executed until after the flush occurred... but that seems like it'd take us back to the situation where the environment flush request had to be asynchronous and thus a user wouldn't have a good way of knowing when to expect their new code changes to show up.\n\nOverall I don't think the race between adding something to the vector vs. the pool is a big deal.  And also it seems like putting an instance to the vector before putting it into the pool would eliminate most of the concern there.  So my vote would be to just move forward on that.\n\nMy second choice would probably be to subclass the Java Queue such that it also had a member variable that was an ArrayList or something, and add a 'register' method that would add the object to that ArrayList *and* call 'add' on the superclass, possibly in a synchronized block.  Then the queue itself could have a 'getRegisteredInstances' method that we could use to access all of the instances.\n", "created": "2015-08-05T04:50:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. Also, the performance of the environment cache delete is most definitely a meaningful benchmark. The whole reason for the existence of it is so that when users deploy new code, they hit it, and then after they hit it, they expect subsequent agent runs to see their new code. It needs to be synchronous.\n\nI agree that it needs to be synchronous.  The point I was trying to make about performance is that I don't think the we need to try to optimize the amount of time it takes to return a response for that endpoint.\n\nbq. we could look into making the environment cache flush operation be executed on the same agent that is responsible for flushing the JRuby pool, so we'd be guaranteed it couldn't be executed until after the flush occurred... but that seems like it'd take us back to the situation where the environment flush request had to be asynchronous and thus a user wouldn't have a good way of knowing when to expect their new code changes to show up.\n\nCould we could use the {{add-watch}} + {{promise}} solution that we're discussing in the other thread to make this synchronous?  Again, I find that solution distasteful since it consumes two threads, but ... race conditions are yucky too.\n\nbq. Overall I don't think the race between adding something to the vector vs. the pool is a big deal. And also it seems like putting an instance to the vector before putting it into the pool would eliminate most of the concern there. So my vote would be to just move forward on that.\n\nI'm fine with this.  I'm also not worried about this race condition.  I could also see a good argument for utilizing an agent.\n\nbq. My second choice would probably be to subclass the Java Queue\n\nI don't like this option, but I don't have a great reason why ... it just feels like messy code.  However, I understand the reasoning behind it, and won't put up more of a fight than to simply say \"yuck\".", "created": "2015-08-05T18:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}I agree that it needs to be synchronous. The point I was trying to make about performance is that I don't think the we need to try to optimize the amount of time it takes to return a response for that endpoint.{quote}\n\nAh, sorry, I misunderstood.  In that case I agree with you to a point", "created": "2015-08-06T02:48:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Would it be possible to implement that sub-class in Clojure instead of Java.  i.e.: use some inter-op voodoo to extend the class and {{locking}} instead of {{synchronized}}?  I'm not sure if that's actually preferable, although I *am* sure that I like maintaining Clojure code more than Java.  Just a thought.", "created": "2015-08-06T11:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}In the case of the environment cache flushing the pool is still live and if we try to borrow things from it we will have basically no way of guaranteeing that we'll actually get our hands on each of the instances because we have no idea what order we'll get access to them. We could do 100 borrows and get instance number 1 all 100 times, or any other permutation based on the current request traffic. That road would only lead to madness.{quote}\n\nI agree.  I'd been thinking we'd need to borrow *all* of them at once so we knew that we'd be able to mark all of them.  But that certainly exacerbates the timing problem - and also would cause bottlenecks on incoming request throughput during the period where the flush is happening - which might make this approach unworkable.  RE: other comments from earlier, I also agree that whatever we do that the {{environment-cache}} call needs to be synchronous - i.e., that on return from the call that the caller should expect that the very next request that the server handles will have its environment flushed of whatever had been cached prior to the {{environment-cache}} call being made.  I'm okay giving up on this idea for now.\n\n{quote}Or... we could put the instance into the vector before we put it into the pool?{quote}\n\nSeems like that would be enough to mitigate the concern that I had.  I don't see any problems at all with marking environments as expired for an instance that hasn't quite made it into the pool yet.\n\n{quote}Re: subclassing the Java queue... But now that I've slept on it, I actually think that this option may have crept up to the top of my preference list.{quote}\n\nHonestly, of the options presented here, I think this would be my favorite as well since it would encapsulate everything about the pool instances to the pool object itself.  I'm also okay with keeping the vector outside of the pool object as well if we add the pool objects to the vector before adding them into the queue if you want to go that way.  If we do go the route of subclassing the Queue class and add in the synchronized block that wraps the add to internal vector and drop into the pool operations, I'd probably try to do that subclass as pure Java.  Mixing Clojure and Java concurrency models makes me nervous, but maybe I'm just being too ignorant.\n", "created": "2015-08-06T15:33:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I wasn't suggesting a different concurrency model.  Clojure's {{locking}} macro is essentially the same as Java's {{synchronized}}.  I'm not married to the idea - if it's harder to grok, I don't see any reason to not just do it in Java.", "created": "2015-08-06T16:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK.  Between this thread and the e-mail thread where this is being discussed, my current inclination is to just take a swing at the Java subclass.  My guess is that'll it'll be about 20 lines of Java code and about an hour or two of work, total, including the integration into the Clojure code.\n\nI'll probably pick this up early next week unless anyone objects to that path, so, speak now.", "created": "2015-08-07T03:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This appears to have passed through acceptance tests here:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-1.x/8/", "created": "2015-08-17T03:09:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a]: this is a bug fix.  It's not entirely free of risk since it required me to make a change to the structure that we use to track the JRuby instances, but the change is additive and I believe it's low risk.  Would be happy to discuss further if you need any additional info!", "created": "2015-08-17T03:10:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I've looked over the discussion above but not the commit. AFAICT, the potential for data loss or downtime is minimal, so the risk is likewise minimal. I'll resolve this based on that assessment. If I'm incorrect, re-open it and we can discuss the risk level in more detail.", "created": "2015-08-18T10:14:00.000000"}], "components": [], "created": "2015-07-23T10:09:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33715984"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-817"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Chance for data loss or downtime is minimal"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1g27:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "bandwidth, bug, blocking other work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_303794795_*|*_1_*:*_1_*:*_522517518_*|*_10007_*:*_1_*:*_196776828_*|*_5_*:*_1_*:*_4950611463_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_112036858_*|*_10006_*:*_1_*:*_1111721173"}], "description": "I found that if I had any active requests using JRubyPuppet instances in Puppet Server that after calling the puppet-server environment-cache DELETE API, http://docs.puppetlabs.com/puppetserver/2.1/admin-api/v1/environment-cache.html, further requests made to the server that use any of those JRubyPuppet instances would still be using cached environment data.  In the worst case, all JRubyPuppet instances might be checked out when an {{environment-cache}} call comes in - maybe doing heavy catalog compilations - and the {{environment-cache}} call essentially ends up having no effect.\n\nI believe this is due to how the cache expiration fulfillment works:\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-2.1.1/src/clj/puppetlabs/services/jruby/jruby_puppet_core.clj#L157-L172\n\nThese functions iterate over the current instances in the pool and mark all environments in each instance as \"expired\".  While a request is using a JRubyPuppet instance, that instance is not available in the pool.  Because of this, the in-use instance would not have its environments marked as \"expired\".  There's no concept of \"queueing\" up an expiration attempt for after the pool instance is returned to the pool, so effectively those instances would never be set to expired.  (They could expire later based on the TTL set for the environment but the {{environment-cache}} call would have been a no-op for those instances).\n\nI suppose that setting environments to \"expired\" on an in-use JRubyPuppet instance could be a dangerous thing to do anyway.  For example, if an \"old\" environment were used for a portion of a request but the \"new\" one replacing it were to kick in mid-request, the request could end up using mixed content and produce a bad result.  Although if the current Ruby Puppet code is susceptible to this scenario, the TTL-based expiration policy might lead to the same problem.\n\nNot sure what the best solution for this is yet.\n\nWe could keep a handle to any checked-out instances in the pool-context somewhere so that a cache invalidate operation would be able to access it.  This would probably introduce some significant new concurrency problems when considering other features like the {{jruby-pool}} flush.\n\nMaybe a better approach would be to make the fulfillment of the {{environment-cache}} flush more asynchronous like the {{jruby-pool}} flush is - maybe even handled from the same agent that the {{jruby-pool}} flush is - such that the {{environment-cache}} could \"check out\" every available instance from the pool (blocking for instances to become available when checked out by other requests), mark all of the environments on the instances as expired, and then returning the instances to the pool.  This approach would definitely make the fulfillment of the request heavier weight and the asynchronous nature of the action taking effect might be harder for callers to reconcile.  This would seem to help, though, with ensuring that all instances do actually end up having their environments expired and would avoid imposing any expirations mid-flight on a request.", "epicLinkSummary": "Puppet Server: OS work to support Ankeny", "estimate": "PT0S", "externalId": "15582", "fixedVersions": ["SERVER 1.1.2", "SERVER 2.1.2", "SERVER 2.2.0"], "id": "15582", "issueType": "Bug", "key": "SERVER-813", "labels": [], "originalEstimate": "PT0S", "parent": "17078", "parentSummary": "Puppet Server: OS work to support Ankeny", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-08-18T10:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "environment-cache flush doesn't affect JRubyPuppet instances in use", "timeSpent": "PT0S", "updated": "2015-11-16T22:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:7edde36a-845c-4e08-9172-c7b2f0265ea1] Ping, this is the pre-docs ticket we talked about at the end of the Puppet Server Emerald team sprint planning meeting today.", "created": "2015-07-22T18:04:00.000000"}, {"author": "557058:7edde36a-845c-4e08-9172-c7b2f0265ea1", "body": "Thanks [~accountid:623c12b6ee1b5a0070293582]", "created": "2015-07-23T08:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server master at [8501de|https://github.com/puppetlabs/puppet-server/commit/8501de5fb29cb1f474593e03388b2e25e1fa40e1].", "created": "2015-10-02T13:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Since this is just documentation, don't think there's anything for QA to functionally review here.  So, closing this one out.  /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2015-10-02T13:02:00.000000"}], "components": ["DOCS"], "created": "2015-07-22T18:03:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68134de1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1n8n:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Carryover work started from prior sprint.  Needed to get this done for the upcoming OSS 2.2.0 release."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_581477723_*|*_10007_*:*_1_*:*_129275626_*|*_3_*:*_1_*:*_99731_*|*_5_*:*_1_*:*_31181170365_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5491895887"}], "description": "This ticket captures the pre-docs documentation work necessary for the authorization changes as part of the SERVER-111 epic.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15853", "fixedVersions": ["SERVER 2.2.0"], "id": "15853", "issueType": "Task", "key": "SERVER-812", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-10-02T13:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pre-docs for authorization changes", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-07-21T22:53:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@288d17bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyolcn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Cleanup, avoid future merge conflicts"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_24044482_*|*_1_*:*_1_*:*_74148_*|*_10007_*:*_1_*:*_212923085_*|*_3_*:*_1_*:*_657025_*|*_5_*:*_1_*:*_7086717167_*|*_6_*:*_1_*:*_0"}], "description": "The request-handler service for handling requests via JRuby is getting a bit messy, and there are multiple efforts to add PE extensions to it that would make it even moreso.  We should port the code over to use more of a ring-middleware style of function composition so that it is easier for consumers to add additional behavior without macros or too much copy/pasting of code.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17077", "fixedVersions": ["SERVER 1.1.2", "SERVER 2.1.2", "SERVER 2.2.0"], "id": "17077", "issueType": "Improvement", "key": "SERVER-811", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-07-24T16:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Port request-handler service to \"middleware\" function composition style", "timeSpent": "PT0S", "updated": "2015-10-15T15:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This has been overtaken by events.", "created": "2016-08-04T16:15:00.000000"}], "components": [], "created": "2015-07-21T18:09:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4fe93003"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr87:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2389263_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_32822801899"}], "description": "We need the top-level entry point script that does it all.  This is the script that will parse the root JSON file then execute the sub-scripts corresponding to each step (\"install\", \"simulate\", etc).  This script will then be called by the [JJB Jenkins job|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/jenkins-jobs/run_gatling_scenario.yml].\n\nThe old implementation of this is here: [jenkins-integration_old/bin/perf|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration_old/bin/perf]\n\nThe new one won't be as big since a lot of the behavior has been extracted into individual beaker files here: [jenkins-integration/beaker/install/|https://github.com/puppetlabs/gatling-puppet-load-test/tree/master/jenkins-integration/beaker/install].\n\nh4. Need\n\nOur first implementation of this script probably only needs to support the following steps:\n* install: set proper environment variables and call [foss_install.sh|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/scripts/foss_install.sh] or [pe_install.sh|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/scripts/pe_install.sh]\n* simulate: set proper environment variables call script from SERVER-809\n\nh4. Don't Need\n\nThe following probably isn't necessary for our first milestone:\n* VM provisioning (\"cobbler-provision\" in the old implementation): Jenkins will provide slaves, and devs will use Fusion or VM pooler\n* uninstall: We don't need to have a multi-version Puppet scenario, so uninstalling won't be required. This might never be required if re-provisioning the whole VM is quick & easy enough.\n* Post-processing the Gatling results: For now it'll suffice to just use the standard Gatling results and their graph reports\n\nh4. Unknowns / Risks\n\nThere's a lot of code in {{perf}} that we haven't addressed, and I'm not sure whether we'll need to in order to hit our first milestone.\n\nh6. SSL\n\nSpecifically, all the crypto/SSL code:\n* [perf#L66-L103|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration_old/bin/perf#L66-L103]\n* [perf#L121-L178|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration_old/bin/perf#L121-L178]\n\nIf I remember correctly, we didn't write any of this when we first wrote gatling-puppet-load-test - it was added quite a while later by other developers. That leads me to believe it's not necessary for our initial use cases, and might only be there for more advanced scenarios?\n\nEither way, there might some SSL-related work that is discovered during this ticket.\n\nh6. Beaker Hosts Config File\n\nWe might need to automate the generation of the Beaker hosts config YAML file, perhaps using the {{sqa-utils}} gem and it's {{genconfig2}} API.\n\nSo far, we've just been using a hand-generated one while we execute the lower-level scripts directly. This is not how things will work in CI, and the old {{perf}} script had a hardcoded version of this here: [perf#L194-L233|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration_old/bin/perf#L194-L233].\n\nThis probably won't require too much effort, but it's not yet clear to me what we might run into when we try using {{genconfig2}}.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17308", "fixedVersions": ["None"], "id": "17308", "issueType": "Task", "key": "SERVER-810", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Fix", "resolutionDate": "2016-08-04T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Write entry-point script", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [], "components": [], "created": "2015-07-21T17:26:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@107f5cdb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyojgv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4954213_*|*_10007_*:*_1_*:*_678666458_*|*_5_*:*_1_*:*_36190996455_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_598129813"}], "description": "We need a script (probably mix of shell & beaker) that calls into sbt to run the simulation.\nCurrently we have this buried in the JJB jenkins job here: [jenkins-integration/jenkins-jobs/run_gatling_scenario.yml|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration/jenkins-jobs/run_gatling_scenario.yml].\n\nThis script can then be called directly during development, and during production it will be called for the \"simulate\" step by a higher-level script (which in turn is called by Jenkins during production).\n\nOur old code around this is here:\n* [jenkins-integration_old/scripts/run_sbt.sh|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration_old/scripts/run_sbt.sh] which calls...\n* [jenkins-integration_old/beaker/simulate/run_sbt.rb|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration_old/beaker/simulate/run_sbt.rb] which calls...\n* [jenkins-integration_old/scripts/sbt.sh|https://github.com/puppetlabs/gatling-puppet-load-test/blob/master/jenkins-integration_old/scripts/sbt.sh] to actually launch Gatling.\n\nNot much has changed around this code so the new solution might look very similar to the old one.\n\nThere might not be much work involved in this ticket really.\n\n----\nh4. Why?\n\nWe need this behavior in a shell script rather than a Jenkins job because we're going to need to write a higher-level bash/ruby script that first calls the setup scripts and then the sbt/gatling script.\n\nThe Jenkins job will then call that higher-level bash/ruby script, rather than the lower-level run-sbt script.  We won't have Jenkins jobs for the lower-level phases.\n", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16400", "fixedVersions": ["None"], "id": "16400", "issueType": "Task", "key": "SERVER-809", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-08-05T13:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Launch sbt from shell/beaker script(s)", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "attachments": [], "comments": [{"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] should this move over to the SERVER project?", "created": "2015-07-29T19:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920], yeah, based on the description, it does sound more appropriate for the SERVER project.  Moved to SERVER-819.", "created": "2015-07-30T13:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I have seen the {{WritePendingException}} messages in the puppetserver.log files from time to time.  If I recall correctly, I had only been able to reproduce those in cases where it took the server so long to provide a response to a web request that the original client had timed out and already torn down its connection to the server.  In those cases, I had commonly been performing a simulation in which the amount of load coming into the server was too high for what the server was configured to reasonably handle.\n\nThere was a ticket related to that which had been filed to the Jetty project - https://bugs.eclipse.org/bugs/show_bug.cgi?id=432901.  That ticket had apparently been fixed back in the Jetty 9.1.4 release, though, and we're running with 9.2.10 in the most recent Puppet Server releases, including 2.1.1.\n\nIt would be interesting in cases where this is still reproducible to see if the requests which lead to this message appearing in the log correspond to the request timing out / being terminated from the client.  In the case above, this appears to be for an agent making a catalog request, likely during an agent run.\n\nIf you haven't done so already, you might also take a look at http://docs.puppetlabs.com/puppetserver/2.1/tuning_guide.html.", "created": "2015-07-30T13:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc] - Do you have any further information which could help us reproduce this issue here?  I understand that this may be difficult to do based on the nature of the problem.  Also, under the theory that this may be related to the amount of agent load coming into the server, does any of the information in the tuning_guide.html mentioned above help in reducing / eliminating the occurrences of this problem?", "created": "2015-08-05T12:15:00.000000"}, {"author": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "body": "I'd love to be able to say that I had any sort of reproduction steps here, but I can't really come up with any.\n\nLoad on my puppetmasters is (oddly) low, I have a couple thousand machines pointing at 3 puppet masters, and the load is currently below 1.0.  TBH, I would expect it to be a lot higher...\n\nThe information in the tuning guide was not very helpful.  I had looked at that before, I currently have 30 jruby instances and a 16GB JVM heap size.\n\nI could see this being relating to load/timeouts, my puppet clients take an awfully long time to run, but I have not been able to determine what's causing that.  If I run with --debug, I do notice long pauses whenever I get messages like 'Using cached connection for'.  Once the client actually has the catalog, it seems to go pretty quickly.\n\nI have noticed that this exception sometimes corresponds to this other one:\n\n{noformat}\n2015-08-05 16:26:52,442 WARN  [o.e.j.s.HttpChannel] /production/catalog/xxx\njava.lang.IllegalStateException: org.eclipse.jetty.util.SharedBlockingCallback$BlockerTimeoutException\n        at org.eclipse.jetty.util.SharedBlockingCallback$Blocker.failed(SharedBlockingCallback.java:184) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.io.AbstractConnection.failedCallback(AbstractConnection.java:115) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpConnection.access$1000(HttpConnection.java:48) [puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpConnection$SendCallback.onCompleteFailure(HttpConnection.java:740) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.util.IteratingCallback.failed(IteratingCallback.java:422) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.io.WriteFlusher$PendingState.fail(WriteFlusher.java:261) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.io.WriteFlusher.onFail(WriteFlusher.java:464) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.io.WriteFlusher.onClose(WriteFlusher.java:482) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.io.AbstractEndPoint.onClose(AbstractEndPoint.java:109) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.io.AbstractEndPoint.close(AbstractEndPoint.java:116) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(SslConnection.java:897) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpConnection.abort(HttpConnection.java:758) [puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpChannel.abort(HttpChannel.java:829) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpConnection$HttpChannelOverHttp.abort(HttpConnection.java:582) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpOutput.close(HttpOutput.java:171) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpWriter.close(HttpWriter.java:49) ~[puppet-server-release.jar:na]\n        at java.io.PrintWriter.close(PrintWriter.java:339) ~[na:1.8.0_51]\n        at ring.util.servlet$set_body.invoke(servlet.clj:86) ~[na:na]\n        at ring.util.servlet$update_servlet_response.invoke(servlet.clj:112) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__8410.invoke(jetty9_core.clj:410) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source) ~[na:na]\n        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1129) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1065) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:159) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.Server.handle(Server.java:497) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [puppet-server-release.jar:na]\n        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [puppet-server-release.jar:na]\n        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [puppet-server-release.jar:na]\n        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [puppet-server-release.jar:na]\n        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_51]\nCaused by: org.eclipse.jetty.util.SharedBlockingCallback$BlockerTimeoutException: null\n        at org.eclipse.jetty.util.SharedBlockingCallback$Blocker.block(SharedBlockingCallback.java:216) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:136) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpOutput.close(HttpOutput.java:166) ~[puppet-server-release.jar:na]\n        ... 23 common frames omitted\n2015-08-05 16:26:52,442 WARN  [o.e.j.s.HttpChannel] Could not send response error 500: java.lang.IllegalStateException: org.eclipse.jetty.util.SharedBlockingCallback$BlockerTimeoutException\n\n{noformat}\n\n\nSorry I don't have more useful information here, I don't really know what to look at.", "created": "2015-08-05T14:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc] would you mind attaching your puppetserver-access.log file?  Should be somewhere like /var/log/puppetlabs/puppetserver/puppetserver-access.log?\n\nAlso, just to confirm, you are seeing catalog failures on the agents when this happens?\n\nHow many CPU cores are your machines?  With 30 JRuby instances I'd most definitely expect the load to be higher than 1.0, so that seems weird.  Is there anything happening in your runs that relies on expensive network I/O with an external system?  Are you using any custom report processors?  Or custom functions that make network requests of some kind?  Or... are you using PuppetDB, and if so, how does the load look there?", "created": "2015-08-06T04:43:00.000000"}, {"author": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "body": "When this exception occurs, the clients print this:\n\npuppet-agent[19302]: Could not retrieve catalog from remote server: end of file reached\n\n(Note that my agents are still running Puppet 3.7)\n\nThe puppet masters are E3-1241 v3 machines, so they have 8 cores (including hyperthreaded ones).  They have 24GB of memory, and Intel SSDs.\n\nI have a trivial ENC which only hits the local disk (simple bash script that checks for file existence, then cats a file).\n\nI am using PuppetDB (still on puppetdb v2), that machine has a load of 2 (it's another E3)\n\nI can post part of the access log if that's necessary, but I'd have to go through it and remove a bunch of the private information from it.  Was there something in particular you were looking for there?\n\nLooking at the puppet server logs, catalog compilation is taking anywhere from 30-90 seconds, so hitting some sort of timeout would seem to make sense.\n\nI'm going to work on getting PuppetDB updated to v3, maybe that will help.", "created": "2015-08-06T08:11:00.000000"}, {"author": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "body": "So far, the PuppetDB upgrade appears to have dramatically helped.  My catalog compilation times are significantly down (from 30-90 seconds to 3-15 seconds).  Agents are no longer taking forever to run, and I have not seen this exception occur again.\n\nAccording to the PuppetDB stats, we have around 1250 resources/node.\n\nMaybe this exception can be replicated by adding a long delay to PuppetDB responses?", "created": "2015-08-06T09:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Huh, wow, that's pretty interesting.  Glad that the newer PuppetDB is showing an improvement for you so far.\n\nFrom the message you see on the puppet-agent side, it sounds more like the agent is detecting that the socket has been closed out from underneath it rather than a timeout on the agent side causing it to close the socket prematurely on its own.  A network packet trace between the agent and server around the point of the failure might be more insightful here as to exactly which side is closing the socket but I understand that may be fairly difficult to obtain / provide for various reasons.\n\nRE: the access log information, I think the most interesting lines would be ones for requests right around the point that one of the failure occurs.  It would be interesting to see what HTTP status code is being provided in the responses to those requests and how long those requests are taking, for example.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] may have other information in mind that he'd want to glean from that.", "created": "2015-08-06T09:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Mostly what I would be interested in from the access logs would be some data about the rate of different types of requests coming in (particularly catalog requests), and the response times.\n\nIf the load on the server is <1.0 with 30 JRuby instances available, that very strongly smells like a situation where a ton of requests are blocked waiting on network I/O.  It's possible that HTTP requests being made from Puppet Server to PuppetDB (or elsewhere) were timing out, though it's kind of weird that we'd see a Jetty exception in that case rather than an exception originating from Puppet Server's internal HTTP client.", "created": "2015-08-07T05:33:00.000000"}, {"author": "623c11d2b75ca8007056d279", "body": "I am having the same problem, or at least the same symptoms. After upgrading 3.7.4 -> 3.7.5 i am getting a LOT of \"java.nio.channels.:\" (actually i was upgrading to 3.8.2 but was able to trace to performance problems to 3.7.5). \n\nI have about 1000 puppet clients connecting to a single puppetserver vm with 8 cores and 16GB RAM. Puppetserver configured with 15 jruby instances and 12GB of java Xms. I see loads up to 15 during catalog runs. With 3.7.4 I had compilation times of 1-5s and now the compilation time is 15-100s _if_ it even succeeds. The majority of my nodes fails with the WritePendingException error. I'm not using puppetdb.\n\nHere are the log output from puppetserver-access.log for one failed run:\n\n\n{noformat}\n172.31.28.123 - - - 12/Oct/2015:11:18:27 +0000 \"GET /production/node/lxserv641.smhi.se?transaction_uuid=95384261-d8f5-48a1-bf35-a4faf21fe5c9&fail_on_404=true HTTP/1.1\" 200 7011 172.31.28.123 172.31.28.123 8140 36744\n172.31.28.123 - - - 12/Oct/2015:11:19:03 +0000 \"GET /production/file_metadatas/pluginfacts?links=manage&recurse=true&checksum_type=md5&ignore=.svn&ignore=CVS&ignore=.git HTTP/1.1\" 200 305 172.31.28.123 172.31.28.123 8140 36117\n172.31.28.123 - - - 12/Oct/2015:11:20:05 +0000 \"GET /production/file_metadata/pluginfacts?links=manage&source_permissions=use HTTP/1.1\" 404 51 172.31.28.123 172.31.28.123 8140 61710\n172.31.28.123 - - - 12/Oct/2015:11:20:38 +0000 \"GET /production/file_metadatas/plugins?links=manage&recurse=true&checksum_type=md5&ignore=.svn&ignore=CVS&ignore=.git HTTP/1.1\" 200 60788 172.31.28.123 172.31.28.123 8140 33207\n172.31.28.123 - - - 12/Oct/2015:11:21:17 +0000 \"GET /production/file_metadata/plugins?links=manage&source_permissions=ignore HTTP/1.1\" 200 316 172.31.28.123 172.31.28.123 8140 39250\n172.31.28.123 - - - 12/Oct/2015:11:25:33 +0000 \"POST /production/catalog/lxserv641.smhi.se HTTP/1.1\" 200 229376 172.31.28.123 172.31.28.123 8140 255513\n\n{noformat}\n\n\nand from puppetserver.log\n\n{noformat}\n2015-10-12 11:23:58,642 INFO  [puppet-server] Puppet Compiled catalog for lxserv641.smhi.se in environment production in 43.13 seconds\n2015-10-12 11:25:33,160 WARN  [o.e.j.s.HttpChannel] /production/catalog/lxserv641.smhi.se\njava.nio.channels.WritePendingException: null\n{noformat}\n\n\n\n\n\nSomehow my puppet master is getting overloaded. If I downgrade to 2.7.4, everything is fine. Looking at the release notes for 3.7.5 I cant really see what could cause such a performance difference, any ideas?", "created": "2015-10-13T01:37:00.000000"}, {"author": "623c11d2b75ca8007056d279", "body": "My guess is that since the catalog run takes so long for each agent, the number of concurrent agent runs is rising which overloads the server completely. So the underlying problem is probably a dramatic performance loss. When I use mcollective to trigger a puppet run with 20 concurrent agents it works without any failed runs. It's slow, but it works. Normally, we run puppet via cron with a 900s splay time, so when a single agent run takes up to 100s there's will be a lot of concurrent runs overloading the server. ", "created": "2015-10-13T02:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c11d2b75ca8007056d279] are you using Puppet Enterprise?  If so, the environment is different enough that I think we might want to create a separate ticket for that discussion.  Also I think the original author was saying that his CPU load was very low, while yours is very high?\n\nOK with you if we create a separate ticket to discuss your situation?", "created": "2015-10-13T09:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm assuming that some of the version numbers mentioned - 3.7.4, 3.7.5 - are Puppet Open-Source versions since I don't think there are any Puppet Enterprise releases which correspond to those.  Would be good to know what version(s) of Puppet Server were involved in this testing as well - and whether the versions of Puppet Server used were changed along with the underlying versions of Puppet.  I agree that a new ticket may be best at this point.", "created": "2015-10-13T09:46:00.000000"}, {"author": "623c11d2b75ca8007056d279", "body": "I'm using opensource version. I've only been using puppetserver 1.1.1. I originally used apache/passenger but tried puppetserver when my performance problems arose. So, the performance problems was an issue with apache/passenger as well. ( I'm now sticking with puppetserver)\n\nIt's ok by me to create a new ticket for this. And thanks for your feedback and help, I will gladly assist in any way I can to get to the bottom of this. ", "created": "2015-10-13T11:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c11d2b75ca8007056d279] great, thanks.  Would you mind creating a new ticket then?  You can just copy/paste the relevant parts from the original description + your comments.  If you can make sure you mention that you are experiencing high CPU load that'll help disambiguate it from this ticket, and then we can talk through some ideas for things to check out.\n\nThanks!", "created": "2015-10-13T12:29:00.000000"}, {"author": "623c11d2b75ca8007056d279", "body": "ok, I've created SERVER-976. Please note that I have been tweaking my puppetserver environment and am now running with 9 jruby instances. My system load has dropped to ~5 during agent runs, which is completely fine, so I omitted that information from the new report. ", "created": "2015-10-13T12:43:00.000000"}], "components": [], "created": "2015-07-21T14:07:00.000000", "creator": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19a37715"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xhr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1285361119_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_79841453735"}], "description": "I'm running Puppet server with a large (>1000) number of nodes, the puppet server software is intermittently throwing this error:\n\n{noformat}\n2015-07-21 16:00:52,904 WARN  [o.e.j.s.HttpChannel] /production/catalog/xxxxx\njava.nio.channels.WritePendingException: null\n        at org.eclipse.jetty.server.HttpConnection$SendCallback.reset(HttpConnection.java:624) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpConnection$SendCallback.access$100(HttpConnection.java:594) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:479) [puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:768) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:801) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:142) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:135) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpOutput.close(HttpOutput.java:166) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpWriter.close(HttpWriter.java:49) ~[puppet-server-release.jar:na]\n        at java.io.PrintWriter.close(PrintWriter.java:339) ~[na:1.8.0_51]\n        at ring.util.servlet$set_body.invoke(servlet.clj:86) ~[na:na]\n        at ring.util.servlet$update_servlet_response.invoke(servlet.clj:112) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__8410.invoke(jetty9_core.clj:410) ~[na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source) ~[na:na]\n        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1129) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1065) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:159) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.Server.handle(Server.java:497) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) ~[puppet-server-release.jar:na]\n        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [puppet-server-release.jar:na]\n        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [puppet-server-release.jar:na]\n        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [puppet-server-release.jar:na]\n        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [puppet-server-release.jar:na]\n        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_51]\n{noformat}\n", "environment": "CentOS 6.6 x86_64\npuppetserver-2.1.1-1.el6.noarch", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15852", "fixedVersions": [], "id": "15852", "issueType": "Bug", "key": "SERVER-819", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "resolution": "Fixed", "resolutionDate": "2018-02-14T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server throwing 'java.nio.channels.WritePendingException: null' intermittently", "timeSpent": "PT0S", "updated": "2018-02-14T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "To implement this I  followed the instruction on this blog post: http://blog.travis-ci.com/2014-12-17-faster-builds-with-container-based-infrastructure/ .", "created": "2015-07-27T17:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to stable at [fb5528|https://github.com/puppetlabs/puppet-server/commit/fb5528533be9fe58941aeb5133313b01d57694dd].", "created": "2015-07-30T23:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Travis run performance since this was merged may not have noticeably improved but it doesn't seem like it got any worse.  Resolving this for now.  Can revisit again if any changes arise.", "created": "2015-07-30T23:29:00.000000"}], "components": [], "created": "2015-07-20T17:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56b2c8f1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyol93:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_151672004_*|*_10007_*:*_1_*:*_281638968_*|*_3_*:*_1_*:*_733291_*|*_5_*:*_1_*:*_6544610527_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_450888042"}], "description": "I noticed a link in the output from one of our recent Travis Puppet Server jobs to an page about configuring Travis jobs to use container-based infrastructure - http://docs.travis-ci.com/user/migrating-from-legacy/?utm_source=legacy-notice&utm_medium=banner&utm_campaign=legacy-upgrade.  This approach promises faster build times, among other benefits.\n\nIt appears that the primary restrictions for this approach would be the lack of an ability to use sudo or have a database backed by a memory disk.  I don't think either restriction would be critical for many of our Trapperkeeper and Puppet Server projects.\n\nTo potentially take advantage of the build speed benefits, it would seem worthwhile to at least experiment with this configuration and see how it goes for various projects.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16174", "fixedVersions": ["SERVER 1.1.2", "SERVER 2.1.2"], "id": "16174", "issueType": "Task", "key": "SERVER-808", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-07-30T23:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate moving Travis configuration to container-based infrastructure", "timeSpent": "PT0S", "updated": "2015-10-14T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c15ada1d81f0069d8e3ba", "body": "The good news is that the library is a very small codebase, so either choice in the above questions won't be that difficult to implement (especially if it's removing things).\n\nRegarding the fact that it's a separate library, I have no issues with integrating this into another trapperkeeper layer. It was easier to build something from scratch for me than sending a PR to trapperkeeper (and I believe it's way easier for integrating into the POC).\n\nRegarding test coverage, I believe it is not that bad. It might be possible to use a coverage tool to accurately check the numbers.\n", "created": "2015-07-21T02:08:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This project is best kept as an independent library.  I don't think it makes sense to fold it into Trapperkeeper ... in fact, I just realized that it does not even have a dependency on TK.", "created": "2015-07-21T10:33:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}This project is best kept as an independent library. I don't think it makes sense to fold it into Trapperkeeper ... in fact, I just realized that it does not even have a dependency on TK.{quote}\n\nCould you clarify why if you have a chance?  Is having a dependency on TK a litmus test for if it should be folded in or not?", "created": "2015-07-21T11:33:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I wouldn't say it is necessarily a litmus test.  I was mostly just surprised to find that, when I took a look at the project.clj, but it seems to be validation of my thought that the two projects are independent: somebody might want to use TK-auth without using TK.  And, for sure, there are projects that use TK that don't want/need TK-auth.\n\nOne other thing to consider is, if we decide to leave it as a separate library, perhaps it should be renamed - as far as I know, it doesn't contain anything specific to TK, so including \"Trapperkeeper\" in the name of the library might be a bit misleading.", "created": "2015-07-21T11:43:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5], my initial idea regarding the naming was that TK is the service layer (including the HTTP layer) on which other Puppetlabs products are built, and authorization is one component of this service layer (service might choose to implement authorization), hence I thought it could be part of the trapperkeeper family (at the same level as trapperkeeper-webserver-jetty). ", "created": "2015-07-21T12:14:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c15ada1d81f0069d8e3ba] - I think you are right-on, in terms of where TK-auth sits in the \"family\" of TK-libraries (alongside TK-jetty9), and will probably eventually be used by most of our TK services at Puppet Labs.\n\nHowever, given that it does not have a dependency on Trapperkeeper, it seems to me (although I could be wrong) that there's nothing Trapperkeeper-specific about it.  It *seems* like somebody might be able to use this library in a project that was based on a different tech stack (no Trapperkeeper).  That's probably unlikely, but I was just thinking that we might not want the name to imply that the library absolutely must be used on top of Trapperkeeper.\n\nAnyway, it's a minor point to me.  If y'all decide to keep the current name, that's fine with me.", "created": "2015-07-21T12:22:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "I concur, this is a minor point :)", "created": "2015-07-21T12:27:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I'm glad we agree on the unimportance of this conversation.  :)", "created": "2015-07-21T12:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Naming things is hard.  We could consult the wisdom of the nomenclator.", "created": "2015-07-21T16:23:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "[~accountid:62438584f813eb006928dc81] stated in [SERVER-806] that several Puppetlabs project use {{clojure.tools.logging}} macros. I see no reason tk-authz couldn't do the same, this is a very good news.", "created": "2015-07-22T01:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "RE the questions about whether this should remain a separate library and, if so, whether or not the label \"trapperkeeper\" makes sense to include in the name...\n\nOne of the questions that we'll also need to answer is the lifecycle of the in-memory \"rules\".  In our POC for SERVER-768 (and follow-on for SERVER-769), I believe we're just re-reading the \"rules.conf\" from disk and re-parsing it into the in-memory rules every time a request needs to be authorized.  For production uses in various apps, like with Puppet Server, I think this would be way too expensive and so, instead, I'm envisioning that we'll want to produce the in-memory rules once and re-use those across subsequent requests that need to be authorized.  To keep this as a more generic capability than Puppet Server, I could see us eventually wanting to create a new Trapperkeeper service which would be responsible for reading rules from disk, parsing them to in-memory rules, and storing the result on the Trapperkeeper service context.  The authorization middleware could then call back into the new service to retrieve the previously stored rules and validate the request against those.  I'm thinking of something analogous to how we have a separate `jruby-puppet` Trapperkeeper service with associated state kept in Trapperkeeper for the pools.  Also, once we had a Trapperkeeper service for authorization, we could consider exposing additional service functions for acting on the rule data, e.g., for getting the in-memory rules or for requesting that the rules in memory be refreshed from the latest rules on disk after an update.\n\nIf we get to the point where we have a Trapperkeeper-level service for authorization - I could see us possibly (as a convenience) maintaining that service in the same project / artifact as the underlying functionality that operates on the rules.  In that model, the name \"trapperkeeper-authorization\" might actually make a lot more sense.  Not sure if we're envisioning a need for authorization functionality to be runnable independently from a Trapperkeeper service context?  If so, having any Trapperkeeper-level service and the underlying rules validation functions live in separate artifacts would make more sense.", "created": "2015-07-22T12:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I agree with what [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] was saying about making a real TK service out of this.  I have been envisioning that the service would get the config data through TK's normal configuration mechanisms and store whatever it needs in the service context, just as [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] suggested.\n\nThen I'm guessing that the actual ring middleware function will be exposed as part of the new service's protocol, and other services that want to use this will need to pull it from their TK dependencies.\n\nAt that point the current name of the repo makes plenty of sense to me.  And I agree with [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] about keeping it as an independent repo/project (though at some point we might want/need to bring it into or fork it into the PL namespace, assuming that's ok with you, [~accountid:623c15ada1d81f0069d8e3ba]?)", "created": "2015-08-04T09:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c12b6ee1b5a0070293582] the ssl client cert info is already available as part of the ring request", "created": "2015-08-04T09:22:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I built the library to be integrated in the PL ecosystem, so I don't have any objections for a fork/move (whatever suits you better) under the PL namespace.\n", "created": "2015-08-04T09:33:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "> Jeff McCune the ssl client cert info is already available as part of the ring request", "created": "2015-08-05T13:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Jeff McCune the ssl client cert info is already available as part of the ring request", "created": "2015-08-06T17:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I think the API from consuming services should be: \"grab this middleware function that is exposed as part of the auth service's protocol, and wrap it around your ring handler\".  And that's all.  I don't think the consuming services should have to think at all about where certs come from, whether their endpoint actually requires a cert, whether the identity is coming from a cert or a header or anywhere else, etc.\n\nI'm hoping we were already on the same page about that part, but just re-stating it to make sure.\n\nAt this point, I think it makes sense for there to be an 'authorize' function in a core namespace in the tk-auth project, and it's fine if that function has the two different signatures (or, two different functions providing the two implementations that you describe), but as of now I don't see any reason to expose those lower-level functions through the service protocol.  I'd think of those as implementation details for the middleware function.\n\nThat API is what I care the most about w/rt this feature", "created": "2015-08-07T03:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Jeremy Barlow I think the API from consuming services should be: \"grab this middleware function that is exposed as part of the auth service's protocol, and wrap it around your ring handler\". And that's all. I don't think the consuming services should have to think at all about where certs come from, whether their endpoint actually requires a cert, whether the identity is coming from a cert or a header or anywhere else, etc.  I'm hoping we were already on the same page about that part, but just re-stating it to make sure.{quote}\n\nYeah, I think I'm basically with you on this.  The one part I'm struggling with a little bit is in that I've been thinking of the \"trapperkeeper-authorization\" as just being about \"authorization\" and that the process of establishing identity - e.g., whether it comes from the subject in an SSL certificate, HTTP headers, or somewhere else - feels like it should be more of an output from \"authentication\".  I don't feel like we really have a defined \"authentication\" layer in our stack, though.\n\nI agree with you that a service like Puppet Server ideally shouldn't have to be involved in the function of determining the identity of a user.  It seems like \"trapperkeeper-authorization\" shouldn't have to be involved in determining the identity of a user either since it doesn't feel like it should be doing \"authentication\", but I don't know of a better place to hook that into our stack today.  So I'm good with doing the user identity extraction behind the single middleware function that the new \"trapperkeeper-authorization\" service would expose for now.\n\n{quote} As long as we meet that requirement, I think it'd be great if you can figure out a way to implement the middleware such that it can switch between getting the identity from the cert vs. from the HTTP header to handle both cases.{quote}\n\nConsidering the {{X-Client}} header use case, I think it would be most logical then, since code in the \"trapperkeeper-authorization\" service would be doing the identity extraction, for the \"trapperkeeper-authorization\" service's own configuration to hold the {{allow-header-cert-info}} setting and for the consideration of that setting when determining identity to live in \"trapperkeeper-authorization\" as well.  Would that make sense to you?\n\n{quote}I'll leave it to you and Jeff McCune and Eric Sorenson to decide whether that is a requirement for MVP or not.{quote}\n\nI consider the support for providing identify through {{X-Client}} headers to be an MVP requirement since it would be needed for backward compatibility where \"trapperkeeper-authorization\" is replacing Ruby auth.conf for the master routes.  Open to additional feedback from [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] if he believes otherwise.", "created": "2015-08-07T12:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}Considering the X-Client header use case, I think it would be most logical then, since code in the \"trapperkeeper-authorization\" service would be doing the identity extraction, for the \"trapperkeeper-authorization\" service's own configuration to hold the allow-header-cert-info setting and for the consideration of that setting when determining identity to live in \"trapperkeeper-authorization\" as well. Would that make sense to you?{quote}\n\nYup, sounds fine to me.", "created": "2015-08-10T03:53:00.000000"}], "components": ["Puppet Server"], "created": "2015-07-20T16:12:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b493aab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyol87:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_156749568_*|*_3_*:*_1_*:*_1138100181_*|*_5_*:*_1_*:*_36185126851_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_83567487"}], "description": "This ticket tracks the work necessary to review the current implementation of trapperkeeper-authorization in an effort to come up with answers to the following questions regarding the goal of taking on ownership and maintenance of the library:\n\nWhat things, if any, need to be added?  For example, do we need to add functionality to support authorizing requests that come from clients that do not yet have an SSL certificate.  Similar to the {{auth any}} behavior of auth.conf.\n\nWhat things need to be removed?  For example, do we need to remove the code that implements IP and DNS based authorization?\n\nDoes anything need to be changed or re-implemented to match our coding guidelines and standards?\n\nIs test coverage adequate?\n\nShould the library remain separate, expressed as a lein dependency, or should it be folded into an existing project?\n\nWhat changes, if any, need to made to the documentation?\n\nh2. Feedback\n\nh3. logging\n\nFrom [this comment|https://puppet.atlassian.net/browse/SERVER-806?focusedCommentId=197623&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-197623]:\n\n{quote}\nThe main issue about logging inside tk-authz (and the reason I didn't any logging) is that I'm not sure the library itself can depend on a logging library. Or do we have a standard we can assume to be available (like slf4j or clojure equivalent?). In short, I didn't want tk-authz to force the consumers of the library to use a logging lib they might not use.\n\nIf this can be solved (either by making sure slf4j or any other is OK), or injecting a logging system into the library at initialization, then we can then dump the rules after logging and during match.\n{quote}", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "16168", "fixedVersions": [], "id": "16168", "issueType": "Task", "key": "SERVER-801", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-08-05T15:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Review trapperkeeper-authorization for long term maintenance", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] FYI, I submitted a pull request to ci-job-configs to fix the failure we found this morning.", "created": "2015-07-20T13:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to master of the ci-job-config repo at [a72cf|https://github.com/puppetlabs/ci-job-configs/commit/a72cfb8b39138e1614e835ac7520c668dc493bcf].", "created": "2015-07-20T17:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The puppet-server (master) 21 job - Puppet 3 Compatibility Acceptance Test Suite - had been failing because it was pinned to Puppet 3.7.5 and the Puppet 3.7.5 Windows agent msi had been recalled.  With the job reconfigured to run against Puppet 3.8.1, the job passed - http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_puppet3-compat_master/69/.  Confirmed from manual inspection of the console output for the job that the 3.8.1 had been installed.\n\nDoesn't seem to be anything else worth any functional review for this one so closing.", "created": "2015-07-21T10:32:00.000000"}], "components": ["Puppet Server"], "created": "2015-07-20T12:59:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fb615b6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz15vj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Recalled puppet version is causing CI failures that need to be fixed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_61775601_*|*_1_*:*_1_*:*_86466_*|*_10007_*:*_1_*:*_15107912_*|*_3_*:*_1_*:*_535027_*|*_5_*:*_1_*:*_37497562081_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_83398"}], "description": "Jenkins jobs will fail until our pin against puppet on windows is updated from 3.7.5 to 3.8.1.\n\nSee RE-5120\n\n3.7.5 was recalled as per [puppet-dev email|https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/puppet-dev/VtqadVFJKLM/e28O_so11fMJ].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17623", "fixedVersions": [], "id": "17623", "issueType": "Bug", "key": "SERVER-800", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-07-21T10:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Pin to puppet 3.8.1 instead of recalled 3.7.5", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We still have a lot of prerequisite work to do before this is possible.  It would be difficult to predict with any degree of accuracy at this point, but it probably won't come into a sprint until February.  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] would probably be able to provide the best estimate.", "created": "2015-12-22T14:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [90878|https://github.com/puppetlabs/puppet-server/commit/90878ed81573f621caaeba5d13ad396f578bc0be].\n\nPassed through full OSS Puppet Server pipeline at https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-master/89/.\n\nMoving to the testing column.\n\n", "created": "2016-02-03T14:26:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I found one issue with this already.  When a manifest fails to be parsed properly, e.g., if it is corrupt, a request to environment_classes will fail rather than returning a good payload with an \"error\" key containing information about the failure.  I filed a separate ticket to cover the follow-on work to address that issue - SERVER-1126.", "created": "2016-02-03T14:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This was promoted into PE in enterprise-dist commit 8acf6bd6, but I haven't seen a PE build come out from that commit yet.", "created": "2016-02-10T09:43:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "Is there a plan to allow requests without an environment query parameter and return data for all environments? We've probably discussed this already but I don't remember or see it somewhere obvious.", "created": "2016-02-11T12:11:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "That's not a requirement, we can do this perfectly well with what we have, but it might make sense and simplify one of the major use cases.", "created": "2016-02-11T12:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] We don't have any plans to add that ahead of the upcoming PE release but could do so in the future.  In the Puppet Server backend, just making the calls into core Ruby to aggregate all of the data and return that back for all environments wouldn't be that difficult to do.  Not sure if we're going to run into any issues in some scenarios around communicating the potentially much larger payload / much longer time to being able to produce the full response?  Definitely worth talking doing at some point later on, though.", "created": "2016-02-11T12:35:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "Okay, good to know. Our most common case is updating all the classes across all environments, so without that we're just going to enumerate environments and then make one call per environment, which is fine.\n\nAlso interesting that the responses from this so far look like they're 2-3 times as large as from the old endpoint.", "created": "2016-02-11T12:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The etag responses should be zero bytes, though.", "created": "2016-02-11T12:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Also interesting that the responses from this so far look like they're 2-3 times as large as from the old endpoint.{quote}\n\nYeah, that doesn't surprise me too much.  The new endpoint gives a lot more detail on class parameters than resource_types does - both a \"source\" and \"literal\" representation of the parameter -- as opposed to just a \"source\" representation -- as well as type info for each parameter.  Also we get the names of source files in which the classes reside with the new endpoint, which wasn't available via resource_types.\n\nAre you seeing data in the responses that you weren't expecting?", "created": "2016-02-11T12:49:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "No, it all makes sense and is good. I think a bunch of the output I'm seeing is also source files with no classes, which would have been totally ignored before. Not currently useful to us but I think it makes sense to include.", "created": "2016-02-11T15:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9], yeah, that makes sense.  The payload does currently include a file entry for every manifest file found for the environment - even if that file doesn't have any classes defined within it.", "created": "2016-02-11T16:00:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Assigning to [~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6] based on conversation with [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced].", "created": "2016-03-01T16:12:00.000000"}, {"author": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6", "body": "Verified with 2016.1.0-rc2-447-g045527b", "created": "2016-03-08T15:15:00.000000"}], "components": [], "created": "2015-07-20T12:25:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@79244596"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynnbz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_168824264_*|*_10007_*:*_1_*:*_185092872_*|*_3_*:*_1_*:*_414586810_*|*_5_*:*_1_*:*_17518600162_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_2940512801_*|*_10006_*:*_1_*:*_16349593437"}], "description": "This ticket would cover implementing a new Puppet Server-hosted HTTP endpoint for extracting class information from the new Puppet ClassInformationService API, implemented in PUP-4819.  As an outcome of this ticket, the following request/response should be possible:\n\nRequest:\n\n- URL: GET /puppet/v3/environment_classes?environment=production\n\nResponse:\n\n- Status: 200 (OK)\n- Body:\n\n{code:json}\n{\n  \"name\": \"production\",\n  \"files\": [\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/manifests/site.pp\",\n          \"classes\": []\n        },\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/modules/sample/manifests/class1.pp\",\n          \"classes\": [\n            {\n              \"name\": \"sample::class1\",\n              \"params\": [\n                {\n                  \"default_literal\": \"literal default\",\n                  \u201cdefault_source\u201d: \u201c\\\u201dliteral default\\\u201d,\n                  \"name\": \"string_with_literal_default\",\n                  \"type\": \"String\"\n                },\n                {\n                  \"default_source\": \"undef\",\n                  \"name\": \"string_with_undef_default\",\n                  \"type\": \"String\"\n                },\n                {\n                  \"default_source\": \u201cdefault\u201d,\n                  \"name\": \"string_with_default_default\",\n                  \"type\": \"String\"\n                },\n                {\n                  \"name\": \"string_with_no_default\",\n                  \"type\": \"String\"\n                },\n                {\n                  \"name\": \"variant_with_no_default\",\n                  \"type\": \"Variant[Boolean, String, Enum['one', 'three', 'two']]\"\n                },\n                {\n                  \"default_source\u201d: \u201c/^123*/\u201c,\n                  \"name\": \"regex_with_default\",\n                  \"type\": \"Regexp\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/modules/sample/manifests/class2.pp\",\n          \"classes\": [\n            {\n              \"name\": \"sample::class2\",\n              \"params\": []\n            }\n          ]\n        },\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/modules/sample/manifests/corrupt.pp\",\n          \"error\": \"Syntax error at 'up' at /etc/puppetlabs/code/environments/production/modules/sample/manifests/corrupt.pp:1:15\"\n        },\n        {\n          \"path\": \"/etc/puppetlabs/code/environments/production/modules/sample/manifests/init.pp\",\n          \"classes\": [\n            {\n              \"name\": \"sample\",\n              \"params\": []\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n{code}\n\n*Error cases for requests to the environment_classes endpoint*:\n\n- No environment query parameter => HTTP 400 (Bad Request)\n- Environment query parameter whose value does not include at least one alphanumeric character (A-Z, a-z, 0-9, _) => HTTP 400 (Bad Request)\n- Environment query parameter whose value does not match a directory environment which exists on the server => HTTP 404 (Not Found)\n\nThe above error cases match similar behaviors for environment-aware endpoints in core Ruby Puppet.\n\n*Implementation tasks for this ticket will include*:\n\n- Registering a comidi handler for the new endpoint.\n\n- Calling through to the Puppet Server Ruby code with the supplied environment, enumerating available files for that environment, calling into the Puppet {{ClassInformationService.classes_per_environment}} API to get the parsed output of those files, and returning the result to the comidi handler layer.\n\nI'm envisioning that much of the work previously done for SERVER-815 could be reused for the backend implementation for this task.\n\n- Assuming information is found for the environment, serialize the resulting \"class info\" structure to JSON in a format which looks like the response payload above.\n\n- In environment classes middleware, handle error conditions as described above.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17307", "fixedVersions": ["SERVER 2.3.0"], "id": "17307", "issueType": "New Feature", "key": "SERVER-1110", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-03-08T15:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement environment_classes endpoint in Puppet Server", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "Closing this ticket, as this was a placeholder for work. \nIf this is critical for future work, please reopen it. ", "created": "2017-10-05T17:53:00.000000"}], "components": [], "created": "2015-07-20T12:18:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@602d9ac4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr9r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_169248850_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_69662047548"}], "description": "SERVER-1111 would back the environment_classes endpoint in Puppet Server with a cache of hashes computed from the environment class information parsed from calls into Ruby Puppet's {{ClassInformationService.classes_per_environment}} method.  This ticket would extend upon the cache by additionally caching the full content returned from the {{classes_per_environment}} method calls.\n\nSome considerations around how this additional caching would be done:\n\n1) To minimize persistent memory use in Puppet Server, it might be best to have the actual cached data live on disk rather than in memory.  Assuming that the cache may not be accessed very frequently - especially when paired with cache support for etag / hash, the performance hit in going to disk more frequently might be reasonable tradeoff to reduce memory footprint.\n\n2) The cache should be structured in such a way that per-environment portions can easily (and atomically) be swapped out when updates are necessary.\n\n3) Although we wouldn't necessarily have to get this far with the implementation for this ticket, it would be good to design the cache such that the data for individual files within environments - as opposed to just the full data for an environment - could be swapped out on a code update. \n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14993", "fixedVersions": [], "id": "14993", "issueType": "Improvement", "key": "SERVER-1112", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2017-10-05T17:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Clojure cache of full parsed class output for environment_classes endpoint", "timeSpent": "PT0S", "updated": "2017-10-05T17:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:63d40628f6e1b543161789a7] this ticket shouldn't be necessary for the file_metadata / code_content work, right?  Just for the future catalog_metadata work?", "created": "2015-10-30T11:09:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "correct", "created": "2015-10-30T11:38:00.000000"}], "components": [], "created": "2015-07-17T17:18:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ef74ab6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotlz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4643528056_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_39847529172"}], "description": "The {{catalog}} endpoint should fail the compilation if the client requests a {{desired_code_id}} that does not match the server's {{code_id}}. This can happen if the catalog_metadata says to use version A, but before the agent requests the catalog, new code is promoted, and the compiler will have no way to produce a catalog for version A.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17305", "fixedVersions": [], "id": "17305", "issueType": "New Feature", "key": "SERVER-859", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Won't Do", "resolutionDate": "2016-12-13T14:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "catalog endpoint should fail compilation if client's code_id doesn't match", "timeSpent": "PT0S", "updated": "2016-12-13T14:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "It also came up in discussion that this endpoint needs to support the ability to PUT catalog_metadata on a per node basis and that the default authorization for this would be to \"deny all\".  Seems like the PUT would be more of an administrative action so not sure if having the ability to open it up such that each node could PUT its own catalog_metadata is critical - at least initially.  Or maybe we don't support PUT at all initially and instead the backing files for this endpoint just have to be dropped in place on the server outside of any HTTP API?", "created": "2015-07-31T18:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Where is the PUT requirement coming from?", "created": "2015-08-04T09:13:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "> Where is the PUT requirement coming from?\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] This is mentioned in the \"Puppetserver (OSS)\" section of this doc - https://docs.google.com/document/d/1vsMoJxngk5dKxqtXHzKu7RGaiNI4TnjKCaZZEqWa_vc/edit.  I don't know exactly what the origin of that requirement was.  Hopefully [~accountid:63d40628f6e1b543161789a7] could give more context.", "created": "2015-08-04T09:25:00.000000"}], "components": [], "created": "2015-07-17T16:28:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@346f7430"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotm7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4646521095_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_24079192062"}], "description": "This is a placeholder ticket for creating a catalog_metadata endpoint that routes to ruby. By default nodes should only be able to get their own catalog_metadata.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17076", "fixedVersions": [], "id": "17076", "issueType": "New Feature", "key": "SERVER-799", "labels": [], "originalEstimate": "PT0S", "parent": "16145", "parentSummary": "Direct Puppet: Server Catalog Metadata", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Won't Do", "resolutionDate": "2016-06-14T03:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add catalog_metadata endpoint", "timeSpent": "PT0S", "updated": "2016-06-20T03:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}ACTUAL RESULTS:\nPuppet stores reports in /opt/puppetlabs/server/data/puppetserver/reports{quote}\n\nIs this what you meant to write?  This is the directory you were expecting them to be stored in, right?", "created": "2015-07-17T15:51:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Thanks [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]  Fixed.\n", "created": "2015-07-17T16:15:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I wasn't able to reproduce the problem of the reports being stored in {{/opt/puppetlabs/puppet/cache/reports}} by default.  My attempted steps to reproduce:\n\n1) Installed Puppet Server 2.1.1 / Puppet Agent 1.2.1 on a clean CentOS 7.\n\nBy default, the {{/etc/puppetlabs/puppet/puppet.conf}} file had the following in it:\n\n{code:ini}\n[master]\nvardir = /opt/puppetlabs/server/data/puppetserver\n...\n{code}\n\nNo {{\\[main\\]}} section was in the file.\n\nBy default, the {{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}} had the following in it:\n\n{code:ini}\njruby-puppet: {\n  master-var-dir: /opt/puppetlabs/server/data/puppetserver\n}\n{code}\n\n2) Added the following to the beginning of the {{/etc/puppetlabs/puppet/puppet.conf}} file:\n\n{code:ini}\n[main]\nreports = store\n{code}\n\n3) Restarted the service - {{service puppetserver restart}}.\n\n4) Did a puppet agent run - {{/opt/puppetlabs/puppet/bin/puppet agent -t}}.\n\n5) Ran {{tree /opt/puppetlabs/server/data/puppetserver/reports/}} and got the following output:\n\n{noformat}\n/opt/puppetlabs/server/data/puppetserver/reports/\n\u2514\u2500\u2500 jb-centos7.localdomain\n    \u2514\u2500\u2500 201507172311.yaml\n{noformat}\n\nContent in the yaml file seemed reasonable for a report.\n\n--\n\nIf I run {{/opt/puppetlabs/puppet/bin/puppet config print reportdir}} at this point, I do get the same as reported in the description: {{/opt/puppetlabs/puppet/cache/reports}}.  I believe in this case that the \"reportdir\" is being computed via the default expansion of {{$vardir/reports}}.  I didn't have {{vardir}} defined in the {{\\[main\\]}} section of the \"puppet.conf\" file.  If I run {{/opt/puppetlabs/puppet/bin/puppet master --configprint reportdir}}, however, I get the appropriate server path as a result -- {{/opt/puppetlabs/server/data/puppetserver/reports}}.\n\n--\n\nI also tried changing the {{\\[main\\]}} section in the {{/etc/puppetlabs/puppet/puppet.conf}} file to:\n\n{code:ini}\n[main]\nreports = store\nreportdir = /tmp/reports\n{code}\n\nI restarted the puppetserver service again and did another agent run.  This time, the yaml file from the end of the agent run was written under the {{/tmp/reports/jb-centos7.localdomain}} directory.\n\n--\n\nIt seems, then, that at least for this configuration of Puppet Server 2.1.1 that the {{reportdir}} is honored.\n\nDo you know if this is unique to the version of Puppet Server you are running?  Are you seeing this with OSS or in PE?  Note that we do, as far as I know, still have an issue as well with the {{vardir}} / {{master-var-dir}} settings not being synchronized between the \"puppet.conf\" and \"puppetserver.conf\" files in PE, see PE-10903, which may lead to different results at present in terms of how the default value for {{reportdir}} is derived for PE.\n\n\n\n", "created": "2015-07-17T17:47:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I saw this with PE build 2015.2.0-rc0-34-g535693c\n\nIn /etc/puppetlabs/puppetserver/conf.d/pe-puppetserver.conf I see:\nmaster-var-dir: /opt/puppetlabs/server/data/puppetserver\n\nThere's probably something going on with the PE module that I don't know how to read here.", "created": "2015-07-17T17:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I installed the same PE version, {{2015.2.0-rc0-34-g535693c}}, on a CentOS 7 VM and repeated the same set of tests that I'd done on the OSS Puppet Server 2.1.1 install.  The only notable difference is that I just appended {{store}} to the {{reports}} setting under the {{\\[master\\]}} section of the {{/etc/puppetlabs/puppet/puppet.conf}} file since {{puppetdb}} was already there:\n\n{code:ini}\n...\n[master]\n...\nreports = puppetdb,store\n...\n{code}\n\nThe results were exactly the same for me as with OSS Puppet Server 2.1.1.  With the {{reportdir}} not set in the {{/etc/puppetlabs/puppet/puppet.conf}} file, the report yaml file was stored under the {{/opt/puppetlabs/server/data/puppetserver/reports/...}} directory.  When I set {{reportdir}} under the {{\\[master\\]}} section of the \"puppet.conf\" file to {{/tmp/reports}} and restarted {{pe-puppetserver}}, the next agent run that I did resulted in a report yaml file being stored under {{/tmp/reports/...}}.\n\nAs I'd mentioned earlier, {{vardir}} and {{reportdir}} aren't being set in the \"puppet.conf\" file, so the puppet CLI tool would give a misleading value for what the master is using for {{reportdir}}.  As you'd seen, though, {{master-var-dir}} had been set by default to {{/opt/puppetlabs/server/data/puppetserver}}.  I'd expect this to control the base directory used by Puppet Server for the {{reportdir}} so long as it isn't overridden in the \"puppet.conf\" file, and it appears to do so for me.\n\nNot sure exactly what is different about your steps to reproduce vs. mine?  ", "created": "2015-07-17T19:04:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "On 2015.2.0-rc0-42-g0b4fdd0, puppet config print reportdir returns \n/opt/puppetlabs/puppet/cache/reports\n\nThis appears to be a default as the puppet.conf did not contain the reportdir entry when I ran this command.\n", "created": "2015-07-20T17:08:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}On 2015.2.0-rc0-42-g0b4fdd0, puppet config print reportdir returns \n/opt/puppetlabs/puppet/cache/reports\nThis appears to be a default as the puppet.conf did not contain the reportdir entry when I ran this command.{quote}\n\nYeah, that sounds right.\n\nIf Puppet Server were actually using that directory and not {{/opt/puppetlabs/server/data/puppetserver/reports/...}} as the default directory it stores reports into, I'd call this a defect.  That wasn't my experience, though.", "created": "2015-07-20T17:17:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I think I got my directory pairs wrong in the original bug description\nReported Default reportdir = /opt/puppetlabs/puppet/cache/reports\nActual Default reportdir = /opt/puppetlabs/server/data/puppetserver/reports/\n", "created": "2015-07-20T17:33:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Going to track this issue in PE-10903.  Don't want to make the issues related because this ticket is so backwards.", "created": "2015-07-20T18:24:00.000000"}], "components": [], "created": "2015-07-17T15:47:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8eb7ce9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz15bj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_8490453_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_258849303"}], "description": "STEPS TO REPRODUCE:\n- install puppet.\n- observe reportdir setting\npuppet config print reportdir\n(returns /opt/puppetlabs/server/data/puppetserver/reports)\n\n- run puppet agent -t to generate a report\n- look for the report\n\nEXPECTED RESULT:\nif puppet config print reportdir says we should have reports in /opt/puppetlabs/server/data/puppetserver/reports,\nwe should have reports in that directory\n\nACTUAL RESULTS:\nPuppet stores reports in /opt/puppetlabs/puppet/cache/reports\n\nNotes:\nSetting reportdir for both --section master and --section main, and setting the permissions properly, and restarting puppetserver still causes reports to land in\n/opt/puppetlabs/puppet/cache/reports\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16398", "fixedVersions": [], "id": "16398", "issueType": "Bug", "key": "SERVER-798", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Cannot Reproduce", "resolutionDate": "2015-07-20T18:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver does not respect any reportdir setting", "timeSpent": "PT0S", "updated": "2015-08-04T16:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [{"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2016-10-24T17:33:00.000000", "name": "run_tests_with_time.rb", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10663"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - is it still taking 12 minutes for you even after running against code that picks up the second PR recently done for SERVER-251, https://github.com/puppetlabs/puppet-server/pull/634?  I'd found for local runs that this change was cutting the time from around 11 minutes or so to around 6 minutes or so for the full unit+integration test run.\n\nI'd be open to moving the jruby service into its own project, although if we're finding that the bulk of the time consumed today is with those tests, it seems like we're going to run into the same problem with the tests in the new project at some point.\n\nThere's probably still some opportunity to optimize the jruby service tests further in cases where we're exercising full \"Ruby Puppet\" initialization as opposed to just a ScriptingContainer with vanilla Ruby or just mocked JRubyPool instances.  Not sure we need full \"Ruby Puppet\" initialization to be happening in all of the cases that we cover in tests today.\n\nIt does seem that the \"integration\" tests in general are taking a lot of the time.  If I scope my test runs down to just using the \"unit\" test selector, I can complete the run in about a minute or so.  I know we covered that before as well, but is it not working for people to just run with \"unit\" for most of the day-to-day work that they're doing?\n\nAlthough it definitely would be tedious, I'd agree with the idea of doing a test audit at some point.  Would not surprise me at all if we have a significant amount of redundant tests in the suite.", "created": "2015-07-16T09:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Stable went down from 12 minutes to... less than that after your PR.  Then I merged stable up to master.  Master takes 12 minutes for me after that merge-up.", "created": "2015-07-16T10:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "My guess is that a number of the tests that we added around the \"legacy routes\" feature might be significantly adding to the overall test time.  Those would only be run on the \"master\" branch and not the \"stable\" one.  I'm thinking we might be able to rewrite at least some of those to be a little less \"integration\" level in some cases and still achieve the basic validation that we need without significantly bloating overall test execution time.  Also, the simmons module testing in the CI test suite gives us even further backing at a \"system\" level for this functionality.", "created": "2015-07-16T10:51:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. This has a pretty big impact on my productivity\n\nAgreed!\n\nbq. I feel like the maximum should be about 5 minutes.\n\nThat sounds reasonable to me.\n\nbq. My first idea is to move the jruby service to a new github project. I think that might make some sense for other reasons beyond just reducing the test runtime, but I also think it would shave off a huge chunk of time.\n\nWhat other reasons?  I don't think it's worth moving to a different project simply to make test runs quicker.  There's a lot of overhead associated with that, so the trade-off doesn't seem worth it to me (right now).\n\nbq. Beyond that the best thing I can think of is to do an audit to figure out which tests are taking the longest, and then consider whether there is something to do to speed them up, or whether they are entirely necessary.\n\n+1.  I suspect we have lots of room for improvement here - tests which are redundant/unnecessary, tests which could be written more simply, more use of the JRuby mocking, etc.\n\nbq. If I scope my test runs down to just using the \"unit\" test selector, I can complete the run in about a minute or so. I know we covered that before as well, but is it not working for people to just run with \"unit\" for most of the day-to-day work that they're doing?\n\nNo, that doesn't work for me.  Our \"unit\" tests don't give any assurance that you haven't broken something (when refactoring, etc.).  In fact, at this point the only reason I run {{lein test :unit}} is because {{lein test}} is so slow", "created": "2015-07-16T11:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}No, that doesn't work for me. Our \"unit\" tests don't give any assurance that you haven't broken something (when refactoring, etc.).{quote}\n\nYeah, I get that and didn't want to reopen that whole conversation per se.  I was just thinking that many times I'm doing work that I don't \"expect\" to have any effect on the integration stuff and so I'll optimize more for running with {{lein test :unit}} for quick-iterative work but follow-up with {{lein test}} at less frequent points - definitely still before I submit a PR (or at least I should).  I get that this doesn't work for everyone / every case, though, and don't mean for this to be dismissive about the need to optimize the execution time for our tests more generally.", "created": "2015-07-16T11:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For one of the PRs I recently put up, I noticed that Travis was consistently timing out - no output in the last 10 minutes... - when running the {{puppetlabs.services.master.master-service-test}} tests.  This also frequently alternated with Java OutOfMemory heap errors.\n\nI found that, when running locally, that if I created a single {{deftest}} which ran the existing tests in that namespace in a loop that I could only get through about 13-14 iterations before individual tests got unbearably slow - several minutes each - and eventually led up to a Java OutOfMemory error.  In the revised PR, I bumped Java's maximum heap up from 1g to 2g.  This allowed the tests to run noticeably faster.  With that in place on a local run close to the head of the puppet-server {{master}} branch, the run time went down to about 8 minutes for me.\n\nI'm wondering if the increasing length of the test suite run is at least in part due to memory leaks in the tests which are exhausting most of the Java heap - even for cases where the runs eventually complete without hitting the OutOfMemory errors.\n\nThrough some tracing and with YourKit, I found that for these two tests that the reified Trapperkeeper service instances were not freed up across test invocations - even though the vector they are defined within, in theory, seems like it should fall out of scope as the Trapperkeeper app in which it is used falls out of scope:\n\n{code:clojure}\n  (tk-testutils/with-app-with-config\n            app\n            [master-service\n             puppet-server-config-service\n             ...]\n  )\n{code}\n\nThe reified service instances hold onto contexts with large numbers of residual objects in them - e.g., JRubyPuppet instances with lots of JRuby objects attached to the jruby-puppet-pooled-service instances.\n\nIf the service instances are being accumulated like this across the full test run, I could see why tests get slower throughout the run as the heap nears exhaustion.\n\nI don't have a good feel yet for why the service instances aren't being freed up even after the app instance should be.  Not sure if there's something about the {{with-app-with-config}} or related macros - like maybe what is described at http://clj-me.cgrand.net/2013/09/11/macros-closures-and-unexpected-object-retention/?\n\n \n\n", "created": "2015-08-04T16:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This is continuing to have a really big impact on productivity for me... perhaps we should move it into tier 1 and try to bring it into the next sprint where we can spare any points for tech debt...", "created": "2015-08-13T06:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I hear you - although I don't know how many points I can spare for tech debt right now.  Worth having the conversation again for sure, though.  I suspect if we just put it in Tier 1, though, that it's not automatically going to have enough visibility?", "created": "2015-08-13T10:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yeah I'm not even necessarily saying it has to be Emerald.\n\nIt's going to have visibility no matter where we put it, because it makes me angry pretty much every day :)", "created": "2015-08-14T05:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I timed the tests running on my laptop from the current HEAD of the master branch, at [a2138f|https://github.com/puppetlabs/puppetserver/commit/a2138fe8a4cd97ca7feefec48d5827abaffa710f] with the attached {{run_tests_with_time}} Ruby script.  Here are the results:\n\n{noformat}\nTest suite time (in minutes:seconds)...\nTotal: 19:24\npuppetlabs.services.jruby.jruby-puppet-pool-int-test: 05:25\npuppetlabs.services.puppet-admin.puppet-admin-int-test: 03:07\npuppetlabs.services.certificate-authority.certificate-authority-int-test: 01:38\npuppetlabs.services.config.puppet-server-config-core-test: 01:17\npuppetlabs.general-puppet.general-puppet-int-test: 01:12\npuppetlabs.services.master.master-service-test: 01:06\npuppetlabs.services.config.puppet-server-config-service-test: 01:02\npuppetlabs.services.jruby.class-info-test: 00:50\npuppetlabs.puppetserver.ruby.http-client-test: 00:50\npuppetlabs.services.master.environment-classes-int-test: 00:34\npuppetlabs.services.jruby.service-macros-test: 00:31\npuppetlabs.services.legacy-routes.legacy-routes-test: 00:30\npuppetlabs.puppetserver.auth-conf-test: 00:24\npuppetlabs.services.ca.certificate-authority-disabled-test: 00:12\npuppetlabs.services.jruby.puppet-environments-int-test: 00:10\npuppetlabs.services.jruby.jruby-puppet-service-test: 00:10\npuppetlabs.puppetserver.certificate-authority-test: 00:06\npuppetlabs.puppetserver.bootstrap-int-test: 00:06\npuppetlabs.puppetserver.error-handling-int-test: 00:05\npuppetlabs.services.request-handler.request-handler-core-test: 00:03\npuppetlabs.services.jruby.request-handler-test: 00:03\npuppetlabs.services.ca.certificate-authority-core-test: 00:02\npuppetlabs.services.legacy-routes.legacy-routes-core-test: 00:01\npuppetlabs.services.puppet-profiler.puppet-profiler-service-test: 00:00\npuppetlabs.services.versioned-code-service.versioned-code-core-test: 00:00\npuppetlabs.services.ca.ca-testutils: 00:00\npuppetlabs.puppetserver.testutils: 00:00\npuppetlabs.puppetserver.shell-utils-test: 00:00\npuppetlabs.services.jruby.jruby-puppet-core-test: 00:00\npuppetlabs.puppetserver.ringutils-test: 00:00\npuppetlabs.services.puppet-profiler.puppet-profiler-core-test: 00:00\npuppetlabs.services.jruby.jruby-puppet-testutils: 00:00\npuppetlabs.puppetserver.bootstrap-testutils: 00:00\npuppetlabs.services.jruby.puppet-environments-test: 00:00\npuppetlabs.services.master.master-core-test: 00:00\npuppetlabs.services.versioned-code-service.versioned-code-service-test: 00:00\n{noformat}\n\nI'm going to start by looking at the jruby-puppet-pool-int-test and puppet-admin-int-test tests since those alone take up over 40% of the total run time.", "created": "2016-10-24T17:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [4c91514c|https://github.com/puppetlabs/puppetserver/commit/4c91514cef3ce4ca58152a53d1aacacec2fb9f62].", "created": "2016-11-08T12:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Changes have been in and passing both Travis and Jenkins CI on puppetserver#master so closing this out.\n\nFor some perspective on the difference in run-times before/after the changes done for the ticket, here's a table containing a random (very non-scientific) sampling from a few job instances in different environments:\n\n|| Environment || Before || After ||\n| Local MacBook (tuned from 2 GB heap before to 6 GB heap after) | 20 - 22 min | 4 - 5 min |\n| Jenkins (2 GB heap before & after) | 30 - 32 min | 13 - 17 min |\n| Travis (tuned from 2 GB heap before to 5 GB heap after) | 35 - 37 min | 7 - 8 min |", "created": "2016-11-10T17:34:00.000000"}], "components": [], "created": "2015-07-16T08:22:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d68a0f2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymlpz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_190873766_*|*_1_*:*_1_*:*_529358781_*|*_10007_*:*_1_*:*_600718176_*|*_3_*:*_1_*:*_697950926_*|*_5_*:*_1_*:*_19853062512_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_39749052769"}], "description": "The Puppet Server tests currently take over 12 minutes to run on my laptop.  This has a pretty big impact on my productivity.  I feel like the maximum should be about 5 minutes.\n\nWhat do others think?  If you agree, any suggestions you can think of to help reduce the runtime?\n\nMy first idea is to move the jruby service to a new github project.  I think that might make some sense for other reasons beyond just reducing the test runtime, but I also think it would shave off a huge chunk of time.\n\nBeyond that the best thing I can think of is to do an audit to figure out which tests are taking the longest, and then consider whether there is something to do to speed them up, or whether they are entirely necessary.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15577", "fixedVersions": ["SERVER 5.0.0"], "id": "15577", "issueType": "Task", "key": "SERVER-797", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-06-28T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server tests take too long to run", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:623c08e1562ab90069f8aed4] [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79]", "created": "2015-07-16T07:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Marking this as a blocker for PUP-3834, which will be the entry point to breaking down the work of actually removing webrick/rack support.", "created": "2015-07-16T07:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Linked SERVER-570 which also covers some debugging use cases.", "created": "2015-07-16T07:33:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Sounds good. ", "created": "2015-07-20T11:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] what kinds of tools / workflows do you use for these two items today?:\n\n{quote}\nHow to compile code at the command line to pinpoint issues with Types, Functions, and Back Ends\nHow to debug through the Indirector\n{quote}", "created": "2015-09-21T16:33:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "For compiling code at the command line, right now I use Webrick and Pry\n\nFor debugging through the indirector......yeah, this is impossible from what I can tell, I was hoping it would be a nice surprise.", "created": "2015-09-21T17:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\nFor compiling code at the command line, right now I use Webrick and Pry\n{quote}\n\nJust trying to make sure I understand", "created": "2015-09-21T18:01:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "Sort of, what I'm doing is stuffing Pry in at various points in the custom type and/or provider and watching how they work inside of the server itself.\n\nThis is crazy easy with Webrick but I'm not so sure about the Java monolith.\n\nAs an example: https://forge.puppetlabs.com/onyxpoint/learning_custom_types\n\nLet me know who kills the 'Your type has fallen into the black hole of the indirector' debug stack and I will buy them a reasonable beverage of their choice ", "created": "2015-09-21T18:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for the link.  I'm pretty sure that the pry pattern will be workable with some of the other stuff we already have in flight (I think it mostly already works today, though the workflow definitely has room for improvement).\n\nIn any case your link will give us something tangible to play around with as we're validating the workflow, so, thanks!", "created": "2015-09-22T11:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I haven't played with this yet, but this looks interesting: https://github.com/ivoanjo/pry-debugger-jruby.  Now that we have the ability to use JRuby 9k with Puppet Server, which this tool requires, this may be viable for us to use.", "created": "2017-06-29T18:14:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "There are what seem to me to be decent docs at https://puppet.com/docs/puppetserver/6.2/dev_debugging.html. They cover most of the techniques I use when not running from the REPL, as well as some instructions on how to do that so that Ruby inspection will work. If you should be interested instead on using the REPL with the clojure code, see https://puppet.com/docs/puppetserver/6.2/dev_running_from_source.html instead. As for minimum requirements, I don't have any trouble running the server from source on my small 2015 MacBook pro with default config. With Puppet 6, I would say about 1GB of RAM is probably as low as I would go, but I think I heard of rumor of someone using 512MB (not recommended with JRuby 9k at least, should work with Puppet 5/JRuby 1.7). See https://puppet.com/docs/puppetserver/6.2/tuning_guide.html for details.", "created": "2019-03-26T10:26:00.000000"}], "components": ["Puppet Server"], "created": "2015-07-16T06:34:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a6804e2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1313"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl31j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5220060062_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_111347461678"}], "description": "The main Puppet Docs page on the Server needs to be updated with information on how to better debug Ruby code in the heart of the Puppet Server.\n\nItems that we would like to see covered include:\n\n* How to use Pry inside of the new Puppet Server (here apparently https://github.com/puppetlabs/puppet-server/blob/master/documentation/dev_debugging.markdown)\n* How to spin up a Server instance at the command line and obtain useful output\n* How to tap Server metrics without a JMX plugin (many admins don't eat, live, and breathe Java)\n* How to compile code at the command line to pinpoint issues with Types, Functions, and Back Ends\n* How to debug through the Indirector\n* The absolute minimum footprint that can be used to spin up a Puppet Server process for testing two clients\n\nReference: https://groups.google.com/forum/#!topic/puppet-dev/r64jgY2b0sg", "epicLinkSummary": "Improved JRuby Debugging UX", "estimate": "PT0S", "externalId": "17622", "fixedVersions": ["SERVER 5.y"], "id": "17622", "issueType": "Improvement", "key": "SERVER-971", "labels": [], "originalEstimate": "PT0S", "parent": "14734", "parentSummary": "Improved JRuby Debugging UX", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Done", "resolutionDate": "2019-03-26T10:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The Puppet Server should have better debugging documentation", "timeSpent": "PT0S", "updated": "2019-03-26T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "This work is covered in SERVER-795", "created": "2015-07-15T17:13:00.000000"}], "components": [], "created": "2015-07-15T16:28:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58845033"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz13dz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37699_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2644000"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14992", "fixedVersions": [], "id": "14992", "issueType": "Task", "key": "SERVER-796", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Duplicate", "resolutionDate": "2015-07-15T17:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove Fedora 20 from build targets", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "I believe this will just be to remove fedora 20 from https://github.com/puppetlabs/ci-job-configs/blob/master/enterprise/production/puppet-server.yaml This may or may not also be the work for SERVER-796", "created": "2015-07-15T16:39:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "I want to make sure this change propagates correctly, and f20 is no longer present in the build pipelines.", "created": "2015-08-06T14:27:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Fedora 20 is out of the pipelines for all branches for puppet server (see http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/)", "created": "2015-08-10T15:21:00.000000"}], "components": [], "created": "2015-07-15T16:28:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@618bb672"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz13dr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "fedora 20 needs to get out, low hanging fruit"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_49874_*|*_10007_*:*_1_*:*_13115240_*|*_10009_*:*_1_*:*_348893443_*|*_5_*:*_1_*:*_25372173720_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1880328495"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17621", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "17621", "issueType": "Task", "key": "SERVER-795", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "resolution": "Fixed", "resolutionDate": "2015-08-10T15:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove fedora 20 from ci-job-configs repo", "timeSpent": "PT0S", "updated": "2016-05-30T07:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Former user thanks for the report", "created": "2015-07-15T09:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yeah, I agree with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]' suggestion to try to isolate the problem a bit further.  Along those lines, another suggestion I'd have is to try out this code on an MRI Ruby 1.9.3-based interpreter.  You had mentioned that you hadn't seen any issues with this code when running on ruby (presumably an MRI Ruby) 1.8.7.  Note that when running under Puppet Server, the JRuby runtime is configured to run for 1.9.3 compatibility.  If there were some cross-platform version difference between 1.8.7 and 1.9.3, this could help explain the problem.", "created": "2015-07-15T09:33:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:e8e12f6f-64a4-43a2-92c8-c0020cf1c8e7", "body": "Thanks all. Looks like this can be closed and isn't really an issue with jruby nor puppetserver. I followed up your tips to run a simple ruby script with rbenv, and found out that there is no real issue converting a string to float. The issue was the logic of the actual template, and it appears to be that MRI-based puppet is just a bit friendlier with the wrong syntax than jRuby is. \n\nCase in point:\n{code:title=puppetserver_float|borderStyle=solid}\n[user@host ~]$ puppetserver ruby ~/float.rb\nRuby platform:\njava\nRuby version:\n1.9.3\nString to float result:\n2839183.8\n{code}\n\n{code:title=mri_ruby|borderStyle=solid}\n[user@host ~]$ ./float.rb\nRuby platform:\nx86_64-linux\nRuby version:\n1.8.7\nString to float result:\n2839183.8\n{code}\n\nThe actual issue lied in the fact that in the math function for processorcount, we never bothered to convert the actual string to neither an integer or float. Removing the \"to_i\" reproduces the behavior, re-adding actually fixes it:\n\n{code:title=code_non_working|borderStyle=solid}\nmsg-cache-size: <%= (@memorysize_mb.to_f / 4).round %>m\nmsg-cache-slabs: <%= 2 ** (Math.log(@processorcount) / Math.log(2)).floor %>\nrrset-cache-size: <%= (@memorysize_mb.to_f / 2).round %>m\nrrset-cache-slabs: <%= 2 ** (Math.log(@processorcount) / Math.log(2)).floor %>\ninfra-cache-slabs: <%= 2 ** (Math.log(@processorcount) / Math.log(2)).floor %>\nkey-cache-slabs: <%= 2 ** (Math.log(@processorcount) / Math.log(2)).floor %>\n{code}\n\n{code:title=failed_puppet_run|borderStyle=solid}\n[user@host ~]$ puppet agent -t\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template unbound/unbound.conf.erb:\n  Filepath: org/jruby/RubyMath.java\n  Line: 437\n  Detail: can't convert String into Float\n at /etc/puppet/modules/unbound/manifests/recursor.pp:7 on node host\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog", "created": "2015-07-16T07:31:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Former user - This looks like a difference between Ruby 1.8.7 and 1.9.3:\n\n{code}\n$ ruby --version\nruby 1.8.7 (2013-12-22 patchlevel 375) [i686-darwin14.4.0]\n\n$ ruby -e \"puts Math.log('8')\"\n2.07944154167984\n{code}\n{code}\n$ ruby --version\nruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin14.4.0]\n\n$ ruby -e \"puts Math.log('8')\"\n-e:1:in `log': can't convert String into Float (TypeError)\n\tfrom -e:1:in `<main>'\n{code}\n\nPuppet Server runs JRuby in 1.9.3-compatibility mode, which would explain why you saw this issue when you upgraded to Puppet Server.\n\nAnyway, I'm glad you were able to get it working.", "created": "2015-07-29T14:54:00.000000"}], "components": ["Puppet Server"], "created": "2015-07-15T06:33:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:e8e12f6f-64a4-43a2-92c8-c0020cf1c8e7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@16f86824"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqnz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1230228206_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_9485066"}], "description": "Hi all, \n\nMy first post here, so if this isn't meant to be addressed here, let me know and I'll quietly run away through the emergency exit ;)\n\nWe have written a custom-made unbound module, with an unbound.conf template, which takes care of calculating unbound-specific settings based on the amount of memory and cpu's of the system in question. We just ran into the issue that our \"old\" puppet masters parse this template without issues (ruby 1.8.7 on rhel6), but that the new puppetserver with jruby doesn't seem to like it. We \"fixed\" it in the end by doing string to integer conversion instead of immediately converting to float, but it sort of feels like a jruby bug to me.. \n\nCase in point, the template non-working snippet:\n{code:title=unbound.conf.erb|borderStyle=solid}\nmsg-cache-size: <%= (@memorysize_mb.to_f / 4).round %>m\nmsg-cache-slabs: <%= 2 ** (Math.log(@processorcount) / Math.log(2)).floor %>\t    \nrrset-cache-size: <%= (@memorysize_mb.to_f / 2).round %>m\t    \nrrset-cache-slabs: <%= 2 ** (Math.log(@processorcount) / Math.log(2)).floor %>\t    \t\ninfra-cache-slabs: <%= 2 ** (Math.log(@processorcount) / Math.log(2)).floor %>\t   \nkey-cache-slabs: <%= 2 ** (Math.log(@processorcount) / Math.log(2)).floor %>\n{code}\n\nAnd the result of the run on the clients in question:\n{code:title=broken puppet agent run|borderStyle=solid}\n[user@host ~]$ puppet agent -t\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template unbound/unbound.conf.erb:\n  Filepath: org/jruby/RubyMath.java\n  Line: 437\n  Detail: can't convert String into Float\n at /etc/puppet/modules/unbound/manifests/recursor.pp:7 on node host\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n{code}\n\nThe \"fix\" in our template:\n{code:title=fixed unbound.conf.erb|borderStyle=solid}\nmsg-cache-size: <%= (@memorysize_mb.to_i / 4).round %>m\nmsg-cache-slabs: <%= 2 ** (Math.log(@processorcount.to_i) / Math.log(2)).floor %>\nrrset-cache-size: <%= (@memorysize_mb.to_i / 2).round %>m\nrrset-cache-slabs: <%= 2 ** (Math.log(@processorcount.to_i) / Math.log(2)).floor %>\ninfra-cache-slabs: <%= 2 ** (Math.log(@processorcount.to_i) / Math.log(2)).floor %>\nkey-cache-slabs: <%= 2 ** (Math.log(@processorcount.to_i) / Math.log(2)).floor %>\n{code}\n\nAnd the actual puppet run succeeding, alas because of integer conversion there is an MB \"lost\" (ohnoes), other than that the run seems to proceed as expected:\n{code:title=working puppet agent run|borderStyle=solid}\n[user@host ~]$ puppet agent -t\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for host\nInfo: Applying configuration version '1436960709'\nNotice: /Stage[main]/Unbound::Recursor/File[/etc/unbound/unbound.conf]/content:\n--- /etc/unbound/unbound.conf\t2015-07-15 11:45:47.794577597 +0000\n+++ /tmp/puppet-file20150715-2327-r4gnns-0\t2015-07-15 11:57:16.311610366 +0000\n@@ -15,7 +15,12 @@\n     num-threads: 4\n     num-queries-per-thread: 4096\n     so-rcvbuf: 4m\n-    msg-cache-size: 957m\n+    msg-cache-size: 958m\n+    msg-cache-slabs: 2\n+    rrset-cache-size: 1915m\n+    rrset-cache-slabs: 2\n+    infra-cache-slabs: 2\n+    key-cache-slabs: 2\n     harden-glue: yes\n     harden-dnssec-stripped: yes\n     harden-referral-path: no\n{code}\n\nPlease let me know if you need more details from me, or if I should be posting this elsewhere.\n\nCheers!", "environment": "OS: RHEL6,7\nEnvironment: Openstack machines running puppet 3.7.4 with puppetserver 1.1.1 as masters ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15851", "fixedVersions": [], "id": "15851", "issueType": "Bug", "key": "SERVER-793", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:e8e12f6f-64a4-43a2-92c8-c0020cf1c8e7", "resolution": "Done", "resolutionDate": "2015-07-29T14:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby string to float conversion broken?", "timeSpent": "PT0S", "updated": "2016-01-19T07:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:d7e0d274-ca44-4c2e-aa93-ca9f7876d631", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] which of the stories/tickets in this epic would get us the avg compile time?  I'd especially like to get that one in for Ankeny and want to make sure [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] and I are narrowing down the chat to the right subset of work.\n\nThanks!\n\nBeth", "created": "2015-08-14T03:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "If the catalog request response time is sufficient, then the combination of PE-8226 and PE-8220 would do it.  If you want just raw catalog compile time, without including the time spent in the HTTP layer or the time spent waiting for a JRuby to become available, then we might need to file a small follow-on ticket that added a tiny bit more data on top of PE-8220.  Maybe [~accountid:623e754d94742a00683f7cf0] or someone can weigh in on which of those two data points is more valuable.  The former is a good reflection of load on the system, the latter is focused more on the complexity of the catalogs themselves.", "created": "2015-08-14T03:12:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "At this point, I think metrics that show system load would be most valuable. Measuring catalog complexity will be nice, but I think we'll eventually want to split those metrics out per-node in order to identify outliers.", "created": "2015-08-14T03:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Cool.  So, if PE-8226 and PE-8220 get in, then we have a metric that tracks the average amount of time from when an agent issues its catalog request to when it gets a response back.  That seems like it'd be a pretty good fit for what you are looking for.", "created": "2015-08-14T03:45:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I think we want the \"amount of time a jruby spends doing things for an agent\" in my [performance tuning doc| https://confluence.puppetlabs.com/display/TCSE/PE+Performance+Tuning] I called that avg. compile time but I think including the extras that also take time before a jrbuy can help another agent is the right metric.  \n\nI actually just realized yesterday that I had no idea how to figure out that metric and that made my formula less helpful than anticipated.  \n", "created": "2015-08-14T09:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] well, you have to keep in mind that for every agent run, there are at least 5 discrete HTTP requests made to the server.  There may be many, many more than that if catalogs use a lot of file resources with 'source' params.\n\nFor each of those requests, a JRuby is borrowed, does the work, and then is returned to the pool.  In today's world, there's not necessarily a way to correlate multiple requests to a single agent run so that we could provide the aggregate info for all the JRuby time used for a given agent run.  Even if we were capable of doing that, it'd break down in a multi-master environment unless you enforced server affinity on the load balancer that the agents talk to.\n\nIt seems like the 'average time to respond to a catalog request' and 'average time to respond to a report request' are probably the two closest pieces of data to what you are looking for for now, but I'd be happy to chat through other ideas.", "created": "2015-08-17T02:56:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] hmmmm, I hadn't considered that file resources needed to use a jruby instance.  Is there a plan to break out file serving jruby instances from compilation jruby instances?  Seems like a waste to load all the code into a jruby and then have it serve some files.  Maybe I want to have 5 jrubies without any code loaded into them just for serving files and then have 5 heavy weigh jrubies compiling catalogs.  \n\nI guess that's sort of a similar idea to having the classifier use it's own jruby instance instead of using one from the normal pool of jrubies?  ", "created": "2015-08-17T11:04:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0] FYI", "created": "2018-07-10T17:00:00.000000"}], "components": [], "created": "2015-07-14T10:44:00.000000", "creator": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b86f03b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Metrics improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbov:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_209865820782_*|*_6_*:*_1_*:*_0"}], "description": "Improvement of metrics around\n-TK services\n- Server metrics", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15326", "fixedVersions": [], "id": "15326", "issueType": "Epic", "key": "SERVER-792", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "resolution": "Fixed", "resolutionDate": "2022-03-08T09:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Metrics improvements", "timeSpent": "PT0S", "updated": "2022-08-12T10:10:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Broader Categories of problem in the linked tickets:\n\n- auto-tuning defaults SERVER-413, which encompasses \n- defensive operational characteristics (i.e. not hosing the box it's running on) - hprof and logging limits/improvements [SERVER-378], [SERVER-343], [SERVER-366], [PE-8008]. \n- PE management of settings - [PE-7331] and [PE-8323], the SSL one is kind of a PE-wide knob that would be hugely beneficial to add but requires coordination across all the services.\n- system level resource management, namely ulimit [PE-8219] - needs an architecture decision of whether we ought to manage it.\n\nOf these, PE-8008 (\"Puppet Server starts logging at a very high rate when it runs out of file descriptors\") was ranked most highly in terms of severity and customer impact.", "created": "2015-10-21T13:05:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Cleaning up for pending reorg...initial thoughts are this will not make the cut. If there are individual tickets that still need attention, go ahead and raise them.", "created": "2016-08-16T14:41:00.000000"}], "components": [], "created": "2015-07-14T10:42:00.000000", "creator": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@eb87179"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Improve default settings"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz110f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_34487924568_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14991", "fixedVersions": [], "id": "14991", "issueType": "Epic", "key": "SERVER-791", "labels": ["tech-debt"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "resolution": "Fixed", "resolutionDate": "2016-08-16T14:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve default settings", "timeSpent": "PT0S", "updated": "2016-08-17T15:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-07-14T10:41:00.000000", "creator": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7922a5b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Improve handling of environment variables"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymonj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_44772199975_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17620", "fixedVersions": [], "id": "17620", "issueType": "Epic", "key": "SERVER-790", "labels": ["tech-debt"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "resolution": "Fixed", "resolutionDate": "2016-12-13T14:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve handling of environment variables", "timeSpent": "PT0S", "updated": "2016-12-13T14:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Related to RE-4769 in that [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] said", "created": "2015-07-13T11:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Looks like the problem was that builds for the puppet-agent SHA we were targeting in puppet-server CI, 42427827d2d923e040f0a6083fccdd2bda876858, was purged from builds.delivery.puppetlabs.net.  We should be picking up a newer puppet-agent revision anyway, probably 1.2.1, for puppet-server CI anyway.  So I'll just pull this over to the Puppet Server project and make that update. ", "created": "2015-07-13T11:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "ci-job-configs changed merged to master at [f9f306|https://github.com/puppetlabs/ci-job-configs/commit/f9f3064b408d7abdcb9888b803fe8085766e5a07].", "created": "2015-07-14T12:50:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Smoke tests passed.", "created": "2015-07-16T10:55:00.000000"}], "components": [], "created": "2015-07-13T11:21:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e84eed9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1047:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Ran into this when the old puppet-agent build we were picking up was deleted from builds.puppetlabs.lan."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_145089846_*|*_1_*:*_1_*:*_1285391_*|*_10007_*:*_1_*:*_105017249_*|*_3_*:*_1_*:*_6262901_*|*_6_*:*_2_*:*_7799462403_*|*_10006_*:*_1_*:*_9654"}], "description": "Last night the [puppet-server (master) Smoke Acceptance Tests|http://jenkins-enterprise.delivery.puppetlabs.net/job/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT=ubuntu1404-64ma-64a,LDAP_TYPE=default,PLATFORM=default,label=beaker/66/consoleFull] failed trying to fetch packages from builds.delivery.puppetlabs.net.\n\nI'm not sure what the issue is, this ticket is to investigate and hopefully correct any problems that are found.\n\n{code}\nFetching: http://builds.delivery.puppetlabs.net/puppet-agent/42427827d2d923e040f0a6083fccdd2bda876858/repo_configs/deb//pl-puppet-agent-42427827d2d923e040f0a6083fccdd2bda876858-trusty.list\n  and saving to tmp/repo_configs/ubuntu/pl-puppet-agent-42427827d2d923e040f0a6083fccdd2bda876858-trusty.list\n#<OpenURI::HTTPError: 404 Not Found>\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/open-uri.rb:346\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/open-uri.rb:775\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/open-uri.rb:203\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/open-uri.rb:201\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/open-uri.rb:201\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/open-uri.rb:146\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/open-uri.rb:677\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/open-uri.rb:33\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/dsl/helpers/web_helpers.rb:52\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/dsl/install_utils/foss_utils.rb:840\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/acceptance/suites/pre_suite/foss/30_install_dev_repos.rb:22\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/acceptance/suites/pre_suite/foss/30_install_dev_repos.rb:21\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/acceptance/suites/pre_suite/foss/30_install_dev_repos.rb:21\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/dsl/structure.rb:41\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/acceptance/suites/pre_suite/foss/30_install_dev_repos.rb:20\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/dsl/structure.rb:205\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/acceptance/suites/pre_suite/foss/30_install_dev_repos.rb:19\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/test_case.rb:128\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/test_case.rb:128\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/benchmark.rb:295\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/test_case.rb:125\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/test_suite.rb:286\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/test_suite.rb:283\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/test_suite.rb:283\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/test_suite.rb:325\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/cli.rb:151\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/lib/beaker/cli.rb:89\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/gems/beaker-2.14.1/bin/beaker:6\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/bin/beaker:23\n/var/lib/jenkins/workspace/enterprise_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT/ubuntu1404-64ma-64a/LDAP_TYPE/default/PLATFORM/default/label/beaker/vendor/bundler/ruby/1.9.1/bin/beaker:23\nWarning: acceptance/suites/pre_suite/foss/30_install_dev_repos.rb errored in 7.14 seconds\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15850", "fixedVersions": ["SERVER 2.1.2"], "id": "15850", "issueType": "Task", "key": "SERVER-789", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-07-16T10:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server (master) failed trying to fetch trusty packages", "timeSpent": "PT0S", "updated": "2015-10-14T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] any thoughts on this?", "created": "2015-07-10T18:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Not sure you could use fixed agent certs/keys unless you were to also tweak the PE master to not validate the agent cert against its CA or configure the master to also trust the agent's CA - since it would presumably be different than the dynamically generated CA that would be spun up with the master.  I'd think we'd want the SSL trust to actually be done for gatling runs so that we're accounting for the performance overhead involved in doing that in production.\n\nMaybe instead it would make sense to automate having the master generate the agent cert that would be installed with the gatling agent as it starts up - maybe via running {{puppet cert generate}} on the master?", "created": "2015-07-10T18:49:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. Not sure you could use fixed agent certs/keys ...\n\nYep, this seems pretty problematic to commit fixed certs/keys.  I couldn't quite tell if the other SSL files in {{simulation-runner/}} were just examples, or if there were actually used during automation, but that kind of threw me off.\n\nbq. Maybe instead it would make sense to automate having the master generate the agent cert that would be installed with the gatling agent as it starts up - maybe via running puppet cert generate on the master?\n\nYeah, during development I just did agent runs by hand to get the cert & key generated.  I think we could totally do a {{puppet cert generate}}, but we might need to add support for somehow adding extensions to the certificate.  That doesn't seem like much work, probably just committing each agent's {{csr_attributes.yaml}} file and hooking it onto the node config JSON.", "created": "2015-07-10T19:19:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. I'd think we'd want the SSL trust to actually be done for gatling runs so that we're accounting for the performance overhead involved in doing that in production.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Do you mean not pre-generate any of the SSL certs and just let the Gatling simulation send the necessary requests the same way an agent would?\n\nThat's certainly do-able, but we've avoided capturing those HTTP requests from the very beginning of the project as they're not typical in an agent run. Not sure how accounting for that would impact the performance numbers. [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]?", "created": "2015-07-10T19:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] Thoughts:\n\n* If we were to use fixed certs/keys, we'd need to have a pre-baked CA cert to drop into place before the master starts, as [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] was hinting at.\n* If we don't use fixed certs/keys, we should definitely *not* allow gatling to be involved in the setup process (i.e. the recordings should *not* include the cert requests).  We'd need to use beaker, and then after the certs were available we'd need to call the gatling shell scripts to generate a valid keystore for gatling to use based on those certs.\n* This will get more complicated when we're dealing with multi-node scenarios because we will need to be able to configure gatling to use a different keystore per node.\n\nOverall I don't think this is worth the ROI just yet.  I think for now the best thing to do is just put a permissive auth.conf into place.  I think we're close to being able to do an end-to-end run via a live Jenkins job, and I think it would be good to focus most of our immediate energy on filling in whatever gaps are preventing us from getting there.  I do think it's worth keeping this ticket around so that we can come back and add this later, since, as [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] suggested, the auth stuff may have minor perf implications that are worth tracking.  But I don't think that's a blocker for getting our first automated jobs running.", "created": "2015-07-13T02:20:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "I've been thinking about this some more, and I think we could change the NC rule that determines the node classification to not use {{[\"trusted\", \"certname\"]}} but instead use {{\"clientcert\"}}.  If I understand these correctly, this would mean it would use the value of {{--certname}} instead of the subject on the actual certificate, which would make it a lot easier to validate classification since we would no longer need the agent certificates.\n\nI'm going to test out this theory, but if it works, is there any other reason why we'd need the agent certificates on the master [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]?  If not, then I'd rather not go down that path considering everything you listed above.  If Gatling has everything it needs, and we don't have any plans for needing the certs on the master, then I'd like to change the node classification and validation to use {{clientcert}} and close this ticket.", "created": "2015-07-14T13:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Jeremy Barlow Do you mean not pre-generate any of the SSL certs and just let the Gatling simulation send the necessary requests the same way an agent would?  That's certainly do-able, but we've avoided capturing those HTTP requests from the very beginning of the project as they're not typical in an agent run. Not sure how accounting for that would impact the performance numbers.{quote}\n\n{quote}I think for now the best thing to do is just put a permissive auth.conf into place.{quote}\n\nI wasn't thinking it was critical for the agent certificate HTTP requests to be captured for the simulation, no.  I agree that including these in the simulation playback probably wouldn't give significant value with respect to long-term performance testing.\n\nBy \"permissive auth.conf\", [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], are you also implying that the client would not be providing a client certificate?  I was thinking it would be good for the Gatling run to provide a client certificate for its SSL connection requests and have the webserver validate that certificate at the SSL layer, though, since this is what would happen in most real-world agent->master communications.  Effectively turning off the \"auth.conf\" layer validation with a \"permit all\" is probably okay in terms of not contaminating our performance measures but I was thinking that the client certificate negotiation at the SSL layer would be more significant.\n\n{quote}I've been thinking about this some more, and I think we could change the NC rule that determines the node classification to not use \\[\"trusted\", \"certname\"\\] but instead use \"clientcert\". If I understand these correctly, this would mean it would use the value of --certname instead of the subject on the actual certificate, {quote}\n\nWhere does this \"--certname\" come from?  Is this the \"certname\" Puppet setting on the master itself?  Seems like we'd want the \"certname\" of the agent in order to classify correctly?  If this has to be sent up from the agent to the NC and doesn't come from the agent's client certificate somehow, not sure how the agent \"certname\" is communicated to the NC?\n", "created": "2015-07-14T13:26:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "{quote}\nbq. I've been thinking about this some more, and I think we could change the NC rule that determines the node classification to not use [\"trusted\", \"certname\"] but instead use \"clientcert\". If I understand these correctly, this would mean it would use the value of --certname instead of the subject on the actual certificate,\nWhere does this \"--certname\" come from? Is this the \"certname\" Puppet setting on the master itself? Seems like we'd want the \"certname\" of the agent in order to classify correctly? If this has to be sent up from the agent to the NC and doesn't come from the agent's client certificate somehow, not sure how the agent \"certname\" is communicated to the NC?\n{quote}\n\nThe {{--certname}} is part of the curl command that queries the catalog endpoint during validation", "created": "2015-07-14T13:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\nI wasn't thinking it was critical for the agent certificate HTTP requests to be captured for the simulation, no. I agree that including these in the simulation playback probably wouldn't give significant value with respect to long-term performance testing.\n\nBy \"permissive auth.conf\", Christopher Price, are you also implying that the client would not be providing a client certificate? I was thinking it would be good for the Gatling run to provide a client certificate for its SSL connection requests and have the webserver validate that certificate at the SSL layer, though, since this is what would happen in most real-world agent->master communications. Effectively turning off the \"auth.conf\" layer validation with a \"permit all\" is probably okay in terms of not contaminating our performance measures but I was thinking that the client certificate negotiation at the SSL layer would be more significant.\n{quote}\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] the gatling clients will be configured to use a specific keystore/truststore, and AFAIK they will *not* ever be configured to be insecure (i.e. the equivalent of 'curl -k').  Since the server says 'want' client cert, Gatling should always send it up and presumably the server will validate it (as well as Gatling validating that it trusts the CA).  It's only *after* that point that auth.conf comes into play.  So I mean 'permissive auth.conf' in the sense that if you have a valid cert with certname 'foo', you can still successfully issue a request to '/puppet/v3/catalog/bar', rather than getting blocked by auth.conf.\n\nI do think we should already have all of the tools that we need in order to make sure the gatling sim runs with a *valid* cert, just not necessarily one with the same certname as each node that it will be simulating.", "created": "2015-07-15T02:57:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. The -certname is part of the curl command that queries the catalog endpoint during validation", "created": "2015-07-16T13:39:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Discussed in backlog grooming.  [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] said to close this, there's an e-mail discussion ongoing, waiting for some input from [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14].", "created": "2015-07-29T11:26:00.000000"}], "components": [], "created": "2015-07-10T18:28:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e6355dd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0zg7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1616227760_*|*_6_*:*_1_*:*_0"}], "description": "We need agent certs on the master for node classification validation.\n\nNode classification validation will require those agent certs/keys as the implementation makes a catalog request to the master, and the master will use the cert's subject to determine the classes to assign to it.\n\nCurrently, the only thing we do with agent certs is to run a script by hand that converts them into a Java KeyStore for use by Gatling.\n\nIt seems like we'll need to do something along the lines of committing the agent's certs/keys in gatling-puppet-load-test and install them during the setup process?\n", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17075", "fixedVersions": ["None"], "id": "17075", "issueType": "Task", "key": "SERVER-787", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Fix", "resolutionDate": "2015-07-29T11:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Copy agent certs onto master", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] [~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c]", "created": "2015-07-10T14:23:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Observations:\n- We don't have a centralized, well organized requirements repository.\n- We frequently have no requirements at all.\n- The lack or well organized requirements is a major quality risk.\n- Sometimes requirements are not completely known when we start coding (File Sync Service)\n- We need a way to define, improve and accept requirements.\n- We need a way to locate and modify requirements.\n- When we write tests, we need to link the the applicable requirements.\n", "created": "2015-07-10T14:36:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Proposals:\n- We should keep individual requirements in individual Jira tickets.\n- We should link requirements into Jira Epics.\n- We should link bugs outside of Epics to the requirement that we are failing.\n", "created": "2015-07-10T15:03:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We are experimenting with having individual user stories in Jira tickets within the File Sync Epic, https://puppet.atlassian.net/browse/PE-6605", "created": "2015-07-31T10:10:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Can't seem to get any traction on this.  Requirements practice is improving gradually, but not within the context of this ticket.", "created": "2015-12-09T16:06:00.000000"}], "components": [], "created": "2015-07-10T14:22:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@632b1e32"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0z4f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_421521916_*|*_3_*:*_1_*:*_11343326751_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1377745820"}], "description": "We need a centralized, well organized place to keep requirements.  The lack of this is a large quality issue.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15849", "fixedVersions": [], "id": "15849", "issueType": "Task", "key": "SERVER-786", "labels": ["Requirements"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2015-12-09T16:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Centralized well organized requirements", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We need some requirements around this:\n- Generally, the puppetserver shall accept reports via HTTP endpoints.\n- The URI endpoint is:\n/puppet/v3/report/<agent-fqdn>?environment=<EnviornmentName>& HTTP/1.1\"\n\n- For PuppetDB reports, puppetserver accepts a report as above, and runs the puppetDB report terminus (ruby owned by PuppetDB team, executes in PuppetServer)\n\n", "created": "2015-07-10T14:19:00.000000"}], "components": [], "created": "2015-07-09T15:59:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e13cfab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xhb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_501901508_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_81654923846"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15574", "fixedVersions": [], "id": "15574", "issueType": "Task", "key": "SERVER-785", "labels": ["QA"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2018-02-14T12:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "create acceptances tests that validate the puppet server's requirements around reporting", "timeSpent": "PT0S", "updated": "2018-02-14T12:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e], [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] - I'm not familiar with what is involved in getting the source tarballs uploaded to http://downloads.puppetlabs.com/puppet, but it does indeed appear that no tarballs were deposited there for the last two 2.x series releases of Puppet Server - 2.1.0 and 2.1.1 - although one for 2.0.0 and one for the most recent 1.x series - 1.1.1 - are there.\n\nDo you have any ideas as to what might have caused this?  Could we have those tarballs retroactively recreated from the github label for the 2.1.0 and 2.1.1 releases?", "created": "2015-07-08T09:44:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] are you gentlemen the correct people for us to talk to about this?  Or someone else in RE?", "created": "2015-07-15T11:09:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Oh hai! Yes. I think I figured what happened here. [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] is going to ship the tarballs out for those releases.", "created": "2015-07-15T11:12:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:1b0964ec-ee07-4b77-a901-e37a2de803c9] They should be up now. Thanks for bringing it to our attention.", "created": "2015-07-15T12:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - awesome, thanks - and thanks to [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] as well.  For future reference, is there anything we need to consider to ensure that this happens automatically for future releases?  I wasn't sure if this was just a \"one time\" thing that happened or if there's some more work that still needs to be done.", "created": "2015-07-15T13:19:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Nope, nothing you need to worry about. This should be a one off.", "created": "2015-07-15T13:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sweet, thanks, [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e].  Closing this ticket...", "created": "2015-07-15T14:05:00.000000"}], "components": [], "created": "2015-07-08T00:46:00.000000", "creator": "557058:1b0964ec-ee07-4b77-a901-e37a2de803c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@eb863a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0x2n:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Cause we messed up and should fix it."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_652791317_*|*_5_*:*_1_*:*_38003171622_*|*_6_*:*_1_*:*_0"}], "description": "I'm expecting to find source releases of puppet server 2.1.0 and 2.1.1 in http://downloads.puppetlabs.com/puppet/ - however, they're not there.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15569", "fixedVersions": [], "id": "15569", "issueType": "Bug", "key": "SERVER-782", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:1b0964ec-ee07-4b77-a901-e37a2de803c9", "resolution": "Fixed", "resolutionDate": "2015-07-15T14:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "source releases for 2.1.0 and 2.1.1 not available", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c08e1562ab90069f8aed4] thanks for filing this.  We definitely want to improve the dev experience to encourage people to run the code from source more often.\n\nSeems like the options here would be:\n\n1. Add a submodule for hiera, or \n2. Add docs about how to install it as a gem via puppetserver/lein, or\n3. Add docs about how to pull down the hiera source and add it to your puppetserver ruby load path\n\nOption 1 seems the easiest in terms of user experience.  Only downside is that... it's another submodule.\nOptions 2/3 seem probably unnecessarily cumbersome, but, perhaps not entirely different than the workflow that would be required to get a similar setup when running puppet from source via webrick?\n\nI'm probably leaning towards just going with a submodule, but curious to hear whether you have any thoughts.", "created": "2015-07-07T04:38:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] So, the core Puppet repo has a similar problem, and solves it with Bundler instead of submodules. That seems like the sweet spot to me, because it pollutes the repo less (a gemfile is less noisy than a pile of submodules) and mostly Just Works. \n\nSince Lein is kind of the Clojure equivalent of Bundler, I wonder if there's a way to make it pull in the Puppet / Facter / Hiera source from the repos? I don't know it well enough to answer that, but you probs do. \n\nFor now though, submodule is definitely the answer, because we should be handling all three dependencies in the exact same way. \n\nBTW, how are we handling Rgen? It's not part of Ruby core, so I assume we're pulling it in somehow. ", "created": "2015-07-07T11:56:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "> I'm probably leaning towards just going with a submodule, but curious to hear whether you have any thoughts.\n\nI know this will sound crazy, but for our Ruby dependencies would it make sense to use Bundler instead of submodules?", "created": "2015-07-07T12:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c08e1562ab90069f8aed4] re: rgen... dunno?  Haven't explicitly pulled it in nor gotten any errors about it being missing... maybe it's only needed at build time and the generated ruby code is checked into the source tree, so we don't need it?\n\n[~accountid:623c12b6ee1b5a0070293582] that doesn't sound crazy... it'd be a little complicated because we'd (probably) need to wire it through lein/jruby, and maybe if you were jumping back and forth between branches of puppetserver and the gem versions was changing, that'd be weird... but I think my biggest concern is that I often want to work on the puppet source code at the same time that I'm working on puppet server, and having an actual git repo there that I can go into and create branches and stuff is pretty dang useful.  It's also the best idea that [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] and I have come up with in terms of trying to convince other teams to do their daily development work inside of a puppetserver environment.\n\nThat said, if we were going to ditch the submodule approach, I think you are correct to assume that bundler would be a better direction to try to go than to try to use lein for it.  Probably :)\n\n[~accountid:623c08e1562ab90069f8aed4] for now I guess I'll just treat this ticket as \"add a submodule for hiera\", and we'll make that happen very soon.  From there we can all noodle on other ideas, and if anyone comes up with anything or if the submodule approach is causing you pain, we can open a new ticket to revisit.  Sound sane?", "created": "2015-07-08T01:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Nicholas Fagerlund re: rgen... dunno? Haven't explicitly pulled it in nor gotten any errors about it being missing... maybe it's only needed at build time and the generated ruby code is checked into the source tree, so we don't need it?{quote}\n\nYeah, does seem like we're just getting it automatically in our dev environment because it's checked into the .../puppet/vendor directory under the {{ruby-load-path}} entry which points to the {{.../ruby/puppet/lib}} directory within the submodule --  https://github.com/puppetlabs/puppet/tree/4.2.0/lib/puppet/vendor/rgen.\n\n{quote}but I think my biggest concern is that I often want to work on the puppet source code at the same time that I'm working on puppet server, and having an actual git repo there that I can go into and create branches and stuff is pretty dang useful. It's also the best idea that Kylo Ginsberg and I have come up with in terms of trying to convince other teams to do their daily development work inside of a puppetserver environment.{quote}\n\nYeah, that would be my biggest concern as well.  I often do the same sort of work.  Very nice to be able to make some changes to the backing Puppet code and manage it via git - stash the changes, switch to another commit, clean to go back to the original state of the commit, etc.\n\nAnother thing to consider as well is that we are currently using the submodule to pin the location that we want to pull the Puppet acceptance tests from for our CI job runs.  If we go away from the submodule and with bundler instead for installing Ruby Puppet code, we'd need to develop some sort of a replacement for that workflow.\n\nOverall, I'd also vote for just adding a submodule for Hiera.\n\n", "created": "2015-07-08T10:45:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "{quote}\n...for now I guess I'll just treat this ticket as \"add a submodule for hiera\", and we'll make that happen very soon. From there we can all noodle on other ideas, and if anyone comes up with anything or if the submodule approach is causing you pain, we can open a new ticket to revisit. Sound sane?\n{quote}\n\n\ud83d\udc4d\ud83c\udffc", "created": "2015-07-08T15:54:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "{quote}\nbq. but I think my biggest concern is that I often want to work on the puppet source code at the same time that I'm working on puppet server, and having an actual git repo there that I can go into and create branches and stuff is pretty dang useful. It's also the best idea that Kylo Ginsberg and I have come up with in terms of trying to convince other teams to do their daily development work inside of a puppetserver environment.\nYeah, that would be my biggest concern as well. I often do the same sort of work. Very nice to be able to make some changes to the backing Puppet code and manage it via git - stash the changes, switch to another commit, clean to go back to the original state of the commit, etc.\n{quote}\n\nIf I'm following correctly...Bundler supports pulling from the local filesystem, see http://bundler.io/v1.10/gemfile.html\n\nI haven't tried it, but I believe this would mean we could have the standard Gemfile pull from the proper gem repository, but during development when you want to pick up local changes to Puppet etc. we could add {{:path => /path/to/local/clone}} in the Gemfile.\n\nPlus, we could add support for Gemfile.local so we could keep our preferences personal.", "created": "2015-08-04T16:26:00.000000"}], "components": [], "created": "2015-07-06T10:56:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a3fa9d4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoniv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Impacting other teams"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_26281075_*|*_1_*:*_1_*:*_599727894_*|*_10007_*:*_1_*:*_119017550_*|*_5_*:*_1_*:*_7918379611_*|*_6_*:*_1_*:*_0"}], "description": "Puppet Server has submodules (and default ruby load paths in the example config file) for Puppet and Facter, and uses them if you start a server with lein repl (go) or lein run. But it doesn't have Hiera, so if your Puppet code ever causes a Hiera lookup it'll blow up.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15848", "fixedVersions": ["SERVER 1.1.2", "SERVER 2.1.2"], "id": "15848", "issueType": "Bug", "key": "SERVER-781", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2015-07-15T01:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Missing Hiera dependency with Lein Repl/Run", "timeSpent": "PT0S", "updated": "2015-10-14T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] any ideas on this?", "created": "2015-07-01T12:02:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This is due to the locales on the system. Native facter will not run without a valid locale set. In this case, it core dumps, which isn't the best user experience, but the solution is to resolve the locale issues on the system. Some googling on the perl errors turned up several stack overflow posts. They all suggested some combination of removing/purging the locales package, reconfiguring it, and regenerating the locales.\n\n- http://ubuntuforums.org/showthread.php?t=1720356\n- http://unix.stackexchange.com/questions/110757/locale-not-found-setting-locale-failed-what-should-i-do\n- https://www.thomas-krenn.com/en/wiki/Perl_warning_Setting_locale_failed_in_Debian\n- http://stackoverflow.com/questions/21816121/ubuntu-server-strange-locale-issue", "created": "2015-07-14T14:52:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I have linked a ticket I opened about facter handling bad locales more gracefully.", "created": "2015-07-14T14:55:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:1403bb53-cb80-41cb-a765-2ffe272e049f", "body": "Thanks, I did not post this issue because my faulty locale settings. But due to puppet handling it in the wrong way ", "created": "2015-07-15T05:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] so, your expectation is that once the related Facter ticket is resolved, this issue will go away?  You don't expect any packaging changes to be necessary for Puppet Server?", "created": "2015-07-15T09:06:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n\nI'm not sure if the facter ticket will resolve this issue or not. If the resolution for that is to just make a cleaner exception with bad locale, then the problem might persist. If the resolution is to continue past the exception, the problem should go away.\n\nI'm not sure that any changes to puppet server will help here. If we had clean config separation, we wouldn't need to call out to `puppet config set` here, which would avoid this problem here.\n\nHowever, even if we get past installation, I'm not sure puppetserver itself will be able to run. If loading facter from ruby (as puppet does), causes a core dump, I have to imagine that loading it from jruby, (as puppetserver does) will also core dump.\n\nI think we should probably try to make sure the facter fix allows for a clean run even with a bad locale.", "created": "2015-07-15T10:56:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "I've got a PR open for FACT-1123 that will make it proceed if the locale is busted (printing a warning that it is falling back to the \"C\" locale). This will prevent facter from crashing and will allow it to stumble forward, but could cause funkiness if any localized data is actually used in a fact resolution. I don't believe that this will impact any core facts.", "created": "2015-07-15T11:42:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Notes from backlog grooming:\n\nIt looks like the related Facter PR has been merged.\n", "created": "2015-07-29T11:23:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "From reading the conversation in FACT-1123, it sounds like the Facter side of this has been resolved and that someone should be able to test whether installing Puppet Server with a puppet-agent pulled from a nightly build, e.g., http://nightlies.puppetlabs.com/puppet-agent/8abae21edbcb02b9dc69be5bbb2b705782906416/, would still show the problem.", "created": "2015-08-05T12:13:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] I bet you can validate that this issue has been fixed.", "created": "2017-07-12T18:06:00.000000"}], "components": [], "created": "2015-07-01T05:20:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:1403bb53-cb80-41cb-a765-2ffe272e049f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@eed50f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xgv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3650203013_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_79236100268"}], "description": "Faulty LOCALE settings will cause puppetserver to abort at installation\n\n\n\nroot@pm01:~# apt-get install puppetserver\nReading package lists... Done\nBuilding dependency tree       \nReading state information... Done\npuppetserver is already the newest version.\n0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.\n1 not fully installed or removed.\nAfter this operation, 0 B of additional disk space will be used.\nDo you want to continue? [Y/n] \nperl: warning: Setting locale failed.\nperl: warning: Please check that your locale settings:\n\tLANGUAGE = \"en_US:en\",\n\tLC_ALL = (unset),\n\tLC_TIME = \"nb_NO.UTF-8\",\n\tLC_MONETARY = \"nb_NO.UTF-8\",\n\tLC_CTYPE = \"en_US.UTF-8\",\n\tLC_ADDRESS = \"nb_NO.UTF-8\",\n\tLC_TELEPHONE = \"nb_NO.UTF-8\",\n\tLC_NAME = \"nb_NO.UTF-8\",\n\tLC_MEASUREMENT = \"nb_NO.UTF-8\",\n\tLC_IDENTIFICATION = \"nb_NO.UTF-8\",\n\tLC_NUMERIC = \"nb_NO.UTF-8\",\n\tLC_PAPER = \"nb_NO.UTF-8\",\n\tLANG = \"en_US.UTF-8\"\n    are supported and installed on your system.\nperl: warning: Falling back to the standard locale (\"C\").\nlocale: Cannot set LC_ALL to default locale: No such file or directory\nSetting up puppetserver (2.1.1-1puppetlabs1) ...\nterminate called after throwing an instance of 'std::runtime_error'\n  what():  locale::facet::_S_create_c_locale name not valid\n/opt/puppetlabs/server/apps/puppetserver/scripts/install.sh: line 224:  6901 Aborted                 (core dumped) /opt/puppetlabs/puppet/bin/puppet config set --section master vardir /opt/puppetlabs/server/data/puppetserver\ndpkg: error processing package puppetserver (--configure):\n subprocess installed post-installation script returned error exit status 134\nErrors were encountered while processing:\n puppetserver\nE: Sub-process /usr/bin/dpkg returned an error code (1)\n", "environment": "Ubuntu 14.04 LTS 64bit\nRepository: puppetlabs-release-pc1-trusty.deb", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15584", "fixedVersions": [], "id": "15584", "issueType": "Bug", "key": "SERVER-779", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:1403bb53-cb80-41cb-a765-2ffe272e049f", "resolution": "Fixed", "resolutionDate": "2018-02-14T12:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Faulty LOCALE settings will cause puppetserver to abort at installation", "timeSpent": "PT0S", "updated": "2018-02-14T12:18:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] find the dupe of this ticket and close one of them.", "created": "2015-07-01T11:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The ticket I had in mind was PE-8220, which may need to be split up into an OSS and a PE ticket.  So I'll leave this one open for now I suppose, and we can use it to represent the OSS side of the work.", "created": "2015-07-02T03:08:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I think we should close either this ticket or SERVER-475.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - do you have a favorite between the two?", "created": "2015-07-16T11:06:00.000000"}], "components": [], "created": "2015-06-30T10:02:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3dc7d6a4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotzz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_148200004_*|*_6_*:*_2_*:*_21023_*|*_10006_*:*_2_*:*_45836275309"}], "description": "Use the Trapperkeeper Status Service to implement a /status endpoint in Puppet Server.\n\nTODO: what information should be exposed in this endpoint?", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "16391", "fixedVersions": [], "id": "16391", "issueType": "New Feature", "key": "SERVER-778", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Duplicate", "resolutionDate": "2016-12-13T14:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add /status endpoint", "timeSpent": "PT0S", "updated": "2017-03-15T10:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:38b78272-04e8-470c-a36e-3d8a864889cc", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Nice!\n\nThis'll probably require some poking at {{comidi}} because I'd already put some basic schemas in there to do this sort of validation.  But it'd be great if it turned out that we could eliminate some of those.", "created": "2015-06-30T02:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:38b78272-04e8-470c-a36e-3d8a864889cc] has a PR up for this here:\n\nhttps://github.com/puppetlabs/comidi/pull/14", "created": "2015-08-25T02:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0d8da2f6400069eb7889]'s PR is merged, going to close this as fixed.", "created": "2015-08-25T09:17:00.000000"}], "components": [], "created": "2015-06-29T16:50:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@197acbbe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0ran:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_154884780_*|*_5_*:*_1_*:*_7979_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_4742747488"}], "description": "Bidi 1.20.0 includes prismatic schemas which might be helpful for puppetserver and TK.\n\nHere's the announcement:\n\n{quote}\nbidi is a routing library that lets you define the URI routes for your website as data.\n\nUntil now, there has been no way to validate whether that data conforms to the expected structure. Not doing so can often lead to problems.\n\nI've just released a new version that defines a Prismatic Schema for letting you check and validate your bidi routes in your code.\n\nSchema validation works for both Clojure and ClojureScript, now that ClojureScript has Var instances (see https://groups.google.com/forum/#!topic/prismatic-plumbing/jqOkv_r8QZk)\n\nSee http://github.com/juxt/bidi for further details.\n{quote}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14990", "fixedVersions": [], "id": "14990", "issueType": "Task", "key": "SERVER-777", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-08-25T09:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\ud83d\ude07 Update bidi dependency to 1.20.0 for schema validations", "timeSpent": "PT0S", "updated": "2015-09-22T11:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] Is this a duplicate of SERVER-441?", "created": "2015-06-29T12:10:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Some additional impact data", "created": "2015-06-29T12:13:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Yes, this is a duplicate of SERVER-441.\n\nIssue is present with puppet-agent 1.1.1 and 1.2.1 so it's not a regression like I thought.", "created": "2015-06-29T12:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Closed this as a duplicate of SERVER-441.", "created": "2015-07-01T15:10:00.000000"}], "components": [], "created": "2015-06-29T12:06:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6631b3ac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0qy7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_171849064_*|*_6_*:*_1_*:*_0"}], "description": "Immediately after installing puppetserver 2.1.1-1.el7 from the PC1 repo, I get the error {{(RuntimeError) Got 1 failure(s) while initializing: File[/var/run/puppetlabs/puppetserver]: change from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserver}} while trying to run {{puppetserver foreground --debug}}\n\nHere's the full stack trace in all of it's beautifully descriptive glory:\n\n{code}\n[root@bud9j7ixfdnaye0 ~]# puppetserver foreground --debug\nOpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0\n2015-06-29 10:34:20,966 DEBUG [main] [p.t.logging] Debug logging enabled\n2015-06-29 10:34:20,969 DEBUG [main] [p.t.bootstrap] Loading bootstrap config from specified path: '/etc/puppetlabs/puppetserver/bootstrap.cfg'\n2015-06-29 10:34:23,102 INFO  [main] [o.e.j.u.log] Logging initialized @12044ms\n2015-06-29 10:34:33,337 INFO  [main] [p.t.s.w.jetty9-service] Initializing web server(s).\n2015-06-29 10:34:33,358 INFO  [main] [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2015-06-29 10:34:33,359 DEBUG [main] [p.s.j.jruby-puppet-core] Adding facter jar to classpath from: /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.jar\n2015-06-29 10:34:33,554 DEBUG [clojure-agent-send-pool-0] [p.s.j.jruby-puppet-agents] Initializing JRubyPuppet instances with the following settings:\n{:max-active-instances 1,\n :master-run-dir \"/var/run/puppetlabs/puppetserver\",\n :http-client-ssl-protocols nil,\n :master-var-dir \"/opt/puppetlabs/server/data/puppetserver\",\n :http-client-idle-timeout-milliseconds 1200000,\n :master-conf-dir \"/etc/puppetlabs/puppet\",\n :http-client-connect-timeout-milliseconds 120000,\n :http-client-cipher-suites nil,\n :gem-home \"/opt/puppetlabs/server/data/puppetserver/jruby-gems\",\n :ruby-load-path [\"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby\"],\n :master-log-dir \"/var/log/puppetlabs/puppetserver\",\n :borrow-timeout 1200000,\n :max-requests-per-instance 0,\n :master-code-dir \"/etc/puppetlabs/code\"}\n\n2015-06-29 10:34:33,566 DEBUG [clojure-agent-send-pool-0] [p.s.j.jruby-puppet-agents] Priming JRubyPuppet instance 1 of 1\n2015-06-29 10:34:44,750 INFO  [clojure-agent-send-pool-0] [puppet-server] Puppet Puppet settings initialized; run mode: master\n2015-06-29 10:34:44,756 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Registering environment 'production'\n2015-06-29 10:34:44,758 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Caching environment 'production' (cache ttl: 0)\n2015-06-29 10:34:44,759 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Applying settings catalog for sections main, master, ssl, metrics\n2015-06-29 10:34:44,889 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Evicting cache entry for environment 'production'\n2015-06-29 10:34:44,890 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Removing environment 'production' from registry\n2015-06-29 10:34:44,914 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Registering environment 'production'\n2015-06-29 10:34:44,916 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Caching environment 'production' (cache ttl: 0)\n2015-06-29 10:34:44,962 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Evicting cache entry for environment 'production'\n2015-06-29 10:34:44,962 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Removing environment 'production' from registry\n2015-06-29 10:34:44,965 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Registering environment 'production'\n2015-06-29 10:34:44,966 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Caching environment 'production' (cache ttl: 0)\n2015-06-29 10:34:44,986 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Evicting cache entry for environment 'production'\n2015-06-29 10:34:44,986 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Removing environment 'production' from registry\n2015-06-29 10:34:44,988 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Registering environment 'production'\n2015-06-29 10:34:44,990 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Caching environment 'production' (cache ttl: 0)\n2015-06-29 10:34:45,041 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Evicting cache entry for environment 'production'\n2015-06-29 10:34:45,041 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Removing environment 'production' from registry\n2015-06-29 10:34:45,044 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Registering environment 'production'\n2015-06-29 10:34:45,046 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Caching environment 'production' (cache ttl: 0)\n2015-06-29 10:34:45,094 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Failed to load library 'selinux' for feature 'selinux'\n2015-06-29 10:34:45,116 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'confdir': 'File[/etc/puppetlabs/puppet]{:path=>\"/etc/puppetlabs/puppet\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,118 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'codedir': 'File[/etc/puppetlabs/code]{:path=>\"/etc/puppetlabs/code\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,119 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'vardir': 'File[/opt/puppetlabs/server/data/puppetserver]{:path=>\"/opt/puppetlabs/server/data/puppetserver\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,121 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'logdir': 'File[/var/log/puppetlabs/puppetserver]{:path=>\"/var/log/puppetlabs/puppetserver\", :mode=>\"750\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,123 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'statedir': 'File[/opt/puppetlabs/server/data/puppetserver/state]{:path=>\"/opt/puppetlabs/server/data/puppetserver/state\", :mode=>\"1755\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,149 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'rundir': 'File[/var/run/puppetlabs/puppetserver]{:path=>\"/var/run/puppetlabs/puppetserver\", :mode=>\"755\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,151 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'libdir': 'File[/opt/puppetlabs/server/data/puppetserver/lib]{:path=>\"/opt/puppetlabs/server/data/puppetserver/lib\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,153 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'hiera_config': 'File[/etc/puppetlabs/code/hiera.yaml]{:path=>\"/etc/puppetlabs/code/hiera.yaml\", :ensure=>:file, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,155 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'preview_outputdir': 'File[/opt/puppetlabs/server/data/puppetserver/preview]{:path=>\"/opt/puppetlabs/server/data/puppetserver/preview\", :mode=>\"750\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,157 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'certdir': 'File[/etc/puppetlabs/puppet/ssl/certs]{:path=>\"/etc/puppetlabs/puppet/ssl/certs\", :mode=>\"755\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,174 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'ssldir': 'File[/etc/puppetlabs/puppet/ssl]{:path=>\"/etc/puppetlabs/puppet/ssl\", :mode=>\"771\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,176 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'publickeydir': 'File[/etc/puppetlabs/puppet/ssl/public_keys]{:path=>\"/etc/puppetlabs/puppet/ssl/public_keys\", :mode=>\"755\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,178 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'requestdir': 'File[/etc/puppetlabs/puppet/ssl/certificate_requests]{:path=>\"/etc/puppetlabs/puppet/ssl/certificate_requests\", :mode=>\"755\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,180 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'privatekeydir': 'File[/etc/puppetlabs/puppet/ssl/private_keys]{:path=>\"/etc/puppetlabs/puppet/ssl/private_keys\", :mode=>\"750\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,182 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'privatedir': 'File[/etc/puppetlabs/puppet/ssl/private]{:path=>\"/etc/puppetlabs/puppet/ssl/private\", :mode=>\"750\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,291 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'masterhttplog': 'File[/var/log/puppetlabs/puppetserver/masterhttp.log]{:path=>\"/var/log/puppetlabs/puppetserver/masterhttp.log\", :mode=>\"660\", :ensure=>:file, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,293 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'bucketdir': 'File[/opt/puppetlabs/server/data/puppetserver/bucket]{:path=>\"/opt/puppetlabs/server/data/puppetserver/bucket\", :mode=>\"750\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,295 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'rest_authconfig': 'File[/etc/puppetlabs/puppet/auth.conf]{:path=>\"/etc/puppetlabs/puppet/auth.conf\", :ensure=>:file, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,319 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'yamldir': 'File[/opt/puppetlabs/server/data/puppetserver/yaml]{:path=>\"/opt/puppetlabs/server/data/puppetserver/yaml\", :mode=>\"750\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,321 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'server_datadir': 'File[/opt/puppetlabs/server/data/puppetserver/server_data]{:path=>\"/opt/puppetlabs/server/data/puppetserver/server_data\", :mode=>\"750\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,323 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'reportdir': 'File[/opt/puppetlabs/server/data/puppetserver/reports]{:path=>\"/opt/puppetlabs/server/data/puppetserver/reports\", :mode=>\"750\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,347 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Using settings: adding file resource 'pluginfactdest': 'File[/opt/puppetlabs/server/data/puppetserver/facts.d]{:path=>\"/opt/puppetlabs/server/data/puppetserver/facts.d\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n2015-06-29 10:34:45,698 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Evicting cache entry for environment 'production'\n2015-06-29 10:34:45,698 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Removing environment 'production' from registry\n2015-06-29 10:34:45,701 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Registering environment 'production'\n2015-06-29 10:34:45,702 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Caching environment 'production' (cache ttl: 0)\n2015-06-29 10:34:45,729 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Evicting cache entry for environment 'production'\n2015-06-29 10:34:45,729 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Removing environment 'production' from registry\n2015-06-29 10:34:45,731 DEBUG [clojure-agent-send-pool-0] [p.s.j.puppet-environments] Registering environment 'production'\n2015-06-29 10:34:45,733 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Caching environment 'production' (cache ttl: 0)\n2015-06-29 10:34:45,764 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Failed to load library 'shadow' for feature 'libshadow'\n2015-06-29 10:34:46,007 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/state] Adding autorequire relationship with File[/opt/puppetlabs/server/data/puppetserver]\n2015-06-29 10:34:46,023 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/lib] Adding autorequire relationship with File[/opt/puppetlabs/server/data/puppetserver]\n2015-06-29 10:34:46,027 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/code/hiera.yaml] Adding autorequire relationship with File[/etc/puppetlabs/code]\n2015-06-29 10:34:46,029 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/preview] Adding autorequire relationship with File[/opt/puppetlabs/server/data/puppetserver]\n2015-06-29 10:34:46,030 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/certs] Adding autorequire relationship with File[/etc/puppetlabs/puppet/ssl]\n2015-06-29 10:34:46,032 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl] Adding autorequire relationship with File[/etc/puppetlabs/puppet]\n2015-06-29 10:34:46,034 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/public_keys] Adding autorequire relationship with File[/etc/puppetlabs/puppet/ssl]\n2015-06-29 10:34:46,035 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/certificate_requests] Adding autorequire relationship with File[/etc/puppetlabs/puppet/ssl]\n2015-06-29 10:34:46,037 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/private_keys] Adding autorequire relationship with File[/etc/puppetlabs/puppet/ssl]\n2015-06-29 10:34:46,052 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/private] Adding autorequire relationship with File[/etc/puppetlabs/puppet/ssl]\n2015-06-29 10:34:46,054 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/var/log/puppetlabs/puppetserver/masterhttp.log] Adding autorequire relationship with File[/var/log/puppetlabs/puppetserver]\n2015-06-29 10:34:46,056 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/bucket] Adding autorequire relationship with File[/opt/puppetlabs/server/data/puppetserver]\n2015-06-29 10:34:46,060 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/auth.conf] Adding autorequire relationship with File[/etc/puppetlabs/puppet]\n2015-06-29 10:34:46,062 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/yaml] Adding autorequire relationship with File[/opt/puppetlabs/server/data/puppetserver]\n2015-06-29 10:34:46,063 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/server_data] Adding autorequire relationship with File[/opt/puppetlabs/server/data/puppetserver]\n2015-06-29 10:34:46,064 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/reports] Adding autorequire relationship with File[/opt/puppetlabs/server/data/puppetserver]\n2015-06-29 10:34:46,066 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/facts.d] Adding autorequire relationship with File[/opt/puppetlabs/server/data/puppetserver]\n2015-06-29 10:34:46,068 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/code/environments/production] Adding autorequire relationship with File[/etc/puppetlabs/code]\n2015-06-29 10:34:46,135 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/var/log/puppetlabs/puppetserver]/mode mode changed '0700' to '0750'\n2015-06-29 10:34:46,141 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/state]/ensure created\n2015-06-29 10:34:46,195 ERROR [clojure-agent-send-pool-0] [puppet-server] Puppet Could not set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserver\norg/jruby/RubyDir.java:461:in `mkdir'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:88:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:48:in `withumask'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:87:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:427:in `set'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:501:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:183:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:209:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:220:in `eval_resource'\norg/jruby/RubyMethod.java:120:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `thinmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:157:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:997:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42:in `initialize_puppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_internal.clj:198:in `invoke'\njruby_puppet_internal.clj:159:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:38:in `invoke'\njruby_puppet_agents.clj:133:in `invoke'\ninternal.clj:254:in `invoke'\ninternal.clj:238:in `invoke'\ninternal.clj:293:in `shutdown_on_error'\ninternal.clj:262:in `invoke'\ninternal.clj:262:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\njruby_puppet_agents.clj:32:in `invoke'\ncore.clj:1913:in `invoke'\n2015-06-29 10:34:46,277 ERROR [clojure-agent-send-pool-0] [puppet-server] Puppet Could not set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserver\norg/jruby/RubyDir.java:461:in `mkdir'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:88:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:48:in `withumask'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:87:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:427:in `set'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:501:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:183:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:209:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:220:in `eval_resource'\norg/jruby/RubyMethod.java:120:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `thinmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:157:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:997:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42:in `initialize_puppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_internal.clj:198:in `invoke'\njruby_puppet_internal.clj:159:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:38:in `invoke'\njruby_puppet_agents.clj:133:in `invoke'\ninternal.clj:254:in `invoke'\ninternal.clj:238:in `invoke'\ninternal.clj:293:in `shutdown_on_error'\ninternal.clj:262:in `invoke'\ninternal.clj:262:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\njruby_puppet_agents.clj:32:in `invoke'\ncore.clj:1913:in `invoke'\nWrapped exception:\nPermission denied - /var/run/puppetlabs/puppetserver\norg/jruby/RubyDir.java:461:in `mkdir'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:88:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:48:in `withumask'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:87:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:427:in `set'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:501:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:183:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:209:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:220:in `eval_resource'\norg/jruby/RubyMethod.java:120:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `thinmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:157:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:997:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42:in `initialize_puppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_internal.clj:198:in `invoke'\njruby_puppet_internal.clj:159:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:38:in `invoke'\njruby_puppet_agents.clj:133:in `invoke'\ninternal.clj:254:in `invoke'\ninternal.clj:238:in `invoke'\ninternal.clj:293:in `shutdown_on_error'\ninternal.clj:262:in `invoke'\ninternal.clj:262:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\njruby_puppet_agents.clj:32:in `invoke'\ncore.clj:1913:in `invoke'\n2015-06-29 10:34:46,284 ERROR [clojure-agent-send-pool-0] [puppet-server] /File[/var/run/puppetlabs/puppetserver]/ensure change from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserver\n2015-06-29 10:34:46,288 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/lib]/ensure created\n2015-06-29 10:34:46,292 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/preview]/ensure created\n2015-06-29 10:34:46,311 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl]/mode mode changed '0770' to '0771'\n2015-06-29 10:34:46,315 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/certs]/ensure created\n2015-06-29 10:34:46,318 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/public_keys]/ensure created\n2015-06-29 10:34:46,335 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/certificate_requests]/ensure created\n2015-06-29 10:34:46,338 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/private_keys]/ensure created\n2015-06-29 10:34:46,341 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/etc/puppetlabs/puppet/ssl/private]/ensure created\n2015-06-29 10:34:46,359 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/var/log/puppetlabs/puppetserver/masterhttp.log]/ensure created\n2015-06-29 10:34:46,363 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/bucket]/ensure created\n2015-06-29 10:34:46,367 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/yaml]/ensure created\n2015-06-29 10:34:46,385 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/server_data]/ensure created\n2015-06-29 10:34:46,389 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/reports]/ensure created\n2015-06-29 10:34:46,391 DEBUG [clojure-agent-send-pool-0] [puppet-server] /File[/opt/puppetlabs/server/data/puppetserver/facts.d]/ensure created\n2015-06-29 10:34:46,406 DEBUG [clojure-agent-send-pool-0] [puppet-server] Puppet Finishing transaction 2674\nRuntimeError: Got 1 failure(s) while initializing: File[/var/run/puppetlabs/puppetserver]: change from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserver\n                use at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:1007\n              apply at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:186\n                use at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:997\n  initialize_puppet at file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42\n         initialize at file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27\n             invoke at jruby_puppet_internal.clj:198\n             invoke at jruby_puppet_internal.clj:159\n             invoke at jruby_puppet_agents.clj:54\n             invoke at jruby_puppet_agents.clj:38\n             invoke at jruby_puppet_agents.clj:133\n             invoke at internal.clj:254\n             invoke at internal.clj:238\n  shutdown_on_error at internal.clj:293\n             invoke at internal.clj:262\n             invoke at internal.clj:262\n             invoke at core.clj:626\n           doInvoke at core.clj:2468\n             invoke at core.clj:626\n           doInvoke at core.clj:2468\n             invoke at jruby_puppet_agents.clj:32\n             invoke at core.clj:1913\n2015-06-29 10:34:46,425 ERROR [clojure-agent-send-pool-0] [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6743$prime_pool_BANG___6744$fn__6748.invoke(jruby_puppet_agents.clj:60) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6743$prime_pool_BANG___6744.invoke(jruby_puppet_agents.clj:38) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6849$send_prime_pool_BANG___6850$fn__6851$fn__6853.invoke(jruby_puppet_agents.clj:133) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:254) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:238) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5401$service_fnk__4090__auto___positional$reify__5406.shutdown_on_error(internal.clj:293) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5337$fn__5349$G__5323__5357.invoke(internal.clj:262) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5337$fn__5349$G__5322__5366.invoke(internal.clj:262) [na:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:160) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyTo(AFn.java:144) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.applyTo(RestFn.java:137) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:408) [puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval6721$send_agent__6722$fn__6723$agent_fn__6724.invoke(jruby_puppet_agents.clj:32) [na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132) [puppet-server-release.jar:na]\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114) [puppet-server-release.jar:na]\n\tat", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16390", "fixedVersions": [], "id": "16390", "issueType": "Bug", "key": "SERVER-776", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Duplicate", "resolutionDate": "2015-07-01T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver foreground fails following installation", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] - since it seems like RE would be driving the timing of when Jessie support would need to be added to a Puppet Server release, would it make sense to just reassign it this ticket to someone in the RE team (you)?", "created": "2015-07-01T11:49:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] everything from the RelEng side should be ready to go. We do have the cows `base-jessie-i386.cow` and `base-jessie-amd64.cow` on all the builders. All the dependencies (including puppet-agent) should be available. I think at this point what is needed is integrating jessie into the ci pipelines, which is more what QA/devs handle than RE", "created": "2015-07-02T15:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Yeah, the part about the availability of the dependencies makes sense to me.  I suppose the actual changes here will just be the ones in `ci-job-configs` that [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] mentioned above.\n\nThe question I'd had was more about which team should be driving getting this into a release.  The Puppet Server development team doesn't have any current plans as to when the next Puppet Server releases would be done.  Not sure if there's a mandate from RE about when a Jessie-capable release would need to be available to users.  In the developers hands, I suppose the default answer would be that this would just be considered whenever the next Puppet Server releases happen to occur.", "created": "2015-07-02T15:13:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Yes, I'd say the next release is fine, whenever that happens. There isn't any rush to get jessie packages available, other that customers wanting to use it. I would like to get jessie into CI sooner rather than later as this is one of the first debian/ubuntu platforms that runs with systemd by defaults. There will likely be a few kinks to work out before the actual release happens. Once we get it into ci, we'll also be able to provide nightly packages as well, which will allow users earlier access to the packages as well", "created": "2015-07-02T15:18:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] was implying the next steps for this would be on your plate? Should we create a new ticket for the 'ci-job-configs' work? It'd be awesome getting this into ci sooner rather than later", "created": "2015-07-14T18:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] - I pulled this up in our backlog so hopefully we'll be able to pick this up sometime in our next sprint.  I think tracking the {{ci-job-configs}} work against this ticket would be fine.", "created": "2015-07-15T15:02:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Yep, server team can finish this, probably next sprint.  Like Jeremy said, let's just use this ticket to track the work.", "created": "2015-07-15T16:46:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}\nTo get Debian Jessie/8 packages building in the FOSS pipeline, the following line will need base-jessie-i386.cow added:\nhttps://github.com/puppetlabs/ci-job-configs/blob/master/enterprise/production/puppet-server.yaml#L38\n{quote}\n\nGot it on how to get the packages building.  I'm struggling with a bit of a chicken-and-egg problem with relation to CI.  On the one hand, we ideally want to keep CI green at all times, but on the other hand we don't yet have complete Debian 8 support, which this ticket is about, so adding into the CI jobs will likely cause failures.\n\nHow should we handle this problem of turning the build red?  Is it expected that it'll go red and the process is to create \"found\" tickets until we get it green again?\n\nAlternatively, I'm wondering if there's some place we could make the change you mentioned, let things be red and then scope out and plan what will need to be done to get the build green.\n\n{quote}To get the beaker integration tests running, the following line will need an additional SUT layout, probably debian8-64ma-32a or debian8-32ma-64a:\nhttps://github.com/puppetlabs/ci-job-configs/blob/master/enterprise/production/puppet-server.yaml#L28{quote}\n\nSame nature of question for the beaker integration tests, is there a way to scope out the work required to get a full CI prior to enabling the CI pipeline in production?  Or is there some other way to avoid broken builds, or am I over-thinking this entirely and making this too complicated?", "created": "2015-07-23T10:44:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pull request against master is up at https://github.com/puppetlabs/ci-job-configs/pull/404", "created": "2015-07-23T10:52:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "PR was merged, and it looks like we're building jessie packages officially (see http://builds.puppetlabs.lan/puppetserver/2.1.2.SNAPSHOT.2015.08.05T0123/artifacts/deb/). Jessie packages still aren't available through nightlies. Is that something that should also be taken care of in this ticket? Or is that all that needs to happen for this one?", "created": "2015-08-05T12:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] I believe we aren't getting nightlies because we haven't been able to get through a full acceptance test suite successfully for Debian 8 since this has been merged - and I understand that to be a pre-requisite for publishing to the nightlies repo.  We had been blocked on RE-5235 getting resolved so that we'd have a Debian 8 host configured with sufficient memory to run puppetserver.  Hopefully now that that's been resolved we'll be able to know where we are for sure on this.\n\nI'd propose we close this issue out on success of the packages being built and handle any Debian 8 failures from here out as part of CI triage - maybe leading to new tickets, if necessary.", "created": "2015-08-05T15:00:00.000000"}], "components": [], "created": "2015-06-29T11:48:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54f4f62"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyol8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1987923408_*|*_10007_*:*_1_*:*_1138158214_*|*_3_*:*_1_*:*_1207055_*|*_5_*:*_1_*:*_6819104752_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_81087414"}], "description": "This ticket is intended to kick off the process of adding Debian 8 \"Jessie\" to the [list of supported platforms|https://docs.puppetlabs.com/guides/platforms.html#debian-and-ubuntu] for puppetserver FOSS.  My understanding is that currently we have an early build of puppetserver working with the official puppet-agent 1.2.1 Debian 8 dependency.  This build (which may disappear) is located at [2.1.2.SNAPSHOT.2015.06.25T1050|http://builds.puppetlabs.lan/puppetserver/2.1.2.SNAPSHOT.2015.06.25T1050/].\n\nOnce we map out what is required to add Debian 8, additional tickets across RE, QE, DOCS, etc...  will likely be created.\n\nThis ticket is intended to capture the work required to figure out the rest of the process, not the entirety of the work to add an additional platform itself.  As a result, the goal of this ticket is to identify and create tickets for all of the steps necessary to add Debian 8 to our supported platform list.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "16661", "fixedVersions": [], "id": "16661", "issueType": "Task", "key": "SERVER-775", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-08-05T15:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Identify steps required to add Debian 8 support", "timeSpent": "PT0S", "updated": "2015-10-23T13:13:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:623a48e8bef8a60068c6c933]\n\nfileserver.conf should definitely work with the current version of puppetserver.  I just tried to reproduce this issue and was unable to.\n\nHere's what I did.  Could you review and see if you're using a different path or something else that doesn't line up?\n\nInstall puppetserver-2.1.1-1.el7.noarch which brings in puppet-agent-1.2.1-1.el7.x86_64 from the PC1 repository.\n\nCreate {{/etc/puppetlabs/puppet/fileserver.conf}}:\n\n{code}\n[root@bud9j7ixfdnaye0 ~]# diff -U2 /dev/null /etc/puppetlabs/puppet/fileserver.conf\n--- /dev/null   2015-06-29 09:06:13.324000043 -0700\n+++ /etc/puppetlabs/puppet/fileserver.conf      2015-06-29 11:43:23.493941345 -0700\n@@ -0,0 +1,3 @@\n+[secure_store]\n+  path /etc/puppetlabs/puppet/secure_store\n+  allow *\n{code}\n\nCreate {{testfile.txt}}:\n\n{code}\n[root@bud9j7ixfdnaye0 ~]# diff -U2 /dev/null /etc/puppetlabs/puppet/secure_store/testfile.txt\n--- /dev/null   2015-06-29 09:06:13.324000043 -0700\n+++ /etc/puppetlabs/puppet/secure_store/testfile.txt    2015-06-29 11:38:47.410934762 -0700\n@@ -0,0 +1 @@\n+HELLO\n{code}\n\nCreate {{site.pp}}:\n\n{code}\n[root@bud9j7ixfdnaye0 ~]# diff -U2 /dev/null /etc/puppetlabs/code/environments/production/manifests/site.pp\n--- /dev/null   2015-06-29 09:06:13.324000043 -0700\n+++ /etc/puppetlabs/code/environments/production/manifests/site.pp      2015-06-29 11:30:52.453923439 -0700\n@@ -0,0 +1,6 @@\n+node default {\n+  file { '/tmp/testfile.txt':\n+    ensure  => present,\n+    source => 'puppet:///secure_store/testfile.txt'\n+  }\n+}\n{code}\n\nStart the puppetserver service:\n\n{code}\n[root@bud9j7ixfdnaye0 ~]# service puppetserver start\nRedirecting to /bin/systemctl start  puppetserver.service\n[root@bud9j7ixfdnaye0 ~]# service puppetserver status\nRedirecting to /bin/systemctl status  puppetserver.service\npuppetserver.service - puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/puppetserver.service", "created": "2015-06-29T12:51:00.000000"}, {"author": "623a48e8bef8a60068c6c933", "body": "Indeed. But I remember clearly that it didn't work earlier.  It seems it was my fault. \nAnyway I'm very sorry for posting this ticket. Thank you very much! ", "created": "2015-06-30T02:59:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:623a48e8bef8a60068c6c933]  Not your fault, no need to apologize.  I'm grateful for the ticket in the event there is an issue with puppetserver.\n\nI'll go ahead and close this for the time being.  Please don't hesitate to file a ticket if you run into any problems like this in the future, we're happy to help out!\n\nJeff", "created": "2015-06-30T12:25:00.000000"}], "components": ["Puppet Server", "UX"], "created": "2015-06-29T06:32:00.000000", "creator": "623a48e8bef8a60068c6c933", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5bad0681"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0qon:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_107541364_*|*_6_*:*_1_*:*_0"}], "description": "It seems that fileserver settings/feature which was available in puppet 3.x is now unavailable in puppet 4 puppet server .\n\nThe idea is to use something like this in manifests:\n{noformat}\nfile { '/tmp/testfile.txt':\n  ensure \u00a0=> present,\n  source => 'puppet:///secure_store/testfile.txt'\n}\n{noformat}\n \nPuppet 3 allowed us to do this with the help of the following settings in fileserver.conf: \n{noformat}\n[secure_store]\n  path /etc/puppet/secure_store\n  allow *\n{noformat}\nSince puppet server ignores fileserver.conf settings, I tried to mimic fileserver.conf behaviour with webserver.conf, but haven't achieved any results. \n\nThere are 2 related posts on puppet mailing lists: \n\nhttps://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/puppet-users/SmMkyoWOkQA/tDPbdo2t3acJ\nhttps://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/puppet-users/-n1iZ2ESlFM/NSvf7Bf5wAQJ\n\nbut non of them is actually answered. \n\nIn one of the posts I describe my experience with webserver.conf. \n\nThe absence of filserver settings/feature in puppet server completely breakes our workflow and we cannot safely upgrade to puppet 4 from puppet 3.\n\n\nSo the questions are:\n\nDo you consider fileserver.conf to be something that nobody is going to need while using the new puppet server?\nOr may be something like fileserver.conf is going to be implemented in future releases ?\nOr may be I'm just doing something completely wrong? \n\n\nThank you!\n\n--\nBest regards,\nSergey Arlashin\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17074", "fixedVersions": [], "id": "17074", "issueType": "Improvement", "key": "SERVER-774", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a48e8bef8a60068c6c933", "resolution": "Cannot Reproduce", "resolutionDate": "2015-06-30T12:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fileserver settings/feature in Puppet Server", "timeSpent": "PT0S", "updated": "2015-08-04T16:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Is this test failing in CI or when beaker is run manually?", "created": "2015-06-26T18:44:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "And is https://github.com/zreichert/r10k/blob/master/integration/tests/user_scenario/basic_workflow/multi_env_hiera.rb#L90 the assertion that's failing?", "created": "2015-06-26T18:46:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "Lastly, how was this test run - against open source r10k or against PE? If PE, which r10k build/PE build?", "created": "2015-06-26T18:46:00.000000"}, {"author": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "body": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] This test was run against a CI ready build of SG.  I have updated the ticket the the relevant information.  You are correct, that is the assertion that is failing", "created": "2015-06-29T11:58:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "linking PUP-4789 which seems very similar...", "created": "2015-07-06T11:04:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "at second glance that ticket seems unrelated.  that's about parameters from calling puppet scope making it into a module included through {{hiera_include}}. This is about class parameter values automagically being picked from hiera, if what [~accountid:557058:151c148a-2bb4-4fdc-9320-df94e73b0363] told me is true...\ni'll look into those tests against puppet today, i'm sure we have some, ie i'd be surprised if this were a hiera/puppet non-edge case bug.", "created": "2015-07-06T12:45:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "FYI, this works against puppet and hiera FOSS stable branches without the r10k stuff\n(stable is what has been promoted to PE)\ntested using puppet server against puppet-agent build fb45a01412998ccdadf7ac8a8084adb586e74832\n{code}\n[root@tvu9nskbsqen5i1 ~]# cat /etc/puppetlabs/code/environments/production/manifests/site.pp\ninclude automatic_params\n[root@hah3wrrzg8bvkpd ~]# cat /etc/puppetlabs/code/environments/production/modules/automatic_params/manifests/init.pp\nclass automatic_params ($parameter_one = \"fail\") {\n  notify{\"$parameter_one\":}\n}\n[root@hah3wrrzg8bvkpd ~]# cat /etc/puppetlabs/code/hieradata/common.yaml\n---\nautomatic_params::parameter_one: \"you pass!\"\n[root@hah3wrrzg8bvkpd ~]# puppet apply -e \"include automatic_params\"\nNotice: Compiled catalog for hah3wrrzg8bvkpd.delivery.puppetlabs.net in environment production in 0.40 seconds\nNotice: you pass!\nNotice: /Stage[main]/Automatic_params/Notify[you pass!]/message: defined 'message' as 'you pass!'\nNotice: Applied catalog in 0.01 seconds\n[root@tvu9nskbsqen5i1 ~]# puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for tvu9nskbsqen5i1.delivery.puppetlabs.net\nInfo: Applying configuration version '1436291497'\nNotice: you pass!\nNotice: /Stage[main]/Automatic_params/Notify[you pass!]/message: defined 'message' as 'you pass!'\nNotice: Applied catalog in 0.02 seconds\n{code}", "created": "2015-07-07T10:23:00.000000"}, {"author": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "body": "Looks like this fails on a CI ready build of PE: 4.0.0-rc5-296-g5b94936 \nNo r10k\n\n{code}\n[root@fq0fhlc0ornlr4y ~]# cat /etc/puppetlabs/code/environments/production/modules/automatic_params/manifests/init.pp\nclass automatic_params ($parameter_one = \"fail\") {\n  notify{\"$parameter_one\":}\n}\n[root@fq0fhlc0ornlr4y ~]# cat /etc/puppetlabs/code/hieradata/common.yaml\nautomatic_params::parameter_one: \"you pass!\"\n[root@fq0fhlc0ornlr4y ~]# puppet apply -e \"include automatic_params\"\nNotice: Compiled catalog for fq0fhlc0ornlr4y.delivery.puppetlabs.net in environment production in 0.46 seconds\nNotice: fail\nNotice: /Stage[main]/Automatic_params/Notify[fail]/message: defined 'message' as 'fail'\nNotice: Applied catalog in 0.19 seconds\n[root@fq0fhlc0ornlr4y ~]#\n{code}", "created": "2015-07-07T11:06:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "If the problem is reproducible on PE when just running \"puppet apply\", is this really a \"Puppet Server\" problem?  Wonder if there's a path difference in PE configuration which is causing the {{common.yaml}} in {{/etc/puppetlabs/code/hieradata}} to not be considered for some reason?", "created": "2015-07-08T12:12:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "1.  We need to put hieradata in the proper directory.  The default in PE appears to be :/etc/puppetlabs/code/environments/<Enviornment Name>/hieradata (which I didn't get until I read the /etc/puppetlabs/code/hiera.yaml comments)\n\n2.  puppetserver caches hieradata.  if you change hieradata, service pe-puppetserver restart\n\n3.  hiera automatic_params::parameter_one is a good troubleshooting tool.  If this returns nil, puppet agent -t is going to fail.\n\n4.  We need to follow up on docs.\nThis https://docs.puppetlabs.com/hiera/1/configuring.html is for 3.8 and the default is incorrect for 4.0", "created": "2015-07-08T14:39:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:669d4655-0c85-469a-a11c-e5290cf2955d], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] - This ticket looks untouched for about half a year.  Can it be closed?", "created": "2016-02-17T16:46:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "I'm hearing nothing about whether this is still an issue, closing.", "created": "2017-08-14T11:55:00.000000"}], "components": [], "created": "2015-06-26T18:39:00.000000", "creator": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@450d8cc6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xgn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_442789_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_67367314079"}], "description": "[Failing Test Case|https://github.com/zreichert/r10k/blob/master/integration/tests/user_scenario/basic_workflow/multi_env_hiera.rb]\nShallow Gravy: 4.0.0-rc5-157-g857568c\nr10k 2.0.2\n\n", "environment": "Shallow Gravy", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15581", "fixedVersions": [], "id": "15581", "issueType": "Bug", "key": "SERVER-783", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "resolution": "Won't Do", "resolutionDate": "2017-08-14T11:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Hiera data parameterized class does not override default values", "timeSpent": "PT0S", "updated": "2017-08-14T11:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a1dc061a-072b-4499-acc0-481330ac2c40] Thank you for reporting this issue, we'll be taking a look into this as soon as possible.\n\nDid this previously work for you with puppetserver 1.x?", "created": "2015-06-25T11:38:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "I'm porting from a 2.7 environment, where we didn't use an ENC (or hiera),\nso I don't really have other experience with it.\n\nThat said, /opt/puppetlabs/server/apps/puppetserver really seems to be the\nwrong place to put lockfiles...\n\nOn Thu, Jun 25, 2015 at 11:39 AM, Jeff McCune (JIRA) <\n\n", "created": "2015-06-25T11:58:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "Also, I've tried changing the ownership\nof  /opt/puppetlabs/server/apps/puppetserver to puppet, and then it appears\nto work, so it seems it is trying to use that directory.\n\n\n", "created": "2015-06-25T12:02:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a1dc061a-072b-4499-acc0-481330ac2c40]  I'm was not able to reproduce this issue with a trivial ENC script.  Is there a chance this is a problem with the ENC script you're using?  Could we take a look at it?\n\nHere's what I tried:\n\nInstall puppetserver 2.1.1 from the PC1 repository.\n\nCreate the following trivial ENC script with mode {{0755}}\n\n{code}\n--- /dev/null   2015-06-25 05:33:24.310000043 -0700\n+++ /etc/puppetlabs/puppetserver/enc    2015-06-25 11:06:54.532880595 -0700\n@@ -0,0 +1,4 @@\n+#! /bin/bash\n+logger \"/etc/puppetlabs/puppetserver/enc $@\"\n+echo '--- '\n+echo 'environment: production'\n{code}\n\nConfigure puppetserver to use this script:\n\n{code}\n--- /etc/puppetlabs/puppet/puppet.conf.orig     2015-06-25 10:41:37.704844431 -0700\n+++ /etc/puppetlabs/puppet/puppet.conf  2015-06-25 11:08:28.676882839 -0700\n@@ -7,6 +7,8 @@\n [master]\n vardir = /opt/puppetlabs/server/data/puppetserver\n logdir = /var/log/puppetlabs/puppetserver\n rundir = /var/run/puppetlabs/puppetserver\n pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid\n codedir = /etc/puppetlabs/code\n+node_terminus = exec\n+external_nodes = /etc/puppetlabs/puppetserver/enc\n{code}\n\nStart puppetserver with {{puppetserver foreground --debug}}\n\nRun the agent on the puppetserver with {{puppet agent --test --server $(facter fqdn)}}\n\nObserve that the ENC script fires as expected, without error:\n\n{code}\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for kyzbcjq08laqbl2.delivery.puppetlabs.net\nInfo: Applying configuration version '1435256180'\nNotice: Applied catalog in 0.02 seconds\n{code}\n\nAnd the ENC also fires, looking at /var/log/messages:\n\n{code}\nJun 25 11:16:20 kyzbcjq08laqbl2 root: /etc/puppetlabs/puppetserver/enc kyzbcjq08laqbl2.delivery.puppetlabs.net\n{code}", "created": "2015-06-25T12:18:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "When /opt/puppetlabs/server/apps/puppetserver is owned by root, I get this:\n\n2015-06-25 12:36:17,768 ERROR [qtp1038128573-40] [puppet-server] Puppet\nFailed when searching for node dev.puppet.ucar.edu: Permission denied -\n/opt/puppetlabs/server/apps/puppetserver/puppet20150625-26793-6112qg.lock\n\nIf I change the ownership of the directory to 'puppet', the run completes.\n\nAre you running on debian", "created": "2015-06-25T12:42:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "Sorry-- not clear in my email", "created": "2015-06-25T12:45:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a1dc061a-072b-4499-acc0-481330ac2c40] You're running this on Debian 8, right?  The Debian 8 puppetserver packages from nightlies are pre-release and likely have issues related to paths.  We have not yet released official Debian 8 packages for puppetserver.\n\nCould you try this on Debian 7 which we do have official released packages for and see if it works?  Alternatively, a work-around might be to wait for a future version of puppetserver, we should have official Debian 8 packages in the near future, and those packages should not have this issue.\n\nI tried to reproduce this error on an Enterprise Linux 7 system, just as an FYI.", "created": "2015-06-26T12:04:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}What are the perms/ownership of /opt/puppetlabs/server/apps/puppetserver on your system?{quote}\n\nOn my EL 7 system they're also root:root.  I believe we're no longer writing the lock file to that location in the officially released packages.", "created": "2015-06-26T12:05:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "I guess I'll just wait for the official Debian 8 packages", "created": "2015-06-29T08:58:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a1dc061a-072b-4499-acc0-481330ac2c40]\n\n{quote}Do you have any ETA for 4.x packages on Debian 8?{quote}\n\nYou can install official puppet-agent packages for Debian 8 today.  Version 1.2.1 of the puppet-agent package should be available for Debian 8.\n\nPuppet Server, however, is not currently available as an official release on Debian 8.\n\nMy best estimate is that we'll have official Debian 8 support in a matter of weeks, probably not months.  I've created SERVER-775 and added you as a watcher which is where we're planning out everything we need to do to make this happen.  I've added you as a watcher, however, you probably won't find SERVER-775 all that interesting since it's a bit about how the sausage is made.  I expect another ticket to spin out of SERVER-775 which will provide more concrete information about the official release.  There will also likely be a ticket spinning out of SERVER-775 that will involve publishing nightly builds for Debian 8 again.  It's these two tickets you'll probably be most interested in, but they don't exist yet and won't until we complete SERVER-775.\n\nHope this helps,\n-Jeff", "created": "2015-06-29T12:02:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "Thanks very much!\n\nOn Mon, Jun 29, 2015 at 12:02 PM, Jeff McCune (JIRA) <\n\n", "created": "2015-06-29T12:23:00.000000"}, {"author": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "body": "I'm still seeing the same issue with the released version for jessie, 2.1.2-1puppetlabs1", "created": "2015-11-12T13:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi [~accountid:557058:a1dc061a-072b-4499-acc0-481330ac2c40],\n\nI just went through the repro steps that Jeff described previously and was unable to reproduce this.  I basically started from a clean debian 8 VM:\n\n{code}\n# lsb_release  -a\nNo LSB modules are available.\nDistributor ID:\tDebian\nDescription:\tDebian GNU/Linux 8.0 (jessie)\nRelease:\t8.0\nCodename:\tjessie\n{code}\n\nThen I installed the puppet collections apt repo and puppetserver:\n\n{code}\nwget https://apt.puppetlabs.com/puppetlabs-release-pc1-jessie.deb\ndpkg -i puppetlabs-release-pc1-jessie.deb\napt-get update\napt-get install puppetserver\n{code}\n\nThis gave me puppetserver 2.2.1:\n\n{code}\n# dpkg -l |grep -i puppetserver\nii  puppetserver                   2.2.1-1puppetlabs1          all          Puppet Labs puppetserver\n{code}\n\nThen I followed Jeff's steps to put a trivial ENC in place and configure it via {{puppet.conf}}.\n\nI did not change the permissions on {{/opt/puppetlabs/server/apps/puppetserver}} ", "created": "2016-01-23T06:49:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "Thanks for reporting this issue. However, we haven't been able to reproduce this against the current version of Puppet, and are closing this issue now as Cannot Reproduce. If you have additional information or reproduction scenarios that may be of use, please comment in this ticket with details.", "created": "2017-03-23T16:38:00.000000"}], "components": ["Puppet Server"], "created": "2015-06-25T11:34:00.000000", "creator": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a801bff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr9j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1726713675_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_48856606352_*|*_10006_*:*_1_*:*_4471698407"}], "description": "I am trying to use a simple ENC script with \"node_terminus = exec\" .  On a client puppet run, this results in an error like this:\n\nPermission denied - /opt/puppetlabs/server/apps/puppetserver/puppet20150625-2870-tx6e5m.lock\n\nThe puppetserver process runs as the puppet user; the directory  /opt/puppetlabs/server/apps/puppetserver is owned by root (as it appears it should be). There doesn't seem to be a setting for this in puppet.conf, and the lock file should probably be written in the vardir?", "environment": "Debian Jessie\npuppetserver 2.1.1.master-0.1SNAPSHOT.2015.06.02T0902puppetlabs1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16660", "fixedVersions": [], "id": "16660", "issueType": "Bug", "key": "SERVER-773", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a1dc061a-072b-4499-acc0-481330ac2c40", "resolution": "Cannot Reproduce", "resolutionDate": "2017-03-23T16:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver attempts to write lockfile to wrong directory when used with ENC", "timeSpent": "PT0S", "updated": "2017-03-23T16:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-06-24T12:25:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2acd0b09"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xgf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_601926217_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_82863618618"}], "description": "We can send puts while setting -H \"Content-Type: text/pson; charset=foo;\" to the certificate_status endpoint.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17304", "fixedVersions": [], "id": "17304", "issueType": "Bug", "key": "SERVER-772", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2018-02-14T12:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "charset can be set to any value for some endpoints", "timeSpent": "PT0S", "updated": "2018-02-14T12:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "At least locally on my Mac, I have been able to run Native Facter along with a source build of Puppet Server.  Here are the steps I followed:\n\n1) From a fresh recursive clone of Puppet Server and checkout of the master branch, update the Facter submodule to the \"3.0.0\" tag:\n\n{noformat}\ncd ruby/facter\ngit checkout 3.0.0\n{noformat}\n\n2) Within the \"./ruby/facter\" submodule, run through the \"Native Facter\" \"Initial Setup\", \"Pre-Build\", and \"Build\" steps in https://github.com/puppetlabs/facter/blob/3.0.0/README.md.\n\nSteps below pertain to building the \"release\" variant of \"Native Facter\".  Presumably, similar steps would work for the \"debug\" variant, but I didn't try that.\n\nAfter this is complete, the following files should reside in the \"./ruby/facter/release/lib\" directory:\n\n* facter.jar\n* libfacter.3.0.0.so\n* libfacter.so symlink to libfacter.3.0.0.so\n\n3) In the \"puppetserver.conf\" file that I use when running Puppet Server, modify the \"ruby-load-path\" setting under the \"jruby-puppet\" section to include the \"./ruby/facter/release/lib\" instead of the \"./ruby/facter/lib\" directory.\n\n{noformat}\njruby-puppet: {\n  ruby-load-path [./ruby/puppet/lib, ./ruby/facter/release/lib]\n ...\n}\n{noformat}\n\n4) Launch Puppet Server with a {{lein run ...}} command from the base directory of the \"puppet-server\" repo clone:\n\n{noformat}\nFACTERDIR=$PWD/ruby/facter/release/lib lein run --bootstrap-config ./dev/bootstrap.cfg --config [mypuppetserver.conf]\n{noformat}\n\nThe Java shim class in \"Native Facter\" will look for the Facter shared library (libfacter.so) at \"/usr/local/lib\" by default.  If you do the \"Install\" steps from the \"Native Facter\" README.md at step 2, this step would probably be unnecessary because a copy of the shared library would be installed to \"/usr/local/lib/libfacter.so\".  The {{FACTERDIR}} environment variable can be used to override the default location that Facter looks in for the shared library.  I prefer localizing the Facter bits per repoclone in this way rather than referencing them from a global location but others may prefer the global approach for simplicity.\n\n", "created": "2015-06-29T12:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] this is the ticket I mentioned to you.  We are trying to decide how to prioritize it, let's sync back up on it soon.", "created": "2015-07-01T11:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] I assume we are sticking with Native Facter for now and should move forward on this from a Puppet Server perspective.  Does that sound right to you?", "created": "2015-07-15T11:08:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], yep, that sound right.", "created": "2015-07-17T00:51:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This might become easier once we have the gem version of native Facter, which is in development right now.", "created": "2018-02-14T12:33:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Native Facter is being replaced by a new Ruby implementation. We should update to that when the time comes. I'll wait on the folks writing that to let us know, and we can file a ticket then.", "created": "2020-01-29T09:07:00.000000"}], "components": [], "created": "2015-06-20T07:55:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@16f19987"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xnr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4593839966_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_140911703457"}], "description": "Now that Native Facter (Facter 3+) is on the verge of being released, we should look into what it will take for us to bump our Facter submodule up to use Native Facter.  Unlike with previous bumps of the submodule where we basically just had to move from one SHA to another one, there are some significant workflow considerations.\n\nUsing Native Facter starting from source is not as simple as Ruby Facter where you could just clone the Facter github repository and ensure that your {{ruby-load-path}} / {{RUBYLIB}} includes Facter's lib directory.  With Native Facter, a native shared library also needs to be built from the source which is checked out from the github repository.  The shared library bits will be different per OS architecture, also involving differences in the build process per architecture.  The process also builds a Java class into a jar.  The Java class is used to bridge from the - now very thin - Ruby Facter module through JNI under JRuby into the native Facter library.  See https://github.com/puppetlabs/facter/blob/3.0.0/README.md for details.\n\nWhen bumping the submodule up for Native Facter, we'll need to consider both the perspectives of a developer and of CI running automated tests.  Many of the \"integration-y\" Puppet Server Clojure tests involve bringing up the full Puppet Server + Puppet + Facter stack in order to perform properly.\n\nSome approaches to consider:\n\n1) Use Native Facter from its source repo as is done today but with some added scripting that developers and CI can run to prep the submodule.\n\n2) Work with the platform team on an approach where Native Facter could be published periodically as an artifact to Maven Central or other public repository such that Puppet Server could pull in Facter more automatically as a \"dev\" dependency for local development and testing.\n\n3) Hybrid approach where for local development the submodule is prepped from source (aided via scripting) whereas, for Clojure unit/test jobs (in Jenkins and Travis?), Facter is loaded from PL package distros like it is when Jenkins runs the Puppet Server smoke and full acceptance tests.\n\nWe should talk about options with the platform team to see how they've done this for their own development / testing (e.g., integration with core Puppet for CI).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15578", "fixedVersions": [], "id": "15578", "issueType": "Bug", "key": "SERVER-770", "labels": ["refactoring"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2020-01-29T09:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump Facter submodule to Native Facter", "timeSpent": "PT0S", "updated": "2020-01-29T09:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] ping for visibility.  As I woke with a start from the nightmares I was having about this whole situation last night :) , I had this idea which seems worth at least investigating.", "created": "2015-06-19T04:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I don't really have a clear understanding of what our new vision is w/rt semver, but we'd probably need to think about how this maps to that.", "created": "2015-06-19T04:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Another option that occurred to me, though, would be to investigate how much work it would be to do the following:\nput a feature-flag around the old auth.conf code in Ruby\nwrap all Puppet Server endpoints in the new auth system, but for the ones whose implementation involves passing through to the ruby layer, put a feature flag around the use of the new auth system{quote}\n\nThe feature flag as an incremental step toward allowing the user to opt-in to the new auth layer sounds like a good approach to me.\n\n{quote}I don't really have a clear understanding of what our new vision is w/rt semver, but we'd probably need to think about how this maps to that.{quote}\n\nYeah, I don't have a good understanding of that either.  We should talk about whether we'd want to consider having a feature flag that allows the user to opt-in to the Clojure auth.conf for the existing certificate-status and admin-apis - which, if we're still following semver could allow us to avoid forcing a major version bump in the first pass - or whether we want to just roll over to the new approach with no fallback to use the Clojure 'client-whitelist' - in which case, I'd think a major version bump would be warranted.\n\n-- \n\nI like the idea of the feature flag for wrapping the \"Puppet Server endpoints in the new auth system\".  One alternative to having to plumb a second feature flag down into the core Ruby Puppet code for auth.conf would be to just ask users that want to go with the new Clojure auth.conf for everything to:\n\n1) Enable the Clojure-layer auth.conf feature flag for the master endpoints.\n2) Change the old-style \"auth.conf\" that the Ruby code would read to just permit all:\n\n{noformat}\npath /\nauth any\nallow *\n{noformat}\n\nIf we did it that way, I'm thinking we might not have to change anything the core Ruby Puppet code that would be throw-away work while still having a path to allowing the Clojure layer to make auth decisions which aren't confusingly subverted later by the Ruby Puppet auth.conf code.  I could be totally misguided in my thinking about how this would work, though.\n ", "created": "2015-06-19T12:10:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Notes\n\nI'll clean these up and summarize them at the end of the work on this ticket, but in the meantime I'll use comments to accumulate the information.\n\nRegarding the feature flag necessary for Ruby core, this should be easy to add, either in the {{prepare}} or the {{check_authorization}} methods in {{lib/puppet/indirector/indirection.rb}}.\n\nThis debugging line informed me that all requests I tried from a 4.2.x agent flow through prepare.  My suggestion is to simply wrap prepare's call to check_authorization inside of a feature flag conditional check.\n\n{code}\ndiff --git a/lib/puppet/indirector/indirection.rb b/lib/puppet/indirector/indirection.rb\nindex 6a894f4..9d4f21d 100644\n--- a/lib/puppet/indirector/indirection.rb\n+++ b/lib/puppet/indirector/indirection.rb\n@@ -286,6 +286,7 @@ class Puppet::Indirector::Indirection\n   # Check authorization if there's a hook available", "created": "2015-07-13T17:21:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "Yes, check_authorization is the place to put the feature flag test on the ruby side.\n\nI like your idea of having the Puppet Server manage the flag value, this way there won't be any discrepancies between both components. The flag itself can be implemented as an hidden configuration (I'm not sure that exists, though), or as a feature check (I mean the things in lib/puppet/feature/), which would have my preference.\n", "created": "2015-07-16T12:03:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Thinking about this more, it seems weird to have the ruby authorization check be governed by a feature flag.  It makes total sense, if trapperkeeper-authorization is present and enabled, then the tk-authz feature is present and ruby authz should be disabled.\n\nHowever, this tightly couples the disabling of ruby authz with the enabling of tk-authz.  This is desirable from a UX perspective, so we should definitely couple the two by default, but it limits flexibility a little in the event we want ruby authz disabled for other reasons.\n\nTo this end, I'm going to proceed with making this a \"hidden\" setting rather than a feature.  Puppet Server will use the setting to disable ruby authz if tk-authz is enabled, and vice-versa.  We could still easily implement a Puppet::Util::Feature to model tk-authz, but I'd like to avoid tightly coupling the behavior of ruby authz to the feature.", "created": "2015-07-16T12:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}To this end, I'm going to proceed with making this a \"hidden\" setting rather than a feature. Puppet Server will use the setting to disable ruby authz if tk-authz is enabled, and vice-versa. We could still easily implement a Puppet::Util::Feature to model tk-authz, but I'd like to avoid tightly coupling the behavior of ruby authz to the feature.{quote}\n\nI think we're envisioning that a mode Puppet Server could run in where \"tk-authz\" is enabled for all of the Clojure-level endpoints but ruby-authz is still enabled/in use for the endpoints whose implementation lives in Ruby Puppet.  This would be the interim solution that would allow for users to try out \"tk-authz\" for endpoints implemented in Clojure Puppet Server but not immediately be forced to that for the Ruby master endpoints.  (Presumably, there would be a hard break on a major version boundary later where they would be forced to migrate).  Is this something you're keeping in mind as part of the implementation approach?", "created": "2015-07-16T13:01:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I have a new POC build that uses a very basic feature flag implementation to switch between tk-authorization and Puppet's authconfig for the puppet master service.\n\nBranch at: https://github.com/jeffmccune/puppet-server/tree/task/master/SERVER-769_auth_conf_feature_flag\n\nTomorrow I'll roll builds from this branch for feedback.  This will require a custom build of the puppet-agent package since there is a new setting in Puppet to disable authconfig entirely.\n\nPuppet server checks the environment variable {{FEATURE_TK_AUTHZ}} and if it's true, then it will wrap the puppet master handler with tk-authz checks and also configure Puppet with {{bypass_authorization = true}}.", "created": "2015-07-16T18:51:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:62438584f813eb006928dc81] I've got a build up which has trapperkeeper-authorization enabled for all of our endpoints.\n\nTo install on an EL-7 machine:\n\nEnable the PC1 repo\n\n{code}\nyum localinstall http://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm\n{code}\n\nConfigure my repository which has the updated packages:\n\n{code}\npatch -p0 /etc/yum.repos.d/puppetlabs-server769.repo <<EOF\n--- /dev/null 2015-07-17 07:47:53.248000041 -0700\n+++ /etc/yum.repos.d/puppetlabs-server769.repo 2015-07-17 15:41:26.730702944 -0700\n@@ -0,0 +1,6 @@\n+[server769]\n+name=SERVER-769\n+baseurl=https://dl.dropboxusercontent.com/u/469429/tickets/server769/build2/el/7/PC1/x86_64/\n+gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs\n+enabled=1\n+gpgcheck=0\nEOF\n{code}\n\nThen, install as normal with {{yum install puppetserver}}.  Both puppetserver and puppet-agent should come from the server769 repository.\n\nIn order to have all requests handled by trapperkeeper-authorization, try running like so:\n\n{code}\nFEATURE_TK_AUTHZ=true /opt/puppetlabs/bin/puppetserver foreground\n{code}\n\nWith this flag set to true, puppetserver will load Puppet with the new {{bypass_authorization}} setting set to {{true}}, which in turn will disable all auth.conf authconfig authorization in Puppet.  Instead, all requests will be authorized using a ring middleware function that calls into trapperkeeper-authorization.\n\nExpect to see {{INFO  [p.p.ringutils] AUTHZ: Using tk-authz because FEATURE_TK_AUTHZ=true}} in the console output.  This message is slightly misleading, tk-authz will always be used for non-puppet services such as the admin API.\n\nHere's a default rules.conf which I translated from Puppet's auth.conf\n\nThese are presently missing the admin API rules.  If you exercise this API please let me know your experience augmenting the rule set.\n\n{code}\nrules = [\n  # path /puppet/v3/environments\n  # method find\n  # allow *\n  {\n    type: path\n    path: /puppet/v3/environments\n    method: get\n    allow: [ \"*\" ]\n  },\n  # # allow nodes to retrieve their own catalog\n  # path ~ ^/puppet/v3/catalog/([^/]+)$\n  # method find\n  # allow $1\n  {\n    type: regex\n    path: \"^/puppet/v3/catalog/([^/]+)$\"\n    method: post\n    allow: [ \"$1\" ]\n  },\n  # # allow nodes to retrieve their own node definition\n  # path ~ ^/puppet/v3/node/([^/]+)$\n  # method find\n  # allow $1\n  {\n    type: regex\n    path: \"^/puppet/v3/node/([^/]+)$\"\n    method: get\n    allow: [ \"$1\" ]\n  },\n  # # allow all nodes to store their own reports\n  # path ~ ^/puppet/v3/report/([^/]+)$\n  # method save\n  # allow $1\n  {\n    type: regex\n    path: \"^/puppet/v3/report/([^/]+)$\"\n    method: put\n    allow: [ \"$1\" ]\n  },\n  # # Allow all nodes to access all file services", "created": "2015-07-17T16:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I was able to install those packages and did a successful agent run on the master using the agent's own certificate.  I then did a request to the \".../v3/nodes\" endpoint using a different certificate name than that which was in the client certificate used for the connection.  The master responded with a 403 in this case, which was good since the \"rules.conf\" prohibits that:\n\n{noformat}\n{\n    type: regex\n    path: \"^/puppet/v3/node/([^/]+)$\"\n    method: get\n    allow: [ \"$1\" ]\n  },\n{noformat}\n\nI ran into a problem when I tried to do an agent run using a certname that the master had not seen previously, however.  In this case, the server returned an \"Error 500\" for the request to the \"/certificate\" endpoint with a backtrace like the following:\n\n{noformat}\nclojure.lang.ExceptionInfo: Input to authorize-request does not match schema: [nil (named {:ssl-client-cert (not (instance? java.security.cert.X509Certificate nil))} request)]\n        at puppetlabs.puppetserver.ringutils$eval13262$authorize_request__13263.invoke(ringutils.clj:170) ~[na:na]\n        at puppetlabs.puppetserver.ringutils$eval13309$wrap_with_authz_rules_check__13310$fn__13313$fn__13314.invoke(ringutils.clj:206) ~[na:na]\n        at puppetlabs.puppetserver.ringutils$wrap_exception_handling$fn__13353.invoke(ringutils.clj:230) ~[na:na]\n        at puppetlabs.puppetserver.ringutils$wrap_with_puppet_version_header$fn__13358.invoke(ringutils.clj:242) [na:na]\n        at puppetlabs.puppetserver.ringutils$wrap_response_logging$fn__13173.invoke(ringutils.clj:123) [na:na]\n        at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__8412.invoke(jetty9_core.clj:408) [na:na]\n{noformat}\n\nI assume this is because there's still some work needed to allow for an agent to make a request to the server which does not have an SSL client cert and have the result successfully delivered.  In other words, supporting the equivalent of \"Auth: Any\" from auth.conf (https://docs.puppetlabs.com/puppet/latest/reference/config_file_auth.html#auth) when specifying rules.  This is probably something we'll want to pursue reasonably soon to make a POC more usable for typical users.\n", "created": "2015-07-20T14:32:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "[~accountid:62438584f813eb006928dc81] tk-authz doesn't yet support the possibility for a rule to also match for non-authenticated clients (ie clients without certificate). Hence the exception.\n\nI'll see if I can come up with a new version introducing an equivalent of \"auth any\" during the next week-end.\n", "created": "2015-07-20T14:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:623c15ada1d81f0069d8e3ba].  That would be great if you get around to doing that. I'm thinking that the equivalent of \"auth: yes\" vs. \"auth: any\" would be sufficient.  Not sure how useful \"auth: no\" would be.", "created": "2015-07-20T15:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Another thing we'll need to think about is how/if we want to support environment-specific authorization like is described here - https://docs.puppetlabs.com/puppet/latest/reference/config_file_auth.html#environment.  This was also mentioned in passing on the puppet-dev mailing thread about trapperkeeper-authorization, https://groups.google.com/forum/#!topic/puppet-dev/P6vas3tvUzM.  Where the environment is no longer part of the base URI - instead moving to a query parameter in Puppet v4 - including the environment in the \"path\" for a type of \"regex\" probably wouldn't make sense.  I know [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] was keen on making the tk-auth implementation as reusable across contexts as possible so I'm not sure if having \"environment\" be a first-level setting like it was with \"auth.conf\" in Ruby Puppet is the right approach.  A {{query-param}} level setting with the ability to do key/value pair matches could be more flexible for this kind of thing - but maybe too flexible.  I'm not really proposing a solution for now.  Just pointing this out as something we're going to have to consider with respect to backward compatibility for \"auth.conf\" functionality.\n", "created": "2015-07-20T15:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] I'm not sure if the {{bypass_authorization}} flag works with this POC build as expected.  When I run the foreground command as ...\n\n{noformat}\nFEATURE_TK_AUTHZ=true /opt/puppetlabs/bin/puppetserver foreground\n{noformat}\n\n... then it does appear to work as I'd expected - all authorization requests seem to be handled by trapperkeeper-authorization, backed by the rules in {{/etc/puppetlabs/puppetserver/rules.conf}}.  When I run it as this, though, ...\n\n{noformat}\n/opt/puppetlabs/bin/puppetserver foreground\n{noformat}\n\n... it appears that trapperkeeper-authorization is no longer used for the Puppet master-bound requests, but it also appears that the Ruby auth.conf isn't being honored.  In the foreground output, I see:\n\n{noformat}\n2015-07-20 15:34:28,935 INFO  [p.s.j.jruby-puppet-internal] Configuring Puppet with bypass_authorization = false because FEATURE_TK_AUTHZ is not 'true'\n2015-07-20 15:34:56,131 INFO  [puppet-server] Puppet Bypassing insertion of default ACL because bypass_authorization is true\n{noformat}\n\nI had been testing this with a request that I was expecting to be forbidden by both my \"rules.conf\" and \"auth.conf\" file - a \"node\" GET request with a path set to \"\\^/puppet/v3/node/(\\[^/\\]+)$\" and with allow set to \"$1\" and where I'm attempting to get the node for a name that doesn't match the one on my client certificate.  With {{FEATURE_TK_AUTHZ=true}}, I get an HTTP 403 for the request, as expected.  With {{FEATURE_TK_AUTHZ}} undefined, however, the request succeeds - HTTP 200 OK and valid payload.\n\nDoes this suggest that there's something in the initialization of the {{bypass_authorization}} Puppet setting that isn't happening properly or does it look like I'm doing something wrong?", "created": "2015-07-20T16:52:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:623c15ada1d81f0069d8e3ba]\n\n{quote}Jeremy Barlow tk-authz doesn't yet support the possibility for a rule to also match for non-authenticated clients (ie clients without certificate). Hence the exception.\nI'll see if I can come up with a new version introducing an equivalent of \"auth any\" during the next week-end.{quote}\n\nBrice, please see SERVER-802 which is a more specific ticket for the {{auth any}} behavior.  I mention this only because it might be good to put the comments with that ticket instead of this one if you get the time to do any of this ahead of us.", "created": "2015-07-20T17:44:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] {quote}Jeff McCune I'm not sure if the bypass_authorization flag works with this POC build as expected.{quote}\n\nThanks, I'll dive in and take a look now and roll a new build.  Those log messages are definitely strange and contradictory so I suspect there's a branching error somewhere in the POC build.", "created": "2015-07-20T17:45:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] You're going to love why that didn't work.  Took me a minute to figure out...\n\nhttps://github.com/jeffmccune/puppet-server/commit/4d5736b07ffd4511b76b4e9666097ad20a7d0f89\n\nBasically, the difference between {{(.put puppet-config \"bypass_authorization\" \"false\")}} (which, fantastically, sets it to true) and {{(.put puppet-config \"no-bypass_authorization\" \"\")}} which does what we want and sets it to false.", "created": "2015-07-20T18:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] New build will land at http://builds.puppetlabs.lan/puppetserver/2.1.2.SNAPSHOT.2015.07.20T1715/", "created": "2015-07-20T18:19:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] New build, puppetserver-2.1.2-0.1SNAPSHOT.2015.07.20T1715.el7.noarch.rpm, is in the server769 repository mentioned above.", "created": "2015-07-21T12:17:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Feature flag implemented, feedback is rolling in, tickets are being created with complexity estimates for planning.  Marking this as resolved.\n\nThe next big ticket that will inform complexity estimates is SERVER-801 which we hope to pull into the sprint starting today.", "created": "2015-07-22T14:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] One of the main deliverables that I believe was envisioned for this ticket originally was a writeup of the chunks of work and WAG development estimates related to implementing a feature flag to switch between Clojure tk-auth rules.confs and Ruby auth.conf for the master endpoints - and for just wrapping the Clojure-level endpoints more generally.  I know you'd spent some time writing that up separately in a spreadsheet.  Could you paste some of that content here for posterity?  I believe one of the next steps specific to this ticket was going to look at that writeup and decide as a team whether or not we want to go with the feature flag implementation based on the anticipated LOE.", "created": "2015-07-22T14:47:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}One of the main deliverables that I believe was envisioned for this ticket originally was a writeup of the chunks of work and WAG development estimates related to implementing a feature flag to switch between Clojure tk-auth rules.confs and Ruby auth.conf for the master endpoints - and for just wrapping the Clojure-level endpoints more generally. I know you'd spent some time writing that up separately in a spreadsheet. Could you paste some of that content here for posterity?{quote}\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Yes, will do ASAP!", "created": "2015-07-22T15:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}I know Eric Sorenson was keen on making the tk-auth implementation as reusable across contexts as possible so I'm not sure if having \"environment\" be a first-level setting like it was with \"auth.conf\" in Ruby Puppet is the right approach. {quote}\n\nYes, I have had initial discussions with [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] about how we really want to be able to use this for any PL TK web service, and maybe eventually even integrate it with the PE RBAC system", "created": "2015-08-05T07:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}having environment specified directly in the rules seems like something we need to avoid...{quote}\n\nI agree with that.  Are you proposing that we not provide a way at all in the tk-auth world to set rules based on the {{environment}}?  Not sure if that's a critical backward compatibility requirement that we need to retain - [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] or [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584]?  Or instead are you proposing that we do figure out a way that it could be expressed in the rules but in a more generic, extensible way - like maybe a {{query-params}} extension or some better idea you may have?", "created": "2015-08-05T09:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I created TK-259 to cover the topic of adding support for set rules by {{environment}}.  [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] or [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584], I'd very much like to get your feedback on this.  If we don't explicitly prioritize this in for our initial release of the auth.conf feature, I'm assuming we'd just stick with the status quo of not supporting it in trapperkeeper-authorization.  Not sure if this is going to be a significant problem or not...", "created": "2015-08-10T12:37:00.000000"}], "components": [], "created": "2015-06-19T04:00:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d901361"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyonf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37747542_*|*_3_*:*_1_*:*_1205039205_*|*_5_*:*_1_*:*_37396294735_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1646640094"}], "description": "We need to get a rough sense of how feasible it would be to cut all Puppet Server endpoints over to support using {{trapperkeeper-authorization}} for their certname-based authorization requirements, as opposed to the older Ruby-based auth.conf implementation.\n\nOriginally the intent had been to tackle this all in a single, major release of Puppet Server; remove all of the old authorization code and wrap the new middleware around all endpoints.\n\nHowever, there are some issues that will make that an expensive endeavor:\n\n1. Removing the ruby code and the calls to it should hopefully not be a tremendous amount of work, but testing / QA will be extremely important and probably quite time-consuming\n2. While we continue to support Rack and Webrick-based masters, we can't remove the old authorization code, or those masters will no longer have any authorization mechanism.  Thus, we'd need to remove Rack and Webrick support at the same time that we remove the auth calls from the Ruby code.  This will be a big undertaking; it will happen soon, but not as soon as we'd like in terms of being able to move forward with a clojure-based auth system.\n\nAnother option that has been discussed would be to go ahead and wire in the new auth system for pure Clojure HTTP endpoints and leave the Ruby auth system in for the Ruby endpoints.  This would allow us to at least begin the transition and give us some good solid foundation for moving forward, but would result in a pretty terrible UX in that there would be two auth files to manage, and the burden of knowing which routes were protected by which auth configuration would be on the user (and our docs).  That's pretty gross. (Although, it could be argued that the current cert whitelist settings for puppet-admin-api and certificate-status have already put us into a somewhat split-brain state that is burdensome for users, so maybe this wouldn't be worse?)\n\nAnother option that occurred to me, though, would be to investigate how much work it would be to do the following:\n\n* put a feature-flag around the old auth.conf code in Ruby\n* wrap *all* Puppet Server endpoints in the new auth system, but for the ones whose implementation involves passing through to the ruby layer, put a feature flag around the use of the new auth system\n\nIt seems like this might be a manageable amount of work; I believe there are only a few lines of code in the Ruby Puppet HTTP layer that would need to be wrapped in the feature flag, and it definitely wouldn't be much work on the Clojure side for Puppet Server.\n\nIf we can tinker with this and convince ourselves that it's a fairly trivial amount of work, it would allow us to:\n\n* move all Puppet Server auth over to the new system in one fell swoop, without breaking Rack/webrick users\n* Allow users to opt-out of the new auth system in Puppet Server, for the Ruby-based endpoints, if they have a complex auth.conf setup that they don't want to port to the new config syntax right away\n* We still need solid testing and QA on the new auth system, but if a security flaw were to arise after we released, toggling back to the old system might serve as a workaround while we get a fix out.\n\nThe goal of this ticket is just to tinker with the relevant bits of the code enough to get a rough idea of how much work would be involved in a full implementation of this strategy.  I think it would suffice to just write some notes in the comments on this ticket, indicating what might be reasonable chunks to break the work into, and a WAG of the number of developer-weeks required for each chunk.  Then we can review those notes and decide whether this makes sense, and from there, create new Jira tickets and get them prioritized.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15196", "fixedVersions": [], "id": "15196", "issueType": "Task", "key": "SERVER-769", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2015-07-22T14:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "scope a rough LOE for using trapperkeeper-authorization for all Puppet Server HTTP endpoints", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c15ada1d81f0069d8e3ba", "body": "I'm available to help move forward on this topic. Let me know if you find anything that should/could be improved or done differently in the trapperkeeper-authorization lib.", "created": "2015-06-19T03:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c15ada1d81f0069d8e3ba] awesome, thanks!\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] ping for visibility.  Planning on getting this brought into the next sprint for one of the two teams.", "created": "2015-06-19T04:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c15ada1d81f0069d8e3ba] also, apologies again that it's taken us this long to get the ball rolling on this :)", "created": "2015-06-19T04:11:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "PR is up for review / comment, but should not be merged.\n\nMoving on to building packages using this process: https://confluence.puppetlabs.com/display/ENG/How+To+build+Puppet+Server+from+a+local+topic+branch\n\nAnd then writing up notes on how to populate {{/etc/puppetlabs/puppetserver/rules.conf}} for [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] et al.", "created": "2015-06-26T14:22:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "A few comments after trying the build:\n\ntrapperkeeper-authorization notes\n\n- error messages only show up in debug, no indication without debug when a request fails. there should probably be a single line at 'info' level w/ some greater verbosity at 'debug'\n- debug messages dump out the entire cert data structure, which is too much info and not really helpful.\n- if the config auto-reloads on change, it should indicate when it does so\n- requests for non-existent paths still return a 403, i'd expect that to be a 404. \n- changing an 'allow' to 'deny' in this rule does not actually deny requests, which might be a bug:\n\n{code:json}\nrules = [\n  {\n    path: /puppet-admin-api/v1/environment-cache\n    type: path\n    deny: [ \"*\" ]\n  }\n]\n{code}\n\nbut a bigger problem is that i have no further way to determine why that rule isn't matching. the only log line is:\n2015-06-29 22:40:49,655 DEBUG [p.p.ringutils] Authorized: true for client glitched.vmlocal message:  request: {:ssl-client-cert ....}\n\nThe overarching theme I'd like to promote for new puppetserver work (and backport to the existing stuff!) is user-friendly troubleshooting, and it was actually really illuminating to try this out \"cold\" and see how far I could get.", "created": "2015-06-29T16:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}requests for non-existent paths still return a 403, i'd expect that to be a 404.{quote}\n\nIs this how \"auth.conf\" works in Ruby Puppet?  At least for cases where the rule would deny access to the path, it seems like it might be an improvement to do a 403 instead of a 404, e.g., to guard against a malicious client trying to collect info by poking at different endpoints just to see if they exist.", "created": "2015-06-29T16:53:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "If there's one thing I've found in helping people fix problems with puppet, it's that the risk of information disclosure from overly-verbose messages is a tiny, tiny drop in a very large bucket of tears that being clear and up-front about what's wrong could have eliminated.", "created": "2015-06-29T16:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}If there's one thing I've found in helping people fix problems with puppet, it's that the risk of information disclosure from overly-verbose messages is a tiny, tiny drop in a very large bucket of tears that being clear and up-front about what's wrong could have eliminated.{quote}\n\nTotally agree with the points above about how the error message needs to be much more useful / readable for \"denied\" cases in general.  I still think that if the result after evaluating all of the authorization rules defined for a \"non-existent\" endpoint is that the request should be \"denied\" that it would be better for the response to have a 403 than a 404 - to reduce the likelihood of unintentional information disclosure.  Will be good to get this point hashed out, though, in order to figure out the right point in the request handling process at which to hook up the authorization logic.", "created": "2015-06-29T18:26:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "[~accountid:623c0a337910a200718b9059], just a note: it seems that both the logging at debug level and the 403 come from the puppet-server glue, not the trapperkeeper-authorization library itself.\n\nLooking at my code, trapperkeeper-authorization always returns a message when a request is denied, but never when it is allowed (which is your case). That means no rules prevented the request to pass, which seems like an issue. I don't exactly know if the problem is in the glue or the library itself, but it might be a bug in the library. One possibility is that you were running with the default puppet-server embedded ruleset (which allows access to /puppet-admin-api), and the rule file wasn't loaded.\nOr it might just be that the glue never reloads the rules.conf when it changes (the trapperkeeper-authorization doesn't do that by itself).\nHave you tried restarting the puppet-server?\nIt looks like we are missing a system to dump the loaded rules for debugging and analysis.\n\nRegarding returning a 404 instead of a 403, the library consider an unknown rule as denied (to cover the case someone misconfigured its rules.conf file, you don't want to have holes open by default). So maybe the ring handler should first check the route exists before asking the authorization layer if it is allowed to be able to return a 404 (I don't know if that's even possible).\n\nWhat can I do to help?\n\n\n", "created": "2015-06-30T08:51:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:623c15ada1d81f0069d8e3ba] You're correct, the logging issues are in the glue code, I'm adding them in presently to get additional feedback on what they look like.\n\nI think it would help if you took a look at the next build and let us know what you think of the logging and if it's useful or not and working as the library intends.", "created": "2015-06-30T12:22:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584], [~accountid:623c15ada1d81f0069d8e3ba]\n\nI've published a new build, {{2.1.2.SNAPSHOT.2015.06.30T1731}}, which should have some improved debugging messages.  I'd love to hear feedback on the messages and how helpful (or not) they are, and any pieces of information that are missing which would be helpful.\n\nThe behavior of {{deny: [ \"*\" ]}} is a little surprising to me, but I was able to get a pretty decent message with {{allow: [ ]}} and no {{deny}} entry.  I'd love it if we could hammer on this a bit more to help in my understanding and broaden my perspective.\n\nHere's the new build which will work on EL-7 x86_64 with the PC1 repo: [puppetserver-2.1.2-0.1SNAPSHOT.2015.06.30T1731.el7.noarch.rpm|https://dl.dropboxusercontent.com/u/469429/tickets/server768/puppetserver-2.1.2-0.1SNAPSHOT.2015.06.30T1731.el7.noarch.rpm].\n\nHere are the notes on taking this build for a spin: [SERVER-768 Authorization Notes|https://docs.google.com/document/d/1aw25WDHr83ozVSNMrdohJXXga95t1RzXeQpm0t_WU1c/edit?usp=sharing]", "created": "2015-06-30T18:46:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "FYI, I made incremental changes addressing Eric's comments in build {{2.1.2.SNAPSHOT.2015.06.30T1731}}, however the following two comments have not been addressed at all in this build:\n\n{quote}requests for non-existent paths still return a 403, i'd expect that to be a 404.{quote}\n\nThis comment is non-trivial to address and would require fairly substantial design work to figure out a game plan to address this effectively.  I'm deferring this in the hope we can come to a better understanding of the use case and priority before making this investment for the POC.\n\n{quote}error messages only show up in debug, no indication without debug when a request fails. there should probably be a single line at 'info' level w/ some greater verbosity at 'debug'{quote}\n\nThis comment is simple to address and I will do so in the next iteration, just didn't get to it before publishing the last iteration.", "created": "2015-07-01T15:34:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "404 instead of a 403 will require to check if a route matches, then do the authz check, and finally if granted, dispatch the route. The good news is that puppet-server now uses bidi (through comidi) which might allow to find a matching route prior to authz (with something that looks like puppetlabs.comidi/wrap-with-route-metadata). This requires modifications to puppetlabs-comidi, though.\n\nCurrent puppet version also does authorization before route dispatching, thus I'm pretty sure it will return 403 (and even 401) instead of a 404.", "created": "2015-07-02T00:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "If we want the route match to happen before the auth check, we just need to wrap the auth middleware around the leaf nodes of the bidi route tree, and *then* build the final ring handler function.  As opposed to building the ring handler function and then wrapping that with the auth middleware.  If we did that, then bidi's route matching would already happen before the auth check.\n\nWould probably need to implement TK-248 for comidi first, to make that easier.\n\nI'm confident that that is not going to be hard, though.  So I like Jeff's idea about deferring until we have a better user story and prioritization.  I'd really like to get our heads around our options for SERVER-769 now that we have a basic, working POC.\n", "created": "2015-07-02T02:00:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Eric has the POC, and suggested changes will happen in a future build incorporated into another ticket.", "created": "2015-07-07T17:23:00.000000"}], "components": [], "created": "2015-06-19T03:41:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74dee66f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyor1r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_38288773_*|*_3_*:*_2_*:*_869239228_*|*_10009_*:*_1_*:*_258626200_*|*_5_*:*_1_*:*_38682359474_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_438326519"}], "description": "We need a general mechanism for doing certname-based authorization for clojure HTTP endpoints.\n\n[~accountid:623c15ada1d81f0069d8e3ba] has put together what looks to be a very useful initial implementation of the mechanisms for defining and applying auth rules, here:\n\nhttps://github.com/masterzen/trapperkeeper-authorization\n\nThe first step for us is to put together a very, very simple POC build of OSS Puppet Server that uses this library to protect one or two of our existing endpoints.  The goal is to be able to build a one-off RPM that contains the functionality, and share that around with product, UX, and other interested parties, strictly for the purposes of validating that the UX is acceptable and the feature set is robust enough to meet the product needs.\n\nI would suggest the following as probably the minimal set of steps required for this:\n\n* branch OSS puppet server\n* add a dep on [~accountid:623c15ada1d81f0069d8e3ba]'s library\n* find the code where we currently read config settings for a certificate whitelist for the {{certificate_status}} and {{puppet-admin-api}} endpoints, comment it out, wrap the ring handlers with a hard-coded call to [~accountid:623c15ada1d81f0069d8e3ba]'s middleware\n* add a default version of a {{rules.conf}} file to the ezbake config on your branch\n* build rpms from ezbake\n* write up a few notes / docs on how to install and play with the two routes.\n\nGoal here is to turn this around as quickly as possible so that we can start getting feedback on UX/product feature requirements.\n\nWe'll file some follow-up tickets for next steps once we start getting some feedback.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "17303", "fixedVersions": [], "id": "17303", "issueType": "Task", "key": "SERVER-768", "labels": [], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2015-07-07T17:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Roll a POC build of Puppet Server that uses new clojure authorization system around an endpoint", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm still more of a fan of trying to do the memory check outside of the Java process - like right before the Java process is started.  That way we don't have to \"hope\" that whatever happens within the Java process' initialization doesn't cause the service to die before our code that does the memory check can be run.  This would make the logic to do the check more complicated, though, in that we'd probably have to hook it into the init script via bash or something.  And it would probably have the disadvantage of not having the right knowledge of what the Java heap size is in the case that it's not decipherable from the service's {{JAVA_ARGS}} - i.e., if someone had deleted \"-Xmx\" from the {{JAVA_ARGS}} and Java would just use a default.", "created": "2015-06-18T10:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] - fyi.", "created": "2015-06-18T14:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We talked about this one in the Puppet Server backlog grooming meeting today.  There's still some disagreement over whether the memory check should be done inside or outside of the Java process.  For the sake of an incremental improvement over the current situation - and because we don't yet know of a specific case outside of the one described for this ticket for which the memory check would not be done \"soon enough\" to be useful - we agreed to move forward with this one by just relocating the current memory check to an earlier spot in the Puppet Server Clojure code.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I would like to get your opinion as to what an appropriate location for the check would be.  I was thinking of moving this to the beginning of the {{jruby-puppet-pooled-service}}.  That would help for the case in this ticket since it would occur before any JRuby / Facter initialization has occurred, and it seems like most of our heavy memory allocations during initialization would happen after this point.  This would also have the advantage of us not having to do anything specific to have the check done for PE - at least until we might implement a PE-specific version of the {{jruby-puppet-pooled-service}}.", "created": "2015-07-01T14:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] yes, I think that makes sense as the place to move it for now.  Note that I have a branch that I'm working on for PE-8226 that will probably introduce a pe-jruby-service, so we'll need to keep that in mind, but I still think the suggestion makes sense.\n\nAlso, I'm not opposed to having a separate ticket for considering doing this in the service init instead of inside the JVM in the future, but that seems like a lot more work and I don't think the ROI is acceptable given the much simpler incremental step we can take for now.  It does seem like it could be a better long-term solution if we ever have bandwidth for it.", "created": "2015-07-02T02:54:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "For reference, I just ran into this again in PE2015.3, I accidentally had 3 jruby instances and my puppetserver died with no useful logging as to why it went down.  ", "created": "2015-12-04T12:51:00.000000"}], "components": [], "created": "2015-06-18T10:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52970cf1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotu7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1139414532_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_45543869626"}], "description": "When the puppetserver service from Puppet Server 2.1.1 is started on a system which has too little memory for the JVM heap size configured and Puppet Server is using Facter 3-ish (native Facter), the failure messages that the user sees are confusing.\n\nOn a CentOS 7 system, I started the puppetserver service with the default 2g JVM heap size configured but with only 1g of RAM allocated to my VM.  The puppetserver java process did startup and produced some normal-looking messages in the \"puppetserver.log\" file:\n\n{noformat}\n2015-06-17 10:42:35,403 INFO  [o.e.j.u.log] Logging initialized @12634ms\n2015-06-17 10:42:45,608 INFO  [p.t.s.w.jetty9-service] Initializing web server(s).\n2015-06-17 10:42:45,626 INFO  [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2015-06-17 10:43:03,813 INFO  [puppet-server] Puppet Puppet settings initialized; run mode: master\n{noformat}\n\nNo messages appeared after that in the \"puppetserver.log\" file and the service startup went on to die.  In the journal, the following messages appeared around the failure:\n\n{noformat}\nJun 17 10:43:04 my.vm java[2368]: terminate called after throwing an instance of 'facter::execution::execution_exception'\nJun 17 10:43:04 my.vm java[2368]: what():  failed to fork child process.\nJun 17 10:43:04 my.vm systemd[1]: puppetserver.service: main process exited, code=killed, status=6/ABRT\nJun 17 10:43:05 my.vm systemd[1]: puppetserver.service: control process exited, code=exited status=1\nJun 17 10:43:05 my.vm systemd[1]: Failed to start puppetserver Service.\nJun 17 10:43:05 my.vm systemd[1]: Unit puppetserver.service entered failed state.\n{noformat}\n\nA while back, we had added some logic to the puppetserver service startup that would do a check of the available system RAM - derived via {{/proc/meminfo}}, if available on the system - against the configured JVM heap of the current Java process.  If system memory were deemed to be insufficient for execution, a more user friendly message like the following should be written into the \"puppetserver.log\" file before the service startup dies:\n\n{noformat}\nNot enough available RAM (xxx MB) to safely accommodate the configured JVM heap size of yyy MB ... Either increase available memory or decrease the configured heap size by ...\n{noformat}\n\nThe logic which does this check, however, is not executed before the operation which causes the Java process to fail.  {{core/validate-memory-requirements!}} is currently called from the first line in the {{init}} function of the {{master-service}}.  The {{master-service}} depends upon the {{PuppetServerConfigService}} which in turn depends upon the {{JRubyPuppetService}}.  Essentially, the {{master-service}} is unable to start initialization until at least 1 JRubyPuppet instance has been initialized because the PuppetServerConfigService needs to use that JRubyPuppet instance to derive some default settings from core Ruby Puppet.\n\nIt is during the initialization of the JRubyPuppet instance that the problem which causes the puppetserver process to die occurs.  During the first time that a Facter lookup is performed, a call to {{Facter.value}} in {{/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.rb}} to get the value of the \"operatingsystem\" fact and the error occurs.\n\nSo long as my VM has sufficient system RAM to run Puppet Server, I haven't been able to reproduce this startup failure.  I've primarily been running with 3 Gb of RAM, a 2 Gb JVM heap, and 2 JRubyPuppet instances configured when using Puppet Server 2.1.1 and Facter 3-ish.\n\nFor this particular reproduction attempt, I was using Puppet Server 2.1.1 and a nightly image of puppet-agent which has Facter 3-ish, http://nightlies.puppetlabs.com/puppet-agent/bcc98a3d6eb1aa8c698b3aa664ab9ff6b7ea5c3e/repo_configs/rpm/pl-puppet-agent-bcc98a3d6eb1aa8c698b3aa664ab9ff6b7ea5c3e-el-7-x86_64.repo.  Facter 3 won't appear in puppet-agent until the forthcoming puppet-agent 1.2.0 and later releases.\n\nThe problem occurs when Native Facter tries to fork the Puppet Server process but insufficient system memory is available.  There is some work being investigated in Native Facter itself which would hopefully reduce the likelihood of / eliminate this problem, e.g., by potentially switching from fork to vfork.  That investigation is being pursued in FACT-1083.  This ticket, then, would only be concerned with ensuring that the memory check occurs soon enough in the startup process that it would actually be evaluated.\n\nAlso, I discovered that the validate call was happening in the FOSS {{master-service}} init only -- and not in PE's {{pe-master-service}} for the PE flavor of {{puppet-server}}.  Not having this check in PE Puppet Server was probably an oversight, but it would be better if we could come up with some sort of solution which ensured that the check would happen both for FOSS and PE.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14989", "fixedVersions": [], "id": "14989", "issueType": "Bug", "key": "SERVER-767", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2016-12-09T17:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bad startup failure messages when using Facter 3-ish and too little memory", "timeSpent": "PT0S", "updated": "2016-12-09T17:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] I don't even recall off of the top of my head what we are doing in post-inst, but if you have suggestions on how we can improve this stuff, we'd be happy to help.", "created": "2015-06-18T08:40:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "Heh - I think editing puppet.conf in %post is a Bad Thing TM, and restarting the service on an upgrade is also trademarkable :)", "created": "2015-06-18T08:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "FWIW, I hate that we had to do this.  My understanding is that we ended up modifying a number of the master-specific directory paths in the post-install because the \"puppet.conf\" file is owned by the {{puppet-agent}} package rather than the {{puppetserver}} one but we didn't want to have knowledge about master-specific paths live in the {{puppet-agent}} package.  Like, it might seem weird for the {{\\[master\\]}} section of \"puppet.conf\" to be populated with those paths after a {{puppet-agent}} install on a node which is just intended to run an agent and not a master.  Ideally, we'd have all of the {{\\[master\\]}} settings be manageable in a separate file from the agent-ones, allowing for the puppetserver package to deliver its \"master.conf\" as part of the formal package without having to initialize it during the post-install.  I believe we'll be moving toward that eventually - but maybe not until the Puppet 5 timeframe.  Definitely would like to have [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] and [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] chime in with their perspective on this, though.", "created": "2015-06-18T11:01:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Yea, [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] nailed it. The puppet.conf in puppet-agent doesn't have a master section, and we don't know in advance if you'll be using it with puppetserver, running webrick, or something else entirely.", "created": "2015-06-18T12:01:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] The conflict over {{puppet.conf}} makes total sense.  Is there a reason we make this modification in the post install step of package installation instead of keeping package installation \"pure\" by moving that procedure somewhere else, e.g. the service management framework or as a required command after package installation but before the service starts?", "created": "2015-06-18T13:14:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:623c12b6ee1b5a0070293582] I don't recall the conversations exactly, but I think minimizing user steps post-install was a driver here, so that it would *just work* out of the box.", "created": "2015-06-18T13:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5b1e529cba383e0814003fb3] sorry, my phrasing was super unclear... I was just asking matthaus and rob if they had any suggestions, wasn't trying to be snarky w/you :)", "created": "2015-06-18T14:14:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] heh - no snark interpreted\n\nThe cynic in me has risen and noted that if you have to override the defaults for things to 'just work', then the defaults are broken..\n\nWhat are your thoughts on the service restart on upgrade - that seems like an easy thing not to do.", "created": "2015-06-19T02:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e75fc562ab90069f9ec16] Yeah, I think we agree with you about the defaults, but this is an artifact of the way that puppet itself blurs the lines between server/client responsibilities and mashes everything into a single config file that is difficult to tease apart.  We definitely have plans to fix that in the future but it's not something we were able to tackle all in one go, unfortunately.\n\nI have no opinions on service restart", "created": "2015-06-19T03:04:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "Right.  RPM has the %config macro to protect against exactly what's going on here.\n\nI'm pretty strongly against RPMs managing files that are marked as config that don't belong to them.  The package in this situation will almost certainly making changes to the config of a running service (see also my thread on puppet-dev about whether the default for e.g. vardir is sensible also), and there's a strong likelihood that the changes it makes alter the running configuration (because the defaults for e.g. vardir are not sensible).  There's really nothing good about that.  It's made worse by restarting the service.", "created": "2015-06-19T03:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] so, we have some plans for improving some of this around the Puppet 5 time frame, but I'm going to go ahead and move this to the RE scrum team in case you guys have any ideas for incremental improvements in the shorter term.", "created": "2015-07-01T11:20:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "To me, we should:\n\n1. Only restart a service if it was already running.\n2. Really not mangle files that are not owned by the package, but I get why we are. Obviously this needs to be fixed for the next major when we have different config files. Until then, I'm not really sure what we can do about it. Service Management framework vary greatly depending on distro/implementation. \n\n[~accountid:623c12b6ee1b5a0070293582] do you have any specific examples/ideas here? ", "created": "2015-07-06T15:37:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}Jeff McCune do you have any specific examples/ideas here?{quote}\n\nI'm not strongly opinionated about the service restart these days, but agree it should only be restarted if it's already running because this minimizes surprise.\n\nOn point 2, agree, we really should not mangle files.  Ideally, we don't modify anything, even those owned by the package, but I understand there are real-world pragmatic trade-offs that need to happen there.\n\nSpecifically, I think we should figure out some way to avoid modifying {{puppet.conf}} (or any file, but this is a clear concrete example), which is owned by puppet-agent when puppetserver is installed.  There are many ways to do this, my favorite being seeing if we can break our dependency on puppet-agent entirely.  They're just conflicting concerns, the agent and the server.  There's a whole category of issues that could be swept away if puppetserver were more self-contained and less dependent on puppet-agent.\n\nMore generally speaking, the best examples and guiding rational I've found so far are the [Solaris 11 IPS Design Goals|https://docs.oracle.com/cd/E26502_01/html/E21383/pkggoals.html].  I know it's Solaris, but the people who came up with IPS put a lot of time and effort into thinking about this stuff and they account for a lot of the same things we need to account for with our users and use cases.  Containers are the biggest concern that comes to mind, closely followed by automated provisioning in the form of Jumpstart which is analogous to Kickstart.", "created": "2015-07-06T17:14:00.000000"}], "components": [], "created": "2015-06-18T08:31:00.000000", "creator": "5b1e529cba383e0814003fb3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ad8af5f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1jxz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1133259353_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_45557051827"}], "description": "When upgrading puppetserver-2.1.0 the RPM does unexpected things:\n\nRuns %post that alters files that are config that don't actually belong to it via an external script - this reduces visibility of what the RPM does:\n\n/opt/puppetlabs/server/apps/puppetserver/scripts/install.sh postinst_redhat\n\nThe fact that it alters files from another package is worrisome enough, but there's more.\n\nHaving altered config, the %post then may make the decision to restart the service if we're upgrading (probably, we are). Given that it has altered config files that don't fully belong to it and that are almost certainly managed somewhere else, this is pretty dangerous.  It doesn't start the service on a new install, so restarting seems inconsistent.\n\nIt also makes the whole Package -> File -> Service pattern in this case untrustworthy because the package alters config, starts itself with what's probably the wrong config (explosions happen during this process and crap is left littering up the place) and then we rewrite the config and restart and cope with whatever non-deterministic things have happened in the interim.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15846", "fixedVersions": [], "id": "15846", "issueType": "Bug", "key": "SERVER-766", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b1e529cba383e0814003fb3", "resolution": "Incomplete", "resolutionDate": "2016-12-09T17:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server packages alter state outside of the RPM", "timeSpent": "PT0S", "updated": "2016-12-09T17:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This came up as part of the discussion that led to filing a feature request to extend {{allow-header-cert-info}} support to the {{puppet-admin}} and {{certificate_status}} endpoints - SERVER-763.", "created": "2015-06-16T17:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "FWIW, I just added a question/comment related to this to SERVER-39.  There's a theme I see developing centered on the separation of concerns of authorization and authentication.  We may want to consider if all of this entire problem domain would be simplified by returning to a design where authenticity is the responsibility of the thing that terminates SSL connections (e.g. the load balancer) and authorization is always the responsibility of the service implementation at the \"leaf\" (e.g. not the proxy but rather the target, the thing that ultimately produces the response).", "created": "2015-06-16T17:28:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "FWIW, I just added a question/comment related to this to SERVER-39.  There's a theme I see developing centered on the separation of concerns of authorization and authentication.  We may want to consider if all of this entire problem domain would be simplified by returning to a design where authenticity is the responsibility of the thing that terminates SSL connections (e.g. the load balancer) and authorization is always the responsibility of the service implementation at the \"leaf\" (e.g. not the proxy but rather the target, the thing that ultimately produces the response).", "created": "2015-06-16T17:29:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] I agree with that.  My intention with this ticket was purely to more clearly document the state of the implementation as it is working today since that has caused some confusion.", "created": "2015-06-16T17:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to stable at [718585|https://github.com/puppetlabs/puppet-server/commit/71858505559da0fac91601fabcc5fb0d2825a555].", "created": "2015-07-17T00:02:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to master at [0d674f|https://github.com/puppetlabs/puppet-server/commit/0d674ff6f621182552f46a5758757cf9a43bcd09].", "created": "2015-07-22T14:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Nothing to functionally review here so just closing.", "created": "2015-07-22T14:33:00.000000"}], "components": [], "created": "2015-06-16T17:14:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ba04db0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyonef:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_65765459_*|*_10007_*:*_2_*:*_769410947_*|*_3_*:*_2_*:*_251795391_*|*_5_*:*_1_*:*_7267965930_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2013774697"}], "description": "The \"master.conf\" section in http://docs.puppetlabs.com/puppetserver/1.0/configuration.html#masterconf describes the {{allow-header-cert-info}} setting which can be used for enabling authentication via the use of {{X-Client-}} headers.  This documentation isn't very clear about the scope of the APIs that the {{X-Client-}} headers control.  For many end users, the distinction between the \"Ruby Puppet master-bound\" vs. the \"Clojure-bound puppet-admin and CA\" endpoints is probably not very clear.  To make this more clear, it might be better to, in the \"master.conf\" section of the documentation, list out all of the endpoints that the {{allow-header-cert-info}} setting can control.  The same could be done for the \"ca.conf\" and {{puppet-admin}} section of the \"puppetserver.conf\" for further clarity.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15576", "fixedVersions": ["SERVER 1.1.2", "SERVER 2.1.2"], "id": "15576", "issueType": "Bug", "key": "SERVER-765", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-07-22T14:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Explicitly list endpoints in docs for `master.conf` `allow-header-cert-info` setting", "timeSpent": "PT0S", "updated": "2015-10-14T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2015-06-12T12:11:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@601e5d72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xg7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_429058990_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_46766385139"}], "description": "This minor issue needs additional testing.  But it's minor so it might need to wait a long time.\n\nHowever, in SERVER-723 in PE 3.8.1, I noted the following odd behaviors while hitting the certificate_statuses/all endpoint:\n- Sending in a totally invalid \"Accept:\" header works just fine.  HTTP 200 + good data + text/pson;charset=UTF-8.\n- Sending in a valid request with \"Accept: text/plain\" returns a HTTP 404 + text/plain; charset=ISO-8859-1\"", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15195", "fixedVersions": [], "id": "15195", "issueType": "Bug", "key": "SERVER-764", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Trivial", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-12-09T17:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Error Handling around \"Accept:\" HTTP header to ca endpoints inconsistent.", "timeSpent": "PT0S", "updated": "2016-12-09T17:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b], [~accountid:557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664] - We do have the ability to turn off client certificate authentication completely for both the administrative API and the certificate-status APIs.  See the documentation for the {{authorization-required}} key in the http://docs.puppetlabs.com/puppetserver/1.0/configuration.html#puppetserverconf and http://docs.puppetlabs.com/puppetserver/1.0/configuration.html#caconf sections, respectively.  Would this approach be sufficient to meet the need for this request or would requests need to have the {{client-whitelist}} \"authenticated\" against the {{X-Client-*}} headers?", "created": "2015-06-16T16:51:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The user that requested this functionality was trying to control access using a whitelist and the X-Client- headers. I'm not sure whether this logic could be moved up to the Nginx layer or not.", "created": "2015-06-16T17:02:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Per some discussion on https://puppet.atlassian.net/browse/SERVER-801?focusedCommentId=204140&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-204140, the current proposal to support this ticket would be to add this logic to the \"trapperkeeper-authorization\" project.  The Ring middleware function in \"trapperkeeper-authorization\" would be responsible for extracting the user identity from {{X-Client-}} headers vs. the subject CN on an SSL client certificate based on whether or not the {{allow-header-cert-info}} setting were set.\n\nBy keeping this logic in {{trapperkeeper-authorization}}, the planned Puppet \"auth.conf\" replacement which would cover both Clojure-backed and Ruby-backed endpoints that Puppet Server services, all Puppet Server endpoints would be able to utilize this capability - including the CA and Administrative endpoints mentioned in this ticket's description.  As part of this, the {{allow-header-cert-info}} setting will likely need to migrate from the \"master\" section of Puppet Server's configuration to the \"authorization\" section of Trapperkeeper configuration that the \"trapperkeeper-authorization\" service will manage.  This would hopefully make the scope of the setting as covering all \"authorization\" service controlled endpoints more clear.  Note that \"trapperkeeper-authorization\" may, in the future, be used in a Clojure service stack where Puppet Server's \"master\" service is not present, so keeping it in the \"master\" section only would be problematic.", "created": "2015-08-10T13:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - so my understanding is that we're basically in agreement with the idea of adding an {{allow-header-cert-info}} setting to the {{authorization}} section that we'll be supporting for trapperkeeper-authorization.  So for the case that someone wanted to enable authentication via X-Client headers, an {{authorization}} section would look something like:\n\n{noformat}\nauthorization: {\n  rules: [...]\n  allow-header-cert-info: true\n}\n{noformat}\n\nFor the Puppet Server implementation of the X-Client auth feature, we consult {{puppet.conf}} settings for the names of the HTTP headers that we use for authentication - {{ssl_client_header}} (https://docs.puppetlabs.com/references/latest/configuration.html#sslclientheader) and {{ssl_client_verify_header}} (https://docs.puppetlabs.com/references/latest/configuration.html#sslclientverifyheader).  This would allow the user to specify a custom name for the HTTP header rather than just using the defaults of X-Client-DN and X-Client-Verify, respectively.\n\nFor the {{trapperkeeper-authorization}} implementation of this feature, we'll need to avoid having any dependencies on {{puppet.conf}} settings - especially since it may eventually be used in an app stack where legacy Puppet is not involved.  Do we think we need to preserve the ability for users to customize the client_dn and client_verify headers in the {{trapperkeeper-authorization}} implementation?  If so, we'd presumably need to add those settings to the {{authorization}} configuration as well.\n\nNot that this is a well used part of the feature yet, but I know that when we incorporated support for forwarding a client certificate via the {{X-Client-Cert}} header, we chose not to provide a configuration setting for that header and there was no existing setting for this in {{puppet.conf}} to draw from.  Essentially, the \"user\" (i.e., load balancer) would be forced to specify the HTTP header as {{X-Client-Cert}}.  To my knowledge, we haven't had any requests to create a new setting to allow users to change the name of the {{X-Client-Cert}} setting.  If we think we need to add settings for customizing the client_dn and client_verify headers to {{trapperkeeper-authorization}}, though, it probably would make sense for the certificate one to be configurable as well. \n\nIs this the kind of thing where, for {{trapperkeeper-authorization}}, it might make sense to do an initial implementation that doesn't allow for the header names to be configurable for now but add on later only when/if needed?", "created": "2015-09-02T13:26:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server master branch at [69e80d|https://github.com/puppetlabs/puppet-server/commit/69e80d9ae5a46ba99dfedc978400946794f0e48c].", "created": "2015-09-30T14:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Full Jenkins acceptance test job passed at http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/163/.\n\nMoving to testing.", "created": "2015-10-01T00:16:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated manually with 2015.3.0-rc3-515-g69d6950 on CentOS6.  Example here:\n\nAlso validated the removing allow-header-cert-info from the configuration made it so the previously working curl command returns HTTP 403 Forbidden.\n\n{noformat}\ncurl -k -w '%{http_code}\\n' -v --header \"X-Client-DN: CN=aiqp7m0uxf5q88u.delivery.puppetlabs.net\" --header \"X-Client-Verify: SUCCESS\" --header \"X-Client-Cert: -----BEGIN%20CERTIFICATE-----%0AMIIF0DCCA7igAwIBAgIBCzANBgkqhkiG9w0BAQsFADBmMWQwYgYDVQQDDFtQdXBw%0AZXQgQ0EgZ2VuZXJhdGVkIG9uIG1pc3oycWlqZ21uaW9oci5kZWxpdmVyeS5wdXBw%0AZXRsYWJzLm5ldCBhdCAyMDE1LTEwLTIxIDE0OjE1OjU4IC0wNzAwMB4XDTE1MTAy%0AMDIzMDEyNFoXDTIwMTAxOTIzMDEyNFowMjEwMC4GA1UEAwwnYWlxcDdtMHV4ZjVx%0AODh1LmRlbGl2ZXJ5LnB1cHBldGxhYnMubmV0MIICIjANBgkqhkiG9w0BAQEFAAOC%0AAg8AMIICCgKCAgEA8Oj7TwJj9xjRCn6zzkIY6N4TyhLIv6Riy8XnlFhNmun5QHZ%2B%0AGr0Zs5a4lQ9hkWhWyPdJL9C4xSKKwsxUSyM%2F%2BNcUet8vZQbHTTKBZf6HcXDtuNuP%0A8qLOzekO0UfMK4jpbFh8P2uVP9enXJdKHcTdICI0oFWdvwB2E7qfcdpZyqaPUnxa%0AOTb826%2BFkr68gkN0tl4awuK98Z8qFqoQDfW20QAPmkho8jp5TFj%2F%2FuP1DK%2FP%2FCbx%0Aoux%2FaLEFMwLOk%2FJ%2BMfcdnGlAx14znHGEVHREG8EyYjO5OWA5PUDqeGm1X1eca%2Bc2%0AeeXDeSKxVK5crYOnAP1enUjDJGFNOBKHebnDjyNgxIZKmODwtM4jRzouJrLf9roa%0ADamlhyPyzkiWrOllIgk3keMri56QtYqcHj4DE7VMCl2vAzRRXDLwY0HtxFJ0K39s%0ADFuejiKzlAYeOI4EYJIrJShR%2FRccRCn8%2BgEVknTg5ndq3ggSKrf%2FG0EvaTRDRvP3%0ANC1buy6FVPeS8hQsnm8%2F2hvgSYxHZohqrWN0jifai8P8hXfYjJbE349cnRbV4IiN%0AJn%2BbYJB5k7%2BuwJmRh9K0tRWdDlVolrVtwnzygZW9vkS4VoJpQkrZJeS1kEYu2RSN%0AHC2BUmeGk02FG17VFHCFoyiqE3H%2F8LTKChdvImULS4OBOxoh8qhchukzZ2kCAwEA%0AAaOBvDCBuTA3BglghkgBhvhCAQ0EKgwoUHVwcGV0IFJ1YnkvT3BlblNTTCBJbnRl%0Acm5hbCBDZXJ0aWZpY2F0ZTAOBgNVHQ8BAf8EBAMCBaAwIAYDVR0lAQH%2FBBYwFAYI%0AKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB%2FwQCMAAwHQYDVR0OBBYEFNVTMjgd%0AREon6UdUxck9LogMbe5XMB8GA1UdIwQYMBaAFIRjWQDgo%2BcnRMD0HETVMUv7ZKc2%0AMA0GCSqGSIb3DQEBCwUAA4ICAQAE22LaERU8pfED68wWXFcb7SpNlZ1SWO%2B%2F0S1R%0AvtDnajXo%2B9qnPqCaROmdwiLDHBygTjvwomR0uV0rXfkCzIDsXdAIbUOJ27BU4d64%0AXdpcNgCrgXb9pT%2F5otc2QWN1WrLnUMEeJwDsFWIXwaz5lwkX4WhQ%2FsTtM0Ju9iLX%0Ad6OxkEEFQKFTCuCMzT9FFyOTNEtWXrDA4owrlSPNRtHYNahdk5lMzi0aCGoDqJLH%0AFeYjhxWCL5z0wL69WqTFVovndmm7WcdeVIY8Ss3Z4yO4%2BFBVjDY1ORT5e%2BYi2lwX%0ASPIRS5OlEF56I1%2BrELkqN9Mr%2F5bzRBdlWKWb84Z6M2gMQDxoFVz5jR6lQX70hY2t%0ANX22dPNYmaYPsJBZ5ObdcoCD7AKgdcF2up3IP2SzaZLnRwltLOCEbYrOPAtRHxpZ%0A%2Fw3ED%2F%2Fi1PmxdlZNZiShndnGBhwU1uZ7BBwcfCv0GdVAbbBCiVjZc6txxll2yADG%0A%2FiHnUfdEILTZa4JTkeDYLb%2BWYMHGjevKy1PnO7GJ9izFtpT21KJtGLHffDh45SOT%0A0p7o0yMl7YWVAHGGYtZbc6q8lujrPhRrjKTR1GAaujxdfegDmnkSVMZCsZbBEGgy%0A%2Fi%2BLlCJnF2RSqDs5qcHM6LTtWgjz6pQaewBgd5B%2B7vma8nBAwc4t6d7h9X8i9WqP%0AtKKIMA%3D%3D%0A-----END%20CERTIFICATE-----\" https://misz2qijgmniohr.delivery.puppetlabs.net:8140/puppet/v3/environments\n{noformat}", "created": "2015-10-21T18:03:00.000000"}], "components": ["Puppet Server"], "created": "2015-06-11T15:24:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e4c7d09"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-111"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyobtb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_36414681_*|*_1_*:*_1_*:*_503297613_*|*_10007_*:*_1_*:*_89776290_*|*_3_*:*_1_*:*_651867312_*|*_5_*:*_1_*:*_2520094133_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1792195459_*|*_10006_*:*_1_*:*_8340958907"}], "description": "Puppet Server can be configured to with [external SSL termination|http://docs.puppetlabs.com/puppetserver/2.1/external_ssl_termination.html] whereby another upstream server, such as Nginx or Apache, handles HTTPS connections and forwards plain HTTP traffic to Puppet Server. This configuration also includes the {{allow-header-cert-info}} option which allows Puppet Server to make authorization decisions based on client information forwarded by the upstream server through {{X-Client-*}} headers. However, this authorization only applies to API endpoints in the Puppet Master subsystem. Clojure-level Puppet Server APIs, such as the CA and Administrative API endpoints, ignore the certificate headers forwarded by the upstream server.\n\nThis is a feature request for {{allow-header-cert-info}} support in all Puppet Server APIs.\n\nh5. Implementation Notes\n\nWe've decided that we're going to facilitate this request via the work that we're doing in trapperkeeper-authorization (tk-authz) to provide unified endpoint authorization in Puppet Server.  TK-282 would add support for the {{allow-header-cert-info}} feature to tk-authz, via a new {{authorization}} Trapperkeeper configuration section.  When that lands, we'll need to update Puppet Server to be able to defer to / utilize authenticated user info from tk-authz, when available, while not breaking the {{allow-header-cert-info}} option in Puppet Server's {{master}} section.  I'm envisioning the following implementation around Puppet Server's {{request-handler-service}}, where the {{allow-header-cert-info}} work is currently done:\n\n1) In Puppet Server {{request-handler-core}}, attempt to derive authenticated user info from the {{authorization}} key in the Ring request map.  If the {{authorization}} key is not available but the {{master.allow-header-cert-info}} setting is set to \"true\", attempt to derive the authenticated user info from {{X-Client-*}} headers on the Ring request map (using supporting Puppet configuration).  If the {{authorization}} key is not available and the {{master.allow-header-cert-info}} setting is not specified or set to \"false\" (the default), attempt to derive the authenticated user info from the SSL client certificate, {{ssl-client-cert}}, on the Ring request map.  If authenticated user info cannot be derived by any of the methods above, set the user identity as \"unauthenticated\".\n\n2) If the {{master.allow-header-cert-info}} setting is present in configuration, log an appropriate deprecation warning.  If the {{jruby-puppet.use-legacy-auth-conf}} setting is set to \"false\", the warning message should indicate that the {{master.allow-header-cert-info}} setting will be ignored in favor of the {{authorization.allow-header-cert-info}} setting.  If the {{jruby-puppet.use-legacy-auth-conf}} setting is set to \"true\", the warning message should indicate that the user should consider setting the {{jruby-puppet.use-legacy-auth-conf}} setting to \"false\" and using the {{authorization.allow-header-cert-info}} setting as a replacement.", "epicLinkSummary": "auth.conf replacement", "estimate": "PT0S", "externalId": "15194", "fixedVersions": ["SERVER 2.2.0"], "id": "15194", "issueType": "New Feature", "key": "SERVER-763", "labels": ["calendaring", "support"], "originalEstimate": "PT0S", "parent": "15806", "parentSummary": "auth.conf replacement", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2015-10-21T18:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add allow-header-cert-info authorization support to all Puppet Server service APIs", "timeSpent": "PT0S", "updated": "2015-11-19T21:08:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Performance"], "created": "2015-06-10T17:25:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@83d99b6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0fiv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_135322_*|*_10007_*:*_1_*:*_353389951_*|*_3_*:*_1_*:*_169262857_*|*_5_*:*_1_*:*_40000259596_*|*_6_*:*_1_*:*_0"}], "description": "SERVER-712 allows us to install modules from the Forge, but we need to also be able to install them from the {{test-catalogs}} repo.\n\nWe'll need to:\n* Add a beaker step to git clone test-catalogs onto the master\n* Update the module installation Puppetfile generation to specify the relative path to the test-catalogs module", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16388", "fixedVersions": [], "id": "16388", "issueType": "Sub-task", "key": "SERVER-762", "labels": [], "originalEstimate": "PT0S", "parent": "17605", "parentSummary": "Automation installation of required modules / code", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-06-16T18:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Install modules from test-catalogs", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to the stable branch at cd759d1ba2c16ea6c3ea2a334b9901fca5d54558.", "created": "2015-06-10T18:08:00.000000"}], "components": [], "created": "2015-06-09T18:45:00.000000", "creator": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@187f3cc8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoqyf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Security Fix"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "JRuby rubygems security bump for PE 3.8.1 / requested by Release Engineering"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_61335753_*|*_1_*:*_1_*:*_77705395_*|*_10007_*:*_1_*:*_5903438_*|*_3_*:*_1_*:*_577574_*|*_5_*:*_1_*:*_520984063_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_15674850"}], "description": "We need to bump puppet-server's jruby to 1.7.20.1 to address this: https://github.com/jruby/jruby/commit/f6f73f38e6809e45ef4ec3258db5e5d42d895565.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16385", "fixedVersions": ["SERVER 1.1.1", "SERVER 2.1.1"], "id": "16385", "issueType": "Task", "key": "SERVER-761", "labels": ["product-security"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "resolution": "Fixed", "resolutionDate": "2015-06-11T15:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppet-server for RubyGems CVE-2015-4020", "timeSpent": "PT0S", "updated": "2015-06-18T12:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:5bfc81a3a424561a8ea5de2d] Thank you so much for reporting this issue.\n\n{quote}unless one is content to disable the legacy-routes service like me, which BTW I'm only assuming should cause no issues provided one has >=4.0 agents?{quote}\n\nYou have it correct, disabling the legacy service should present no issues with Puppet >= 4.0 agents.  If I understand you situation, this is a viable work around for your needs?\n\nThank you again for reporting this, the information will help us improve Puppet Server for everyone trying to modify the default configuration of the CA service.\n\n-Jeff", "created": "2015-06-10T10:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:5bfc81a3a424561a8ea5de2d], thanks much for reporting this issue.  The behavior you are seeing is definitely a bug, not intentional on our part.  It should be possible for both the legacy routes and the \"disabled\" CA service to be configured within the same Puppet Server stack and we will be working on a fix for this in our next Puppet Server release.  In the meantime, though, disabling the legacy service as you have done would be a viable workaround for cases where no Puppet 3.x agents need to be connecting to the Puppet Server 2.1.0 master.", "created": "2015-06-10T12:33:00.000000"}, {"author": "5bfc81a3a424561a8ea5de2d", "body": "[~accountid:623c12b6ee1b5a0070293582] yaa, this was an all-Puppet4 setup I was testing, so workaround is fine for me.  I caught this because I was replicating a setup I had done a few weeks ago before the 2.1 release and was thus confusing why it didn't work anymore.  Thanks for jumping on this.", "created": "2015-06-10T12:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to master branch at 739fbbcf8e570df993c1fa5dd736e262de3861ec.", "created": "2015-06-16T16:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] To functionally review this one, I basically did what was mentioned in the ticket description:\n\n1) Using the default {{bootstrap.cfg}} - which has the {{legacy-routes-service}} and \"real\" {{certificate-authority-service}} enabled, started puppetserver.\n\n2) Did an agent run.  Run was successful.\n\n3) Did a curl request to \"https://\\[master\\]:8140/certificate_revocation_list/ignored\" and got a good response - 200 OK with Base-64 encoded CRL.\n\n4) Commented out the \"real CA\" service in the {{bootstrap.cfg}} file:\n\n{noformat}\n#puppetlabs.services.ca.certificate-authority-service/certificate-authority-service\n{noformat}\n\n5) Uncommented the \"disabled CA\" service in the {{bootstrap.cfg}} file:\n\n{noformat}\npuppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service\n{noformat}\n\n6) Restarted the puppetserver service.\n\n7) Confirm that the server started successfully.  (This is the step at which Puppet Server 2.1.0 would fail, because of the conflict between the {{legacy-routes-service}} and {{certificate-authority-disabled-service}}.)\n\n8) Did an agent run.  Run was successful.\n\n9) Did a curl request to \"https://\\[master\\]:8140/certificate_revocation_list/ignored\" and got a 404 error.  (Note that this is expected because the CA service listener is disabled when the {{certificate-authority-disabled-service}} is running).\n", "created": "2015-06-16T16:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Tests passed through full Jenkins pipeline:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/18/\n\nMoving to \"testing\" column.", "created": "2015-06-16T18:09:00.000000"}], "components": ["Puppet Server"], "created": "2015-06-09T17:01:00.000000", "creator": "5bfc81a3a424561a8ea5de2d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b17bd9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Puppet Server fails to start"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoqyn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_13689304_*|*_1_*:*_1_*:*_70338399_*|*_10007_*:*_1_*:*_81308860_*|*_3_*:*_1_*:*_344627162_*|*_5_*:*_1_*:*_11032642_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_68503776_*|*_10006_*:*_1_*:*_98925373"}], "description": "Server 2.1 ships with puppetlabs.services.legacy-routes.legacy-routes-service/legacy-routes-service enabled in bootstrap.cfg.  If you disable the internal ca ( puppetlabs.services.ca.certificate-authority-service/certificate-authority-service ) and enable external CA support (puppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service) per the docs (and which worked fine in 2.0 which doesn't have the legacy routes service), puppet server cannot start due to:\n{noformat}\n2015-06-09 15:12:33,189 INFO  [main] [p.s.c.puppet-server-config-core] Not overriding webserver settings with values from core Puppet\n2015-06-09 15:12:33,222 ERROR [main] [p.t.internal] Error during service init!!!\njava.lang.IllegalArgumentException: service :puppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service does not appear in configuration\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$get_endpoint_and_server_from_config.invoke(webrouting_service_core.clj:52) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service_core$get_route.invoke(webrouting_service_core.clj:96) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service$reify__9567$service_fnk__4090__auto___positional$reify__9575.get_route(webrouting_service.clj:35) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service$eval9343$fn__9482$G__9327__9488.invoke(webrouting_service.clj:10) ~[na:na]\n\tat puppetlabs.trapperkeeper.services.webrouting.webrouting_service$eval9343$fn__9482$G__9326__9495.invoke(webrouting_service.clj:10) ~[na:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:156) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyTo(AFn.java:144) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468) ~[puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:408) [puppet-server-release.jar:na]\n\tat puppetlabs.services.legacy_routes.legacy_routes_service$reify__17272$service_fnk__4090__auto___positional$reify__17283.init(legacy_routes_service.clj:23) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval3926$fn__3927$G__3918__3930.invoke(services.clj:8) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval3926$fn__3927$G__3917__3934.invoke(services.clj:8) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$run_lifecycle_fn_BANG_.invoke(internal.clj:152) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$run_lifecycle_fns.invoke(internal.clj:180) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$build_app_STAR_$reify__5493.init(internal.clj:444) [na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_$fn__5505.invoke(internal.clj:470) [na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_.invoke(internal.clj:469) [na:na]\n\tat puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:113) [na:na]\n\tat puppetlabs.trapperkeeper.core$run.invoke(core.clj:144) [na:na]\n\tat puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159) [na:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:482) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:401) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:171) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:700) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:624) [puppet-server-release.jar:na]\n\tat puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:482) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:401) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:171) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:700) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:624) [puppet-server-release.jar:na]\n\tat clojure.main$main_opt.invoke(main.clj:315) [puppet-server-release.jar:na]\n\tat clojure.main$main.doInvoke(main.clj:420) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:551) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:419) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:186) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:700) [puppet-server-release.jar:na]\n\tat clojure.main.main(main.java:37) [puppet-server-release.jar:na]\n2015-06-09 15:12:33,225 INFO  [main] [p.t.internal] Beginning shutdown sequence\n\n{noformat}\n\nIf I comment out the legacy routes service, things startup just fine.  So either  this service completely breaks things or perhaps something for the ca-disabled service needs to explicitly added to web-routes.conf or something?  I haven't experimented, but if that's the case then the default web-routes.conf file that ships should be updated with the needed route or the docs for enabling external CA need to be updated with whatever one is supposed to do (unless one is content to disable the legacy-routes service like me, which BTW I'm only assuming should cause no issues provided one has >=4.0 agents?)\n ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17302", "fixedVersions": ["SERVER 2.1.1"], "id": "17302", "issueType": "Bug", "key": "SERVER-759", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5bfc81a3a424561a8ea5de2d", "resolution": "Fixed", "resolutionDate": "2015-06-17T13:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Legacy Routes service breaks usage of CA-disabled service", "timeSpent": "PT0S", "updated": "2015-12-17T16:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T12:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d1cbba8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dqv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622286054_*|*_3_*:*_1_*:*_13035454_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_154194063"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%22SERVER%201.1.1%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14988", "fixedVersions": [], "id": "14988", "issueType": "Sub-task", "key": "SERVER-758", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T15:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2015-06-18T15:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T12:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@502e0808"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dqn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622295088_*|*_5_*:*_1_*:*_39852468529_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_154179801"}], "description": "Update dujour to notify users to use 1.1.1.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17619", "fixedVersions": [], "id": "17619", "issueType": "Sub-task", "key": "SERVER-757", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 1.1.1", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sent e-mails out to puppet-dev and puppet-users mailing lists:\n\npuppet-users:\n\nhttps://groups.google.com/forum/#!topic/puppet-users/ZsVrpVuYnaE\n\npuppet-dev:\n\nhttps://groups.google.com/forum/#!topic/puppet-dev/bIg8t60jNdE", "created": "2015-06-18T15:22:00.000000"}], "components": [], "created": "2015-06-09T12:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ca6090"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dqf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622431305_*|*_3_*:*_1_*:*_99817_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_167140780"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17301", "fixedVersions": [], "id": "17301", "issueType": "Sub-task", "key": "SERVER-756", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T15:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2015-06-18T15:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "Docs were promoted to the site when the release notes PR was merged. ", "created": "2015-06-18T11:06:00.000000"}], "components": [], "created": "2015-06-09T12:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56fd98a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dq7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622435617_*|*_5_*:*_1_*:*_39854615446_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_151896765"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17073", "fixedVersions": [], "id": "17073", "issueType": "Sub-task", "key": "SERVER-755", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T11:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d602aea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dpz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622440839_*|*_3_*:*_1_*:*_2861762_*|*_5_*:*_1_*:*_39853226933_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_150422241"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16659", "fixedVersions": [], "id": "16659", "issueType": "Sub-task", "key": "SERVER-754", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T11:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "The tag was already pushed out because it was needed for updating the version of puppetserver provided in PE", "created": "2015-06-15T13:05:00.000000"}], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5145fd2e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dpr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_522301062_*|*_5_*:*_1_*:*_40106650678_*|*_6_*:*_1_*:*_0"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16465", "fixedVersions": [], "id": "16465", "issueType": "Sub-task", "key": "SERVER-753", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-15T13:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Got a (y) to ship from [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:623c08e1562ab90069f8aed4], and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f].", "created": "2015-06-18T10:43:00.000000"}], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@439cdec7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dpj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622450166_*|*_5_*:*_1_*:*_39855994857_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_150521675"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16176", "fixedVersions": [], "id": "16176", "issueType": "Sub-task", "key": "SERVER-752", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "I'm testing ubuntu-1404", "created": "2015-06-17T15:51:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n\nI'm getting the following error trying to smoke test 1.1.1 on Ubuntu 14.04.  Could this be a problem with the products repository or with our specified dependencies?\n\n{code}\nroot@eqw4rm9f67o3uox:~# apt-get -y --force-yes install puppetserver=\"$PKG_VERSION\"\nReading package lists... Done\nBuilding dependency tree\nReading state information... Done\nThe following extra packages will be installed:\n  augeas-lenses debconf-utils facter hiera libaugeas-ruby libaugeas0 puppet puppet-common ruby-augeas ruby-json ruby-shadow virt-what\nSuggested packages:\n  augeas-doc augeas-tools puppet-el vim-puppet ruby-selinux libselinux-ruby1.8 librrd-ruby1.9.1 librrd-ruby1.8\nThe following NEW packages will be installed:\n  augeas-lenses debconf-utils facter hiera libaugeas-ruby libaugeas0 puppet puppet-common puppetserver ruby-augeas ruby-json ruby-shadow virt-what\n0 upgraded, 13 newly installed, 0 to remove and 182 not upgraded.\nNeed to get 1,275 kB/43.5 MB of archives.\nAfter this operation, 58.4 MB of additional disk space will be used.\nWARNING: The following packages cannot be authenticated!\n  puppetserver\nErr http://apt.puppetlabs.com/ trusty/main puppet-common all 3.8.1-1puppetlabs1\n  404  Not Found [IP: 192.155.89.90 80]\nErr http://apt.puppetlabs.com/ trusty/main puppet all 3.8.1-1puppetlabs1\n  404  Not Found [IP: 192.155.89.90 80]\nE: Failed to fetch http://apt.puppetlabs.com/pool/trusty/main/p/puppet/puppet-common_3.8.1-1puppetlabs1_all.deb  404  Not Found [IP: 192.155.89.90 80]\n\nE: Failed to fetch http://apt.puppetlabs.com/pool/trusty/main/p/puppet/puppet_3.8.1-1puppetlabs1_all.deb  404  Not Found [IP: 192.155.89.90 80]\n\nE: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?\n{code}\n\nThe procedure I'm following is using a VM (resource {{vmpooler/vm/ubuntu-1404-x86_64}}) and [this script|https://gist.githubusercontent.com/jeffmccune/246ae9e7c8ca4275d948/raw/6efd3448900e87985ed853b821aedd9e0cfebbf6/smoke-ubuntu1404].", "created": "2015-06-17T16:13:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n\nMelissa chased this down in the SysOps channel around 3:30 today, looks like there's a legit issue they're working on.\n\n{quote}\nWe're having issues with our download server, so the packages you're trying to install have gone awol\n{quote}", "created": "2015-06-17T16:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Debian 7 results passed. Procedure:\n\n1) Installed puppetserver 1.1.1 from builds.puppetlabs.lan.\n2) Started puppetserver.\n3) Did a puppet agent run, observed was successful.\n4) Put a global notify resource in the site.pp for the production environment.\n5) Did another puppet agent run, observed that the notify appeared in the agent output.\n6) Installed / configured PuppetDB into the puppetserver configuration.\n7) Did another puppet agent run. Confirmed from log output and from a REST query to the v3/nodes endpoint that the agent was delivering a report to PuppetDB which looked reasonable.\n8) Started over from a clean machine.\n9) Installed puppetserver 1.1.0 from PL repo.\n10) Started puppetserver.\n11) Did an agent run, confirmed that the run was successful.\n12) Configured the puppetserver 1.1.1 repo from builds.puppetlabs.lan.\n13) Upgraded puppetserver to 1.1.1 and restarted puppetserver.\n14) Did another agent run, confirmed that the run was successful.", "created": "2015-06-17T18:12:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "\ud83d\udc4dfor {{ubuntu-1404-x86_64}} following [this procedure|https://puppet.atlassian.net/browse/SERVER-637?focusedCommentId=179451&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-179451].", "created": "2015-06-17T18:25:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Was able to complete smoke testing on ubuntu after OPS-6220 was fixed.", "created": "2015-06-17T18:25:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Working on centos 6 and 7", "created": "2015-06-18T09:47:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "\ud83d\udc4dfor {{centos-6-x86_64}} and {{centos-7-x86_64}} following a version of [this procedure|https://puppet.atlassian.net/browse/SERVER-637?focusedCommentId=179451&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-179451] modified slightly for EL.", "created": "2015-06-18T10:28:00.000000"}], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@674c361c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dpb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622457045_*|*_3_*:*_1_*:*_68445834_*|*_5_*:*_1_*:*_39855972407_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_82088489"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15844", "fixedVersions": [], "id": "15844", "issueType": "Sub-task", "key": "SERVER-751", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "This was sone by lein-ezbake when the version was updated in source. Packages are available at http://builds.puppetlabs.lan/puppetserver/1.1.1/", "created": "2015-06-15T13:05:00.000000"}], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57bfcd13"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dp3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_522269987_*|*_5_*:*_1_*:*_40106713378_*|*_6_*:*_1_*:*_0"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15573", "fixedVersions": [], "id": "15573", "issueType": "Sub-task", "key": "SERVER-750", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-15T13:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] put up a PR with a first draft of the 1.1.1 release notes - https://github.com/puppetlabs/puppet-server/pull/611.  We closed the PR, though, so that it wouldn't be merged until we're just about ready to go for publishing the Server 1.1.1 release.\n\nReassigning this ticket for now back to [~accountid:623c08e1562ab90069f8aed4] and in \"Ready for Engineering\" state, with the assumption that someone on the docs team will be picking this up from here.", "created": "2015-06-15T13:29:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "This is now ready to merge on release day, pending go/no-go. ", "created": "2015-06-17T12:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to stable at [8625d5|https://github.com/puppetlabs/puppet-server/commit/862e5d5179cbb715292bb0af64abdc6dd0615a8a].", "created": "2015-06-18T10:46:00.000000"}], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38bb3eb8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dov:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_186269699_*|*_10007_*:*_2_*:*_410043936_*|*_3_*:*_1_*:*_8406798_*|*_5_*:*_1_*:*_10219220521_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_168426002"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15193", "fixedVersions": [], "id": "15193", "issueType": "Sub-task", "key": "SERVER-749", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T10:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2015-10-15T14:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38159b31"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0don:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521279923_*|*_3_*:*_1_*:*_255230653_*|*_5_*:*_1_*:*_39852475905_*|*_6_*:*_1_*:*_0"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14987", "fixedVersions": [], "id": "14987", "issueType": "Sub-task", "key": "SERVER-748", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This isn't relevant for this release.  We're not merging from master - Puppet Server 2.x - to stable - Puppet Server 1.x - for the foreseeable future.", "created": "2015-06-15T12:48:00.000000"}], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28607150"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dof:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521271632_*|*_5_*:*_1_*:*_40107721485_*|*_6_*:*_1_*:*_0"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17618", "fixedVersions": [], "id": "17618", "issueType": "Sub-task", "key": "SERVER-747", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-15T12:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The version was bumped to 1.1.1 at a323d698a2c4499adc28bab2f6aff1ae9382fa1d.  [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] also published the signed tag on that SHA to the puppetserver repo as well - {{puppet-server-1.1.1}}.", "created": "2015-06-15T12:47:00.000000"}], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@544719e7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0do7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521219203_*|*_5_*:*_1_*:*_40107760153_*|*_6_*:*_1_*:*_0"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17300", "fixedVersions": [], "id": "17300", "issueType": "Sub-task", "key": "SERVER-746", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-15T12:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67cfe1e2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dnz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521030195_*|*_5_*:*_1_*:*_40107974442_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release) There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17072", "fixedVersions": [], "id": "17072", "issueType": "Sub-task", "key": "SERVER-745", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-15T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30ca4ac8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dnr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521026007_*|*_5_*:*_1_*:*_40107971278_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release). There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16658", "fixedVersions": [], "id": "16658", "issueType": "Sub-task", "key": "SERVER-744", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-15T12:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f9cf522"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dnj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521019292_*|*_5_*:*_1_*:*_40107982353_*|*_6_*:*_1_*:*_0"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%221.1.1%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16463", "fixedVersions": [], "id": "16463", "issueType": "Sub-task", "key": "SERVER-743", "labels": [], "originalEstimate": "PT0S", "parent": "16171", "parentSummary": "puppetserver 1.1.1 2015-06-18 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-15T12:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0cbf1c7f6a007049e5b9", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T12:00:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36df28c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyor0v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_85334677_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_704411242"}], "description": "puppetserver 1.1.1 2015-06-18 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16171", "fixedVersions": [], "id": "16171", "issueType": "Task", "key": "SERVER-742", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T15:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 1.1.1 2015-06-18 Release", "timeSpent": "PT0S", "updated": "2015-06-18T15:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T11:59:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46adbba5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dn3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622743632_*|*_5_*:*_1_*:*_39922465220_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_83865243"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%22SERVER%202.1.1%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15571", "fixedVersions": [], "id": "15571", "issueType": "Sub-task", "key": "SERVER-741", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@55cbaf05"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622748719_*|*_5_*:*_1_*:*_39922764434_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_83554048"}], "description": "Update dujour to notify users to use 2.1.1.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15192", "fixedVersions": [], "id": "15192", "issueType": "Sub-task", "key": "SERVER-740", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T16:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.1.1", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sent e-mails out to puppet-dev and puppet-users mailing lists:\n\npuppet-users:\n\nhttps://groups.google.com/forum/#!topic/puppet-users/ZsVrpVuYnaE\n\npuppet-dev:\n\nhttps://groups.google.com/forum/#!topic/puppet-dev/bIg8t60jNdE", "created": "2015-06-18T15:21:00.000000"}], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42583c59"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dmn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622752984_*|*_3_*:*_1_*:*_75996_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_166953380"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14971", "fixedVersions": [], "id": "14971", "issueType": "Sub-task", "key": "SERVER-739", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T15:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2015-07-13T14:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "This happened when the release notes got merged in. ", "created": "2015-06-17T15:56:00.000000"}], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7158683b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dmf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622758431_*|*_5_*:*_1_*:*_39923623774_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_82701544"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17610", "fixedVersions": [], "id": "17610", "issueType": "Sub-task", "key": "SERVER-738", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T15:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d49cf56"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dm7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622763916_*|*_3_*:*_1_*:*_833496_*|*_5_*:*_1_*:*_39923082579_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_82413360"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17299", "fixedVersions": [], "id": "17299", "issueType": "Sub-task", "key": "SERVER-737", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T16:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ad9677a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dlz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622768670_*|*_5_*:*_1_*:*_39923710051_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_82624426"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17041", "fixedVersions": [], "id": "17041", "issueType": "Sub-task", "key": "SERVER-736", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T15:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Got a (y) to ship from [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], [~accountid:623c08e1562ab90069f8aed4], and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f].", "created": "2015-06-17T15:53:00.000000"}], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37fc60df"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dlr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622772964_*|*_10007_*:*_1_*:*_21998_*|*_5_*:*_1_*:*_39923750887_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_82546172"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16657", "fixedVersions": [], "id": "16657", "issueType": "Sub-task", "key": "SERVER-735", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T15:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "I'll do Ubuntu 14.04", "created": "2015-06-17T10:58:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Ubuntu 14.04 results passed.  I tested the same [procedure executed for 2.1.0 on ubuntu-14.04|https://puppet.atlassian.net/browse/SERVER-637?focusedCommentId=179451&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-179451]", "created": "2015-06-17T13:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Debian 7 results passed.  Procedure:\n\n1) Installed puppet-agent 1.1.0 from PC1 repo.\n2) Installed puppetserver 2.1.1 from builds.puppetlabs.lan.\n3) Started puppetserver.\n4) Did a puppet agent run, observed was successful.\n5) Put a global notify resource in the site.pp for the production environment.\n6) Did another puppet agent run, observed that the notify appeared in the agent output.\n7) Installed / configured PuppetDB into the puppetserver configuration.\n8) Did another puppet agent run. Confirmed from log output and from a REST query to the v3/nodes endpoint that the agent was delivering a report to PuppetDB which looked reasonable.\n9) Started over from a clean machine.\n10) Installed puppet-agent 1.1.0 from PC1 repo.\n11) Installed puppetserver 2.1.0 from PC1 repo.\n12) Started puppetserver.\n13) Did an agent run, confirmed that the run was successful.\n14) Configured the puppetserver 2.1.1 repo from builds.puppetlabs.lan.\n15) Upgraded puppetserver to 2.1.1 and restarted puppetserver.\n16) Did another agent run, confirmed that the run was successful.", "created": "2015-06-17T15:24:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Cent6 and Cent7 smoke tests passed per the same procedure as above. ", "created": "2015-06-17T15:24:00.000000"}], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11003975"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dlj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622777715_*|*_3_*:*_1_*:*_17921387_*|*_5_*:*_1_*:*_39924999305_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_63413073"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16461", "fixedVersions": [], "id": "16461", "issueType": "Sub-task", "key": "SERVER-734", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T15:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "This was done automatically. Packages are available at http://builds.puppetlabs.lan/puppetserver/2.1.1/", "created": "2015-06-17T14:20:00.000000"}], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@575fdc78"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dlb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622783521_*|*_5_*:*_1_*:*_39929354786_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_76968009"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16165", "fixedVersions": [], "id": "16165", "issueType": "Sub-task", "key": "SERVER-733", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T14:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c08e1562ab90069f8aed4] Here's my rough draft of the Puppet Server 2.1.1 release notes, with heavy copypasta from [~accountid:623c12b6ee1b5a0070293582]'s draft 1.1.1 release notes:\n\n---\n\nh3. Puppet Server 1.1.1\n\nReleased June 17, 2015\n\nThis is a security and bug fix release of Puppet Server 2.1 series. No new features have been added since 2.1.0 in accordance with Semantic Version guidelines. All users are recommended to upgrade.\n\nh4. Bug fixes\n\nh5. Support for loading Facter 3.0+ / Puppet Agent 1.2.0+ with multiple JRubyPuppet instances.\n\nWith Facter 3.0.0 in Puppet Agent 1.2.0, fact resolution requires loading a native shared library.  Some modifications needed to be made to Puppet Server in order for it to be able to load the Facter native shared library properly when a value of more than 1 for {{max-active-instances}} is used for the {{jruby-puppet}} setting in the {{puppetserver.conf}} file.\n\n* SERVER-718\n\nh5. Upgrade JRuby from 1.7.20 to 1.7.20.1 to resolve CVE-2015-4020\n\nBump JRuby dependency to version 1.7.20.1 to resolve CVE-2015-4020 where JRuby has updated Rubygems to version 2.4.8. Rubygems 2.4.8 addresses CVE-2015-4020 to resolve some problems with wildcard matching of hostnames. See ruby-lang.org\u2019s description for more info.\n\n* SERVER-761\n\nh5. Legacy routes service and CA disabled service can now be used together\n\nThe \"certificate-authority-disabled-service\" and the \"legacy-routes-service\", which was added in the Puppet Server 2.1.0 release to allow for Puppet 3.x agent requests to be properly handled when made to a Puppet Server 2.x master, can now be enabled together in Puppet Server.  In the previous release, Puppet Server would fail to startup when these two services were both enabled.\n\n* SERVER-759\n\nh5. Consolidate environment handling behavior\n\nConsolidate JRuby environment handling, which was previously inconsistent across the use cases of  {{puppetserver gem}}, {{puppetserver irb}}, {{puppetserver ruby}} and the puppetserver service.\n\n* SERVER-297\n\nh5. Return good Content-Type for CA errors\n\nTwo bugs in the way the CA service responds which caused issues for services consuming the CA API have been fixed.\n\n* SERVER-723 - Fix Content-Type header in CA responses\n* SERVER-646 - Allow charset for certificate_status content-type", "created": "2015-06-15T13:23:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "I did some minor editing, and these are ready to go. Thanks so much! ", "created": "2015-06-17T12:02:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to the master branch at [ff98153|https://github.com/puppetlabs/puppet-server/commit/ff981532cde864112ef955e6c3fd0776436b519e].", "created": "2015-06-17T15:33:00.000000"}], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54621fa2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dl3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622788382_*|*_10007_*:*_1_*:*_12680120_*|*_3_*:*_1_*:*_2449035_*|*_5_*:*_1_*:*_39925012466_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_66182342"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15841", "fixedVersions": [], "id": "15841", "issueType": "Sub-task", "key": "SERVER-732", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T15:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story for puppetserver 2.1.1", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@75a49bc5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dkv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622793160_*|*_3_*:*_1_*:*_141830804_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5205259"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15568", "fixedVersions": [], "id": "15568", "issueType": "Sub-task", "key": "SERVER-731", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T09:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2015-06-18T09:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This isn't relevant for this release. We're not merging from master - Puppet Server 2.x - to stable - Puppet Server 1.x - for the foreseeable future.", "created": "2015-06-16T18:24:00.000000"}], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@31fa50e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dkn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622798439_*|*_5_*:*_1_*:*_40001124340_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5190510"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15191", "fixedVersions": [], "id": "15191", "issueType": "Sub-task", "key": "SERVER-730", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-16T18:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The version was bumped to 2.1.1 at  9c3955cda911793bf68f0d6be61d2fa2154be04a.  [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], I assume this is what you need to go forward with the tag?", "created": "2015-06-17T10:32:00.000000"}], "components": [], "created": "2015-06-09T11:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@230dc66c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dkf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622803058_*|*_3_*:*_1_*:*_76203270_*|*_5_*:*_1_*:*_39924968011_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5158759"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14970", "fixedVersions": [], "id": "14970", "issueType": "Sub-task", "key": "SERVER-729", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-17T15:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T11:57:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c8d6f9d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0dk7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622808400_*|*_5_*:*_1_*:*_40001958038_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4371958"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release) There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17608", "fixedVersions": [], "id": "17608", "issueType": "Sub-task", "key": "SERVER-728", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-16T18:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T11:57:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14256612"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0djz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622812478_*|*_5_*:*_1_*:*_40001972188_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4360671"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release). There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17298", "fixedVersions": [], "id": "17298", "issueType": "Sub-task", "key": "SERVER-727", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-16T18:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T11:57:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6106b228"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0djr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_622819905_*|*_5_*:*_1_*:*_40001977374_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4352862"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.1.1%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17040", "fixedVersions": [], "id": "17040", "issueType": "Sub-task", "key": "SERVER-726", "labels": [], "originalEstimate": "PT0S", "parent": "16656", "parentSummary": "puppetserver 2.1.1 2015-06-17 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-16T18:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0cbf1c7f6a007049e5b9", "attachments": [], "comments": [], "components": [], "created": "2015-06-09T11:57:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1803eea4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "N/A; Release ticket"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoqzz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_85449020_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_704413870"}], "description": "puppetserver 2.1.1 2015-06-17 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16656", "fixedVersions": [], "id": "16656", "issueType": "Task", "key": "SERVER-725", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-18T15:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.1.1 2015-06-17 Release", "timeSpent": "PT0S", "updated": "2015-06-18T15:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "623e7507866b810069e57527", "body": "This is being fixed in QENG-2549 instead.", "created": "2015-06-09T16:17:00.000000"}], "components": [], "created": "2015-06-09T11:11:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@558048e5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0djb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CI Failures"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_329524_*|*_3_*:*_1_*:*_18032263_*|*_6_*:*_1_*:*_0"}], "description": "Fedora 21 has been added to the testing matrix for Puppet Server CI jobs. Unfortunately, this is causing a problem with the 3.x acceptance tests, as there  are no Fedora 21 packages for the Puppet 3 series.\n\nIt seems like we are going to need to keep testing against Fedora 21, so we need to disable the 3.x tests on that distro.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15838", "fixedVersions": [], "id": "15838", "issueType": "Task", "key": "SERVER-724", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Duplicate", "resolutionDate": "2015-06-09T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Stop 3.x Compatibility tests from running on Fedora 21", "timeSpent": "PT0S", "updated": "2015-06-09T16:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR merged to stable branch at 11b0bcef935923c8cb27ea8ec706781ff7d91253.\n\nSubsequent Jenkins jobs all passed, including FOSS #25 full acceptance tests:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-stable/13/\n\nMoving to \"testing\".", "created": "2015-06-10T13:55:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "FR for PE 3.8.1:\n\nurl -w\\\\n%{http_code}\\\\n%{content_type}\\\\n -H \"Accept: testfoopson", "created": "2015-06-12T12:03:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Checked against puppetserver version 2.1.0.SNAPSHOT.2015.06.19T1613 on pe_build 4.0.0-rc5-73-g5a11bdd.\n\nNote that this fix forces the response to CA requests to contain \"ContentType: text/pson\" regardless of the ContentType in the request.", "created": "2015-06-24T14:41:00.000000"}], "components": [], "created": "2015-06-09T10:21:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ca76554"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoqzr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Discovered during PE UI integration with Puppet Server"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_12979981_*|*_1_*:*_1_*:*_83542_*|*_10007_*:*_1_*:*_84347883_*|*_3_*:*_1_*:*_1845176_*|*_5_*:*_1_*:*_39815465073_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1212328572"}], "description": "[~accountid:557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8] discovered in integrating the PE UI with the Puppet Server CA that for some error responses delivered from the CA that the Content-Type header was set inappropriately.  The specific case that he saw this for was when the CA needed to return a \"409 Conflict\" response because a certificate / certificate request's status was not in the state needed to perform the requested {{certificate_status}} action.\n\nFor each of the cases where the Content-Type in the response is incorrect, the value is set to \";charset=UTF-8\" where the expected behavior would have instead been \"text/plain;charset=UTF-8\".  The absence of a MIME type at the front of the value caused the http-client library being used, the Clojure binding in https://github.com/puppetlabs/clj-http-client, to fail the request because the Content-Type could not be recognized.  We should fix up the cases where the CA API is providing an improper Content-Type for responses.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15566", "fixedVersions": ["SERVER 1.1.1", "SERVER 2.1.1"], "id": "15566", "issueType": "Bug", "key": "SERVER-723", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-24T14:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Error responses to some CA requests mangle Content-Type", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Here are the results of an initial hack session to see if I could get this working.  I got one test to pass :)\n\nhttps://github.com/cprice404/pkcs11/commit/029677c0cf69a3c067db2fcc06924bacbd65a6e6\n\nUseful docs:\n\nhttp://www.docjar.com/docs/api/sun/security/pkcs11/wrapper/PKCS11.html\nhttp://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/security/pkcs11/wrapper/PKCS11Constants.java#PKCS11Constants.0CKA_ATTR_TYPES\nhttp://www.docjar.com/docs/api/sun/security/pkcs11/wrapper/CK_ATTRIBUTE.html", "created": "2015-06-09T05:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n\n{quote}It's very hard to work on it without access to some hardware, though.{quote}\n\nVirtual hardware might make this piece a bit easier at least.  I found [this SO question|http://stackoverflow.com/questions/26968336/virtual-smart-card-pkcs11-compliant] that referred to [SoftHSM|https://www.opendnssec.org/softhsm/] which is described as, \"... explore PKCS #11 without having a Hardware Security Module.\"", "created": "2015-06-09T09:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The test code for the gem uses some .so file from a firefox library or something, which seems to be good enough for working on tests for JRuby, but admittedly I don't have a super clear understanding of how that fits into the big picture.", "created": "2015-06-09T09:41:00.000000"}], "components": [], "created": "2015-06-09T04:03:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23574206"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xfz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_113888629_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_47370027529"}], "description": "In PE-9993 we ran into some complications with attempting to do PKCS11 encryption/decryption under Puppet Server.  The main issue is that the ruby pkcs11 gem is not compatible with JRuby.\n\nAs a short-term workaround, we provided a patch that will call out to the MRI ruby to use the native gem to do the encryption/decryption.  However, it should be possible to port the existing native gem to be able to run on JRuby, and provide the same API that it currently does.\n\nI started looking into this, and it looked like it would be tedious but probably not difficult.  It's very hard to work on it without access to some hardware, though.\n\nOne of the first methods I wanted to port was the 'active_slots' method.  I found this suggestion in a few places:\n\nhttp://stackoverflow.com/questions/7727371/list-all-smartcard-slots-in-java\n\nBut it seems like the SO file that it references is typically provided by the hardware vendors?\n\nHere are some docs on how to do PKCS11 through the JDK once you've chosen a hardware slot:\n\nhttp://docs.oracle.com/javase/7/docs/technotes/guides/security/p11guide.html", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16161", "fixedVersions": [], "id": "16161", "issueType": "New Feature", "key": "SERVER-722", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T17:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Port pkcs11 gem to work under JRuby", "timeSpent": "PT0S", "updated": "2016-12-09T17:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Pull request for stable is at https://github.com/puppetlabs/puppet-server/pull/604", "created": "2015-06-08T16:39:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Successfully verified PR 604 at HEAD 3e91c9edaf22a3bb866e47389903e30b1f4ff078 with the jamtur01-hipchat module and these gem versions:\n\n{code}\n[root@ec1d2c32fyrr8gs ~]# puppetserver gem list\n\n*** LOCAL GEMS ***\n\nhipchat (1.5.1)\nhttparty (0.13.5)\njar-dependencies (0.1.13)\njruby-openssl (0.9.7 java)\njson (1.8.0 java)\nmimemagic (0.3.0)\nmulti_xml (0.5.5)\nrake (10.1.0)\nrdoc (4.1.2)\n{code}", "created": "2015-06-08T17:24:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Rerun the same test case from SERVER-293.", "created": "2015-06-09T16:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to stable branch at https://github.com/puppetlabs/puppet-server/commit/3e3a23f4ddff6c129f5de6b0fad5f15b7405892a.", "created": "2015-06-10T17:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Made it through CI, moving to Testing.", "created": "2015-06-11T11:04:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Fails in 3.8.1-rc1-10-g20bd41b, probably because of PE-10309", "created": "2015-06-11T17:42:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Passed in 3.8.1-rc1-24-ga6e0223.", "created": "2015-06-12T10:33:00.000000"}], "components": ["Puppet Server"], "created": "2015-06-05T14:44:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1cac9c89"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyor0n:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Needed for 1.1.1 release which is related to 2.2.1 scheduled for this week"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_64064660_*|*_1_*:*_1_*:*_247798857_*|*_10007_*:*_1_*:*_175005254_*|*_3_*:*_1_*:*_18291900_*|*_5_*:*_1_*:*_522593709_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_84631597"}], "description": "Unfortunately the work for SERVER-297 was incomplete in that it needed to go into stable for 1.2 and then get merged up into master for 2.2 but it was merged directly into master, bypassing stable.\n\nThis tickets the remaining work to complete the work described in SERVER-297.  This work is to back-port the changes brought in by 08695d2 while taking care to preserve the 3 ruby lib directories that would be removed by 484fe80 `(SERVER-297) Remove duplicate entries at the head of $LOAD_PATH`.\n\nThere are detailed reasons why these directories need to be preserved in the description of SERVER-297.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14969", "fixedVersions": ["SERVER 1.1.1"], "id": "14969", "issueType": "Task", "key": "SERVER-721", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-06-12T10:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Backport SERVER-297 to stable", "timeSpent": "PT0S", "updated": "2015-06-18T11:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-06-05T13:26:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4da089c8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywqi7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found during work to integrate Facter 3.0.0 and Puppet Server 2.x."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3953582_*|*_3_*:*_1_*:*_1212367607_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_46579355752"}], "description": "We had a case recently, SERVER-718 and FACT-965, where it was discovered that Puppet Server was booting up okay when a value of 1 for {{max-active-instances}} was being used for {{jruby-puppet}} and handling agent requests successfully.  Merely by bumping the number of instances to 2 or more, however, Puppet Server started crashing at boot - during the initialization of the second instance - because of an incompatibility with pre-Facter 3.0.0 code.\n\nIt may be that the Puppet Server / Puppet acceptance tests would ultimately have caught this problem if run with the pre-Facter 3.0.0 configuration.  I believe our acceptance test coverage for multiple JRubyPuppet instances is incidental at best, though.  It would be much better if we were to have at least one acceptance test which explicitly configures more than 1 JRubyPuppet instance to be created and validates that the extra instances are properly utilized and that the server remains functional in the process.\n\nIdeally the acceptance test would be written in such a way that it didn't have specific knowledge of the algorithm that puppet-server uses to hand out instances from its pool.  To that end, maybe such a test could do something like:\n\n1) Make one HTTP request to Puppet Server which results in a long-running response that has to be handled by a JRubyPuppet instance.\n\n2) While the first request is still running, make a second request which has to be handled by a second JRubyPuppet instance, running concurrently with the first one.\n\nTo ensure that the \"concurrency\" is happening as opposed to the requests being handled serially by the same JRubyPuppet instance, maybe the first test could write something to the master file system that the logic gating the second request would have to see within some amount of time before making its request and failing if not.\n\nWe'd also need to explore where such a test may live.  Might make most sense for it to live in the Puppet Server acceptance smoke test suite since the {{max-active-instances}} functionality is specific to the Puppet Server master - although a variant of said test could be viable for a legacy Rack master, I suppose, which could bolster the argument for having the test be master-aware and potentially live in the core Puppet acceptance test suite.  I'm inclined to make it Puppet Server-specific for now, though.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15190", "fixedVersions": [], "id": "15190", "issueType": "Task", "key": "SERVER-720", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2016-12-09T17:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create an acceptance test which exercises multiple JRubyPuppet instances", "timeSpent": "PT0S", "updated": "2016-12-09T17:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We should also try to make sure we enumerate all of the places where this can cause issues and try to get rid of the ambiguity in Puppet 5.\n\nI think that for the {{cert}} commands, most of this should go away when we do the planned CA re-vamp and new CA cli tools.\n\nTrying to think what \"shared\" settings we'll have left at that point that will cause problems... the {{ssldir}} will still be an issue if we want the master and the agent to share them, but if we have {{puppetserver config print ssldir}} and {{puppet config print ssldir}}, and those show different values, hopefully that will be fairly easy to understand?\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] : would be interested in your thoughts on this, or would be interested in chatting through it with you at some point.\n\n", "created": "2015-06-08T08:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Another idea that came up in backlog grooming is that we could also add a comment to the puppetserver.conf file as packaged that if you change a setting in it that it would have an effect on the puppet.conf setting.  Wouldn't replace the need to provide the extra documentation as well but could make issues with the settings more obvious.", "created": "2015-06-10T11:57:00.000000"}], "components": [], "created": "2015-06-05T12:57:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ceb25bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoq47:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1648612828_*|*_10007_*:*_1_*:*_602656758_*|*_3_*:*_1_*:*_7675604_*|*_5_*:*_1_*:*_9075576337_*|*_6_*:*_1_*:*_0"}], "description": "This ticket came out of SERVER-681. In that case, an error with Puppet was occurring due to Puppet and Puppetserver reading different values for the ssl-dir setting. This is because the ssl-dir setting in the user's puppetserver.conf file was set to {{$vardir/ssl}}, but the {{vardir}} setting was being overridden by the {{master-var-dir}} setting in puppetserver.conf.\n\nAs a result, all of the ruby puppet code run through puppetserver was using the value of {{master-var-dir}} when interpolating the vardir variable, but all commands run through ruby puppet (like {{puppet agent -t}} or {{puppet cert}}) were using puppet's default {{vardir}} value.\n\nAnytime a user overrides a setting in their puppetserver.conf file and references the value of that setting in their puppet.conf, puppetserver and the puppet command will get different values unless the value in puppetserver.conf is explicitly set to whatever it is set to in puppet.conf, or, if it's not set in puppet.conf, whatever ruby puppet's default is.\n\nWe should make it very clear in our documentation that this can happen.\n\nIn addition, we should add an appropriate comment to the puppetserver.conf file", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17039", "fixedVersions": ["SERVER 2.1.2"], "id": "17039", "issueType": "Improvement", "key": "SERVER-719", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Fixed", "resolutionDate": "2015-10-14T17:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve documentation around overriding puppet settings with the master-dir settings in puppetserver.conf", "timeSpent": "PT0S", "updated": "2015-10-14T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Here's how I functionality tested this locally, starting from source:\n\n1) Built Native Facter, from the HEAD of the master branch, starting from a recursive clone of https://github.com/puppetlabs/facter, and following the build instructions in https://github.com/puppetlabs/facter/blob/master/README.md.\n\n2) For Puppet Server, did a {{lein uberjar}} to build the Puppet Server uberjar.\n\n3) Configured my local \"puppetserver.conf\" to be using 2 jruby-puppet instances:\n\n{code:hocon}\njruby-puppet: {\n  max-active-instances: 2\n  ...\n}\n{code}\n\n4) Ran the following to start Puppet Server against the master branch code:\n\n{noformat}\nFACTERDIR=<path_to_facter_repo>/release/lib java -XX:MaxPermSize=256M -Xms1g -Xmx1g -jar ./target/puppet-server-release.jar --config <my_puppetserver_conf> --bootstrap-config ./dev/bootstrap.cfg\n{noformat}\n\nObserved that Puppet Server failed to start with the error from the description above.\n\n5) Re-built Puppet Server code per the code in the PR associated with this ticket.\n\n6) Restarted Puppet Server as above.  Observed that Puppet Server booted to ready with no errors.\n\n7) Created a custom Puppet function which outputs the version of Facter.  _Under the hood, Facter would resolve its version using a fact, calling into native code when running native Facter._\n\n{code:ruby|title=facter_version.rb}\nmodule Puppet::Parser::Functions\n  newfunction(:facter_version, :type => :rvalue) do |args|\n    Facter.version\n  end\nend\n{code}\n\n8) Referenced the custom function in a notify resource in a top-level manifest:\n\n{code:puppet|title=site.pp}\n$f_version = facter_version()\n\nnotify { 'the facter version':\n  message => \"facter version is: $f_version\"\n}\n{code}\n\n9) Did an agent run to the master and observed that the value was returned:\n\n{noformat}\nNotice: facter version is: 2.9.0\nNotice: /Stage[main]/Main/Notify[the facter version]/message: defined 'message' as 'facter version is: 2.9.0'\n{noformat}", "created": "2015-06-06T12:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to master at 9cd24da6e7454d4273cd950f1fda5b3a6f0b4dc9.\n\nSubsequent full Jenkins pipeline passed, including the FOSS #25 job:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/6/\n\nMoving to \"testing\".", "created": "2015-06-10T14:32:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Functionally Reviewed & Documented by [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] above.  ", "created": "2015-06-11T12:52:00.000000"}], "components": [], "created": "2015-06-05T12:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5acef7b5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoqzj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Need this for next PE and FOSS puppet-agent support w/ Facter 3"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_175244630_*|*_1_*:*_1_*:*_3185976_*|*_10007_*:*_1_*:*_217710967_*|*_3_*:*_1_*:*_42579037_*|*_5_*:*_1_*:*_530552737_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_80434310"}], "description": "Pre-Facter 3.0.0 code is not currently runnable under Puppet Server 2.1 when more than 1 {{max-active-instances}} for {{jruby-puppet}} is in use.  When the second JRubyPuppet instance is being initialized, the puppetserver service dies with an error like the following:\n\n{noformat}\n2015-06-04 08:37:51,741 ERROR [puppet-server] Puppet Could not create resources for managing Puppet's files and directories in sections [:main, :master, :ssl, :metrics]: cannot link Java class com.puppetlabs.Facter\norg/jruby/javasupport/JavaUtilities.java:54:in `get_proxy_or_package_under_package'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/jruby/java/java_package_module_template.rb:14:in `method_missing'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/facter.rb:18:in `value\u2019\n{noformat}\n\nFacter 3.0.0 would introduce the use of a native library for resolving facts and a \"facter.jar\" with a Java class that bridges from Ruby through JNI into that native library.  The root of this problem is that the native library cannot be loaded into more than 1 Java classloader.  This is a protection mechanism that Java built-in to avoid loading multiple instances of the same native library, potentially causing conflicts around global state as a result (depending upon the library implementation).  Each JRubyPuppet instance has its own classloader associated with it and so trying to \"require\" the \"facter.jar\" from more than 1 instance results in the above failure.\n\nEventually, we may need to be able to support the ability for different versions of the \"facter.jar\" and backing shared library to be loaded and attached to diffferent JRubyPuppet instances.  Where this is not a strict requirement for now, though, the most expedient path to avoiding this problem would be for the \"facter.jar\" to be loaded by the system classloader within the Puppet Server process.  This would allow the jar to be loaded one time and shared across JRubyPuppet instances as needed.\n\nAs this approach may need to change to support better container management for JRubyPuppet instances in the future, it would be best for now to devise an approach which does not have external configuration which would have to later be deprecated / migrated to a different approach.  To that end, the approach we would take for this ticket would be to have Puppet Server code iterate through the paths defined via the existing {{ruby-load-path}} setting under the {{jruby-puppet}} section of Puppet Server\u2019s configuration.  For the first instance of \u201cfacter.jar\u201d which is found (in the immediate directory only - no searching through subdirectories), Puppet Server would programmatically add that to the system classloader\u2019s classpath.\n\nWe discussed the possibility of having Puppet Server fail startup if it is unable to find the \"facter.jar\" file but this approach would make Puppet Server not backward compatible with the existing Ruby implementation in Facter 2.x and earlier - where the 'facter.jar' does not exist - so this may not be best to pursue for now.  For debugging purposes, it would seem to make sense to log a message with the location at which the jar added to the classpath is found and maybe just an info-level message, but not failing startup, if the 'facter.jar' file cannot be found.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15835", "fixedVersions": ["SERVER 2.1.1"], "id": "15835", "issueType": "Task", "key": "SERVER-718", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-11T12:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Load facter.jar into system classpath at startup", "timeSpent": "PT0S", "updated": "2015-12-17T16:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "My apologies, I didn't realize I was going to break anyone with that change. It seems like {{install_puppet_from_(deb|rpm)}} was installing the release repo, but it was idempotent in doing so. Additionally we may want to get Beaker's {{install_puppetlabs_release_repo_on}} method to be idempotent as well.", "created": "2015-06-05T13:12:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I filed the request to make the method idempotent here: BKR-314", "created": "2015-06-05T13:18:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] No worries! It's a really easy workaround.", "created": "2015-06-05T15:11:00.000000"}, {"author": "623e7507866b810069e57527", "body": "This is no longer causing an issue with our CI pipeline, so I'm going to close it.", "created": "2015-06-08T11:17:00.000000"}], "components": [], "created": "2015-06-05T11:40:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@31608059"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0bpj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CI failures"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11542_*|*_10007_*:*_1_*:*_235957342_*|*_3_*:*_1_*:*_21890543_*|*_5_*:*_1_*:*_41209884017_*|*_6_*:*_1_*:*_0"}], "description": "The Puppet 3.x compatibility suite is currently failing on RedHat 6 and 7. This is due to the newest version of Beaker, which now installs the puppetlabs package repositories in the {{install_puppet}} method, so it no longer needs to be done manually. This step needs to be removed from the presuite.\n\nWhile we're at it we should also remove [this hack|https://github.com/puppetlabs/puppet-server/blob/master/acceptance/suites/pre_suite/puppet3_compat/70_install_puppet.rb#L5].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15189", "fixedVersions": ["SERVER 2.1.1"], "id": "15189", "issueType": "Task", "key": "SERVER-717", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Done", "resolutionDate": "2015-06-08T11:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove puppetlabs repository install from 3.x compatibility presuite", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This appears to have cropped up again. It's a challenge to debug.\n\nhttps://gist.github.com/samwoods1/64b3343d7fd2c5ce79af13393051c2e8#file-orchestration_error-L161", "created": "2017-06-06T16:29:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "A possible explanation, though not validated yet: this seems like a race condition in puppet/environments.rb. https://github.com/puppetlabs/puppet/blob/master/lib/puppet/environments.rb#L388 will first evict from the cache expiration registry, then remove from the @cache. If another request attempts to use the environment, there may not be an entry in re-added to the cache expiration registry, resulting in returning nil from the is_expired check. That could happen with two calls to evict_if_expired or clear_all_expired at the same time.\n\nOne piece I'm not sure about: can you have two calls to the environment endpoint being served by the same jruby simultaneously? Could there be another way eviction is triggered while still serving the environment endpoint? If the cache expiration registry is shared by multiple jruby instances, it could definitely happen.", "created": "2017-06-06T16:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}One piece I'm not sure about: can you have two calls to the environment endpoint being served by the same jruby simultaneously?{quote}\n\nI wouldn't think that should be possible.  I do think more than one call to an environment endpoint could be served by different JRubies around the same time although each JRuby should only be using the {{EnvironmentRegistry}} object which was created for it.  These aren't shared across JRuby instances.\n\nI tend to think we should just do what Chris had originally suggested and have the Puppet Server implementation just return a boolean value (instead of nil) for {{isExpired}} for any case where the environment can't be found in the registry.  I lean toward returning {{true}} instead of {{false}} since it seems like we shouldn't be telling the consumer that its cache for the environment is still valid for cases where the registry doesn't know anything about the environment.\n\nSince we apparently have a somewhat reproducible case for this now, I'll reopen the ticket and place it in an upcoming sprint.", "created": "2017-06-06T17:50:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "I've been poking around at a VM [~accountid:557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0] kindly set up for us. There's definitely something in {{environments.rb}} or elsewhere that's causing the environment cache and the cache expiration registry to get out of sync, but I'm not having much luck debugging it.\n\nI was talking with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and one thing that seemed suspicious to us is that in the logs you can see the {{environment.conf}} file is getting removed right before the errors start popping up\n\n{noformat}\n2017-06-07 17:33:40,839 INFO  [clojure-agent-send-off-pool-12] [p.e.s.f.file-sync-storage-core] Committing the following chan\nges:\n  Added Files: .r10k-deploy.json, .resource_types/svc1.pp, canary, modules/app1/files/source.txt, modules/app1/lib/puppet/typ\ne/svc1.rb, modules/app1/manifests/consumer.pp, modules/app1/manifests/init.pp, modules/app1/manifests/producer.pp\n  Removed Files: environment.conf\n...\n{noformat}\n\nIt's then force synced, and errors start showing up  a second later. So maybe the code around loading {{environment.conf}} has a bug?\n\nIt's hard to debug in place though, since making any changes to the ruby scripts on the vm, or hacking together a new puppetserver jar, requires a service restart and the bug doesn't reproduce.", "created": "2017-06-08T16:40:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "Michael noticed some related comments of mine from PE-20774 where we seem to have been seeing the same NullPointer exception from environment expiration after a file-sync in the orch job in LEI upgrade tests.", "created": "2017-06-12T15:07:00.000000"}, {"author": "557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0", "body": "Thanks, tonight's CI run should pick it up and I can let you know tomorrow if it is resolved.\nAlso, just as an FYI, this is not a transient error... I'm seeing it 100% of the time in the HA runs in 2017.3, and have never seen it in 2017.2.  ", "created": "2017-06-12T18:00:00.000000"}, {"author": "557058:a69e978d-6cea-49f9-9227-3a3ef8a776c0", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Tonight's run got past this step... and failed at another later on.  This issue appears to be resolved.  Thanks! ", "created": "2017-06-13T10:32:00.000000"}], "components": [], "created": "2015-06-04T04:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Server"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b09661a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzecyv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Fix for a bug which intermittently caused some HTTP API requests to fail with a 500 error status code, with a message like the following in the puppetserver.log file:\n\n2015-05-05 17:40:29,649 ERROR [puppet-server] Puppet \npuppetlabs.services.jruby.puppet_environments$environment_registry$reify__12408.isExpired(puppet_environments.clj:27)\n..."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jun/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_435992640_*|*_1_*:*_1_*:*_2357689308_*|*_10007_*:*_1_*:*_98669924_*|*_3_*:*_1_*:*_1239612_*|*_5_*:*_1_*:*_1282250557_*|*_6_*:*_2_*:*_15465014207_*|*_10006_*:*_1_*:*_66345734_*|*_10005_*:*_1_*:*_45557462028"}], "description": "We saw some errors in PE-10057 that looked like this:\n\n{code}\n2015-05-05 17:40:29,649 ERROR [puppet-server] Puppet \npuppetlabs.services.jruby.puppet_environments$environment_registry$reify__12408.isExpired(puppet_environments.clj:27)\npuppetlabs.services.jruby.puppet_environments$environment_registry$reify__12408.isExpired(puppetlabs/services/jruby/puppet_environments.clj:27)\n{code}\n\nThe line that's happening on is here:\n\nhttps://github.com/puppetlabs/puppet-server/blob/16c4f503b46d5103fda713c1e030731892deed29/src/clj/puppetlabs/services/jruby/puppet_environments.clj#L28\n\nThat line could theoretically return a `nil`, which might cause some kind of exception since the Java interface specifies a boolean as the return type:\n\nhttps://github.com/puppetlabs/puppet-server/blob/47b9ad3cb20f576acf1333cfcd354a60c185089f/src/java/com/puppetlabs/puppetserver/EnvironmentRegistry.java#L5\n\nI *thought* that the code paths through Puppet would guarantee that we'd always registered an environment prior to calling {{isExpired}}, so it would be good to investigate that and make sure we understand what's going on, but in either case it's probably best to go ahead and fix the clojure code to explicitly return {{false}} if the value doesn't exist.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17607", "fixedVersions": ["SERVER 5.0.0"], "id": "17607", "issueType": "Bug", "key": "SERVER-715", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2017-06-13T17:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "`isExpired` method on environment registry implementation is not resilient", "timeSpent": "PT0S", "updated": "2017-06-28T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Updated the ticket body with my notes/thoughts from the first pass over this.  Moving back to Ready for Engineering.\n\nWhen we return to this, we still need to come up with a concrete solution.\n\nFrom Chris Price in email:\n{quote}\nWe can talk through more concrete examples for hiera when you are ready.  I think what we're going to end up wanting to do is baking some hiera data files into the 'test-catalogs' repo, to pair alongside various modules.  Classes in a given module can then be modified to look up data from hiera as part of compilation.\n{quote}", "created": "2015-06-18T11:51:00.000000"}], "components": ["Performance"], "created": "2015-06-03T15:29:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76eaa857"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotyn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1162773_*|*_10007_*:*_1_*:*_869462884_*|*_3_*:*_2_*:*_1114331138_*|*_5_*:*_1_*:*_36698462533_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_2943528017"}], "description": "Hiera. Not having any hiera interactions in our tests leaves out a big swath of coverage since almost all customers at a non-trivial scale seem to be using it in some way. Need to think about how we can drop in some hiera config / data onto the SUT.\n\nWe probably need to at least be thinking about where the hiera files are going to live (hopefully in our same single test code repo mentioned above), and how they are going to get deployed onto the SUT.  I kind of think that all of the tools we've discussed (PMT, librarian, r10k) don't have a mechanism for this; that they only know how to deal with modules.  That might be another good question to ask Adrien about, or to just keep an eye out for if you are poking at r10k.\n\npuppetlabs/puppetlabs-modules repo is structured almost exactly how we're envisioning test-catalogs with inlined modules and corresponding hiera data.  Might be worth a look.\n\n----\n\nh1. Using Hiera means you have a...\n\nh3. hiera.yaml\n\nEntry point; the configuration file that defines the \"datadir\" and\nestablishes the hierarchy of files within.\n\nTypically stored in the master's confdir: `$confdir/hiera.yaml`.\n\nh3. datadir\n\nDirectory full of YAML (or JSON) files that contain hiera data.\n\nh1. Possible Implementation Approach\n\nMaybe we can keep a standalone collection of named hierarchies, and then\nlet the scenario or simulation refer to the hierarchy?\n\nThe idea here is that you can mix-n-match the scenarios and \"hieras\" and\nnot have to copy the hiera files. This should allow for a new \nscenario/simulation to be defined without having to redefine anything\nrelated to Hiera, but instead just refer to the specific \"hiera\" instance\nthey want to use.\n\nMaybe we have a top-level \"hieras/\" directory that contains particular \nhierarchies as sub-directories, where each sub-directory has a \n`hiera.yaml` and datadir containing the actual YAML data files.\n\nThen the scenario/simulation would reference the specific \"foo\" hierarchy\n(which corresponds to the hieras/foo directory) and the hiera.yaml file \nand datadir within will be installed on the master.\n\nFor example, the \"hieras\" might be laid out in the repository like this:\n{code}\njenkins-integration/\n  config/\n    nodes/\n    scenarios/\n    hieras/\n      foo/\n        hiera.yaml\n        datadir/\n          something.yaml\n          common.yaml\n      bar/\n        hiera.yaml\n        datadir/\n          somethingelse.yaml\n          common.yaml\n{code}\nAnd then a scenario/simulation could use a particular hiera like so:\n{code}\n{\n  \"run_description\": \"My scenario with foo hiera data\",\n  \"nodes\": [...],\n  \"hiera\": \"foo\"\n}\n{code}\n\nIn what JSON level do we define Hiera?\n- node? No, don't think so\n- scenario? Maybe\n- simulation step? Maybe\n\nI don't think that the Hiera configuration applies to the Gatling \"node\" \nlevel which means it wouldn't need to be in the node JSON.\n\nIt might make sense at the Gatling \"scenario\" level though?\nOr one level higher at the \"simulate\" level perhaps?\n\n\n", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15565", "fixedVersions": ["None"], "id": "15565", "issueType": "Task", "key": "SERVER-714", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-07-30T16:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Add hiera support", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Performance"], "created": "2015-06-03T15:26:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ea6da0f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0alr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1389839_*|*_10007_*:*_1_*:*_165236430_*|*_3_*:*_1_*:*_103388458_*|*_5_*:*_1_*:*_40359129898_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_505893222"}], "description": "Directory environments. We need to be thinking about which environments we install modules into, and how to achieve that.\n\nbq. Are we thinking that the \"environments\" JSON will be a mapping between specific modules and specific environments?  Or would it just be a list of specific environments?  Or something else?\n\nYeah, I think it'd be a mapping of modules -> environments, for a particular node simulation probably?  Or maybe we'd do that mapping in the scenario JSON files instead of the node JSON files?\n\nI think the examples from the classroom tarball (which Erik submitted as a PR to g-p-l-t) might be a useful thought experiment.  To simulate the full classroom environment, I think we'd want one (or more) agent node simulations for each student's environment.  The node JSON would then most likely contain the mapping of modules -> environments, and the scenario JSON would list several nodes (at least one for each student).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14968", "fixedVersions": [], "id": "14968", "issueType": "Sub-task", "key": "SERVER-713", "labels": [], "originalEstimate": "PT0S", "parent": "17605", "parentSummary": "Automation installation of required modules / code", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-06-12T14:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Add directory environment support", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Performance"], "created": "2015-06-03T15:16:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c13f228"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0alj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1918415_*|*_10007_*:*_1_*:*_71931722_*|*_3_*:*_1_*:*_433948156_*|*_5_*:*_1_*:*_40627793494_*|*_6_*:*_1_*:*_0"}], "description": "Once the gatling jenkins job has successfully installed Puppet Server on the SUT, we need to get any required code deployed onto the machine as well.\n\nThere is some work around this in the old jenkins setup stuff:\nhttps://github.com/puppetlabs/gatling-puppet-load-test/blob/02745476adcbf4fca4bff786ae78292ebdccc6de/jenkins-integration/beaker/classify/pe/01_config_master.rb#L109-L134\n\nAnd some of that may be able to be re-used. However, we have some new considerations that we need to deal with that we didn't have at the time when I originally wrote that stuff.\n\nThis ticket would pretty much be:\n* on the box that has gatling-puppet-load-test, assume you've been given the name of a JSON file from config/scenarios/foo.json as input.\n* follow that file through to find all of the relevant config/node/*.json files that it depends on\n* grab a concatenation of a list of all of the \"modules\" arrays from those config/node/*.json files.  Now you have a list of all of the modules you need to install on the master SUT.\n* run r10k/librarian-puppet to install them into the default/production environment.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17297", "fixedVersions": [], "id": "17297", "issueType": "Sub-task", "key": "SERVER-712", "labels": [], "originalEstimate": "PT0S", "parent": "17605", "parentSummary": "Automation installation of required modules / code", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-06-09T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Basic module installation", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Which mailing list post?", "created": "2015-06-03T15:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Which docs?  What kind of terminus are we talking about?", "created": "2015-06-04T04:19:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "Sorry, I forgot to include the mailing list post.", "created": "2015-06-04T07:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] thanks for adding the link.\n\nI'm still unclear on what docs we're talking about though.  Or whether or not we (PL) own/support the ruby-ldap gem, and if so, whether that is part of a module or actually belongs under the SERVER umbrella... can you provide a bit more detail?", "created": "2015-06-05T03:18:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "The node terminus supports LDAP. Except it doesn't work with puppetserver, as evidenced by the mailing list post I referenced.\n\nhttps://docs.puppetlabs.com/guides/ldap_nodes.html\n\nI don't know how exactly docs corrections that depend on engineering fixed get resolved, but I assumed that because there was a docs component to the puppetserver project that you'd know where/how to push it on once it was fixed.", "created": "2015-06-08T13:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] wow, that's built into core Puppet?  I didn't know that.\n\nI can steer the ticket in the right direction, just didn't have the context to know where that would be.\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] we will probably need help prioritizing this.  Reading the mailing list post it sounds like fixing this for Puppet Server will require an upstream PR to the jruby-ldap gem, and then some updates to our docs.", "created": "2015-06-09T00:22:00.000000"}, {"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]- perhaps we could size the effort in grooming call this week and understand what other dependencies there might be with testing etc.", "created": "2015-06-09T01:03:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "FWIW this is not deprecated functionality but it's a pretty dusty, cobwebby area of Puppet. Most people have shifted over to using the External Node Classifier API.  \n\nI'll follow up on the thread and see if the original poster is willing to work up a patch but IMO this isn't worth displacing anything off the backlog.", "created": "2015-06-09T15:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] It doesn't seem like we have product momentum behind this issue so closing this for now.  Please reopen if you think that's not the case.", "created": "2016-12-09T16:59:00.000000"}, {"author": "557058:7bdae10b-73f2-4aa7-b72c-9998a4526110", "body": "FYI: you can either add the patch described in the mailing list thread manually, or just use my fork of the gem that has it in: https://github.com/petems/jruby-ldap-patched \n\ngem install jruby-ldap-patched \n\nHowever, this only works without tls/ssl enabled, patches welcome :)", "created": "2017-06-15T08:18:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "tried to make this ldap node_terminus working again: https://github.com/puppetlabs/puppet/pull/6154", "created": "2017-08-24T10:46:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2015-06-03T13:59:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6300a5bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xfj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_595573700_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_47370850387"}], "description": "According to this mailing list post, the puppetserver doesn't work properly with {{jruby-ldap}}.\n\nhttps://groups.google.com/forum/#!topic/puppet-users/DKu4e7dzhvE\n\nThe docs also need to be updated to clarify that puppetserver needs the {{jruby-ldap}} gem instead of {{ruby-ldap}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16459", "fixedVersions": [], "id": "16459", "issueType": "Bug", "key": "SERVER-711", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "LDAP terminus doesn't appear to work in puppetserver", "timeSpent": "PT0S", "updated": "2017-09-28T08:34:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:79f2fdd6-baee-43c4-91af-c7e647173c95", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "@Christopher Thorn : This is a hard question to answer because we try to get all our settings managed by the PE module.\n\nToday, I think max-requests-per-instance is not managed. See https://github.com/puppetlabs/puppet-server/blob/master/documentation/configuration.markdown.  \n\nBut, at some point in the future, this will become managed and break your test.\n\nHowever, I think rather than test that the HOCON module manages some well known setting, you could invent a test that manages a non setting, an arbitrary key value pair, in an arbitrary file, and test to see that the content you asked for in the HOCON module lands in the file you specify.  \n\nSo, perhaps:\non(testhost, \"puppet module install puppetlabs-hocon\")\non(testhost, \"gem install hocon\")\n\nmanifest = <<- SITE\nclass footest {\n  hocon_setting { 'foobar' :\n    ensure => present,\n    path => '/tmp/hoconTest.txt',\n    setting => 'Foo.Bar.Baz',\n    value => 'A nice test value',\n}}\nnode defalut {\ninclude footest\n}\nSITE\n\nNiftyFunctionToUpdateSite(host, manifest)\non(testhost, 'puppet agent -t')\n...\n\n\n\n\n", "created": "2015-06-03T13:48:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:79f2fdd6-baee-43c4-91af-c7e647173c95] I hope the above helps.  Shoot this back to me if not.", "created": "2015-06-03T13:49:00.000000"}], "components": [], "created": "2015-06-03T12:57:00.000000", "creator": "557058:79f2fdd6-baee-43c4-91af-c7e647173c95", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18db67e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xfb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_599258352_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_47370777049"}], "description": "For testing Hocon in Shallow Gravy I'm looking at creating a few acceptance tests. These tests will require the settings in Puppet Server, along with components, that are not settable via Hiera. \nSo if a customer needs to change a setting that is not in Hiera, they could still go ahead and make the change in Hocon. \nAn example of where if the hocon module was in place, would of made life easier for customers was in ticket PE-7192, puppet_enterprise module should expose max-threads for tk-jetty.\nThat was where on the webserver(?) (i'm not exactly sure which component needed it, off the top of my head), had a setting in it for max-threads. However that setting was not exposed in Hiera. So the customer could manually edit their config files to expose that setting, but on upgrades that setting would be blown away. \nThis is the use of hocon that I'm looking to test, settings that are not exposed in the profile level or in the hiera level. It really doesn't matter how important these settings are, or what they do just something for me to toggle in a test would be helpful.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16655", "fixedVersions": [], "id": "16655", "issueType": "Task", "key": "SERVER-710", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:79f2fdd6-baee-43c4-91af-c7e647173c95", "resolution": "Incomplete", "resolutionDate": "2016-12-09T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Hocon settings (non-Hiera, non-profile)", "timeSpent": "PT0S", "updated": "2016-12-09T16:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Note that these test helper functions may serve as the beginnings of a mini-DSL for writing Puppet tests in Clojure, where we historically would have needed to use Beaker.  These tests are much more efficient, so it is highly desirable to get some traction on standardizing patterns for them.\n\nCode in question is stuff like this:\n\nhttps://github.com/puppetlabs/puppet-server/blob/ce9c91cc3d6b28003ab5c40c4828454ae9fdf398/test/integration/puppetlabs/services/jruby/puppet_environments_int_test.clj#L31-L126\n", "created": "2015-06-04T02:47:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I'm running into this again ... needing to use more of these in PE.  (i.e. {{reduce-over-jrubies}})", "created": "2015-07-24T11:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Code called out in this ticket was done in: https://github.com/puppetlabs/puppet-server/pull/871\n\nLooking to see if anything else right now needs doing...", "created": "2016-02-29T21:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] has pe-pse been refactored to use those testutils?  I was thinking that it still had a duplicate copy of a lot of those functions.", "created": "2016-03-01T08:19:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "No, ppse hasn't been refactored to use those fns yet. I think [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] wanted me to tackle that in PE-11634.", "created": "2016-03-01T15:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ah, OK, didn't see that there was a separate ticket for that.  Carry on, then :)", "created": "2016-03-01T15:32:00.000000"}], "components": [], "created": "2015-06-03T09:22:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7cc7f6b5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_612029158_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_47370892993"}], "description": "Puppet Server has a number of test helper functions which would be useful in other projects - namely, pe-puppet-server-extensions.  These should be exposed in way that they can be consumed by other projects.\n\nThe preferred solution here is to simply build a test .jar, the way our other Clojure projects do (e.g. Trapperkeeper).  This is slightly more complicated in this case, since Puppet Server uses voom to do intermediate/internal releases - but [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] says that it should work just fine.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16158", "fixedVersions": [], "id": "16158", "issueType": "Task", "key": "SERVER-709", "labels": ["low-hanging-fruit", "server"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make test helpers reusable by other projects", "timeSpent": "PT0S", "updated": "2016-12-09T16:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:720f602d-ed4c-4553-a2cf-8e7dc40c0739]", "created": "2015-06-02T17:23:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Mark has clojure (I think) that reads gatling results out and produces a google doc like this:\nhttps://docs.google.com/spreadsheets/d/1T6o4jlnFXKvhHyzS3M4ldQKiScfLznPglu00Iii1PyQ/edit#gid=0\n", "created": "2015-06-02T17:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] another option that is worth considering is to stop running gatling in a loop the way we have been, and instead just do a gatling run that is set to the desired length ahead of time.  The only reason we stopped doing this in the past is that there was some kind of bug in older versions of gatling where if you tried to do a really, really long run it would eventually crash.  I believe that issue has been resolved since then.\n\nThat said, there are pros and cons to both approaches.  The pros of doing it the way you describe in this ticket are that you can start to look at some of the data pretty easily while the run is in progress (though I think it might be possible to make an explicit call to gatling with the 'report only' option turned on, during a run, and get a graph of the run so far), and you don't have to know ahead of time how long you want it to run for (it just loops infinitely and you kill it when you decide you're ready).\n\nThe cons are that we're rolling our own visualization when gatling already provides some pretty good tooling around that, and that it will be harder to have Jenkins manage these jobs if they are infinite and require some kind of manual interruption.\n\nNot sure there's a clear winner on either side, but thought it was worth mentioning the option.\n\n", "created": "2015-06-03T02:34:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14],\n\nThere are a few other things we need to keep in mind as we consider our approach:\n1.  Do we want the ability to interleave gatling node_simulations?  \n        For example, I want to be able to interleave a CatalogZero run at once twice per hour, and a Node Classifier refresh classes run at the rate of once per 10 minutes.\n\n2.  Do we want the ability to collect memory status / system health status in between runs?\n\nFor me, my answers for both of the above are \"Yes.\"  But I also want to have Gatling's visualization tools.\n", "created": "2015-06-03T12:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yes, we should definitely be able to run multiple \"node\" simulations simultaneously.  The way that gatling-puppet-load-test is set up, it should already support that, and it should already handle the distinction between the different nodes in the generated gatling report.\n\nYes we want to capture memory/health status, but in an ideal world there's no reason why that would need to be \"between\" runs", "created": "2015-06-04T04:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This has been overtaken by events, kind of already working via the gatlingArchive pipeline step.", "created": "2016-08-04T16:15:00.000000"}], "components": [], "created": "2015-06-02T16:27:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3cccde1d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr7z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_70378981_*|*_3_*:*_1_*:*_16081228854_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_17102752437_*|*_10005_*:*_1_*:*_3810515282"}], "description": "We need a script that collects the json results from many stats.js files from simulation_runner/results, stores those results in a configurable permanent location, and produces useful visual output.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17326", "fixedVersions": ["None"], "id": "17326", "issueType": "Task", "key": "SERVER-708", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2016-08-04T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automate the collection of Gatling results statistics", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Not sure if this is still relevant.  Will open a new ticket if warranted.", "created": "2016-08-04T16:18:00.000000"}], "components": [], "created": "2015-06-02T14:35:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c4978d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0973:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1293725_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_37070487056"}], "description": "In getting PE 3.8 long running tests up and running, we had a few issues around running out of disk space do to reports being stored in database tables for puppetdb and the console. PE's defaults weren't agressive enough to free the disk space before it ran out. \n\nThe fix was to edit class parameters in the PE classifier web page. It would be nice to have bigger HDDs, but this issue might crop up again, so it seems reasonable to find a way to tune these parameters after installing PE on a SUT from beaker. This might be trivially easy, I'm not sure.\n\nThe modules/settings are:\nPE PuppetDB:\nClass: puppet_enterprise::profile::puppetdb:\nreport_ttl = \"30m\"\ngc_interval = 60\n\nPE Console:\nClass: pe_console_prune:\nprune_upto = 1\nprune_unit = hr\nprune_cron_hour = \"absent\"\nprune_cron_minute = 0\n\n\n", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16155", "fixedVersions": ["None"], "id": "16155", "issueType": "Improvement", "key": "SERVER-707", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Won't Fix", "resolutionDate": "2016-08-04T16:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add the ability to configure database pruning/maintenance settings for PE installs", "timeSpent": "PT0S", "updated": "2016-10-14T17:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-06-02T10:53:00.000000", "creator": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ad80aa8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz08fj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "UX Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1296877847_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_145752499841"}], "description": "From [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]:\n\nbq. The second would be part of puppet server (and filed against the SERVER project).  It'd be things like:\n\nbq. `puppetserver config set webserver.port=8140`\n\nbq. and\n\nbq. `puppetserver config get webserver.port`\n\nbq. It would have to have some smarts about what files to look in, and could possibly do some validation on types for specific settings if we wanted to get really fancy.  Probably not in phase 1, but theoretically possible anyway.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15832", "fixedVersions": [], "id": "15832", "issueType": "Improvement", "key": "SERVER-705", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "resolution": "Won't Do", "resolutionDate": "2020-01-29T08:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Provide CLI tool to manipulate values in Puppet Server files", "timeSpent": "PT0S", "updated": "2020-01-29T08:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ummmmmm... wtf?!  :)\n\nProbably need to bring this into the next sprint to have someone try to repro.\n\nThat sounds super weird, though, because we didn't write any of the code that generates that log line.  That's all Jetty/Logback...", "created": "2015-06-03T08:04:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "Sure - forgot to add the version - this is 1.0.8 puppetserver - will have a crack with 2.1.0 - in a day or so I expect, given that it seems to have just been released.", "created": "2015-06-03T08:08:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. Ummmmmm... wtf?!  \n\nI had the exact same reaction!", "created": "2015-06-03T09:08:00.000000"}], "components": [], "created": "2015-06-02T05:02:00.000000", "creator": "5b1e529cba383e0814003fb3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d75bd95"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywqhz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_111263927_*|*_3_*:*_1_*:*_78669211_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_47894858740"}], "description": "With the CA disabled in bootstrap.cfg but ca set to true in puppet.conf, puppet server logs a 200 response but actually responds with a 404:\n\npuppetserver.log\n\n{{172.17.1.98 - - - 02/Jun/2015:10:36:54 +0000 \"GET /production/certificate_revocation_list/ca HTTP/1.0\" 200 0 172.17.1.98 172.17.1.98 8140 5}}\n \n{quote}[root@acceptancedevmaster puppet]# wget -O /var/tmp/crl.pem --no-check-certificate https://acceptancepuppetserver:8140/production/certificate_revocation_list/ca\n--2015-06-02 06:36:16--  https://acceptancepuppetserver:8140/production/certificate_revocation_list/ca\nResolving acceptancepuppetserver... 172.17.1.98\nConnecting to acceptancepuppetserver|172.17.1.98|:8140... connected.\nWARNING: cannot verify acceptancepuppetserver's certificate, issued by `/CN=Puppet CA':\n  Unable to locally verify the issuer's authority.\nHTTP request sent, awaiting response... 404 Not Found\n2015-06-02 06:36:16 ERROR 404: Not Found.\n{quote}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16146", "fixedVersions": [], "id": "16146", "issueType": "Bug", "key": "SERVER-704", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b1e529cba383e0814003fb3", "resolution": "Incomplete", "resolutionDate": "2016-12-09T16:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Logging inconsistency between puppetserver.log and HTTP response code sent", "timeSpent": "PT0S", "updated": "2016-12-09T16:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "For clarification: the important distinction here is to set a *different* value for Xms than for Xmx", "created": "2015-06-04T03:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Here's another link that I found:\n\nhttp://blog.takipi.com/7-things-you-thought-you-knew-about-garbage-collection-and-are-totally-wrong/\n\nThe GC logging stuff that it mention seems like something we should experiment, and if it looks valuable, consider opening an EZBake ticket to get that turned on for all projects.", "created": "2015-06-05T03:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "See confluence notes here:\n\nhttps://confluence.puppetlabs.com/display/PROD/Puppet+Server%2C+Memory+Usage%2C+and+Garbage+Collection", "created": "2015-07-02T06:58:00.000000"}], "components": [], "created": "2015-06-02T02:00:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f592177"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0mnz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_122094271_*|*_3_*:*_1_*:*_95908213_*|*_5_*:*_1_*:*_39152049522_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2391849640_*|*_10005_*:*_1_*:*_7282"}], "description": "We've had a lot of support escalations lately due to OOM errors.  So far, most of them seem to be cases where there is a legitimate issue in Puppet that is causing it to use too much memory for something.\n\nIn the old architecture, we were more resilient to deficiencies like these because there was no limit set on how much memory a Passenger Ruby process was given by the operating system, and since the processes were reaped periodically, the memory would eventually be freed.\n\nIn Puppet Server we are trying to keep the max heap size (\"-Xmx\") set to as low a value as possible, to ensure that Puppet Server does not consume more system resources than necessary / expected.  However, in practice, this cap causes problems when we hit Ruby code that would otherwise consume giant amounts of memory.\n\nWe've been deploying Puppet Server (and other PL JVM apps) with a configuration that sets both the minimum heap size and maximum heap size to the same value (as per recommendations found in Oracle's documentation).  Theoretically, this reduces the amount of churn between the process and the OS in terms of negotiating memory usage, and seems like an advisable way to configure things for a stable, predictable server application.  However, given the extensibility of Puppet, and the fact that hardware resource usage will vary wildly based on the stability of the various module code that is loaded, it may not be the best default configuration for Puppet Server.\n\nWe should do some experiments / perf test runs where we don't specify the minimum heap size.  It would be useful to see what happens when we then ramp up some load against the server (via gatling), and watch as the process grows the heap size.  Then, if we eliminate the load and allow the process to stabilize, does the JVM allow the allocated heap size to shrink back down as well?\n\nDepending on how that behaves, it might end up being a much better default configuration for us to not specify the min heap size (or set it to a fairly low value), and then set the max heap size to something near the total amount of system RAM.  Then perhaps the JVM will grow the heap temporarily, as the Ruby code necessitates, but free it up afterwards.  This might prevent some of the OOM issues we've been seeing from customers.\n\nIt would also be useful, as part of these tests, to see how the 'max-requests-per-instance' setting interacts with the heap usage.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16654", "fixedVersions": [], "id": "16654", "issueType": "Task", "key": "SERVER-703", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-07-02T06:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Do some perf testing / observations w/ a different value for \"Xms\" than \"Xmx\"", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This http://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_smoke-stable/LAYOUT=64mdca,LDAP_TYPE=default,PLATFORM=ubuntu1404,label=beaker/13/consoleFull test has been running and passing in the Puppet Server stable pipeline for some time now.  Snippet from one run log: \n\n{noformat}\nBegin acceptance/suites/tests/00_smoke/validate-excluded-bc-jars.rb\n\nValidate excluded BC jars are not in packaged uberjar.\n\nylrrrzpad49oxhr.delivery.puppetlabs.net (ubuntu1404-64-1) 09:42:35$  unzip -lf /usr/share/puppetserver/puppet-server-release.jar | grep META-INF/jruby.home/lib/ruby/shared  \n        0  2015-05-04 17:01   META-INF/jruby.home/lib/ruby/shared/\n...\nylrrrzpad49oxhr.delivery.puppetlabs.net (ubuntu1404-64-1) executed in 0.57 seconds\nacceptance/suites/tests/00_smoke/validate-excluded-bc-jars.rb passed in 2.42 seconds\n{noformat}\n\nMoving to \"done\" since this is just a backport of existing an acceptance test.  /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]", "created": "2015-06-10T13:46:00.000000"}], "components": [], "created": "2015-06-01T12:25:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d344584"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0mf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Parity of tests across branches"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_778500102_*|*_1_*:*_1_*:*_72894_*|*_10007_*:*_1_*:*_1708471_*|*_3_*:*_1_*:*_1971354_*|*_5_*:*_1_*:*_41028306161_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_255013"}], "description": "For the Puppet Server stable branch, we are excluding JRuby's bundled version of Bouncy Castle from our Puppet Server uberjar - just as we are for the Puppet Server master branch.  We had created an acceptance test for the master branch which validates that the Bouncy Castle jar has actually been excluded - {{00_smoke/validate-excluded-bc-jars.rb}}.  That test apparently was never ported back to the Puppet Server stable branch but should be.  This ticket would cover the work to do that.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14967", "fixedVersions": [], "id": "14967", "issueType": "Task", "key": "SERVER-701", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-10T13:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add validate-excluded-bc-jars test to Puppet Server stable branch", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm a very big -1 on spending any more time on this unless [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584], or [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] deem it mission-critical.", "created": "2015-06-03T08:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - sorry, there was a bit of context missing here that I should have added earlier...\n\nWe had come across this issue because [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330]'s team was running a test which involved a PUT request being made to the Puppet 3.x / legacy \"file_bucket\" endpoint with a Content-Type of \"text/marshal\".  The test was expecting the request to return an error - which it would with a true Puppet 3.x / Puppet Server 1.x master.  With the Puppet Server 2.1 master, however, the file would end up getting stored as raw binary.  The behavior that the test ultimately intended to validate is that the receiver does not call {{Marshal.load}} on the payload, allowing an attacker to maliciously run Ruby code on the master.  That would not be the case with Puppet Server 2.1's coercion behavior anyway, though, in that Puppet Server does not call {{Marshal.load}} on the request payload and the receiving Ruby Puppet code for the \"file_bucket\" endpoint would only see the payload as being of type \"application/octet-stream\" anyway.\n\nI validated with [~accountid:63d40628f6e1b543161789a7] that there isn't a security concern here and ultimately I think the test that [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330]'s team found should probably be altered to more definitively determine that Ruby code is not being executed by the master - if the test doesn't do so already - and maybe not focus so much on what the HTTP response code is for this case anyway.\n\nGiven the above, I agree that this one doesn't seem like a high priority to me either.  Happy to let this fall to the bottom of the backlog.", "created": "2015-06-03T10:32:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "The test checks that the Ruby code has not been executed, by checking to see that a file that the Ruby code would have created does not exist.", "created": "2015-06-03T11:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] - we're going to close this out b/c there  doesn't seem to be significant benefit to pursuing this further.  Please advise if you feel otherwise.", "created": "2015-06-03T11:28:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "(y) to Closed/Wontfix", "created": "2015-06-08T11:38:00.000000"}], "components": [], "created": "2015-06-01T11:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a3706c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyou47:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_172164456_*|*_6_*:*_1_*:*_0"}], "description": "For the Puppet Server 2.1 legacy route support, we coerce the \"Content-Type\" header to \"application/octet-stream\" for the file bucket endpoint for the purposes of treating the payload for the request as \"binary\" content.  This is done because an agent supplies \"text/plain\" as the \"Content-Type\" for these requests - even though the agent intends for the payload to be treated as binary.  This coercion is done unconditionally.  So if a client which is not an agent happened to provide a \"Content-Type\" of \"foo\" - or something else - the coercion would still be done.\n\nWhere a Puppet 3.x server would have rejected a request with a bogus \"Content-Type\", the current behavior for Puppet Server 2.1 would be different in that the body from the request would be extracted and stored in binary form.  Not sure if this difference is a big deal, but we may want to make the coercion more restrictive - i.e., only when the \"Content-Type\" from the request is \"text/plain\" - to be a little more backward compatible. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17325", "fixedVersions": [], "id": "17325", "issueType": "Improvement", "key": "SERVER-700", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2015-06-03T11:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider more restrictive file bucket Content-Type coercion to \"application/octet-stream\" ", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Looks like we are doing this on perf-bl16.  I think we should close this down soon...", "created": "2015-08-11T14:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Agree, I would love for us to analyze the results from that run and shut it down during this current sprint if at all possible...", "created": "2015-08-12T04:33:00.000000"}], "components": [], "created": "2015-05-28T17:38:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4099bce9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz05w7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11954_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_48471363734"}], "description": "To make a meaningful analysis of the PE 3.8 data we're getting, it would be nice to have some data from PE 3.7.2\n\nThis test doesn't necessarily need to stick around for as long as the PE 3.8 run, we would just like to establish a baseline for comparison", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14966", "fixedVersions": [], "id": "14966", "issueType": "Task", "key": "SERVER-698", "labels": [], "originalEstimate": "PT0S", "parent": "16150", "parentSummary": "Manual Gatling Test Epic", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Incomplete", "resolutionDate": "2016-12-09T16:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Obtain data from a gatling PE 3.7.2 run with catalog_zero for comparison", "timeSpent": "PT0S", "updated": "2016-12-09T16:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The platform team ended up removing the {{rubygems_version}} from the .gemspec.\n\nFor 3.x, that was done here...\n\nhttps://github.com/puppetlabs/puppet/commit/b3123ea574f53c5e6d4d6e6ba80d94ec204adedc\n\n... and merged up to stable here ...\n\nhttps://github.com/puppetlabs/puppet/commit/9720149953bf5dbd6230f8a81018721f07604f33\n\n... and merged up to master here ...\n\nhttps://github.com/puppetlabs/puppet/commit/1a6a1f7deedafa7feadd01ac7a2e0ea19f881d2b\n\n-\n\nWe should just bump our Puppet submodule up to later versions to pick up these changes and undo our pin to bundler.\n", "created": "2015-06-03T14:18:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For the master branch, we removed the bundler pin at [e1abff|https://github.com/camlow325/puppet-server/commit/e1abff7f3c3b871f1d64bc88db6d22ac127a910e].  Our Puppet submodule is back on puppetlabs/puppet on the master branch as of [4af0a5|https://github.com/camlow325/puppet-server/commit/4af0a53b5ef488bf9074e8e4bde2833e42e3f9e9].\n\nOur last few full Jenkins acceptance test jobs have been successful:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/27/\n\nFor the stable branch, we're still currently running on bundler 1.9.9 and against a Puppet 3.7.5 pin.  I don't know whether or not there will be another 3.x Puppet release that we can bump the Puppet submodule forward to and be safe in removing the bundler pin from.  That said, I don't think having the pin in place is hurting anything and, therefore, don't see much value in continuing to hold this ticket open.\n\nMoving to \"closed\".", "created": "2015-06-19T15:31:00.000000"}], "components": [], "created": "2015-05-28T17:13:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@fde9c3c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyor1j:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "New bundler version broke CI"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_507975182_*|*_3_*:*_1_*:*_1386743498_*|*_6_*:*_1_*:*_0"}], "description": "As part of running Ruby spec tests in Puppet Server, we use \"bundler\" to install gems.  Starting with version 1.10.0 of bundler -- which released on May 28, 2015 -- the .gemspec file is automatically validated.  The .gemspec in core Puppet  - https://github.com/puppetlabs/puppet/blob/90cb8f1c548842923bca917fa04f73f00f9a8ed4/.gemspec#L38 - specifies the {{rubygems_version}} as \"1.8.24\".  However, the version of rubygems which is in JRuby - the environment under which the spec tests are run - is 2.4.6.  Because the validation detects that these two versions are different, the \"bundle install\" fails with the following error:\n\n{noformat}\nThe gemspec at /home/travis/build/puppetlabs/puppet-server/ruby/puppet/.gemspec\nis not valid. The validation error was 'expected RubyGems version 2.4.6, was\n1.8.24'\n{noformat}\n\nIn order to get around the error for now, we're pinning the version of bundler that we install to 1.9.9.  This bypasses the validation step.  Ultimately, though, we should probably figure out how to iron out the discrepancy between the rubygems version in core Ruby Puppet's .gemspec file and in JRuby.  Probably need to coordinate with the platform team to figure out the best solution.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16142", "fixedVersions": [], "id": "16142", "issueType": "Task", "key": "SERVER-697", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-19T15:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate rubygem spec version differences and bundler validation", "timeSpent": "PT0S", "updated": "2015-07-29T16:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I wonder if this has the same root cause as SERVER-442, where we were failing to translate query parameters with multiple embedded values into a Ruby array and, therefore, causing the request coming back into the master to be garbled.  [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] - what do you think?", "created": "2015-05-28T14:48:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Did some digging on this, and I think there may be an issue with how Puppet Server decodes multiple parameters from URLs. The GET request being sent looks like this:\n\n{noformat}\n# /opt/puppet/bin/puppet agent -t --http_debug\n\n...\n\nInfo: Applying configuration version '1432846146'\n<- \"GET /production/file_metadatas/modules/ignore_test?links=manage&recurse=true&ignore=foo&ignore=baz&checksum_type=md5 HTTP/1.1\\r\\nAccept: pson, b64_zlib_yaml, yaml, raw\\r\\nAccept-Encoding: identity\\r\\nUser-Agent: Ruby\\r\\nHost: pe-380-master.puppetdebug.vlan:8140\\r\\n\\r\\n\"\n-> \"HTTP/1.1 200 OK\\r\\n\"\n-> \"Date: Thu, 28 May 2015 20:49:12 GMT\\r\\n\"\n-> \"Content-Type: text/pson", "created": "2015-05-28T14:55:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]: Definitely looks similar. I'm not familiar enough with the Clojure bits to tell if it is an exact duplicate.", "created": "2015-05-28T14:58:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Yep, this look exactly like what got fixed in SERVER-442, which didn't make it into 1.0.8", "created": "2015-05-28T16:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I confirmed using [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]'s test case from above that the fix for SERVER-442 does indeed address this issue.  Running from source on the Puppet Server stable branch at the commit just prior to when SERVER-442 landed, b9121e418517061b0136cde85dfeb529b4b03d74, I was able to reproduce the problem of the 'foo', 'bar', and 'baz' files all being synced to the agent even though the intention was for 'foo' and 'baz' to be ignored.  I then bumped up to the next commit where the fix for SERVER-442 came into the stable branch, 8ab8591726877fc0a1dc9a3fe2b516ccc62192be, and repeated the test.  This time, only the 'bar' file was synced to the agent - and not the 'foo' and 'baz' files - as expected.\n\nThis fix is already planned to be delivered in the upcoming Puppet Server 1.1 and Puppet Server 2.1 releases.  I'm going to close this out as a duplicate of SERVER-442.  Maybe the linked ENTERPRISE ticket needs to stay open until the new Puppet Server code is promoted into PE releases?", "created": "2015-05-29T14:38:00.000000"}], "components": [], "created": "2015-05-28T14:43:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40535cd5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz05s7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_86130354_*|*_5_*:*_1_*:*_42061836724_*|*_6_*:*_1_*:*_0"}], "description": "The {{ignore}} [attribute of the File type|http://docs.puppetlabs.com/references/3.8.latest/type.html#file-attribute-ignore] doesn't work properly when Puppet Server is in use and more than one ignore pattern is specified. The functionality works fine when an agent talks to a WEBrick master.\n\nh2. Reproduction Case\n\nInstall PE 3.8.\n\n*  Create a test module with some test files:\n\n{code:bash}\nmkdir -p /etc/puppetlabs/puppet/modules/ignore_test/files\ntouch /etc/puppetlabs/puppet/modules/ignore_test/files/{foo,bar,baz}\n{code}\n\n*  Set up {{site.pp}} to recursively sync files from the module to a temp directory, while ignoring {{foo}} and {{baz}}:\n\n{code:bash}\ntee /etc/puppetlabs/puppet/environments/production/manifests/site.pp << \"EOF\"\nnode default {\n\n  file {'/tmp/sync_test':\n    ensure  => directory,\n    source  => 'puppet:///modules/ignore_test',\n    recurse => remote,\n    ignore  => ['foo', 'baz'],\n  }\n\n}\nEOF\n{code}\n\n*  Run {{puppet agent -t}}\n\nh3. Outcome\n\nAll three files are synced:\n\n{noformat}\n# /opt/puppet/bin/puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for foo.bar.baz\nInfo: Applying configuration version '1432845576'\nNotice: /Stage[main]/Main/Node[default]/File[/tmp/sync_test]/ensure: created\nNotice: /Stage[main]/Main/Node[default]/File[/tmp/sync_test/bar]/ensure: defined content as '{md5}d41d8cd98f00b204e9800998ecf8427e'\nNotice: /Stage[main]/Main/Node[default]/File[/tmp/sync_test/baz]/ensure: defined content as '{md5}d41d8cd98f00b204e9800998ecf8427e'\nNotice: /Stage[main]/Main/Node[default]/File[/tmp/sync_test/foo]/ensure: defined content as '{md5}d41d8cd98f00b204e9800998ecf8427e'\nNotice: Finished catalog run in 0.84 seconds\n{noformat}\n\nh3. Expected Outcome\n\nFiles matching the {{foo}} and {{baz}} patterns are ignored. This is the behavior when the agent runs against {{puppet master --no-daemonize}} instead of Puppet Server:\n\n{noformat}\n# rm -rf /tmp/sync_test\n# service pe-puppetserver stop\nStopping pe-puppetserver:                                  [  OK  ]\n# /opt/puppet/bin/puppet master --no-daemonize 2>&1 >/dev/null &\n[1] 4986\n\n# /opt/puppet/bin/puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for foo.bar.baz\nInfo: Applying configuration version '1432845639'\nNotice: /Stage[main]/Main/Node[default]/File[/tmp/sync_test]/ensure: created\nNotice: /Stage[main]/Main/Node[default]/File[/tmp/sync_test/bar]/ensure: defined content as '{md5}d41d8cd98f00b204e9800998ecf8427e'\nNotice: Finished catalog run in 0.77 seconds\n\n# kill 4986\n{noformat}", "environment": "CentOS 6.6", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17324", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "17324", "issueType": "Bug", "key": "SERVER-696", "labels": ["customer", "support"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Duplicate", "resolutionDate": "2015-05-29T14:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "File metadata endpoints don't handle multiple ignore values correctly", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I created this on Jeremy's request.  I'm sure I didn't dot all the i's and cross all the t's.  Can you help me make sure all the right fields are set and that the description is sufficient?", "created": "2015-05-28T13:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584], [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] - can one or more of you weigh in on the criticality of this for Shallow Gravy?", "created": "2015-06-03T11:26:00.000000"}, {"author": "557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] all Puppet Server Shallow Gravy features are complete and part of the 2.1 release.  If adding this feature at this point is a release blocker for Shallow Gravy then we can discuss a new release date to allow us to add this work.  CC [~accountid:623c0a337910a200718b9059] & [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] & [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584]", "created": "2015-06-03T11:34:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "This isn't needed for SG, we have a solution underway.  This is something that we should address longer term. ", "created": "2015-06-03T12:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK.  Then, [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], maybe we should put this in your CA epic?  If it can wait that long?", "created": "2015-06-04T04:35:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Absolutely seems like something that should be a design requirement for the next iteration of the clojure CA service. Adding it to that Epic.", "created": "2015-06-08T00:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm okay with it being added to that epic, although that epic is getting to be a bit overloaded.  I think the major thrusts of that epic are about:\n\n1) Getting the Clojure CA to a new persistence store which supports concurrency management constructs.\n\n2) Severing the dependency on core Ruby Puppet for its basic settings.\n\nThere are a number of other items - e.g, runtime CRL reloading and this issue - which don't specifically have to be tied to the above work.  Given that the epic has been sliding out for a while now, it may make sense to pursue this one sooner than the other work in the epic if warranted.\n\n", "created": "2015-06-08T11:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "But won't the implementation for it change when we move to the new persistence?  And won't it require the introduction of new HTTP API, opening up the discussion around whether or not we need to bump the API version?  Seems like it would be much cleaner to knock this one out with other changes that are going to affect API.\n\nI can see the CRL thing being separated a bit more easily since that's not really API.", "created": "2015-06-09T00:28:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "So this feels like a pretty expensive optimization whose payoff is unclear. Anecdotally even a large \"sign all\" request doesn't feel unresponsive (~200 certs on the page), and in general we're pushing customers towards policy-based autosigning so the certs don't even show up on the page. \n\nSeeing as how this has gone since PE2015.2 without support or open-source +1s, I'm inclined to close it as won't-fix to get it off the backlog", "created": "2016-05-10T17:40:00.000000"}], "components": [], "created": "2015-05-28T13:47:00.000000", "creator": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c37ef39"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyou3z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1113831177_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_28967348773"}], "description": "While implementing the UI for SG [it has become apparent|https://puppet.atlassian.net/browse/PE-7557?focusedCommentId=177843&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-177843] that the system would benefit from a form of the [Save Endpoint | http://docs.puppetlabs.com/puppet/latest/reference/http_api/http_certificate_status.html#save endpoint] that allows multiple requests to be handled simultaneously.\n\nWithin the request body it will be necessary to identify each of the hosts, and a potential action.  The response body should reflect the result of each item in a form similar to the hostname specific endpoint response.", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "15563", "fixedVersions": [], "id": "15563", "issueType": "New Feature", "key": "SERVER-695", "labels": [], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "resolution": "Won't Fix", "resolutionDate": "2016-05-10T17:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CA Service should implement endpoint to save multiple requests in a single request", "timeSpent": "PT0S", "updated": "2016-09-07T07:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Is this still running successfully and collecting useful data?", "created": "2015-08-11T14:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Was hoping that someone could look into that during this sprint, collect final results, and shut this down...", "created": "2015-08-12T04:34:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "Test died and team didn't notice in time to do anything about it", "created": "2015-09-30T12:12:00.000000"}], "components": [], "created": "2015-05-28T12:24:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@638a3c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoejb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_423513240_*|*_3_*:*_1_*:*_10375782317_*|*_6_*:*_1_*:*_0"}], "description": "This Zero point ticket is a place holder for the long running Gatling test against PE 3.8.0.3. This ticket may persist across many sprints, depending on the length of the test, to be defined later.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16456", "fixedVersions": [], "id": "16456", "issueType": "Task", "key": "SERVER-694", "labels": [], "originalEstimate": "PT0S", "parent": "16150", "parentSummary": "Manual Gatling Test Epic", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Incomplete", "resolutionDate": "2015-09-30T12:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Placeholder for long running Gatling test against PE 3.8", "timeSpent": "PT0S", "updated": "2015-10-22T15:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "perf-bl-14\n", "created": "2015-08-11T14:15:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing down the test, thus closing this ticket.", "created": "2015-08-26T11:10:00.000000"}], "components": [], "created": "2015-05-28T01:42:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@330f80f6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyogzz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_462003310_*|*_3_*:*_1_*:*_7348082175_*|*_5_*:*_1_*:*_34384693071_*|*_6_*:*_1_*:*_0"}], "description": "This Zero point ticket is a place holder for the long running Gatling test against  puppetserver 2.1.0.  This ticket may persist across many sprints, depending on the length of the test, to be defined later.\n\nWhen this ticket is finally closed, we (or at least QA) need to execute SERVER-691.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15795", "fixedVersions": [], "id": "15795", "issueType": "Task", "key": "SERVER-693", "labels": [], "originalEstimate": "PT0S", "parent": "16150", "parentSummary": "Manual Gatling Test Epic", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-08-26T11:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Placeholder for long running Gatling test against puppetserver 2.1.0", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623e7507866b810069e57527", "body": "I've been talking to [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] about this in relation to SERVER-681. We're thinking that, instead of these doc changes, it might be worth actually hardcoding the default values we have documented [here|http://docs.puppetlabs.com/puppetserver/2.0/configuration.html#puppetserverconf] and using the hardcoded defaults if they're not present in the puppetserver configuration. This will bring us in line with what we have documented.", "created": "2015-06-01T16:38:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}I've been talking to Jeremy Barlow about this in relation to SERVER-681. We're thinking that, instead of these doc changes, it might be worth actually hardcoding the default values we have documented here and using the hardcoded defaults if they're not present in the puppetserver configuration. This will bring us in line with what we have documented.{quote}\n\n+1  I was thinking the same thing working in and around [initialize-config|https://github.com/puppetlabs/puppet-server/blob/ce9c91cc3d6b28003ab5c40c4828454ae9fdf398/src/clj/puppetlabs/services/jruby/jruby_puppet_core.clj#L84-L86]", "created": "2015-06-01T19:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This ticket seems like a better place to discuss this than SERVER-681, so I'm going to add my comments here in hopes of not having the conversation spread across both places.\n\nChanging the defaults to the `/etc` paths seems pretty reasonable to me.  The split between root/non-root in the ruby code base seems like it has more to do with the agent use case than the server use case.\n\nAlso, if the downside to that is just the delta between the handful of settings that can get out-of-sync between puppetserver and `puppet master config print`, I think we should use that as motivation to hurry up and introduce a `puppetserver config print` tool rather than a reason not to make an implementation decision that we otherwise think is the correct one.", "created": "2015-06-02T09:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The one other downside I can think of with respect to making this change now is that it would break backward compatibility for users who have gotten their Puppet Server configured with the new non-root Puppet user defaults under Puppet Server 2.0 (and soon to be Puppet Server 2.1).  We could pose this change as a fix for a defect but it could have an adverse effect on some set of users during upgrades.  Would probably need to get [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]'s and/or [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584]'s take if we decide to go this route.", "created": "2015-06-02T09:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "That seems like it would be a very small set of users though, right?  We ship the default config file with the /etc path explicitly set, and users who have commented it out have generally had issues with the \\~/.puppet path so they've added it back in (I've seen this in at least a handful of tickets/IRC conversations).  Plus, if someone really needed it, they could just explicitly add in \"\\~/.puppet\" as the confdir in their config file", "created": "2015-06-03T02:17:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I think FR would be quite useful for this ticket and it shouldn't be too difficult to test, so I'm going to move this over into testing.", "created": "2015-06-03T16:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "FYI, I talked with [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] about this yesterday and she was good with the direction we're going with this given that:\n\n1) Hopefully exposure is limited given that users would have to have overridden the default values at package installation time for {{puppetserver.conf}} in order to have been affected by this anyway.\n\n2) Confusion that this has already caused for users who may have overridden the defaults for {{puppetserver.conf}} and/or {{puppet.conf}}, as described in SERVER-681.\n\n3) The Puppet Server 2.0/2.1 behavior is arguably a defect anyway in that it doesn't clearly match up with the officially documented behavior.\n\nThe one thing that [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] did ask is that we be very explicit in documenting the change in behavior as part of whatever release this is delivered for.  Presumably, this would be covered in the release notes for said release.  [~accountid:623c08e1562ab90069f8aed4] - any guidance you can give to make sure we don't overlook this would be appreciated.", "created": "2015-06-03T16:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I also updated the description and headline a bit for this ticket to cover the work that we actually ended up doing in code instead of just updating the documentation to reflect the current behavior.", "created": "2015-06-03T17:08:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Rad. Could you fill the release notes field, and make sure this gets a solid fix version? ", "created": "2015-06-04T12:29:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "(y) I'd saved a reminder to read through this ticket while I was out last week. So awesome to get to the end of the comments and find that [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] had already worked out the right answer.", "created": "2015-06-08T14:40:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] needs to:\n- make sure we have great clear documentation on this extremely confusing situation for our open source users.\n- that we have tools in PE that keep things synchronized.  (Discuss this part with Josh Partlow)", "created": "2015-06-08T19:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "reviewed https://docs.puppetlabs.com/puppetserver/2.1/puppet_conf_setting_diffs.html ...", "created": "2015-06-09T14:29:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Having reviewed the above document, this seems like a low risk change.  Discussed with Jeremy who agrees that this isn't a very risky change.\n", "created": "2015-06-09T14:49:00.000000"}], "components": [], "created": "2015-05-27T17:11:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1321eb25"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Most users will stay with the default."}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz05pb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth, and will work as a fix for SERVER-681"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_91071684_*|*_1_*:*_1_*:*_496346708_*|*_10007_*:*_1_*:*_9977424_*|*_3_*:*_1_*:*_5646976_*|*_5_*:*_1_*:*_695514206_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_512480299"}], "description": "In documentation for the \"puppetserver.conf\" section for Puppet Server 2.0/2.1, http://docs.puppetlabs.com/puppetserver/2.0/configuration.html#puppetserverconf, the default values listed for the \"master\\-\\*\\-dir\" directories do not clearly represent the actual Puppet Server behavior.  The \"Puppet default\" values mentioned in the documentation refer to the value that is generated into the puppet.conf file by default at package installation time but do not match up with the \"hard-coded\" values that Puppet uses when the setting is not present in any configuration file.\n\nCurrently, Puppet Server (via its interaction with core Ruby Puppet) effectively uses the following priority order to resolve the value for each \"master\\-\\*\\-dir\" setting:\n\n1) puppetserver.conf setting\n2) puppet.conf setting\n3) puppet default\n\nThe following table shows how the values are currently derived:\n\n|| puppetserver.conf || puppet.conf || hard-coded value inserted into both conf files at install time || puppet default\n| master-conf-dir | confdir | /etc/puppetlabs/puppet | /opt/puppetlabs/server/data/puppetserver/.puppetlabs/etc/puppet\n| master-code-dir | codedir | /etc/puppetlabs/code | /opt/puppetlabs/server/data/puppetserver/.puppetlabs/etc/code\n| master-log-dir | logdir | /var/log/puppetlabs/puppetserver | /opt/puppetlabs/server/data/puppetserver/.puppetlabs/var/log\n| master-run-dir | rundir | /var/run/puppetlabs/puppetserver | /opt/puppetlabs/server/data/puppetserver/.puppetlabs/var/run\n| master-var-dir | vardir | /opt/puppetlabs/server/data/puppetserver | /opt/puppetlabs/server/data/puppetserver/.puppetlabs/opt/puppet/cache\n\nThe rationale for the puppet default values is convoluted.  We have some code in the RunMode class, https://github.com/puppetlabs/puppet/blob/4.1.0/lib/puppet/util/run_mode.rb#L51-L80, which resolves the value for some of the top-level settings to an absolute path if the Puppet is being run as \"root\" vs. a relative path under the effective user's home directory ($HOME/.puppetlabs) if Puppet is being run as \"non-root\".  {{/opt/puppetlabs/server/data/puppetserver}} is the home directory of the \"puppet\" user, the user as which Puppet Server runs.\n\nIn order to match up Puppet Server's implementation with the documented defaults, it would be better to have Puppet Server just send the documented default for the setting down into core Ruby Puppet code if the setting is not present in the puppetserver.conf file.  Core Ruby Puppet isn't aware of appropriate \"server\" defaults anyway since its defaults are \"agent-centric\".  Puppet Server-specific code, however, would have the appropriate context for imposing these server-level defaults.\n\nWhere Puppet Server would no longer ever fall back to puppet.conf to derive one of the \"master\\-\\*\\-dir\" level defaults, users would have to be aware that any customizations they may make to the \"master\\-\\*\\-dir\" values in the puppetserver.conf file should also be made to the corresponding setting in the \"master\" section of the puppet.conf file.  This would be needed in order for the Puppet Server to effectively be using the same path values as would \"puppet master\" CLI tools.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15794", "fixedVersions": ["SERVER 2.1.1"], "id": "15794", "issueType": "Task", "key": "SERVER-692", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-09T15:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use hard-coded defaults for master-*-dir settings not specified in puppetserver.conf", "timeSpent": "PT0S", "updated": "2015-06-17T16:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "We're ready for this now that we can support environments.  It will also be good to have a real recording for development purposes rather than the useless example scenario I've been using.\n\nDoing this recording should also expose some potential work that may be required to hit our first milestone, specifically the SSL stuff regarding agent certificates and Gatling keystores that I alluded to in SERVER-810.\n\nSince this will be the first real use of our new environment (and likely Hiera) support, it may also reveal deficiencies in those areas that would be good to resolve now before we move away from it and onto the next phase.\n\nAlso, keep in mind we have the example [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] captured from our training class here: [test-catalogs/17-environment-classroom|https://github.com/puppetlabs/test-catalogs/tree/master/17-environment-classroom].  It might be useful to reference, but I think we should go through the motions of setting up our own scenario to capture, for reasons mentioned above.", "created": "2015-07-21T18:48:00.000000"}], "components": ["Performance"], "created": "2015-05-27T05:47:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b5515ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyojev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19230349_*|*_10007_*:*_1_*:*_176218529_*|*_3_*:*_1_*:*_521810621_*|*_5_*:*_1_*:*_36000383870_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5549062378"}], "description": "We don't currently have any gatling scenarios that involve multiple environments.  We've seen significant performance issues in the wild relating to the use of environments, and never caught them before we shipped due to lack of testing around environments.\n\nWe should probably even make this our 'base case', and either extend catalog zero or start using catalog zero as a subset of the base case, rather than as the base case itself.\n\nIdeally we'd have 10 or more environments with some code in them (could just use some stuff from PE-9704), and we'd have at least two different agent simulations running (with different environments).", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15559", "fixedVersions": ["None"], "id": "15559", "issueType": "Task", "key": "SERVER-689", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-08-07T18:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gatling: Record a multi-environment test scenario", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Performance"], "created": "2015-05-27T05:02:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e61c026"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzfnr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21911016_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_37604972045_*|*_10005_*:*_1_*:*_10976197334"}], "description": "This ticket is probably just hinting at some R&D work that needs to be done, and probably will just result in the creation of some additional tickets that prescribe some more specific actions to take.\n\nConsiderations:\n\n* It'd be nice to have a perf regression test job, that simply runs some kind of baseline scenario (catalog zero or whatever) at some interval (nightly?  weekly?).  It could hopefully use the https://github.com/puppetlabs/puppet-gatling-jenkins-plugin code that [~accountid:70121:ef2e2611-7893-499f-94ad-b7b2245beace] wrote a long time ago, though it will probably need to be updated for Gatling 2.0.  This would give us a single jenkins job where we could go to see perf trends over time.  (Maybe it's two jobs; one for OSS and one for PE?)\n* The one tricky part of the above bullet is that we have to be really cognizant of when we need to make a new Gatling recording, because if the HTTP requests are changed in any way between versions of Puppet/Puppet Server/PE, then old recordings aren't really accurate.  Eventually we will want to automate the gatling recording but that is a longer-term goal and will probably involve an upstream PR to the gatling project (see SERVER-576).\n* We'll have some separate Jenkins jobs that are about long-running tests as opposed to shorter regression tests.  Usually these will be targeted at a specific feature, and will be kind of one-offs, so it's less clear whether it will make sense to try to do any kind of historical correlation of runs of these jobs over time.  We need to think about that more.\n* For the long-running tests we will need to automate the deployment of the script that we've been using to track resident memory usage, and ideally also automate the process of graphing that memory usage data in some way.  We've been putting it google spreadsheets, so maybe we just look into calling into their API in some automated way.  Another idea would be to look into writing a jenkins plugin to graph the memory usage data, but ideally we want to be able to monitor this data *during* the run, and w/Jenkins it might only be possible to draw the graph after the run has completed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15188", "fixedVersions": [], "id": "15188", "issueType": "Task", "key": "SERVER-688", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-12-09T16:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "determine objectives for reporting / preserving historical data.", "timeSpent": "PT0S", "updated": "2016-12-09T16:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "The PE solution for this will probably use the [scooter|https://github.com/puppetlabs/scooter] gem (that QA wrote for interacting with the NC).\n\n* The gem isn't available in rubygems, only our internal repository.  We might be able to get it from github in the Gemfile instead and avoid the internal repository dependency.\n\n* The gem requires the {{dashboard}} on the master, so we'll need to include that in the {{hosts.yaml}} file (or the genconfig output)\n\n* Create a \"dispatcher\" for interacting with the NC:\n{code:ruby}\nrequire 'scooter'\ninclude Scooter::HttpDispatchers\ndispatcher = ConsoleDispatcher.new(dashboard)\n{code}\n\n* After installing the directory environments and modules on the master, synchronize the NC with the master so it is aware of the environments/modules:\n{code:ruby}\ndispatcher.update_classes()\n{code}\n\n* Define the groups of classes, which I believe will be based on the environments for our uses:\n{code:ruby}\n# For each environment...\ndispatcher.create_new_node_group_model(\n  :name => \"arbitrary name of this node group\",\n  :environment => env_from_node_config,\n  :classes => {'class1' => {'class1_param1' => 'value'},\n               'class2' => {}},\n  :rule => [\"=\", \"certname\", certname_from_node_config]\n)\n{code}", "created": "2015-06-23T17:36:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "I realized that our old implementation didn't allow for class parameters, which seems like a big limitation.\nWhat if we need to set a parameter on the {{baz}} class in order for it to work?\n\nWe currently have:\n{code:javascript}\n\"classes\": [\"foo\", \"bar\", \"baz\", \"qux\"]\n{code}\nBut we need something like:\n{code:javascript}\n\"classes\": [\"foo\",\n            \"bar\",\n            {\"baz\": {\"baz_param\": \"value\"}},\n            \"qux\"]\n{code}\n\nThe problem then is: How do we support complex values? Like, what if the value is a map, with nested maps as values, and so on?\n\nWe might be able to get away with not supporting map values for a while though.  Perhaps we just support primitive values and arrays for now?\n\nAnother idea: Don't declare any of this in JSON anymore, since it's just going to be translated to Puppet code anyway. How about just write the Puppet code directly, and reference the file in the JSON? Or....embed it as a string in the JSON?\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] got any thoughts on this?", "created": "2015-06-24T16:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] my hope was that, for any classes that need parameters that we care about using in our tests, we'd just write a wrapper module/class in test-catalogs that would consume the upstream class with a set of hard-coded (or hiera-fed) parameter values.  After all, we want the tests to be repeatable, so having all of the catalog inputs live in the test-catalogs repo rather than in the gatling repo seems like it's probably a good thing.\n\nIf we can get away with that then we only need to support class names and simple 'include' statements (and the NC equivalent for PE) for this ticket.\n\nIt seems like that would at the very least be a reasonable first step and we could expand it out to add support for parameters later if we absolutely had to?", "created": "2015-06-25T08:39:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. my hope was that, for any classes that need parameters that we care about using in our tests, we'd just write a wrapper module/class in test-catalogs that would consume the upstream class with a set of hard-coded (or hiera-fed) parameter values\n\nAh, yeah that will work, though not sure that hardcoding them in test-catalogs will be the right way to go for most things.\nSounds like this will just be done with hiera, especially considering that Puppet will now implicitly lookup class parameter values in hiera.\nThat seems pretty tractable, and might not even require any work towards this in this ticket.", "created": "2015-06-25T12:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Out of curiosity, can you describe a scenario where having a wrapper class in test-catalogs with hard-coded parameters wouldn't suffice for our perf testing needs?  There may be some, but I just haven't thought of one yet.", "created": "2015-06-25T13:58:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. Out of curiosity, can you describe a scenario where having a wrapper class in test-catalogs with hard-coded parameters wouldn't suffice for our perf testing needs? There may be some, but I just haven't thought of one yet.\n\nI don't think I can, just feels like things will be more flexible with the data in a hiera file versus a static Puppet class.\nWe might end up with a proliferation of one-off Puppet classes if we're going to hard-code values that way, especially if we want to change just one class parameter but leave the others alone.  Combinatorial explosion!\nHiera should greatly help with that in terms of eliminating duplication, and probably with less code/configuration in the end.\nAnd the implementation might end up being easier given the implicit hiera lookups, not sure though.\n\nAlso, to clarify, even with the Hiera solution it'll still be \"hardcoded in the test-catalogs repo\", just as a hiera data file rather than a Puppet class.\n", "created": "2015-06-25T16:38:00.000000"}], "components": [], "created": "2015-05-27T04:49:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a40cb6e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyonen:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Available bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22710322_*|*_10007_*:*_1_*:*_935601992_*|*_3_*:*_1_*:*_1230011261_*|*_5_*:*_1_*:*_38177947553_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1903893444"}], "description": "In order to exercise Puppet Server in a realistic fashion during our performance tests, its important that we do all of the following:\n\n* For each gatling simulation that will be run as part of a given test, we need to know the simulated agent's certname and the list of classes that the agent should have applied to it\n* For PE runs, we need to make sure we've told the node classifier about all of our simulated agent certnames and we've assigned the appropriate classes,\n* For FOSS runs, we need to make sure we've assigned the appropriate classes for all of our simulated agent certnames via 'site.pp' or some other mechanism.\n* Ideally, after we make those classification changes, we should have a step that queries the server to validate that the changes took affect.  This should be easy-ish for PE (via the NC UI), but might be a little more difficult for OSS.\n\nWithout these steps we aren't guaranteed that the catalog compilations will actually be doing everything that they would in the real world.  It's entirely possible to run a gatling simulation with zero failed requests, w/o having the classification set up properly... in a situation like this we'd just be getting misleading data about the performance of the catalog endpoint, and missing some coverage of code that might provoke a memory leak.\n\nYou can see some prior art on this in the old jenkins setup code:\n\nhttps://github.com/puppetlabs/gatling-puppet-load-test/blob/02745476adcbf4fca4bff786ae78292ebdccc6de/jenkins-integration/beaker/classify/pe/01_config_master.rb#L33-L86", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "14965", "fixedVersions": ["None"], "id": "14965", "issueType": "Task", "key": "SERVER-687", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-07-13T13:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "automate classification of simulated agent nodes", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. The old code in the jenkins repo presumes we'll use 'librarian-puppet' to install modules", "created": "2015-05-27T17:10:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Considering that we want to address environments now, I can't tell how well {{librarian-puppet}} will fit the bill.  Initial searches turn up no mention of Puppet environments + librarian-puppet - references just vaguely refer to \"your modules/ directory\".  Not sure how hard or easy it would be to make it work.\n\nAnyway, we might consider look into using [r10k|https://github.com/puppetlabs/r10k] instead of librarian-puppet if it becomes an issue.", "created": "2015-05-27T17:53:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Moved the Hiera work out into SERVER-714.  The other work covered in this ticket has been merged and resolved.", "created": "2015-06-18T11:58:00.000000"}], "components": ["Performance"], "created": "2015-05-27T04:43:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b39e630"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyor0f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_23060528_*|*_3_*:*_1_*:*_1716300987_*|*_5_*:*_1_*:*_40343655825_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_187531029"}], "description": "Once the gatling jenkins job has successfully installed Puppet Server on the SUT, we need to get any required code deployed onto the machine as well.\n\nThere is some work around this in the old jenkins setup stuff:\n\nhttps://github.com/puppetlabs/gatling-puppet-load-test/blob/02745476adcbf4fca4bff786ae78292ebdccc6de/jenkins-integration/beaker/classify/pe/01_config_master.rb#L109-L134\n\nAnd some of that may be able to be re-used.  However, we have some new considerations that we need to deal with that we didn't have at the time when I originally wrote that stuff.\n\nNamely:\n\n* directory environments.  We need to be thinking about which environments we install modules into, and how to achieve that.\n* hiera.  Not having any hiera interactions in our tests leaves out a big swath of coverage since almost all customers at a non-trivial scale seem to be using it in some way.  Need to think about how we can drop in some hiera config / data onto the SUT.\n\nIt's possible we could/should break this out into three tickets, though.  Just basic module installation might be sufficient for the first iteration.\n\nAnother thing to consider: it'd be nice to have a canonical place to store all of the files we need for this stuff.  This was the original thinking behind the `test-catalogs` repo, but it might need a bit of directory restructuring in order to make it work the way we'll need it to.\n\nIf we are using that repo as the source for all of the sample code, then we need either:\n\n* a way to correlate a given gatling simulation with the list of all of the code it needs from the test-catalogs repo (presumably via the JSON config files in gatling-puppet-load-test), or\n* to assume that we will always just blindly copy in all of the content from test-catalogs onto the master.  My concern with that approach is that changes to the test-catalogs repo could inadvertently affect our perf results (e.g. when the NC hits the 'resource_types' endpoint in PE, the more code there is in the modulepath, the more CPU we use to build up the list of types.)\n\nThe old code in the jenkins repo presumes we'll use 'librarian-puppet' to install modules; this will probably need to be replaced with something different if we want to go straight out of {{test-catalogs}}.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17605", "fixedVersions": ["None"], "id": "17605", "issueType": "Task", "key": "SERVER-686", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-06-18T11:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automation installation of required modules / code", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did some investigation on these failures.  All of them appear to be due to some issues in the test implementation.  All of the failing tests involve steps run with agent CLI tools - where the presence of the Puppet Server master is irrelevant.  For example, these tests perform \"puppet apply\", \"puppet config\", \"puppet module\" commands that result in failures.\n\nThe tests were not failing in the corresponding platform CI pipeline because the steps that produced the failures are only performed when the agent under test resides on the master and the platform CI jobs have not configured the master with an agent role as of the work done during the AIO timeframe.\n\nI filed a PUP ticket, PUP-4659, to cover fixing up the acceptance tests.  [~accountid:63d40628f6e1b543161789a7] indicated that the Client platform team could pick up that ticket and work through the failures.\n\nFor now, moving this ticket to \"blocked\" on our board to track the resolution of PUP-4659. ", "created": "2015-05-27T13:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We're temporarily working around the {{environment_scenario}} test failures by pointing Puppet Server's Ruby Puppet submodule at a branch in a forked Puppet repo that was based on the 4.1.0 Puppet tag.  The branch, \"4.1.0-test-fixes\" in https://github.com/camlow325/puppet, contains a couple of additional changes.  2 associated PRs were done for this:\n\n- https://github.com/puppetlabs/puppet-server/pull/578 - Pointed Puppet submodule to the head commit on the \"4.1.0-test-fixes\" branch which included a cherry-pick of the fix for PUP-4652 ({{4420_pluginfacts_should_be_resolvable_on_agent}} test) and skipped the three failing {{environment_scenario}} tests.\n\n- https://github.com/puppetlabs/puppet-server/pull/583 - Added a cherry-pick of the fix for PUP-4666 ({{build_ignore_module_file}} test) to the \"4.1.0-test-fixes\" branch and updated Puppet submodule to point to the cherry-picked commit.\n\nThis ticket ideally should stay open until fixes for all of the tests land and Puppet Server's corresponding submodule can be pointed back to a commit in the core Puppet repo which contains all of those fixes. ", "created": "2015-05-29T00:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Our Puppet submodule is back on puppetlabs/puppet on the master branch as of [4af0a5|https://github.com/camlow325/puppet-server/commit/4af0a53b5ef488bf9074e8e4bde2833e42e3f9e9].\n\nOur last few full Jenkins acceptance test jobs have been successful, including the {{environment_scenario}} tests:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-master/27/\n\nMarking this as resolved.", "created": "2015-06-19T15:23:00.000000"}], "components": [], "created": "2015-05-27T00:50:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d19b4be"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyor1b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found acceptance test failures when bumped Puppet agent dependencies"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6093_*|*_3_*:*_2_*:*_812586917_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1226969867"}], "description": "Since we bumped core Ruby Puppet dependencies to 4.1.0 / Puppet Agent 1.1.0 as part of https://github.com/puppetlabs/puppet-server/pull/569, the following Puppet acceptance tests have been failing:\n\n- environment.environment_scenario-bad.rb\n- environment.environment_scenario-default.rb\n- environment.environment_scenario-master_environmentpath.rb\n\nFor example, https://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-master/62/.  This ticket would cover investigating these failures for root cause.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16653", "fixedVersions": [], "id": "16653", "issueType": "Bug", "key": "SERVER-685", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-19T15:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate environment_scenario test failures", "timeSpent": "PT0S", "updated": "2015-06-19T15:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Turns out PUP-4420 will only fix 4x->4x but not 3x->4x, so we have to make some adjustments on the server side ", "created": "2015-05-26T18:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This was integrated to the Puppet Server master branch and is passing through all Jenkins jobs in CI.  Most notably, the \"Puppet 3 Compatibility Acceptance Test Suite\" job is now passing:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_puppet3-compat_master/28/\n\nPrior to that the {{external_fact_output_test}} in that suite had been failing for Linux platforms.\n\nMoving this to \"testing\" so [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] has a chance to review.  Might make sense to just close out since we have automated acceptance test coverage in place already which caught - and proved that we fixed - this problem.", "created": "2015-05-29T12:53:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing with out additional FR/validation based on risk assessment, and on Jeremy's comment that we have a specific test that covers this, that caught the bug, that now passes.", "created": "2015-06-01T12:00:00.000000"}], "components": ["Puppet Server"], "created": "2015-05-26T18:37:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@395f95d4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyosjb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Fallout from 3x->4x compatibility work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_65718987_*|*_1_*:*_1_*:*_59248384_*|*_10007_*:*_1_*:*_85808952_*|*_3_*:*_1_*:*_23902790_*|*_5_*:*_1_*:*_188524482_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_256062684_*|*_10006_*:*_1_*:*_3857059"}], "description": "The file_metadata endpoint has a query parameter called {{source_permissions}} with possible values {{ignore}}, {{use}}, or {{use_when_creating}}.\n\nThe 3.x agent and master defaulted to {{use}}, but this changed in 4.x to {{ignore}}.  In addition, 3.x agents \"rely\" on this default value matching on both sides and therefore don't bother specifying a value when making requests.\n\nThis is problematic for 3.x agents talking to a 4.x master, as the default value has changed and the agent doesn't explicitly specify it. For comparison, the 4.x agents explicitly specify the value when making the request.\n\nThis behavior will break external executable facts (they won't be executable on the agent) for 3.x agents talking to 4.x master. \n\nWe should modify the {{legacy_routes_service}} to reconcile this difference and append {{source_permissions=use}} to file_metadata requests made to the old URLs (unless of course it's already specified, which agent 3.x agents won't).\n\nWe already have failing acceptance tests in CI for this: https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_no-conditional_puppet3-compat_master/18/", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17323", "fixedVersions": ["SERVER 2.1.0"], "id": "17323", "issueType": "Bug", "key": "SERVER-684", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-06-01T12:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Append \"source_permissions=use\" to 3.x file_metadata requests", "timeSpent": "PT0S", "updated": "2017-07-13T13:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Nothing in PE should ever reference ...\n{{puppetlabs.services.master.master-service/master-service}}\n\n.. instead, it should always be:\n{{puppetlabs.enterprise.services.master.master-service/pe-master-service}}", "created": "2015-05-26T17:27:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Also, if this is a PE-specific issue, we should move it to the PE project.", "created": "2015-05-26T17:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Nothing in PE should ever reference ...\npuppetlabs.services.master.master-service/master-service{quote}\n\nAgreed.  I only suggested this as a short-term workaround to unblock [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330]'s team on its PE integration work.\n\n{quote}Also, if this is a PE-specific issue, we should move it to the PE project.{quote}\n\nI think the root of the issue is that the legacy-routes-service, which is part of the FOSS Puppet Server code, is looking for \"master-service\" as part of the work it does to figure out where to redirect incoming legacy routes to.  Rework of this would likely involve changes in FOSS code, so I suggested that [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] file the ticket here.", "created": "2015-05-26T17:34:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Hmm, okay [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], that's fine.  I thought this was just a case of bad configuration files in PE - sounds like there is more to it than that.  This is what I get for sticking my nose into things. ", "created": "2015-05-26T17:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This was merged to the master branch and the full master pipeline has been passing in CI, including:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_puppet3-compat_master/28/\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-master/73/\n\nMoving to \"testing\" so that [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] has a chance to take a look at this.  Probably nothing worth functionally testing further here since it's basically just a refactor of existing functionality.", "created": "2015-05-29T12:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] - I should mention also that you won't see the effect of this change until the related work in PE-9920 is integrated and promoted into a PE build that you can test it with, so you may want to track the PE ticket from this point on.", "created": "2015-05-29T13:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I will examine this work in PE-9920.  Resolving this one.", "created": "2015-06-01T13:05:00.000000"}], "components": [], "created": "2015-05-26T17:25:00.000000", "creator": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@298355e4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyosj3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Discovered during PE integration"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_156986953_*|*_1_*:*_1_*:*_24464925_*|*_10007_*:*_1_*:*_61416601_*|*_3_*:*_1_*:*_406797_*|*_5_*:*_1_*:*_184645470_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_259548791"}], "description": "The PE route in /etc/puppetlabs/puppetserver/conf.d/web-routes.conf web-router-service section is:\n\n\"puppetlabs.enterprise.services.master.master-service/pe-master-service\": \"/puppet\"\n\nBut the legacy router is searching this config for:\n\n\"puppetlabs.services.master.master-service/master-service\": \"/puppet\"\n\nBecause this route is not present in PE, re-routing of legacy urls is failing like so:\n\n{noformat}\ncurl --cacert /etc/puppetlabs/puppet/ssl/ca/ca_crt.pem --cert /etc/puppetlabs/puppet/ssl/certs/pe-399nightly-master.puppetdebug.vlan.pem --key /etc/puppetlabs/pupp\net/ssl/private_keys/pe-399nightly-master.puppetdebug.vlan.pem https://pe-399nightly-master.puppetdebug.vlan:8140/production/resource_type/bar\n{\"message\":\"Not Found: No route for GET /v3/resource_type/bar\",\"issue_kind\":\"HANDLER_NOT_FOUND\"}\n{noformat}\n\nThe work around [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] suggested is to add the master-service route for present so that the legacy router has something to reference.", "environment": "puppet-enterprise-3.99.0-rc4-94-g76e1524-el-7-x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17603", "fixedVersions": ["SERVER 2.1.0"], "id": "17603", "issueType": "Bug", "key": "SERVER-683", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "resolution": "Fixed", "resolutionDate": "2015-06-01T13:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The legacy router relies on the master-service route to determine its pathing.", "timeSpent": "PT0S", "updated": "2015-06-03T16:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] heads up in case you have an opinion about this.", "created": "2015-05-26T03:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The {{scan=\"true\"}} appears to have originally been added as part of SERVER-275 and was delivered as part of the Puppet Server 1.0.2 release.\n\nI believe we lost the {{scan=\"true\"}} for the Puppet Server 1.0.8 and Puppet Server 2.0.0 releases because the changes made to add that attribute were done when the logback.xml files all still lived in the \"ezbake\" repo.  The files weren't migrated over to the Puppet Server repo with that attribute intact as part of the switch over to the use of the \"lein-ezbake\" plugin.", "created": "2015-05-27T17:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This has been in the master and stable branches and full CI jobs for each are still passing:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-master/73/\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-stable/69/\n\nMoving to \"testing\" so [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] has a chance to take a look although probably not worth spending much more time on this.  I wouldn't suggest doing anything other than manually inspecting the logback files after a package install to see that the \"scan=true\" attribute is in the files - request-logging.xml and logback.xml.", "created": "2015-05-29T13:06:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Found \"<configuration scan=\"true\">\" in /etc/puppetlabs/puppetserver/logback.xml in puppetserver_2.1.0.master-0.1SNAPSHOT.2015.05.29T1016puppetlabs1_all.deb on Ubuntu 14.04.", "created": "2015-05-29T15:23:00.000000"}], "components": ["Puppet Server"], "created": "2015-05-26T03:19:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@15889412"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "We fixed this one, and it regressed."}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Logback setting changes require a puppet server restart without this option to take effect."}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzi3b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2906951_*|*_1_*:*_1_*:*_116019901_*|*_10007_*:*_1_*:*_150222531_*|*_3_*:*_1_*:*_3689399_*|*_5_*:*_1_*:*_435460910_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_8218145_*|*_10006_*:*_1_*:*_21588869"}], "description": "I did a fresh install of Puppet Server 2.0.0 yesterday, and noticed that the {{logback.xml}} file that we ship in our packaging does not include the {{scan=\"true\"}} attribute.  This means that if a user changes the logging configuration, a restart is required in order for the server to pick up the changes.\n\nI thought that we'd fixed this in SERVER-275 but it seems to have come back somehow.  We should check this for both the 1.1 and 2.1 releases and decide whether it's worth investing the time to try to fix prior to shipping.\n\nAlso should keep an eye out for this in the next PE release.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17322", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "17322", "issueType": "Bug", "key": "SERVER-682", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-05-29T15:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Default logback.xml file doesn't include `scan` option", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22] do you have any of the master directories explicitly configured in your puppetserver.conf file?\n\nMoving puppet.conf contents to this comment so they're easier to see:\n\n\n{code:title=puppet.conf|borderStyle=solid}\n# File managed by puppet. Meta.\n\n[main]\n  logdir      = /var/log/puppet\n  rundir      = /var/run/puppet\n  ssldir      = /var/puppet/ssl\n\n  node_terminus    = exec\n  external_nodes   = $confdir/sparkseat_enc\n\n  environmentpath  = $confdir/environments\n  default_manifest = $confdir/manifests\n  basemodulepath   = $confdir/modules-contrib:$confdir/modules\n\n[agent]\n  classfile   = $vardir/classes.txt\n  localconfig = $vardir/localconfig\n\n  daemonize   = false\n  onetime     = true\n{code}\n", "created": "2015-05-25T05:21:00.000000"}, {"author": "557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22", "body": "We didn't have any of the master directories configured in puppetserver.conf. We did try setting the vardir in puppetserver.conf, but this didn't seem to help.\n\nThis was on a production system as part of a fairly large migration (Centos 6.5 -> 7 and Puppet 3 -> 4), so for the meantime we have switched back to using `puppet master`.", "created": "2015-05-25T14:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Would it be possible to attach your {{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}} file just so we can make sure we're taking the correct steps to try to repro on our end?\n\nThanks!\n\nA few other things you could try:\n\n* Set {{master-var-dir}} in {{puppetserver.conf}}, and then change your {{ssldir}} in {{puppet.conf}} to be relative to that (e.g. {{$vardir/ssl}}).\n* Set {{vardir}} explicitly in {{puppet.conf}} and then change your {{ssldir}} to be relative to that (e.g. {{$vardir/ssl}}).\n\nMy guess is that there is probably a bug on our end where we don't honor {{ssldir}} properly if a vardir is not explicitly set.  We'll get someone to work on repro'ing ASAP.", "created": "2015-05-26T01:38:00.000000"}, {"author": "557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22", "body": "I'm afraid I have blown the config away - as I said it was on a production system and we had to make the decision to rollback fairly quickly.\n\nI'm fairly sure that the puppetserver.conf was unchanged though (installed using the `puppetserver` package from the `http://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm` repo.", "created": "2015-05-27T12:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7507866b810069e57527] FYI I brought this into the sprint, we should try to repro when we get a chance.", "created": "2015-05-27T15:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "fyi, for some background on where the default values for directories are derived in Puppet Server 2.x, see: SERVER-692.  This explains the {{/opt/puppetlabs/server/data/puppetserver/.puppetlabs/...}} base directory which gets used when a setting value isn't present in either the \"puppetserver.conf\" or \"puppet.conf\" file.", "created": "2015-05-27T17:13:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I've managed to repro this bug and I think I see the issue here.\n\nWhen you install puppetserver from packages, it automatically instantiates {{/etc/puppetlabs/puppet}} as your {{confdir}}. This is the default {{confdir}} for the root user, and will be used as the {{confdir}} when the root user runs Puppet. And when running puppetserver as root (from source), it will always pick up values in your puppet.conf file.\n\nThe issue here is that when the puppetserver service is started, it is NOT running as {{root}}, but rather as the {{puppet}} user. The default {{confdir}} for a non-root user is NOT {{/etc/puppetlabs/puppet}}, but rather {{~/.puppetlabs/etc/puppet}}. Thus, if the {{master-conf-dir}} setting isn't set in the {{puppetserver.conf}} file like in [~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22]'s case, puppetserver will use {{/opt/puppetlabs/server/data/puppetserver/.puppetlabs/etc/puppet}} as the {{confdir}} rather than the actual {{confdir}} containing puppet.conf.  This directory, unless configured to do so, does not contain a puppet.conf file, and so, since puppetserver is not reading the actual puppet.conf file, it is not honoring any of the settings set in that file.", "created": "2015-06-01T15:28:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22] I think setting the {{master-conf-dir}} setting in your {{/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}} file to point to whatever you have set up as your confdir should should fix your issue.", "created": "2015-06-01T15:43:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:623c12b6ee1b5a0070293582] So I'm thinking the way we need to address this is through a docs update. I don't think it's a good idea to change puppet's default {{confdir}} behavior, so I think (possibly as part of SERVER-692 as I think this ticket would dovetail well with that one) we should make it very very clear that if you do not specify the {{master-conf-dir}} setting in your puppetserver configuration that it will use {{/opt/puppetlabs/server/data/puppetserver/.puppetlabs/etc/puppet}} as the {{confdir}} (it looks like the default puppetserver.conf file laid down when installing from packages already has {{master-conf-dir}} set to {{/etc/puppetlabs/puppet}}). ", "created": "2015-06-01T15:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623e7507866b810069e57527] Thanks, that sounds like a reasonable explanation for why this problem was being seen.  I've been wondering if maybe what we should have been doing on the server here is hard-code in the paths which are to be passed down to core Ruby Puppet in the event that the values were not present in the puppet.conf file.  So for {{confdir}}, Puppet Server could pass {{/etc/puppetlabs/puppet}} as the value for {{master-conf-dir}} down into core Ruby Puppet in the event that the value were not present in the {{puppetserver.conf}} file.  If we were doing it that way, we could actually follow what is specified for default values in the documentation at http://docs.puppetlabs.com/puppetserver/2.0/configuration.html#puppetserverconf.  The one disadvantage would be that if \"non-standard\" paths were desired that the user would need to ensure that the \"non-standard\" paths were specified in both the \"puppetserver.conf\" and \"puppet.conf\" files in order to ensure that the paths were honored properly for Puppet Server running as a service and Puppet \"master\" commands being run from the CLI.", "created": "2015-06-01T15:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7507866b810069e57527] seems like maybe we should close this as a dupe of SERVER-692 then?  [~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22] you can re-open it if that doesn't turn out to be the case?", "created": "2015-06-02T09:29:00.000000"}, {"author": "557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22", "body": "Apologies for the silence.\n\n[~accountid:623e7507866b810069e57527] - that's what I had worked out. Personally, my opinion is that `puppetserver` should follow the same behaviour as `puppet`, which is to also use `/etc/puppetlabs/puppet` when running as the `puppet` user (if I understand correctly). It seems very odd that `puppetserver` would have a different behaviour \"out of the box\".\n\nI will try and reproduce this, and check that setting `master-conf-dir` does indeed fix the issue (I've been fairly busy the last few days).\n\nThat said, [~accountid:623e7507866b810069e57527] \"it looks like the default puppetserver.conf file laid down when installing from packages already has master-conf-dir set to /etc/puppetlabs/puppet\". Our puppetserver.conf was unchanged from the package, so if this is the case then there is another problem here.", "created": "2015-06-02T11:29:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22] Hmm, that's strange. I've tried installing Puppet Server 2.0.0 from packages on CentOS 7 multiple times and the settings are present and uncommented every time. I've also done some digging, the only place where those settings aren't present is [here|https://github.com/puppetlabs/puppet-server/blob/master/dev/puppet-server.conf.sample], which is a sample configuration that we never use and isn't touched by our packaging. Is it possible that your puppetserver.conf was modified somehow?\n\nWhen you try reproducing, could you check puppetserver.conf and let us know what's in it?", "created": "2015-06-04T11:53:00.000000"}, {"author": "557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22", "body": "Right. Apologies for the delay.\n\nI've managed to reproduce with the following setup:\n\nA fresh Centos 7 VM (I used the following Vagrantfile for repro, although didn't use Vagrant when I first came across the bug):\n\n{code:title=Vagrantfile}\n# -*- mode: ruby -*-\n# vi: set ft=ruby :\n\nVAGRANTFILE_API_VERSION = '2'\n\nVagrant.configure(VAGRANTFILE_API_VERSION) do |config|\n  # Every Vagrant virtual environment requires a box to build off of.\n  config.vm.box = 'puppetlabs/centos-7.0-64-nocm'\n\n  config.vm.define :localmaster do |lt|\n    lt.vm.network :forwarded_port, guest: 443, host: 8080\n    lt.vm.network :forwarded_port, guest: 80,  host: 8081\n    lt.vm.network :private_network, ip: '10.10.0.101'\n\n    lt.vm.hostname = 'localmaster.sparkseat.com'\n  end\n\n  config.vm.provider :virtualbox do |v|\n    v.cpus = 1\n  end\n\n  config.vm.synced_folder '/home/hayden/development/SparkSeat/Vagrant/provision/puppet/', '/etc/puppetlabs/puppet'\n  config.vm.synced_folder '/home/hayden/development/SparkSeat/Vagrant/hieradata', '/etc/puppetlabs/puppet/hieradata'\nend\n{code}\n\nOnce the machine was up, I ran the following as root:\n\n{code}\niptables -F\nrpm -Uvh http://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm\nyum -y install puppetserver git ruby rubygems\n\n# removing NetworkManager to overcome https://puppet.atlassian.net/browse/PUP-4497\nyum -y remove NetworkManager*\nsystemctl mask NetworkManager\n\ngem install librarian-puppet\n\n# Decrease heap sizes to run on a smaller box\nsed -rie 's/(Xm[sx])2g/\\1512m/g' /etc/sysconfig/puppetserver\n\n# Create puppet directories\nmkdir -p /var/puppet/files/{certs,secrets} /etc/puppetlabs/puppet/hieradata\n\n# Start puppetserver\nsystemctl start puppetserver\n{code}\n\nNow try to provision the master:\n\n{code}\n/opt/puppetlabs/bin/puppet agent --test --verbose --waitforcert 10\n\nInfo: Creating a new SSL key for localmaster.sparkseat.com\nInfo: Caching certificate for ca\nInfo: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml\nInfo: Creating a new SSL certificate request for localmaster.sparkseat.com\nInfo: Certificate Request fingerprint (SHA256): F7:3D:31:70:23:F2:9F:02:13:11:47:65:FA:75:EE:6C:22:AE:6E:70:A9:ED:11:51:09:E9:BA:2E:DA:CF:1F:FE\nInfo: Caching certificate for ca\nNotice: Did not receive certificate\n{code}\n\nNothing out of the normal so far. Yet...\n\nIn a new SSH session:\n\n{code}\n/opt/puppetlabs/bin/puppet cert --list\nNotice: Signed certificate request for ca\n\n/opt/puppetlabs/bin/puppet cert --list\n{code}\n\nNote no output from `puppet cert --list` (aside from the notice about signing the CA request). It is also not possible to sign the request.\n\n{code}\n/opt/puppetlabs/bin/puppet cert sign localmaster.sparkseat.com\n\nError: Could not find certificate request for localmaster.sparkseat.com\n{code}\n\n`hostname` results in `localmaster.sparkseat.com`\n\n-----\n\nContents of relevant files:\n\n{code:title=/etc/puppetlabs/puppetserver/conf.d/puppetserver.conf}\n# configuration for the JRuby interpreters\njruby-puppet: {\n    # Where the puppet-agent dependency places puppet, facter, etc...\n    # Puppet server expects to load Puppet from this location\n    ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby]\n\n    # This setting determines where JRuby will look for gems.  It is also\n    # used by the `puppetserver gem` command line tool.\n    gem-home: /opt/puppetlabs/server/data/puppetserver/jruby-gems\n\n    # (optional) path to puppet conf dir", "created": "2015-06-04T12:59:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22] Looking at your configuration, I'm thinking the issue could be one of two things.\n\n1. I noticed in your puppet.conf file you have the ssl-dir setting set to {{$vardir/ssl}}. By default, however, the {{master-var-dir}} setting in {{puppetserver.conf}} is set, which overrides ruby puppet's default setting for the vardir. Ruby puppet, however, is using its default vardir setting. As a result, since your ssl-dir is set to {{$vardir/ssl}}, I think it's possible that puppetserver and the puppet cert tool are looking in two separate SSL directories. Does the issue work itself out if you don't use the $vardir setting in the value for ssl-dir?\n\n2. In the second SSL session, were you running as root?", "created": "2015-06-04T15:20:00.000000"}, {"author": "557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22", "body": "I was running as root, yes.\n\nI have commented out the {{ssldir}} in my {{puppet.conf}}. Alas, this broke my environment as puppet can't write to directories linked by vagrant (since the vagrant user owns them, and puppet ensures they are mode 775). Copying just {{puppet.conf}}:\n\n{code}\nsystemctl start puppetserver\nJob for puppetserver.service failed...\n\njournalctl -u puppetserver\n<snip>\nJun 04 22:43:04 localmaster.sparkseat.com java[7402]: Exception in thread \"main\" java.lang.IllegalStateException: Cannot initialize master with partial state", "created": "2015-06-04T16:48:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22] Could you try setting your ssldir setting in your puppet.conf file to something like {{/var/puppet/ssl}}?\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] Any insight into the above SSL error?", "created": "2015-06-04T16:53:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22] So it seems that the error you saw in your most recent agent run is generally caused by the master and the agent having different SSL directories, I think if you try changing your {{ssldir}} to something like {{/var/puppet/ssl}} or some such it should fix all the issues you're seeing.", "created": "2015-06-04T17:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623e7507866b810069e57527], assuming that the {{master-conf-dir}} in the {{puppetserver.conf}} file is set to {{/etc/puppetlabs/puppet}} and the agent is being run as the \"root\" user, I'd been thinking that the agent would also be using an inferred default value of {{/etc/puppetlabs/puppet}} for {{confdir}}.  Since the default for {{ssldir}} is rooted under {{$confdir/ssl}}, I would have expected the master and agent to be using the same {{ssldir}} - {{/etc/puppetlabs/puppet/ssl}}.\n\nProbably would be good to confirm that the last agent run was again done as the \"root\" user - to confirm that the expect default of {{/etc/puppetlabs/puppet}} is being used and that the CA certificate at {{/etc/puppetlabs/puppet/ssl/certs/ca.pem}} is identical to the one at {{/etc/puppetlabs/puppet/ssl/certs/ca/ca_crt.pem}}.  Also, the server's certificate could be manually verified against the CA certificate via SSL to see that no errors are found - {{openssl verify -CAfile /etc/puppetlabs/puppet/ssl/certs/ca.pem /etc/puppetlabs/puppet/ssl/certs/localmaster.sparkseat.com.pem}}.  ", "created": "2015-06-04T18:36:00.000000"}, {"author": "557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22", "body": "All agent runs have been done as the root user.\n\nSetting {{ssldir}} to {{/var/puppet/ssl}} fails because {{/var/puppet}} does not exist (Error: /File[/var/puppet/ssl]/ensure: change from absent to directory failed: Cannot create /var/puppet/ssl", "created": "2015-06-05T01:43:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22] No problem! Thanks for bringing this to our attention, I agree we should document this better. I'll open a ticket to improve the docs surrounding this. It sounds like your issue is resolved, yes? If so I'll close out this ticket.", "created": "2015-06-05T12:47:00.000000"}, {"author": "557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22", "body": "Yes, thank you.\n\nI would also like to add, though, that it seems counter-intuitive that variables in {{puppet.conf}} are being interpolated differently between puppet and puppetserver. Perhaps that could be looked into as well?", "created": "2015-06-05T12:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22] yeah, we're trying to get to a place where there are no settings that are ambiguous between the two, but it's been challenging to do it without breaking backward compatibility.  Hopefully in Puppet 5 we'll get most of that cleaned up.  Apologies for the confusion and we will definitely keep working to improve that rough edge.", "created": "2015-06-08T08:53:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I opened SERVER-719 to address the documentation issues, so I'm going to close out this ticket.", "created": "2015-06-08T10:43:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2015-05-24T06:57:00.000000", "creator": "557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cc48ba6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzvyn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Book keeping error. Should have been added. Community reported"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_275256347_*|*_3_*:*_1_*:*_862888944_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_171390739"}], "description": "Running `puppet agent --test --verbose` fails with the following error:\n\n{code}\nthe certificate retrieved from the master does not match the agent's private key\n{code}\n\nIt looks like puppetserver is storing things in `/opt/puppetlabs/server/data/puppetserver/.puppetlabs/.....` which is not what has been specified in `puppet.conf`.\n\nPossibly related to [SERVER-337]?", "environment": "Centos 7\nPuppet Agent 4.1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17321", "fixedVersions": [], "id": "17321", "issueType": "Bug", "key": "SERVER-681", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a2635c36-ba4c-493e-a6f9-220fc01fcb22", "resolution": "Fixed", "resolutionDate": "2015-06-08T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Running puppet agent on host running puppet server fails", "timeSpent": "PT0S", "updated": "2015-06-10T12:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to stable and master.  Initially broke CI due to Puppet Server failing to start and CLI subcommands failing due to JRuby inappropriately attempting to load the Bouncy Castle jar that Puppet Server explicitly excludes from packaging.  Work to fix those problems was done in SERVER-655.", "created": "2015-05-22T15:58:00.000000"}], "components": [], "created": "2015-05-22T15:51:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14260889"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz02fr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Including to help mitigate some memory usage issues we'd been seeing vs. JRuby 1.7.19"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_388025_*|*_5_*:*_1_*:*_1038205670_*|*_6_*:*_1_*:*_0"}], "description": "We've seen some benefits in local testing with respect to memory usage in JRuby 1.7.20 vs. the 1.7.19 version that we were using in Puppet Server 1.0.8.  This ticket captures the intention to upgrade Puppet Server's JRuby dependency to 1.7.20 for the upcoming Puppet Server 1.1.0 and 2.1.0 releases.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17600", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "17600", "issueType": "Task", "key": "SERVER-680", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-05-22T15:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade to JRuby 1.7.20", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-05-22T00:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2728d77b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01rz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1073752969_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_19790300"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%221.1.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16139", "fixedVersions": [], "id": "16139", "issueType": "Sub-task", "key": "SERVER-678", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-03T16:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2015-06-03T16:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-05-22T00:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56924a46"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01rr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1073752621_*|*_5_*:*_1_*:*_41132501092_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_18831398"}], "description": "Update dujour to notify users to use 1.1.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15793", "fixedVersions": [], "id": "15793", "issueType": "Sub-task", "key": "SERVER-677", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-03T16:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 1.1.0", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Sent to puppet-{users,dev,announce}", "created": "2015-06-03T15:00:00.000000"}], "components": [], "created": "2015-05-22T00:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5919f967"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01rj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1073750600_*|*_3_*:*_1_*:*_3184778_*|*_5_*:*_1_*:*_41137123864_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11607905"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15558", "fixedVersions": [], "id": "15558", "issueType": "Sub-task", "key": "SERVER-676", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-06-03T15:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "Done.", "created": "2015-06-02T15:39:00.000000"}], "components": [], "created": "2015-05-22T00:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6469059"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01rb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1004460171_*|*_5_*:*_1_*:*_41220650896_*|*_6_*:*_1_*:*_0"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15187", "fixedVersions": [], "id": "15187", "issueType": "Sub-task", "key": "SERVER-675", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T15:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-05-22T00:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@418c0872"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01r3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1004313288_*|*_3_*:*_1_*:*_69438187_*|*_5_*:*_1_*:*_41151369361_*|*_6_*:*_1_*:*_0"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14963", "fixedVersions": [], "id": "14963", "issueType": "Sub-task", "key": "SERVER-674", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-03T10:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-05-22T00:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d5b820a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01qv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1004430090_*|*_5_*:*_1_*:*_41220674618_*|*_6_*:*_1_*:*_0"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17597", "fixedVersions": [], "id": "17597", "issueType": "Sub-task", "key": "SERVER-673", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T15:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Received (y) votes from [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], and [~accountid:623c08e1562ab90069f8aed4].", "created": "2015-06-02T15:34:00.000000"}], "components": [], "created": "2015-05-22T00:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4974a9e0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01qn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1004162674_*|*_5_*:*_1_*:*_41220967941_*|*_6_*:*_1_*:*_0"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17320", "fixedVersions": [], "id": "17320", "issueType": "Sub-task", "key": "SERVER-672", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T15:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "\ud83d\udc4dfor {{ubuntu-1404-x86_64}} following [this procedure|https://puppet.atlassian.net/browse/SERVER-637?focusedCommentId=179451&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-179451].", "created": "2015-06-02T13:42:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Followed [~accountid:623c12b6ee1b5a0070293582]'s procedure for Cent6 and Cent7 and everything worked great!", "created": "2015-06-02T14:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "(y) for Debian 7.  Procedure:\n\n1) Installed puppetserver 1.1.0 from builds.puppetlabs.lan.\n2) Started puppetserver.\n3) Did a puppet agent run, observed was successful.\n4) Put a global notify resource in the site.pp for the production environment.\n5) Did another puppet agent run, observed that the notify appeared in the agent output.\n6) Installed / configured PuppetDB into the puppetserver configuration.\n7) Did another puppet agent run. Confirmed from log output and from a REST query to the v3/nodes endpoint that the agent was delivering a report to PuppetDB which looked reasonable.\n8) Started over from a clean machine.\n9) Installed puppetserver 1.1.0 from apt.puppetlabs.com repo.\n10) Started puppetserver.\n11) Did an agent run, confirmed that the run was successful.\n12) Configured the puppetserver 1.1.0 repo from builds.puppetlabs.lan.\n13) Upgraded puppetserver to 1.1.0 and restarted puppetserver.\n14) Did another agent run, confirmed that the run was successful.", "created": "2015-06-02T14:19:00.000000"}], "components": [], "created": "2015-05-22T00:38:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47530a6f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01qf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_996685242_*|*_3_*:*_1_*:*_6038676_*|*_5_*:*_1_*:*_41222407494_*|*_6_*:*_1_*:*_0"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17038", "fixedVersions": [], "id": "17038", "issueType": "Sub-task", "key": "SERVER-671", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T15:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "This will happen automatically with SERVER-666", "created": "2015-06-02T11:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For posterity, the commit SHA where the version bump was merged to Puppet Server's stable branch was d0bd3033673ebfaff70ab4c161fbb5398e04caf0.", "created": "2015-06-02T15:14:00.000000"}], "components": [], "created": "2015-05-22T00:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c06334"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01q7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_990946113_*|*_5_*:*_1_*:*_41234192026_*|*_6_*:*_1_*:*_0"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16652", "fixedVersions": [], "id": "16652", "issueType": "Sub-task", "key": "SERVER-670", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T11:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "Given that we're still trying to finish 4.1 docs, we're going to need some help on release notes. Who on the team would be able to sort the 1.1 tickets into three or four main categories and give some context around them? \n\nJust jotted notes are fine! Doing cleanup of writing is relatively fast for us, but understanding the context and connections between tickets in a release is expensive, and I think there's probably someone here who just has it all in their heads. \n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:623c12b6ee1b5a0070293582], anyone want to nominate someone? ", "created": "2015-05-22T12:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c08e1562ab90069f8aed4] I can do that.  Need to do a bunch of JIRA cleanup today anyway so can consider this part of the work.  The most prominent change coming into this release will be SERVER-325, the {{max-requests-per-instance}} setting.  See https://github.com/puppetlabs/puppet-server/pull/565 for the docs work that [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] did for that.  Much of the other work consists of one-off tickets, but I'll try to group them in some way that makes them more intelligible for you.  Also, [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] had volunteered to help with crafting documentation if that would help for your workload.", "created": "2015-05-22T12:08:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Awesome. Thanks a ton! \n\nA thing I like doing is copy-pasting the jira \"release notes\" view into a text editor, then sorting the lines into whatever groups seem natural, usually with a \"misc bug fixes\" category for any non-blockbuster one-offs. If you did that and wrote a sentence or two about the major groups, we could pick up from there. ", "created": "2015-05-22T15:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c08e1562ab90069f8aed4], here's my rough draft:\n\n---\n\nh3. Puppet Server 1.1.0\n\nIn addition to several bug fixes, this release adds a new feature which can be configured to allow the master to automatically flush individual JRuby pool instances after a specified number of web requests have been handled and upgrades Puppet Server's dependency on JRuby to 1.7.20 in order to take advantage of memory optimizations and other fixes.\n\nh4. New Features\n\n(SERVER-325) Add setting to flush ruby instances after a configurable number of requests\n\nWe added a setting that can be used by the master to limit how many HTTP requests a given JRuby instance will handle in its lifetime. When a JRuby instance reaches this limit, it gets flushed from memory and replaced with a fresh one. Defaults to 0, which disables automatic JRuby flushing. This can be useful for working around buggy module code that would otherwise cause memory leaks, but it causes a slight performance penalty whenever a new JRuby has to reload all of the Puppet Ruby code. If memory leaks from module code are not an issue in your deployment, the default value will give the best performance.\n\n(SERVER-324) Added support to the \u201cenvironment-cache\u201d API for flushing an environment by name as opposed to just having the ability to flush all environments.\n\nh4. Bug fixes\n\n(SERVER-564) Re-enabled the master \u201cstatus\u201d endpoint.\n\n(SERVER-442 / SERVER-696) - Fix for a problem where file_metadatas requests to the master which include multiple \u201cignore\u201d parameters were being mishandled.  This had previously led to an agent downloading files from the master which should have been ignored.\n\n(SERVER-157) Puppet Server now properly honors the value in the \u201ckeylength\" setting when determining the number of bits to use in the generation of keys.  Previously, Puppet Server had always hardcoded the \u201ckeylength\u201d to 4096 bits.\n\n(SERVER-541) Disabled display of verbose output that appeared during a package upgrade\n\n(SERVER-682) Fixed an issue where logback levels weren\u2019t changed unless you restarted Puppet Server.\n\nThis functionality had been provided in the Puppet Server 1.0.2 but inadvertently removed in Puppet Server 1.0.8.\n\nh4. Miscellaneous improvements\n\n(SERVER-544) Reduced the amount of memory used by the master to cache the payload for incoming catalog requests.\n\n(SERVER-680) Upgraded JRuby dependency to 1.7.20 in order to take advantage of some of the memory management improvements we\u2019ve seen in our internal testing.\n\n(SERVER-391) Made the error message displayed for a JRubyPool \u201cborrow-timeout\u201d a little more clear", "created": "2015-05-29T14:53:00.000000"}, {"author": "557058:8f1e0495-1d4a-4123-bbad-727b7f49f370", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Here are revised release notes, could you please take a look?", "created": "2015-06-01T16:10:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Someone merged this!", "created": "2015-06-02T15:39:00.000000"}], "components": [], "created": "2015-05-22T00:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f645e46"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01pz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_905247429_*|*_10007_*:*_1_*:*_84677624_*|*_3_*:*_1_*:*_14582768_*|*_5_*:*_1_*:*_41220615918_*|*_6_*:*_1_*:*_0"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16452", "fixedVersions": [], "id": "16452", "issueType": "Sub-task", "key": "SERVER-669", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T15:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-05-22T00:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@447f4aef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01pr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1002748639_*|*_3_*:*_1_*:*_90906814_*|*_6_*:*_1_*:*_0"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16136", "fixedVersions": [], "id": "16136", "issueType": "Sub-task", "key": "SERVER-668", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-03T16:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2015-06-03T16:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This ticket isn't relevant for how we're managing the Puppet Server branches right now.  We're only merging up from stable to master, not the other direction, since master is currently for 2.x and stable is currently for 1.x.  So, closing.", "created": "2015-05-22T18:23:00.000000"}], "components": [], "created": "2015-05-22T00:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@41ff4bfe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01pj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_63941483_*|*_6_*:*_1_*:*_0"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15792", "fixedVersions": [], "id": "15792", "issueType": "Sub-task", "key": "SERVER-667", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2015-05-22T18:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2015-05-28T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Version was bumped to 1.1.0 for release here: https://github.com/puppetlabs/puppet-server/pull/590.  Merged to the stable branch of Puppet Server at d0bd3033673ebfaff70ab4c161fbb5398e04caf0.", "created": "2015-06-02T13:28:00.000000"}], "components": [], "created": "2015-05-22T00:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d0a7223"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01pb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_996643343_*|*_3_*:*_1_*:*_7220577_*|*_5_*:*_1_*:*_41221296849_*|*_6_*:*_1_*:*_0"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15556", "fixedVersions": [], "id": "15556", "issueType": "Sub-task", "key": "SERVER-666", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T15:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\ud83d\udc7f Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-05-22T00:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@31d5c296"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01p3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_63801020_*|*_3_*:*_1_*:*_932690620_*|*_5_*:*_1_*:*_41228668794_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release) There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15186", "fixedVersions": [], "id": "15186", "issueType": "Sub-task", "key": "SERVER-665", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T13:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-05-22T00:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d1009bb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01ov:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_63802317_*|*_3_*:*_1_*:*_932682258_*|*_5_*:*_1_*:*_41228664204_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release). There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14961", "fixedVersions": [], "id": "14961", "issueType": "Sub-task", "key": "SERVER-664", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T13:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-05-22T00:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a64c4fb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01on:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_63801750_*|*_3_*:*_1_*:*_1029891353_*|*_6_*:*_1_*:*_0"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%221.1.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17594", "fixedVersions": [], "id": "17594", "issueType": "Sub-task", "key": "SERVER-663", "labels": [], "originalEstimate": "PT0S", "parent": "17319", "parentSummary": "puppetserver 1.1.0 2015-06-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-03T16:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2015-06-03T16:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0cbf1c7f6a007049e5b9", "attachments": [], "comments": [], "components": [], "created": "2015-05-22T00:37:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3efe58ea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyosiv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Decided to do a SERVER 1.1.0 release around the same time as SERVER 2.1.0"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1121575_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1092526220"}], "description": "puppetserver 1.1.0 2015-06-01 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17319", "fixedVersions": [], "id": "17319", "issueType": "Task", "key": "SERVER-662", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-03T16:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 1.1.0 2015-06-01 Release", "timeSpent": "PT0S", "updated": "2015-06-03T16:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Is this the same issue as in SERVER-592, with workaround described at http://docs.puppetlabs.com/pe/latest/release_notes_known_issues.html#ubuntu-conflict-when-youre-running-on-fusion-vm-and-amazon-ec2?", "created": "2015-05-22T00:45:00.000000"}, {"author": "557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4", "body": "Duplicate of SERVER-592 - follow progress on that issue.\n\nWorkaround described at http://docs.puppetlabs.com/pe/latest/release_notes_known_issues.html#ubuntu-conflict-when-youre-running-on-fusion-vm-and-amazon-ec2", "created": "2015-05-27T11:21:00.000000"}], "components": [], "created": "2015-05-21T22:45:00.000000", "creator": "557058:e8525cc5-c6a2-476c-8bcb-83f3336ecef4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@474dffc8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01of:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_477369254_*|*_6_*:*_1_*:*_0"}], "description": "at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:240)\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5863$service_fnk__5259__auto___positional$reify__5868.shutdown_on_error(internal.clj:295)\n\tat puppetlabs.trapperkeeper.internal$eval5799$fn__5811$G__5785__5819.invoke(internal.clj:264)\n\tat puppetlabs.trapperkeeper.internal$eval5799$fn__5811$G__5784__5828.invoke(internal.clj:264)\n\tat clojure.core$apply.invoke(core.clj:626)\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468)\n\tat clojure.core$apply.invoke(core.clj:626)\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12858$send_agent__12859$fn__12860$agent_fn__12861.invoke(jruby_puppet_agents.clj:35)\n\tat clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913)\nroot@pe-master:/var/log/pe-puppetserver# tail pe-puppetserver-daemon.log -n 100\n             Puppet at /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:75\n            require at org/jruby/RubyKernel.java:1071\n             (root) at /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:29\n             (root) at /opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n            require at org/jruby/RubyKernel.java:1071\n            require at /opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55\n             (root) at file:/opt/puppet/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server.rb:1\n            require at org/jruby/RubyKernel.java:1071\n             (root) at /opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n            require at /opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55\n             invoke at jruby_puppet_core.clj:187\n             invoke at jruby_puppet_core.clj:204\n             invoke at jruby_puppet_core.clj:190\n             invoke at jruby_puppet_agents.clj:54\n             invoke at jruby_puppet_agents.clj:39\n             invoke at jruby_puppet_agents.clj:116\n             invoke at internal.clj:256\n             invoke at internal.clj:240\n  shutdown_on_error at internal.clj:295\n             invoke at internal.clj:264\n             invoke at internal.clj:264\n             invoke at core.clj:626\n           doInvoke at core.clj:2468\n             invoke at core.clj:626\n           doInvoke at core.clj:2468\n             invoke at jruby_puppet_agents.clj:35\n             invoke at core.clj:1913\nException in thread \"main\" java.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12880$prime_pool_BANG___12881$fn__12882.invoke(jruby_puppet_agents.clj:59)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12880$prime_pool_BANG___12881.invoke(jruby_puppet_agents.clj:39)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12957$send_prime_pool_BANG___12958$fn__12959$fn__12961.invoke(jruby_puppet_agents.clj:116)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:256)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:240)\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5863$service_fnk__5259__auto___positional$reify__5868.shutdown_on_error(internal.clj:295)\n\tat puppetlabs.trapperkeeper.internal$eval5799$fn__5811$G__5785__5819.invoke(internal.clj:264)\n\tat puppetlabs.trapperkeeper.internal$eval5799$fn__5811$G__5784__5828.invoke(internal.clj:264)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:160)\n\tat clojure.lang.AFn.applyTo(AFn.java:144)\n\tat clojure.core$apply.invoke(core.clj:626)\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:137)\n\tat clojure.core$apply.invoke(core.clj:626)\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468)\n\tat clojure.lang.RestFn.invoke(RestFn.java:408)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12858$send_agent__12859$fn__12860$agent_fn__12861.invoke(jruby_puppet_agents.clj:35)\n\tat clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132)\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114)\n\tat clojure.lang.Agent$Action.run(Agent.java:163)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)\n\tat java.lang.Thread.run(Thread.java:745)\nCaused by: org.jruby.embed.EvalFailedException: (Error) Cannot determine basic system flavour\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133)\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1340)\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1333)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:606)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:187)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12610$create_pool_instance_BANG___12611$fn__12612.invoke(jruby_puppet_core.clj:204)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12610$create_pool_instance_BANG___12611.invoke(jruby_puppet_core.clj:190)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12880$prime_pool_BANG___12881$fn__12882.invoke(jruby_puppet_agents.clj:54)\n\t... 24 more\nCaused by: org.jruby.exceptions.RaiseException: (Error) Cannot determine basic system flavour\n\tat RUBY.(root)(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/feature/base.rb:32)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1071)\n\tat RUBY.(root)(/opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n\tat RUBY.require(/opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.Puppet(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:75)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1071)\n\tat RUBY.(root)(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:29)\n\tat RUBY.(root)(/opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1071)\n\tat RUBY.require(/opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55)\n\tat RUBY.(root)(file:/opt/puppet/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1071)\n\tat RUBY.(root)(/opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n\tat RUBY.require(/opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55)\n\tat puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:187)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12610$create_pool_instance_BANG___12611$fn__12612.invoke(jruby_puppet_core.clj:204)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12610$create_pool_instance_BANG___12611.invoke(jruby_puppet_core.clj:190)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12880$prime_pool_BANG___12881$fn__12882.invoke(jruby_puppet_agents.clj:54)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12880$prime_pool_BANG___12881.invoke(jruby_puppet_agents.clj:39)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12957$send_prime_pool_BANG___12958$fn__12959$fn__12961.invoke(jruby_puppet_agents.clj:116)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:256)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:240)\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5863$service_fnk__5259__auto___positional$reify__5868.shutdown_on_error(internal.clj:295)\n\tat puppetlabs.trapperkeeper.internal$eval5799$fn__5811$G__5785__5819.invoke(internal.clj:264)\n\tat puppetlabs.trapperkeeper.internal$eval5799$fn__5811$G__5784__5828.invoke(internal.clj:264)\n\tat clojure.core$apply.invoke(core.clj:626)\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468)\n\tat clojure.core$apply.invoke(core.clj:626)\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468)\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12858$send_agent__12859$fn__12860$agent_fn__12861.invoke(jruby_puppet_agents.clj:35)\n\tat clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913)", "environment": "ubuntu14.04_64bit  pe-puppet-3.8.0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17037", "fixedVersions": [], "id": "17037", "issueType": "Bug", "key": "SERVER-661", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e8525cc5-c6a2-476c-8bcb-83f3336ecef4", "resolution": "Duplicate", "resolutionDate": "2015-05-27T11:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Caused by: org.jruby.embed.EvalFailedException: (Error) Cannot determine basic system flavour", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Just integrated this to the master branch but realized that this should have been targeted at the stable branch and merged up from there since the same problem with the test exists on stable.\n\n[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] - when you get a chance, could you put up a PR against the stable branch with this same change and we'll get that merged in?", "created": "2015-05-27T14:34:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "For sure, I'll get that done today.", "created": "2015-05-28T10:16:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Looks like that test doesn't actually exist on stable. Are you seeing that as well?", "created": "2015-05-28T16:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] Yep, you're right.  I didn't see that test on the stable branch either.  Just created a new ticket to add it to stable, SERVER-701, and put that at the top of the backlog.", "created": "2015-06-01T12:27:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This change has been in the Puppet Server master branch for a few builds now and is passing in the way that the test was originally intended for it to be.\n\nFrom https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_no-conditional_smoke-master/LAYOUT=ubuntu1404-64ma-64a,LDAP_TYPE=,PLATFORM=,label=beaker/99/consoleFull:\n\n{noformat}\nbrbkpygcen8gc9c.delivery.puppetlabs.net (ubuntu1404-64-1) 10:03:39$ unzip -lf /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar | grep META-INF/jruby.home/lib/ruby/shared\n...\nacceptance/suites/tests/00_smoke/validate-excluded-bc-jars.rb passed in 2.62 seconds\n{noformat}\n\nClosing this since this presumably doesn't need any further QA review, /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2015-06-01T12:34:00.000000"}], "components": [], "created": "2015-05-21T16:33:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c6c691a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyosin:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "We found a test as incorrectly passing"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_424939333_*|*_1_*:*_1_*:*_418645123_*|*_10007_*:*_1_*:*_92498339_*|*_5_*:*_1_*:*_41810236601_*|*_6_*:*_1_*:*_0"}], "description": "The {{validate-excluded-bc-jars}} test in the Puppet Server acceptance test suite is reporting \"success\" at least on Ubuntu for Puppet Server 2.x / master but the test doesn't actually appear to be doing what it is supposed to be doing.  Example console output from one run: \n\n{noformat}\nk2iwnkzl4rptnir.delivery.puppetlabs.net (ubuntu1404-64-1) executed in 1.46 seconds\n\nk2iwnkzl4rptnir.delivery.puppetlabs.net (ubuntu1404-64-1) 14:23:34$ unzip -lf /puppet-server-release.jar | grep META-INF/jruby.home/lib/ruby/shared\nunzip:  cannot find or open /puppet-server-release.jar, /puppet-server-release.jar.zip or /puppet-server-release.jar.ZIP.\n\nk2iwnkzl4rptnir.delivery.puppetlabs.net (ubuntu1404-64-1) executed in 0.01 seconds\nExited: 1\nacceptance/suites/tests/00_smoke/validate-excluded-bc-jars.rb passed in 1.48 seconds\n{noformat}\n\nI suspect that there's a bug in the test around how the location of the \"puppet-server-release.jar\" file is being derived causing it to fail to properly inspect the jar for the presence of the BouncyCastle content.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17318", "fixedVersions": [], "id": "17318", "issueType": "Bug", "key": "SERVER-660", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-01T12:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "validate-excluded-bc-jars test broken", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This has been merged and Jenkins jobs are still passing in CI on the \"stable\" branch.  See:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-stable/63/\n\nMoving to \"testing\" so [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] has a chance to review.", "created": "2015-05-27T14:19:00.000000"}], "components": [], "created": "2015-05-21T15:32:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6caa9aba"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz01jz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Discovered that this functionality had been broken by work done for SERVER-325"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_424177522_*|*_1_*:*_1_*:*_38251_*|*_10007_*:*_1_*:*_87373462_*|*_3_*:*_1_*:*_2480783_*|*_5_*:*_1_*:*_610793615_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1307222"}], "description": "The refactor of the JRuby namespaces which took place as part of SERVER-325 in https://github.com/puppetlabs/puppet-server/pull/484 inadvertently removed support for the HTTP connect and idle timeout settings.\n\nPrevious code with the settings:\n\nhttps://github.com/puppetlabs/puppet-server/pull/484/files#diff-5ad97bf28dd9f8f97bab3706b0367684L220\n\nRefactored code which removed them:\n\nhttps://github.com/puppetlabs/puppet-server/pull/484/files#diff-5ad97bf28dd9f8f97bab3706b0367684L220\n\nThese should be restored, along with some unit tests written to protect against this happening again.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14959", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "14959", "issueType": "Bug", "key": "SERVER-659", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-05-27T14:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "HTTP connect and idle timeout settings broken", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] was able to figure out what's causing this issue, so I'm going to kick this ticket over to him.", "created": "2015-05-20T17:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The error was occurring at this line of code in core Ruby Puppet:\n\nhttps://github.com/puppetlabs/puppet/blob/4.0.0/lib/puppet/util/run_mode.rb#L67\n\nThe check for creation of a directory was done based on expanding a base path which starts with \"~\" for the non-root user of \"puppet\":\n\nhttps://github.com/puppetlabs/puppet/blob/4.0.0/lib/puppet/util/run_mode.rb#L75\n\n\"~\" is expanded from the value of the {{HOME}} environment variable in the running puppetserver process.  When run from a service init startup of puppetserver, this is drawn from the default home directory configured for the \"puppet\" user - {{/opt/puppetlabs/server/data/puppetserver}}, a directory created by default packaging and, therefore, which does not need to be recreated at Puppet Server startup time.  When run as the \"root\" user from the puppetserver foreground command on Ubuntu via sudo, however, the {{HOME}} environment variable is defined as {{/root}}.  The \"puppet\" user has insufficient permissions to create content under {{/root}} and, therefore, the error message occurs and puppetserver fails to start - as mentioned in the description.\n\nThe problem was only occurring on Ubuntu and not RedHat 6/7 because, for Ubuntu, the sudo command preserves the value of the {{HOME}} environment variable from that of the user launching sudo whereas it is drawn from the target user on RedHat 6/7.\n\nsudo has a \"-H\" option which can be used to explicitly specify that the {{HOME}} environment variable be reset to that of the target user.  I submitted a PR with that change to ezbake as part of EZ-44.  That PR will need to land, new lein-ezbake plugins with that change will need to be released, and the lein-ezbake dependency version in Puppet Server will need to be bumped in order to incorporate the change.  This ticket should remain open through the bump of the lein-ezbake versions to Puppet Server.", "created": "2015-05-21T00:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Bumped the lein-ezbake version for the master branch to 0.3.6 and for the stable branch to 0.2.10.\n\nFollowing the bump, the next instance (and all subsequent instances so far) of the puppet-server master 20 / smoke test job passed where they had been failing for Ubuntu because of the broken foreground command test previously:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_smoke-master/59/\n\nLatest stable and master branch runs of the full puppet-server master 25 job are also passing.\n\nFor stable:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-stable/51/\n\nFor master:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-master/49/\n\nMoving ticket to \"testing\" column.", "created": "2015-05-22T18:28:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated that the puppetserver foreground command works with Ubuntu 14.04 with puppetserver_2.1.0.master-0.1SNAPSHOT.2015.05.22T0301puppetlabs1_all.deb.\n\n", "created": "2015-05-27T14:24:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "re-validated with proper STEPS TO REPRODUCE:\n- install puppet-agent 1.0 (AIO) in a fresh VM\n- install java8\n- install puppetserfver 2.1.0.master-0.1SNAPSHOT.2015.05.29T1016puppetlabs1\n- exit root / sudo to a user account\n- run \"/opt/puppetlabs/bin/puppetserver forground\" from inside a user account.  = PASS\n- Ctrl C to kill this instance of puppetserver\n- run \"sudo /opt/puppetlabs/bin/puppetserver forground\" from inside a user account.  = PASS\n", "created": "2015-05-29T15:21:00.000000"}], "components": [], "created": "2015-05-20T15:31:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3365cc21"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz00jr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Discovered this when puppetserver foreground test turned on for first time on master"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_20421724_*|*_1_*:*_1_*:*_26489_*|*_10007_*:*_1_*:*_78938694_*|*_3_*:*_1_*:*_84047537_*|*_5_*:*_1_*:*_611680989_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_417477099"}], "description": "{{puppetserver foreground}} blows-up on Ubuntu 14.04 with the following error:\n\nbq. Errno::EACCES: Permission denied - /root/.puppetlabs\n\nThis error does not occur on Redhat 6 or 7.\n\n--\n\nFor Puppet Server 2.x, running {{puppetserver foreground}} on top of Puppet-Agent 1.0.0 (Puppet 4.0) would fail with this error.  I suspect that the same error may not have happened if Puppet-Agent 1.1.0 (Puppet 4.1) were installed on the host because the logic that tries to create the directory which causes the failure was reworked.\n\nFor Puppet Server 1.x, none of the logic which tries to create this directory was in place so the command did not fail.\n\nThe investigation for this ticket uncovered that for both Puppet Server 1.x and Puppet Server 2.x, running the foreground command via sudo - which is what would happen on sudo - would result in the process being run with the effective {{HOME}} directory of the original user rather than that of the \"puppet\" user, which is how Puppet Server is run as a service.  This problem was fixed for both Puppet Server 1.x and Puppet Server 2.x.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16450", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "16450", "issueType": "Bug", "key": "SERVER-657", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2015-05-27T14:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "'puppetserver foreground' uses wrong HOME directory and can fail to start under sudo", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [], "components": [], "created": "2015-05-20T11:41:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b9ef49f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xdr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_603476110_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_48580641487"}], "description": "@Christopher Price proposed command line options for puppetserver configuration in TK-221.  \n\npuppetserver config set\npuppetserver config get\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16449", "fixedVersions": [], "id": "16449", "issueType": "Task", "key": "SERVER-656", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Duplicate", "resolutionDate": "2016-12-09T16:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create command line tool for puppetserver config set & puppet config get", "timeSpent": "PT0S", "updated": "2016-12-09T16:56:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Work was done across two PRs to address the issue, which ultimately was that the JRuby's \"jar-dependencies\" needs to be explicitly loaded by Puppet Server now so that the {{JARS_NO_REQUIRE}} environment variable that Puppet Server sets to instruct JRuby to not load any jars (including the Bouncy Castle one) will be honored.  In JRuby 1.7.19 and earlier, \"jar-dependencies\" was implicitly required by {{jruby-openssl}} but is not in later versions.  Note that some follow-up discussion about the JRuby change is taking place on https://github.com/jruby/jruby-openssl/issues/10.", "created": "2015-05-22T11:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Prior to the second PR landing, the puppet-server stable 20 smoke test job had been failing.  It had been failing because the Puppet Server service was unable to start and the cli commands were unable to be run because of the Bouncy Castle problem.  Those tests are all running and passing now as of this job:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_smoke-stable/54/\n\nMoving to \"testing\" so that [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] has a chance to review.  This one seems fine to just move to \"done\" as existing automated test coverage is probably sufficient for catching this problem.", "created": "2015-05-22T12:02:00.000000"}], "components": [], "created": "2015-05-19T10:31:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37013d2e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp6g7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found via CI failures following bump to JRuby 1.7.20"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_254072360_*|*_1_*:*_1_*:*_20559_*|*_10007_*:*_1_*:*_3911072_*|*_3_*:*_1_*:*_7121819_*|*_5_*:*_1_*:*_611278292_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_440578946"}], "description": "Following the work done in https://github.com/puppetlabs/puppet-server/pull/543 to upgrade Puppet Server's JRuby dependency to 1.7.20, the Puppet Server service from any packages built with the change fails to load with this error:\n\n{noformat}\nLoadError: no such file to load -- org/bouncycastle/bcpkix-jdk15on/1.50/bcpkix-jdk15on-1.50.jar\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15554", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "15554", "issueType": "Task", "key": "SERVER-655", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-05-27T14:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server fails loading bouncycastle with upgrade to JRuby 1.7.20", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [{"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2015-05-27T07:06:00.000000", "name": "SERVER-654-4coreVM-OSSv2.0.0.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11104"}, {"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2015-05-27T07:06:00.000000", "name": "SERVER-654-laptop-OSSv2.1.0-preview-maxreq500.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11259"}, {"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2015-05-27T07:06:00.000000", "name": "SERVER-654-laptop-OSSv2.1.0-preview.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11181"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "At this time I think it's probably best that we do *not* turn this setting on by default, unfortunately.\n\nI did three permutations of runs.  For each permutation, I did one run *with* reify and one run *without*.\n\nAll runs were done with the modules from PE-9704 installed (sans the defective IIS module), to try to make sure the tests were exercising all of the expensive environment loading / caching behavior.  All runs were done using the \"OSS Puppet Server 2.1.0\" gatling recording from the gatling-puppet-load-test repo.\n\nThe first permutation was done using a 4-core VM and OSS Puppet Server v2.0.0, with 1000 simulated agents.  This was a heavy load for this system, so the catalog requests were averaging about 7 seconds with no reify.  When I turned on reify, those requests went up to about 7.7 seconds.  Other requests saw a similar percentage increase.  See gatling results in attached file SERVER-654-4coreVM-OSSv2.0.0.tar.gz.\n\nThe second run I did was on my laptop, running the latest master branch of OSS Puppet Server from source.  (This should be very close to the final 2.1.0 release code.)  I explicitly set the # of jrubies to 6 to match the previous run.  With this run, the server was able to keep up with the load with no problems, and the catalog requests w/o reify averaged 1900ms.  The same run with reify showed an average catalog request of about 2000ms.  So, not quite as pronounced of a slowdown as for the overloaded server... about 5% instead of 10%.  See results in SERVER-654-laptop-OSSv2.1.0-preview.tar.gz.\n\nEven 5% seems like it's probably too big of a hit, though.\n\nThe third set of runs I did was with the 'max-requests' setting set to 500.  A notable thing about this run: it's a huge perf hit, regardless of the reify setting.  I had to cut the number of active agents down from 1000 to 500 to keep from totally overwhelming the server.\n\nI also ran into some PermGen exceptions the first time I ran it with reify enabled.  I increased the permgen to 512m on subsequent runs and didn't see any more of those exceptions, but it still made me nervous.\n\nThe reify setting didn't seem to have as much of a performance impact during these runs", "created": "2015-05-27T07:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] would be interested to hear if any of you gents have any opinions on the info above.", "created": "2015-05-27T07:26:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] based on your analysis it seems like we should keep it off.  If an user is running out of memory for unknown reasons then it's likely to keep happening and we'll have another chance turn on this setting and see what happens.  \n\nSeems like turning it on could have unknown changes to our current suggested tuning settings and I don't want to have to add a variable to figuring out how to tune things at this time.  \n\nFinal point, if the only value of turning this on is for debugging then it seems reasonable to just turn it on when we need to debug something.  Sure it causes us to take an extra cycle while we wait for the newest reproduction case but the risk doesn't seem worth turning it on by default.  ", "created": "2015-05-27T10:01:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. I also ran into some PermGen exceptions the first time I ran it with reify enabled. I increased the permgen to 512m on subsequent runs and didn't see any more of those exceptions, but it still made me nervous.\n\nPuppet Server 2.0.0 packages already depend on Java 8, which does not have PermGen.\n\nThat said, given the performance hit and everything else, I don't see a compelling argument in favor of turning on this behavior by default.  That said, it sure would be nice if we could turn it on in a nicer way than having a user hack-up the init script to include it.", "created": "2015-05-27T14:22:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] it should be available to tune in {{/etc/sysconfig}} or {{/etc/defaults}}", "created": "2015-05-27T15:01:00.000000"}], "components": [], "created": "2015-05-19T02:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7edf47e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzyzj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Urgency related to support escalation"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_117392729_*|*_3_*:*_1_*:*_104356643_*|*_5_*:*_1_*:*_42260685558_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1989640_*|*_10005_*:*_1_*:*_484335889"}], "description": "There is a JVM system property that you can set (\"-Djruby.reify.classes=true\") which changes the behavior of JRuby in ways that make the .hprof files much more useful for debugging.  (It causes Jruby to create named classes in the JVM class loader for the various Ruby classes that it loads; without the setting, basically everything shows up in the JVM as an instance of JRubyObject.)\n\nWe've been assuming that there were performance or memory implications to having this setting turned on, so we don't ship with it on by default.  However, it's proved useful enough that it's probably worth doing some tests to quantify whether or not it actually has any performance or memory implications, because it would be much better if we could ship with it by default.\n\nI asked about it in the #jruby IRC channel not too long ago, and the answer that I got was that it probably doesn't have any major implications unless you are dynamically generating lots and lots of classes at runtime (which, admittedly, Puppet may be doing).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16448", "fixedVersions": [], "id": "16448", "issueType": "Task", "key": "SERVER-654", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-05-27T07:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "perf testing re: JRuby reify setting", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "We've decided the best solution is to skip the test on RH5 rather than using an ugly workaround", "created": "2015-05-18T17:25:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I'm pretty sure this is fixed, I was looking at this test yesterday and it seems to be passing (on all platforms except Ubuntu, but that is a different issue - SERVER-657).", "created": "2015-05-21T14:07:00.000000"}], "components": [], "created": "2015-05-18T11:32:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f26186d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzyav:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "in CI"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_36715091_*|*_1_*:*_1_*:*_36197_*|*_10007_*:*_1_*:*_210417685_*|*_5_*:*_1_*:*_42755110132_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_21312824"}], "description": "We're having CI failures on RH5 for the foreground acceptance test because the {{timeout}} command isn't available.\n\n{code}\n#<Beaker::Host::CommandFailure: Host 'hfjrmq7efgmpxza.delivery.puppetlabs.net' exited with 127 running:\n  timeout -s INT 60s puppetserver foreground --debug  \nLast 10 lines of output were:\n\tbash: timeout: command not found>\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14957", "fixedVersions": [], "id": "14957", "issueType": "Bug", "key": "SERVER-653", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-05-21T14:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Foreground acceptance test failing on redhat 5 because of missing timeout command", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Changes have been in for a while and are passing on all platforms, including Windows.  For example:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_puppet3-compat_master/5/console\n\nMoving to \"testing\" for [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] to review, if needed.\n\n", "created": "2015-05-22T11:33:00.000000"}], "components": [], "created": "2015-05-17T22:10:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@313dbfd5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzy4v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found original tests were failing when run with Windows"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_241645931_*|*_1_*:*_1_*:*_13391_*|*_10007_*:*_1_*:*_88496070_*|*_3_*:*_1_*:*_63620969_*|*_5_*:*_1_*:*_1051865147_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_2329670"}], "description": "The Puppet 3.x compatibility tests and associated nwolfe-simmons module developed for SERVER-546 are runnable on Linux platforms only.  The tests should be changed in such a way that they can be run successfully with the use of either a Linux-based or a Windows-based agent.  This is needed to enable the redhat7-64m-windows2008r2-64a cell for the \"Puppet 3 Compatibility Acceptance Test Suite\" #21 job in Jenkins to pass when run.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14956", "fixedVersions": ["SERVER 2.1.0"], "id": "14956", "issueType": "Task", "key": "SERVER-652", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-05-22T12:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make Puppet 3.x compatibility tests runnable by Windows agents", "timeSpent": "PT0S", "updated": "2015-06-03T16:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-05-15T15:36:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@448ea8c6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xdj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_416718086_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_49184992991"}], "description": "During development of SERVER-546, the manifests/facts/files/etc were contained in the nwolfe-simmons module, but it might be better long-term to have the module effectively inlined with the tests.\n\nThis would make it faster to add new tests, and avoid false CI failures if/when the Forge happens to be down.\n\nIf we wanted QA/QE to own the acceptance suite/tests, this might be a good introduction to the nwolfe-simmons module (CC [~accountid:623c0ff494742a00683e3fe4]).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15560", "fixedVersions": [], "id": "15560", "issueType": "Task", "key": "SERVER-650", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider inlining the nwolfe-simmons module into 3x->4x acceptance suite", "timeSpent": "PT0S", "updated": "2016-12-09T16:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "nate can you add some more comments or just do the work? seems like it's easy.\n", "created": "2015-05-20T11:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Verified that with the changes made that the tests now run a Puppet 4.x agent on the master against the master itself.  See Jenkins job which passed at:\n\nhttps://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_no-conditional_puppet3-compat_master/4/\n\nI think we've met all we intended to do with this ticket.  Will move to \"testing\" to confirm, but, [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], I think we're good to close this one out.  Agree?", "created": "2015-05-22T12:37:00.000000"}], "components": ["Puppet Server"], "created": "2015-05-15T15:29:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c3a0b28"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzy13:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found because of 3.x - 4.x compat testing."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_67670584_*|*_1_*:*_1_*:*_416888500_*|*_10007_*:*_1_*:*_3102162_*|*_3_*:*_1_*:*_14275031_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_896012_*|*_10005_*:*_1_*:*_92546386"}], "description": "We should also test 4x->4x in the puppet 3x->4x acceptance tests.  This would be a simple change to the test and should give us big enough bang for the buck.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15185", "fixedVersions": ["SERVER 2.1.0"], "id": "15185", "issueType": "Task", "key": "SERVER-649", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Done", "resolutionDate": "2015-05-22T12:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Additionally test 4x->4x in puppet 3 compatibility acceptance tests", "timeSpent": "PT0S", "updated": "2015-05-29T12:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This has been merged to the master branch and is passing all acceptance tests on all platforms.\n\nNew Puppet 3.x Agent Compatibility Suite:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_puppet3-compat_master/3/\n\nLegacy Puppet Acceptance Suite:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-master/44/\n\nMoving to \"testing\" column.", "created": "2015-05-22T11:34:00.000000"}], "components": [], "created": "2015-05-15T13:57:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@366d4b30"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0lz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Part of deciding to do server 2.1 release sooner"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_157593456_*|*_1_*:*_1_*:*_39397_*|*_10007_*:*_1_*:*_63619_*|*_3_*:*_1_*:*_172318981_*|*_5_*:*_1_*:*_42676270708_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1365315_*|*_10006_*:*_1_*:*_266212014"}], "description": "Following our standard branching process, we need to merge code changes from the 2.1.x branch back to the master branch.  I created a ticket for this one b/c I think the next merge-up will involve a fair amount of conflict resolution.\n\nThe current PR up for merging stable to master - https://github.com/puppetlabs/puppet-server/pull/540 - would update the master branch to using comidi rather than compojure for routing.  We should let that PR land ahead of the work to be done for this ticket.  In the process or merging 2.1.x back to master, we'll need to convert the new legacy routes service to using comidi for its routes so that we'll be consistently handling the HTTP metrics that we need to be able to collect per the usage of these routes.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15184", "fixedVersions": [], "id": "15184", "issueType": "Task", "key": "SERVER-648", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-05-22T11:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge 2.1.x code changes to master", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "I'm running into this trying to get the unit tests passing on the master branch of pe-puppet-server-extensions\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Do you think I should pull this ticket and implement the fix Ruth describes in the description, or keep these two issues separate and implement something else specific to pe-puppet-server-extensions to get the specs passing?", "created": "2015-05-18T18:27:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] I'm +1 on pulling this into the current sprint and targeting at the master branch.  Was hoping to get it in ahead of the Puppet Server 2.1 release anyway.", "created": "2015-05-18T18:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] FYI the only error I'm seeing with the unit tests in pe-puppet-server-extensions at this point is this issue.  The only other error was the stub implementation of {{retrieve-ca-cert!}} which has been implemented in my [topic branch|https://github.com/jeffmccune/pe-puppet-server-extensions/tree/t/master/PE-9716_pe_aio]  This issue is causing 4 failures in the unit tests.", "created": "2015-05-18T18:31:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Blocks PE-9716 on unit test failures in my [pe-puppet-server-extensions topic branch|https://github.com/jeffmccune/pe-puppet-server-extensions/tree/t/master/PE-9716_pe_aio].", "created": "2015-05-19T12:26:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Relates to SERVER-648 in that this problem is causing failures in master and making it difficult for [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] to validate his merge-up topic branch into master.", "created": "2015-05-19T12:27:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Latest full acceptance test run with this change in place on the master branch was green:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_full-master/298/\n\nAlso functionally tested this locally from the master branch - just enough to see that if the {{master-code-dir}}, {{master-run-dir}}, and {{master-log-dir}} were commented out in my puppetserver config that the server could still be started.", "created": "2015-05-22T11:01:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This was functionally reviewed by [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]", "created": "2015-05-22T12:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "> This was functionally reviewed by Jeremy Barlow\n\n[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], does this mean I should close it out if I'm happy with it?", "created": "2015-05-22T12:10:00.000000"}], "components": ["Puppet Server"], "created": "2015-05-15T13:27:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52ea4d17"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzvbz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Ruth said we had to fix it."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_173120375_*|*_1_*:*_1_*:*_249510739_*|*_10007_*:*_1_*:*_76366427_*|*_3_*:*_1_*:*_4682682_*|*_5_*:*_1_*:*_1051934740_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_4166902_*|*_10006_*:*_1_*:*_92322684"}], "description": "The example config says that the {{master-code-dir}}, {{master-run-dir}}, and {{master-log-dir}} settings are optional and will be pulled in from puppet's defaults if not specified (https://github.com/puppetlabs/puppet-server/blob/master/dev/puppet-server.conf.sample#L51-L64), but this does not seem to be the case. Running Puppet Server off of master (specifically I was running in the repl), if you don't specify these options, you get a schema error:\n\n{code}\n2015-05-15 12:25:57,673 ERROR [p.t.internal] Error during service init!!!\nclojure.lang.ExceptionInfo: Output of initialize-config does not match schema: {:master-code-dir missing-required-key, :master-log-dir missing-required-key, :master-run-dir missing-required-key}\n        at puppetlabs.services.jruby.jruby_puppet_core$eval34199$initialize_config__34200.invoke(jruby_puppet_core.clj:84) ~[na:na]\n{code}\n\nThese settings need to be added to the {{initialize-config}} function (https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/services/jruby/jruby_puppet_core.clj#L99) so that we pull them in from puppet if they are not specified in puppet server's config.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17035", "fixedVersions": ["SERVER 2.1.0"], "id": "17035", "issueType": "Bug", "key": "SERVER-647", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-05-22T12:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "master-{code, run, log}-dir settings should be optional", "timeSpent": "PT0S", "updated": "2023-02-07T15:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] we need to chat about this ticket w/rt proxying before SG release.  Next time either [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] or myself get some face time w/you can we make sure to discuss?", "created": "2015-05-18T10:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR merged to stable branch at f6a22010b70250671b000427142bb81a0c9c090d.\n\nSubsequent full Jenkins test pipeline passed, including the FOSS #25 stable job:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-stable/11/\n\nMoving to \"testing\".", "created": "2015-06-10T14:00:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Tested a few puts while setting text/pson", "created": "2015-06-12T12:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Retested in puppet-enterprise-4.0.0-rc5-73-g5a11bdd-el-6-x86_64 with 2.1.0.SNAPSHOT.2015.06.19T1613.  Need to doublecheck with team that this is the correct version, I was expecting a 2.1.1 snapshot of puppetserver.\n\nAdditionally, filing a bug that we can send puts while setting -H \"Content-Type: text/pson", "created": "2015-06-24T11:03:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] - that build should be fine, it looks like we applied this patch to ALL THE BRANCHES.", "created": "2015-06-24T11:08:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Thank you!  This can be closed as Resolved.", "created": "2015-06-24T12:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote} one of the things that I think we might want to do is wrap the trapperkeeper-authorization middleware around the reverse-proxy-ca Ring handler. If we did convince ourselves later on that we didn't absolutely need to have support for delegated user authentication when reverse-proxying, this would at least give users control over what clients we trust enough to reverse-proxy their requests. I think that part would be a very small amount of work to do, maybe even a single story point. {quote}\n\nthat sounds sane\n\n{quote}The CA is not directly accessible from the nodes due to cross-datacenter firewalling, but his deprovisioning step involves the nodes cleaning their own certs.{quote}\n\nAh, right.  Well I still don't think we can reasonably tackle this right now, and if it's a high priority post-auth.conf, then we can try to pick it up shortly thereafter, but it seems unreasonable to try to lump it in with this batch of work.\n", "created": "2015-08-27T14:40:00.000000"}, {"author": "623c12047910a200718b9434", "body": "Hi Guys,\n\nI appreciate that there's security concerns with proxying to the certificate_status endpoint and therefore it was removed.  So, now that I know its just not there, I've been thinking about other ways to do what I need to do and was hoping you could comment on the feasibility.\n\nThe Objective:\nTo cleanly decommission a server including cleaning the cert from by an action taken on the server itself.\n\nThe new idea:\nGiven that the server cant access the CA.  What about a parser function, which would execute on the compile master which does have access to the CA, which would reinstall/decommission the server by:\n  - Clean the cert (revoke and delete) via the certificate_status API\n  - Deactivate the node in PuppetDB (preferably, or at least run resort to an empty manifest which removes all the exported resources)\n  - Delete/reinstall the node in Razor.\n\nThe manifest would then Shutdown/Reboot the machine.\n\nMy only concern is, that from my testing in 3.8.0 using the certificate_status endpoint was that 'serverA' using ServerA's certificates to authenticate, cannot manipulate ServerB's certificates.  Does this sound right? Is there a way around it?\n\nThanks,\nChris", "created": "2015-08-28T05:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c12047910a200718b9434] I think that would work", "created": "2015-08-28T06:51:00.000000"}, {"author": "623c12047910a200718b9434", "body": "So I got this working, I'm actually pretty happy with the process.  I have the module here you can check out if you like:\n\nhttps://github.com/ChrisPortman/puppet-decom\n\nThanks,\nChris", "created": "2015-09-09T16:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c12047910a200718b9434] I checked out the code", "created": "2015-09-09T21:23:00.000000"}], "components": [], "created": "2015-05-14T18:06:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@bd9b514"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoqxr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Critical for UI use of the certificate_status endpoint in Shallow Gravy"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_319032553_*|*_10007_*:*_1_*:*_173377558_*|*_3_*:*_1_*:*_7240217_*|*_5_*:*_1_*:*_39823350951_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1204114941_*|*_10005_*:*_1_*:*_1818400088"}], "description": "A PUT request to {{/certificate_status(es)}} with a Content-Type header which includes a charset - e.g. {{text/pson; charset=UTF-8}} will get an HTTP 415 - even if the media type and charset are both valid.\n\nThis is due to a bug in the liberator resources which define {{:known-content-type?}} in such a way that it cannot have a charset.  Instead, the charset should probably just be ignored when validating the Content-Type header.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15183", "fixedVersions": ["SERVER 1.1.1", "SERVER 2.1.1"], "id": "15183", "issueType": "Bug", "key": "SERVER-646", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2015-06-24T12:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "/certificate_status(es) implementation is too strict about Content-Type", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2015-05-14T10:48:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dbd101d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywu1b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "PR review"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_23178_*|*_10007_*:*_1_*:*_472031548_*|*_3_*:*_1_*:*_6983_*|*_10009_*:*_1_*:*_36642486_*|*_5_*:*_1_*:*_42755010444_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_107933681"}], "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "14954", "fixedVersions": ["None"], "id": "14954", "issueType": "Task", "key": "SERVER-645", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Done", "resolutionDate": "2015-05-21T14:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dev-environment Have beaker install puppet", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-05-13T17:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d78d002"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw9z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1713339942_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_97790288"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.1.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17591", "fixedVersions": [], "id": "17591", "issueType": "Sub-task", "key": "SERVER-644", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-03T16:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2015-06-03T16:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Done by [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]", "created": "2015-06-02T14:54:00.000000"}], "components": [], "created": "2015-05-13T17:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37e1ef87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw9r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1713374402_*|*_5_*:*_1_*:*_41223373075_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6034696"}], "description": "Update dujour to notify users to use 2.1.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17317", "fixedVersions": [], "id": "17317", "issueType": "Sub-task", "key": "SERVER-643", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T14:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.1.0", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Sent to puppet-{users,dev,announce}", "created": "2015-06-03T15:00:00.000000"}], "components": [], "created": "2015-05-13T17:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b06896b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw9j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1713430651_*|*_3_*:*_1_*:*_3187893_*|*_5_*:*_1_*:*_41136562514_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_89626811"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17034", "fixedVersions": [], "id": "17034", "issueType": "Sub-task", "key": "SERVER-642", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-03T15:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "Done.", "created": "2015-06-02T15:39:00.000000"}], "components": [], "created": "2015-05-13T17:15:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@35573776"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw9b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1722236909_*|*_5_*:*_1_*:*_41220640327_*|*_6_*:*_1_*:*_0"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16621", "fixedVersions": [], "id": "16621", "issueType": "Sub-task", "key": "SERVER-641", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T15:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-05-13T17:14:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c1fa27"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw93:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1711619923_*|*_3_*:*_1_*:*_1411061_*|*_5_*:*_1_*:*_41229892143_*|*_6_*:*_1_*:*_0"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16446", "fixedVersions": [], "id": "16446", "issueType": "Sub-task", "key": "SERVER-640", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T13:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-05-13T17:14:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@cf7b04f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1711621502_*|*_5_*:*_1_*:*_41231344715_*|*_6_*:*_1_*:*_0"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16133", "fixedVersions": [], "id": "16133", "issueType": "Sub-task", "key": "SERVER-639", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T12:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Received yes votes from [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:623c08e1562ab90069f8aed4] and [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314]", "created": "2015-06-02T12:28:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "And [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]!", "created": "2015-06-02T12:34:00.000000"}], "components": [], "created": "2015-05-13T17:13:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ed2a8b1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw8n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1710936377_*|*_5_*:*_1_*:*_41232078321_*|*_6_*:*_1_*:*_0"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15557", "fixedVersions": [], "id": "15557", "issueType": "Sub-task", "key": "SERVER-638", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T12:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Results from testing Debian 7 Wheezy with 2.1.0: \ud83d\udc4d\n\nDebian 7 smoke test procedure follows:\n\nGot a VM:\n\n{code}\ncurl -d --url vmpooler.delivery.puppetlabs.net/vm/debian-7-x86_64\n{code}\n\nLogged into the VM as root.\n\nConfigured PC1 as per https://puppetlabs.com/blog/welcome-puppet-collections\n\n{code}\ncurl -O http://apt.puppetlabs.com/puppetlabs-release-pc1-wheezy.deb ", "created": "2015-06-01T18:23:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "I installed puppet server from packages on Centos6 and Centos7 and it started up fine. I then installed the puppetdb module and set it up in the manifest. After a successful agent run I queried the /v3/nodes endpoint and the system's node info was in there. No smoke escaped!\n", "created": "2015-06-01T18:26:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Results from smoke testing Ubuntu 14.04:\n\nUbuntu 14.04\n\nMake it easier to reproduce this process for different versions via copy-pasta.\n\n{code}\n$ export VERSION=2.1.0\n{code}\n\nGet a VM:\n\n{code}\n$ curl -d --url vmpooler/vm/ubuntu-1404-x86_64\n{\n  \"ok\": true,\n  \"ubuntu-1404-x86_64\": {\n    \"ok\": true,\n    \"hostname\": \"u1t07uoim75xa22\"\n  },\n  \"domain\": \"delivery.puppetlabs.net\"\n}\n{code}\n\nLog into the VM as root.\n\nConfigure the 2.1.0 repository:\n\n{code}\nroot@u1t07uoim75xa22:~# (cd /etc/apt/sources.list.d", "created": "2015-06-01T18:57:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I had done Debian 7 as well, (y)\n\nSteps:\n\n1) Installed puppet-agent 1.1.0 from PC1 repo.\n2) Installed puppetserver 2.1.0 from builds.puppetlabs.lan.\n3) Started puppetserver.\n4) Did a puppet agent run, observed was successful.\n5) Put a global notify resource in the site.pp for the production environment.\n6) Did another puppet agent run, observed that the notify appeared in the agent output.\n7) Installed / configured PuppetDB into the puppetserver configuration.\n8) Did another puppet agent run.  Confirmed from log output and from a REST query to the v3/nodes endpoint that the agent was delivering a report to PuppetDB which looked reasonable.\n9) Started over from a clean machine.\n10) Installed puppet-agent 1.0.0 from PC1 repo.\n11) Installed puppetserver 2.0.0 from PC1 repo.\n12) Started puppetserver.\n13) Did an agent run, confirmed that the run was successful.\n14) Configured the puppetserver 2.1.0 repo from builds.puppetlabs.lan.\n15) Upgraded puppetserver to 2.1.0 and restarted puppetserver.\n16) Did another agent run, confirmed that the run was successful.", "created": "2015-06-02T09:58:00.000000"}], "components": [], "created": "2015-05-13T17:12:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44a8db3b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw8f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1648818420_*|*_3_*:*_1_*:*_56193314_*|*_5_*:*_1_*:*_41238025517_*|*_6_*:*_1_*:*_0"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14952", "fixedVersions": [], "id": "14952", "issueType": "Sub-task", "key": "SERVER-637", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T10:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "This was done automatically by ezbake", "created": "2015-06-02T11:53:00.000000"}], "components": [], "created": "2015-05-13T17:12:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@dbbdf10"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw87:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1708855268_*|*_5_*:*_1_*:*_41234235709_*|*_6_*:*_1_*:*_0"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17316", "fixedVersions": [], "id": "17316", "issueType": "Sub-task", "key": "SERVER-636", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T11:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "[~accountid:623c08e1562ab90069f8aed4] here's the ticket bucketing you were asking about:\n\nh3. 3.x Agent Compatibility\n\nThis one of the main features of this release. This work allows Puppet 3.x agents to work with this release of Puppet server. A document describing how to properly configure Puppet 3.x agents and other gotchas is located at https://github.com/puppetlabs/puppet-server/blob/master/documentation/compatibility_with_puppet_agent.markdown\n\n[SERVER-545] - Beaker infrastructure for testing 3.x->4.x compatibility\n[SERVER-546] - Acceptance test(s) for 3.x->4.x compatibility\n[SERVER-547] - Implement 3.x->4.x compatibility service\n[SERVER-548] - Add header support to 3.x->4.x compatibility service\n[SERVER-649] - Additionally test 4x->4x in compatibility \n\nh3. Expose http-client timeouts config\n\nAllows a user to set the amount of a time an outgoing HTTP request will wait before failing. Tweaking these values is generally needed if the network connection between Puppet server and Puppet DB is slow or unreliable.\n\n[SERVER-449] - Expose http-client timeouts from Puppet Server\n[SERVER-513] - Bump to tk-jetty9 1.3.0 and changes to shutdown-timeout-seconds and max-threads defaults\n\nh3. New JRuby Pool features \n\nThis feature was ported over from the Puppet server 1.1 development work. See SERVER-669. \n\n[SERVER-246] - Add :borrow-timeout config option\n[SERVER-324] - Allow `environment-cache` to take an environment as an argument.\n[SERVER-325] - add setting to flush jruby instances after a configurable number of requests\n[SERVER-389] - Increase JRuby pool default-borrow-timeout\n[SERVER-391] - Improve error message for JRuby pool borrow timeout\n[SERVER-408] - Expose configurable `borrow-timeout` to allow JRuby pool borrows to timeout\n[SERVER-448] - Change default max-active-instances to not exceed 4 JRubies\n\nh3. Maintenance / Small Improvements\n\n[SERVER-380] - Upgrade Jetty to 9.2.x\n[SERVER-437] - Upgrade stable branch to jvm-ssl-utils 0.8.0\n[SERVER-517] - Re-raise HttpClientExceptions as Ruby SocketError from http-client handler\n[SERVER-518] - Update group-id and artifact-id for version checks\n[SERVER-530] - Merge up stable branch from 1.0.8 release commit to 2.1 branch\n[SERVER-544] - don't read two copies of the request body in for JRuby requests\n[SERVER-598] - port Puppet Server to use comidi for web routes\n[SERVER-599] - long-running memory test that covers latest JRuby changes in stable\n[SERVER-614] - set_connect_timeout_milliseconds error when sending report to PuppetDB\n[SERVER-680] - Upgrade to JRuby 1.7.20\n\nh3. Docs Updates\n\n[SERVER-319] - Document HTTP access log\n[SERVER-379] - Tuning guide for JRubies, Heap size, etc.\n\nh3. Misc Bug Fixes\n\n[SERVER-157] - Utilize keylength puppet conf value for generating SSL cert keys\n[SERVER-273] - Upgrade to JRuby 1.7.19 / fix for jruby-pool DELETE memory leak\n[SERVER-345] - Fixup usages of cacert / localcacert in master\n[SERVER-404] - Properly create /var/run/puppetserver dir at service startup\n[SERVER-442] - fact syncs hidden folders (ie. .svn)\n[SERVER-535] - \ud83d\ude4a\u26d4\u33d2\ud83d\ude37 transient IllegalStateException / WP violation in jruby-service-test\n[SERVER-541] - Updating rpm package shows 'debug' statements.\n[SERVER-564] - documented /puppet/v3/status API returns \"Not Found\"\n[SERVER-647] - master-{code, run, log}-dir settings should be optional\n[SERVER-657] - 'puppetserver foreground' is broken on Ubuntu\n[SERVER-655] - Server fails loading bouncycastle with upgrade to JRuby 1.7.20\n[SERVER-659] - Restore broken http client timeout settings\n[SERVER-682] - Default logback.xml file doesn't include `scan` option\n[SERVER-683] - The legacy router relies on the master-service route to determine its pathing.\n[SERVER-684] - Append \"source_permissions=use\" to 3.x file_metadata requests\n[SERVER-685] - Investigate environment_scenario test failures", "created": "2015-05-29T15:22:00.000000"}, {"author": "557058:8f1e0495-1d4a-4123-bbad-727b7f49f370", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] PR is up. I used a mix of [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314]'s notes here and some of the same descriptions from shared 2.1 tickets, then filled in on a few others. A lot more tickets here, so I didn't go in great depth on every item, but if you think something needs a better call-out, let me know.", "created": "2015-06-01T19:00:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Someone merged this! ", "created": "2015-06-02T15:39:00.000000"}], "components": [], "created": "2015-05-13T17:11:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e9cc6ab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw7z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1623221539_*|*_10007_*:*_1_*:*_74461638_*|*_3_*:*_1_*:*_24778755_*|*_5_*:*_1_*:*_41220662393_*|*_6_*:*_1_*:*_0"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16620", "fixedVersions": [], "id": "16620", "issueType": "Sub-task", "key": "SERVER-635", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T15:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-05-13T17:10:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fab3193"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw7r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1705457261_*|*_5_*:*_1_*:*_41237694838_*|*_6_*:*_1_*:*_0"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16130", "fixedVersions": [], "id": "16130", "issueType": "Sub-task", "key": "SERVER-634", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T10:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This ticket isn't relevant for how we're managing the Puppet Server branches right now. We're only merging up from stable to master, not the other direction, since master is currently for 2.x and stable is currently for 1.x. So, closing.", "created": "2015-05-27T18:42:00.000000"}], "components": [], "created": "2015-05-13T17:09:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3bc3c011"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw7j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1215155022_*|*_5_*:*_1_*:*_42220342239_*|*_6_*:*_1_*:*_0"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15555", "fixedVersions": [], "id": "15555", "issueType": "Sub-task", "key": "SERVER-633", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2015-05-27T18:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-09-27T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-05-13T17:09:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f59914f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw7b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1705517098_*|*_5_*:*_1_*:*_41237740581_*|*_6_*:*_1_*:*_0"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14949", "fixedVersions": [], "id": "14949", "issueType": "Sub-task", "key": "SERVER-632", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T10:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-05-13T17:08:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4aed07ae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw73:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1200853417_*|*_3_*:*_1_*:*_504509261_*|*_5_*:*_1_*:*_41237931226_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release) There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17314", "fixedVersions": [], "id": "17314", "issueType": "Sub-task", "key": "SERVER-631", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T10:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-05-13T17:07:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@bc1b43b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw6v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1200880283_*|*_3_*:*_1_*:*_504523741_*|*_5_*:*_1_*:*_41237926155_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release). There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16619", "fixedVersions": [], "id": "16619", "issueType": "Sub-task", "key": "SERVER-630", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T10:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2015-05-13T17:07:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ad38593"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw6n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1200907662_*|*_3_*:*_1_*:*_504536869_*|*_5_*:*_1_*:*_41237920146_*|*_6_*:*_1_*:*_0"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.1.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16128", "fixedVersions": [], "id": "16128", "issueType": "Sub-task", "key": "SERVER-629", "labels": [], "originalEstimate": "PT0S", "parent": "15553", "parentSummary": "puppetserver 2.1.0 2015-05-26 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-02T10:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0cbf1c7f6a007049e5b9", "attachments": [], "comments": [], "components": [], "created": "2015-05-13T17:06:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ea49c3e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyosif:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1187897832_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_623918353"}], "description": "puppetserver 2.1.0 2015-05-26 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15553", "fixedVersions": [], "id": "15553", "issueType": "Task", "key": "SERVER-628", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-06-03T16:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.1.0 2015-05-26 Release", "timeSpent": "PT0S", "updated": "2015-06-17T10:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Linked tickets have all been marked as resolved and the 2.1 pipeline is up and running - with all tests passing against all functionality (new and previous).  Closing this one out...", "created": "2015-05-22T13:20:00.000000"}], "components": [], "created": "2015-05-13T15:59:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25882374"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzw2v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_768073036_*|*_5_*:*_1_*:*_42671291480_*|*_6_*:*_1_*:*_0"}], "description": "Similar to SERVER-586, there is new information (QENG-2385, [puppet-server email discussion|https://groups.google.com/a/puppetlabs.com/d/msg/puppet-server/WbETAR6e4Vo/cBnrtkYnJeEJ]) that came up this past sprint that leads us to believe the 2.1.x branch is not running all of the supported platform we're planning to ship for 2.1.0.\n\nThis ticket captures the work necessary to work with QE and RE in order to get the 2.1.x CI pipeline in shape ahead of the 2.1.0 release.\n\nNOTE:  As part of this ticket, we need to validate the LAYOUT axis in the CI Job is correct relative to the planned 2.1.0 official release.  We need to validate unsupported platforms are not included and all supported platforms are included.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17311", "fixedVersions": [], "id": "17311", "issueType": "Task", "key": "SERVER-627", "labels": ["ci", "jenkins"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-05-22T13:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Work with QE / RE to get the 2.1.x branch ready for 2.1.0 release", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA on the puppetserver team has abandoned test rail because it doesn't serve the purposes of anyone on the puppet server team, and because it adds a substantial amount of overhead that QA can't afford.", "created": "2016-06-10T16:01:00.000000"}], "components": ["Puppet Server"], "created": "2015-05-13T15:14:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49d1e59f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z5b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1194651540_*|*_10007_*:*_1_*:*_32754980588_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_94780064"}], "description": "Document tests...  Especially acceptance tests for 3.x agent with 4.0 puppet.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16618", "fixedVersions": [], "id": "16618", "issueType": "Task", "key": "SERVER-626", "labels": ["QA"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-06-10T16:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document the Simmons Test Suite in Test Rail.", "timeSpent": "PT0S", "updated": "2016-06-20T03:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged to the master branch.  I assume [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and/or [~accountid:623c08e1562ab90069f8aed4] may want to review this later but will close out for now.", "created": "2015-05-27T12:23:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "yup yup. ", "created": "2015-06-01T17:28:00.000000"}], "components": [], "created": "2015-05-13T14:46:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12ac9dd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotdb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_763171087_*|*_10007_*:*_1_*:*_418431284_*|*_3_*:*_1_*:*_19331099_*|*_10009_*:*_1_*:*_95309_*|*_5_*:*_1_*:*_42242876489_*|*_6_*:*_1_*:*_0"}], "description": "We should put at least an overview doc together for the work that we're doing to support Puppet 3.x agent compatibility in Puppet Server 2.1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17588", "fixedVersions": [], "id": "17588", "issueType": "Task", "key": "SERVER-625", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-05-27T12:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs for Puppet Server 2.1 / Puppet 3.x agent compatibility", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "\"Consider\" because there is some unit testing that covers this, and because we might test this under gatling in which case this might not be tracked in this ticket.", "created": "2015-05-13T12:16:00.000000"}], "components": [], "created": "2015-05-13T12:12:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1385ff62"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzvsf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10140_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_49786695945"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17586", "fixedVersions": [], "id": "17586", "issueType": "Task", "key": "SERVER-624", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider creating an automated acceptance test to validate max-requests-per-instance", "timeSpent": "PT0S", "updated": "2016-12-09T16:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Went through CI and nothing blew up.  Closing since there's nothing additional to QA.", "created": "2015-05-18T16:37:00.000000"}], "components": [], "created": "2015-05-13T10:54:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59dc850a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzvq7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found problems in CI w/ master & 2.1.x packages"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_452561630_*|*_5_*:*_1_*:*_43005316037_*|*_6_*:*_1_*:*_0"}], "description": "In an attempt to mitigate CI pipeline race conditions, we should append the name of the branch to the project's version in the project.clj file.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15552", "fixedVersions": [], "id": "15552", "issueType": "Improvement", "key": "SERVER-623", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2015-05-18T16:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Attach branch name to project version string", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-05-12T18:12:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61d7f7b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z33:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_2113528090_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_25768659248_*|*_10005_*:*_1_*:*_154922357192"}], "description": "This ticket comes from a conversation that took place in https://github.com/puppetlabs/pe-puppet-server-extensions/pull/194 for PE-8646.\n\nThe work done for PE-8646 changes the names of the HTTP endpoint metrics that Puppet Server publishes, e.g., from names like {{puppetlabs.myserver.http.catalog-requests}} to {{puppetlabs.myserver.http.:environment-catalog-:node-requests}}.  Any users that had built up any workflows that mined out the HTTP endpoint metrics by exact names could be broken by these changes.\n\nIn our documentation about the names, we explicitly stated that this could happen.  From https://docs.puppetlabs.com/pe/latest/puppet_server_metrics.html#available-metrics:\n\n{quote}Please note that the namespaces of these metrics may change in future releases.{quote}\n\nWe haven't, however, established what (if any) guarantees we might eventually want to make about metric names as API.  This ticket was created to cover that discussion and work that may come out of that.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] mentioned that PuppetDB probably has some prior art on this that we probably want to reference for this discussion.\n", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "14943", "fixedVersions": [], "id": "14943", "issueType": "Task", "key": "SERVER-1241", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2021-02-25T12:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Metric name API compatibility for Puppet Server", "timeSpent": "PT0S", "updated": "2021-02-25T12:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Is this ticket still relevant now that we've switched to comidi?", "created": "2015-07-23T11:23:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] I don't think this is relevant anymore.  For the {{master-service}}, we ended up switching to the approach of constructing the handler and just passing a reference to the handler var in the call to {{add-ring-handler}} anyway.  I think we did that around the time we were doing some refactoring related to the {{legacy-routes-service}}.  [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] might recall more details there.\n\nFor the {{certificate-authority-service}}, though, we're still using the approach of defining the handler in line as part of the call to {{add-ring-handler}}.  From https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.1.1/src/clj/puppetlabs/services/ca/certificate_authority_service.clj#L20-L25:\n\n{code:clojure}\n (add-ring-handler\n       this\n       (-> (core/web-routes settings)\n           (#(comidi/context path %))\n           comidi/routes->handler\n           (core/wrap-middleware puppet-version))))\n{code}\n\nI instrumented behind each of the threaded calls made to create the handler result and confirmed that they are each only made once - and not once per request handled like we were getting with our compojure / ring-handler creation earlier.\n\nSo I'm good with just closing this issue out.\n\n", "created": "2015-07-23T12:04:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "cool, thanks man.", "created": "2015-07-23T12:37:00.000000"}], "components": [], "created": "2015-05-12T17:49:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ea6c105"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqnr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_492062008_*|*_5_*:*_1_*:*_7952911118_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5708089570"}], "description": "In Puppet Server code, I noticed that we do this in master_service.clj...\n\n{code:clojure}\n(add-ring-handler this\n  (compojure/context path [] (core/build-ring-handler handle-request))\n  {:route-id :master-routes})\n{code}\n\n... where {{build-ring-handler}} returns \"compojure/routes\" wrapped with middleware as desired.  I haven't really looked into what the compojure macros expand into but it seems like it might be more efficient to do this...\n\n{code:clojure}\n(let [handler (compojure/context path []\n   (core/build-ring-handler handle-request))\n   {:route-id :master-routes})]\n  (add-ring-handler this handler)\n{code}\n\n...so that the logic in {{build-ring-handler}} is executed only once - not for every web request that is handled.\n\nNote that the same approach is currently being used for the {{certificate-authority-service}} route registration.\n\nMaybe there was a reason we did it this way to begin with - or maybe the overhead involved in re-executing {{build-ring-handler}} beyond the first call isn't significant (given compilation to byte code on the first pass, etc.).\n\nThrowing this ticket to consider making the suggested change above as an optimization at some point if it makes sense.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15551", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "15551", "issueType": "Improvement", "key": "SERVER-621", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Cannot Reproduce", "resolutionDate": "2015-07-23T12:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fully construct ring handler before registering with the web server", "timeSpent": "PT0S", "updated": "2016-01-19T07:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "(Assuming this ticket is accepted), I expect this ticket to hang out in our backlog for a long time, until we have time to go deep after memory leak issues.", "created": "2015-05-12T12:55:00.000000"}], "components": [], "created": "2015-05-12T12:54:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f125f1c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xcn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_508940861_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_49361655074"}], "description": "As a test engineer, I want to create a badly behaved module that leaks memory so that we can make puppet server more resilient in the face of poor quality modules.\n\nI want the rate of memory leak to be configurable.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16617", "fixedVersions": [], "id": "16617", "issueType": "Task", "key": "SERVER-620", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Memory Leak Module", "timeSpent": "PT0S", "updated": "2016-12-09T16:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f].  Please correct anything I've got wrong here.  I expect once we've described this ticket, it will be accepted and hangout in the backlog until our forests burn less often.", "created": "2015-05-12T12:52:00.000000"}], "components": [], "created": "2015-05-12T12:50:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52f24151"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xcf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_509175364_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_49361656415"}], "description": "As an engineer, I want to be able to diff many different (snapshots|heapdump) so that we can more easily profile, identify and troubleshoot memory leaks.\n\nyourkit only provides the ablity to diff two snapshots.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16127", "fixedVersions": [], "id": "16127", "issueType": "Task", "key": "SERVER-619", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Identify or create tool that diffs many sequential (memory snapshots|heapdumps) similar to yourkit", "timeSpent": "PT0S", "updated": "2016-12-09T16:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-05-12T03:09:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@21baa4af"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z5r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_544264685_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_49361382216"}], "description": "When the status service comes into a Puppet Server release, we need to make sure we bring the status API docs into the Puppet Server docs somehow.  See comment from [~accountid:623c08e1562ab90069f8aed4] on TK-213.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "17583", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "17583", "issueType": "Task", "key": "SERVER-617", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-12-09T16:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Incorporate Status Service docs into Puppet Server docs", "timeSpent": "PT0S", "updated": "2016-12-09T16:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-05-11T12:11:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4dd19049"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xbz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_171759999_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_49787712189"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17581", "fixedVersions": [], "id": "17581", "issueType": "Task", "key": "SERVER-616", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create an acceptance test to validate that hidden files are not synced", "timeSpent": "PT0S", "updated": "2016-12-09T16:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "attachments": [{"attacher": "557058:e8cffc6b-f202-4440-ad59-dedf02a3af5a", "created": "2015-05-11T11:59:00.000000", "name": "SERVER-615 Stacktrace 1.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10932"}], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:e8cffc6b-f202-4440-ad59-dedf02a3af5a] - If you have a stacktrace from Puppet Server's log that you could share here, that would be really helpful in fixing this bug.", "created": "2015-05-11T11:50:00.000000"}, {"author": "557058:e8cffc6b-f202-4440-ad59-dedf02a3af5a", "body": "I am working on doing so, I am just cleaning up the logfile output", "created": "2015-05-11T11:57:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:e8cffc6b-f202-4440-ad59-dedf02a3af5a] - Thanks for the stacktrace.  That's an interesting bug, and hopefully an easy fix.", "created": "2015-05-11T12:02:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] - This might not be easily solvable as it's blowing up inside clojure.core", "created": "2016-02-24T18:03:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I've created a PR [here|https://github.com/puppetlabs/puppet-server/pull/942] that allows an incredibly high ca_ttl and will fail at start up the ttl is put out of bounds.\n\nAllowing such a high ttl required a bit of joda.time gymnastics. I was wondering if it would be better to have a shorter ttl (say, 50 years) that used the standard clj-time constructs but kept the validation logic (and updated the documentation)?", "created": "2016-03-04T06:04:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "For those interested, the schema/Int was a red herring, it validates that the value is an integer (a whole number) not a particular data type. Our time library, clj-time, is casting inputs to Java Integers because that's what the specific joda \"Period\" classes require. That stacktrace is occurring in the clj-time cast. Directly using a generic joda.time.Period we can call a constructor that takes longs (signifying millis instead of seconds) and pass that into our time library.", "created": "2016-03-04T06:09:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] - \n\nbq. Allowing such a high ttl required a bit of joda.time gymnastics. I was wondering if it would be better to have a shorter ttl (say, 50 years) that used the standard clj-time constructs but kept the validation logic (and updated the documentation)?\n\nIf this would result in simpler/cleaner code, it sounds preferable.  50 years seems like plenty.", "created": "2016-03-04T11:19:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq.  I was wondering if it would be better to have a shorter ttl (say, 50 years) that used the standard clj-time constructs but kept the validation logic (and updated the documentation)?\n\nAre you referring to the validation logic you added in https://github.com/puppetlabs/puppet-server/pull/942 ?  If so, I agree, and I think that's the correct path forward here.  The rest of the complexity in that PR to support really large TTLs does not seem worthwhile", "created": "2016-03-04T11:23:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "I was referring to the validation I added in that PR. I've updated the PR to keep the validation step, move to enforcing a max ttl of 50 years (removing the need to deal with the underlying java time lib), and added a small bit of documentation.\n\nFor QA review, the PR provides unit tests for the validation function, but does not provide integration tests at any level.\nIs there such a thing as docs review?", "created": "2016-03-05T05:42:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This passed the full pipeline here: https://jenkins.puppetlabs.com/view/puppet-server/view/master/job/platform_puppet-server_integration-system_no-conditional_full-master/158/", "created": "2016-03-15T09:01:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "Validated using {{2.3.0.master-0.1SNAPSHOT.2016.03.16T0326.}} on RHEL-7\n\nh3. Exceeding allowed ttl\nSetting the {{ca_ttl}} value to {{60y}} in {{puppet.conf}} throws an exception when trying to restart {{puppetserver}}\n{code}\n[root@rxago6dpaxpy69h ~]# service puppetserver restart\nRedirecting to /bin/systemctl restart  puppetserver.service\nJob for puppetserver.service failed. See 'systemctl status puppetserver.service' and 'journalctl -xn' for details.\n{code}\n\nThe stacktrace response from {{systemctl status puppetserver.service}} and {{journalctl -xn}} do not include enough detail to determine the cause.\n\nThe {{puppetserver.log}} file includes the specific cause of the failure\n{code}\n2016-03-16 09:03:50,537 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Config setting ca_ttl must have a value below 1576800000\n{code}\n\nAs suggested by [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e], using {{journalctl -u puppetserver.service}} reveals the error. Ticketed for Docs at DOC-2613.\n{code}\n[root@rxago6dpaxpy69h ~]# journalctl -u puppetserver.service\n-- Logs begin at Wed 2016-03-16 08:16:51 PDT, end at Wed 2016-03-16 09:15:59 PDT. --\nMar 16 09:02:13 rxago6dpaxpy69h systemd[1]: Starting puppetserver Service...\nMar 16 09:02:13 rxago6dpaxpy69h java[3040]: OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m", "created": "2016-03-16T11:52:00.000000"}], "components": ["Certificate Authority"], "created": "2015-05-11T11:47:00.000000", "creator": "557058:e8cffc6b-f202-4440-ad59-dedf02a3af5a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62da1643"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynke7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Had time for additional low hanging fruit while on-boarding"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_76664874_*|*_1_*:*_1_*:*_173153434_*|*_10007_*:*_1_*:*_881407498_*|*_5_*:*_1_*:*_5546906947_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_96371686_*|*_10005_*:*_1_*:*_25556683393"}], "description": "pe-puppetserver refuses to sign certificates if the cattl is above 2147483647 seconds. This seems to be due to the schema/Int restriction not allowing variables to be set.\n\n", "environment": "CentOS 6.6", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15550", "fixedVersions": ["SERVER 2.4.0"], "id": "15550", "issueType": "Bug", "key": "SERVER-615", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e8cffc6b-f202-4440-ad59-dedf02a3af5a", "resolution": "Fixed", "resolutionDate": "2016-03-16T11:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bug in pe-puppetserver if CA expire time is set too high.", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I did some adhoc functional testing of these changes to ensure that the timeouts were behaving the way I'd expect them to.  For that, I registered an HTTP report processor via my Puppet Server's puppet.conf.  I configured {{connect-timeout-milliseconds}} and {{idle-timeout-milliseconds}} values in the Puppet Server's {{http-client}} config section.  I did a few agent runs with that configuration, varying the configuration to prove that:\n\n1) Report failed after the configured {{connect-timeout-milliseconds}} when the server could not be reached.\n\n2) Report failed after the configured {{idle-timeout-milliseconds}} when the server held the connection open and didn't respond with any data.\n\n3) Report succeeded when the server responded properly within the configured timeout intervals.\n\n4) Report succeeded when the server responded properly and no timeouts were configured.", "created": "2015-05-08T13:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "These changes have been in the 2.1.x branch, later merged to the master branch, and passing for some time in CI:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-2.1.x/88/\n\nThe connect_timeout functionality had since been broken on the stable and master branches, however.  A separate ticket, SERVER-659, was created to track the fix for the new problem.\n\nMoving this ticket to \"testing\", although it may not make sense to validate this until the PR for SERVER-659 lands and is merged up to the master branch.", "created": "2015-05-22T01:07:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Resolving without additional functional review:\n1.  JB performed some FR on 5.8 above.\n2.  There are now additional unit tests that should catch problems with these settings that were created as part of SERVER-659.\n", "created": "2015-05-27T14:46:00.000000"}], "components": [], "created": "2015-05-08T10:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@db61dbe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotd3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found this as a consequence of merging up changes from Puppet Server 1.0.8, critical to fix before Puppet Server 2.1 release."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_554380478_*|*_1_*:*_1_*:*_29652_*|*_10007_*:*_1_*:*_610851955_*|*_3_*:*_1_*:*_10686044_*|*_5_*:*_1_*:*_42234337463_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_481121522"}], "description": "On latest Puppet Server master and 2.1.x branch builds, if an extension point is registered with Puppet Server which involves the master having to make an HTTP client call, the call will fail due to being unable to resolve the {{setConnectTimeoutMilliseconds}} method on the {{RequestOptions}} class from puppetlabs/http-client.\n\n[~accountid:557058:22d0f8be-5a48-45ef-8078-6e91e5c34720] and [~accountid:557058:18109e62-1b97-4fa3-8217-9c25de3a4710] encountered this when doing some PuppetDB integration testing with Puppet Server, seeing the following error from the master log:\n\n{noformat}\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to submit 'replace facts' command for localhost.delivery.puppetlabs.net to PuppetDB at localhost:808\n1: undefined method `set_connect_timeout_milliseconds' for #<Java::ComPuppetlabsHttpClient::RequestOptions:0xc24be04>\n{noformat}\n\n{{setConnectTimeoutMilliseconds}} and {{setSocketTimeoutMilliseconds}} don't exist on the {{RequestOptions}} class - only on the {{ClientOptions}} and {{SimpleRequestOptions}} classes.  We'll need to rework the Puppet Server implementation to use these at the {{ClientOptions}} level.\n\nI'm pretty sure this happened as a result of our recent merge-up of the Puppet Server 1.0.8 release to the master and 2.1.x branches.  HTTP client initialization is different between the stable and master/2.1.x branches currently.  Probably as a related but separate ticket, we should consider backporting the initialization from master/2.1.x to stable since there's no real reason for them to differ, we still have at least one more planned 1.x release to be done from the stable branch, and this might help reduce the risk of introducing problems like this in the future due to merge conflicts.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16445", "fixedVersions": [], "id": "16445", "issueType": "Bug", "key": "SERVER-614", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-05-27T14:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "set_connect_timeout_milliseconds error when sending report to PuppetDB", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "I'm reproducing this every agent run with a particular VM I have right now.\nThere doesn't appear to be anything relevant in the server logs.\n\nHere's the output from the agent:\n{code}\nError: invalid byte sequence in UTF-8\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/colors.rb:92:in `gsub'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/colors.rb:92:in `console_color'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/colors.rb:82:in `colorize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log/destinations.rb:149:in `handle'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:174:in `block in newmessage'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:173:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:173:in `newmessage'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:265:in `initialize'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:85:in `new'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:85:in `create'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/logging.rb:9:in `send_log'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/logging.rb:18:in `block (2 levels) in <module:Logging>'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/content.rb:104:in `block in insync?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/content.rb:167:in `write_temporarily'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/content.rb:103:in `insync?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:259:in `safe_insync?'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:123:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:89:in `block in perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:88:in `each'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:88:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:219:in `eval_resource'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `block (2 levels) in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `block in thinmark'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `block in evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `block in apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:153:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/configurer.rb:120:in `block in apply_catalog'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:129:in `block in benchmark'\n/opt/puppetlabs/puppet/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:128:in `benchmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/configurer.rb:119:in `apply_catalog'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/configurer.rb:225:in `run_internal'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/configurer.rb:134:in `block in run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:64:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:223:in `override'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/configurer.rb:133:in `run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/agent.rb:47:in `block (4 levels) in run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/agent/locker.rb:20:in `lock'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/agent.rb:47:in `block (3 levels) in run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/agent.rb:113:in `with_client'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/agent.rb:44:in `block (2 levels) in run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/agent.rb:80:in `run_in_fork'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/agent.rb:43:in `block in run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application.rb:179:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application.rb:179:in `controlled_run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/agent.rb:41:in `run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application/agent.rb:336:in `onetime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application/agent.rb:313:in `run_command'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application.rb:344:in `block in run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:438:in `exit_on_fail'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/application.rb:344:in `run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/command_line.rb:124:in `run'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/command_line.rb:72:in `execute'\n/opt/puppetlabs/puppet/bin/puppet:5:in `<main>'\nError: /Stage[main]/Simmons::Exercise/File[source-file]/content: change from {md5}f1d193ae1eb85eecf50cc49080c21f32 to {md5}0ad6dbf346ac04c8669f75976024accc failed: invalid byte sequence in UTF-8\n{code}\n\nGoing to continue to investigate and try to come up with a SSCCE.", "created": "2015-05-06T16:53:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "After further investigation I believe I'm running into PUP-3377 (related to PUP-1031).  I'm able to backup the \"corrupt\" file on the server directly via {{puppet filebucket backup ...}} CLI, which works fine.  On the other hand, letting the agent back it up during a run causes the error, which could be related to {{show_diff}} since I'm using {{--test}}.\n\nBasically, this is an issue with the agent, not the server.  Closing this ticket as a false alarm.", "created": "2015-05-07T14:23:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "False alarm, this appears to be an issue with the agent: PUP-3377", "created": "2015-05-07T14:24:00.000000"}], "components": [], "created": "2015-05-06T16:39:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34815b78"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzrtb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_78274886_*|*_6_*:*_1_*:*_0"}], "description": "SERVER-269 & PUP-3812 appear to regress.\nNate's \"Simmons\" module creates a file with random content from /dev/urandom.  Occasionally, we see \"invalid UTF-8 byte sequence\" errors coming from a puppet agent run that stores a filebucket file.  This probably indicates that we are still trying to parse files as UTF-8 instead of app/octet-stream.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15182", "fixedVersions": [], "id": "15182", "issueType": "Bug", "key": "SERVER-613", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2015-05-07T14:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server appears to treat filebucket files like UTF-8", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-05-06T11:26:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40ff2b3b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xbr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_606163856_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_49787913069"}], "description": "See PE-9241 for possible use cases.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16444", "fixedVersions": [], "id": "16444", "issueType": "Task", "key": "SERVER-601", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create test to validate the reverse-proxy configuration", "timeSpent": "PT0S", "updated": "2016-12-09T16:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Any idea what the heap size for Puppet Server was set to on the machine where this happened?\n\nOnce you get to the point where the server is close to an OOM error, it will go into a frenzied GC cycle to try to free up memory rather than crashing.  It's not too surprising that occasionally the OOM will show up as a \"GC overhead limit exceeded\" rather than the more common one about \"heap space\", so hopefully this was just a case of not having the heap size set quite high enough for the amount of load generated by the students, but we will be happy to investigate further if it's reproducible or if the settings seem like the OOM should not have been possible...", "created": "2015-05-07T08:11:00.000000"}, {"author": "557058:467783b2-b6e8-43f1-804b-97a63ba88ef3", "body": "It was using the defaults from the installer, which is why I thought it was worth filing a ticket.  According to the log, the dump was 3gb, which I think correlates to the heap size.  That should be plenty for ~20 agents.\n\nI wonder if there is something about the kind of load that happens in the classroom that might explain it?  Students hit the console much more than is typical for that number of nodes and they probably hit the \"refresh classes\" way more than any kind of real world situation.  I wouldn't think either of those things would hit puppet server very hard, but maybe something is happening in the background.\n\nI do have one possible alternate theory, it could be that his host OS was low on memory and swapping without telling VMware.  So the guest OS could have thought it had 8GBs of real memory to work with, when in fact it was using OSX swap.  That would make the GC tasks incredibly slow, maybe enough to trigger this error since it's based on % of time spent on GC.\n\nCan we put this issue on hold and see if other instructors have the same error?", "created": "2015-05-07T08:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e772b7910a200718cd08c] that sounds good, please let us know if you hear of it happening again.", "created": "2015-05-07T08:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "from triage meeting: [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] to add some notes and correlate to other active tickets.", "created": "2015-05-13T11:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e772b7910a200718cd08c] [~accountid:557058:35290020-3b8d-4896-83d6-4bbcb60b56c6] I believe that this is probably the same issue described in PE-9704.  Can you confirm, and then I will close one of them as a dupe of the other?", "created": "2015-05-14T04:52:00.000000"}, {"author": "557058:467783b2-b6e8-43f1-804b-97a63ba88ef3", "body": "Yes, I noticed that Geoff had mentioned the GC error in the other ticket and I was going to add that to this ticket.  I think it is the same issue, so you can mark it dupe and close one.", "created": "2015-05-14T12:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks, closing as a dupe of PE-9704.", "created": "2015-05-15T01:38:00.000000"}], "components": [], "created": "2015-05-06T11:23:00.000000", "creator": "557058:467783b2-b6e8-43f1-804b-97a63ba88ef3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@83dd322"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzrfj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_742687664_*|*_6_*:*_1_*:*_0"}], "description": "One of our PSEs, [~accountid:62437de6fd5e450070432481], had pe-puppetserver crash with an error I've never seen before.  It looks like it's related to Java garbage collection/the process running out of memory.  As I understand it this error happens when the process is spending 98% of it's time on garbage collection.  This happened early in the training, right when student nodes were checking in with the master for the first puppet run.  After restarting the process, he hasn't had any more issues.\n\nHere is an extract from the log:\njava.lang.OutOfMemoryError: GC overhead limit exceeded\nDumping heap to /var/log/pe-puppetserver/java_pid1592.hprof ...\nHeap dump file created [3223646684 bytes in 43.608 secs]\n#\n# java.lang.OutOfMemoryError: GC overhead limit exceeded\n# -XX:OnOutOfMemoryError=\"kill -9 %p\"\n#\u2002  Executing /bin/sh -c \"kill -9 1592\"...\njava.lang.OutOfMemoryError: GC overhead limit exceeded\nDumping heap to /var/log/pe-puppetserver/java_pid26523.hprof ...\nHeap dump file created [3220711966 bytes in 31.182 secs]\n#\n# java.lang.OutOfMemoryError: GC overhead limit exceeded\n# -XX:OnOutOfMemoryError=\"kill -9 %p\"\n#\u2002  Executing /bin/sh -c \"kill -9 26523\"...\n\nHe also saved the hpof files, and some other logs, but this seemed like the most pertinent detail.  We haven't done any tweaking of the memory settings on this VM, this is just running with the PE defaults.  The VM was running with 4 cores and 8GB of memory, which has been plenty on the pre 3.8 training vms.\n\nI haven't had any memory issues while testing the 3.8 Training VMs and I usually run the master with 4GB, but I don't do any simulation of classroom load.  If it helps for testing, you can find the current VMs here:\nhttp://downloads.puppetlabs.com/training/puppet-training.ova\nhttp://downloads.puppetlabs.com/training/puppet-student.ova", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15791", "fixedVersions": [], "id": "15791", "issueType": "Bug", "key": "SERVER-600", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:467783b2-b6e8-43f1-804b-97a63ba88ef3", "resolution": "Duplicate", "resolutionDate": "2015-05-15T01:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "GC Limit Exceeded on Classroom VM", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] did you set a value for `max-requests-per-instance`?  If so, what value did you set it to, and have you watched the logs for a bit to confirm that it's being honored?", "created": "2015-05-27T04:15:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "I did not! That would probably be a good idea. Does it have a value by default? What's a good value to set it to?", "created": "2015-05-27T10:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It defaults to, effectively, \"off\".  I think we do need to set it.  We don't have enough data to say what would be a good number, but I think maybe 1000 would be a decent starting point based on my recent testing w/catalog zero.", "created": "2015-05-27T15:37:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Ok, I'll restart the test today with it set to 1000.", "created": "2015-05-28T11:38:00.000000"}], "components": [], "created": "2015-05-06T05:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54036b3e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotyf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_440528237_*|*_10007_*:*_1_*:*_416857250_*|*_3_*:*_1_*:*_7859195_*|*_5_*:*_1_*:*_619263462_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_974084883"}], "description": "There are some fairly drastic changes to our management of JRuby in the stable branch.  The most important one is the introduction of the new `max-requests-per-instance` setting, which causes JRuby instances to be flushed after they've handled a certain number of requests.\n\nWe need to do some long-running memory testing of a build that includes those changes, prior to shipping.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15790", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "15790", "issueType": "Task", "key": "SERVER-599", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-05-27T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "long-running memory test that covers latest JRuby changes in stable", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We need to discuss the following as a team:\n1.  Is there any value offered by running these tests?  (If not, we can kill this ticket, destroy the tests and save the effort I've been putting into maintaining them)\n2.  If there any value offered specifically for puppet server in these tests?  (If not, we can divest our selves of these tests and see if someone else wants them or if they should just be destroyed.)\n3.  Where should they go?", "created": "2015-05-05T18:27:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The cost of getting this done in the near future seems too high to justify keeping this ticket open.  We are destroying the repo.\n", "created": "2016-01-29T12:08:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Repo destroyed.  Closing tickets...", "created": "2016-06-10T16:27:00.000000"}], "components": [], "created": "2015-05-05T17:56:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@77adba5b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Move the puppet-server specific tests out of the qatests github repo"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzqvj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_23224360426_*|*_6_*:*_3_*:*_11503094574"}], "description": "Tests in https://github.com/puppetlabs/qatests/tree/master/suites/puppet/tests need to be moved, possibly to https://github.com/puppetlabs/puppet-server/tree/master/acceptance/suites/tests or another directory that the green team can designate.\n\nTests in https://github.com/puppetlabs/qatests/tree/master/suites/pe/tests need to be moved, possibly to https://github.com/puppetlabs/pe-puppet-server-extensions/tree/stable/acceptance, one of its subdirs, or to another directory that the green team can designate.\n\nh3.QA:\nRisk Assessment: N/A  This is a housekeeping ticket.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16616", "fixedVersions": [], "id": "16616", "issueType": "Epic", "key": "SERVER-597", "labels": ["QA"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-01-29T12:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move the puppet-server specific tests out of the qatests github repo", "timeSpent": "PT0S", "updated": "2016-06-10T16:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The testing for puppet 3 agent compatibility has been documented in test rail.  Closing.\n", "created": "2015-08-05T10:58:00.000000"}], "components": [], "created": "2015-05-05T14:03:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ce93d55"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqnj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_495903569_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_6474246760_*|*_10006_*:*_1_*:*_967599145"}], "description": "This ticket organizes the work to validate the features defined in the the https://puppet.atlassian.net/browse/PE-8803 \"Puppet 3 agent compat for Puppet Server 2.1\" epic.\n\nThere has been substantial testing performed against this feature by the Puppet Server team.  When this feature is present in a testable PE build, QA needs to document the testing and close this ticket.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17579", "fixedVersions": [], "id": "17579", "issueType": "Task", "key": "SERVER-595", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-08-05T10:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate Puppet 3 agent compatibility for Puppet Server 2.1", "timeSpent": "PT0S", "updated": "2016-01-19T07:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-05-05T12:14:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@55d18b0e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3834"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xw7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_502298991_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_97580092232_*|*_10005_*:*_1_*:*_9734383805"}], "description": "In SERVER-544, we discussed the fact that Puppet Server currently preserves compatibility with the Rack / WEBrick handlers in Ruby Puppet by passing through the body of a URL encoded form PUT/POST as a \"String\" -- in addition to having the contents of the request body decoded as \"params\".  This is probably most pertinent to \"catalog\" requests being made to the master.  It may not actually be necessary to do this, assuming that the handling for a catalog request would only look at the decoded params and not the request body.  If this is the case, we might consider just doing away with putting the request body into the handler as a \"String\" for URL encoded PUTs/POSTs.  By doing this, along with the work in SERVER-589, we might be able to completely eliminate the code duplication from Ring middleware into Puppet Server, which the work for SERVER-544 introduced.\n\nIt may make most sense to do this work around the time that work is done to remove the Rack and WEBrick handlers from core Ruby Puppet code -- PUP-3834 -- as the investigation into this ticket would likely involve exploring the same code that will be covered for that work.", "epicLinkSummary": "remove webrick/rack support from Puppet", "estimate": "PT0S", "externalId": "17577", "fixedVersions": [], "id": "17577", "issueType": "Improvement", "key": "SERVER-594", "labels": [], "originalEstimate": "PT0S", "parent": "22533", "parentSummary": "remove webrick/rack support from Puppet", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2018-10-04T09:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Assess whether preserving string body needed for URL encoded form put/post", "timeSpent": "PT0S", "updated": "2018-10-04T09:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "If you haven't done this already, one thing you might want to take a look at first is to see whether you might need to tune the number of JRuby {{max-active-instances}} per the Java heap size you have configured for your server.  This document has some recommendations on that - https://docs.puppetlabs.com/puppetserver/latest/tuning_guide.html.\n\nHave you been successful in using Puppet Server 1.x without encountering the {{OutOfMemoryError}} messages that you are seeing now?", "created": "2015-05-04T14:42:00.000000"}, {"author": "623c0987a2f6400069eb7695", "body": "This is my first time trying to deploy puppet.  Well, almost my first time.  A few weeks ago I had a testing setup using apache/rack/puppetmaster for puppet 3.7.2, but scrapped that and rebuilt it when puppet 4 was released.", "created": "2015-05-04T14:45:00.000000"}, {"author": "623c0987a2f6400069eb7695", "body": "So I looked at the tuning guide and checked my running puppet server.  The tuning guide says:\n\nbq.  As of Puppet Server 1.0.8, if you don\u2019t provide an explicit value for this setting, we\u2019ll default to num-cpus - 1, with a minimum value of 1 and a maximum value of 4.\n\nThis is obviously no longer the case, as (with no tuning or modification to configuration files at all), my puppetserver process created *50* JRubyPuppet instances.\n", "created": "2015-05-04T14:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yeah, that comment is true for Puppet Server 1.0.8 and will be for later versions in the 1.X series.  This is not true for the Puppet Server 2.0 release, though.\n\nFor Puppet Server 2.0, the default number of JRubyPuppet instances is (num-cpus + 2).  See https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.0.0/src/clj/puppetlabs/services/jruby/jruby_puppet_core.clj#L20.  Unfortunately, due to timing, there were a number of changes that went into the Puppet Server 1.0.8 release that we didn't have time to get into the Puppet Server 2.0 build before its release.  For Puppet Server 2.1 and later, we will be moving to the \"new\" default behavior documented for Puppet Server 1.0.8 - num-cpus - 1 with minimum of 1 and maximum of 4.\n\nDoes tuning the number of {{JRubyPuppet}} instances per that documentation help alleviate the OOM errors that you were seeing?", "created": "2015-05-04T15:08:00.000000"}, {"author": "623c0987a2f6400069eb7695", "body": "It will take until tomorrow to find out if it helps.  I will let you know.", "created": "2015-05-04T15:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] maybe we should update the tuning guide to indicate the relevant version info in the 2.x series?", "created": "2015-05-05T03:47:00.000000"}, {"author": "623c0987a2f6400069eb7695", "body": "I tuned the {{max-active-instances}} parameter to 4 and the puppetserver is staying up and running now.  Now I just need to figure out the proper tuning value based on number of clients and update frequencies.\n\nMay I recommend putting in an \"Important - change this setting\" section in the puppet server 2.0 installation procedure?", "created": "2015-05-05T06:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c0987a2f6400069eb7695], thanks for confirming that this change helped alleviate the problem that you were seeing and sorry that this wasn't more clear in our documentation.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yeah, I'd agree we should update the docs with some language that calls out the behavior for Puppet Server 2.0 distinctly from what we have in Puppet Server 1.0.8.  Did you want to cover that as part of the big merge-up PR to master that you have in flight - https://github.com/puppetlabs/puppet-server/pull/521 - or handle that separately?", "created": "2015-05-05T17:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Probably handle it separately.  I'll put it on my TO-DO list and try to work up a PR today.", "created": "2015-05-06T01:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - I merged the PR (https://github.com/puppetlabs/puppet-server/pull/524) that you put up with the clarification about Puppet Server versions and corresponding default values for JRubyPuppet instances.  Was there any more documentation you planned to do for this ticket or should we close this out?", "created": "2015-05-06T18:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] thanks", "created": "2015-05-07T02:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ah, I just saw on the PR that [~accountid:623c08e1562ab90069f8aed4] had already looked over this, so I'll assume we're covered on the docs side and close this out.  [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] you are still welcome to look at it if you are interested, obviously :)", "created": "2015-05-07T02:04:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], if it's good enough for [~accountid:623c08e1562ab90069f8aed4], it's good enough for me. Thanks\n", "created": "2015-05-07T10:45:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2015-05-04T14:10:00.000000", "creator": "623c0987a2f6400069eb7695", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3772a59a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovfz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Quick docs improvement based on user issue"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_215497415_*|*_10009_*:*_1_*:*_159135_*|*_5_*:*_1_*:*_44008055044_*|*_6_*:*_1_*:*_0"}], "description": "I am building a test environment for Puppet 4 (using puppetserver 2) before we deploy for real in a couple of months.  All the packages were installed from the {{puppetlabs-pc1}} repo ({{http://yum.puppetlabs.com/el/6/PC1/$basearch)}}.\n\nRight now, the puppet server is serving two nodes - itself and one other node.  Each node's agent is set to run every 10 minutes.  The non-server node is not yet configured, so it just generates a {{fail()}} message in the {{site.pp}} manifest.\n\nI got the server running and left it alone.  When I checked the next day, the puppet server process had crashed after 4.5 hours with an out of memory error:\n\n{noformat}java.lang.OutOfMemoryError: GC overhead limit exceeded\nDumping heap to /var/log/puppetlabs/puppetserver/java_pid8848.hprof ...\nHeap dump file created [3481283903 bytes in 27.879 secs]\n#\n# java.lang.OutOfMemoryError: GC overhead limit exceeded\n# -XX:OnOutOfMemoryError=\"kill -9 %p\"\n#   Executing /bin/sh -c \"kill -9 8848\"...{noformat}\n\nI cannot attach the heap dump because it's 3.3 GB in size.  Even at max compression, it's still 672 MB, way over the 10MB attachment limit.\n\nThe puppetserver is running with the initial configuration - specifically, the java heap size is set to 2GB:\n{noformat}# Modify this if you'd like to change the memory allocation, enable JMX, etc\nJAVA_ARGS=\"-Xms2g -Xmx2g -XX:MaxPermSize=256m\"{noformat}\n\nUPDATE: this issue seemed to mostly be a matter of not being clear enough in the tuning guide docs; it's not obvious what the old default was, nor that it was the default for Puppet Server 2.0.  I've renamed the ticket to reflect the intent to improve those docs, and the default value should be fixed/improved as of 2.1.0.\n", "environment": "OS: Oracle Linux 6.6\nJava version: Java 1.7.0_79 (java-1.7.0-openjdk-1.7.0.79-2.5.5.1.0.1.el6_6.x86_64)\n\nHardware platform: Oracle Corporation SUN SERVER X4-2\nMemory: 256GB RAM\n\nPuppet Server configuration: default as installed", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15549", "fixedVersions": [], "id": "15549", "issueType": "Bug", "key": "SERVER-593", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0987a2f6400069eb7695", "resolution": "Fixed", "resolutionDate": "2015-05-07T02:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve Tuning Guide docs re: default values of max-active-instances for different versions of Puppet Server.", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - I'd still like to get your take on the best long term approach for the library load path.  Does it seem better to go with the approach of specifying the desired path as arguments to the Java process or ensure in packaging any needed shared libraries live in the default paths that we expect a system to use?  Also, any ideas on what we should be looking to use as a default path string, considering where the libraries that our Java process needs to use might live across different OS distributions?", "created": "2015-05-04T12:50:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Here's some additional info. The puppet-users thread that described this issue was able to resolve this by installing a bunch of -dev packages. My theory is that at least one of these packages pulled in libc6-dev on deb/ubuntu, which does 2 things.\n\n1. Adds a link from libcrypt.so.1 to libcrypt.so\n2. Adds a link from /lib/x86_64-linux-gnu/libcrypt.so to /usr/lib/x86_64-linux-gnu/libcrypt.so\n\nAfter reading the jruby thread on this at: https://www.ruby-forum.com/topic/6563521, it seems possible that #1 could have resolved the loading issue.\n\nI'm hesitant to start setting library.path in JAVA_ARGS. I worry that it will be a very brittle solution. Using -Djava.library.path will override the library path entirely, so if any native code is loaded that we don't know about, this would break. The path will also likely vary greatly based on platform, and that has previously been a hard problem to solve (see os-settings ruby load path for prior art here).", "created": "2015-05-04T15:06:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Installing libc6-dev addresses this issue for me on deb/ubuntu. I'd prefer to go down the route of adding this as a dependency to puppetserver rather than messing with library.path. (Side note: [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] our pooler VMs all have libc6-dev/glibc-devel installed, which may have been why CI never caught this).", "created": "2015-05-04T15:58:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This hasn't been seen at all in FOSS, so it's likely a difference between our java build and distro java. Installing libc6-dev is a reasonable workaround, but it would be nice to not need even that.", "created": "2015-05-04T16:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e], I was able to reproduce the original problem of PE Puppet Server not starting on PE 3.8 when loaded onto the same base Ubuntu 14.04 Fusion VM with which I had not been able to reproduce the problem by default for Puppet Server 1.0.8.  Here are a few additional observations:\n\n1) Without having installed libc6-dev, PE Puppet Server starts with no errors when \"/etc/default/pe-puppetserver\" is configured to have the process started with the default system JRE \"/usr/bin/java\" whereas it fails with the \"can't find user for 0\" error when started with the Puppet-vendored \"pe-java\" \"/opt/puppet/bin/java\".\n\nBoth Javas report themselves as being based on OpenJDK 1.7.0_79.  In the case of the \"system\" JRE, {{/lib/x86_64-linux-gnu}} is automatically included into the \"java.library.path\" in the Puppet Server Java process -- without specifying it via a -D option in the command line {{JAVA_ARGS}}.  For \"pe-java\", however, the {{/lib/x86_64-linux-gnu}} directory is not included in the \"java.library.path\" by default.  This makes sense as an explanation for why the error occurs by default for \"pe-java\".\n\n2) The critical benefit that installing libc6-dev appears to have for pe-java is the inclusion of the symlink at {{/usr/lib/x86_64-linux-gnu/libcrypt.so}} back to {{/lib/x86_64-linux-gnu/libcrypt.so.1}}.\n\nIt seems like pe-java has some special knowledge independent of its configured library path to be able to load native libraries referenced under {{/usr/lib/x86_64-linux-gnu/libcrypt.so}}.  I tried setting \"-Djava.library.path=/bogus\" in the {{JAVA_ARGS}} for PE Puppet Server with this symlink in place, and PE Puppet Server still started fine under pe-java.  If I remove the symlink at that point and restart, though, the \"can't find user for 0\" error comes back.\n\nWhile installing lib6-dev does appear to heal this problem as a workaround, the seemingly magical ability for the Java process to be able to locate the shared library via a symlink not on the java.library.path does make me a little nervous about suggesting this as the preferred workaround.\n\n---\n\nI tend to agree with [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e]' concerns for the long-term about having PE Puppet Server's init scripts explicitly set a java.library.path as a command line argument.  This would be complicated to maintain across distributions, prone to errors in our packaging where critical paths may be left out or inappropriate ones being included.  I think the following actions should come out of this ticket:\n\n1) Update pe-java to include the logic already done in its OpenJDK peers which allows for the {{/lib/x86_64-linux-gnu}} directory to be on the library load path by default.\n\n[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - I think you've got this one, right?  Will you file a separate ticket to cover having this done for the next PE release?\n\n2) Create some documentation in Puppet Server about the \"jruby.native.verbose\" option for troubleshooting problems like these.\n\n3) Dump the LD_LIBRARY_PATH and java.library.path variables out to the debug logs.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - would be interested in getting your opinion on this last one.  As part of the debugging for this one, I had to instrument Puppet Server to dump out these variables.  I think it could be helpful to dump these out as DEBUG-level messages by default so that we don't have to modify source code to do this.  Maybe it would be worthwhile to do this at the Trapperkeeper library level so that anything which depends upon it would inherit the behavior by default?", "created": "2015-05-05T10:40:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] The linked ticket RE-4557 tracks patching debian pe-java to add those paths to the default library.path.\n\nI have a hunch on how this continued to work despite an entirely bogus library.path. My hunch is that the jdk falls back to searching ldconfig for an exact match for the library (libcrypt.so), which only works when that symlink is present. This is just a guess. I imagine an strace or a deep source dive into the jdk could tell us for sure. ", "created": "2015-05-05T10:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]: +1 on the idea of logging those things.  I'm not sure whether putting it in TK makes a ton of sense, as I'm not aware of any other use cases at PL where those settings should be relevant.  It seems like those paths are only relevant to apps that are using JNI, and at the time, I think that's limited to JRuby and CFacter, which are both specific to Puppet Server.\n\nI don't have any major objection to putting it into TK, it just doesn't seem entirely relevant, so I think it might make more sense to just put it into Puppet Server for now.", "created": "2015-05-06T02:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Specifically, maybe putting it into the {{init}} or {{start}} lifecycle of the JRuby service would make sense?", "created": "2015-05-06T02:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}I'm not sure whether putting it in TK makes a ton of sense, as I'm not aware of any other use cases at PL where those settings should be relevant.  It seems like those paths are only relevant to apps that are using JNI, and at the time, I think that's limited to JRuby and CFacter, which are both specific to Puppet Server. ...  Specifically, maybe putting it into the init or start lifecycle of the JRuby service would make sense?{quote}\n\nI'd imagine that pretty much all PL apps end up using core JNI in the JRE by virtue of common functionality like file i/o.  Fair point, though, that the use of \"non-core\" ones is probably more unique to Puppet Server via JRuby as compared to other PL applications.  I'd be good, then, with adding this to the {{jruby-puppet-pooled-service}}.  Could just do {{init}} since the effective values for those should have been by that point.\n", "created": "2015-05-06T15:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] so, at this point, it sounds like there is an RE ticket to capture the main work.  Did you want to keep this one around to remind us to do the logging?  Or as a placeholder to force us to watch the related RE ticket?", "created": "2015-05-11T07:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] My intention was just to keep this ticket open to add some documentation and debug statements to Puppet Server to help with detecting library loading problems.  I modified the issue description to reflect this.  I think the JDK fix can be tracked separately in RE-4557.", "created": "2015-05-18T17:13:00.000000"}], "components": [], "created": "2015-05-04T12:18:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@599f5252"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xvj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1202151146_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_25767773039"}], "description": "On some Ubuntu configurations, an attempt to start Puppet Server 1.0.8 or the Puppet Server in PE 3.8 could fail with messages like the following appearing in the {{puppetserver-daemon.log}}:\n\n{noformat}\nFailed to load feature test for posix: can't find user for 0\nCannot run on Microsoft Windows without the win32-process, win32-dir and win32-service gems: Win32API only supported on win32\nPuppet::Error: Cannot determine basic system flavour\n{noformat}\n\nOne reason for this error occurring could be lack of sufficient permissions for Puppet Server to read, write, and execute from the system tmpdir.  See SERVER-160.  In this case, however, the problem was due to one of the JRuby dependencies of Puppet Server being unable to locate and load the \"libcrypt.so\" shared library.\n\nPuppet Server 1.0.8 depends upon JRuby version 1.7.19.  JRuby versions 1.7.17 and later depend upon jnr-posix versions 3.0.8 or later.  The later jnr-posix version has support for \"crypto\" functionality, for which \"libcrypt.so\" must be loaded by the Java process.  In an Ubuntu 14.04 distribution, \"libcrypt.so\" commonly resides at {{/lib/x86_64-linux-gnu}}.  We've found in some cases, however, that the default {{LD_LIBRARY_PATH}} does not include the {{/lib/x86_64-linux-gnu}} directory, the {{libcrypt.so}} shared library fails to be loaded, and Puppet Server ultimately fails to start with the non-intuitive error messages above.  Note from the following thread that other direct users of JRuby have encountered this same problem - https://www.ruby-forum.com/topic/6563521.\n\nOn an Ubuntu amd64 Amazon AMI, we found that the {{LD_LIBRARY_PATH}} was set by default to \"/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib\".  We were able to get the Puppet Server to start by just setting that same path but with the missing \"/lib/x86_64-linux-gnu\" appended to end of the {{JAVA_ARGS}} in Puppet Server's {{/etc/default/puppetserver}} and restarting the service:\n\n{noformat}\nJAVA_ARGS=\"-Xms2048m -Xmx2048m -XX:MaxPermSize=256m -Djava.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib:/lib/x86_64-linux-gnu\"\n{noformat}\n\nManagement of the {{JAVA_ARGS}} setting in PE should be done through the PE module.  A more appropriate workaround with instructions for PE users is documented here - http://docs.puppetlabs.com/pe/latest/release_notes_known_issues.html#ubuntu-conflict-when-youre-running-on-fusion-vm-and-amazon-ec2.\n\n---\n\nThe root cause for this issue was that the {{pe-java}} JDK distribution in Puppet Enterprise, unlike its 1.7.0.75 OpenJDK siblings, did not include the {{/lib/x86_64-linux-gnu}} path in its default library path.  Work to rectify this will be tracked in RE-4557.  This ticket should only cover a couple of minor updates to Puppet Server to help more easily troubleshoot issues like these in the future. \n\n1) Add a couple of debug log statements to Puppet Server code to output the value of the {{java.library.path}} system property and {{LD_LIBRARY_PATH}} environment variable.\n\nHaving this available in Puppet Server without needing to modify source code would have been helpful for debugging this issue more easily.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] discussed doing this in the {{init}} function of the {{jruby-puppet-pooled-service}}.\n\n2) Improve documentation on how to troubleshoot a problem like this.\n\nThe error messages above are not helpful for diagnosing the source of this problem.  JRuby has a property, \"jruby.native.verbose\", that you can set to get more verbose output for native library invocations.  With an Ubuntu AMI in the failing state noted in this ticket, one could have set the JAVA_ARGS to:\n\n{noformat}\nJAVA_ARGS=\"-Xms2048m -Xmx2048m -XX:MaxPermSize=256m -Djruby.native.verbose=true\"\n{noformat}\n\nIf that change had been made prior to starting the service, the following messages would have appeared in the \"puppetserver-daemon.log\" file:\n\n{noformat}\nFailed to load native POSIX impl; falling back on Java impl. Stacktrace follows.\njava.lang.UnsatisfiedLinkError: libcrypt.so: cannot open shared object file: No such file or directory\n  at jnr.ffi.provider.jffi.NativeLibrary.loadNativeLibraries(NativeLibrary.java:87)\n  ...\n{noformat}\n\nThis would tell you what library couldn't be loaded and where it was being loaded from - which is really helpful for this case.  At the very least, we should reference the use of this flag in Puppet Server documentation.\n\nh3. QA\n----\nRisk assessment: high (QA to perform functional review and write an acceptance test)\nRisk probability: medium (seems intermittent, and we missed in in CI)\nRisk severity: high (puppet-server does not start)\nTest layer: acceptance", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "17033", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "17033", "issueType": "Bug", "key": "SERVER-592", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2016-03-11T14:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Server fails to start on some Ubuntus when libcrypt.so not found", "timeSpent": "PT0S", "updated": "2016-03-11T14:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "One thing we need to keep in mind when we're dreaming up the solution for this: users may not want/need to modify the URL prefixes often/ever, but they may want to be able to control what port various things are running on, for security reasons.  So, for example, one of the feature requests for the new TK status service is to provide an optional plain-text endpoint that can be used by load balancers, etc., to see status info.  This endpoint will be implemented as a proxy to an SSL version of a status endpoint in many cases, so the users may want to put it on a different port/Jetty server.  This can be done via our Jetty and webrouting configuration, but might require someone to modify the webrouting config to map an endpoint to a specific Jetty instance.  Haven't put much thought into how likely / common that scenario will be, and whether or not there's a way we can set up the default webrouting config such that a user doesn't have to mess with it in order to achieve that.", "created": "2015-05-08T02:41:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] This ticket describes a solution to the problem I raised of users modifying {{web-routes.conf}} and then running into problems with upgrades, e.g. from 2.0 to 2.1.\n\nWhile the description and consideration are a great solution, I think there's a couple of things we could do in addition that will help avoid this category of problem in the future.  First, I propose we mark {{web-routes.conf}} as a normal file in packaging, not a config file, so that the rout configuration is always replaced and kept in sync with the implementation.  We need to keep these elements in sync so that we can assume the route configuration matches the expected behavior of a given version, e.g. 2.1.0.  I have a difficult time making that assumption today because the configuration may not get replaced on upgrade.\n\nReplacing the configuration on upgrade will have the repercussion that some settings may be impossible to manage effectively by the end user.  A great example of this is the TCP port [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] mentioned above.  If we always replace the file where the port is configured, then the user may have no place to customize this configuration value without being negatively affected on a subsequent upgrade.  In order to accommodate these special case configuration settings where we need to update default values on upgrade while also allowing users to customize the value, I propose that we come up with a set of criteria that could help the whole team categorize a given setting into one of three buckets.  These categories are settings that exist only for users to customize, settings that we want in configuration with a default value that can be customized by the user, and settings that should always be replaced on upgrade and are not for end user customization.  I think it's important to disambiguate between these three categories, not just the two of user-customizable and non-user-customizable.\n\nGiven this set of criteria, we may need some new way to handle the use case of settings with default values that change on upgrade and are also user customizable.  For this, I propose we consider a hierarchical or precedence based approach.  For example, Splunk ships their default configuration inside of /opt/, and the user can copy individual settings out of these files into /etc and those settings will then be used because settings in /etc overlay and mask settings in /opt.  On upgrade, Splunk always replaces the files in /opt and always preserves the files in /etc.  This approach opens the door for us to build tools and documentation that help users analyze the difference between their configuration in /etc and the replaced configuration in /opt after an upgrade.  These tools aren't strictly necessary though, two locations with one for the user and one for always-replaced upgrades are a sufficient affordance to diff the files after an upgrade while also providing us with the ability to assume the default configuration is always in sync with the production code for a given version.\n\nThat about covers it from my perspective.  The categorization of settings and the ability for us to assume a default configuration is in sync with the code for a given version will allow us to improve the whole category of problems related to user-modifiable settings.", "created": "2015-05-08T11:31:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "It might be worth consulting with [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] and the integration team regarding this because I learned they manage web-routes.conf in the puppetlabs-puppet_enterprise module [here|https://github.com/puppetlabs/puppetlabs-puppet_enterprise/blob/6af449d4dac62d481fddab5495fead70e1ca2010/manifests/master/puppetserver.pp#L133-L136].  They also manage bootstrap.cfg and a number of other config files relevant to this ticket.", "created": "2015-05-21T14:54:00.000000"}, {"author": "70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2", "body": "I need to investigate whether UXD-781 is a dupe of this.", "created": "2016-03-11T15:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Note", "created": "2016-03-18T16:11:00.000000"}], "components": [], "created": "2015-05-04T00:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2240ffef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xvz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_629658397_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_87286186946"}], "description": "There are some config files (webrouting config is a good example) that are very important to have around during development, but that don't necessarily make much sense to expose to users (or at least, to encourage users to consider modifying them).\n\nWe should establish some kind of common pattern for how to maintain these config files without exposing them to the user as directly as we do with the \"normal\" config files.  This could be by putting them in a secondary config directory, embedding them in the jar, etc.  (I believe that PuppetDB already has at least a partial solution / strategy for this, would be good to update this ticket with the details.)\n\nWe probably need to have a bit of disussion around what the solution should look like, but it will probably end up being something along the lines of:\n\n* Make sure we support multiple paths being passed in for the `--config` arg to TK (pretty sure we already do)\n* Make sure it's possible for those paths to be relative\n* Make sure that for relative paths, the system includes the classpath in the search path so that we can put config files into the jars?\n* Add something to the default init scripts (where we launch java) that includes a secondary path (non-user-facing) for config files (look and see what PuppetDB is doing for this, because I'm pretty sure they're already doing it)\n* Move the web-routing config files to that secondary path\n\nIt's probably also worth discussing whether we actually want to put the non-user-facing config files into the jars, or just into a secondary directory (I think PuppetDB is doing the latter).  It might be kind of magical if they're in the jar; we should probably at the very least make sure we're logging some info about which config files are being loaded from jars if we do go down that path. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14941", "fixedVersions": [], "id": "14941", "issueType": "Task", "key": "SERVER-1240", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2018-02-14T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Establish pattern for deploying non-user-facing config files", "timeSpent": "PT0S", "updated": "2018-02-14T12:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "attachments": [], "comments": [{"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "This also happens if you attempt to use a variable in an ERB template that isn't defined.  Using @i_dont_exist in an ERB will cause it (assuming that isn't defined in the manifest).", "created": "2015-05-08T06:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for the bug report [~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c], we'll get someone to work on a repro / fix for this ASAP (our next triage meeting is next Wednesday, so that's most likely when it'll get into the work queue).", "created": "2015-05-08T06:34:00.000000"}, {"author": "623e7507866b810069e57527", "body": "Hi [~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c],\n\nI've been working on reproducing your issue. I was unable to reproduce the agent hanging and timing out, but I was able to reproduce the failed agent runs using your module at the commit you provided.\n\nI think this is an issue with your module code, rather than Puppet Server. On an initial agent run using the {{'puppet'}} class from your module, the following messages were logged by the puppet agent:\n{code}\nError: Could not get latest version: undefined method `[]' for nil:NilClass\nError: /Stage[main]/Puppet::Agent::Install/Package[puppet-agent]/ensure: change from 1.0.1-1.el7 to latest failed: Could not get latest version: undefined method `[]' for nil:NilClass\nNotice: /Stage[main]/Puppet::Server::Install/Package[puppetserver]/ensure: removed\n{code}\n\nI was able to track down [this line of code|https://github.com/evenup/evenup-puppet/blob/master/manifests/server/install.pp#L9-L12] in your module, which I think is causing the issue. It looks like an undefined variable in an erb template somewhere is causing an error, which is leading to your module being unable to get the puppet server version and thus removing puppet server. I've confirmed after the run that puppet server is absent, and I'm guessing this is probably what is causing your agent hanging as well.\n\nCould you take a look at your code, and if that is the issue, close out this ticket?\n\nThanks!\n\n", "created": "2015-05-14T16:10:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "[~accountid:623e7507866b810069e57527] did you try that exact commit when attempting to duplicating?  (master has it fixed so the issue doesn't happen).  The specific line that caused the error for me is this line: https://github.com/evenup/evenup-puppet/commit/e21ac12535dd0ee14361d01f9f72afcb14986e97#diff-1f37c950d5342a75ead2599cc5ee0bcdR18.  The issue was me attempting to use fileserver instead of @fileserver - fileserver (local variable) didn't exist.  I had this exact same issue in a different module but the same problem - missing the @.", "created": "2015-05-14T19:12:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] I did use the commit you linked to in the ticket description, and I verified that the template was using {{fileserver}} instead of {{@fileserver}}. From my testing, it seemed like, while that was indeed causing the issue you saw to occur, it was not the root cause. Instead, the error in the erb template led to a different error further down the line such that when your module hit [this line|https://github.com/evenup/evenup-puppet/blob/master/manifests/server/install.pp#L9-L12], {{$_server_version}} was being set to {{'absent}}, causing puppet server to be removed from the system.\n\nWas the other module you saw also getting the same issue where the agent run times out and the server stops responding to subsequent agent runs? If so, can you link me to the module? Also, are you running the agent and the master on the same machine? \n\n", "created": "2015-05-15T10:33:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "I spent a bunch of time trying to recreate this in a vagrant box this weekend without success, but I confirmed I can recreate in my environment.  Is there additional information I can provide you out of there?", "created": "2015-05-18T07:58:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "It looks like there is now an hprof file after the crash now - I'm wondering if that will contain useful information.  I'm not sure what's all in it, but I will send it to PL privately if you have somewhere I can drop it - 1.3G.", "created": "2015-05-18T08:00:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] Sorry about the runaround on the uninstallation of Puppet Server! It looks like I was misunderstanding the way your module was working (I didn't realize I had to set the {{$server}} parameter myself, and since I was running the agent and the master on the same machine, it was uninstalling the master and causing the failures).\n\nIf you're getting an hprof I think that would indicate you're getting an Out of Memory error. Can you check puppetserver's log to confirm? If so, how much memory/how many cores does your machine have, and what is the Java heap size configured to?\n\nIn the meantime I'll work on getting a repro set up and see about getting you a place to upload your hprof file.", "created": "2015-05-18T10:18:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "Memory on the machine is 8G, puppetserver is running with: -Xms2g -Xmx2g -XX:MaxPermSize=256m\n\nI see no errors in the puppetserver.log file, puppetserver just stops functioning (agents are unable to connect) - restarting puppetserver is required.", "created": "2015-05-18T10:29:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] Hmm, strange. I would have expected Puppet Server to have logged an Out of Memory error if it generated an hprof file. Did you get an hprof previously when running into this error?", "created": "2015-05-18T10:32:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "Very likely, I found some previously but didn't ever correlate them to what caused them - I just removed them and decided to watch to see if they reappeared.  The one from today had the same timestamp as when I was trying to duplicate the issue in my environment.", "created": "2015-05-18T10:39:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] I'm currently working to get an SFTP account set up for you. Could you email me your public key so I can get you access (preben AT puppetlabs DOT com)? Then you can upload the hprof and I can take a look.\n\nI have a couple more questions for you as well, in the interest of getting a repro set up:\n\n1. How many cores does your machine have, and do you have the max JRuby instances configured to?\n2. Are you running your agent on the same machine as puppet server?\n3. Is the error occurring on the first agent run, or does it take multiple agent runs before you see the crash?\n4. I noticed you said that you couldn't recreate the issue on a vagrant box. Was there any notable difference between the parameters you're passing to the {{puppet}} class on the vagrant box and in your environment? ", "created": "2015-05-18T14:41:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "[~accountid:623e7507866b810069e57527] just sent you my pub key.\n\n1. The puppetserver is a m3.large AWS instance.  JRuby instances is default\n2. I can duplicate this if the agent is on the puppetserver or not (appears catalog compilation causes it)\n3. First agent run when I have a variable not defined in an ERB template\n4. I spent ~15 hours yesterday and this morning trying to make it happen, but no idea what's different", "created": "2015-05-18T16:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Note that when an OOM occurs, it often gets logged into the `puppetserver-daemon.log` file rather than in the normal `puppetserver.log` file (due to some unfortunate challenges around interacting with the OS service managements systems).", "created": "2015-05-19T02:03:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "Thanks @chris.  'sudo find / -name puppetserver-daemon.log' shows nothing so I don't appear to have one.  I don't see any reference to that file in the logback.xml - I'm wondering if I need to configure it?", "created": "2015-05-19T05:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "oops, my bad.  on cent7 that daemon log file gets replaced by some thing that is built-in to systemd, so there is some systemd command that you have to run if you want to see stdout/stderr of a process.  I'm a n00b with systemd so I can't remember the command, but if you run it it should print out the OOM error.\n\nThere won't be anything super useful in the output but it would at least confirm that OOM is indeed what is happening to you.\n", "created": "2015-05-19T05:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Maybe `journalctl -u puppetserver`?\n\nhttp://unix.stackexchange.com/questions/20399/view-stdout-stderr-of-systemd-service", "created": "2015-05-19T05:47:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] I've been doing a lot of work on SERVER-556, and am about 99% sure that it's being caused by the same underlying issue in the Puppet codebase (in SERVER-556, I've discovered the problem is also being caused by a template that is referencing undefined variables). Would you be willing to provide your environment's code over sftp? If I can get your code, hopefully I'll be able to reproduce your issue, and I can verify whether or not this and SERVER-556 are the same issue, and, if so, that the fix we come up with fixes your issue as well.", "created": "2015-05-27T17:06:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "Looking at that issue it looks very similar to this one.  Unfortunately I can't upload everything - too many things driven by hiera data, but it looks like you have an idea of what is going on and if you have a new jar you want me to try I'm happy to test it.", "created": "2015-05-27T18:25:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I'm pretty sure that this and SERVER-556 are the same issue, so I'm going to close this ticket out as a duplicate. PUP-4665 has been opened to track the work needed to resolve SERVER-556 and SERVER-591. [~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] I will let you know when we get a fix in for this issue.", "created": "2015-05-28T14:38:00.000000"}], "components": [], "created": "2015-05-01T17:41:00.000000", "creator": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23cccfe3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyosnz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1015522748_*|*_3_*:*_1_*:*_91868095_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1204032395_*|*_10006_*:*_1_*:*_10431597"}], "description": "I'm not sure what additional information to provide on this, but having a template with an undefined variable causes puppetserver to hang.  The agent eventually times out.  Additional puppet agent runs error with 'Connection refused, unable to connect to 8140'.  \n\nPassing\n{code}\n  puppet::fileserver:\n    data:\n      path: /etc/puppet/fileserver/data\n      allow: \"*\"\n{code}\n\nto\n\n{code}\n<% @fileserver.keys.sort.each do |path| -%>\n<% params = fileserver[path] -%>\n[<%= path %>]\n  <% params.keys.sort.each do |k,v| -%>\n  <%= k %> <%= params[k] %>\n  <% end -%>\n<% end -%>\n{code}\n\nNot the missing @ on line 2 above for fileserver[path]\n\nThis is running puppet-server 2.0.0 and puppet agent 1.0.1 on CentOS 7, fully updated.  Data provided by hiera.\n\nThis commit is the code that I discovered it in: https://github.com/evenup/evenup-puppet/commit/f45347f81ac172ed35cd717d51243d498f5b4b6c", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15241", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "15241", "issueType": "Bug", "key": "SERVER-591", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "resolution": "Duplicate", "resolutionDate": "2015-05-28T14:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Undefined variable causes hang", "timeSpent": "PT0S", "updated": "2015-06-05T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-05-01T04:08:00.000000", "creator": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43514412"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xbj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1064167122_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_49788126420"}], "description": "When I was configuring a new puppetserver I erroneously commented out some lines in the puppetserver.conf because I believed the settings that were present were the defaults.  Adding some additional text with the defaults hopefully would have prevented me from making this mistake.  An example of the line that I commented:\n\n    # (optional) path to puppet conf dir; if not specified, will use the puppet default\n    master-conf-dir: /etc/puppetlabs/puppet\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16443", "fixedVersions": [], "id": "16443", "issueType": "Improvement", "key": "SERVER-590", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppetserver.conf comments with defaults", "timeSpent": "PT0S", "updated": "2016-12-09T16:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-04-30T12:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a756e2a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xvr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_516598277_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_26798439404"}], "description": "As part of SERVER-544, we upgraded Puppet Server's dependency on {{ring-core}} to 1.3.2.  In the newer ring versions, the {{content-type}} header for a request is only managed through the {{:headers}} map in the ring request rather than as a top-level element in the request - see https://github.com/ring-clojure/ring/commit/bdffd464d2e803ae73707e46eb434e6b07ef0d21.  Because we have some code paths in Puppet Server that manage {{content-type}} via the top-level element in the request but didn't necessarily want to take on the work of updating those paths to work with the new {{ring-core}} as-is, we ended up duplicating some code from {{ring-core}} and updating it to be backward-compatible in its handling of {{content-type}} - see https://github.com/puppetlabs/puppet-server/blob/d623c77a0c9d881ebf59a2fef26fe543a1300120/src/clj/puppetlabs/puppetserver/ring/middleware/params.clj#L40-L42.\n\nIMHO, the changes in Ring are good.  Otherwise, we're left with the potential ambiguous situation where if {{content-type}} were represented in two different places in the request but had different values, it isn't clear which one to honor.\nAs a step toward being able to eliminate this code duplication from Ring, we should update Puppet Server to work with the new behavior for {{content-type}}.\n\nOne particular path through Puppet Server that will likely be affected by this is the work that we did to support the \"file_bucket_file\" endpoint.  See:\n\nhttps://github.com/puppetlabs/puppet-server/blob/d623c77a0c9d881ebf59a2fef26fe543a1300120/src/clj/puppetlabs/services/master/master_core.clj#L47-L50\n\nFor that case, we ended up being dependent upon setting the {{content-type}} at the top level of the request to {{octet-stream}} but letting the corresponding header map value stay as {{text/plain}} if it was passed in that way.  That was done so that a legacy Puppet master would accept the binary content in the request.  We'll probably need to rework that code, though, to work with the new Ring implementation.\n", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "16615", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16615", "issueType": "Improvement", "key": "SERVER-589", "labels": ["tech-debt"], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2016-03-11T14:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update \"content-type\" references to work for new Ring version", "timeSpent": "PT0S", "updated": "2017-05-17T15:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "The Puppet 3 compatibility job has been deployed to the production 2.1.x pipeline and no work remains.", "created": "2015-04-30T16:56:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Test Rail triage and risk analysis not necessary.", "created": "2015-05-01T15:29:00.000000"}], "components": [], "created": "2015-04-29T15:18:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52af2037"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyov8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3274081_*|*_3_*:*_1_*:*_89035191_*|*_5_*:*_1_*:*_44559135192_*|*_6_*:*_1_*:*_0"}], "description": "In planning we weren't quite sure SERVER-545 was \"done done.\"  This ticket is about following up with Wayne and QENG to make sure QENG-2227 is done done and we are not blocked on fully resolving SERVER-546.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17032", "fixedVersions": [], "id": "17032", "issueType": "Task", "key": "SERVER-586", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-30T16:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate 2.1.x pipeline is done done and in production", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "I'm not entirely convinced that this isn't some weird issue with VMware's virtual network devices.", "created": "2015-04-29T15:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yeah, could be VMWare", "created": "2015-04-30T03:55:00.000000"}], "components": [], "created": "2015-04-29T14:32:00.000000", "creator": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12d41308"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z53:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_595417865_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_50392203877"}], "description": "\n\nUsing beaker, I set up two VM hosts using the following host config:\n\n{code}\nHOSTS:\n  debian-78-amd64-master:\n    roles:\n      - master\n      - agent\n      - database\n      - dashboard\n    platform: debian-7-amd64\n    box: puppetlabs/debian-7.8-64-nocm\n    box_url: https://vagrantcloud.com/puppetlabs/boxes/debian-7.8-64-nocm\n    hypervisor: vagrant_fusion\n    ip: 192.168.20.10\n  debian-78-amd64-agent:\n    roles:\n      - agent\n      - default\n    platform: debian-7-amd64\n    box: puppetlabs/debian-7.8-64-nocm\n    box_url: https://vagrantcloud.com/puppetlabs/boxes/debian-7.8-64-nocm\n    hypervisor: vagrant_fusion\n    ip: 192.168.20.11\nCONFIG:\n  type: pe\n  pe_dir: http://neptune.delivery.puppetlabs.net/3.8/preview/\n{code}\n\nOnce provisioned, the master has the following interfaces:\n\neth0 172.x.x.x (bridge to host machine network)\neth1 192.168.20.10 (vm only network)\nlo0 127.0.0.1\n\nand the agent has the same, except that eth1 is 192.168.20.11. The hosts can ping each other on both the eth0 and eth1 networks. There are no iptables rules in place on either host.\n\nThe master is configured to have puppetserver listen on 0.0.0.0 (unspecified/all interfaces):\n\n{code}\nwebserver: {\n  access-log-config: /etc/puppetlabs/puppetserver/request-logging.xml\n\n  client-auth : want\n  ssl-host    : 0.0.0.0\n  ssl-port    : 8140\n\n  ssl-cert    : /etc/puppetlabs/puppet/ssl/certs/debian-78-amd64-master.pem\n  ssl-key     : /etc/puppetlabs/puppet/ssl/private_keys/debian-78-amd64-master.pem\n  ssl-ca-cert : /etc/puppetlabs/puppet/ssl/certs/ca.pem\n  ssl-crl-path : /etc/puppetlabs/puppet/ssl/crl.pem\n\n  static-content: [\n    {resource: \"/opt/puppet/packages/public\", path: \"/packages\", follow-links: true}\n  ]\n}\n{code}\n\nHowever, the agent can only connect to the master's puppetserver via the eth0 IP address:\n\n{code}\nroot@debian-78-amd64-agent:~# telnet 172.x.x.x 8140\nTrying 172.x.x.x...\nConnected to 172.x.x.x.\nEscape character is '^]'.\n^CConnection closed by foreign host.\n\nroot@debian-78-amd64-agent:~# telnet 192.168.20.10 8140\nTrying 192.168.20.10...\ntelnet: Unable to connect to remote host: Connection refused\n{code}\n\nIf I update the master config to explicitly bind to the eth1 IP:\n\n{code}\nwebserver: {\n  access-log-config: /etc/puppetlabs/puppetserver/request-logging.xml\n\n  client-auth : want\n  ssl-host    : 192.168.20.10\n  ssl-port    : 8140\n\n  ssl-cert    : /etc/puppetlabs/puppet/ssl/certs/debian-78-amd64-master.pem\n  ssl-key     : /etc/puppetlabs/puppet/ssl/private_keys/debian-78-amd64-master.pem\n  ssl-ca-cert : /etc/puppetlabs/puppet/ssl/certs/ca.pem\n  ssl-crl-path : /etc/puppetlabs/puppet/ssl/crl.pem\n\n  static-content: [\n    {resource: \"/opt/puppet/packages/public\", path: \"/packages\", follow-links: true}\n  ]\n}\n{code}\n\nThen the agent can reach it successfully:\n\n{code}\nroot@debian-78-amd64-agent:~# telnet 192.168.20.10 8140\nTrying 192.168.20.10...\nConnected to 192.168.20.10.\nEscape character is '^]'.\n^CConnection closed by foreign host.\n{code}", "environment": "PE 3.8.0 on Debian 7.8 amd64 virtual machines (vmware_fusion)", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15237", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "15237", "issueType": "Bug", "key": "SERVER-585", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver not responding to requests to second IP when configured to listen to 0.0.0.0", "timeSpent": "PT0S", "updated": "2016-12-09T16:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The Puppet Server team has been discussing this one a bit more and have honed in on a couple of basic approaches that we're considering.  Pinging a few folks that have been involved in the previous discussions on this topic for any feedback they may have in favor of one or the other approaches listed below - [~accountid:557058:79cfdf4b-b7db-45b4-904b-68a82fb46933], [~accountid:557058:ba2d08f5-8947-446f-bada-55ecb351d6cc], [~accountid:557058:1fdc76f4-b360-4f3a-a4b5-990542a56609], [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584], and [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4].\n\n1) whitelist-based approach, fairly close to what [~accountid:557058:ba2d08f5-8947-446f-bada-55ecb351d6cc] had suggested here - https://puppet.atlassian.net/browse/SERVER-297?focusedCommentId=162370&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-162370.\n\nWith this approach, the values for any environment variables with a pre-defined setting in {{jruby-puppet}} would be seen by the running Ruby code in Puppet Server.  Today, the only variable this applies to is {{gem-home}}.  By default, no other environment variables would be set to a value within the context of the running Ruby code.  Through an optional {{environment-variable-whitelist}}, however, the user would have the ability to specify a list of environment variables whose values would be populated into Ruby code directly from the values set in the shell environment.\n\nConsider the following {{jruby-puppet}} configuration for Puppet Server:\n\n{noformat}\njruby-puppet {\n    gem-home: /my/path/for/jruby\n    environment-variable-whitelist: [\n      FOO,\n      bar,\n      GEM_PATH\n    ]\n    ...\n  }\n{noformat}\n\n... and that an init script upstream from the start of the Puppet Server process had set:\n\n{noformat}\nexport GEM_HOME=/my/path/for/mri-ruby\nexport GEM_PATH=/my/path/for/mri-ruby\nexport RUBYLIB=/my/path/for/mri-ruby\nexport FOO=FOOVAL\nexport bar=barval\nexport BAR=BARVAL\n{noformat}\n\nFor this example, the Ruby code running in Puppet Server would see:\n\n|| ENV\\['x'\\] || Value ||\n| GEM_HOME | /my/path/for/jruby\n| RUBYLIB | <nil> |\n| FOO | FOOVAL |\n| bar | barval |\n| BAR | <nil> | \n| GEM_PATH | /my/path/for/mri-ruby\n\nThe only significant distinction between this and what [~accountid:557058:ba2d08f5-8947-446f-bada-55ecb351d6cc] had proposed is that we wouldn\u2019t immediately be adding in a way to specify values for other arbitrary variables in the configuration file.  (This wouldn\u2019t necessarily preclude adding on such an approach later if needed but wouldn\u2019t seem to be strictly required upfront).\n\n2) blacklist-based approach\n\nWith this approach, *most* environment variables would be flowed from the shell environment through to the running Ruby code.  A blacklist would be used to wall off a subset of environment variables that would be undesirable to have populated into the running Ruby code.  The blacklist would be optional.  If not provided, Puppet Server would blacklist a default set of variables embedded in code.  We\u2019re thinking of starting with just a set of variables that are commonly used by the Ruby runtime which could suffer from the MRI/JRuby pollution problem that we\u2019re concerned about - GEM_HOME, GEM_PATH, RUBYOPT, RUBY_OPTS, and RUBYLIB.  We\u2019d document the default set which would be used and could expand this over time if it were proven necessary.  If the blacklist were defined in the configuration, only the entries in that list would be honored.\n\nConsider the following {{jruby-puppet}} configuration for Puppet Server:\n\n{noformat}\njruby-puppet {\n    gem-home: /my/path/for/jruby\n    ...\n  }\n{noformat}\n\n... and that an init script upstream from the start of the Puppet Server process had set:\n\n{noformat}\nexport GEM_HOME=/my/path/for/mri-ruby\nexport GEM_PATH=/my/path/for/mri-ruby\nexport RUBYLIB=/my/path/for/mri-ruby\nexport FOO=FOOVAL\nexport bar=barval\nexport BAR=BARVAL\n{noformat}\n\nFor this example, the Ruby code running in Puppet Server would see:\n\n|| ENV\\['x'\\] || Value ||\n| GEM_HOME | /my/path/for/jruby |\n| RUBYLIB | <nil> |\n| FOO | FOOVAL |\n| bar | barval |\n| BAR | BARVAL | \n| GEM_PATH | <nil> |\n\nIf the {{jruby-puppet}} configuration were changed to the following\u2026\n\n{noformat}\njruby-puppet {\n    gem-home: /my/path/for/jruby\n    ...\n    environment-variable-blacklist: [\n      FOO,\n      bar,\n      GEM_PATH\n    ]\n  }\n{noformat}\n\n\u2026 the Ruby code running in Puppet Server would see:\n\n|| ENV\\['x'\\] || Value ||\n| GEM_HOME | /my/path/for/mri-ruby\n| RUBYLIB | /my/path/from/mri-ruby |\n| FOO | <nil> |\n| bar | <nil> |\n| BAR | BARVAL | \n| GEM_PATH | <nil> |\n\n\u2014\n\nA few considerations:\n\na) The blacklist approach optimizes for what is, arguably, more standard Linux ecosystem tool behavior of allowing arbitrary shell environment variables to be flowed through to the running application code, allowing environment variables to win over configuration settings (where not prohibited by a blacklist entry).\n\nb) The whitelist approach optimizes more for \u201csafety\u201d in terms of prohibiting environment variables that might have been established for proper use with MRI Ruby from contaminating the JRuby environment.  With the blacklist approach, there probably would be some continued discussion about which variables should be in the default set.  That debate would be irrelevant with the whitelist approach.\n\nc) Both approaches should provide \u201cpower users\u201d with the ability to overcome default behaviors and have environment variables be populated as the user sees fit, including the {{*_proxy}} variables being discussed in SERVER-377.\n\nWe\u2019re not unanimous in this opinion but the majority of those who have voiced an opinion within the team have been leaning toward the blacklist approach.  Would like to get feedback from others, though, as to whether there\u2019s a preference for one or the other solution - or if we\u2019ve completely missed the boat in these discussions.  Understanding that a number of other solutions have been proposed as well, we\u2019re sensitive about meeting essential user needs without overly complicating the configuration.", "created": "2015-07-15T15:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think it is worth explicitly calling out that with a blacklist approach, there is the possibility of environment variables that we hadn't thought of flowing through the system and causing unexpected behaviors that are very challenging to identify / diagnose / debug, and that resulting in support escalations.  The blacklist approach would be a much more significant change from the current behavior of Puppet Server than would the whitelist approach, since we currently filter out most environment variables.\n\nI would extend the phrasing about \"optimizing for safety\" to say \"optimizing for avoiding risk w/rt tricky support escalations\".\n\nThe blacklist approach probably would be more intuitive for power users, so weighing that against the risk seems like the key decision to be made here. ", "created": "2015-07-16T05:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I should also mention that in the latest Puppet Server code, we already have a hard-coded (non-externally configurable) whitelist.  This includes just the {{HOME}} and {{PATH}} environment variables.\n\nIf we were to go with a configurable whitelist like is mentioned above, it would raise a couple of additional points related to the current list...\n\n1) Assuming we would want the {{environment-variable-whitelist}} to be \"optional\", then, for backward compatibility, I'd assume we'd want the default behavior to still implicitly whitelist the {{HOME}} and {{PATH}} environment variables.\n\n2) If a user were to explicitly define an {{environment-variable-whitelist}}, would it be better for the user-configured list to just \"augment\" or to \"replace\" the internal list?\n\nIn other words, would the user have to add {{HOME}} and {{PATH}} into the custom {{environment-variable-whitelist}} in order for those to be set when running in Puppet Server?  I can't think of a good case for why someone would want to have the {{HOME}} and {{PATH}} variables not be set by Puppet Server.  (If anything, I think it would case a number of problems like Puppet Server not being able to start or for various CLI tools to not function properly).\n\nThat said, though, there's also the related ticket about the {{\\*_proxy}} environment variables in SERVER-377 to consider.  For the case that the {{environment-variable-whitelist}} were not set by a user in configuration, I would think the expectation would be that the {{*_proxy}} environment variables -- like {{HOME}} and {{PATH}} -- would still implicitly be whitelisted.  If an {{environment-variable-whitelist}} were set by a user in configuration, would it be reasonable to assume that the {{\\*_proxy}} environment variables would also still be whitelisted even if not explicitly put into that list?  I haven't heard of a case yet where users have specifically said they don't want the {{\\*_proxy}} environment variables to be whitelisted.\n\nFrom an ease of use and practicality perspective, I'd be more inclined to just have the {{environment-variable-whitelist}} in configuration just \"augment\" the default whitelist.  From the perspective of allowing total control for \"power users\", though, I could understand the argument of just having the {{environment-variable-whitelist}}, when set in configuration, be the single-source of truth for what is whitelisted.  It does seem that a \"power user\" could black-out an undesired setting at a higher level than the Puppet Server configuration anyway - via service init script modification, etc.  I'd lean a little toward the \"augment\" approach in this case but really don't have a strong opinion on this.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - any preferences on this?\n\nAll of the above would only pertain to the whitelist approach.  With the blacklist approach, these standard/safe variables would just flow through along with any others not explicitly prohibited by the blacklist.", "created": "2015-07-16T10:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I dunno, I'd say keep HOME and PATH on the implicit whitelist and document it as such, but I don't have a strong opinion.  Mostly just want to make a decision on this and stick to it.", "created": "2015-08-06T08:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [6e7d274|https://github.com/puppetlabs/puppetserver/commit/6e7d274db90f4f22d87caec545e541d36a99f64c].", "created": "2016-08-10T12:40:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Vis-\u00e2-vis [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]'s last remark, it appears the decision was to go with a whitelist?", "created": "2016-08-12T09:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "@krw yes, that is what we ended up implementing.", "created": "2016-08-12T09:48:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Given the following ruby code and puppetserver.conf file:\n{code}\n# x.rb\nputs ENV['JENNY']\nputs ENV['FOO']\n\n# /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf\n{\"jruby-puppet\":{\"environment-vars\":{\"JENNY\":\"867-5309\"},\"ruby-load-path\":[\"/opt/puppetlabs/puppet/lib/ruby/vendor_ruby\"],\"gem-home\":\"/opt/puppetlabs/server/data/puppetserver/jruby-gems\",\"master-conf-dir\":\"/etc/puppetlabs/puppet\",\"master-code-dir\":\"/etc/puppetlabs/code\",\"master-var-dir\":\"/opt/puppetlabs/server/data/puppetserver\",\"master-run-dir\":\"/var/run/puppetlabs/puppetserver\",\"master-log-dir\":\"/var/log/puppetlabs/puppetserver\",\"use-legacy-auth-conf\":true},\"http-client\":{},\"profiler\":{}, versioned-code : { }}\n{code}\n\nThe specified value of {{JENNY}} was available in a ruby script run under a puppetserver jruby instance, as expected. Also as expected, the value of the envvar {{FOO}} was _not_ available under a puppetserver jruby instance:\n\n{code}\n# export JENNY=bogus\n# export FOO=fooval\n# puppetserver ruby x.rb\n867-5309\n\n# echo $JENNY\nbogus\n# echo $FOO\nfooval\n# puppetserver ruby -e \"puts ENV['JENNY']\"\n867-5309\n# puppetserver ruby -e \"puts ENV['FOO']\"\n{code}\n", "created": "2016-08-12T12:21:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Closing after manual verification.", "created": "2016-08-12T12:21:00.000000"}], "components": [], "created": "2015-04-29T14:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3961079b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-790"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymzr3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Server now supports the ability to specify a whitelist of environment variables which are made available to Ruby code.  This can be done via the 'environment-vars' section under the 'jruby-puppet' configuration section."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_167086550_*|*_1_*:*_1_*:*_1678024_*|*_10007_*:*_1_*:*_596666547_*|*_3_*:*_1_*:*_102785640_*|*_5_*:*_1_*:*_2372832137_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_4620251_*|*_10006_*:*_1_*:*_39813907543"}], "description": "This is an offshoot of the environment handling consolidation discussed in SERVER-297.\n\nDuring the initial development of Puppet Server, a conscious decision was made to shield any Ruby code being executed within Puppet Server\u2019s Java process from directly inheriting any shell environment variables.  The primary factor motivating this decision was a fear about the potential contamination of the Puppet Server JRuby runtime by shell environment variables configured for execution under MRI Ruby.\n\nFor example, gems with native C extensions require different implementations for the MRI vs. JRuby execution environments.  Assuming the default value for a system's GEM_HOME environment variable, if defined, would most commonly contain a path under which MRI-compatible gems reside, we thought it would be better for the JRuby-based Puppet Server to maintain its own setting for this path which would be completely independent from the shell environment.  This is captured under a setting called \u201cgem-home\u201d in the \u201cjruby-puppet\u201d section of the \u201cpuppetserver.conf\u201d file.  Effectively, the value for this \u201cgem-home\u201d setting is injected into the configuration of the JRuby container in Puppet Server such that Ruby code sees it as the value of the GEM_HOME \"environment variable\u201d.\n\nIn current Puppet Server code, GEM_HOME is the only \u201cenvironment variable\u201d that any Ruby code would see.  All other environment variables which may have been active in the shell under which the Puppet Server process was launched - PATH, USER, etc. - are removed / not made visible to any Ruby code running within the Puppet Server process.\n\nWe realized later, however, that by not providing a mechanism for Puppet Server to configure other environment variables into a JRuby container that some Ruby code would be impossible to configure under Puppet Server.  For example, assume that your Puppet code needed to make use of a gem that is designed to only be able to read its configuration from an environment variable called FOO.  Under current Puppet Server code, it would not be possible for the gem to get a value for this variable.\n\nTo address this use case while preserving the ability to avoid contaminating the JRuby environment with content intended only for use with MRI Ruby, we\u2019ve discussed the possibility of adding an \u201cenvironment variable\u201d map to the \u201cjruby-puppet\u201d section of the \u201cpuppetserver.conf\u201d file.\n\nFor example, assume that an init script had defined a shell environment variable as\u2026.\n\n{noformat}\nexport FOO=for_mri_ruby\n{noformat}\n\n\u2026 whereas the \u201cjruby-puppet\u201d section of Puppet Server\u2019s \u201cpuppetserver.conf\u201d file were to have:\n\n{noformat}\njruby-puppet {\n  gem-home: /var/lib/puppet/jruby-gems \n  environment-variables: { \n     FOO: for_jruby \n  }\n  ...\n}\n{noformat}\n\nWhen the gem mentioned earlier were to access ENV\\[\u2018FOO\u2019\\] while running under Puppet Server, the gem would get a value of \u201cfor_jruby\u201d.  This would happen because the source of the environment variable for the JRuby container would be drawn from the configuration file as opposed to the actual shell environment.\n\nThe particulars of the API design may need to change a bit before implementation but this ticket is intended to capture the work needed to allow for the population of \"custom\" environment variables into a JRuby container.", "epicLinkSummary": "Improve handling of environment variables", "estimate": "PT0S", "externalId": "17601", "fixedVersions": ["SERVER 2.6.0"], "id": "17601", "issueType": "Task", "key": "SERVER-584", "labels": [], "originalEstimate": "PT0S", "parent": "17620", "parentSummary": "Improve handling of environment variables", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-08-12T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ability to specify arbitrary values for environment variables in JRuby container", "timeSpent": "PT0S", "updated": "2016-09-08T23:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [], "components": [], "created": "2015-04-28T16:32:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1596ef99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovfb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_72282139_*|*_10007_*:*_1_*:*_124840784_*|*_3_*:*_1_*:*_22090982_*|*_10009_*:*_1_*:*_639402373_*|*_5_*:*_1_*:*_43453676696_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_421259106"}], "description": "Part of automation around setting up a Gatling load test development environment.\n\nSince putting the gatling-puppet-load-test repo on the jenkins/gatling machine I'm splitting this into another ticket.\n\nThis script should just clone the gatling-puppet-load-test repo on the host\n_________\nRisk Assessment: N/A: Ticket discusses tests and or test improvements.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17296", "fixedVersions": ["None"], "id": "17296", "issueType": "Task", "key": "SERVER-580", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-05-13T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dev-environment - Create beaker script which clones the gatling-puppet-load-test", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "As a q* | developer, I want comparative data from a gatling run against PE3.8 using catalog_zero.", "created": "2015-05-13T12:37:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Test is running on perf-bl15, I'll update with a spreadsheet when some data comes in ", "created": "2015-05-18T16:07:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We need a link to the results in this ticket before we can call it resolved.", "created": "2015-05-28T01:57:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Added a link to the data\n", "created": "2015-05-28T12:22:00.000000"}], "components": [], "created": "2015-04-24T12:06:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@458d4752"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyou4f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1452347377_*|*_3_*:*_1_*:*_763686727_*|*_4_*:*_1_*:*_42824224154_*|*_5_*:*_1_*:*_49440686_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_635583703"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17295", "fixedVersions": [], "id": "17295", "issueType": "Task", "key": "SERVER-575", "labels": [], "originalEstimate": "PT0S", "parent": "16150", "parentSummary": "Manual Gatling Test Epic", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-10-04T17:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Obtain data from a gatling PE38 run with catalog_zero", "timeSpent": "PT0S", "updated": "2016-10-04T17:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This looks like a duplicate.  Closing it down.\n", "created": "2015-06-02T13:27:00.000000"}], "components": [], "created": "2015-04-24T12:05:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26afe2e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqnb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1035849242_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2338678602"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17031", "fixedVersions": [], "id": "17031", "issueType": "Task", "key": "SERVER-574", "labels": [], "originalEstimate": "PT0S", "parent": "16150", "parentSummary": "Manual Gatling Test Epic", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Duplicate", "resolutionDate": "2015-06-02T13:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Obtain data from a gatling PE372 run with catalog_zero for comparison.  ", "timeSpent": "PT0S", "updated": "2016-01-19T07:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Agree this would be nice", "created": "2015-04-30T06:41:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The heap path would be easy enough to add to the defaults file as a setting and then reference that setting from init scripts and systemd service file.", "created": "2015-05-06T11:38:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I believe this is resolved via EZ-49.  We no longer produce HeapDumps by default so you can simply configure it via the sysconfig or defaults file if you so choose.  ", "created": "2015-10-02T11:52:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] can we close this now that EZ-49 is implemented?  ", "created": "2015-10-21T12:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Seems like it.", "created": "2015-10-21T13:27:00.000000"}], "components": ["Puppet Server"], "created": "2015-04-24T08:25:00.000000", "creator": "623c0c4ba2f6400069eb781b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a4ed4c4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-791"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqa7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2080161792_*|*_6_*:*_2_*:*_67766_*|*_10006_*:*_1_*:*_13490002945"}], "description": "The current service file forces the HeapDumpPath to /var/log/puppetserver.  It would be good to allow this to be configurable so that large heapdumps can be redirected to a \"safe\" file system.   Currently if puppet server has a heapdump it can fill up the /var/log/puppetserver file system and make it so puppetserver will not start again until the dump is removed.\n\n/usr/lib/systemd/system/puppetserver.service\n```\n          -XX:HeapDumpPath=/var/log/puppetserver \\\n```", "environment": "CentOS 7", "epicLinkSummary": "Improve default settings", "estimate": "PT0S", "externalId": "17030", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "17030", "issueType": "New Feature", "key": "SERVER-573", "labels": [], "originalEstimate": "PT0S", "parent": "14991", "parentSummary": "Improve default settings", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0c4ba2f6400069eb781b", "resolution": "Fixed", "resolutionDate": "2015-10-21T13:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow setting of HeapDumpPath for puppet server", "timeSpent": "PT0S", "updated": "2016-01-19T07:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The security issue is that you might issue an agent cert whose dns_alt_names contains the puppetmaster's FQDN, allowing an agent to impersonate the master (or other server side component), or possibly impersonate another agent whose catalog contains sensitive info.\n\nAs a result we don't accept dns_alt_names by default. It can be allowed when using the {{puppet cert}} application, but it is not currently compatible with the autosigning policy mechanism:\n\n{code:ruby}\n    if autosign?(csr)\n      Puppet.info \"Autosigning #{csr.name}\"\n      sign(csr.name)\n    end\n{code}\n\nDue to the sign method not specifying whether dns_alt_names are allowed (so it defaults to false).", "created": "2015-04-23T16:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:63d40628f6e1b543161789a7] Thanks, that makes sense.\n\nFor the Puppet Server CA, the behavior is the same.  A CSR with {{dns_alt_names}} submitted by a prospective agent is rejected, due to the same security concern:\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-2.0.0/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L871-L877\n\nI have also only seen that the {{allow_dns_alt_names}} override is honored in the context of an option passed into the {{puppet cert}} application as you mentioned.  This isn't a formal \"setting\" - in the sense of one that could be specified in the {{puppet.conf}} file - and, therefore, there isn't really a context for Puppet Server's CA service to honor an administrative override which would allow the {{dns_alt_names}} to be included in an agent certificate that it issues.\n\nI am curious if a conversation about honoring something like an {{allow_dns_alt_names}} override for the {{puppet.conf}} file has come up in the past and, if so, what the outcome of that discussion was.  I wasn't sure if the omission of an ability to override the default policy for {{allow_dns_alt_names}} from anything other than {{puppet cert}} has been intentional or just happened to be an artifact of how the autosign code has been working.\n", "created": "2015-04-23T23:12:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "IIRC, there was an explicit decision to not allow dns_alt_names when autosigning, mainly in response to https://puppetlabs.com/security/cve/cve-2011-3872, and the fact that users could easily open themselves up to security issues without knowing it (because the autosign script would need to take into account dns_alt_names in the CSR).", "created": "2015-04-24T00:51:00.000000"}], "components": [], "created": "2015-04-23T14:41:00.000000", "creator": "557058:3908eb13-614b-4b4f-bda0-2b8ee1e6ecfa", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fbfafe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "RHEL 6 (x86_64)"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzke7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "UX Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1112810515_*|*_6_*:*_1_*:*_0"}], "description": "Requesting ability to set puppet to autosign certificate requests with alternate DNS names.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16109", "fixedVersions": [], "id": "16109", "issueType": "New Feature", "key": "SERVER-572", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:90cbc9df-ffef-4d3a-953b-ea6c56eabf61", "resolution": "Won't Fix", "resolutionDate": "2015-05-06T11:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ability to autosign certificate requests with alternate DNS names", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "70121:4080a966-3648-422c-93a4-65c19b64015e", "body": "Hello,\n\nI'm experiencing the same issue. Same version of puppetsever and hiera is being used but on RHEL7.1.\n\nI tried running 'hiera -d classes ::environment=production' through strace but couldn't see any attempts to find the hiera backend in /opt/puppetlabs/puppet/cache/lib/hiera/backend.", "created": "2015-04-23T01:49:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I've confirmed this is an issue in 2.0.0.  The issue is a result of the split between puppet and puppetserver {{vardir}} settings in the [puppet installation layout|https://github.com/puppetlabs/puppet-specifications/blob/138c7f5b4246be242ca672e02be77d05a45867b1/file_paths.md].\n\nAs a potential work-around please add {{/opt/puppetlabs/puppet/cache/lib}} to the end of the {{ruby-load-path}} puppetserver setting.  For example:\n\n{code}\n[root@bpbv1uly0m97oa5 ~]# diff -U2 /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf{.orig,}\n--- /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf.orig  2015-04-27 16:27:26.549092573 -0700\n+++ /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf       2015-04-27 16:22:41.578085778 -0700\n@@ -3,5 +3,5 @@\n     # Where the puppet-agent dependency places puppet, facter, etc...\n     # Puppet server expects to load Puppet from this location\n-    ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby]\n+    ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby, /opt/puppetlabs/puppet/cache/lib]\n\n     # This setting determines where JRuby will look for gems.  It is also\n{code}", "created": "2015-04-27T17:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] - ignorant Puppet question... :)\n\nShould it be possible on the server-side for Hiera to find any custom Hiera backends by going directly through the module path rather than requiring a pluginsync of that content to the {{vardir}}?  Maybe going through the modulepath in this way for Hiera backends has never been supported, not just a regression in Puppet 4 / Puppet Server 2?", "created": "2015-04-27T17:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] - ping for the issue of Hiera not being able to find a custom backend without modifying {{RUBYLIB}}.  Not sure if you have a separate issue tracking this already?", "created": "2015-04-27T17:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:63d40628f6e1b543161789a7] - do you agree that just adding the agent {{vardir}} to the load path for the server is the right fix for this issue?", "created": "2015-04-27T18:07:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Ping [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] for the hiera question.", "created": "2015-04-27T18:10:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}Should it be possible on the server-side for Hiera to find any custom Hiera backends by going directly through the module path rather than requiring a pluginsync of that content to the vardir? Maybe going through the modulepath in this way for Hiera backends has never been supported, not just a regression in Puppet 4 / Puppet Server 2?{quote}\n\nGreat question.  There's a lot of ancient history here that I could go dig up in tickets if you're interested.  The take away is that we used to load plugin code directly from each module's lib directory, but this caused no end of problems.  We were never able to get it \"just right\" with regard to what aspect of the system was trying to load user-provided code from those locations.  Was it hiera running in puppet apply, running in the master, or was it something entirely different like a type definition, a provider implementation, a parser function, or a report processor...?\n\nAs a stop-gap we completely eliminated loading library code from the module paths, but this meant that some edge cases where the master service needed to load code that might also need to be loaded on the agent side in puppet apply.  We handled these edge cases by just making everything flow through plugin-sync which was the most expedient facility available.\n\nThis means the puppet master service is currently tightly coupled to the agent's {{libdir}} setting.  Ideally we could decouple these two things, but that's probably much bigger scope.", "created": "2015-04-27T18:11:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Added a pull request mostly for review.  I'm not sure this is the best way to fix this problem, but it seems fairly clean and straight-forward at least.\n\nhttps://github.com/puppetlabs/puppet-server/pull/513", "created": "2015-04-27T18:12:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "IIRC, Hiera simply uses ruby require to load a backend class. I don't know if it is expected or not that a pluginsync is required. We do load other similar code differently - by using the autoloader.", "created": "2015-04-27T18:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Pardon my references to {{vardir}} above where I should have instead used agent {{libdir}}.\n\nSo if one were to just store a Hiera backend under the master's new {{libdir}} - {{/opt/puppetlabs/server/data/puppetserver/lib}} - it would presumably be loaded without needing to modify the {{ruby-load-path}}?\n\nI suppose if pluginsync was the defacto method for getting Hiera backends within modules to be registered pre-Puppet 4 that we might be stuck with needing to add the agent's {{libdir}} into puppetserver's {{ruby-load-path}} -- and presumably the Hiera tools and Puppet master running under WEBrick / Rack would have to do the same?  Seems like a shame, though, to not be able to have the opportunity to more cleanly separate the agent from the master in this case...\n\n", "created": "2015-04-28T10:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] - anyone else from the platform side that you think we need to have weigh in on whether we go with the proposed change or not?", "created": "2015-04-28T14:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c12b6ee1b5a0070293582] your patch looked sane to me, but then I started thinking about this and wondering why 1.0.8 wouldn't be affected by this same problem?  Or PE?  I know for sure people are using hiera with PE?  Maybe we've mostly only had people using built-in hiera backends so far?\n\nBut I know that a lot of people have been using hiera-eyaml...", "created": "2015-04-30T03:59:00.000000"}, {"author": "557058:b9701f0f-390d-40c1-9497-9ac96dbd3ab1", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] hiera-eyaml only ships as a gem, not as a forge module, so users would not have had any problems.  This issue only affects backends that are delivered via a module and pluginsync.", "created": "2015-04-30T05:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b9701f0f-390d-40c1-9497-9ac96dbd3ab1] got it", "created": "2015-04-30T05:15:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "(UPDATE: The information in this comment is incorrect, please see the following comment.)\n\n{quote}Jeff McCune your patch looked sane to me, but then I started thinking about this and wondering why 1.0.8 wouldn't be affected by this same problem? Or PE? I know for sure people are using hiera with PE? Maybe we've mostly only had people using built-in hiera backends so far?{quote}\n\nI didn't think 1.0.x would be affected because I thought this issue arose from the AIO path changes.  Looking at a 1.0.8 install, however, I see {{ruby-load-path: [/usr/share/ruby/vendor_ruby/]}}, which does not include the agent's pluginsync directory.  So...  I'm now confused again.  Maybe this has been broken for longer than I originally thought?\n\nHowever, this appears to work fine in puppetserver 1.0.2 and NOT in puppetserver 1.0.8.  How perplexing!\n\nHere's what the first two agent runs look like after setting up a Puppet environment in 1.0.8 with the hiera backend in a module.  If you see 'not set' then that means the backend isn't being loaded, doesn't return any data, and the default value is being used.\n\n{code}\n[root@qxftv3yalbyazil ~]# FACTER_DO=hiera puppet agent --test --server `hostname -f` --environment=hiera\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nNotice: /File[/var/lib/puppet/lib/hiera]/ensure: created\nNotice: /File[/var/lib/puppet/lib/hiera/backend]/ensure: created\nNotice: /File[/var/lib/puppet/lib/hiera/backend/dummy_backend.rb]/ensure: defined content as '{md5}e8d8d9fc82bfce72f0bda19bf70bf3c8'\nInfo: Caching catalog for qxftv3yalbyazil.delivery.puppetlabs.net\nInfo: Applying configuration version '1430426280'\nNotice: hiera value foo=not set\nNotice: /Stage[main]/Hiera_test/Notify[hiera value foo=not set]/message: defined 'message' as 'hiera value foo=not set'\nNotice: /Stage[main]/Hiera_test::Config/File[/etc/puppet/hiera.yaml]/ensure: defined content as '{md5}1e9533182ee472b19b69d4ac1a097855'\nNotice: Finished catalog run in 0.03 seconds\n\n\n[root@qxftv3yalbyazil ~]# FACTER_DO=hiera puppet agent --test --server `hostname -f` --environment=hiera\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for qxftv3yalbyazil.delivery.puppetlabs.net\nInfo: Applying configuration version '1430426290'\nNotice: hiera value foo=not set\nNotice: /Stage[main]/Hiera_test/Notify[hiera value foo=not set]/message: defined 'message' as 'hiera value foo=not set'\nNotice: Finished catalog run in 0.02 seconds\n{code}\n\nHowever, in 1.0.2 things look different!  Here's the exact same setup, the only difference being 1.0.2 instead of 1.0.8.  Note how in the second run, data is returned by the backend.\n\n{code}\n[root@hegpkmo5x16jut6 ~]# FACTER_DO=hiera puppet agent --test --server `hostname -f` --environment=hiera\nInfo: Caching certificate_revocation_list for ca\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nNotice: /File[/var/lib/puppet/lib/hiera]/ensure: created\nNotice: /File[/var/lib/puppet/lib/hiera/backend]/ensure: created\nNotice: /File[/var/lib/puppet/lib/hiera/backend/dummy_backend.rb]/ensure: defined content as '{md5}e8d8d9fc82bfce72f0bda19bf70bf3c8'\nInfo: Caching catalog for hegpkmo5x16jut6.delivery.puppetlabs.net\nInfo: Applying configuration version '1430427394'\nNotice: hiera value foo=not set\nNotice: /Stage[main]/Hiera_test/Notify[hiera value foo=not set]/message: defined 'message' as 'hiera value foo=not set'\nNotice: /Stage[main]/Hiera_test::Config/File[/etc/puppet/hiera.yaml]/ensure: defined content as '{md5}1e9533182ee472b19b69d4ac1a097855'\nInfo: Creating state file /var/lib/puppet/state/state.yaml\nNotice: Finished catalog run in 0.04 seconds\n\n\n[root@hegpkmo5x16jut6 ~]# FACTER_DO=hiera puppet agent --test --server `hostname -f` --environment=hiera\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for hegpkmo5x16jut6.delivery.puppetlabs.net\nInfo: Applying configuration version '1430427399'\nNotice: hiera value foo=some data\nNotice: /Stage[main]/Hiera_test/Notify[hiera value foo=some data]/message: defined 'message' as 'hiera value foo=some data'\nNotice: Finished catalog run in 0.02 seconds\n[root@hegpkmo5x16jut6 ~]#\n{code}", "created": "2015-04-30T14:57:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Ah, nevermind...  1.0.2 and 1.0.8 are both unaffected by this problem.  The reason I saw a discrepancy between the two is because I didn't restart the {{puppetserver}} service between the two agents runs.  For some reason the change to hiera.conf wasn't picked up in one, but it was picked up in the other.\n\nStrange.\n\nIn any event, I think my original assessment is correct in that only puppetserver 2.0 and later are affected because of the AIO path changes and the fact that puppetserver no longer has the pluginsync target directory in the $LOAD_PATH ", "created": "2015-04-30T15:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Interesting - so is the pluginsync of the hiera backend to the agent/master libdir even working on Puppet Server 1.0.8 for you?  I didn't think the master libdir had to be explicitly included in the {{ruby-load-path}} because it might be munged into the load path via the autoloader but maybe the pluginsync itself had problems in 1.0.8 for you?\n\nAlso, was the same underlying Ruby Puppet version loaded when you did your 1.0.2 and 1.0.8 tests?", "created": "2015-04-30T15:11:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Looks like we commented at the same time, but my conclusion was incorrect, both 1.0.2 and 1.0.8 are unaffected by this issue.  I didn't restart the puppetserver service which is why I observed the backend not being loaded in 1.0.8.", "created": "2015-04-30T15:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I still don't understand why the libdir ends up on the load path in 1.x and not in 2.x.  We're not putting it on the load path in our default config files, so if it ends up on the load path in 1.x, it must be because the Puppet ruby code is dynamically adding it in Puppet 3.x.  Correct?\n\nAnd then, the follow-up question would be, is the Puppet ruby code no longer doing that in 4.x?\n\nIf the answer to that is that Puppet no longer does that in 4.x, then this issue actually seems more like a Puppet issue than a Puppet Server issue, and seems like it would happen in Passenger as well.  If that's the case then I think we need to understand why the behavior was changed in Puppet 4.x before we work around it in the Puppet Server config.\n\n[~accountid:63d40628f6e1b543161789a7] any thoughts?", "created": "2015-04-30T23:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I haven't confirmed this but my guess is that the \"master\" libdir is being dynamically added in the Ruby Puppet code - autoloader? - to the load path for both Server 1.x / Puppet 3.x and Server 2.x / Puppet 4.x.  The difference between the two versions would then be that the agent and master libdir were the same in Server 1.x / Puppet 3.x but are different in Server 2.x / Puppet 4.x.", "created": "2015-04-30T23:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Just saw that there is a parallel thread about this going on in the PR.  It'd be nice to consolidate the conversation here, if possible.  Attempting to summarize [~accountid:63d40628f6e1b543161789a7]'s comments from the PR:\n\n* the libdir for the master was intentionally separated from the libdir for the agent in 4.0 (which seems like nice progress to me)\n* given that ^^, the behavior described in this ticket should affect Passenger as well", "created": "2015-05-01T00:06:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}I haven't confirmed this but my guess is that the \"master\" libdir is being dynamically added in the Ruby Puppet code - autoloader? - to the load path for both Server 1.x / Puppet 3.x and Server 2.x / Puppet 4.x. The difference between the two versions would then be that the agent and master libdir were the same in Server 1.x / Puppet 3.x but are different in Server 2.x / Puppet 4.x.{quote}\n\nI can confirm this is what's happening, though it's not directly the {{libdir}} setting and rather the {{vardir}} setting, which {{libdir}} defaults to a value of {{$vardir/lib}}.  puppetserver 2.0 and puppet-agent 1.0 now have different vardir values when previously they shared the same value.\n\nIn puppetserver 2.0 the vardir is {{/opt/puppetlabs/server/data/puppetserver}}  In puppet-agent 1.0 the vardir is {{/opt/puppetlabs/puppet/cache}}", "created": "2015-05-01T10:10:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:63d40628f6e1b543161789a7]\n\n{quote}since this is a major version boundary and we all believe that separating agent state from master state is a mandatory part of the path toward a better future for Puppet, it might be best to just document this as a breaking change in 4.0, and recommend other ways for users to distribute hiera backends{quote}\n\nWhat do we recommend as the way to distribute Hiera backends as an alternative to modules?  I notice that [hiera-eyaml|https://github.com/TomPoulton/hiera-eyaml] recommends installation via {{gem install}}.  With this in mind, I don't think we should consider switching to an absolute {{require}} pattern, as using an absolute require would be incompatible with rubygems.  However, if we recommended rubygems as the alternative to modules, then we could proceed with the next steps Chris outlined.  The recommended approach to distributing Hiera backends would then be {{puppetserver gem install hiera-foobackend}}.", "created": "2015-05-01T11:22:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I think this ticket is moving towards a documentation change.  I've set the Risk assessment for Low.  If I am incorrect, please ping me and set the \"QA Reviewed\" field to \"None.\" ", "created": "2015-05-06T12:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}What do we recommend as the way to distribute Hiera backends as an alternative to modules?  I notice that hiera-eyaml recommends installation via `gem install`{quote}\n\nIf I understand [~accountid:63d40628f6e1b543161789a7]'s suggestion correctly, we'd essentially move to a model where we support the distribution of Hiera backends in modules with the master being able to use those backends in place, without the need to do an agent pluginsync of the content.  Presumably the distribution of backends like {{hiera-eyaml}} would move from a gem to a module under this model?  Putting Hiera backends at parity with how other extension points like report processors are done like this would seem like a significant improvement to me.\n\nNot sure where we stand on this one.  Are we still waiting for [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and/or [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] to weigh in before we go forward with the plan [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] described?\n\n", "created": "2015-05-06T17:25:00.000000"}, {"author": "557058:b9701f0f-390d-40c1-9497-9ac96dbd3ab1", "body": "[~accountid:623c12b6ee1b5a0070293582] I think recommending rubygems as the preferred way to install hiera backends should be avoided.  There are two reasons why I think this is a bad idea, firstly it is not consistent with other Puppet plugins, why should hiera backends be any different from functions, report handlers or other plugins?  Secondly, hiera backends will be used from puppetserver, hiera on the command line and puppet apply.  The latter two will require the gem also be installed with `/opt/puppetlabs/puppet/bin/gem` and the first with `/opt/puppetlabs/bin/puppetserver gem` so it has to be installed twice which is not ideal, and pretty confusing.  (I've had to document this for [Hiera-mysql 2.0.0|https://github.com/crayfishx/hiera-mysql] already)\n\n\n\n\n\n", "created": "2015-05-07T02:57:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:b9701f0f-390d-40c1-9497-9ac96dbd3ab1]\n\n{quote}Jeff McCune I think recommending rubygems as the preferred way to install hiera backends should be avoided. There are two reasons why I think this is a bad idea, firstly it is not consistent with other Puppet plugins, why should hiera backends be any different from functions, report handlers or other plugins?{quote}\n\nHiera backends are different than functions and other plugins because most plugins operate on a per-environment basis while hiera operates at the level above environments.  Hiera backends are similar to report processors in this regard, but still differ because hiera affects the behavior of catalog compilation within an environment while report processors do not.\n\nWith this behavior in mind, a gem seems appropriate to me because the gem library path operates at the same level that hiera backends operate at.  That is to say, a gem library exists at the level above environments and has the ability to affect catalog compilation within a given environment.\n\n{quote}Secondly, hiera backends will be used from puppetserver, hiera on the command line and puppet apply. The latter two will require the gem also be installed with `/opt/puppetlabs/puppet/bin/gem` and the first with `/opt/puppetlabs/bin/puppetserver gem` so it has to be installed twice which is not ideal, and pretty confusing.{quote}\n\nThe need to install the backend twice is unavoidable given that the backend needs to operate with both puppetserver and puppet apply and those two components have completely isolated Ruby implementations by design.  We have a goal of keeping these Ruby versions isolated, so I don't see any way for them to share a single copy of the backend without cross-contaminating the two Ruby versions.\n\nOn a related note, distributing the plugin outside of a Gem makes it very difficult for the plugin to rely on third party libraries and extensions.  How will the backend help the user satisfy dependencies in a sane manner without being distributed as a gem?\n", "created": "2015-05-08T12:09:00.000000"}, {"author": "557058:b9701f0f-390d-40c1-9497-9ac96dbd3ab1", "body": "[~accountid:623c12b6ee1b5a0070293582]\n\n{quote}\n We have a goal of keeping these Ruby versions isolated, so I don't see any way for them to share a single copy of the backend without cross-contaminating the two Ruby versions.\n{quote}\n\nHow does this logic apply to, for example functions?  They are pluginsynced to /opt/puppetlabs/puppet/cache/lib where they are used by both regular ruby (puppet apply) and jRuby (puppetserver) - If the goal is complete separation then this would appear to go against that.\n\n{quote}\nOn a related note, distributing the plugin outside of a Gem makes it very difficult for the plugin to rely on third party libraries and extensions. How will the backend help the user satisfy dependencies in a sane manner without being distributed as a gem?\n{quote}\n\nThis issue is no different that types/providers, facts or functions that require third party gems and typically would be managed by Puppet (manifests within the module that ships the extension)\n\n", "created": "2015-05-11T05:07:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}How does this logic apply to, for example functions? They are pluginsynced to /opt/puppetlabs/puppet/cache/lib where they are used by both regular ruby (puppet apply) and jRuby (puppetserver) - If the goal is complete separation then this would appear to go against that.{quote}\n\nIt doesn't apply to functions, they're also mis-behaving and need a similar fix because they should operate on a per-environment basis but cannot today.  Hiera is different in that it currently exists outside of environment and as such does not operate on a per-environment basis like functions do.  That's not to say Hiera should operate at this level, perhaps it should operate at the environment level, but it doesn't today which makes it suitable for use with Gems.\n\n{quote}This issue is no different that types/providers, facts or functions that require third party gems and typically would be managed by Puppet (manifests within the module that ships the extension){quote}\n\nYou're right, it isn't, and the user experience of trying to use Puppet manifests to manage the third party dependencies has always been inferior to the experience of {{gem install}} where dependencies are automatically resolved and installed.  Even if we don't improve the experience for types, providers, facts, and functions, it might be worth improving the experience for Hiera backends and analyzing the results to see what we can learn for the other extension types.", "created": "2015-05-11T10:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "It feels to me like we're at an impasse on this one.  I struggle with rationalizing a desire to have Hiera backends operate at a cross-environment level as opposed to other Puppet extension points and, therefore, tend to side with the approach that [~accountid:63d40628f6e1b543161789a7] is suggesting.  I think we need to get some direction from the product team to move forward.  I'm going to reassign this to [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and move to \"needs information\".\n\nAs we're in an indeterminate state around the PR that was put up with the proposed change to modify the load path, [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] closed it for now.  If we end up deciding we want to go that way, we can open up a replacement for it at a later time.", "created": "2015-05-15T13:43:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Adding a couple of notes of where we stand now with Puppet and what the intentions are regarding loading and handling plugins.\n\nThere is a new loader mechanism in Puppet when using future parser (since quite far back on 3.x). It can currently load functions following the new 4.x function API. The new functions and the new loader(s) can load different versions of the same function in different environments. An experimental loader handling 3.x. functions has been implemented as a proof of concept, but it is not yet in the code base. There is also a rudimentary gem-loader that can load something installed as a gem. It is currently unused. The intent is to use the new loaders for all puppet language related loading. It is unclear if the gem loader is of value (it could be used to configure loaders so that it is used as a 'last resort' if an environment does not contain a more special version, but it also requires that the kind of thing being loaded can be loaded in different versions in different environments (currently that is only implemented for 4.x functions) to be perfect.\n\nWe also have the binder that functions as a plugin handler - the runtime and modules can define \"extension points\", and modules can provide bindings to those. We currently use that for things like \"external syntax checkers\" (a feature of heredoc in puppet), and for the \"data in modules\" functionality that was introduced in Puppet 4.0 and that will be built out in Puppet 4.2. For \"data in modules\" in 4.2, the intent is to use the new \"data provider\" API to enable use of hiera data in modules and environments (see PUP-4474 - the data in modules epic, for more details). The intent is also to keep the \"global singleton hiera\" as is (for the time being).\n\nThe binder was written before the new loaders. The loading capabilities of the binder (it uses the current autoloader) should be refactored to use the new loaders. We will not have time to get this work done in time for Puppet 4.2.0 (see PUP-4620).\n\nThe above is a long way of saying", "created": "2015-05-17T17:49:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "I *think* I have correctly wended my way through the discussion above, but if I've misconstrued anything please point that out. I do not intend to make an implementation recommendation here but hopefully can clarify some intent and provide design guidance.\n\nStarting from first principles, the requirement that an agent run pluginsync code into a particular location so that the master can make use of it is wrong. It's caused a ton of trouble (environment separation being the first and most visible problem). As Jeff said above, now that the agent and server Ruby runtimes are separate, requiring that pluginsync makes even less sense than it used to. So solutions which rely upon re-unifying the {{libdir}} / {{vardir}} so pluginsync works are not going to fly.\n\nGiven the primacy of code-promotion workflows like r10k which rely on environments, it'd be ideal to move towards a solution that lets users bundle code \u2013 their own and potentially third parties' such as dependent gem libraries \u2013 into modules. This allows both the {{puppet apply}} and agent/puppetserver use cases to work. (Note I'm not suggesting guaranteeing both would work in the same site without modifications, simply due to vagaries on Ruby, CPU architecture for compiled extensions etc.)\n\n", "created": "2015-05-18T09:53:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Putting back into Open so we hit this in backlog grooming.  Eric responded.", "created": "2015-06-24T15:33:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "This issue has wider import than just Hiera - I saw report processors mentioned briefly in the thread above.  They've always been shipped via pluginsync and magically loaded through the master sharing the agent libdir and thus winning through pluginsync and loadpath method.  This split of libdirs breaks that distribution method for everything except *v4* functions, types and providers.\n\nSo, ruby extension code for puppet has prior to Puppet 4 always been shipped this way pretty much (not talking about gems here).  We here, as an example, deploy a custom node terminus in this way, as well as report processors (though I expect report processors are probably more common).  This new default behaviour breaks any implementation that currently uses custom reports, terminii etc.  Modifying the load path might not be a long term solution, but it seems to be something we're going to have to do right now.\n\nHaving a supported method for shipping ruby plugins other than functions/types/providers into the server runtime seems to be an important customisation requirement and the current situation is still an undocumented breaking change that needs more than just documentation.", "created": "2015-06-25T04:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6] - here's the ticket we were talking about just now.", "created": "2015-07-08T16:30:00.000000"}, {"author": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6", "body": "This issue appears to be cause this module issue as well.", "created": "2015-07-08T16:33:00.000000"}, {"author": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6", "body": "I was able to get this to work in my setup by adding the Agent libdir path the the ruby-load-path in /etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf", "created": "2015-07-08T16:46:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Does this issue affect Shallow Gravy? ", "created": "2015-07-10T10:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yes, this does affect Shallow Gravy.  I'd been assuming that the PE flavor of this ticket would be tracked per PE-10757 and that this ticket would cover OSS.  If we end up deciding that we want to add the agent libdir to the {{ruby-load-path}} in {{puppetserver.conf}}, there will be separate sets of work in packaging to do this for OSS and PE.  I'd propose we remove the \"PE 2015.2.1\" fix version from this ticket and track that on PE-10757 instead.  Will leave it to the PM types to decide the best approach in JIRA.", "created": "2015-07-10T11:23:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "OK. In that case -we should re-open- I re-opened PE-10757.", "created": "2015-07-10T11:29:00.000000"}, {"author": "557058:5c808afb-dce6-44a1-922d-296dc2c81fe8", "body": "Removing PE fix version on this ticket. Please add Puppet server  fix version where this code is targeted to land.", "created": "2015-07-13T15:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Per PE-10757, in the first PE release which will run Puppet Server 2.x code, the agent's {{libdir}} will be appended to the {{ruby-load-path}} - basically the same change as was proposed in the original PR for this ticket.  Presumably, the same change will need to land in the next OSS Puppet Server 2.x release.\n\nThe next release for Puppet Server 2.x has not yet been identified, so I just tagged this ticket with a fix version of \"SERVER 2.x\" for now.", "created": "2015-07-13T15:24:00.000000"}, {"author": "557058:abebd3bd-9c06-4ec8-ae7e-1932482e576f", "body": "So there's some weirdness related to this, almost the opposite problem actually, described in PE-13887.\n\nPuppet Server (at least the version in PE 2015.2.3) loads report processors from the environment directory, apparently from the one specified in the {{environment}} setting in the {{master}} section of {{puppet.conf}}. Report processors shouldn't be loaded from the environments at all, though. Report processors aren't involved in the compilation, so there's no reason to tie them to environments.", "created": "2016-02-17T12:12:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "IIRC you can deliver a report processor in a module. Hence, you need to know the env since you need to know if that report processor exists or not.", "created": "2016-02-17T12:24:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So, this system has changed dramatically in the last 5 or 6 years. If this is still an issue, can someone file a new ticket with modern details on the problem?", "created": "2021-12-22T11:20:00.000000"}], "components": ["Puppet Server"], "created": "2015-04-23T01:38:00.000000", "creator": "557058:b9701f0f-390d-40c1-9497-9ac96dbd3ab1", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a0fceea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-7537"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg993:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Available bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_389247787_*|*_10007_*:*_1_*:*_1539602314_*|*_3_*:*_1_*:*_15605102_*|*_6_*:*_2_*:*_52376_*|*_10004_*:*_2_*:*_5103430961_*|*_10006_*:*_2_*:*_92109453791_*|*_10005_*:*_1_*:*_111265117316"}], "description": "EDIT:\n\nThe root cause of this ticket is that in Puppet 4 we intended to separate the master and agents' libdirs completely.  For this reason, the default Ruby load path for Puppet Server does not include the agent's libdir, and thus, Puppet Server does not load pluginsynced code.  This behavior is highly desirable for the future, but there has been some fair criticism levied that we need to have a better \"best practice\" for delivering server-side plugins.\n\nFor more details see SERVER-973 and PUP-4885.  For now, the simplest workaround is to add the agent libdir to Puppet Server's ruby load path, e.g.:\n\n{code}\n[root@bpbv1uly0m97oa5 ~]# diff -U2 /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf{.orig,}\n--- /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf.orig  2015-04-27 16:27:26.549092573 -0700\n+++ /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf       2015-04-27 16:22:41.578085778 -0700\n@@ -3,5 +3,5 @@\n     # Where the puppet-agent dependency places puppet, facter, etc...\n     # Puppet server expects to load Puppet from this location\n-    ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby]\n+    ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby, /opt/puppetlabs/puppet/cache/lib]\n\n     # This setting determines where JRuby will look for gems.  It is also\n{code}\n\nORIGINAL DESCRIPTION:\n\nPuppet Server 2.0.0\nHiera 2.0.1\nCentOS 7.0\n\nThere seems to be an issue with Puppet Server loading hiera backends that are pluginsynced from modules.   Take this example of a dummy hiera backend...\n\n{code:title=modules/testmodule/lib/hiera/backend/dummy_backend.rb}\nclass Hiera\n  module Backend\n   class Dummy_backend\n     def lookup(key, scope, order_override, resolution_type)\n       return \"some data\"\n     end\n   end\n  end\nend\n{code}\n\n{code:title=/etc/puppetlabs/code/hiera.yaml}\n---\n:backends:\n  - dummy\n{code}\n\nPuppet agent syncs the plugins on the next run\n\n{code}\n[root@puppet4 modules]# puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nNotice: /File[/opt/puppetlabs/puppet/cache/lib/hiera/backend/dummy_backend.rb]/ensure: defined content as '{md5}d3ec116abcb8c2d1bc9fcb336cfa6248'\n{code}\n\n\nBut, if we try and lookup from the puppet server via an agent run (after a server restart)....\n\n{code:title=modules/testmodule/manifests/init.pp}\nclass testmodule   {\n  $foo=hiera('val', 'not set')\n  notify { $foo: }\n}\n{code}\n\n{code}\n[root@puppet4 modules]# puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for puppet4.localdomain\nInfo: Applying configuration version '1429773449'\nNotice: not set\nNotice: /Stage[main]/Testmodule/Notify[not set]/message: defined 'message' as 'not set'\nNotice: Applied catalog in 0.02 seconds\n{code}\n\nAnd running puppet server foreground reveals\n{code}\n2015-04-23 03:19:04,930 INFO  [puppet-server] Puppet hiera(): Cannot load backend dummy: no such file to load -- hiera/backend/dummy_backend\n{code}\n\nBut, puppet apply *does* find it\n\n{code}\n[root@puppet4 modules]# puppet apply -e 'include testmodule'\nNotice: Compiled catalog for puppet4.localdomain in environment production in 0.29 seconds\nNotice: some data\nNotice: /Stage[main]/Testmodule/Notify[some data]/message: defined 'message' as 'some data'\nNotice: Applied catalog in 0.02 seconds\n{code}\n\n\nHiera itself (possibly a separate ticket/issue) also doesn't find it by default...\n\n{code}\n[root@puppet4 modules]# hiera foo\nWARN: 2015-04-23 03:13:35 -0400: Cannot load backend dummy: cannot load such file -- hiera/backend/dummy_backend\n\n[root@puppet4 modules]# RUBYLIB=/opt/puppetlabs/puppet/cache/lib hiera foo\nsome data\n{code}\n\nI haven't tested this with other plugins yet, but there looks to be something awry with loading plugins from puppetserver.  Another user also reported the same problems with RHEL 7.1\n", "epicLinkSummary": "Agent/Master Separation", "estimate": "PT0S", "externalId": "16442", "fixedVersions": [], "id": "16442", "issueType": "Bug", "key": "SERVER-571", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": "26182", "parentSummary": "Agent/Master Separation", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b9701f0f-390d-40c1-9497-9ac96dbd3ab1", "resolution": "Won't Fix", "resolutionDate": "2021-12-22T11:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Hiera backends as plugins aren't loaded.", "timeSpent": "PT0S", "updated": "2021-12-22T11:20:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for the suggestion!  We agree, this would be an improvement.  The implementation might be a bit tricky, but we'll discuss it soon, and if we can come up with a straightforward way to implement it, we'll get it onto the roadmap.", "created": "2015-05-01T03:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79] I'm thinking I may use this ticket to capture the conversation that you and I have been having.\n\nWhat I'm leaning towards right now is to add a new cli subcommand that would be similar to foreground but would have a slightly different behavior.\n\nWhat I'm thinking is that we'd add a new config file to our packaging", "created": "2015-07-15T03:37:00.000000"}, {"author": "557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] sounds good to me!", "created": "2015-07-15T03:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - sounds reasonable to me on the surface.\n\nAre you thinking this would have to be a different CLI command or just something that any TK app might be able to do when bootstrapped with no special command semantics - e.g., apply overrides found in any \"debug.conf\" file after all other files had been processed?  Something like this might be useful just for general troubleshooting where you still want to bootstrap a TK service stack through the system's service startup framework.  Apply your \"debug.conf\" overrides temporarily.  Purge when done and you automatically go back to the \"production\" settings without having to selectively remember what to reset.  May be good to have a way to parameterize the location of the \"debug.conf\" as a Trapperkeeper-level option for more advanced cases but use \"debug.conf\" in the specified configuration directory as the default?", "created": "2015-07-15T09:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - do you think this belongs in the new \"metrics improvements\" epic?  Doesn't seem to me like this one fits?  Maybe just keep it in the \"server 1.2/2.2\" one for now?", "created": "2015-07-15T10:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I put it here because I had some conversations with [~accountid:557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79] about it that are related to metrics, so I want to try to knock it out at about the same time.", "created": "2015-07-15T13:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] interesting question, I had mostly been thinking about it specifically in terms of Puppet Server, but it probably could be generalized.  Some caveats:\n\n* debug.conf can't live in the main confdir or it would always get loaded, unless we special-cased on the filename, which... I don't *think* I like.\n* TK is supposed to complain/fail if you define the same setting in more than one file, so I think this logic would have to live slightly outside the normal flow of control.  e.g. I was thinking of maybe adding the equivalent of an additional command-line flag \"--debug-config\" (internally", "created": "2015-07-15T13:24:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Sounds good to me. Pulling in a \"debugging configuration\" sounds similar to what the {{-t}} flag does for Puppet --- but in a configurable manner.", "created": "2015-07-15T19:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Based on some recent discussion on the mailing list, I'm thinking about trying to work in SERVER-223 here somehow as well", "created": "2015-07-16T04:54:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "Hm. {{puppetserver debug}} seems perfectly cromulent to me, actually. It implies (to me) running in a mode where you can see the output on your terminal, and I don't think it's a huge leap to explain that the command loads an alternate config. {{puppetserver foregound}} then means that the 'production' config is loaded, and the output is to the terminal, and {{--debug}} includes a more verbose set of messages.", "created": "2015-07-16T11:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "cool.  I'm good with {{puppetserver debug}} if you are!", "created": "2015-08-07T05:52:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing this as won't do, as it's definitely not anywhere on our roadmap at preset. If it's something people really want, please comment/reopen so I know there's interest!", "created": "2018-12-20T16:54:00.000000"}], "components": ["Puppet Server"], "created": "2015-04-22T18:32:00.000000", "creator": "557058:2c6c87f8-2af9-4074-bebe-0dcc5574ddcf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@35de6dce"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1313"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xv3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2216499587_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_96966441200_*|*_10005_*:*_1_*:*_16417956212"}], "description": "`puppetserver foreground --debug` is a fantastic debugging tool, but it would be even better if only one jruby process was started up, so there's no chance of multiple stack traces being logged to the error log at once.", "epicLinkSummary": "Improved JRuby Debugging UX", "estimate": "PT0S", "externalId": "16381", "fixedVersions": ["SERVER 5.y"], "id": "16381", "issueType": "Bug", "key": "SERVER-570", "labels": [], "originalEstimate": "PT0S", "parent": "14734", "parentSummary": "Improved JRuby Debugging UX", "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2c6c87f8-2af9-4074-bebe-0dcc5574ddcf", "resolution": "Won't Do", "resolutionDate": "2018-12-20T16:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "`puppetserver debug` mode for running additional puppetserver process with debug settings", "timeSpent": "PT0S", "updated": "2018-12-20T16:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2015-04-22T15:41:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5878f49e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoty7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_523935_*|*_10007_*:*_1_*:*_1338941686_*|*_3_*:*_1_*:*_109222891_*|*_10009_*:*_1_*:*_36629016_*|*_5_*:*_1_*:*_42755030103_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_421126322_*|*_10005_*:*_1_*:*_593375014"}], "description": "There should be good documentation on how to set up a dev environment with the tools described in the other tickets. Ideally this wouldn't be done all at once at the very end, this ticket is just to track that it ends up in a nice state once the dev-environment work is done.\n_________\nRisk Assessment: N/A: Ticket discusses tests and or test improvements.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17598", "fixedVersions": ["None"], "id": "17598", "issueType": "Task", "key": "SERVER-568", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Done", "resolutionDate": "2015-05-21T14:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dev-environment - Complete documentation for setting up a dev environment", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The 'clone puppet-gatling-load-test repo' task here overlaps with SERVER-565.  There is no need to do any kind of installation of gatling itself, cloning the gatling-puppet-load-test repo and then using 'sbt' to run the simulation will automatically download all of the gatling dependencies.\n\nPerhaps we can just close SERVER-565 as a no-op, given that you've captured the need to clone 'gatling-puppet-load-test' here?\n\nOne other thing that occurs to me, though, is that we will need to make sure that sbt is installed on whatever box we intend to run gatling on.  So I guess another option would be to re-purpose SERVER-565 to make it about the installation of sbt rather than of gatling itself.\n\nHopefully we can get away with installing sbt via the OS package manager, but we'll have to test that and make sure whatever version gets installed from the package manager is compatible with the code in gatling-puppet-load-test.  Failing that, we'll just have to download an sbt tarball, extract it, and then make sure it's in the PATH at the time when we launch the gatling run.", "created": "2015-04-23T03:54:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Read this after commenting on SERVER-565. Yeah agreed, I'll repurpose it for installing SBT", "created": "2015-04-23T17:37:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "I'm creating a new ticket specifically for a beaker script that moves the gatling-puppet-load-test repo over, since it seems like multiple tickets will rely on it being on the machine if for no other reason than all the manifests from this epic will be pulled along with the repo", "created": "2015-04-28T16:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] a small jira hygiene suggestion", "created": "2015-04-30T03:11:00.000000"}], "components": [], "created": "2015-04-22T15:37:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@772a001d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovef:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Did a bad job planning Joe's tasks"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_759270_*|*_10007_*:*_1_*:*_122805905_*|*_3_*:*_1_*:*_2009225_*|*_10009_*:*_1_*:*_1155237977_*|*_5_*:*_1_*:*_43453700315_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_520753962"}], "description": "Part of automation around setting up a Gatling load test development environment.\n\nThis manifest will setup jenkins job builder.\nIt should configure JJB to point at the jenkins server (localhost) with some username and password as well\n_________\nRisk Assessment: N/A: Ticket discusses tests and or test improvements.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16614", "fixedVersions": ["None"], "id": "16614", "issueType": "Task", "key": "SERVER-567", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-05-13T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dev-environment - Create puppet manifest to setup JJB", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ultimately (farther down the road) we will definitely want to be able to run the gatling sim on a jenkins slave node or a separate beaker SUT system, not on the same box as the Jenkins service.  We don't need to completely solve that in the first pass here, but it's something to keep in mind as you work on this ticket.  If there's any way to do the current work that will make it easier to split things out to multiple systems in the future, it would be good to make sure we do things that way.", "created": "2015-04-23T03:47:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "That's a very good point. I was just thinking of this being for someone setting up a small development environment, but it makes sense to make sure it can be used more generally. I was imagining this as simply applying a couple manifest files, but it may be the case that gatling portion will be taken care of separately, since that just involves cloning the gatling-puppet-load-test repo to a machine. This script might just install jenkins.", "created": "2015-04-23T11:50:00.000000"}], "components": [], "created": "2015-04-22T14:44:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@446d621e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3956246_*|*_10007_*:*_1_*:*_124894224_*|*_3_*:*_1_*:*_22032709_*|*_10009_*:*_1_*:*_639385809_*|*_5_*:*_1_*:*_43453696604_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_421161455_*|*_10005_*:*_1_*:*_593342173"}], "description": "Part of automation around setting up a Gatling load test development environment.\n\nThis script will do a few things:\n* Before applying the jenkins-setup manifest, it will probably be necessary to install the jenkins forge module.\n* Apply jenkins/gatling manifests\n* We may want to generate an ssh key for the jenkins user\n_________\nRisk Assessment: N/A: Ticket discusses tests and or test improvements.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17294", "fixedVersions": ["None"], "id": "17294", "issueType": "Task", "key": "SERVER-566", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-05-13T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dev-environment - Create beaker script which installs jenkins and gatling", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Oh, we definitely do not want to use the gatling quickstart guide for this.  What we're going to want to do is to clone the 'gatling-puppet-load-test' repo onto the machine that is going to be running gatling.  Then we'll end up going into the `simulation-runner` directory, and calling a variant of `sbt run` to launch the gatling run.\n\nThere *may* be some work around this that already exists in the 'jenkins' directory of the gatling-puppet-load-test repo.\n\nI'm not sure whether this ticket is intended to capture the work of actually starting the gatling run (which will ultimately need to be done using several parameters passed through from the jenkins job), or whether this ticket is just about getting the software in place.  If the former, we'll need to spec it out further.  If the latter, we'll need to come back around later and flesh out a ticket or two about launching the gatling run.", "created": "2015-04-23T03:44:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Yes definitely, I'll add that to the description. \n\nI had intended this to just be for putting the software in place, not running gatling, and if it's just as simple as cloning the load test repo, then I've already created the jenkins job for it in the {{long-running-memory-tests}} repo that we haven't transfered over to the load test repo yet. ", "created": "2015-04-23T11:41:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "In reference to comments on SERVER-567, I'm repurposing this ticket to install sbt, a dependency of gatling. ", "created": "2015-04-23T17:40:00.000000"}], "components": [], "created": "2015-04-22T14:39:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ad336b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyove7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Did a bad job planning Joe's tasks"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4220556_*|*_10007_*:*_1_*:*_123040896_*|*_3_*:*_1_*:*_26924245_*|*_10009_*:*_1_*:*_1154999786_*|*_5_*:*_1_*:*_43453728288_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_495840567"}], "description": "Part of automation around setting up a Gatling load test development environment.\n\ngatling requires sbt, this ticket will involve either installing the package through the OS's package manager, or if that doesn't work, just downloading/extracting a tarball and putting in the $PATH\n_________\nRisk Assessment: N/A: Ticket discusses tests and or test improvements.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "17029", "fixedVersions": ["None"], "id": "17029", "issueType": "Task", "key": "SERVER-565", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-05-13T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dev-environment - Create puppet manifest which installs sbt", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:62438a418678e9007059bcca] - thanks for the ticket.  You're correct, sorry about that", "created": "2015-04-23T00:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], and I discussed this.  Even though SERVER-475 should be the long-term replacement for this functionality, we agreed that, in the meantime, to avoid blocking users from being able to migrate to Puppet Server 2 that we should restore the legacy \"/status\" endpoint implementation for the Puppet Server 2.1 release.  From Puppet Server's perspective, this should just mean allowing requests to the master's \"/status\" endpoint to be passed down through to core Ruby Puppet's implementation - probably less than a day's worth of work.", "created": "2015-04-29T16:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:623c08e1562ab90069f8aed4] - fyi, I'm not sure this comment from the API docs -- https://github.com/puppetlabs/puppet/blob/master/api/docs/http_status.md -- is completely accurate per the current implementation:\n\n{quote}\nGET /puppet/v3/status/:name?environment=:environment\nThe :environment and :name sections of the URL are both ignored, but a value must be provided for both.\n{quote}\n\nIn my case, I found that I had to use a value for `:environment` which maps to an \"actual\" environment that the master recognizes.  For example, if I use a URL of \"https://host:8140/puppet/v3/status/ignored?environment=ignored\" when querying a Puppet 4 Ruby WEBrick master, I get an error response - \"HTTP 400 Bad Request\" with payload of {{Could not find environment 'ignored'\"}}.  If I use \"https://host:8140/puppet/v3/status/ignored?environment=production\", however, I get an \"HTTP 200 OK\" with payload of {{\\{\"is_alive\":true, \"version\":\"4.0.0\"\\}}}.  So the environment is \"ignored\" in the sense that the status response doesn't differ per environment, I believe, but a valid environment name still does need to be referenced in order for the request to be successful.  Not sure if this is a defect or just something that warrants a doc change.  WDYT?", "created": "2015-04-29T17:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I think I saw you discussing this in chat logs yesterday, and that that behavior changed with the introduction of directory environments?  Any update on the game plan, based on [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]'s input?\n\n(ping [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] for visibility)", "created": "2015-05-01T03:26:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}I think I saw you discussing this in chat logs yesterday, and that that behavior changed with the introduction of directory environments?{quote}\n\nYeah, that makes sense.  I'm assuming this is \"behaves as expected\" at this point and just should be documented as such.\n\n{quote}Any update on the game plan, based on Eric Sorenson's input?{quote}\n\nAs far as I understand, the game plan is still to try to re-enable the legacy status endpoint from core Ruby Puppet as part of the Puppet Server 2.1 release - which would mean that this would appropriately fall under the \"Green: Puppet Server 2.1 / URL compat\" epic.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], any other info you were looking for on this?", "created": "2015-05-05T15:03:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Yeah, that's \"behaves as expected\" now and the docs are just lagging behind. ", "created": "2015-05-05T18:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] nope.", "created": "2015-05-06T01:18:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I put up separate PRs for stable vs. 2.1.x for this since the implementations are slightly different for each.\n\nI functionality tested these by doing curl requests to the status endpoint.\n\nFor stable:\n\n{noformat}\n> curl https://localhost:8140/production/status/ignored\n...\nHTTP/1.1 200 OK\n...\n{\"is_alive\":true,\"version\":\"3.7.5\"}\n{noformat}\n\nFor 2.1.x:\n\n{noformat}\n> curl https://localhost:8140/puppet/v3/status/ignored\\?environment=production\n...\nHTTP/1.1 200 OK\n...\n{\"is_alive\":true,\"version\":\"4.0.0-rc1\"}\n{noformat}\n", "created": "2015-05-08T15:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This has been merged to the stable and master branches and is passing all acceptance tests on all platforms.\n\nPuppet Acceptance Suite (master):\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-master/44/\nMoving to \"testing\" column.\n\nPuppet Acceptance Suite (stable):\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-stable/46/\n\nMoving to \"testing\".\n", "created": "2015-05-22T01:10:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This was functionally reviewed by Jeremy Barlow on 5/8", "created": "2015-05-22T12:46:00.000000"}], "components": ["Puppet Server"], "created": "2015-04-22T14:35:00.000000", "creator": "62438a418678e9007059bcca", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ec13f3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotdr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_558257669_*|*_1_*:*_1_*:*_1197053548_*|*_10007_*:*_1_*:*_601255668_*|*_3_*:*_1_*:*_4861994_*|*_5_*:*_1_*:*_1049718895_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_41769601_*|*_10006_*:*_1_*:*_182224877"}], "description": "I am attempting to use the {{/puppet/v3/status}} API to query the status of a Puppet Server. My goal is to be able to use our Nagios monitoring system to test not just whether Puppet Server is accepting connections on TCP port 8140, but whether the Puppet Server is alive and functioning.\n\nBased on [the API docs|https://github.com/puppetlabs/puppet/blob/master/api/docs/http_status.md], I am using the follow curl command for testing:\n\n{noformat}\n$ curl -v -k 'https://puppet-ca.example.org:8140/puppet/v3/status/ignored?environment=ignored'\n{noformat}\n\nThe {{/puppet/v3/status}} service is permitted in {{/etc/puppetlabs/puppet/auth.conf}}:\n\n{noformat}\npath /puppet/v3/status\nmethod find\nallow *\n{noformat}\n\nHowever, Puppet Server returns {{Not found}}:\n\n{noformat}\n> GET /puppet/v3/status/ignored?environment=ignored HTTP/1.1\n> User-Agent: curl/7.29.0\n> Host: puppet-ca.example.org:8140\n> Accept: */*\n> \n< HTTP/1.1 404 Not Found\n< Date: Wed, 22 Apr 2015 20:22:32 GMT\n< Content-Type: text/html; charset=UTF-8\n< Content-Length: 9\n< Server: Jetty(9.1.z-SNAPSHOT)\n{noformat}\n\nOther services work properly. For example, if I permit the {{/puppet/v3/resource_type}} service in {{auth.conf}}, and use the Puppet client certificate to authenticate (because the {{/puppet/v3/resource_type}} service does not permit anonymous access), it works:\n\n{noformat}\n$ curl -v --cert /etc/puppetlabs/puppet/ssl/certs/client.example.org.pem --key /etc/puppetlabs/puppet/ssl/private_keys/client.example.org.pem --cacert /etc/puppetlabs/puppet/ssl-ca/ca/ca_crt.pem 'https://puppet-ca.example.org:8140/puppet/v3/resource_type/yum?environment=production'\n[lines omitted]\n> GET /puppet/v3/resource_type/yum?environment=production HTTP/1.1\n> User-Agent: curl/7.29.0\n> Host: puppet-ca.example.org:8140\n> Accept: */*\n> \n< HTTP/1.1 200 OK\n< Date: Wed, 22 Apr 2015 20:29:37 GMT\n< Content-Type: text/pson;charset=ISO-8859-1\n< X-Puppet-Version: 4.0.0\n< Content-Length: 78\n< Server: Jetty(9.1.z-SNAPSHOT)\n< \n* Connection #0 to host puppet-ca.example.org left intact\n{\"line\":80,\"parameters\":{\"installonly_limit\":\"3\"},\"name\":\"yum\",\"kind\":\"class\"}\n{noformat}\n\nSo, in conclusion, I'm using the API as it is documented, but the {{/puppet/v3/status}} service simply doesn't seem to work.\n\nFor production monitoring purposes, we'd really, really like for this to work.\n\nh3.QA:\nRisk Assessment: Medium  (QA plans Functional Review, but no additional automated testing because this will be replaced in the near future.  QA will target automated testing against the long term solution.)\nProbability: High\nSeverity: Medium", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16613", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "16613", "issueType": "Bug", "key": "SERVER-564", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "62438a418678e9007059bcca", "resolution": "Fixed", "resolutionDate": "2015-05-22T12:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "documented /puppet/v3/status API returns \"Not Found\"", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We'll need to figure out where this work should land when you have it ready.  My best idea so far is to create a new folder called 'dev' or something, in the gatling-puppet-load-test repo, and then put this stuff in a 'manifests' directory or something.  Open to other ideas.", "created": "2015-04-23T03:41:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] That sounds good to me, I can't think of a better idea at the moment", "created": "2015-04-23T11:28:00.000000"}], "components": [], "created": "2015-04-22T14:34:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cce5661"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovdz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Did a bad job planning Joe's tasks"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4523130_*|*_10007_*:*_1_*:*_122969718_*|*_3_*:*_1_*:*_518603858_*|*_10009_*:*_1_*:*_1155067685_*|*_5_*:*_1_*:*_43453720996_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_4165835"}], "description": "Part of automation around setting up a Gatling load test development environment.\n\nTo work on the gatling load test automation, it's nice to have jenkins server under your control to test with. This manifest file should at least:\n* Install jenkins\n* Install the git plugin\n\nWill probably leverage https://forge.puppetlabs.com/rtyler/jenkins\n_________\nRisk Assessment: N/A: Ticket discusses tests and or test improvements.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16108", "fixedVersions": ["None"], "id": "16108", "issueType": "Task", "key": "SERVER-563", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-05-13T12:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Dev-environment - Create puppet manifest which stands up jenkins+git plugin", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-04-22T01:12:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Systems Engineering"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70f6ee26"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Gatling Automation - Foundation"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymwdr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5410239992_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_44653562748_*|*_10012_*:*_2_*:*_12834_*|*_10014_*:*_1_*:*_868337572"}], "description": "At one point, we were fairly close to having a reasonably automated environment for running Gatling tests against the Puppet Master / Puppet Server.  The jenkins jobs around this would give us a means to do performance testing (e.g. to visualize historical trends in performance and watch for improvements / regressions), scale testing, and long-running tests to help catch memory leaks and other issues.\n\nThe git repo that contains the code for this is here:\n\nhttps://github.com/puppetlabs/gatling-puppet-load-test\n\nThere is also a jenkins plugin that can be used to graph puppet-specific data here:\n\nhttps://github.com/puppetlabs/puppet-gatling-jenkins-plugin\n\nThese repos have not been maintained and thus they fell out of sync with the state of the products.  Given how frequently we find ourselves needing to kick off a gatling test to validate some feature or another, resuscitating these repos and getting the Gatling stuff back into a usable automated state would be a huge win.  Gatling gives us very comprehensive data about performance during the run, and allows us to simulate much, much higher load than other perf testing options, without requiring unreasonable amounts of hardware.  We can run on bare-metal in the office, rather than being forced to use cloud virtualization platforms whose variability can interfere with the accuracy of performance testing data.\n\nHere are some things that have changed since the last time our gatling operation repos were fully operational:\n\n* We had to upgrade to Gatling 2.0 because Gatling 1.x didn't work well with the agent \"keep-alive\" changes introduced Puppet 3.7.\n* Puppet Server did not exist at the time, so the beaker setup scripts in those repos are almost certainly out of date in terms of getting a server installed on an SUT.\n* PL was not using JJB at the time, so the updated versions of all of this stuff should probably take advantage of JJB in order to get the jenkins jobs set up.\n* We were focused pretty much exclusively on fairly short-term (hours, not days) tests at the time.  Lately we've had just as much - if not more - need for long-running (weeks) tests to validate memory use over time.  So we'll need additional flavors of jobs.\n* \"Directory Environments\" did not exist - so now we'll need to keep them in mind when we are considering where to install modules.\n\nIn an ideal world, when this work is done, we'd have (at least) the following:\n\n* Some perf regression test jobs, which run nightly or weekly, against both OSS and PE.  For each of these jobs, the steps would be:\n1. Provision a bare-metal box for the test (using cobbler; we have three low-end blades dedicated for this purpose)\n2. Install the latest version of Puppet Server / PE\n3. Install all modules / environments / hiera stuff for whatever our baseline gatling simulation looks like\n4. Classify all simulated agent names as necessary to ensure we trigger the correct catalog compilation\n5. Do an automated gatling recording of an agent run, for each of the agent types that the simulation includes\n6. Kick off the actual gatling run\n7. Record results and make them visible in the jenkins plugin's graph.\n\nStep 5 is important, because when new versions of PE come out, if they have changes to the installer modules that include new or different {{file}} resources, then the HTTP requests made by an agent will change accordingly, so older gatling recordings from previous release will no longer be accurate.  However, in reality, automating step 5 is going to be challenging, and may require some PRs against upstream gatling.  So, in the meantime, we'll just be doing step 5 manually at whatever frequency we decide is reasonable, and automating everything else.\n\n* Ability to kick off one-off long-running tests.  Steps here would be:\n1. User goes to jenkins and clicks \"build with parameters\" on this job.  they are prompted to enter the following as inputs:\n   a. OSS or PE\n   b. A build version number that matches a build that exists on builds.puppetlabs.net\n   c. id of a scenario configuration from gatling-puppet-load-test\n2. Run begins... provision bare metal box\n3. Install modules / code\n4. Classify all simulated nodes\n5. Automated gatling recording for each simulated agent (in The Future, we'll do manually for now as described above)\n6. Set up some additional tooling on the SUT to track OS-level info like resident memory usage, and ideally graph that data somewhere at some interval\n7. Kick off the actual gatling run\n8. Record results somewhere (tbd)\n\nOne of the challenges of doing development work against this code has been getting a reasonable development environment set up.  To this end, [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] has laid some great foundation here:\n\nhttps://github.com/puppetlabs/gatling-puppet-load-test/tree/master/dev\n\nHopefully this will make it much simpler for other devs to jump in and contribute to the project, and reconcile our old {{jenkins-integration}} code with the realities of the latest products.\n\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17595", "fixedVersions": [], "id": "17595", "issueType": "Epic", "key": "SERVER-562", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-12-01T12:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automation of performance and long running memory tests", "timeSpent": "PT0S", "updated": "2016-12-01T12:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79]!  Here's the ticket I was chatting with you about in e-mail yesterday.\n\nping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] just in case you're interested in following along.", "created": "2015-04-21T01:55:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "I added a link to the ToC on the index page. The ToC on the services page is internal, so I added a little subhead under JRuby information that says if you want to know more about tuning, check out the Tuning Guide. If that doesn't work for some reason, please let me know and I'll change it. cc/[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] ", "created": "2015-04-28T11:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] are your changes pushed up to the live website?", "created": "2015-04-29T07:07:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "They're PR'd in https://github.com/puppetlabs/puppet-server/pull/514.\n\neta: ARGH Jira, why won't you let me tag Chris Price! Jira--", "created": "2015-04-29T09:39:00.000000"}], "components": ["DOCS"], "created": "2015-04-21T01:54:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48181670"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzhv3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_639751192_*|*_10009_*:*_2_*:*_141597230_*|*_5_*:*_1_*:*_44609729171_*|*_6_*:*_1_*:*_0"}], "description": "Discussed via e-mail; would be nice to add a few additional links to the Puppet Server tuning guide docs.  In particular, it'd be great if it showed up in the TOC links on these two pages:\n\nhttps://docs.puppetlabs.com/puppetserver/1.0/index.html\n\nhttps://docs.puppetlabs.com/puppetserver/latest/services_master_puppetserver.html\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14937", "fixedVersions": [], "id": "14937", "issueType": "Improvement", "key": "SERVER-560", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-04-30T02:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add additional links to the tuning guide docs.", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "I added a known issue.", "created": "2015-04-22T13:55:00.000000"}], "components": [], "created": "2015-04-20T08:33:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58b40173"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xuv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_788717972_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_27404228893"}], "description": "For SERVER-119, some work was done to ensure that the values for custom certificate extensions were represented as UTF8Strings within the payload of an OctetString rather than just being a raw value inside of an OctetString.  This work was done to ensure that custom certificate extensions follow the format specified in RFC 5280.\n\nAs this is technically a breaking change in the content produced for new certificates, this work was intended to go into Puppet Server 2.X and Puppet 4.x only.  However, by bumping Puppet Server 1.0.8's dependency on puppetabs/ssl-utils to version 0.8.0, this change ended up going into Puppet Server 1.0.8 as well.\n\nFor backward compatibility, the ssl-utils 0.8.0 implementation will handle properly decoding a certificate that has extensions with raw values inside of an OctetString.  Beyond just the change in content generated, the only problem this issue should pose is that a certificate generated for Puppet Server 1.0.8 that has custom extensions would not be properly decodable, e.g., trusted facts would not be retrievable when referenced by manifests, if used in a prior Puppet Server 1.0.x release.  If a certificate had been generated for Puppet Server 1.0.8, then, the use of it could cause problems on a downgrade to Puppet Server 1.0.2 or earlier.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "16380", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16380", "issueType": "Bug", "key": "SERVER-558", "labels": ["docs_reviewed"], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2016-03-11T14:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Custom certificate extension values wrapped in PS 1.0.8", "timeSpent": "PT0S", "updated": "2016-03-11T14:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - would like to get your take on this one.\n\nMy recollection is that we bumped the default {{TimeoutStartSec}} to 120 seconds based on our empirical observation that the initial startup of the service for our CI infrastructure could sometimes take beyond 60 seconds.  That initial startup is expected to be somewhat slower than later startups, largely due to the overhead involved in initializing the Certificate Authority - CA and master private keys and certificates, etc.  Interesting that your Vagrant VMs are showing consistently slower bootup times.  Not sure exactly how to explain that at this point.\n\nRegarding configuration of the {{TimeoutStartSec}} value, we had originally hoped to make it a variable in {{/etc/sysconfig/puppetserver}} but, if I recall correctly, had run into problems on some platforms where variables defined in that file could not be interpolated into the startup values in the systemd service script.  Instead, we had to resort to just putting the raw value right into the systemd service file directly.  I believe you should still be able to customize that value without changing the file as originally installed from the package.  For example, you could create a file called {{/etc/systemd/system/puppetserver.service.d/local.conf}} and put the following content into it in order to bump the startup timeout to 3 minutes:\n\n{code:ini}\n[Service]\nTimeoutStartSec=180\n{code}\n\nI wouldn't have a problem with bumping the default timeout to something higher for future releases - e.g., 180 seconds.\n\n[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - what would you think about that and what are your thoughts in general on overriding systemd service defaults in this manner, etc.?", "created": "2015-04-27T14:21:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "If I recall correctly, environment file settings cannot be used in all sections of the systemd file (I *think* they are limited to being used in the Exec* settings). That is why setting it in the sysconfig file doesn't work.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I think the suggestion to use an override makes a lot of sense. I think 120 seconds is a perfectly sane limit and if people are seeing timeouts we can recommend they use such an override. I wouldn't be opposed to making the timeout longer, but there will always be a system slower than the timeout.", "created": "2015-04-27T14:45:00.000000"}, {"author": "557058:bf57daa5-f466-42d6-af40-4e2c537eac6d", "body": "I didn't know you can override this via {code}/etc/systemd/system/puppetserver.service.d/local.conf{code}, thanks.\n\nI still think 120s is a bit too low. \nI hit that limit on a i5 / 2.6GHz as well as a Xeon / 2.5GHz -- granted both were Vagrant boxes with only one vCPU and 3GB of RAM assigned.\nBut that shouldn't be a very uncommon setup, especially for learning or evaluation purposes. \nIt was kind of frustrating figuring this out - especially as this was literally the first interaction with puppetserver I had.", "created": "2015-04-27T15:06:00.000000"}, {"author": "557058:11058b7a-4aff-4d8d-ac6b-2015f6966e32", "body": "I have a similar problem - manual service startup succeeds, but on server reboot it fails because of timeout.", "created": "2015-08-19T17:21:00.000000"}, {"author": "557058:c1a9a241-3915-4839-9d54-a3bd711898b2", "body": "I'm experiencing something similar", "created": "2015-08-20T10:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:c1a9a241-3915-4839-9d54-a3bd711898b2], do you know if the {{systemd}} daemon had been restarted after you made that change?  If not, it may still be trying to start the service with cached settings.  You could either reboot the node or try running {{systemctl daemon-reload}} and see if the service is able to start after that.", "created": "2015-08-20T10:12:00.000000"}, {"author": "557058:c1a9a241-3915-4839-9d54-a3bd711898b2", "body": "Sure enough, right after I posted that, I decided to try it one last time before giving up and the service came up just fine and well within the timeout limits. Nothing else changed, so it may be a combination of other processes running on the server as well.\n\nThanks for the support!", "created": "2015-08-20T10:16:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:a491fd08-c377-48a3-9016-ff05bc96c576", "body": "I am having this issue as well. New load of puppet server, # service puppetserver start, runs until time is up. I have 4GB RAM, dual processors, Centos 6.7. RAM utilization during the start effort is 50% but both CPUs are walking the top, 100% until it dies. /var/log/puppetlabs/puppetserver/puppetserver.log says \"Shutting down due to JVM shutdown hook\" which would seem to be a signal to end the process. So it looks like I have plenty of RAM, the CPUs are working hard to get 'er done and time just runs out. Timeout is set at 113 seconds. According to this ticket there seems to be no way to bump that up, i.e. \"unresolved\". So I am dead in the water until there is some way to increase the time-out value. What can I do to assist in this effort?", "created": "2016-01-31T15:50:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Former user On redhat 6, you can adjust the start timeout in /etc/sysconfig/puppetserver. There should be a commented line at the end such as:\n{{# START_TIMEOUT=120}}. You can uncomment that and adjust it to increase or decrease the timeout on startup.", "created": "2016-01-31T20:22:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:a491fd08-c377-48a3-9016-ff05bc96c576", "body": "Matthaus,\n\nWorked Great! Thanks for your help!\n\nJohn Schons", "created": "2016-02-01T04:32:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I believe that this timeout has been bumped significantly since this ticket was originally filed, and also the workaround mentioned above can be used.  Closing as fixed, but we can re-open if it is still an issue.", "created": "2016-03-11T15:17:00.000000"}, {"author": "557058:bf57daa5-f466-42d6-af40-4e2c537eac6d", "body": "{quote}\nI believe that this timeout has been bumped significantly since this ticket was originally filed\n{quote}\n\nAs of version 2.2.1 the timeout is still 120 seconds.\nNothing has changed since I opened this ticket.", "created": "2016-03-11T15:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hmm.  There's a commit on ezbake from November:\n\nhttps://github.com/puppetlabs/ezbake/commit/85586a877f26d69e58c11a90e84da8ea901a9ff8\n\nWhich shows us bumping it from 180 to 300.  That change may post-date 2.2.1, but will definitely be in for 2.3.0 (which is coming out very soon).\n\nHowever I don't know why 2.2.1 wouldn't have had the value of 180, will investigate.", "created": "2016-03-11T16:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Agh:\n\nhttps://github.com/puppetlabs/puppet-server/blob/6e3ebbfb01a48ce86e9f89b729cf7dc8f14a8b06/project.clj#L82\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] are you aware of any reason why we should still have that line in our config?", "created": "2016-03-11T16:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bf57daa5-f466-42d6-af40-4e2c537eac6d] does the workaround above about the sysconfig file work for you for the time being?", "created": "2016-03-11T16:15:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] No, we should pull that out.  I think that was a relic from when we wanted to bump the default timeout from 60 seconds (in ezbake) up to 120 seconds.  We should just pull that out now and go with the longer global ezbake timeout.", "created": "2016-03-11T16:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I just opened a PR.  I think it's too late for this to go into 2.3.0 but at least it'll get into the next release.", "created": "2016-03-11T16:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#master at [d29067|https://github.com/puppetlabs/puppet-server/commit/d290673b2c415459ba314f53ce203eb6c84e00cd].", "created": "2016-03-11T23:26:00.000000"}], "components": ["Puppet Server"], "created": "2015-04-20T03:53:00.000000", "creator": "557058:bf57daa5-f466-42d6-af40-4e2c537eac6d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ceeb0e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z07:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Quick fix"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_834091603_*|*_1_*:*_1_*:*_1410716218_*|*_5_*:*_1_*:*_5099600600_*|*_6_*:*_2_*:*_29387786_*|*_10006_*:*_1_*:*_26800220011"}], "description": "I have the problem that starting puppetserver fails because the 120 seconds systemd timeout is reached.\nThe TimeoutStartSec=120 in /usr/lib/systemd/system/puppetserver.service is too short.\nThat value is also not configurable via /etc/sysconfig/puppetserver.\n\nI'm experimenting with running puppetserver 2.0.0 in a Vagrant VM, the initial run fails around half of the time.\nNormal restarts after the initial run come also very close to the timeout:\n\n{code}\n[root@puppet ~]# time systemctl start puppetserver.service\n\nreal    1m18.108s\nuser    0m0.011s\nsys     0m0.021s\n{code}\nTested on CentOS 7.\n\nI think that value should be raised and also made configurable.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15548", "fixedVersions": ["SERVER 2.4.0"], "id": "15548", "issueType": "Bug", "key": "SERVER-557", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bf57daa5-f466-42d6-af40-4e2c537eac6d", "resolution": "Fixed", "resolutionDate": "2016-03-21T16:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver fails to start, TimeoutStartSec=120 is too short", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This issue sounds like SERVER-528.  [~accountid:557058:2c6c87f8-2af9-4074-bebe-0dcc5574ddcf] - can you confirm that is the case?", "created": "2015-04-22T16:20:00.000000"}, {"author": "557058:2c6c87f8-2af9-4074-bebe-0dcc5574ddcf", "body": "Yes it's a dupe!\nOn 23 Apr 2015 8:20 am, \"Jeremy Barlow (JIRA)\" <issue-updates@puppetlabs.com>\n\n", "created": "2015-04-22T17:23:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:557058:2c6c87f8-2af9-4074-bebe-0dcc5574ddcf].\n\nI'm going to close this as a duplicate in favor of SERVER-528, then.", "created": "2015-04-23T23:16:00.000000"}], "components": [], "created": "2015-04-20T02:25:00.000000", "creator": "557058:2c6c87f8-2af9-4074-bebe-0dcc5574ddcf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d7643f8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzgrj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_334256287_*|*_6_*:*_1_*:*_0"}], "description": "I installed a new puppet master and ran:\n\n{code}/opt/puppetlabs/bin/puppet agent -to --server `hostname`{code}\n\nOops, didn't work, the server wasn't there.\n\n{code}/etc/init.d/puppetserver start{code}\n\nThis failed (silently, had to read the logs) because the `puppet agent` command created a cert request.\n\nIt would be nice to handle this case more clearly.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14936", "fixedVersions": [], "id": "14936", "issueType": "Bug", "key": "SERVER-569", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:2c6c87f8-2af9-4074-bebe-0dcc5574ddcf", "resolution": "Duplicate", "resolutionDate": "2015-04-23T23:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver won't start if a cert request exists", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [{"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-29T03:03:00.000000", "name": "20150429_java_pid17668.hprof.part01.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10792"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-29T03:03:00.000000", "name": "20150429_java_pid17668.hprof.part02.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10864"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-29T03:03:00.000000", "name": "20150429_java_pid17668.hprof.part03.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10931"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-29T03:03:00.000000", "name": "20150429_java_pid17668.hprof.part04.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11021"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-29T03:03:00.000000", "name": "20150429_java_pid17668.hprof.part05.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11101"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-29T03:03:00.000000", "name": "20150429_java_pid17668.hprof.part06.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11180"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-29T03:03:00.000000", "name": "20150429_java_pid17668.hprof.part07.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11258"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-29T03:03:00.000000", "name": "20150429_java_pid17668.hprof.part08.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10563"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-29T03:03:00.000000", "name": "20150429_java_pid17668.hprof.part09.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10642"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T02:29:00.000000", "name": "java_pid.part01.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11019"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T02:29:00.000000", "name": "java_pid.part02.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11098"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T02:29:00.000000", "name": "java_pid.part03.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11177"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T02:29:00.000000", "name": "java_pid.part04.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11256"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T02:29:00.000000", "name": "java_pid.part05.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10561"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T02:29:00.000000", "name": "java_pid.part06.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10640"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T02:29:00.000000", "name": "java_pid.part07.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10721"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T02:29:00.000000", "name": "java_pid.part08.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10791"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T03:47:00.000000", "name": "java_pid15802.hprof.part1.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10863"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T03:47:00.000000", "name": "java_pid15802.hprof.part2.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10930"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T03:47:00.000000", "name": "java_pid15802.hprof.part3.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11020"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T03:47:00.000000", "name": "java_pid15802.hprof.part4.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11099"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T03:47:00.000000", "name": "java_pid15802.hprof.part5.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11178"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T03:47:00.000000", "name": "java_pid15802.hprof.part6.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11257"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T03:47:00.000000", "name": "java_pid15802.hprof.part7.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10562"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-04-22T03:47:00.000000", "name": "java_pid15802.hprof.part8.rar", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10641"}, {"attacher": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "created": "2015-05-12T01:40:00.000000", "name": "puppetlabs.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11103"}, {"attacher": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "created": "2015-05-06T17:46:00.000000", "name": "thread-stacks.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11102"}], "comments": [{"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] moving this to SERVER. If that doesn't make sense for some reason, let me know.", "created": "2015-04-17T17:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] Yeah, I think the SERVER project is appropriate for this one.\n\nWith a more generic setup, I wasn't able to reproduce the issue.  In my case, I setup a Debian 7.8 VM with 10 Gb of RAM (default Python distribution version of 2.7.3), installed Puppet Server 2.0, and modified my {{/etc/default/puppetserver}} file to have:\n\n{noformat}\nJAVA_ARGS=\"-Xms7g -Xmx7g -XX:MaxPermSize=4g\"\n{noformat}\n\nMy {{/etc/puppetlabs/code/environments/production/manifests/site.pp}} file had:\n\n{code:puppet}\nnotify { 'generate from python':\n  message => generate(\"/usr/bin/python\", \"${settings::confdir}/test.py\")\n}\n{code}\n\nIn {{/etc/puppetlabs/puppet/test.py}}, I had:\n\n{code:python}\nprint \"hello from python\"\n{code}\n\nWhen I did an agent run against the master, {{/opt/puppetlabs/puppet/bin/puppet agent -t}}, I saw the following in the agent output:\n\n{noformat}\n...\nInfo: Applying configuration version '1429372216'\nNotice: hello from python\n\nNotice: /Stage[main]/Main/Notify[generate from python]/message: defined 'message' as 'hello from python\n'\n...\n{noformat}\n\nThe {{/var/log/puppetlabs/puppetserver/puppetserver.log}} file didn't show any errors during the agent run and the server remained running - no Java OutOfMemoryError.  A repeat of the agent run showed the same behavior - no problems.\n\n---\n\nIn theory, it wouldn't seem that running some other python code in this manner, e.g., Bacula tools, would be any more susceptible to the OutOfMemoryError than what I ran since the implementation behind {{generate()}} should ultimately lead to Java spawning a separate process.  I can try to do the same experiment with {{bacula-genkey}} and see if I can reproduce.\n", "created": "2015-04-18T10:00:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "The bacula-genkey is just a simple python script that generates a password and stores in in a directory. It will return the existing password if its called twice for the fqdn. Just a way to generate backup passwords, it works fine in Puppet 3.7 with futureparser.\n\n{noformat}\n#\n# Create a new password for bacula if it does not already exist for the given hostname.\n#\nimport sys\nimport random\nimport string\nimport os.path\n\npwd_filename = \"%s\" % sys.argv[1]\npwd = ''\n\nif (os.path.exists(pwd_filename)):\n    file_desc = open(pwd_filename, 'r')\n    pwd = (file_desc.read()).strip()\nelse:\n    pwd = ''.join(random.SystemRandom().choice(string.uppercase + string.digits) for _ in xrange(33))\n\n    with open(pwd_filename, \"wt\") as pwd_file:\n        os.chmod(pwd_filename, 0660)\n        pwd_file.write(\"%s\" % pwd)\nsys.stdout.write(\"%s\" % pwd)\nsys.exit(0)\n{noformat}", "created": "2015-04-20T07:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks for this code snippet.  I changed the {{test.py}} script I was using to try to reproduce the problem to have the same content as the script that you posted.  I also updated the {{site.pp}} code to have the following:\n\n{code:puppet}\nnotify { 'generate from python':\n  message => generate(\"/usr/bin/python\", \"${settings::confdir}/test.py /tmp/${::fqdn}.key\")\n}\n{code}\n\nWhen I did a {{puppet agent -t}} run to the master, the run again succeeded and the master did not fail with an {{OutOfMemoryError}}.  Here was the output from multiple agent runs performed without a need to restart the master:\n\n{noformat}\nNotice: RYCMKJJ4Y203K8QF5XQSVQGZ9CJC7ZHZL\n\nNotice: /Stage[main]/Main/Notify[generate from python]/message: defined 'message' as 'RYCMKJJ4Y203K8QF5XQSVQGZ9CJC7ZHZL\n'\n{noformat}\n\nCan you see anything significantly different between your setup and mine that might be necessary to reproduce the problem?\n\nDoes the {{OutOfMemoryError}} occur for you with a simpler Python script or with having your {{generate()}} function call invoke something other than Python?\n\nDid you see happen to see the problem with a prior version of Puppet Server, e.g., 1.0.2 or 1.0.8?", "created": "2015-04-21T13:59:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "Hi.\nI can't figure out whats special with my environment, it's just Debian 7.8.0 Wheezy in  a virtualbox environment with vagrant and I have allocated 8196 MB of RAM to the puppetmaster.\n\nWe have been running puppet 3.7.5 (puppetmaster 3.7.5-1puppetlabs1 wheezy) with future parser prior to testing out Puppet Collection 1 (PC1). The python version that we use is Python 2.7.3,  puppetserver is 2.0.0-1puppetlabs1.\n\nFollowing code snippits works fine:\n{noformat}\n  notify{ 'Hi from echo':\n    message => generate(\"/bin/echo\", '\"Hi\"'),\n  }\n{noformat}\n\n{noformat}\n  notify{ 'Hi from bash':\n    message => generate(\"/etc/puppetlabs/puppet/opt/bin/test.sh\"),\n  }\n{noformat}\n\ntest.sh:\n{noformat}\n#!/bin/bash\necho \"Hi\"\n{noformat}\n\n{noformat}\nnotify{ 'Hi from Python2.7':\n  message => generate(\"/etc/puppetlabs/puppet/opt/bin/test.py\"),\n}\n{noformat}\n\ntest.py:\n{noformat}\n#!/usr/bin/python2.7\nprint \"Hi\"\n{noformat}\n\n{noformat}\nnotify{ 'Hi from Python2.7':\n  message => generate(\"/etc/puppetlabs/puppet/opt/bin/test1.py\"),\n}\n{noformat}\n\ntest1.py:\n{noformat}\n#!/usr/bin/python2.7\nimport sys\nsys.stdout.write(\"Hi\")\n{noformat}", "created": "2015-04-22T01:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "When your server is crashing with OutOfMemoryError, does it generate an {{.hprof}} file in the log directory?  If so, we can open this up with a tool like YourKit or maybe JVisualVM to see if there is an obvious culprit of the memory usage.\n\nWould also be worth checking what version of the JDK is in use, both on [~accountid:557058:f7c6c093-bc89-442c-8f38-14261500f10b]'s system and on [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]'s.", "created": "2015-04-22T01:52:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "Just attached the hprof file, its rather large ~ 800 MB, I am using openjdk-7-jre-headless (7u75-2.5.4-1~deb7u1)", "created": "2015-04-22T02:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:f7c6c093-bc89-442c-8f38-14261500f10b] thanks, will try to find some time to take a peek at it today.\n\nOne thing that seems odd--for an 8GB max heap, I'd expect you to end up with a heap dump file that was about 8GB as well.  800MB actually sounds like a very small file for an 8GB heap.  Can you attach a copy of your /etc/sysconfig/puppetserver or /etc/defaults/puppetserver?", "created": "2015-04-22T02:56:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Sorry, forgot to change the default values in */etc/default/puppetserver*, currently switching between Puppet 3 and 4. \n\nI have done it now and puppetserver is producing a ~ 2 GB hprof file.\n\n/etc/defaults/puppetserver\n{noformat}\n###########################################\n# Init settings for puppetserver\n###########################################\n\n# Location of your Java binary (version 7 or higher)\nJAVA_BIN=\"/usr/bin/java\"\n\n# Modify this if you'd like to change the memory allocation, enable JMX, etc\nJAVA_ARGS=\"-Xms7g -Xmx7g -XX:MaxPermSize=4g\"\n\n# These normally shouldn't need to be edited if using OS packages\nUSER=\"puppet\"\nGROUP=\"puppet\"\nINSTALL_DIR=\"/opt/puppetlabs/server/apps/puppetserver\"\nCONFIG=\"/etc/puppetlabs/puppetserver/conf.d\"\nBOOTSTRAP_CONFIG=\"/etc/puppetlabs/puppetserver/bootstrap.cfg\"\nSERVICE_STOP_RETRIES=60\n\n# START_TIMEOUT can be set here to alter the default startup timeout in\n# seconds.  This is used in System-V style init scripts only, and will have no\n# effect in systemd.\n# START_TIMEOUT=120\n{noformat}", "created": "2015-04-22T03:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "So, for your MaxPermSize, you should probably only be using something like 256MB.  Setting that to 4G could be problematic (I noticed that [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] put that in his reply to you, I think that might have been a typo, but maybe he can weigh in).\n\nI can look into getting an sftp account for you to upload the hprof file to.  Before that, though, a question: in the defaults file you sent over, it shows a 7GB max heap.  Was this the setting that you were using when you got a 2GB .hprof file?  That difference still seems unusual to me.\n\nHow much RAM does the system have?  And how many CPU cores?  In your config file (/etc/puppetserver/puppetserver.conf), do you have an explicit value for 'max-active-instances' in your 'jruby-puppet' section?\n\nIf you look at /var/log/puppetserver/puppetserver.log, there should be some lines that say things like \"Creating JRuby instance 1 of x\"", "created": "2015-04-22T03:44:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "New hprof from puppetserver with corrected JAVA_ARGS", "created": "2015-04-22T03:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sounds like [~accountid:557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8] and I are using the same JDK on our Debian installs.  Here's mine:\n\n{noformat}\nroot@debian7:/# dpkg --get-selections | grep jdk\nopenjdk-7-jre-headless:amd64\t\t\tinstall\n\nroot@debian7:/# java -version\njava version \"1.7.0_75\"\nOpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~deb7u1)\nOpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)\n{noformat}", "created": "2015-04-22T09:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}So, for your MaxPermSize, you should probably only be using something like 256MB. Setting that to 4G could be problematic (I noticed that Jeremy Barlow put that in his reply to you, I think that might have been a typo, but maybe he can weigh in).{quote}\n\nYeah, I agree that the MaxPermSize probably doesn't need to be bumped up from the default at install, 256MB.  I only did it in this case in an attempt to reproduce the problem with the same memory configuration as what [~accountid:557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8] was using.\n\nI also was not able to reproduce the problem using the configuration from my base package install:\n\n{noformat}\nJAVA_ARGS=\"-Xms2g -Xmx2g -XX:MaxPermSize=256m\"\n{noformat}\n\nFor my VM, I was using 4 virtual cores, with the default 6 {{max-active-instances}} configured based on that core configuration.", "created": "2015-04-22T09:49:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "I had 3 instances.\n\nI have now given the vm 4 virtual cores (virtualbox) and its now running on 6 instances, still the same issue.\n\n{noformat}\n2015-04-23 08:32:52,044 INFO  [p.t.s.w.jetty9-core] Starting web server.\n2015-04-23 08:32:52,048 INFO  [o.e.j.s.Server] jetty-9.1.z-SNAPSHOT\n2015-04-23 08:32:52,144 INFO  [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@633febeb{/puppet-ca,null,AVAILABLE}\n2015-04-23 08:32:52,145 INFO  [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@63bbea0{/puppet,null,AVAILABLE}\n2015-04-23 08:32:52,145 INFO  [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@19f38288{/,null,AVAILABLE}\n2015-04-23 08:32:52,146 INFO  [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@286b0b2a{/puppet-admin-api,null,AVAILABLE}\n2015-04-23 08:32:52,267 INFO  [o.e.j.s.ServerConnector] Started ServerConnector@530e0f85{SSL-HTTP/1.1}{0.0.0.0:8140}\n2015-04-23 08:32:52,272 INFO  [p.s.m.master-service] Puppet Server has successfully started and is now ready to handle requests\n2015-04-23 08:32:53,895 INFO  [puppet-server] Puppet Puppet settings initialized", "created": "2015-04-23T00:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:f7c6c093-bc89-442c-8f38-14261500f10b] ok, so just to confirm:\n\n* Your current settings for heap size are set to 2G (-Xms, -Xmx)\n* You've reduced the MaxPermSize down to something like 256m\n* You are getting an OOM the very first time that generate function gets called\n* Your .hprof file that is created when that happens is about 2GB as well\n\nIf that's all accurate, then can you save off a copy of one of those .hprof files, and e-mail me a public key ( chris AT puppetlabs DOT com ), and I'll work with our ops/support teams to get an SFTP account set up using your public key.  Then you can upload the hprof file so we can have a look at it.\n\nThanks!", "created": "2015-04-23T03:13:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Everything is correct except the .hprof is 959M when (-Xms, -Xmx) is 2G. Its 2.1G with {{JAVA_ARGS=\"-Xms7g -Xmx7g -XX:MaxPermSize=4g\"}}.", "created": "2015-04-23T05:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I was able to stitch back together all of the {{java_pid15802.hprof.partX.rar}} files to get a {{java_pid15802.hprof}} file which is about 2.1 Gb in size.  From the allocated objects inside of that I see when opening that file in YourKit, it appears that the maximum JVM heap size was probably around 2 Gb.\n\nOne of the objects allocated in the hprof file is a byte array which is over 1.9 Gb.  Looking at some of the first few bytes in that array, it appears that this might be a serialized form of a Loader-related construct:\n\n{noformat}\n[#<Puppet::Pops::Loader::ModuleLoaders::FileBased:0x39bcda65 @loaders=#<Puppet::Pops::Loaders:0x94963df ...>,...\n{noformat}\n\nInside of the array, there's evidence of a lot of other Puppet code being loaded than just a simple manifest referencing the {{generate()}} function.  I would be curious if [~accountid:557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8] were still able to reproduce the problem with just a single manifest -- like the one I used which just has a `notify` resource -- which also calls the {{generate()}} function to invoke the {{bacula-genkey}} script via the python executable.\n\nI wonder if it would be worthwhile to do a second capture of a heap dump from an {{OutOfMemoryError}} with the larger 7 Gb maximum heap size and, assuming the large binary array were present, if the byte array from the 2 Gb dump could be diffed against the 7 Gb dump to see if there were a significant difference that might help identify the problem.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] - curious what your thoughts are on why this problem could be occurring.  I could get you guys a copy of just the binary array by itself it that would help for analysis.", "created": "2015-04-24T17:29:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The loaders-structure holds all loaded functions (currently, will later also hold all loaded ruby code for type etc.). Once something loaded is also instantiated it is bound to a closure scope, which in turn has references to just about everything else. If something in this gets serialize it will serialize just about everything in the puppet runtime.\n\nAt the start of an environment the loaders are populated with the built in logging functions, then a loader that is capable of loading the functions that are in core puppet, a loader that can load things from the environment, and one loader configured per module on the module path. A loader consists of a pair of loaders (a public and a private). Loaded things are sometimes promoted for faster lookup (i.e. a \"name => object\" index entry is made in multiple loaders). The loaders code has been written with memory footprint and performance in mind, but maybe there are issues with that causing it to consume more memory than what is optimal.\n\nPUP-4461 is about a memory leak/problem with binding the system loader (it will just leak once per process). Not sure it has any relationship to this problem except that one environment instance is wasted per server instantiation.", "created": "2015-04-25T06:44:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "In the worst case when performing an external command I can imagine that >2x the size of the original size of the process being required. This depends on how the fork/exec is implemented in the JVM in question, and what is supported in the VM it is running in. The fork may, if poorly supported, create a copy (this could fail with out of memory), then after the copy is made, depending on what the fork executes before it gets to the exec (that replaces the memory image), it may need more heap, this expansion of the heap may lead to out of memory in the forked process (because there are now two copies of the entire process). Once it gets to the exec (that replaces the image in memory with that of the external command to run) the memory footprint goes down again (assuming that that the external command is small in memory size).\n\nHistorically JVMs were notoriously bad at fork/exec. Later versions have better implementations, but they rely on support from the OS/VM to reduce the memory footprint and amount of copying. One way around this is to start a separate process that the main process talks to via some IPC. The second process is forked as early as possible to make it be very small. The second process is then responsible for performing execs. (I think there are libraries available for this as well - it was quite a while since I last worked with this).\n\n", "created": "2015-04-25T07:07:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "{quote}\nHistorically JVMs were notoriously bad at fork/exec. Later versions have better implementations, but they rely on support from the OS/VM to reduce the memory footprint and amount of copying. One way around this is to start a separate process that the main process talks to via some IPC. The second process is forked as early as possible to make it be very small. The second process is then responsible for performing execs. (I think there are libraries available for this as well - it was quite a while since I last worked with this).\n{quote}\n\nMinor gloss on the above: in a system I worked on previously, we also didn't want to fork at runtime (albeit for different reasons). In that case however, rather than fork early, we had a completely separate system service, which then acted as Henrik describes: i.e. it was responsible for running execs, and other processes communicated with it via some custom IPC. It was quite a simple process actually.", "created": "2015-04-25T07:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Puppet Server isn't using a separate process to bootstrap the execution of additional processes.  Here's where this is done today: https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.0.0/src/java/com/puppetlabs/puppetserver/ExecutionStubImpl.java#L25.  While there may be some memory utilization issues exposed by this approach, it isn't obvious to me in this case that the JVM fork/exec is at fault.  I'm more concerned initially about why there apparently is a \"loaders-structure\" byte array which is consuming the vast majority of the heap at the point of the OOM - 1.9+ of a total 2.0 Gb allocated.  Not sure if that would have anything to do directly with the fork/exec of the python process?\n\n[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] - do you have any theories on what it is that might be causing the \"loaders-structure\" to get serialized - something that might be indirectly done through some user puppet code?  It sounds like the fact that the serialization is occurring may be \"normal\" - but just that size of what is being serialized is not?  Also, do you know if we have any sort of tools which could be used to analyze the content of the \"loaders-structure\" to figure out what the dominators within it might be?\n\nPerhaps the large serialized object occurs with an MRI Ruby master as well but the presence of it has not caused a puppetmaster failure because the MRI Ruby runtime was just able to absorb more system memory than what Puppet Server allows per a relatively more constrained Java heap?", "created": "2015-04-27T16:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8], would it be possible for you to construct the minimal possible \"self-contained\" set of your Puppet code which would be necessary for us to be able to reproduce the OOM?  As mentioned earlier, I have yet to be able to reproduce the OOM with what appears to be a very similar memory and OS configuration to what you are using but with just a simple \"site.pp\" with a notify resource which calls the {{generate}} function to spawn the {{bacula-genkey}} script in Python.  I suspect that there's some important difference between this simple example and the Puppet code that you have in place on your Puppet Server master which is necessary in order for one to be able to reproduce the problem.", "created": "2015-04-27T16:23:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] PUP-4461 now has a fix, and we understand better what problems that may cause. It would use up more memory than required by binding a complete environment per set of loaded 4.x functions. When the environment was evicted, the scopes, indirectly the compiler and catalog were still held on to by the loaded functions. Thus, after a series of requests, and those loading different 4.x functions there could be multiple copies in memory.\n\nIt is however not an error that the loaders structure in itself hold on to all these things while a compilation is taking place (those objects would exist anyway", "created": "2015-04-27T17:29:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] The self-contained code works\n\nnodes.pp:\n{noformat}\nnode 'puppet.puppet.local' {\n  notify { 'python output':\n    message => generate('/usr/bin/python2.7', \"${settings::confdir}/opt/bin/bacula-genkey\", \"${settings::confdir}/opt/etc/baculaclient/${::fqdn}.key\"),\n  }\n}\n{noformat}\n\noutput:\n{noformat}\nroot@puppet:/etc/puppetlabs/code/environments/production/manifests# /opt/puppetlabs/puppet/bin/puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for puppet.puppet.local\nInfo: Applying configuration version '1430217636'\nNotice: OXJ9C7AEFRZXT1LE3G604DAOFBGZL7NUN\n\nNotice: /Stage[main]/Main/Node[puppet.puppet.local]/Notify[python output]/message: defined 'message' as 'OXJ9C7AEFRZXT1LE3G604DAOFBGZL7NUN\n'\nInfo: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml\nNotice: Applied catalog in 0.01 seconds\n{noformat}\n", "created": "2015-04-28T04:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}PUP-4466 now has a fix, and we understand better what problems that may cause.{quote}\n\nIs this the PUP ticket that you meant to refer to here?  The PUP-4466 ticket that I see has no description and a summary called \"add acceptance: ensure functions can be written/execute in puppet language\".\n\n{quote}It is however not an error that the loaders structure in itself hold on to all these things while a compilation is taking place (those objects would exist anyway", "created": "2015-04-28T10:21:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Sorry, PUP-4461 (will fix previous comments).", "created": "2015-04-28T10:38:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "bq. Henrik Lindberg - on the theory that the other PUP ticket you mentioned might be related to this problem, would it be possible to give Olof Hellqvist some information on how to apply that fix to see if the original problem still appears with it?\n\nYes, that ticket shows how to patch puppet (a very simple one line change).\n\nbq. What I see in the memory profiler (YourKit) is that one instance of a raw byte array has a shallow size of over 1.9 Gb - ~ 94% of the available heap space. This size is just accounting for the individual bytes in that array as it isn't holding references to other objects. This byte array is the one that starts with content which looks like it has serialized Ruby objects:\n\nAs I said, there is no code that I am aware of that creates a serialized byte array of everything in the loaders. Can you see what holds on to that array?\n\nThe loaders are stored in the Puppet context under the key {{:loaders}} - it is typically set via a lazy entry here: https://github.com/puppetlabs/puppet/blob/master/lib/puppet/parser/compiler.rb#L156 - that calls the method loaders, which creates them: https://github.com/puppetlabs/puppet/blob/master/lib/puppet/parser/compiler.rb#L260 - and the loaders are configured here: https://github.com/puppetlabs/puppet/blob/master/lib/puppet/pops/loaders.rb  (the PUP-4461 problem was on L19).\n\nWhen the context goes out of scope, the entire structure should be garbage collected. The loaders structure hold loader instances (a StaticLoader, and several ModuleLoaders). They in turn keep track of what is loaded. Something loaded has a reference to scope, and to the loader that loaded that element. Nothing else (except) Puppet's context should store a handle to loaders.\n\nIt would be a problem if there was leakage of contexts: push after push, but no pops.\n\nStill baffled by finding a binary array with all of those loader objects.\n", "created": "2015-04-28T10:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}As I said, there is no code that I am aware of that creates a serialized byte array of everything in the loaders. Can you see what holds on to that array?{quote}\n\nNothing too telling there.\n\nI see that two objects have strong references to the big byte array:\n\n1) A java.nio.HeapByteBuffer that is referred to by a java.lang.Thread.  The Thread would be one of the ones that the Jetty web server had spun up.\n\n2) An org.jruby.util.ByteList that is referred to by an org.jruby.RubyString that is referred to by the same java.lang.Thread mentioned above.\n\nHard to tell from that what causes the byte array to be allocated.  If we had a way to reproduce this in-house, I'd try running the repro scenario with stack trace capturing on from YourKit to see where the object is being allocated from.\n\n--\n\nWe may be able to get a more accurate read on the name of a Ruby class which may be holding the reference to the object by enabling JRuby's \"reify classes\" feature.  This causes JRuby to create named classes for Ruby objects rather than leaving them more anonymized.  To do this on Debian, one would need to add a \"-Djruby.reify.classes=true\" argument to the {{JAVA_ARGS}} in the {{/etc/default/puppetserver}} file:\n\n{noformat}\nJAVA_ARGS=\"-Xms2g -Xms2g -XX:MaxPermSize=256m -Djruby.reify.classes=true\n{noformat}\n\n[~accountid:557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8] - would you be able to do that, restart the puppetserver service, reproduce the failure again, and upload the resulting .hprof file?\n\n", "created": "2015-04-28T12:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}It would be a problem if there was leakage of contexts: push after push, but no pops.{quote}\n\nWe do have this line in Puppet Server's {{initialize_puppet}}, https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.0.0/src/ruby/puppet-server-lib/puppet/server/puppet_config.rb#L40:\n\n{code:ruby}\nPuppet::ApplicationSupport.push_application_context(master_run_mode)\n{code}\n\nThis would only happen one time, during service initialization, for each JRuby \"container\" created in Puppet Server.  TBH, I don't know if what, if anything, would ever pop that back off but we shouldn't have multiple pushes occurring within the same container.  I believe in the original reproduction case that there were 3 of these containers being created.", "created": "2015-04-28T13:02:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "What do we have that crosses the JVM/Ruby border - say Java calling Ruby and getting a return object that is unintended but needs to be serialized. Likewise what calls do we have that go Ruby to JVM, what do they pass? I would look closely at any ruby code that includes bridge to jvm/java.", "created": "2015-04-28T13:31:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I have a hard time imagining that a byte buffer would be used for anything but serialization unless JRuby is managing the entire Ruby heap in a byte buffer (or series of byte buffers).", "created": "2015-04-28T13:33:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] The ticket is now updated with the Hprof file (20150429..) from puppetserver running with {{JAVA_ARGS=\"-Xms2g -Xms2g -XX:MaxPermSize=256m -Djruby.reify.classes=true\"}}", "created": "2015-04-29T03:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sorry for the belated response but, thanks, [~accountid:557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8] for providing the additional 20150429_java_pid17668 hprof file.  It appears that the maximum heap size used for this run was effectively about 1g rather than 2g.  This could be because your {{JAVA_ARGS}} had set the {{-Xms}} argument twice instead of setting {{-Xmx}}.\n\nIn any event, the hprof file does appear to show the additional reified class names as expected per the use of the {{-Druby.reify.classes}} argument but unfortunately doesn't give us any more insight into the specific object that is holding on to the large byte array.  Again, it appears only to be an {{org.jruby.RubyString}} held by a {{java.lang.Thread}} as with the previous file.\n\n[~accountid:557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8], since it seems that there is some difference between the minimal manifest with an invocation of the {{generate}} function and the full set of your Puppet code that needs to be in place on the master in order to reproduce the {{OutOfMemoryError}}, would you be able to build up a more complete example that would reproduce the error and, assuming that can be done, share that as an attachment to this ticket?", "created": "2015-05-06T15:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] For some background, Puppet Server registers its own {{execution_stub}} that should be used by core Ruby Puppet to spawn an executable.  The registration for that is done here - https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.0.0/src/ruby/puppet-server-lib/puppet/server/execution.rb.  This uses the following Java class - https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.0.0/src/java/com/puppetlabs/puppetserver/ExecutionStubImpl.java.  This results in the following call to perform the execution:\n\n{code:java}\nProcessWrapper wrapper = new ProcessWrapper(Runtime.getRuntime().exec(command))", "created": "2015-05-06T15:36:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Will look at the code at the pointers you sent. The one thing I can imagine is if some logic in Ruby calls something in Java and gives it scope as a parameter - that would force the call to serialize scope (I think) to make it a Java Object. And scope holds on to the banana, that is attached to the gorilla that knows which jungle it lives in... - say a 3.x function that passes self to java.", "created": "2015-05-06T16:46:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "This seems relevant: http://bugs.java.com/view_bug.do?bug_id=5049299 - i.e. if the JVM is not using posix_spawn function in the implementation of ProcessBuilder.exec it will do a fork exec, and is then exposed to running out of memory at that point. (The byte buffer observed when profiling memory may just be the JRuby Heap). That bug also suggests it could be a problem running out of swap space.\n\nThis is also relevant: https://gist.github.com/pmahoney/1970815\n\nThere seems to be a simple way to test if it is a fork that causes the out of memory by doing this on a linux box:\n{code}\necho 0 > /proc/sys/vm/overcommit_memory\n{code}\nAs that tricks the vm to allow overcommits on memory reservation thus tricking the fork's request to believe it got the reservation (which it will not use because it is doing an exec before needing that memory because of 'copy on write'). The downside is that processes may fail in ways they are not prepared to handle so it should be used with caution / as an experiment.", "created": "2015-05-06T17:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] From the hprof file, I noticed the stack trace at the point where the OutOfMemoryError occurs doesn't have anything in it which points to the {{ExecutionStubImpl}} class, which I would have expected if it were the {{Runtime.exec}} call directly that were provoking the {{OutOfMemoryError}}.  I've attached a dump of all of those threads as {{thread-stacks.txt}}.  See the thread named {{qtp1932158439-69}}.  So, still not sure from this if the {{ProcessBuilder.exec}} or something lower down is directly to blame?\n\nAlso, the JDK bug that you linked seems to indicate that the fix was done in 7u55 and I believe [~accountid:557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8] has been running with a later JDK, 7u75.", "created": "2015-05-06T17:46:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Looked at the stack trace - looks like it is trying to output a string created as an inspect of a Ruby object in a Ruby rescue. This is about \"one screen\" down:\n{code}\norg.jruby.ast.RescueNode.handleException(Ruby, ThreadContext, IRubyObject, Block, RaiseException) RescueNode.java:174\n{code}\n\nNo fork/exec stuff at all as you say [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f].\n\nAnd that led me to this: https://jira.codehaus.org/browse/JRUBY-6772 (which is a Won't Fix, but it explains that certain types of errors like a NameError may be associated with an object that causes a huge inspect string.", "created": "2015-05-06T18:08:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Just uploaded a subset of my puppet manifest that still produces the crash, see the file {{puppetlabs.tar.gz}}", "created": "2015-05-12T01:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:f7c6c093-bc89-442c-8f38-14261500f10b] thanks very much for uploading the file.  I don't have a debian VM set up right now but will work on getting one running.  One question in the meantime, just to make sure I'm understanding everything correctly", "created": "2015-05-12T08:51:00.000000"}, {"author": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yes that's correct, I am trying to migrate my vagrant puppetmaster to Puppet 4 and I am seeing the behaviour by running {{/opt/puppetlabs/bin/puppet agent -t}} on the localhost", "created": "2015-05-12T08:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:f7c6c093-bc89-442c-8f38-14261500f10b] great, thanks.  We'll attempt to repro ASAP.\n", "created": "2015-05-12T10:07:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I've been spending a lot of this week working on this issue, and so wanted to provide an update.\n\nI am able to reproduce the memory leak locally using [~accountid:557058:f7c6c093-bc89-442c-8f38-14261500f10b]'s code running Puppet Server from source, and I've been able to narrow down the issue to the catalog request. I was able to reproduce the issue by using curl to hit the catalog endpoint for my node without a request body or any facts, so I set up a repro case in clojure that directly exercises the ruby request handler code, and that's reproducing the OOM error every time as well. Hopefully that will make it much easier to narrow down the problem, and I'm going to use YourKit to track the memory allocations and see if I can gain any insight into what's going on.", "created": "2015-05-22T10:10:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I've done some additional testing and I'm pretty sure that this and SERVER-591 are the same issue.\n\nI was poking around in the bacula module in [~accountid:557058:f7c6c093-bc89-442c-8f38-14261500f10b]'s code and when I applied the role by itself, I did not get an OOM error. However, Puppet did log an error about undefined variables in a template. I poked around in the template and saw that it was referencing variables as ruby methods rather than instance variables, which has been deprecated in Puppet 4.\n\nI went back to using all the roles and confirmed that I was still getting an OOM. I then went into the template and changed all the variable references to be ruby instance variables rather than ruby methods and I did NOT get an OOM error. I've tried multiple times with and without the {{@}} in front of variable names in the template, and I always get an OOM when the {{@}} is missing, and never get it when the {{@}} is present.\n\nIn SERVER-591, [~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] ran into an issue wherein referencing an undefined variable in one of his manifests causes puppet server to crash with an OOM error consistently after a single agent run, and that seems to be what's happening here as well. As a result, I'm fairly convinced that these two tickets are related, and are probably being caused by the same underlying issue.", "created": "2015-05-22T11:48:00.000000"}, {"author": "623e7507866b810069e57527", "body": "This morning I was able to track down what's causing the problem seen on this ticket.\n\nWhen the template function runs into an error, it catches the exception and generates its own error message [here|https://github.com/puppetlabs/puppet/blob/master/lib/puppet/parser/functions/template.rb#L26-L27].\n\nIn this case, the issue is being caused by an undefined variable/method being referenced in the template being parsed. As a result, the error the template function is running into is a {{NameError}}. The template function then tries to stringify this {{NameError}} (the {{detail}} variable) when generating its error message.\n\nThis calls into the {{to_s}} function [here|https://github.com/jruby/jruby/blob/3086e6a0e47ac4b3acbc2bc3cf242b45e9e0aafa/core/src/main/java/org/jruby/RubyNameError.java#L205-L211] in JRuby's {{NameError}} class. From what I can tell, [this line|https://github.com/jruby/jruby/blob/3086e6a0e47ac4b3acbc2bc3cf242b45e9e0aafa/core/src/main/java/org/jruby/RubyNameError.java#L207] calls into the {{RubyKernel}}'s [inspect function|https://github.com/jruby/jruby/blob/3086e6a0e47ac4b3acbc2bc3cf242b45e9e0aafa/core/src/main/java/org/jruby/RubyKernel.java#L2110-L2112] which is directly calling inspect on the top level {{Puppet::Parser::Scope}} object. This is generating the absolutely massive {{StringBuilder}}/{{CharArray}}/{{HeapByteArray}} seen in the hprof files (these were all representing the same string). This string is bigger the more code a user has loaded up in their environment, which is why we couldn't reproduce this issue on our own. I tried giving the {{Puppet::Parser::Scope}} class its own inspect function which just returns an empty string, and confirmed that the OOM error stopped happening.\n\nI've cut out a lot of [~accountid:557058:f7c6c093-bc89-442c-8f38-14261500f10b]'s code to get it to a point where this string is small enough to not cause an OOM error, and have confirmed that the string generated by the inspect method is NOT being used in the stringified {{detail}} variable. I'm not sure what it's being used for. I've also tested this with an MRI ruby master, and have confirmed that it is also calling {{inspect}} on the top level scope and generating an absolutely massive string (but since MRI ruby doesn't constrain memory in the way the JVM does, it's not crashing).\n\n[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] I was wondering if you had any thoughts on how to resolve this issue? I was thinking we need to write an {{inspect}} function for the {{Puppet::Parser::Scope}} class, but I'm not sure if this is the correct approach. If it is, I'm also not sure what the string generated by this function should contain for the {{Puppet::Parser::Scope}} class.", "created": "2015-05-27T16:58:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "As a design pattern it is best to never include any inspect / debug output when there is no simple rock bottom data value to output. There is almost always the need to tweak such code for the purpose of doing real debugging. The production of such a debugging string representation should instead be produced by a helper class. In the new AST model, this is done via \"dumpers\" that can write out the model with a given syntax / for a particular purpose. (They are easy to write using a visitor/polymorphic dispatch technique). When I debug I typically type things like ModelDumper.new.dump(a_value) into irb to see the output I want.\n\nI am happy if the Scope inspect simply said \"Scope\" and its name if it is a named scope - e.g. \"Scope[foo::bar]\". If we ever need a debug/dump output we can deal with what we want at that point.\n\nAlso as a design principle, Errors should not be stringified - only the message (and possible transfer of the call stack) should be used in such situations. Fixing all such cases is however more difficult since they are hard to find. Even if we plug this one there may be another that tries to do the same (and ends up generating an inspect of the entire zoo that is reached from a scope). So, yeah, a good choice is to ensure that scope's inspect is something short.", "created": "2015-05-27T20:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7507866b810069e57527] nice job tracking this down!!\n\nHere's what I'd recommend for next steps:\n\n* Open a PUP ticket describing the issue, and file a PR against the PUP 3.x branch that contains the change to the inspect method along with a spec test.\n\n* Hopefully your PUP change will be a small patch, maybe you can attach it as a patch file to this ticket and to the related one and see if the reporters can try applying it locally to validate that it fixes their issue, and that the other issue and this one are indeed the same.  Maybe the extra info you've pieced together about the volume of puppet code being related to whether or not the crash occurs will help the other user more consistently repro.\n\n* Ping [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] / [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584], and [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] on the PUP ticket to let them know that it's a fairly major issue and that ideally we'd like to get it into a PE3.8.x, assuming there is a PUP 3.x release that it could land in before then.\n\n* Close one of the two SERVER tickets out as a dupe of the other.\n\n* Once the PUP PR gets merged, move the other SERVER ticket to functional review?  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] do you have any thoughts on how to track this so that it gets a fix version on our end?  Do you think we need to?  I guess I'm thinking that as long as this ticket gets linked to a PUP ticket then the relevant fix version is really in PUP itself and we can go ahead and close this out.", "created": "2015-05-27T22:42:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I've opened PUP-4665 to track the work needed to resolve this issue.", "created": "2015-05-28T14:39:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:f7c6c093-bc89-442c-8f38-14261500f10b] [~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] We now have PUP-4665 to track the work against Puppet to fix this issue. There's already a fix in (you can see the commit [here|https://github.com/puppetlabs/puppet/commit/80bc235d4d67ea3897aa9eee9f11cf47ea008af0]. This fix should be available in the next release of Puppet, so I'm going to close this ticket out.", "created": "2015-06-02T10:28:00.000000"}], "components": [], "created": "2015-04-17T05:45:00.000000", "creator": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4659bf4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyosnr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2267239715_*|*_3_*:*_1_*:*_1549655465_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_174487417"}], "description": "Hi.\nThe puppetserver crashes with a java.lang.OutOfMemoryError: Java heap space Exception when it calls an external program.\n\nCode\n$password = generate('/usr/bin/python2.7', \"${settings::confdir}/opt/bin/bacula-genkey\", \"${settings::confdir}/opt/etc/baculaclient/${::fqdn}.key\")\n\n\nStacktrace:\n2015-04-17 13:32:57,604 INFO  [puppet-server] access[^/puppet/v3/catalog/([^/]+)$] allowing $1 access\n2015-04-17 13:32:57,605 INFO  [puppet-server] access[^/puppet/v3/node/([^/]+)$] allowing 'method' find\n2015-04-17 13:32:57,605 INFO  [puppet-server] access[^/puppet/v3/node/([^/]+)$] allowing $1 access\n2015-04-17 13:32:57,606 INFO  [puppet-server] access[^/puppet/v3/report/([^/]+)$] allowing 'method' save\n2015-04-17 13:32:57,606 INFO  [puppet-server] access[^/puppet/v3/report/([^/]+)$] allowing $1 access\n2015-04-17 13:32:57,606 INFO  [puppet-server] access[/puppet/v3/file] allowing * access\n2015-04-17 13:32:57,606 INFO  [puppet-server] access[/puppet/v3/status] allowing 'method' find\n2015-04-17 13:32:57,607 INFO  [puppet-server] access[/puppet/v3/status] allowing * access\n2015-04-17 13:32:57,607 INFO  [puppet-server] access[/puppet-ca/v1/certificate_revocation_list/ca] allowing 'method' find\n2015-04-17 13:32:57,607 INFO  [puppet-server] access[/puppet-ca/v1/certificate_revocation_list/ca] allowing * access\n2015-04-17 13:32:57,607 INFO  [puppet-server] access[/puppet-ca/v1/certificate/ca] adding authentication any\n2015-04-17 13:32:57,607 INFO  [puppet-server] access[/puppet-ca/v1/certificate/ca] allowing 'method' find\n2015-04-17 13:32:57,608 INFO  [puppet-server] access[/puppet-ca/v1/certificate/ca] allowing * access\n2015-04-17 13:32:57,608 INFO  [puppet-server] access[/puppet-ca/v1/certificate/] adding authentication any\n2015-04-17 13:32:57,608 INFO  [puppet-server] access[/puppet-ca/v1/certificate/] allowing 'method' find\n2015-04-17 13:32:57,608 INFO  [puppet-server] access[/puppet-ca/v1/certificate/] allowing * access\n2015-04-17 13:32:57,609 INFO  [puppet-server] access[/puppet-ca/v1/certificate_request] adding authentication any\n2015-04-17 13:32:57,609 INFO  [puppet-server] access[/puppet-ca/v1/certificate_request] allowing 'method' find\n2015-04-17 13:32:57,609 INFO  [puppet-server] access[/puppet-ca/v1/certificate_request] allowing 'method' save\n2015-04-17 13:32:57,609 INFO  [puppet-server] access[/puppet-ca/v1/certificate_request] allowing * access\n2015-04-17 13:32:57,610 INFO  [puppet-server] access[/] adding authentication any\n2015-04-17 13:32:58,865 INFO  [puppet-server] Puppet Caching node for puppet.puppet.local\n2015-04-17 13:35:29,970 WARN  [o.e.j.u.t.QueuedThreadPool] \njava.lang.OutOfMemoryError: Java heap space\n\tat java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57) ~[na:1.7.0_75]\n\tat java.nio.ByteBuffer.allocate(ByteBuffer.java:331) ~[na:1.7.0_75]\n\tat java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:792) ~[na:1.7.0_75]\n\tat java.nio.charset.Charset.encode(Charset.java:842) ~[na:1.7.0_75]\n\tat java.nio.charset.Charset.encode(Charset.java:865) ~[na:1.7.0_75]\n\tat org.jruby.RubyEncoding.encode(RubyEncoding.java:236) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyString.encodeBytelist(RubyString.java:7684) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyString.<init>(RubyString.java:414) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyString.newString(RubyString.java:508) ~[puppet-server-release.jar:na]\n\tat org.jruby.Ruby.newString(Ruby.java:3378) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.hashyInspect(RubyBasicObject.java:1020) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.inspect(RubyBasicObject.java:999) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyKernel.inspect(RubyKernel.java:2107) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyKernel$INVOKER$s$0$0$inspect.call(RubyKernel$INVOKER$s$0$0$inspect.gen) ~[puppet-server-release.jar:na]\n\tat org.jruby.runtime.Helpers.invokedynamic(Helpers.java:2798) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.inspectObj(RubyBasicObject.java:1052) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.hashyInspect(RubyBasicObject.java:1020) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.inspect(RubyBasicObject.java:999) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyKernel.inspect(RubyKernel.java:2107) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyKernel$INVOKER$s$0$0$inspect.call(RubyKernel$INVOKER$s$0$0$inspect.gen) ~[puppet-server-release.jar:na]\n\tat org.jruby.runtime.Helpers.invokedynamic(Helpers.java:2798) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.inspectObj(RubyBasicObject.java:1052) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.hashyInspect(RubyBasicObject.java:1020) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.inspect(RubyBasicObject.java:999) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyKernel.inspect(RubyKernel.java:2107) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyKernel$INVOKER$s$0$0$inspect.call(RubyKernel$INVOKER$s$0$0$inspect.gen) ~[puppet-server-release.jar:na]\n\tat org.jruby.runtime.Helpers.invokedynamic(Helpers.java:2798) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.inspectObj(RubyBasicObject.java:1052) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.hashyInspect(RubyBasicObject.java:1020) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyBasicObject.inspect(RubyBasicObject.java:999) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyKernel.inspect(RubyKernel.java:2107) ~[puppet-server-release.jar:na]\n\tat org.jruby.RubyKernel$INVOKER$s$0$0$inspect.call(RubyKernel$INVOKER$s$0$0$inspect.gen) ~[puppet-server-release.jar:na]\n^[[B^C2015-04-17 13:37:49,637 INFO  [p.t.internal] Shutting down due to JVM shutdown hook.\n2015-04-17 13:37:49,638 INFO  [p.t.internal] Beginning shutdown sequence\n2015-04-17 13:37:49,640 INFO  [p.t.s.w.jetty9-service] Shutting down web server(s).\n2015-04-17 13:37:49,641 INFO  [p.t.s.w.jetty9-core] Shutting down web server.\n2015-04-17 13:37:49,644 INFO  [o.e.j.s.ServerConnector] Stopped ServerConnector@791bdd14{SSL-HTTP/1.1}{0.0.0.0:8140}\n2015-04-17 13:37:49,644 INFO  [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@769fe49f{/puppet-admin-api,null,UNAVAILABLE}\n2015-04-17 13:37:49,644 INFO  [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@5e35a03e{/,null,UNAVAILABLE}\n2015-04-17 13:37:49,645 INFO  [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@a642e32{/puppet,null,UNAVAILABLE}\n2015-04-17 13:37:49,645 INFO  [o.e.j.s.h.ContextHandler] Stopped o.e.j.s.h.ContextHandler@f268f64{/puppet-ca,null,UNAVAILABLE}\n2015-04-17 13:37:49,649 INFO  [p.t.s.w.jetty9-core] Web server shutdown\n2015-04-17 13:37:49,651 INFO  [p.t.internal] Finished shutdown sequence\n\n\nCall from shell:\nroot@puppet:/home/vagrant# sudo -u puppet python /etc/puppetlabs/puppet/opt/bin/bacula-genkey /etc/puppetlabs/puppet/opt/etc/baculaclient/puppet.puppet.local.key\nH150L2364C0IL8KMFXNTUIGM2KPJ6MEXTroot@puppet:/home/vagrant# \n\n\nMemory allocation:\nroot@puppet:/home/vagrant# cat /etc/default/puppetserver \n###########################################\n# Init settings for puppetserver\n###########################################\n\n# Location of your Java binary (version 7 or higher)\nJAVA_BIN=\"/usr/bin/java\"\n\n# Modify this if you'd like to change the memory allocation, enable JMX, etc\nJAVA_ARGS=\"-Xms7g -Xmx7g -XX:MaxPermSize=4g\"", "environment": "os => {\"name\"=>\"Debian\", \"family\"=>\"Debian\", \"release\"=>{\"major\"=>\"7\", \"minor\"=>\"8\", \"full\"=>\"7.8\"}, \"lsb\"=>{\"distcodename\"=>\"wheezy\", \"distid\"=>\"Debian\", \"distdescription\"=>\"Debian GNU/Linux 7.8 (wheezy)\", \"distrelease\"=>\"7.8\", \"majdistrelease\"=>\"7\", \"minordistrelease\"=>\"8\"}}", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15789", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "15789", "issueType": "Bug", "key": "SERVER-556", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:d3d22f4e-c24d-4e86-8c9a-53a658236aa8", "resolution": "Fixed", "resolutionDate": "2015-06-02T10:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Generate function makes puppetserver crash with \"java.lang.OutOfMemoryError: Java heap space\" Exception", "timeSpent": "PT0S", "updated": "2015-06-05T16:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Created QENG-2307 as per the plan in the description to delete the 2.1.x pipeline.  (Note: we may yet decide to change the plan and keep 2.1.x around as per [this discussion on puppet-server|https://groups.google.com/a/puppetlabs.com/d/msg/puppet-server/fpc-iqxim58/E4YUVsgew58J].)", "created": "2015-04-27T13:21:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Test Rail triage and risk analysis not necessary.", "created": "2015-05-01T15:29:00.000000"}], "components": [], "created": "2015-04-16T12:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@543bad7a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoww7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Puppet Server 2.0 is out the door, so decided to get this done before additional work toward the 2.1 release lands."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4402863_*|*_10007_*:*_1_*:*_663762852_*|*_3_*:*_1_*:*_17953648_*|*_5_*:*_1_*:*_45100363881_*|*_6_*:*_1_*:*_0"}], "description": "Now that Puppet Server 2.0 has been released, we should, assuming the 2.1.x branch CI jobs are all green, act on the latest plan from our branching document:\n\n1) Do a non-fast forward merge up of the 2.1.x branch to the master branch, edit the README_BRANCHING.md document to indicate that only work toward 2.1 should be going to master right now and remove references to the 2.1.x branch.  Submit a PR for that work up to the master branch.\n\n2) Submit a separate PR to the stable branch with the same set of changes to README_BRANCHING.md as were submitted to the master branch.\n\n3) Once the PR to master is merged and everything's green through CI, work with QE to delete the 2.1.x pipeline - probably involving the submission of a QE ticket with said intent - and subsequently delete the 2.1.x branch from the repo.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15788", "fixedVersions": ["SERVER 2.1.0"], "id": "15788", "issueType": "Task", "key": "SERVER-555", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-04-24T10:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge 2.1.x down to master and shut down 2.1.x", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This should be tested by QA when it is built into puppet-server.  Moving this ticket to SERVER.", "created": "2015-04-29T12:44:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This feature appears to be best tested leveraging [~accountid:557058:cf9507a2-54bf-4dec-90af-b6ff0ddd3f65]'s work in large enterprise installation testing:\n\nhttps://github.com/puppetlabs/puppet-scale-control\n\nWe should consider making a test where the load balancer queries the status service url(s) to check on the health of, say, puppet server for compile masters.", "created": "2015-05-04T12:28:00.000000"}, {"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "Closing this as the status service work is completed.\nMoving forward, end points would need to be tested as needed.", "created": "2015-07-22T12:33:00.000000"}], "components": [], "created": "2015-04-15T18:23:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@cef79d8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyou2n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1789918458_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6656295189"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16379", "fixedVersions": [], "id": "16379", "issueType": "Task", "key": "SERVER-583", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-07-22T12:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Test the status endpoint for File sync ", "timeSpent": "PT0S", "updated": "2015-07-22T12:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Looks like PUP-4111 is related, or is at least talking about the same tests.", "created": "2015-04-15T10:53:00.000000"}], "components": [], "created": "2015-04-15T10:53:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63cb6f1e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xb3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3108996_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_52207089077"}], "description": "We've had a few acceptance (full suite) failures (e.g. https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/LAYOUT=64mdca-64a,LDAP_TYPE=,PLATFORM=centos7,label=beaker/244/consoleFull) that seem to be due to deprecation warnings interrupting regex matching of output. This seems to happen in the environment-related tests.\n\nFor example,\n\n{code}\n * Reviewing: Test behavior of default environment\n-------------------------------------------------------------------------------\nFor: (centos7-64-1) jpnozmpslaoqkc8.delivery.puppetlabs.net\n-------------------------------------------------------------------------------\npuppet_agent: ok\n-------------------------------------------------------------------------------\npuppet_config: *UNEXPECTED FAILURE*\n-------------------------------------------------------------------------------\nExpected the output:\nbasemodulepath = /etc/puppet/modules:/usr/share/puppet/modules\nmodulepath = /etc/puppet/dynamic/production/modules\nmanifest = /etc/puppet/dynamic/production/manifests\nconfig_version = /etc/puppet/static-version.shWarning: Setting manifest is deprecated in puppet.conf. See http://links.puppetlabs.com/env-settings-deprecations\n   (at /usr/share/ruby/vendor_ruby/puppet/settings.rb:1141:in `issue_deprecation_warning'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:1126:in `block in issue_deprecations'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:1125:in `each'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:1125:in `issue_deprecations'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:347:in `initialize_app_defaults'; /usr/share/ruby/vendor_ruby/puppet.rb:155:in `do_initialize_settings_for_run_mode'; /usr/share/ruby/vendor_ruby/puppet.rb:139:in `initialize_settings'; /usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:87:in `block in execute'; /usr/share/ruby/vendor_ruby/puppet/util.rb:488:in `exit_on_fail'; /usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:86:in `execute'; /usr/bin/puppet:8:in `<main>')\nWarning: Setting modulepath is deprecated in puppet.conf. See http://links.puppetlabs.com/env-settings-deprecations\n   (at /usr/share/ruby/vendor_ruby/puppet/settings.rb:1141:in `issue_deprecation_warning'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:1126:in `block in issue_deprecations'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:1125:in `each'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:1125:in `issue_deprecations'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:347:in `initialize_app_defaults'; /usr/share/ruby/vendor_ruby/puppet.rb:155:in `do_initialize_settings_for_run_mode'; /usr/share/ruby/vendor_ruby/puppet.rb:139:in `initialize_settings'; /usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:87:in `block in execute'; /usr/share/ruby/vendor_ruby/puppet/util.rb:488:in `exit_on_fail'; /usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:86:in `execute'; /usr/bin/puppet:8:in `<main>')\nWarning: Setting config_version is deprecated in puppet.conf. See http://links.puppetlabs.com/env-settings-deprecations\n   (at /usr/share/ruby/vendor_ruby/puppet/settings.rb:1141:in `issue_deprecation_warning'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:1126:in `block in issue_deprecations'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:1125:in `each'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:1125:in `issue_deprecations'; /usr/share/ruby/vendor_ruby/puppet/settings.rb:347:in `initialize_app_defaults'; /usr/share/ruby/vendor_ruby/puppet.rb:155:in `do_initialize_settings_for_run_mode'; /usr/share/ruby/vendor_ruby/puppet.rb:139:in `initialize_settings'; /usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:87:in `block in execute'; /usr/share/ruby/vendor_ruby/puppet/util.rb:488:in `exit_on_fail'; /usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:86:in `execute'; /usr/bin/puppet:8:in `<main>')\n\n\nTo match: (?-mix:^config_version.*\\/etc\\/puppet\\/static-version.sh$)\n-----------------------------------------------------------------------------\n{code}\n\nThis is a ticket to track these failures.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14935", "fixedVersions": [], "id": "14935", "issueType": "Bug", "key": "SERVER-552", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Incomplete", "resolutionDate": "2016-12-09T16:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Acceptance failures due to deprecation warning interrupting regex matching of output", "timeSpent": "PT0S", "updated": "2016-12-09T16:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:4e3eb0ca-7205-43fb-877c-a175a00d2181] thanks for the report.  This is another issue where it's hard for me to guess what could be causing it, because the underlying code that could possibly change the behavior of the parts of the system you're describing here is still the same Ruby code from before.\n\nA few questions that might help narrow it down:\n\n1. What version of Puppet were you running under Passenger?  Did you upgrade Puppet at the same time that you switched to Puppet Server?\n2. Are you using Puppet environments?  Are some of the nodes affected by this in a different environment than others?\n\n[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] my first thought was that maybe this was related to ENTERPRISE-488 in some way, but, the more I think about it, if the facts are returning the wrong values then that probably doesn't explain it.\n\n[~accountid:557058:4e3eb0ca-7205-43fb-877c-a175a00d2181] in both of the cases you described it seems like the values of the facts are wrong, and that's what's causing the errant resources", "created": "2015-04-15T00:58:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "I'm running puppet 3.7.4:\nFeb 25 11:59:20 puppet-server-3.7.4-1.el6.noarch: 100\nFeb 25 12:01:27 Updated: puppet-3.7.4-1.el6.noarch\nFeb 25 12:01:27 Updated: puppet-server-3.7.4-1.el6.noarch\nFeb 25 12:06:21 Updated: puppetdb-2.2.2-1.el6.noarch\nFeb 25 12:19:00 Updated: puppetdb-terminus-2.2.2-1.el6.noarch\nMar 09 16:31:18 Installed: python-pypuppetdb-0.1.1-1.el6.noarch\nMar 11 19:19:04 Installed: puppetserver-1.0.2-1.el6.noarch\n\nand switched to puppetserver in march.. we did not notice this issue in the month before switching to puppetserver.\n\nwe run in production environment normally.. only use environments for developing/testing new puppet code.. we haven't switched to directory environments yet.\n\nI'm not sure the facts are actually returning wrong values.. if I lookup the facts in puppetdb - they have correct values.. and they are so simple so I don't think they ever could.. it seems more as if the catalog is looking at the wrong fact value.. ie. perhaps one which has varnish is being compiled at the same time and facts data bleed over.. \n\nHere's the client log from one of the 4 hosts, where it happened yesterday:\nApr 14 10:20:05 p-loginsite01 puppet-agent[17303]: Retrieving pluginfacts\nApr 14 10:20:05 p-loginsite01 puppet-agent[17303]: Retrieving plugin\nApr 14 10:20:17 p-loginsite01 puppet-agent[17303]: Loading facts\nApr 14 10:20:17 p-loginsite01 puppet-agent[17303]: Loading facts\nApr 14 10:20:17 p-loginsite01 puppet-agent[17303]: The package type's allow_virtual parameter will be changing its default value from false to true in a future release. If you do not want to allow virtual packages, please explicitly set allow_virtual to false.\nApr 14 10:20:17 p-loginsite01 puppet-agent[17303]:    (at /usr/lib/ruby/site_ruby/1.8/puppet/type/package.rb:430:in `default')\nApr 14 10:22:47 p-loginsite01 puppet-agent[17303]: Caching catalog for p-loginsite01.example.org\nApr 14 10:22:49 p-loginsite01 puppet-agent[17303]: (/Stage[main]/Main/Resources[firewall]) Failed to generate additional resources using 'generate': No child processes\nApr 14 10:22:49 p-loginsite01 puppet-agent[17303]: Applying configuration version '1428935543'\nApr 14 10:22:49 p-loginsite01 puppet-agent[17303]: Execution of '/usr/bin/yum -d 0 -e 0 -y list MySQL-python' returned 1: Existing lock /var/run/yum.pid: another copy is running as pid 17506.\nApr 14 10:22:49 p-loginsite01 puppet-agent[17303]: Another app is currently holding the yum lock", "created": "2015-04-15T01:20:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "all 4 hosts, started emailing me at the exact same time.. 10.24.. and puppet run starts a few minutes before..\n\n", "created": "2015-04-15T01:29:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "and it doesn't affect all hosts that get a catalog at that time..", "created": "2015-04-15T01:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The JRuby instances are isolated so that only one catalog compilation can happen at a time in a given JRuby instance.  So, I wouldn't think it'd be possible for facts to \"bleed\" over even if several agents were requesting a catalog simultaneously.  Unless you have multiple agents with the same certname, in which case maybe it's possible that their facts are being cached to disk in the same filename, and one is overwriting another...\n\nYes, I think it would be useful to add a notify to the catalog so we'll get a print-out of the value of the fact at the time the catalog is compiled.  Would also be useful to add a log statement to the fact itself.  That way we should be able to see what the agent thinks the value of the fact is just before it requests the catalog, and then what the server thinks it is as it is actually compiling the catalog.\n\n[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], I'd be interested to hear if you have any guesses about this one :)", "created": "2015-04-15T01:37:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "notify added. \n\nWhats the best way to make the fact log result? (I'd normally think ruby syslog function.. but perhaps you have a better idea?)\nFacter.add(\"varnishdrunning\") do\n        ENV[\"PATH\"]=\"/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin\"\n        setcode do\n                varnishdexist = system \"/bin/bash -c '/etc/init.d/varnish status >/dev/null 2>/dev/null'\"\n                if $?.exitstatus == 0\n                        'yes'\n                end\n        end\nend\n\nsomething like:\nrequire 'syslog'\nSyslog.open($0, Syslog::LOG_PID | Syslog::LOG_CONS) { |s| s.warning \"varnishdrunning is true\" }\n\n(or false.. :)", "created": "2015-04-15T02:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I would think maybe you could use one of the Puppet logging functions, like \"Puppet.warn\" or \"Puppet.notice\"?", "created": "2015-04-15T02:09:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "callling puppet.notice in a fact makes facter -p complain.. is that object only available when puppet calls facter.. or?\ndo you have a link to an example.. I can't find any :(", "created": "2015-04-15T02:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hmm..  Good question, and I don't know the answer off of the top of my head.  It looks like there was some work related to this here:\n\nhttps://puppet.atlassian.net/browse/PUP-2927\n\nbut that may have only landed in Puppet 4.0 and I'm not really familiar with the details anyway.\n\nWrtiting to syslog the way you proposed might be the easiest way to go.  Or we could see if anyone is online in #puppet or #puppet-dev who happens to know how to do logging in facter.", "created": "2015-04-15T03:52:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Not sure if anything I am about to say helps, so fwiw here is my thinking:\n\n* agent produces facts - sends them to master\n* master stores them\n* agent asks for catalog for a node\n* master finds the stored facts for the node\n* master sets them as node parameters\n* node parameters are copied to variables\n* master compiles catalog (no more references to facts are made)\n* catalog is returned to agent\n\nWhich means that there are a couple of places where assertions can be made:\n\n* Is there something wrong with the production of the facts? (Assert that facts sent to the master are correct)\n* Is the master storing them as expected? (Assert that facts are stored ok in Puppet DB?)\n* Is master looking up the right facts? (Did node object get other facts than those stored in Puppet DB?)\n* Are variables set as expected from the facts? (i.e. something else than facts from node overwrites certain variables (e.g. ENC), assert by checking variables at the start of the compilation).\n\nLikely suspects here would be:\n* There is something wrong with the facts cache", "created": "2015-04-15T07:01:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "I'm not using future parser. I've added syslogging in fact.. and notify in puppet manifest. so we log every time puppet runs - what that fact was.", "created": "2015-04-15T07:50:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "The sysloggging revealed that it's this command:\nsystem \"/bin/bash -c '/etc/init.d/varnish status \"\n\nat odd times, returns true - even though /etc/init.d/varnish doesn't even exist..\n\nPretty damn amazing..", "created": "2015-04-22T00:54:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:4e3eb0ca-7205-43fb-877c-a175a00d2181] Could you give a bit more clarification into how the system command is being executed?  Is this coming from a custom provider or custom fact?  Do you still think this is an issue with puppet-server, or does it appear to lie somewhere else in the system, e.g. Ruby's system method?", "created": "2015-04-29T11:29:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "that command is something I run in my own fact (in ruby). appearently that system command is not dependable.. :(", "created": "2015-04-29T13:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4e3eb0ca-7205-43fb-877c-a175a00d2181] Another way to ask the question ... Have you been able to reproduce getting the bad \"true\" result when running that bash command outside of any Puppet code, like in a cron job or something?  We're just trying to establish here whether or not there is a defect somewhere in the Puppet ecosystem or if the problem exists somewhere else in the system - bash, OS, etc - and, therefore, whether or not it makes sense to keep this ticket open.  Thanks!", "created": "2015-04-29T13:46:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "I haven't seen the issue since I switched to: \n/bin/bash -c '/usr/bin/killall named -s CONT -q'\n\nBut I haven't tried running that command every 30 minutes on all servers, to see if I can reproduce it.. I guess I could do that to see what it returns.. I'll write a cronjob to see if I can reproduce this outside puppet :)", "created": "2015-04-29T13:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:4e3eb0ca-7205-43fb-877c-a175a00d2181] assuming this hasn't been causing you further troubles?\n\nClosing this ticket out for now, but please feel free to re-open if you have any new information.", "created": "2015-05-11T07:31:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "it just happened again.. coinciding with an IO issue (nfs mount on puppet master) that hung..", "created": "2015-05-13T01:46:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "it happened for both Varnish AND DNS fact at the same time..", "created": "2015-05-13T01:48:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "they both now use this to detect:\n/bin/bash -c '/usr/bin/killall varnishd -s CONT -q'\n\nit may be a facter bug or something.. it happened on many machines at the same time.. just as previously seen..", "created": "2015-05-13T01:50:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "if there's anything I can do help track this one down - pls. advise.. it seems that it's the fact somehow that reports true, wrongly.. I've disabled logging of the fact on every run.. but I can enable it again, to confirm this is still the case.\n\nthe NFS issue was local to puppet master - since it's the only one using that NFS (for repository directory - so they all ofcourse contact that using yum, when puppet runs yum)..", "created": "2015-05-13T01:52:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "happened again.. it seems I can reproduce it, by having my repos on nfs and running rsync (which makes that crappy nfs server stop responding in periods)", "created": "2015-05-13T04:06:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "is probably not a puppet issue - since it seems to be the fact itself that has wrong value.. pretty odd one though.", "created": "2015-05-13T04:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "So the fact is showing up with the wrong value on the agent?  Is the implementation of the fact trying to use any of the files from the NFS mount?", "created": "2015-05-13T04:19:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "I have removed syslog debugging from fact.. but thats what it did last time.. \n\nthe fact is very simple.. (see earlier in this issue).. I simply replaced the call to /etc/init.d/named status - with the killall statement.. \n\nthe fact is not touching anything related to yum, nor to the nfs mount on puppetmaster..\n\nthe nfs repo only hosts repositories.. so puppetserver should not be affected.. load does go through the roof though when this happens.. (263)", "created": "2015-05-13T04:44:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Are the machines all VMs sharing the same bare metal?  So that when load goes up on the master it could affect hardware resource availability on the machines that are showing the wrong fact values?", "created": "2015-05-13T04:54:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "nope. some of the hosts that was hit by this, is in a totally different vmware environment (not available through same vcenter server even).. so the only machine affected was puppetmaster.. and hosts running yum (since they fetch from puppetmaster httpd)", "created": "2015-05-13T04:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "That's... wild.  Very hard to imagine an explanation for why it would be easier to repro when the NFS is down, then...", "created": "2015-05-13T05:11:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "indeed.. moving away from NFS to a SAN disk instead.. hoping that makes it stop.. also when nfs does not respond.. repo is kindof inaccessible :)", "created": "2015-05-13T05:30:00.000000"}], "components": [], "created": "2015-04-15T00:29:00.000000", "creator": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@91c0246"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzewv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_2280478743_*|*_6_*:*_2_*:*_152352808"}], "description": "Since we switched to puppetserver, we have (besides SERVER-442) had one other - really bad issue.. which we've never had before with code that has worked for ~2 years with puppet on passenger.\n\nSuddenly, and seemingly randomly - puppet adds checks (exported resources) and installs cronjobs which should NEVER have been installed on those hosts.\n\nIt happens in batches when it happens.. so it hits like ~5-10 hosts at the same time.. sometimes during the night (in a IO intensive backup window, where I know wmware makes our graphite/carbon process die almost every night) but it just happened during the daytime as well..\n\nIt's only happened 3-4 times in the last month.. so it's a hard to reproduce issue..\n\nIt seems to everytime fail with these two facts.. typicly at the same time (so both some extra DNS checks is setup.. and logster is installed to run every minute on hosts it shouldn't):\n\n{code}\nFacter.add(\"varnishdrunning\") do\n        ENV[\"PATH\"]=\"/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin\"\n        setcode do\n                varnishdexist = system \"/bin/bash -c '/etc/init.d/varnish status >/dev/null 2>/dev/null'\"\n                if $?.exitstatus == 0\n                        'yes'\n                end\n        end\nend\n{code}\n\n{code}\nFacter.add(\"namedrunning\") do\n        confine :kernel => :linux\n        setcode do\n                namedruns = system \"/bin/bash -c /etc/init.d/named status >/dev/null 2>/dev/null\"\n                if $?.exitstatus == 0\n                        'yes'\n                end\n        end\nend\n{code}\n\nI use these facts like this:\n\n{code}\n  if ( $namedrunning == 'yes' ) {\n      monitor::service { \"$fqdn-bind\": servicename => 'DNS', checkcmd => 'check_nrpe', arg1 => 'check_bind', check_interval => '60' } #creates an exported resource\n  }\n{code}\n\nand similarly if ( $varnishdrunning ) {\n  which calls class logster.. which installs a package and a cronjob on the host (ie. no exported resource here).\n\nThe reason I notice immediately, is that the cronjob installed mails me every minute - if it somehow fails.. and when installed on a machine which actually does NOT run varnish.. there's no varnishlog to parse :)\n\nit makes our monitoring suddenly spam me and other alert receivers - which makes it a very bad issue for us..", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17293", "fixedVersions": [], "id": "17293", "issueType": "Bug", "key": "SERVER-551", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "resolution": "Cannot Reproduce", "resolutionDate": "2015-05-13T04:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "facts bleed over to other hosts", "timeSpent": "PT0S", "updated": "2015-06-01T18:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] [~accountid:557058:1d244b27-1afc-481c-a463-e4c0cefad02f] [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] [~accountid:557058:151c148a-2bb4-4fdc-9320-df94e73b0363]  This test is failing / red in CI.  Given the way this test has failed in the past, I think it is highly unlikely that this exposes an actual bug.  The most likely outcome of any investigation into this is that I will remove the test from CI and from the qatests repository.\n\nThis CI failure shouldn't reflect on the quality of PE 3.8.", "created": "2015-04-14T14:37:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] How is it failing?  Could you paste a link to the failing job, or a snippet from the console output?  I ask because the information helps correlate related tickets and provide input to the search indexes.", "created": "2015-04-14T15:05:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "http://jenkins-enterprise.delivery.puppetlabs.net/view/qatests/view/3.8/job/enterprise_qatests-pe_integration-system_pe_130_wordpress_user_scenario_3.8.x/", "created": "2015-04-14T15:37:00.000000"}, {"author": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Flaky tests are useless, so remove it if that is the case. Is it possible to make an alternate test that performs similar actions, but is more stable?", "created": "2015-04-14T16:04:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:151c148a-2bb4-4fdc-9320-df94e73b0363] In my view, no.  Any module of sufficient complexity it going to act different with a new release of puppet.  It's possible that we could find a supported more commonly used module (such as git?) and build a test around it that would be more stable, presuming that the most commonly used and most completely supported modules are upgraded when puppet is updated, but then this seems like work for the modules team or the integration team, not for the puppet-server team.\n\n", "created": "2015-04-14T16:31:00.000000"}, {"author": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I think the apache module is pretty complex and we update that all the time to support Puppet. I think the modules team would be updating anyways if a new Puppet version broke the module.", "created": "2015-04-14T16:53:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:151c148a-2bb4-4fdc-9320-df94e73b0363] This sounds like work for the modules team.  I won't delete the tests, but I am deactivating the test in Jenkins CI.  ", "created": "2015-04-14T17:15:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "In an effort to keep the context in-line with the decision to deactivate the test, the failure on EL7 was:\n\n{code}#<Beaker::Host::CommandFailure: Host 'je32vtzh48jva1i.delivery.puppetlabs.net' exited with 127 running:\n mysql wordpress < /tmp/wordpress.db\n{code}\n\nIs this the same flaky issue we've seen in the past?  I'm trying to come up to speed so forgive me if this has been covered elsewhere, but what's the root cause of the flakiness?\n\nI ask because the mysql command not being present on the PATH could be a result of a problem with the mysql module as it relates to PE, which smells like it might be a legit failure?\n\nI also notice it passed on a Debian family system, but failed on all of the RedHat family systems.  Maybe the RedHat family doesn't install the mysql client package as a side-effect of the Puppet mysql::server class, but the Debian family does?  If that's the case, a possible fix is to install the mysql client as a setup step in the test.\n\nFor what it's worth, I wouldn't be so concerned if the problem was with the wordpress module, but I wonder if the point of wordpress is to exercise a LAMP stack.  If so, it concerns me the issue relates to MySQL.", "created": "2015-04-14T17:51:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We've removed this low value test.  Closing as done.", "created": "2015-10-05T11:56:00.000000"}], "components": [], "created": "2015-04-14T14:35:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47faf281"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzee7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75882553_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_14948265113"}], "description": "The wordpress scenario test fails in Jenkins CI; it passed in PE 3.7.  This seems like a low value test because when it fails it generally reflects a module change rather than a change or failure in puppet-server.\n\nWhen time allows, I need to investigate the wordpress scenario test in Jenkins CI and choose if it exposes an actual bug (extremely unlikely), if it ought to be updated (unlikely given how this test has failed in the past), or it if ought to be decommissioned and removed from the QATests repository and from Jenkins CI (most likely outcome.)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17028", "fixedVersions": [], "id": "17028", "issueType": "Task", "key": "SERVER-550", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-10-05T11:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Wordpress scenario test fails in Jenkins CI", "timeSpent": "PT0S", "updated": "2015-11-10T17:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QATest PR 464 Link: \nPins Beaker back to 2.8, uses system call method to perform reboots.", "created": "2015-04-14T14:12:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] This is the ticket you wanted to be pinged on regarding red tests in Jenkins CI QATests.  [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] [~accountid:557058:1d244b27-1afc-481c-a463-e4c0cefad02f] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please be aware I intend to recommend the release of PE 3.8 even if these tests are red in Jenkins.", "created": "2015-04-14T14:25:00.000000"}, {"author": "623c0cebbef8a60068c7977d", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], we're under the impression that Beaker 2.9.0 could potentially resolve BKR-200, but we're in Needs Information there on validation from the issue creators.\n\nIf you're seeing something with 2.9.0 or later that made you pin back to 2.8, would you update BKR-200 (or the appropriate issue) so that we know and can deal with this on the Beaker side?\n\nThanks,\nKevin", "created": "2015-04-27T13:00:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:623c0cebbef8a60068c7977d] I pinned back to beaker 2.8 because of the following reasons:\n- Beaker 2.9 seemed unreliable in rebooting oses where there is a delay in performing the reboot (RHEL 6 for example)\n- Beaker 2.9 broke the ability to do a system call in order to perform a reboot.\n\n", "created": "2015-04-27T14:37:00.000000"}], "components": [], "created": "2015-04-14T14:09:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2597a0d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xav:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_77403507_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_24975993389"}], "description": "The puppet server service reboot test is failing in CI.  The purpose of this test is to validate that the puppetserver service automatically starts on reboot of the host.\n\nI manually validated that the puppetserver service automatically starts in PE 3.8 in RHEL7, RHEL 6, Cent 7, and Ubuntu 14.04 in build 3.8.0-rc0-626-g7a38d73.\n\nThis test fails because of complexities involved in stopping and starting the SSH connection from within Beaker and Ruby's Net::SSH.  Alice is working to encapsulate the issues within a DSL command to handle reboots.\n\nAs a temporary work around, I'm using a system call in the test rather than relying on Beaker + Ruby Net::SSH to perform the reboot.  However, this only works in Beaker 2.8, and fails in Beaker 2.9.\n\nWhen time permits this test should be updated to use a newer future of Beaker that enables something like a \"host.reboot\" command.  When this work is complete, the PR to merge this test into puppet-server should be recovered, updated, and represented for review and merge.\n\n  ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16378", "fixedVersions": [], "id": "16378", "issueType": "Task", "key": "SERVER-549", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2016-01-29T12:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver service reboot tests failling in CI", "timeSpent": "PT0S", "updated": "2016-01-29T13:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "I plan to add or attach more details on what the differences are between 3.x and 4.x requests/responses as I continue investigation for SERVER-526.", "created": "2015-04-14T13:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm not sure that the solution will need to preserve a 1-1 mapping for *all* the Accept* and Content-Type headers for requests/responses between legacy clients and the Puppet 4.x / Puppet Server 2.x master.  We definitely will need to cover cases where the lack of translated headers would result in a different / failed result for the request - e.g., a legacy client will definitely need to be able to put a file into the file_bucket even though the headers that client would use to describe the payload aren't ones that the Puppet 4.x request handlers would consider valid.\n\nWe may encounter situations where the value in a header for a request/response isn't critical to a successful result for the request.  For example, I'm not sure that the inclusion of \"raw\" instead of \"binary\" in the Accept header for a catalog request from the agent matters given that the agent would also include \"pson\" in the Accept header and \"text/pson\" would be the Content-Type that the master would respond with, AFAIK.  That said, if there are generic translations that make sense to code in, e.g., if it's sane to always replace an occurrence of \"raw\" with \"binary\" in the Accept request header regardless of the request, I'd support doing those.", "created": "2015-04-15T09:57:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This has been merged to the master branch and is passing all acceptance tests on all platforms.\n\nNew Puppet 3.x Agent Compatibility Suite:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_puppet3-compat_master/3/\n\nLegacy Puppet Acceptance Suite: \n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-master/44/\n\nMoving to \"testing\" column.", "created": "2015-05-22T01:01:00.000000"}], "components": [], "created": "2015-04-14T13:09:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59756b9d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotcv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_638252141_*|*_1_*:*_1_*:*_79015733_*|*_10007_*:*_1_*:*_523502572_*|*_3_*:*_1_*:*_770839530_*|*_5_*:*_1_*:*_42673549432_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_42073765_*|*_10006_*:*_1_*:*_1227911802"}], "description": "Once we have the initial (and mostly final) implementation of the TK service that handles URL translation, we need to extend it to support header translation.\n\nThis is not expected to require much code change to the TK service.\n\nThe endpoints+headers that we know are different are:\n* node\n** Accept\n** Accept-Encoding\n* catalog\n** Accept\n** Accept-Encoding\n* file_metadata(s)\n** Accept\n** Accept-Encoding\n* file_bucket_file\n** Accept\n** Accept-Encoding\n** Content-Type\n* file_content\n** Accept\n** Accept-Encoding\n** Content-Type\n* report\n** Accept-Encoding\n\n---\n\nThis ticket should specifically take into the account the ability to transfer file content via the \"file*\" endpoints.  This would need to account for the work done in PUP-3812, which changed values in the headers needed for the transfer of \"raw binary\" files across the \"file*\" endpoints.  Header remapping to preserve file transfer support for legacy clients would likely include:\n\n- Map the Content-Type \"text/plain\" header to \"application/octet-stream\".\n\n- Map the Accept \"raw\" header to \"binary\".\n\nh3. QA\n----\nRisk assessment: N/A:  New Feature: Testing organized in SERVER-595 & SERVER-546", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14934", "fixedVersions": ["SERVER 2.1.0"], "id": "14934", "issueType": "Task", "key": "SERVER-548", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Done", "resolutionDate": "2015-05-22T12:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add header support to 3.x->4.x compatibility service", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [{"attacher": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "created": "2015-04-23T19:14:00.000000", "name": "tmpfiles-agent-run-3.7.5.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11100"}, {"attacher": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "created": "2015-04-23T19:14:00.000000", "name": "tmpfiles-agent-run-4.0.0.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11179"}], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "I plan to add or attach more details on what the differences are between 3.x and 4.x requests/responses as I continue investigation for SERVER-526.", "created": "2015-04-14T13:12:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Attached agent runs (captured using clj-http-tools) for 3.x and 4.x.\n\nCorresponding Puppet code used during these runs can be found here: https://github.com/nwolfe/tmpfiles", "created": "2015-04-23T19:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] you might have a look at [this example|https://www.youtube.com/watch?v=I6OXjnBIW-4] for some inspiration on how to approach this ticket.", "created": "2015-05-06T09:24:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "The video has inspired me to create another integration testing macro that accepts a custom list of services!\n\n4/5 would watch again.", "created": "2015-05-06T10:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This has been merged to the master branch and is passing all acceptance tests on all platforms.\n\nNew Puppet 3.x Agent Compatibility Suite:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_puppet3-compat_master/3/\n\nLegacy Puppet Acceptance Suite: \n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-master/44/\n\nMoving to \"testing\" column.", "created": "2015-05-22T01:01:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Reopened to allow QA to consider testing this in SERVER 1.1.1 / PE 3.8.1", "created": "2015-06-10T17:20:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I need to reread SERVER-525...", "created": "2015-06-10T17:22:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Got confused because of bad PR title.  Fixing and putting this ticket back in the state it was in on 2015/05/22 11:43 AM", "created": "2015-06-10T17:31:00.000000"}], "components": [], "created": "2015-04-14T12:48:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6494c845"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotcn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_638230241_*|*_1_*:*_1_*:*_80303369_*|*_10007_*:*_1_*:*_523503650_*|*_3_*:*_1_*:*_1206003611_*|*_4_*:*_1_*:*_79159_*|*_5_*:*_2_*:*_42672876038_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_42885839_*|*_10006_*:*_1_*:*_792756717"}], "description": "Write a TK service that handles 3.x URL requests and translates them into the corresponding 4.x requests. For the first pass at this implementation, we should just focus on translating the URL strings appropriately and setting up the service skeleton. URL query parameters and request/response bodies are not expected to require translation, and request headers can be handled in a later ticket.\n\nTests for this service would mostly happen at the HTTP request/response level, where an 3.x request map is translated into a 4.x request map and validated.\n\n{{auth.conf}} will need to be tested in a similar manner by creating a 4.x-style {{auth.conf}} and then validating that a 3.x agent is governed appropriately.\n\nh2. Implementation Details (copied from SERVER-526)\n----\nUPDATE: We had an engineering meeting on 3/30/15 to discuss this a bit further.  Some notes from that meeting:\n\n1) The only Puppet 4 master that will be required to support Puppet 3.x agent request mapping is a Puppet Server 2.x master, not a WEBrick or Rack master.  This will allow for us to create a Puppet Server-only solution.\n\n2) The \"legacy\" and \"v2.0\" master/CA Compojure routes had been removed for Puppet Server 2.0.  These could be basically restored for Puppet Server 2.1, with some middleware function(s) which can transform the URL and request parameters in the Ring request map from the \"legacy\" / \"v2.0\" format to corresponding \"v3\" master / \"v1\" CA formats, as appropriate.  Post-transformation, the request handlers could just call into the same functions that the \"v3\" master / \"v1\" CA handlers have been calling into.\n\nOld routes:\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.8/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L239-L275\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.8/src/clj/puppetlabs/services/master/master_core.clj#L10-L78\n\n3) It would be best for the code involved in performing the \"legacy/v2.0\" -> \"v3\" master / \"v1\" CA transformation to be isolated such that it would would be very straightforward to purge it later on.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] suggested we might be able to do this by consolidating the new code into a service which registers its own independent ring handler with the webserver.  That way, removing the remapping logic in a later release would hopefully be as simple as just deleting the service namespaces.  We could consolidate the Puppet 3.x compatible CA and master routes into a single service rather than spreading them across 2 services.\n\n4) Remove the \"not found\" fallback route for the master and CA so that the Puppet 3.x compatible route ring handlers will be evaluated when needed:\n\nhttps://github.com/puppetlabs/puppet-server/blob/0ca3d679dbdd4749f884729112f2f99aa6d50528/src/clj/puppetlabs/services/master/master_service.clj#L43\n\nAlso, take care that no new \"not-found\" route is added to any of the legacy routes that are being restored so that we don't adversely affect the ability for the new Puppet 4.x routes to be handled properly.\n\n5) Assuming the URL remapping would be occurring at the Compojure route layer, a \"legacy\" URL would have been transformed into a Puppet 4-compatible URL by the time the incoming request could be evaluated against \"auth.conf\" rules.  There's probably not any unique development work to be done around this aspect, but we should work with the docs team to ensure that this behavior is appropriately documented for users.\n\nh3. QA\n----\nRisk assessment: N/A:  New Feature: Testing organized in SERVER-595 & SERVER-546", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15547", "fixedVersions": ["SERVER 2.1.0"], "id": "15547", "issueType": "Task", "key": "SERVER-547", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-06-10T17:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Implement 3.x->4.x compatibility service", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This was merged to the 2.1.x branch and has been passing on the {{redhat6-64ma-64a}} and {{ubuntu1404-64m-64a}} configurations - see https://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_puppet3-compat_2.1.x/39/.  It has been failing on the {{redhat7-64m-windows2008r2-64a}} configuration because the tests and module were not written to work for a Windows agent configuration.  Follow-up work to make the tests Windows agent compatible is being handled in SERVER-652.\n\nMoving this to \"testing\" so that [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] has a chance to review these again, if desired.", "created": "2015-05-19T13:45:00.000000"}], "components": [], "created": "2015-04-14T12:31:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f32d6b1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotcf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_337732685_*|*_1_*:*_1_*:*_81282554_*|*_10007_*:*_1_*:*_15763610_*|*_3_*:*_1_*:*_2371627180_*|*_5_*:*_1_*:*_42674962114_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_253852818_*|*_10006_*:*_1_*:*_222219218"}], "description": "Write Beaker acceptance tests to validate that a 3.x agent can run against a 4.x master/server.\n\nThe test should create a Puppet manifest that will exercise as much of the HTTP API as possible during an agent run, and then validate the desired state of the system. In other words, don't validate behavior at the HTTP request/response level - that will be handled by unit/integration (non-Beaker) tests.\n\n{{auth.conf}} should not be tested at this level either, but instead in Clojure tests.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15233", "fixedVersions": ["SERVER 2.1.0"], "id": "15233", "issueType": "Task", "key": "SERVER-546", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Done", "resolutionDate": "2015-05-22T12:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Acceptance test(s) for 3.x->4.x compatibility", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "{quote}\nI think there should be a QENG ticket to track the need for a modified CI pipeline that includes the new job you mentioned.\n{quote}\n\nThanks [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241], I filed https://jira.puppetlabs.com/browse/QENG-2227\n\n{quote}\nOne recommendation that I have for the presuite is that you consider implementing multiple pre-suites for different purposes rather than using environment variables or beaker options.rb to switch behavior inside a single monolithic presuite.\n{quote}\n\nThanks for this information, we'll definitely look into doing this as we develop the acceptance tests and the pre-suite.\n\nNate and I are also planning to exercise beaker today from our local workstations to scope out any problems with {{--type aio}}.  Thanks for letting us know what to look out for.\n\n{quote}\nDo you intent to install both styles of puppet-agent (3.x & 4.x) every \"agent\" SUT provisioned for these tests or do you intend to install 3.x agents on some SUTs and 4.x agents on others?\n{quote}\n\nNo, puppet-agent 1.0 (puppet 4.x) will only be installed as a dependency of puppet-server 2.1 and the puppet 4.x agent will not be exercised by these tests since that behavior is already covered by our smoke tests and our full acceptance test jobs.\n\nPuppet 3.x will only need to be installed on nodes other than the puppetserver node and no other version of puppet will be installed on these nodes.  Beaker will be used to drive the agents to the server and validate end-to-end behavior of the system.\n\nWill this work with sqa-utils?  Could you let me know what an example expression would look like in this case?  As I understand it, sqa-utils has only one concept of \"agent\", not two different agent versions which we may or may not need in sqa-utils.\n", "created": "2015-04-17T12:09:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "{quote}\nWill this work with sqa-utils? Could you let me know what an example expression would look like in this case? As I understand it, sqa-utils has only one concept of \"agent\", not two different agent versions which we may or may not need in sqa-utils.\n{quote}\nFrom the description in your last comment, it sounds like there will be no beaker runs that require both puppet 3.x and puppet-agent 1.0 (4.x) installed on different \"agent\" nodes at the same time. So as far as I am concerned, this means that we don't need to worry about any sqa-utils patches.\n\nThe sqa-utils expressions would look the same as it always has in this case, for example: centos7-64m-64a for a two-node setup with one agent and one master.", "created": "2015-04-17T12:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}The sqa-utils expressions would look the same as it always has in this case, for example: centos7-64m-64a for a two-node setup with one agent and one master.{quote}\n\nMakes sense.  How will beaker know the difference between a 3.x agent and a 4.x agent with this type of expression?", "created": "2015-04-17T12:26:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "Beaker won't know the difference--my understanding based on the discussion so far is that the installed agents will be dependent on the pre-suite setup.", "created": "2015-04-17T13:55:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}Beaker won't know the difference--my understanding based on the discussion so far is that the installed agents will be dependent on the pre-suite setup.{quote}\n\nRight, but I'm trying to imagine what that pre-suite will look like.  Typical convention is to do something like {{agents.each do |agent| ... done}}, but what does {{agents}} mean in this context?\n\nIs the recommendation to do something like {{hosts.each}} and then filter out the master host from the set?", "created": "2015-04-17T14:31:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Nate and I were able to run the new suite (which is currently empty and will be filled out in SERVER-546) of puppet 3.x.  I'm getting a pull request ready to establish the directory of tests which will need to be integrated into the new CI job created in QENG-2227.", "created": "2015-04-27T10:58:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pull request to establish the directory for Puppet 3.x compatibility tests is up at https://github.com/puppetlabs/puppet-server/pull/508", "created": "2015-04-27T11:36:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Added a new PR targeting 2.1.x instead of master.", "created": "2015-04-28T15:28:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Small pull request to fix the failure in the post_suite caused by Puppet Server never starting and therefore never producing any logs for the log copy step in the post_suite.\n\nhttps://github.com/puppetlabs/puppet-server/pull/517", "created": "2015-04-29T14:42:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I'm going to pull this through to done in the interest of getting this closed during this sprint, but technically the new job hasn't yet passed successfully.  There pull request that should get it passing green has been merged and the CI job is currently running [here|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/experimental%20jobs/job/experimental_puppet-server_packaging-os-clj_lein-ezbake_2.1.x/2/BuildGraph/].\n\nUnless this run fails, which it shouldn't because I ran the change locally using the same beaker invocation, and it passed, there is no more remaining work on this ticket.\n\nThere is some follow up work related to the Jenkins changes to clarify some things related to the changed, but these are already captured in QENG-2227 and QENG-2315.", "created": "2015-04-29T15:02:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "2.1.x passed the experimental job [puppet-server (2.1.x) 21: Puppet 3 Compatibility Acceptance Test Suite|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/experimental%20jobs/job/experimental_puppet-server_integration-system_no-conditional_puppet3-compat_2.1.x/3/].", "created": "2015-04-29T16:06:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Risk analysis unnecessary for testing-related tickets.", "created": "2015-05-01T15:25:00.000000"}], "components": [], "created": "2015-04-14T12:21:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54629470"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyowwf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_189003_*|*_1_*:*_1_*:*_81902416_*|*_10007_*:*_1_*:*_1015848_*|*_3_*:*_2_*:*_1021381667_*|*_5_*:*_1_*:*_44652378306_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_177031443_*|*_10006_*:*_1_*:*_24169941"}], "description": "This ticket covers everything necessary to write/run acceptance tests with a 3.x agent against a 4.x master/server (not including the tests themselves though).\n\nSince individual tests don't set up the environment (and thus can't contain everything necessary for testing 3.x->4.x), we're thinking this effort could result in a whole new Jenkins job.\n\nWe'll probably need to involve someone from QE to determine the best way for doing this.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17027", "fixedVersions": ["SERVER 2.1.0"], "id": "17027", "issueType": "Task", "key": "SERVER-545", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Done", "resolutionDate": "2015-04-29T15:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Beaker infrastructure for testing 3.x->4.x compatibility", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I've never been happy about what we did there either.  Before we go to the extent of duplicating Ring middleware into our own library, though, it might make sense to survey existing Ruby requests into Puppet to see if the duplication of the payload between the body and destructured query params is really needed.\n\nI remember seeing that Passenger and WEBrick had duplicated the payloads across both but if Puppet endpoints have practically been implemented to only read from one or the other anyway, maybe it would be enough to just optimize accordingly.  My recollection is that the destructured query params tend to be read by backend endpoints in Ruby Puppet code - although I don't remember what endpoints I'd been surveying at the time.\n\nIf we find that the duplication is still needed to support historical Ruby endpoint implementations, I'd prefer to see if we could get a PR into the upstream Ring middleware code to support what we need rather than duplicating - assuming the Ring community would be receptive to this.", "created": "2015-04-14T09:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I have a comment in my upcoming PR that discusses all of that.  Basically, I'd rather defer the reconcilitation of the Passenger/WEBrick/etc. stuff until the point in time when we're getting rid of the other web servers.  I did submit an upstream PR and they wouldn't accept it because the ring spec says that the body has to be an InputStream.\n\nWe can discuss further when I get my PR up, and maybe you can talk me out of all of this :)  But this was relevant to the other code I'm working on right now, and it seemed like a good time to get it fixed.", "created": "2015-04-14T10:23:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Assuming we merge the PR for this, we could probably close out PE-4374, since it had only been created to assess the performance impact of the double-copy, which would go away.", "created": "2015-04-15T13:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "For reference, here's the upstream PR where I was trying to find a way to solve this on the ring side, so we wouldn't need to duplicate the code:\n\nhttps://github.com/ring-clojure/ring/pull/193\n\nI think his concerns about this being too much of an edge case to warrant acceptance of an upstream PR were pretty well-founded", "created": "2015-04-17T02:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] : this has gone through CI.  I believe that it is a low risk ticket", "created": "2015-05-01T06:55:00.000000"}], "components": [], "created": "2015-04-14T09:13:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33477630"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovbz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Related to other code I was working on"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_69068202_*|*_1_*:*_1_*:*_182490_*|*_10007_*:*_2_*:*_1223676466_*|*_3_*:*_2_*:*_167481097_*|*_5_*:*_1_*:*_2872490052_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_12807424"}], "description": "Due to some conflicting opinions about how request bodies should be processed between the Ruby Puppet code and ring's 'params' middleware, our current code has the unfortunate behavior of reading the body of the HTTP request into memory twice for any requests that are routed into the JRuby layer.\n\nWe can prevent this by duplicating a few functions from the ring middleware library in our own code base, which isn't awesome, but seems preferable to the unnecessary extra memory usage (which can be a pretty big chunk of RAM for requests like catalog/report).\n_________\nRisk Assessment: Low\nSeverity: Low\nProbability: Low\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17593", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "17593", "issueType": "Improvement", "key": "SERVER-544", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-05-01T10:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "don't read two copies of the request body in for JRuby requests", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This seems like a good idea but we'd need to consider our story for upgrades unless we introduced this in a major.\n\nAlso, while we're thinking about this... it's much more likely that we're going to end up wanting to isolate scripting containers based on Puppet version than on Ruby version... so, if we're trying to map out what sorts of paths we might need in the future, would be worth considering that.", "created": "2015-04-10T07:30:00.000000"}], "components": [], "created": "2015-04-09T18:54:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@670eb0bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3x9r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_491311718_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_52208384111"}], "description": "As mentioned in SERVER-530, the gem library path for puppetserver is {{/opt/puppetlabs/server/data/puppetserver/jruby-gems}}.  This path does does not vary along the axis of Ruby version.\n\nIn the future we may want to run multiple scripting containers with different versions of Ruby in each container.  In this scenario, a global configuration setting with a single gem library path will likely be problematic because the motivation for running multiple versions of JRuby will likely be for compatibility and support.  A single shared library path will likely be incompatible with one of the JRuby versions.\n\nIf we follow the MRI convention for Gem paths we could avoid this compatibility problem because the path encodes version information.  For example, the Ruby $LOAD_PATH contains version information:\n\n{code}\nruby -e 'puts $LOAD_PATH'\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/site_ruby/2.1.0\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/site_ruby/2.1.0/x86_64-darwin13.0\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/site_ruby\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/vendor_ruby/2.1.0\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/vendor_ruby/2.1.0/x86_64-darwin13.0\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/vendor_ruby\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/2.1.0\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/2.1.0/x86_64-darwin13.0\n{code}\n\nand the Gem path contains version information:\n\n{code}\nRubyGems Environment:\n  - RUBYGEMS VERSION: 2.2.2\n  - RUBY VERSION: 2.1.4 (2014-10-27 patchlevel 265) [x86_64-darwin13.0]\n  - INSTALLATION DIRECTORY: /opt/crossfader/versions/ruby/2.1.4/gemsets/crossfader/ruby/2.1.0\n  - RUBY EXECUTABLE: /opt/crossfader/versions/ruby/2.1.4/bin/ruby\n  - EXECUTABLE DIRECTORY: /opt/crossfader/versions/ruby/2.1.4/gemsets/crossfader/ruby/2.1.0/bin\n  - SPEC CACHE DIRECTORY: /Users/jeff/.gem/specs\n  - RUBYGEMS PLATFORMS:\n    - ruby\n    - x86_64-darwin-13\n  - GEM PATHS:\n     - /opt/crossfader/versions/ruby/2.1.4/gemsets/crossfader/ruby/2.1.0\n     - /opt/crossfader/versions/ruby/2.1.4/gemsets/global/ruby/2.1.0\n     - /opt/crossfader/versions/ruby/2.1.4/lib/ruby/gems/2.1.0\n     - /Users/jeff/.gem/ruby/2.1.0\n  - GEM CONFIGURATION:\n     - :update_sources => true\n     - :verbose => true\n     - :backtrace => false\n     - :bulk_threshold => 1000\n  - REMOTE SOURCES:\n     - https://rubygems.org/\n  - SHELL PATH:\n     - /usr/local/heroku/bin\n     - /opt/crossfader/bin\n     - /opt/crossfader/versions/ruby/2.1.4/gemsets/crossfader/ruby/2.1.0/bin\n     - /opt/crossfader/versions/ruby/2.1.4/gemsets/global/ruby/2.1.0/bin\n     - /opt/crossfader/versions/ruby/2.1.4/bin\n     - /opt/crossfader/versions/jdk/1.7.0_75/bin\n     - /usr/local/heroku/bin\n     - /usr/local/bin\n     - /usr/bin\n     - /bin\n     - /usr/sbin\n     - /sbin\n     - /opt/X11/bin\n     - /usr/local/MacGPG2/bin\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15546", "fixedVersions": [], "id": "15546", "issueType": "Improvement", "key": "SERVER-543", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\ud83d\udc8e Follow MRI convention of version specific Gem library paths", "timeSpent": "PT0S", "updated": "2016-12-09T16:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "It would be better to return a 400 Bad Request with a message about the missing required parameter in the response body in this case.", "created": "2016-02-24T18:00:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "For QA review purposes, this change affected the logic for when we tell our web routing framework a request is malformed/invalid. The included test is at the service unit level (in process testing passing through the web routing framework).\n\n(That info may not be helpful for the QA review, or it could be incredibly obvious to folks who have been on the team longer than I. Let me know if it is helpful, for now it's at least helpful for me to think about what degree of testing I've put my changes through).", "created": "2016-03-05T05:32:00.000000"}], "components": ["Puppet Server"], "created": "2015-04-09T18:38:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f86ffb9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xun:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Had time for additional low hanging fruit while on-boarding"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_363207986_*|*_1_*:*_1_*:*_492125835_*|*_10007_*:*_1_*:*_64308545_*|*_5_*:*_1_*:*_6140530987_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_83251542_*|*_10006_*:*_1_*:*_27927936209"}], "description": "If a PUT request is made to {{/certificate_status}} that does not include a {{desired_state}} parameter, a null pointer exception gets thrown.\n\n{code}\n$ curl -k -i --cert /etc/puppetlabs/puppet/ssl/certs/precise64-1.localdomain.pem --key /etc/puppetlabs/puppet/ssl/private_keys/precise64-1.localdomain.pem --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem -X PUT -H \"Content-Type: application/json\" -d '{\"foo_state\": \"signed\"}' https://localhost:8140/puppet-ca/v1/certificate_status/bar\nHTTP/1.1 500 Server Error\nDate: Fri, 10 Apr 2015 00:33:50 GMT\nX-Puppet-Version: 4.0.0-rc2\nContent-Type: text/plain; charset=ISO-8859-1\nContent-Length: 53\nServer: Jetty(9.1.z-SNAPSHOT)\n\nInternal Server Error: java.lang.NullPointerException\n{code}\n\nThis is due to: https://github.com/rlinehan/puppet-server/blob/master/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L196\n\nThis is an issue in both Puppet Server 1.0.x and Puppet Server 2.0.0 (both stable and master branches of Puppet Server).", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "14933", "fixedVersions": ["SERVER 2.4.0"], "id": "14933", "issueType": "Bug", "key": "SERVER-542", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2016-03-09T13:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "NullPointerException if PUT /certificate_status does not specify desired_state", "timeSpent": "PT0S", "updated": "2016-05-19T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This sounds like it might be a duplicate of SERVER-377.  Can you take a look at that and see if you agree?  If so, I'd suggest we close this as a duplicate.", "created": "2015-04-09T15:00:00.000000"}, {"author": "557058:8a143d5d-8214-422d-9972-04c2e2082058", "body": "Yes it is a duplicate, sorry for wasting your time.", "created": "2015-04-09T15:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Oh, no problem.  I'll close this one, then.", "created": "2015-04-09T15:13:00.000000"}], "components": ["Puppet Server"], "created": "2015-04-09T06:11:00.000000", "creator": "557058:8a143d5d-8214-422d-9972-04c2e2082058", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f4130e6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzbjr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_32598919_*|*_6_*:*_1_*:*_0"}], "description": "When using puppet server 1.0.8, I can no longer install gems via our proxy server:\n\npuppetserver gem install hiera-eyaml -v 1.1.4\nERROR:  Could not find a valid gem 'hiera-eyaml' (= 1.1.4), here is why:\n          Unable to download data from https://rubygems.org/ - Errno::ECONNREFUSED: Connection refused - Connection refused (https://rubygems.org/specs.4.8.gz)\n\nDowngrading to 1.0.2-1puppetlabs1 resolved this issue for me:\npuppetserver gem install hiera-eyaml -v 1.1.4\nFetching: trollop-2.1.2.gem (100%)\nSuccessfully installed trollop-2.1.2\nFetching: highline-1.7.1.gem (100%)\nSuccessfully installed highline-1.7.1\nFetching: hiera-eyaml-1.1.4.gem (100%)\nSuccessfully installed hiera-eyaml-1.1.4\n3 gems installed", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17292", "fixedVersions": [], "id": "17292", "issueType": "Bug", "key": "SERVER-540", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8a143d5d-8214-422d-9972-04c2e2082058", "resolution": "Duplicate", "resolutionDate": "2015-04-09T15:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 1.0.8-1puppetlabs1 no longer honours proxy for installing gems", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I tried reproducing this by creating an {{/etc/puppet/manifests}} directory before installing puppetserver 1.0.8.  The installation was successful for me.\n\nI was only able to reproduce a problem like this if {{/etc/puppet/manifests}} existed as a file at the time I'd attempted to install the puppetserver package.  In your case, did \"manifests\" exist as a file rather than a directory?  If this is the issue you were seeing, I'm not sure it would make sense to have the package remediate this automatically by deleting the file and recreating a directory in its place.  Assuming that the file might have some content in it that may have been important to the user, I'm thinking it might be better for the user to decide how to remediate the problem - e.g., move / remove the file - and then re-run the installation.", "created": "2015-04-07T14:03:00.000000"}, {"author": "557058:b9d9f349-018f-4748-b973-05d3beeabd50", "body": "You are correct!  In my case, /etc/puppet/manifests was a dangling symlink to /vagrant/manifests:  I was testing in a Vagrant image and hadn't updated the VBox guest additions, so the /vagrant directory hadn't been mounted.\n\nThanks for checking!  You can close this issue.", "created": "2015-04-07T15:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:b9d9f349-018f-4748-b973-05d3beeabd50], not a problem.  Closing this one out...", "created": "2015-04-07T17:30:00.000000"}], "components": ["Puppet Server"], "created": "2015-04-06T08:58:00.000000", "creator": "557058:b9d9f349-018f-4748-b973-05d3beeabd50", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@337ef419"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz8sn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_117159475_*|*_6_*:*_1_*:*_0"}], "description": "If I run `yum install -y puppetserver`, the installation fails with the following message:\n\nmkdir: cannot create directory \u2018/etc/puppet/manifests\u2019: File exists\nerror: %pre(puppetserver-1.0.8-1.el7.noarch) scriptlet failed, exit status 1\nError in PREIN scriptlet in rpm package puppetserver-1.0.8-1.el7.noarch\nerror: puppetserver-1.0.8-1.el7.noarch: install failed\n\nI manually created /etc/puppet/manifests *before* installing the puppetserver RPM.\n\nI think the preinstall scriptlet should check for the presence of a directory at /etc/puppet/manifests rather than error out:\n\nif [ ! -d /etc/puppet/manifests ]; then mkdir -p /etc/puppet/manifests; fi\n\n", "environment": "Puppet Labs Vagrant image \"puppetlabs/centos-7.0-64-puppet\" upgraded to Red Hat Enterprise Linux 7.1.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14932", "fixedVersions": [], "id": "14932", "issueType": "Bug", "key": "SERVER-539", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b9d9f349-018f-4748-b973-05d3beeabd50", "resolution": "Won't Fix", "resolutionDate": "2015-04-07T17:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "RPM installation fails if /etc/puppet/manifests exists", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Confirmed in IRC that the hipchat report processor was from the forge, https://forge.puppetlabs.com/jamtur01/hipchat , v0.5.1.\n\nI am able to repro this locally.  (Seems to work fine in irb, but fails in crazy ways in the production server.)\n\nI hacked up the source of the hipchat report processor locally.  I changed this part:\n\nhttps://github.com/jamtur01/puppet-hipchat/blob/5dca362c935d16f066eae242e21baeb53e31d6c8/lib/puppet/reports/hipchat.rb#L6-L8\n\nto assign the load error to a variable and then log it, and then could see this in the server log:\n\n{{Error: Could not find RubyGem json (~> 1.8)}}\n\nThis is super weird because it doesn't happen in irb, and because JRuby definitely ships with an implementation of JSON.\n\nMy best guess is that it has to do with SERVER-297, and the fact that we're currently not initializing our JRuby containers in exactly the same way between irb and production.  Specifically:\n\nhttps://github.com/puppetlabs/puppet-server/blob/16556be1d84bc1f8e6dfc261b92b550955eb887f/src/clj/puppetlabs/puppetserver/cli/irb.clj#L22-L24\n\nI'm pretty sure we don't add those items to the load path in production, and that'd be my best guess of what's causing it.  If that is the case, then 1.0.8 users could theoretically work around this issue for now by adding those load paths in {{os-settings.conf}}.  I tried to do that on my repro box and it didn't fix the issue, but I only had a couple of minutes to spend on it and I might have made a typo or something.\n\nIf it's not that, then it could be related to the environment:\n\nhttps://github.com/puppetlabs/puppet-server/blob/16556be1d84bc1f8e6dfc261b92b550955eb887f/src/clj/puppetlabs/puppetserver/cli/irb.clj#L26\n\nor there could be something that happens in {{org.jruby.Main}}:\n\nhttps://github.com/puppetlabs/puppet-server/blob/16556be1d84bc1f8e6dfc261b92b550955eb887f/src/clj/puppetlabs/puppetserver/cli/irb.clj#L29\n\nthat doesn't happen when you instantiate a {{ScriptingContainer}}", "created": "2015-04-03T15:58:00.000000"}, {"author": "557058:a385126e-4a9d-434f-930b-2ffae6d53a89", "body": "Chris,\n\nThis all sounds good to me. Looking @ my os-settings.conf, currently its only got:\n\nos-settings: {\n    ruby-load-path: [/usr/lib/ruby/site_ruby/1.8]\n}\n\nI'm trying to grok what additional paths I'd put in there... I'm assuming we're talking about these:\n\n        load-path    (->> (get-in config [:jruby-puppet :ruby-load-path])\n                          (cons jruby-puppet/ruby-code-dir)\n                          (cons (str jruby-home \"/lib/ruby/1.9\"))\n                          (cons (str jruby-home \"/lib/ruby/shared\"))\n                          (cons (str jruby-home \"/lib/ruby/1.9/site_ruby\")))]\n\nbut I'm struggling to find what jruby-home would be locally, or how i'd represent that in the config...", "created": "2015-04-07T09:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I wonder if there's something system / rubygems version specific about this issue.\n\nI wasn't able to reproduce this problem on CentOS 7 with puppetserver 1.0.8.  I did a \"puppetserver gem install hipchat\" to get the hipchat gem installed and visible to the puppetserver on the master.  In my case, the hipchat report processor appeared to be loaded fine on the master.  The \"You need the 'hipchat\" gem to use this Hipchat report\" error was not written to the log.  I also instrumented the report code further to validate that the \"require 'hipchat'\" call was successful.  The report processor's process() method was also called when an agent sent a report to the master.\n\nI did run into this issue - https://github.com/jamtur01/puppet-hipchat/issues/24.  In my case, I worked around it by calling \"to_s\" on version:\n\n{code:ruby}\n...\nif HIPCHAT_PROXY && (RUBY_VERSION < '1.9.3' || Gem.loaded_specs[\"hipchat\"].version.to_s < '1.0.0')\n...\n{code}\n\nI'll try on something RHEL-6 based and see if I can reproduce there.", "created": "2015-04-07T10:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I was able to reproduce the \"require 'hipchat'\" failure, running on CentOS 6 with puppetserver 1.0.8.\n\nIt does seem that the difference between the Ruby load path initialization between the puppetserver irb and production code is important.  \n\nInitially, I tried changing the contents of the {{/etc/puppetserver/conf.d/os-settings.conf}} to:\n\n{noformat}\nos-settings: {\n    ruby-load-path: [ \"file:/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/site_ruby\", \"file:/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared\", \"file:/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9\", \"/usr/lib/ruby/site_ruby/1.8\" ]\n}\n{noformat}\n\nThis was intended to mimic the way the load path is set up in \"puppetserver irb\".  This would allow any conflicting embedded JRuby resources in the puppet-server-release jar file to supersede their counterparts in the system Ruby load path, \"/usr/lib/ruby/site_ruby/1.8\".  For example, the JRuby rubygems would be used instead of the system (MRI compatible) rubygems.\n\nThis by itself didn't allow the \"require 'hipchat'\" call to succeed.  The production puppetserver code sets the load path onto a JRuby {{ScriptingContainer}} here: https://github.com/puppetlabs/puppet-server/blob/16556be1d84bc1f8e6dfc261b92b550955eb887f/src/clj/puppetlabs/services/jruby/jruby_puppet_core.clj#L139-L140.\n\n{code}\n(.setLoadPaths (cons ruby-code-dir (map fs/absolute-path ruby-load-path)))\n{code}\n\nUnfortunately, the \"fs/absolute-path\" call here would mangle the \"file:/..\" references from the load path because Java wouldn't recognize these as fully-qualified paths.  So I had to change this to:\n\n{code}\n(.setLoadPaths (cons ruby-code-dir ruby-load-path))\n{code}\n\nSince the \"puppetlabs/services/jruby/jruby_puppet_core.clj\" file lives inside of {{/usr/share/puppetserver/puppet-server-release.jar}}, I had to extract that file manually, update it with the above code change, stick the modified file back into the jar, and restart the puppetserver service.  After doing that, the next puppet agent run that I did no longer caused the \"You need the 'hipchat' gem to use this Hipchat report\" error to appear.  I further instrumented around the \"require 'hipchat'\" call to see that it was now returning \"true\" like irb does.\n\nModifying the code within the package like this obviously isn't a good thing to have to do.  We should look at a better approach for this as part of the work planned for SERVER-297.\n\n---\n\nIIRC, the reason we front-loaded the load path in the irb subcommand with the embedded JRuby paths was that we would otherwise get some errors as the system rubygems were being used to load some gems into the irb shell. I think having the embedded JRuby paths supersede the system one would be worthwhile to pursue for the production code path as well - and something we should look at for SERVER-297.\n\nWe'll have to think about the best way to do this.  We could just go with the implementation as it is done for the irb command, although that alone would disallow the use case of a user wanting to put something else in front of all of the JRuby paths, e.g., for troubleshooting.  It might be better to have some way in the specification of the \"ruby-load-path\" variable to use some kind of sentinel value for one of the paths that the puppetserver runtime would know to expand into the embedded JRuby paths.  For example, if one were to specify a ruby-load-path of...\n\n{noformat}\n[ \"/my/global/libs\", :jruby-libs, \"/usr/lib/ruby/site_ruby/1.8\" ]\n{noformat}\n\n... then the puppetserver runtime could expand this into the following when populating the container:\n\n{noformat}\n[ \"/my/global/libs\", \"puppet-server-lib\", \"file:/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/site_ruby\", \"file:/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared\", \"file:/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9\", \"/usr/lib/ruby/site_ruby/1.8\" ]\n{noformat}", "created": "2015-04-07T13:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm not a huge fan of the sentinel idea.  :(\n\nIn Puppet Server 2.0 / Puppet 4.0, we should no longer need to have the system {{site_ruby}} dir on the load path at all, because Puppet's ruby code will be installed to a standard non-system location ({{/opt/puppet/something?}}).  Assuming that model, it seems like the best thing to do would be to append our implicit load path stuff (paths to the resources inside the jruby jar) to the paths specified by the user in their config file.  That gives the user full control over the precedence.\n\nWe probably can't do that for Puppet Server 1.x, for the reasons that you alluded to above... but since we should be making a pretty big shift over into the 2.x world soon, I think I'd be fine with just pre-pending the JRuby paths for 1.x, and living with the fact that we don't give the user a way to supersede them.  I'm not sure I've heard of a concrete use case yet where that would actually cause any problems, anyway.", "created": "2015-04-10T04:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}In Puppet Server 2.0 / Puppet 4.0, we should no longer need to have the system site_ruby dir on the load path at all, because Puppet's ruby code will be installed to a standard non-system location (/opt/puppet/something?).{quote}\n\nAh, good point.  You're right.  For Puppet 4.x, Puppet's Ruby code will be loaded to a directory that is different from {{site_ruby}} - {{/opt/puppetlabs/puppet/lib/ruby/vendor_ruby}}.\n\n{quote}Assuming that model, it seems like the best thing to do would be to append our implicit load path stuff (paths to the resources inside the jruby jar) to the paths specified by the user in their config file.{quote}\n\nFor Puppet Server 2.x / Puppet 4.x, I don't think we'd need to change anything.  JRuby already implicitly adds its internal load paths to the end of whatever load paths you set into the {{ScriptingContainer}}.\n\nWith a 2.0.0-rc4 Puppet Server and corresponding Puppet Agent package installed, I validated that if I loaded the hipchat gem through \"puppetserver gem install\" and loaded the jamtur01/puppet-hipchat module on a clean CentOS 6 VM that the gem was loaded properly - no \"You need the 'hipchat' gem to use this Hipchat report\" error message.  The \"ruby-load-path\" in the \"puppetserver.conf\" file only had the default value in it - with none of the JRuby lib paths appended.\n\n{quote}We probably can't do that for Puppet Server 1.x, for the reasons that you alluded to above... but since we should be making a pretty big shift over into the 2.x world soon, I think I'd be fine with just pre-pending the JRuby paths for 1.x, and living with the fact that we don't give the user a way to supersede them.  I'm not sure I've heard of a concrete use case yet where that would actually cause any problems, anyway.{quote}\n\nGiven that the problem will likely go away automatically due to the path restructuring in Puppet Server 2.x, I'm inclined to agree with you.  The only concrete use case I could think of was having the inability to put something ahead of the JRuby load paths for debugging purposes - e.g., to alter what is loaded for a specific class/module by the runtime without having to change the system Ruby source code itself.  That doesn't seem like a strong enough use case for introducing a change that would be limited to the lifetime of Puppet Server 1.x anyway.\n", "created": "2015-04-10T16:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We are keeping this in the triage state until we have scoped the environment variable handling work (SERVER-297).  ", "created": "2015-04-29T11:23:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I've updated the text in the description of SERVER-297 to include the work that should need to be done to address this issue.  I'm going to go ahead and close this issue out, then, in favor of SERVER-297.", "created": "2015-05-06T14:55:00.000000"}], "components": ["Puppet Server"], "created": "2015-04-03T11:40:00.000000", "creator": "557058:a385126e-4a9d-434f-930b-2ffae6d53a89", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1762506f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz8in:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2862924470_*|*_6_*:*_2_*:*_52058402259_*|*_10004_*:*_1_*:*_564681389"}], "description": "PuppetServer is failing, it seems to load the 'hipchat' gem required for the Hipchat report processor. \n\nThe gem is present: \n\n[root@puppetmaster03 ~]# puppetserver gem list\n\n*** LOCAL GEMS ***\n\nffi (1.9.3 java)\nhiera-eyaml (2.0.7)\nhiera-regex (0.3.0)\nhighline (1.6.21)\nhipchat (1.5.0)\nhttparty (0.13.3)\njar-dependencies (0.1.2)\njruby-openssl (0.9.5 java)\njson (1.8.0 java)\nkrypt (0.0.2)\nkrypt-core (0.0.2 universal-java)\nkrypt-provider-jdk (0.0.2)\nmimemagic (0.3.0)\nmulti_xml (0.5.5)\nrake (10.1.0)\nrdoc (4.1.2)\ntrollop (2.1.2)\n\nAnd can be loaded:\n\n[root@puppetmaster03 ~]# puppetserver irb\nirb(main):001:0> require 'hipchat'\n=> true\nirb(main):002:0>\n\nHowever logs show: \n\n[root@puppetmaster03 ~]# tail -f /var/log/puppetserver/*|grep -i hipchat\n2015-04-03 13:19:43,367 INFO  [puppet-server] Puppet You need the `hipchat` gem to use the Hipchat report\n2015-04-03 13:19:43,407 ERROR [puppet-server] Puppet Report processor failed: uninitialized constant HipChat\n/etc/puppet/environments/production/modules/hipchat/lib/puppet/reports/hipchat.rb:78:in `process'\n\n2015-04-03 13:24:09,479 ERROR [puppet-server] Puppet Report processor failed: uninitialized constant HipChat\norg/jruby/RubyModule.java:2726:in `const_missing'\n/etc/puppet/environments/production/modules/hipchat/lib/puppet/reports/hipchat.rb:78:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:37:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:53:in `processors'\norg/jruby/RubyArray.java:1613:in `each'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:51:in `processors'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:30:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:14:in `save'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:283:in `save'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/api/v1.rb:160:in `do_save'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/api/v1.rb:50:in `call'\n/usr/lib/ruby/site_ruby/1.8/puppet/context.rb:64:in `override'\n/usr/lib/ruby/site_ruby/1.8/puppet.rb:244:in `override'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/api/v1.rb:49:in `call'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/route.rb:81:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:63:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/profiler.rb:51:in `profile'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:61:in `process'\nfile:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:38:in `handleRequest'\nPuppet$$Server$$Master_1481120990.gen:13:in `handleRequest'\nrequest_handler_core.clj:270:in `invoke'\nrequest_handler_service.clj:11:in `invoke'\nrequest_handler_service.clj:20:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\nmaster_core.clj:59:in `invoke'\ncore.clj:99:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:30:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2515:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:117:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2515:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_core.clj:78:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2515:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:117:in `invoke'\nringutils.clj:75:in `invoke'\nringutils.clj:81:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2515:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_service.clj:28:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\njetty9_core.clj:408:in `invoke'", "environment": "RHEL6.6, puppetserver-1.0.8-1.el6.noarch", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16107", "fixedVersions": ["SERVER 1.1.1"], "id": "16107", "issueType": "Bug", "key": "SERVER-538", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a385126e-4a9d-434f-930b-2ffae6d53a89", "resolution": "Duplicate", "resolutionDate": "2017-01-04T15:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Report Processo(specifically hipchat)/gem loading issue", "timeSpent": "PT0S", "updated": "2017-01-04T15:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:623c12b6ee1b5a0070293582] [~accountid:63d40628f6e1b543161789a7] not really sure where we should file this ticket, but wanted to get it captured before I forgot.", "created": "2015-04-02T15:49:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "It's not something we currently do in pe_acceptance_tests.  I would assume our test installs would likewise be producing dujour spam.  Unless by default Beaker's answer file generation as the answer file question q_pe_check_for_updates set to 'n'.  (I'm assuming that's for dujour", "created": "2015-04-02T17:29:00.000000"}, {"author": "557058:cf9507a2-54bf-4dec-90af-b6ff0ddd3f65", "body": "I thought dojour just ignored anything that didn't fit x.y.z format? If thats  changed, then its probably a good idea to get beaker to set it to false by default. Don't forget other teams also install PE for testing, like NC service etc. So anything we do in the pe_acceptance_repo is just for us and wouldn't cut out all the spam.", "created": "2015-04-02T19:04:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "> I thought dojour just ignored anything that didn't fit x.y.z format? \n\nNo, we've added the RC versions, e.g. puppetserver {{2.0.0-rc4}} in an effort to get information back about how many people are trying out our release candidates.\n\nI don't think the best solution to this problem is to have each team redirect {{updates.puppetlabs.com}} using their pre-suite since that's going to be a lot more work to coordinate and keep track of across the organization.\n\nThinking about this, I think it'd be great if the client reported back a cryptographic hash of the domain name or something.  We'd know the hashes of our own domain, e.g. {{delivery.puppetlabs.net}} and could then filter out the spam on the server side.  This would also avoid us getting sensitive client information, e.g. I'd be sad to see domain information coming from {{nsa.gov}} or whatever.\n\nJust a thought though.", "created": "2015-04-03T11:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Long term I think that would be great, but I'm guessing that getting that onto the dujour roadmap will probably take longer than the (disgusting) short-term solution, and it'd be nice to try to get the spam situation sorted prior to AIO and PE3.8 ships.", "created": "2015-04-03T11:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "My guess is that the PE acceptance test jobs don't have any infrastructure in place to prevent the checkins.  Looking at the Dujour Dashboard on updates.puppetlabs.com this morning, I see 14809 distinct checkins against pe-master / 3.8.0 already.  We only, within the last week, promoted a change into PE 3.8 which fixed a previous issue with the script that prevented any checkins.  So my guess is that the fix worked but that CI is now spamming the Dujour server with checkins.\n\nThe change we put in the Puppet Server acceptance test pipeline to add the bunk update.puppetlabs.com entry appears to be preventing Puppet Server CI jobs from checking in.  Are we planning to do something similar for Puppet platform and PE 3.8 CI pipelines?  /CC [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] as I'm not really sure who should be driving this ticket.", "created": "2015-04-08T10:00:00.000000"}, {"author": "557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4", "body": "[~accountid:63d40635a05386069cdb69d6] & [~accountid:6323b259d1b3f6489b9466a7] - who's managing DuJour these days?  Who can work on fixing this?  CC [~accountid:623a4ac7a1d81f0069d81194]\n", "created": "2015-04-08T10:21:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "One solution would be for beaker to modify the hosts file for any node that has the {{master}} role. This way we don't need to modify the presuite for each and every CI pipeline.", "created": "2015-04-08T10:52:00.000000"}, {"author": "623a4ac7a1d81f0069d81194", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] [~accountid:6323b259d1b3f6489b9466a7] [~accountid:63d40635a05386069cdb69d6] Last time we talked about this (email chain on 26 Jan), we decided that \"teams in Deepak's org\" would manage DuJour going forward.  So, no specific person per se, and it does require support from OPs for rolling out updates.  Lemme see if I can narrow in on a name for this.\nUpdate:  [~accountid:999854:6ac2f410-2dad-4e79-a75d-1bb813e0a1f0] will work on finding the right solution to this.  Could be DuJour, could be acceptance test tooling, etc. etc.  AJ will likely need to get input from [~accountid:63d40628f6e1b543161789a7], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:63d40635a05386069cdb69d6] et al.\n", "created": "2015-04-08T11:19:00.000000"}, {"author": "557058:808c35de-34a9-46bd-a472-c5ecf2deee86", "body": "Another solution would be to modify dujour itself to ignore requests from any of the puppetlabs ips, in fact there's a ticket related to that https://puppet.atlassian.net/browse/DJ-10", "created": "2015-04-08T11:21:00.000000"}, {"author": "6323b259d1b3f6489b9466a7", "body": "AJ's solution would work, though my preference would be to do what Josh suggests and fix the problem at its source, so to speak. I suppose that would make it a QE ticket?", "created": "2015-04-08T11:28:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "I also opened BKR-182 to have the test suites not checkin by default ( we can still override that if we're actually testing dujour). \n\n[~accountid:557058:808c35de-34a9-46bd-a472-c5ecf2deee86] the ticket for ignoring requests from our IPs was in the filters and such, not to completely igrnore them at the application level. \n\nSolving this problem with beaker test configurations also will help us not get spammed from tests running in EC2. ", "created": "2015-04-08T11:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "+1 to [~accountid:63d40628f6e1b543161789a7]'s suggestion.  Blacklisting IPs on the dujour side could potentially require maintenance work down the road, if our IPs change, etc.  Or if we start running new test jobs from non-Portland sites.", "created": "2015-04-10T05:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Might be good to do a combination of blacklisting IPs on the dujour side as well as the beaker change Josh suggested.  Blacklisting IPs could still be useful for eliminating any non-CI related checkins from internal IPs that the Beaker change wouldn't cover.", "created": "2015-04-10T09:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I opened BKR-237 to request Beaker work for the {{/etc/hosts}} change for FOSS on master nodes, as suggested by [~accountid:63d40628f6e1b543161789a7].", "created": "2015-04-29T18:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Closing this - will follow-up further through BKR-237.", "created": "2015-05-13T11:23:00.000000"}], "components": [], "created": "2015-04-02T15:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6aa523e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz8av:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3526496444_*|*_6_*:*_1_*:*_0"}], "description": "We have a hack in the pre-suite of puppet server's acceptance tests:\n\nhttps://github.com/puppetlabs/puppet-server/blob/f916a888cd1cf709c6b72dc7f4006d801ac8d4a6/acceptance/suites/pre_suite/foss/85_configure_sut.rb#L1-L14\n\nwhich updates /etc/hosts to include a bunk entry for {code}updates.puppetlabs.com{code}.  This prevents the test runs from causing artificial checkins with dujour.\n\nWe should probably do something similar in the puppet acceptance setup to prevent dujour spam from those tests as well.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16377", "fixedVersions": [], "id": "16377", "issueType": "Bug", "key": "SERVER-536", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2015-05-13T11:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet acceptance tests are probably spamming dujour", "timeSpent": "PT0S", "updated": "2015-06-01T18:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I have now repro'd it a few times (based on that same commit mentioned above) with the following tests commented out:\n\n{code}\ntest-error-during-init\ntest-pool-size\ntest-pool-population-during-init\n{code}\n\n(meaning that the following tests were the remaining, uncommented ones:\n\n{code}\ntest-with-jruby-puppet\ntest-borrow-timeout-configuration\ntimeout-settings-applied\n{code}\n", "created": "2015-04-02T15:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Have also been able to repro with only these two tests active:\n\n{code}\ntest-with-jruby-puppet\ntest-borrow-timeout-configuration\n{code}", "created": "2015-04-02T15:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "There's a bug in the `test-borrow-timeout-configuration` test because it doesn't include `os-settings`.  This probably happened because we got rid of `os-settings` in master before we backported the borrow-timeout changes to `stable`.  I'll investigate a bit further and hopefully file a PR.", "created": "2015-04-02T16:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I have a PR up for this now, but I'll try to summarize what I observed:\n\n* Almost every test in the `jruby-puppet-service-test` namespace was using an invalid configuration map (most of them were at least missing `ruby-load-path`).\n* This was never being caught by any of the tests because the function that would have caught it (via schema check), `create-pool-instance!`, is being mocked via the `mock-pool-instance-fixture`.\n* Because the fixture above is applied with `(use-fixtures :each ...`, and because the implementation uses `with-redefs`, there is a brief window of time between each test where the `with-redef` block is exited, and the original implementation of `create-pool-instance!` is restored before the next test starts and the next `with-redefs` kicks in\n* If there is a background thread running that is initializing a JRuby pool/instance during this window, it will call the original implementation of `create-pool-instance!`, which will log the error message shown in the description of this ticket, but no tests will fail because this background thread is left over from a previous test.  (The fact that these background threads aren't shut down gracefully is touched on in SERVER-110.)\n\nI wasn't able to completely wrap my head around how the two tests that I was using to repro this would end up leaving a background thread in a state that would cause this, but based on a bunch of experimentation around the `use-fixtures` line, I'm reasonably convinced that the explanation above is accurate.\n\nThe fix in my PR doesn't deal with the background thread issue for now.  Basically all I've done is add prismatic schema to the mock create-pool-instance function, so that the arguments passed to it are validated even if they won't all be used to create the mock instance.  Once that function was schematized all of the tests started failing, as expected, because their configs were invalid.  After that I just fixed up the configs, and have not seen the error repro since then.\n", "created": "2015-04-03T09:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Awesome work on narrowing all of the problems down.  Haven't reviewed the PR yet, but this part does still concern me a bit:\n\n{quote}\nIf there is a background thread running that is initializing a JRuby pool/instance during this window, it will call the original implementation of `create-pool-instance!`, which will log the error message shown in the description of this ticket, but no tests will fail because this background thread is left over from a previous test. (The fact that these background threads aren't shut down gracefully is touched on in SERVER-110.)\n{quote}\n\nI resuscitated an old PE ticket as SERVER-537 - various cleanup that could be done during Puppet Server service shutdown.  Maybe that work would help further mitigate the likelihood of intermittent test failures due to service executions overlapping during unit test runs.\n", "created": "2015-04-03T10:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Hmmm, maybe I should have just folded some of the text from SERVER-537 back into SERVER-110 instead.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - WDYT?", "created": "2015-04-03T10:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Doesn't matter to me too much how we Jira it, but I agree it'd be nice to tie some of that stuff off when we get a chance.", "created": "2015-04-03T11:03:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Test Rail triage and risk analysis not necessary.", "created": "2015-05-01T15:29:00.000000"}], "components": [], "created": "2015-04-02T14:57:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3aac1bdf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywu0v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "discovered a bug"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_8273458_*|*_1_*:*_1_*:*_11231816_*|*_10007_*:*_1_*:*_63543384_*|*_5_*:*_1_*:*_5278773467_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_17747"}], "description": "As of ce030bb in the stable branch of Puppet Server, if you run the jruby-puppet-service-test in a loop:\n\n{code}for i in {1..100}; do lein test puppetlabs.services.jruby.jruby-puppet-service-test; done{code}\n\nYou will occasionally see an error logged to the console:\n\n{code}\nlein test puppetlabs.services.jruby.jruby-puppet-service-test\n2015-04-01 16:16:59,076 ERROR [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12054$prime_pool_BANG___12055$fn__12059.invoke(jruby_puppet_agents.clj:60) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12054$prime_pool_BANG___12055.invoke(jruby_puppet_agents.clj:38) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12160$send_prime_pool_BANG___12161$fn__12162$fn__12164.invoke(jruby_puppet_agents.clj:132) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:256) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:240) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__6095$service_fnk__5288__auto___positional$reify__6100.shutdown_on_error(internal.clj:295) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval6031$fn__6043$G__6017__6051.invoke(internal.clj:264) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval6031$fn__6043$G__6016__6060.invoke(internal.clj:264) [na:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:160) [clojure-1.6.0.jar:na]\n\tat clojure.lang.AFn.applyTo(AFn.java:144) [clojure-1.6.0.jar:na]\n\tat clojure.core$apply.invoke(core.clj:626) [clojure-1.6.0.jar:na]\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [clojure-1.6.0.jar:na]\n\tat clojure.lang.RestFn.applyTo(RestFn.java:137) [clojure-1.6.0.jar:na]\n\tat clojure.core$apply.invoke(core.clj:626) [clojure-1.6.0.jar:na]\n\tat clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [clojure-1.6.0.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:408) [clojure-1.6.0.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12032$send_agent__12033$fn__12034$agent_fn__12035.invoke(jruby_puppet_agents.clj:32) [na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913) [clojure-1.6.0.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154) [clojure-1.6.0.jar:na]\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132) [clojure-1.6.0.jar:na]\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114) [clojure-1.6.0.jar:na]\n\tat clojure.lang.Agent$Action.run(Agent.java:163) [clojure-1.6.0.jar:na]\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55]\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55]\n\tat java.lang.Thread.run(Thread.java:744) [na:1.7.0_55]\nCaused by: java.lang.Exception: JRuby service missing config value 'ruby-load-path'\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval11795$create_pool_instance_BANG___11796$fn__11797.invoke(jruby_puppet_internal.clj:93) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval11795$create_pool_instance_BANG___11796.invoke(jruby_puppet_internal.clj:83) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval12054$prime_pool_BANG___12055$fn__12059.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n\t... 24 common frames omitted\n{code}\n\nI would guess it occurs somewhere on the order of once every 30 runs on my box.  This does not cause any test failures.  I've had a hard time tracking down exactly what's causing it; my best guess is that it is a test race and not an actual bug in the code, but I don't have any way to validate that yet.\n\nTalked through the issue with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and our theory is that it might have something to do with some random combination of:\n\n1. If the TK app is shut down before the JRuby pool finishes initializing, the background thread that is doing the initializing keeps on going,\n2. If we finished one test and moved on to the next one while issue #1 was occurring, it's possible that the logging could be re-initialized for the next test and that there would be a brief window where a log message would slip through to the console, and\n3. There is at least one test in that namespace that is intentionally trying to cause/catch an exception.\n\nI've tried commenting out some of the tests in the namespace to see if I can narrow it down, but so far I haven't been able to repro it with *any* of the tests commented out.  :(\n\nI also tried adding print statements to the beginning and end of each test.  Every time I've witnessed the error message since then, it's happened during the execution of `test-with-jruby-puppet` (I see a print from the beginning of that test, then the error, and then a print from the end of that test each time.)\n\nHowever, I've tried commenting out all of the other tests besides that one and running in a loop, and haven't seen it repro so far.  Will probably try adding back in the test just before and just after that one and see if that gives any more clues, and then punt on this for now.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17590", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "17590", "issueType": "Bug", "key": "SERVER-535", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-04-03T14:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\ud83d\ude4a\u26d4\u33d2\ud83d\ude37 transient IllegalStateException / WP violation in jruby-service-test", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Bumped to the Facter submodule to the 2.4.3 tag as well.", "created": "2015-04-09T16:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Full run in Jenkins following the integration of this PR was green - see https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/239/.\n\nConfirmed in the console output for the job that Puppet 3.7.5 and Facter 2.4.3 were installed for the test run.\n\nMoving this ticket to \"done\" since there's not really anything for QA to validate here - just a maintenance / configuration ticket.", "created": "2015-04-15T12:42:00.000000"}], "components": [], "created": "2015-04-02T13:52:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f1014bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz81r:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Had the bandwidth to do more work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_81388_*|*_10007_*:*_1_*:*_519423389_*|*_3_*:*_1_*:*_1265393_*|*_5_*:*_1_*:*_45870400260_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_598196120"}], "description": "Since Puppet 3.7.5 has released, might be good to bump the Puppet submodule on Puppet Server's stable branch from 3.7.4 to 3.7.5 since that's what new user installs would be getting by default now.\n\nWould need to see if there is a corresponding bump to Facter or any gems that we would need to use in CI - beaker, etc. - to have a 3.7.5-compatible pipeline.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16612", "fixedVersions": [], "id": "16612", "issueType": "Task", "key": "SERVER-534", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-04-15T12:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump Puppet submodule to 3.7.5 for stable", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Add pull request: https://github.com/puppetlabs/puppet-server/pull/486", "created": "2015-04-02T18:11:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pleas note, merging the PR shouldn't move this ticket to the right, but rather back to \"in progress\" so I can take care of items 2 and 3.\n\nThe PR is mainly an RFC", "created": "2015-04-02T18:17:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}\n1) Submit a PR with changes to the README_BRANCHING.md doc, covering the 2.1 development branch strategy. A separate PR to the master and stable branches should be filed.\n{quote}\n\nPR merged into master.\n\n{quote}\n2) After the above PR is merged to master, create a \"2.1\" branch in the Puppet Server repo - branched from whatever the HEAD of the master branch is at the time.\n{quote}\n\n2.1.x branched off of master at HEAD 5ad6dd7bffe31ab4fc4efad7aa071830def81f6a and pushed to origin.\n\nGithub's HipChat Webhook has been updated to notify us on {{master,stable,2.1.x}}.\n\n{quote}\n3) Work with QE to get a CI pipeline (ci-job-configs, etc.) set up for the 2.1 branch. That pipeline should basically draw from the current state of the pipeline on the master branch.\n{quote}\n\nWorked with Justin Stoller on QENG-2139 to establish the CI pipeline.", "created": "2015-04-03T14:18:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Waiting on QENG-2139", "created": "2015-04-03T14:20:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "2.1.x branch and pipeline have been created.", "created": "2015-04-07T10:22:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Treating as a house keeping ticket.  No risk assessment or additional QA action needed.\n", "created": "2015-04-14T16:23:00.000000"}], "components": [], "created": "2015-04-02T13:30:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7414523b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz81j:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Needed extra work to setup the 2.1 branch because of 2.0 GA delays"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10902846_*|*_10007_*:*_1_*:*_70142304_*|*_3_*:*_2_*:*_8318537_*|*_5_*:*_1_*:*_46570011611_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_331342973"}], "description": "We need to get a separate branch and pipeline setup for Puppet Server 2.1 development work since it will be some number of days before we're ready to cut the Puppet Server 2.0 GA release and don't want to hold up 2.1 development.  Once the 2.1 branch is available, we should be able to get started on SERVER-530, merging up the stable branch from the 1.0.8 tag into the 2.1 branch.\n\nWhile the 2.1 branch exists, any new work that comes into the master branch before 2.0 GA should periodically be merged up to the 2.1 branch.\n\nThe 2.1 branch will hopefully be fairly short-lived.  Once the 2.0 GA release is cut from the master branch, we should be able to fast-forward merge content from the 2.1 branch back to the master branch and then delete the 2.1 branch and CI pipeline.\n\n---\n\nThis ticket will involve the following:\n\n1) Submit a PR with changes to the README_BRANCHING.md doc, covering the 2.1 development branch strategy.  A separate PR to the master and stable branches should be filed.\n\n2) After the above PR is merged to master, create a \"2.1\" branch in the Puppet Server repo - branched from whatever the HEAD of the master branch is at the time.\n\n3) Work with QE to get a CI pipeline (ci-job-configs, etc.) set up for the 2.1 branch.  That pipeline should basically draw from the current state of the pipeline on the master branch.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16376", "fixedVersions": ["SERVER 2.0.0"], "id": "16376", "issueType": "Task", "key": "SERVER-533", "labels": ["updated_release_notes"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-04-07T10:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create branch and pipeline for Puppet Server 2.1 work", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "trapperkeeper lein template also has this issue.", "created": "2015-04-15T11:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppet-server#stable at [9ddc1b|https://github.com/puppetlabs/puppet-server/commit/9ddc1b1e04234189c188ea73a4e868446aa4633f].", "created": "2016-03-11T23:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed full Jenkins CI run at https://jenkins.puppetlabs.com/view/puppet-server/view/all/job/platform_puppet-server_integration-system_no-conditional_full-stable/122/.  Moving to \"testing\" column.", "created": "2016-03-11T23:52:00.000000"}], "components": [], "created": "2015-04-01T18:08:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d749372"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z0f:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Git r dun"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1226055_*|*_1_*:*_1_*:*_1184708738_*|*_10007_*:*_1_*:*_29050636_*|*_5_*:*_1_*:*_16933030027_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_295373272_*|*_10006_*:*_1_*:*_28617245489"}], "description": "For all HOCON-formatted files that Puppet Labs projects use, we should be ensuring that the setting values follow the JSON approach of delimiting the setting name from the setting value with a colon character.  The webserver.conf file in FOSS Puppet Server breaks this rule.  By default it has:\n\n{noformat}\nwebserver: {\n    client-auth = want\n    ssl-host = 0.0.0.0\n    ssl-port = 8140\n}\n{noformat}\n\nInstead, this should be:\n\n{noformat}\nwebserver: {\n    client-auth: want\n    ssl-host: 0.0.0.0\n    ssl-port: 8140\n}\n{noformat}\n", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "16611", "fixedVersions": ["SERVER 2.3.0"], "id": "16611", "issueType": "Task", "key": "SERVER-532", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-03-15T10:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove = sign from webserver.conf settings", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Put up some notes about the differences in installation between 1.x and 2.x.\n\nSadly, the pre-docs are pretty thin.  Particularly around the upgrade story.", "created": "2015-04-03T14:50:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pre-docs pull request has been reviewed and merged.", "created": "2015-04-15T10:34:00.000000"}], "components": [], "created": "2015-04-01T16:03:00.000000", "creator": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50b58886"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0k7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_171068_*|*_10007_*:*_1_*:*_1021471339_*|*_3_*:*_1_*:*_11724528_*|*_5_*:*_1_*:*_45878081859_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_156516122"}], "description": "_________\nRisk Assessment: N/A  Docs.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15545", "fixedVersions": [], "id": "15545", "issueType": "Task", "key": "SERVER-531", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "resolution": "Done", "resolutionDate": "2015-04-15T10:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Work on SERVER 2.0.0 Pre-docs", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "jruby-gems path moves from {{/var/lib/puppet/jruby-gems}}  {{/opt/puppetlabs/server/data/puppetserver/jruby-gems}}\n\nA potential YAK to shave as a new ticket is that this jruby-gem directory does not follow the MRI convention of placing gems in a version-specific sub directory.  This may make it difficult for us to support multiple scripting container versions in the future as those different container versions may conflict of a non-versioned gem directory.", "created": "2015-04-08T12:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}A potential YAK to shave as a new ticket is that this jruby-gem directory does not follow the MRI convention of placing gems in a version-specific sub directory.{quote}\n\nI think version-specific directories would be a really good idea to consider.  So we don't lose track of it, could you file a separate JIRA ticket about it?", "created": "2015-04-09T16:15:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}So we don't lose track of it, could you file a separate JIRA ticket about it?{quote}\n\nCreated at: https://puppet.atlassian.net/browse/SERVER-543", "created": "2015-04-09T18:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Full Jenkins CI pipeline for all cells green for this change - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-2.1.x/18/.  Moving to \"testing\".", "created": "2015-04-18T00:48:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Marking resolved because this ticket created a release and because no QA testing was planned.", "created": "2015-04-24T13:05:00.000000"}], "components": [], "created": "2015-04-01T12:39:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6100922a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyowvz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_128005007_*|*_1_*:*_1_*:*_6402154_*|*_10007_*:*_2_*:*_650695704_*|*_3_*:*_1_*:*_133493225_*|*_5_*:*_1_*:*_45091443767_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_562593750_*|*_10006_*:*_1_*:*_507547179"}], "description": "As part of the work that we need to do for the Puppet Server 2.1 release, we should merge up the stable branch from the merge commit done for the 1.0.8 release up into the Puppet Server 2.1 development branch.  Some points to keep in mind for this:\n\n1) This ticket depends upon the creation of the 2.1 development branch, which would be done as part of SERVER-533.\n\n2) The merge-up should occur from the 1.0.8 merge commit on stable and not HEAD of the stable branch.  Work on the stable branch following the 1.0.8 merge commit is slated for Puppet Server 1.1 / 2.2.\n\n3) In the process of doing the merge-up, it would be good to identify the JIRA tickets that went into \"SERVER 1.0.8\" and tag them with \"SERVER 2.1\" to make the release process for 2.1 be a little easier later on.\n\n---------\nRisk Assessment: N/A  (This ticket creates a release.)\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16106", "fixedVersions": ["SERVER 2.1.0"], "id": "16106", "issueType": "Task", "key": "SERVER-530", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-04-24T13:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge up stable branch from 1.0.8 release commit to 2.1 branch", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "Closing this as it hasn't created any interest", "created": "2016-03-11T14:41:00.000000"}], "components": [], "created": "2015-04-01T12:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20445c1e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xuf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1204979122_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_28614641782"}], "description": "In SERVER-517, we did some work in the Ruby HTTP client handler to re-map any HttpClient exceptions thrown by clj-http-client into Ruby SocketErrors.  This was done to allow Ruby users of {{Puppet::Network::HttpPool}} instances to be able to catch errors in a generic way, whether running under MRI Ruby or under JRuby in Puppet Server.\n\nWe should spend some more time on this to see how the exceptions are delivered to callers when running under MRI Ruby.  Specifically, what are the exception classes and message contents for different types of request failures, for example:\n\n* Failure to connect due to the server not listening\n* Failure to connect due to an SSL handshake issue, either from the client or server\n* Failure to connect to a server after a timeout.\n* Successful connection but failed to receive response due to a read timeout.\n* ... and maybe some others?\n\nMy guess is that the MRI Ruby stack might give more contextual information at the outer exception layer than what is generically captured via the JRuby/Puppet Server stack today.\n\nThis ticket may ultimately lead to some further work in the Puppet Server http_client code around the exception remapping - maybe needing to drill down into nested Java exception causes returned from clj-http-client in order to produce a more suitable exception for Ruby users.  This may also lead into further work needing to be done in clj-http-client itself to provide the additional context to produce more useful exceptions.\n\nIf we find that the Puppet Server work would need to reference Apache http-client library classes directly, we should file a follow-on ticket to explore some clj-http-client layer remapping of the Apache exceptions into standard Java layer equivalents so that clients aren't forced to be coupled to Apache http-client classes that may change in the event that clj-http-client were ever migrated to a different underlying library. ", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "14931", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "14931", "issueType": "Improvement", "key": "SERVER-529", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2016-03-11T14:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate behavior for Ruby http client request failures", "timeSpent": "PT0S", "updated": "2016-04-20T15:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c0a337910a200718b9059] - what are your thoughts on this one?  Would it make sense to you to have Puppet Server follow the Ruby master / CA route and generate the certificate - to be more self-healing?  Or do you think that the current Puppet Server behavior is acceptable and understandable for the user to remediate the problem - e.g., just delete the private key or run the \"puppet cert\" tools locally to get the cert generated so that Puppet Server can boot up properly?  fyi, another user ran into a very similar - if not the same - problem in SERVER-446.", "created": "2015-04-01T11:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "fyi, we've had a couple of other instances of this ticket reported from different users.  Linked tickets are PUP-4194 and SERVER-569.", "created": "2015-04-27T14:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "moving this to 'open' so it'll come up in triage again.", "created": "2015-04-29T07:44:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]'s idea to have Puppet Server's CA automatically generate a certificate when a private key exists sounds like a reasonable improvement to me.", "created": "2015-07-22T16:59:00.000000"}, {"author": "557058:9746ec49-f625-4d95-a1b6-ff10bc7910d6", "body": "Any valid workaround for this issue ?", "created": "2016-03-22T09:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:9746ec49-f625-4d95-a1b6-ff10bc7910d6] You might have a look at SERVER-1233.  We'd be interested in hearing the details of what happened in your situation", "created": "2016-03-22T10:31:00.000000"}, {"author": "557058:9746ec49-f625-4d95-a1b6-ff10bc7910d6", "body": "@Chris Price, I did install using rpm and I don't saw any out of memory error. My problem I think was to run puppet agent and signed with the default puppet server SSL and now I got that issue when I try to use my own certificates.\n\nEnvironment: RHEL 7.2\n\npuppet-agent-1.4.0-1.el7.x86_64\npuppetserver-2.3.0-1.el7.noarch\npuppetlabs-release-pc1-1.0.0-1.el7.noarch\n\nI have an issue that probably is related.\n\nI've modified the webserver.conf with: ssl-key        : /etc/puppetlabs/puppet/ssl/private_keys/machine_name.key\n\nThe hostprivkey keep getting the .pem file instead of the key file.\n\n# puppet master --configprint hostprivkey\n/etc/puppetlabs/puppet/ssl/private_keys/machine_name.pem\n\n# puppet master --configprint hostcert\n/etc/puppetlabs/puppet/ssl/certs/machine_name.pem\n\n# puppet master --configprint localcacert\n/etc/puppetlabs/puppet/ssl/certs/ca.pem\n\nI've already removed the ssl directory and regenerated using the following doc: https://docs.puppetlabs.com/puppet/4.3/reference/ssl_regenerate_certificates.html#step-1-clear-and-regenerate-certs-on-your-puppet-master", "created": "2016-03-22T10:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:9746ec49-f625-4d95-a1b6-ff10bc7910d6] If you are trying to use your own certs rather than ones generated by Puppet Server and/or the puppet agent, you might need to add some configuration to Puppet Server's {{webserver.conf}} file.  Does this doc help?:\n\nhttps://docs.puppetlabs.com/puppetserver/latest/external_ca_configuration.html#web-server-configuration", "created": "2016-03-22T10:50:00.000000"}, {"author": "557058:9746ec49-f625-4d95-a1b6-ff10bc7910d6", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I already have that configuration, but it doesn't allow me to point to a .key. I found out this bug report due to that problem assuming it's the same issue. I think it's because I did run puppet-agent before configuring the CA.", "created": "2016-03-23T02:44:00.000000"}, {"author": "557058:9746ec49-f625-4d95-a1b6-ff10bc7910d6", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I found out the issue and now it's working. But it seems the parameter ssl-key on the webserver.conf doesn't like when I specify a file .key instead of .pem. Now it's working with .pem instead of .key.", "created": "2016-03-23T03:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:9746ec49-f625-4d95-a1b6-ff10bc7910d6] does the {{.key}} file have a different format?  Or are you saying that simply changing the file extension fixed it?", "created": "2016-03-28T18:28:00.000000"}, {"author": "557058:9746ec49-f625-4d95-a1b6-ff10bc7910d6", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yes, changing the .key to .pem did the trick. I'm having others issues as puppet agent doesn't arrive to identify it fully (I spend around 4 or 5 days without success), but probably that's for another ticket or private msg if you allow me to.", "created": "2016-03-29T02:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Interesting, I wouldn't expect the file extension to be an issue.  We should look into that on our end.\n\nPlease feel free to create another ticket for your agent issue, and feel free to ping me on it, but we'd like to keep the conversation public because it might be useful for future users that are troubleshooting an issue and searching for information.", "created": "2016-03-29T12:06:00.000000"}, {"author": "557058:27cb4a31-86b5-442d-9dd6-302c5fd1fae6", "body": "This behavior impacts me in a situation where I'm using AWS CloudFormation to stand up infrastructure in the following way: minimal OS image -> minimal cfn-init to get Puppet going -> Puppet for everything else. Including Puppet setting up Puppet itself. Major chicken/egg thing with the agent coming before the server, as the agent (with an apply) is what sets up the server. Manual steps here are no fun, the idea is total automation.", "created": "2016-06-13T12:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [68ee12|https://github.com/puppetlabs/puppetserver/commit/68ee1210a16a71a1200ddf0e1653c65cb0c6019d].  Overnight runs in CI were green so I'm going to mark this resolved.", "created": "2016-10-26T16:44:00.000000"}], "components": [], "created": "2015-04-01T11:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@92d9e3d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1205"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymn2n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "In prior releases, if an agent was run before the Puppet Server service was first started, a private key and public key would be created for the agent but the Puppet Server service would subsequently fail to start with an error message like the following:\n\njava.lang.IllegalStateException: Cannot initialize master with partial state; need all files or none.\nFound:\n/var/lib/puppet/ssl/private_keys/master.pem\nMissing:\n/var/lib/puppet/ssl/certs/master.pem\n\nFor the fix in this release, Puppet Server will use the pre-generated public and private key to generate a certificate for the master and will startup properly."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_15331464_*|*_10007_*:*_2_*:*_456700723_*|*_3_*:*_1_*:*_73587668_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_46663740966_*|*_10005_*:*_1_*:*_2404846987"}], "description": "The following sequence of steps would cause the puppetserver service to fail on initial startup:\n\n1) Install puppetserver package.\n\n2) On the master, run \"puppet agent -t\".\n\nThis generates a private key but not the associated cert.\n\n3) Start the puppetserver service.\n\nThe following error appears in the puppetserver.log output and the service fails to start:\n\n{noformat}\n2015-04-01 09:42:00,736 INFO  [p.s.p.puppet-admin-service] Starting Puppet Admin web app\n2015-04-01 09:42:00,754 ERROR [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Cannot initialize master with partial state; need all files or none.\nFound:\n/var/lib/puppet/ssl/private_keys/jb-centos7.localdomain.pem\nMissing:\n/var/lib/puppet/ssl/certs/jb-centos7.localdomain.pem\n{noformat}\n\nThe Ruby master/CA would go ahead and generate the cert and boot to ready in this situation.  We should revisit whether or not it would make sense to have the puppetserver master/CA go ahead and generate a cert automatically from a master private key if no cert is found at service startup.", "epicLinkSummary": "SSL UX Improvements", "estimate": "PT0S", "externalId": "17291", "fixedVersions": ["SERVER 2.7.0"], "id": "17291", "issueType": "Bug", "key": "SERVER-528", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": "16771", "parentSummary": "SSL UX Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-10-26T16:45:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Partial state error if run puppet agent on master before first puppetserver service start", "timeSpent": "PT0S", "updated": "2016-10-26T16:48:00.000000", "votes": "9", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Fascinating.  :)  [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] would this be from a `set +x` that we didn't have before or something?", "created": "2015-03-31T09:28:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]`set -x` and yes. My guess is from this: https://github.com/puppetlabs/ezbake/blob/stable/resources/puppetlabs/lein-ezbake/template/global/install.sh.erb#L4\nand this:\nhttps://github.com/puppetlabs/ezbake/blob/stable/resources/puppetlabs/lein-ezbake/template/global/install.sh.erb#L33\nand this:\nhttps://github.com/puppetlabs/ezbake/blob/stable/resources/puppetlabs/lein-ezbake/template/global/install.sh.erb#L25-L28", "created": "2015-03-31T10:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e], [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] - ping.  Not super urgent I guess, but should get fixed before we do follow-on releases, if possible.", "created": "2015-04-01T11:31:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "This happens when I install puppetserver 2.0.0-rc4 (on an Ubuntu 12.04 vm) too.", "created": "2015-04-09T15:27:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Looks like this needs to be fixed in both master and stable of EZBake.", "created": "2015-04-09T15:35:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] 0.2.9 of ezbake has been released, which can be used with puppetserver's stable branch. 0.3.4 should be out today or early next week.", "created": "2015-04-24T14:51:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] 0.3.4 is now available as well", "created": "2015-04-24T15:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Changes were merged to the 2.1.x and stable branches.  Jenkins CI jobs for each were green afterward:\n\nFor stable:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_full-stable/266/\n\nFor 2.1.x:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_no-conditional_full-2.1.x/4/\n\n--\n\nDid some smoke testing of this by installing Puppet Server 1.0.8 on a CentOS7 VM and doing upgrades to new package versions from our internal build server which incorporate the changes:\n \nFor stable, upgraded first to 1.0.9.SNAPSHOT.2015.04.29T04132.  Snippet from the console at the end of the upgrade:\n\n{noformat}\nRunning transaction\n  Updating   : puppetserver-1.0.9-0.1SNAPSHOT.2015.04.29T0413.el7.noarch                                                 1/2\n  Cleanup    : puppetserver-1.0.2-1.el7.noarch                                                                           2/2\n  Verifying  : puppetserver-1.0.9-0.1SNAPSHOT.2015.04.29T0413.el7.noarch                                                 1/2\n  Verifying  : puppetserver-1.0.2-1.el7.noarch                                                                           2/2\n\nUpdated:\n  puppetserver.noarch 0:1.0.9-0.1SNAPSHOT.2015.04.29T0413.el7\n\nComplete!\n{noformat}\n\nFor 2.1.x, upgraded to 2.1.0.SNAPSHOT.2015.04.29T0411.  Snippet from the console at the end of the upgrade:\n\n{noformat}\nRunning transaction\n  Installing : puppet-agent-1.0.0-1.el7.x86_64                                                                           1/7\n  Installing : 1:java-1.8.0-openjdk-headless-1.8.0.45-30.b13.el7_1.x86_64                                                2/7\n  Updating   : puppetserver-2.1.0-0.1SNAPSHOT.2015.04.29T0411.el7.noarch                                                 3/7\n  Cleanup    : puppetserver-1.0.9-0.1SNAPSHOT.2015.04.29T0413.el7.noarch                                                 4/7\n  Erasing    : puppet-3.7.5-1.el7.noarch                                                                                 5/7\n  Erasing    : 1:facter-2.4.1-1.el7.x86_64                                                                               6/7\n  Erasing    : hiera-1.3.4-1.el7.noarch                                                                                  7/7\n  Verifying  : puppetserver-2.1.0-0.1SNAPSHOT.2015.04.29T0411.el7.noarch                                                 1/7\n  Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.45-30.b13.el7_1.x86_64                                                2/7\n  Verifying  : puppet-agent-1.0.0-1.el7.x86_64                                                                           3/7\n  Verifying  : puppet-3.7.5-1.el7.noarch                                                                                 4/7\n  Verifying  : puppetserver-1.0.9-0.1SNAPSHOT.2015.04.29T0413.el7.noarch                                                 5/7\n  Verifying  : hiera-1.3.4-1.el7.noarch                                                                                  6/7\n  Verifying  : 1:facter-2.4.1-1.el7.x86_64                                                                               7/7\n\nInstalled:\n  puppet-agent.x86_64 0:1.0.0-1.el7\n\nDependency Installed:\n  java-1.8.0-openjdk-headless.x86_64 1:1.8.0.45-30.b13.el7_1\n\nUpdated:\n  puppetserver.noarch 0:2.1.0-0.1SNAPSHOT.2015.04.29T0411.el7\n\nReplaced:\n  facter.x86_64 1:2.4.1-1.el7              hiera.noarch 0:1.3.4-1.el7              puppet.noarch 0:3.7.5-1.el7\n\nComplete!\n{noformat}\n\nNote from the above that I didn't see any of the verbose environment variable output that we'd been seeing in prior packages.\n\nMoving this to \"testing\"...\n\n", "created": "2015-04-29T13:41:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Testing in CI appears to cover this well.  Moving to \"Reviewing.\"\n", "created": "2015-04-29T17:52:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-31T04:28:00.000000", "creator": "623c0c40a2f6400069eb7812", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27c3253b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyov8n:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "RE completed the dependent work, minimal bandwidth to complete"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2371242149_*|*_10007_*:*_1_*:*_167582148_*|*_10009_*:*_1_*:*_210948_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_15077513"}], "description": "Hi,\n\nwhen doing a yum update of puppetserver 1.0.2 to 1.0.8 it displays some 'debug' info.\n\n{noformat}\nDependencies Resolved\n\n============================================================================================================================================================================================\n Package                                      Arch                                   Version                                        Repository                                         Size\n============================================================================================================================================================================================\nUpdating:\n puppetserver                                 noarch                                 1.0.8-1.el6                                    custom-puppetlabs                                  29 M\n\nTransaction Summary\n============================================================================================================================================================================================\nUpgrade       1 Package(s)\n\nTotal download size: 29 M\nIs this ok [y/N]: y\nDownloading Packages:\npuppetserver-1.0.8-1.el6.noarch.rpm                                                                                                                                  |  29 MB     00:00\nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n  Updating   : puppetserver-1.0.8-1.el6.noarch                                                                                                                                          1/2\n[  OK  ] puppetserver: [  OK  ]\n[  OK  ] puppetserver: [  OK  ]\n+ prefix=/usr\n+ initdir=/etc/init.d\n+ unitdir=/usr/lib/systemd/system\n+ datadir=/usr/share\n+ real_name=puppetserver\n+ projdatadir=/usr/share/puppetserver\n+ confdir=/etc\n+ projconfdir=/etc/puppetserver\n+ rundir=/var/run\n+ bindir=/usr/bin\n+ localstatedir=/var\n+ set +x\n#-------------------------------------------------#\nThe following variables are set:\n\n_=/bin/env\nCVS_RSH=ssh\nDISPLAY=localhost:11.0\nFACTERLIB=/var/lib/puppet/lib/facter:/var/lib/puppet/facts\nG_BROKEN_FILENAMES=1\nHISTCONTROL=ignoredups\nHISTSIZE=2000\nHOME=/root\nHOSTNAME=<node>\nICTRO_STATUS=IMT\nLANG=en_US.UTF-8\nLESSOPEN=||/usr/bin/lesspipe.sh %s\nLOGNAME=root\nLS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:\nMAIL=/var/spool/mail/root\nPASSENGER_TMPDIR=/var/run/passenger\nPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin\nPWD=/\nQTDIR=/usr/lib64/qt-3.3\nQTINC=/usr/lib64/qt-3.3/include\nQTLIB=/usr/lib64/qt-3.3/lib\nRUBYLIB=/usr/local/share/puppet-puppetdbquery/lib:\nSHELL=/bin/bash\nSHLVL=3\nSUDO_COMMAND=/bin/bash\nSUDO_GID=2101\nSUDO_UID=2117\nSUDO_USER=heijmans\nTERM=xterm\nUSERNAME=root\nUSER=root\nVENDOR=\nVENDOR_TYPE=\nVENDOR_VERSION=\n\nEnd of variable print.\n#-------------------------------------------------#\n+ dispatch postinst_redhat\n+ local task=postinst_redhat\n+ shift\n+ '[' -z postinst_redhat ']'\n+ '[' '' = -h ']'\n+ task postinst_redhat\n+ local task=postinst_redhat\n+ shift\n+ echo 'Running task postinst_redhat ...'\nRunning task postinst_redhat ...\n+ eval task_postinst_redhat\n++ task_postinst_redhat\n++ :\n  Cleanup    : puppetserver-1.0.2-1.el6.noarch                                                                                                                                          2/2\n  Verifying  : puppetserver-1.0.8-1.el6.noarch                                                                                                                                          1/2\n  Verifying  : puppetserver-1.0.2-1.el6.noarch                                                                                                                                          2/2\n\nUpdated:\n  puppetserver.noarch 0:1.0.8-1.el6\n\nComplete!\n{noformat}\n\n", "environment": "RHEL 6.6 x86_64\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17071", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "17071", "issueType": "Bug", "key": "SERVER-541", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0c40a2f6400069eb7812", "resolution": "Fixed", "resolutionDate": "2015-04-29T17:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Updating rpm package shows 'debug' statements.", "timeSpent": "PT0S", "updated": "2015-05-22T14:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Testing Process for Fedora 19:\n\nObtain a vm:\n\n{code}\ncurl -d --url vmpooler/vm/fedora-19-x86_64\n{\n  \"ok\": true,\n  \"fedora-19-x86_64\": {\n    \"ok\": true,\n    \"hostname\": \"sn04rg7sv6ioucb\"\n  },\n  \"domain\": \"delivery.puppetlabs.net\"\n}\n{code}\n\nSSH in with {{ssh root@sn04rg7sv6ioucb}}\n\nConfigure the [product repositories|https://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html#for-fedora]:\n\n{code}\nsudo rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-fedora-19.noarch.rpm\n{code}\n\nConfigure the 1.0.8 release repository:\n\n{code}\ncd /etc/yum.repos.d/\ncurl -O http://builds.puppetlabs.lan/puppetserver/1.0.8/repo_configs/rpm/pl-puppetserver-1.0.8-fedora-f19-x86_64.repo\n{code}\n\nInstall puppetserver 1.0.8:\n\n{code}\nsudo yum -y puppetserver\n{code}\n\nCheck versions:\n\n{code}\n[root@sn04rg7sv6ioucb ~]# puppetserver --version\npuppetserver version: 1.0.8\n[root@sn04rg7sv6ioucb ~]# puppet --version\n3.7.5\n{code}\n\nCheck service:\n\n{code}\n[root@sn04rg7sv6ioucb ~]# service puppetserver status\nRedirecting to /bin/systemctl status  puppetserver.service\npuppetserver.service - puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/puppetserver.service", "created": "2015-03-30T12:23:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Overall result for Fedora 19: Pass, no smoke found while testing.", "created": "2015-03-30T12:24:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Testing Process for Fedora 20:\n\nObtain a VM:\n\n{code}\ncurl -d --url vmpooler/vm/fedora-20-x86_64\n{\n  \"ok\": true,\n  \"fedora-20-x86_64\": {\n    \"ok\": true,\n    \"hostname\": \"k099a4ywd7r1hs3\"\n  },\n  \"domain\": \"delivery.puppetlabs.net\"\n}\n{code}\n\nSSH in with {{ssh root@k099a4ywd7r1hs3}}\n\nConfigure the [product repositories|https://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html#for-fedora]:\n\n{code}\nsudo rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-fedora-20.noarch.rpm\n{code}\n\nConfigure the 1.0.8 release repository:\n\n{code}\ncd /etc/yum.repos.d/\ncurl -O http://builds.puppetlabs.lan/puppetserver/1.0.8/repo_configs/rpm/pl-puppetserver-1.0.8-fedora-f20-x86_64.repo\n{code}\n\nInstall puppetserver 1.0.8:\n\n{code}\nsudo yum -y puppetserver\n{code}\n\nCheck versions:\n\n{code}\n\n{code}\n\nCheck service:\n\n{code}\n[root@k099a4ywd7r1hs3 ~]# service puppetserver status\nRedirecting to /bin/systemctl status  puppetserver.service\npuppetserver.service - puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/puppetserver.service", "created": "2015-03-30T12:38:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Overall result for Fedora 20: Pass, no smoke found while testing.", "created": "2015-03-30T12:38:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Upgrade smoke test procedure from 1.0.2 to 1.0.8.\n\nObtain a VM:\n\n{code}\ncurl -d --url vmpooler/vm/fedora-20-x86_64\n{\n  \"ok\": true,\n  \"fedora-20-x86_64\": {\n    \"ok\": true,\n    \"hostname\": \"dsdzmozww35eeeb\"\n  },\n  \"domain\": \"delivery.puppetlabs.net\"\n}\n{code}\n\nSSH in as root.\n\nConfigure the [product repositories|https://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html#for-fedora]:\n\n{code}\nsudo rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-fedora-20.noarch.rpm\n{code}\n\nInstall puppetserver 1.0.2:\n\n{code}\nsudo yum install puppetserver-1.0.2\n{code}\n\nCheck versions:\n\n{code}\n[root@dsdzmozww35eeeb ~]# puppetserver --version\npuppetserver version: 1.0.2\n[root@dsdzmozww35eeeb ~]# puppet --version\n3.7.5\n{code}\n\nInstall puppetdb using a default node configuration and the puppetdb module\nfrom the forge.\n\n{code}\n[root@dsdzmozww35eeeb ~]# puppet module install puppetlabs-puppetdb\nNotice: Preparing to install into /etc/puppet/modules ...\nNotice: Downloading from https://forgeapi.puppetlabs.com ...\nNotice: Installing -- do not interrupt ...\n/etc/puppet/modules\n\u2514\u2500\u252c puppetlabs-puppetdb (v4.1.0)\n  \u251c\u2500\u2500 puppetlabs-firewall (v1.4.0)\n  \u251c\u2500\u2500 puppetlabs-inifile (v1.2.0)\n  \u2514\u2500\u252c puppetlabs-postgresql (v4.3.0)\n    \u251c\u2500\u2500 puppetlabs-apt (v1.8.0)\n    \u251c\u2500\u2500 puppetlabs-concat (v1.2.0)\n    \u2514\u2500\u2500 puppetlabs-stdlib (v4.5.1)\n\n[root@dsdzmozww35eeeb ~]# cat <<'EOF' >/etc/puppet/manifests/site.pp\nnode default {\n  notify { 'Hello World!': }\n  include puppetdb\n}\nEOF\n{code}\n\nStart the puppserver:\n\n{code}\nsudo service puppetserver start\n{code}\n\nThen make sure everything works with consecutive {{puppet agent}} runs:\n\n{code}\nsudo puppet agent --test --server $(facter fqdn)\n{code}\n\nConfigure the 1.0.8 release repository:\n\n{code}\ncd /etc/yum.repos.d/\ncurl -O http://builds.puppetlabs.lan/puppetserver/1.0.8/repo_configs/rpm/pl-puppetserver-1.0.8-fedora-f20-x86_64.repo\n{code}\n\nInstall puppetserver 1.0.8 as an upgrade from 1.0.2\n\n{code}\n# sudo yum -y install puppetserver\n\npl-puppetserver-1.0.8                                                                                                   | 2.4 kB  00:00:00\n\npl-puppetserver-1.0.8/primary_db                                                                                        | 2.2 kB  00:00:00\nResolving Dependencies\n--> Running transaction check\n---> Package puppetserver.noarch 0:1.0.2-1.fc20 will be updated\n---> Package puppetserver.noarch 0:1.0.8-1.fc20 will be an update\n--> Finished Dependency Resolution\n\nDependencies Resolved\n...\n{code}\n\nCheck versions:\n\n{code}\n[root@dsdzmozww35eeeb ~]# puppetserver --version\npuppetserver version: 1.0.8\n[root@dsdzmozww35eeeb ~]# puppet --version\n3.7.5\n{code}\n\nCheck service.  Note, as part of the upgrade the service is automatically\nstopped and started again.\n\n{code}\n[root@dsdzmozww35eeeb ~]# service puppetserver status\nRedirecting to /bin/systemctl status  puppetserver.service\npuppetserver.service - puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/puppetserver.service", "created": "2015-03-30T13:04:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Overall result for 1.0.2 to 1.0.8 upgrade on Fedora 20: Pass, no smoke found while testing.\n\nNote, I didn't actually test an upgrade when puppetserver was configured to connect to puppetdb, only that puppetserver could serve up a catalog that configured something, e.g. a stand-alone puppetdb service.", "created": "2015-03-30T13:06:00.000000"}], "components": [], "created": "2015-03-30T11:54:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d0cb9c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz5gv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24994_*|*_3_*:*_1_*:*_4366904_*|*_5_*:*_1_*:*_46759928669_*|*_6_*:*_1_*:*_0"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16105", "fixedVersions": ["SERVER 1.0.8"], "id": "16105", "issueType": "Sub-task", "key": "SERVER-525", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T13:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test 1.0.8 on Fedora 19, 20", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This will require an ezbake release to ensure https://github.com/puppetlabs/ezbake/commit/564b9bbb8483afb18d41bf2001d81027b8328f34 is available.", "created": "2015-03-27T14:13:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The ezbake work was released in 0.3.2.", "created": "2015-03-30T13:06:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I've confirmed that puppetserver is now landing in the new sub-directory of http://builds.puppetlabs.lan/puppetserver/2.0.0.SNAPSHOT.2015.04.02T0121/repos/el/7/PC1/\n\nMarking as resolved.", "created": "2015-04-02T13:52:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "**Release Notes**\n\nSetting the release notes to New Feature because this ticket roughly captures the work that went into moving the location of our packages from the previous location at the [puppetlabs product repository|https://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html] to the new location of \"Puppet Collection 1\"\n\nThe new location will have a new set of instructions associated with the \"Using the Puppet Labs Package Repositories.\"\n\nThis information will reflect the same changes being made for the all in one puppet agent package for Puppet 4.0.\n\nWe briefly mention the repository location change in the pre-docs at https://github.com/puppetlabs/pre-docs/pull/50/files#diff-1b283e618df97b0797e826397b3bd2dcR32", "created": "2015-04-13T10:40:00.000000"}], "components": [], "created": "2015-03-27T14:09:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14256f67"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz4v3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO/Pup4 blocker"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_8391787_*|*_1_*:*_1_*:*_249746518_*|*_10007_*:*_1_*:*_253521947_*|*_3_*:*_1_*:*_340109_*|*_5_*:*_1_*:*_46989614713_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5340924"}], "description": "In order for the puppetserver build to make it into the PC1 repository for the 2.0.0 release, repo-target will need to be set to PC1 in project.clj under the ezbake options.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17290", "fixedVersions": ["SERVER 2.0.0"], "id": "17290", "issueType": "Task", "key": "SERVER-524", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2015-04-02T13:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Set repo-target to PC1 for 2.0 release", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [], "components": [], "created": "2015-03-26T17:07:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27fc49aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyyrz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Asked to do this by Aliza after sprint had started, had some bandwidth to get it done in sprint."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_12070_*|*_3_*:*_1_*:*_493380491_*|*_5_*:*_1_*:*_47089135816_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_167272"}], "description": "Update the \"Which Logs Should I Check When Things Go Wrong?\" blog post for 3.7.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16375", "fixedVersions": [], "id": "16375", "issueType": "Task", "key": "SERVER-523", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-04-01T10:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update logging blog post for 3.7", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-03-26T15:19:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4361608"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz3t3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_111874_*|*_6_*:*_1_*:*_0"}], "description": "SERVER-262 documented a failure that occurs when running `puppetserver gem env`:\n\n{noformat}\n[vagrant@localhost ~]$ puppetserver gem env\nERROR:  While executing gem ... (NoMethodError)\n    undefined method `split' for nil:NilClass\n{noformat}\n\nThe fix that was done for SERVER-262 did address the error that occurred when \"puppetserver gem env\" was done.  In the process, however, the handling for the GEM_PATH environment variable for \"puppetserver gem\" changed.  Prior to the change in SERVER-262, the GEM_PATH environment variable had been set on the JRuby environment within the puppetserver process as an empty string.   The changes in SERVER-262, however, allowed whatever value may have existed in the user's external environment for GEM_PATH to be passed on through unaltered to the JRuby environment within the puppetserver process.  The GEM_PATH environment variable, however, continued to be set as an empty string in the context of the normal puppetserver service startup.\n\nThe new behavior for GEM_PATH created concern for some that users might encounter confusion around the following possible scenario:\n\n1) User had a value set in the external environment for GEM_PATH which included a directory where the MRI/system Ruby would install / look for gems.\n\n2) User had used the MRI/system Ruby gem command to install a gem into that directory, e.g., \"nokogiri.\"\n\n3) User ran \"puppetserver gem list\" and saw that \"nokogiri\" appeared to be installed.  In this case, it would be the \"nokogiri\" to be used with MRI/system Ruby, not a JRuby-compatible \"nokogiri\" - however, this distinction may not be obvious to the user.\n\n4) Assuming that the \"nokogiri\" gem had properly been installed for Puppet Server to use, user starts Puppet Server service.  Some of the user's Ruby code that references \"nokogiri\" would blow up because \"nokogiri\" couldn't be found via either GEM_HOME or GEM_PATH.\n\nRather than rework the initial work done for SERVER-262 to allow for the \"puppetserver gem env\" command to still work while alleviating potential confusion which could arise from the new GEM_PATH handling behavior, the original PR for SERVER-262 was reverted for the SERVER 1.0.3 release.\n\nSERVER-297 was submitted as a follow-on request to cover a more robust implementation for Ruby environment variable handling behaviors for Puppet Server.  The work to restore \"puppetserver gem env\" to working order should be done along with the other work in that ticket.\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15230", "fixedVersions": ["SERVER 1.0.3"], "id": "15230", "issueType": "Task", "key": "SERVER-522", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-26T15:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Temporarily undo `puppetserver gem env` fix from SERVER-262", "timeSpent": "PT0S", "updated": "2015-04-21T16:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Merged into master as https://github.com/puppetlabs/puppet-server/commit/3345d384216905d2e244fddef4b6968e3a074927", "created": "2015-03-26T17:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Passed through the full acceptance test suite in Jenkins - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/248/.  Moving to \"testing\".", "created": "2015-03-27T15:22:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I'm doing a functional review to get this into the resolved state ahead of the 2.0.0 GA release.\n\nSteps to test:\n\n * Get a VM from the pool with {{curl -d --url vmpooler/vm/centos-7-x86_64}}\n * Configure the puppet-agent 0.9.1 repository using the [repo_config|http://nightlies.puppetlabs.com/puppet-agent/0.9.1/repo_configs/rpm/pl-puppet-agent-0.9.1-el-7-x86_64.repo]\n * Configure the puppetserver 2.0.0.SNAPSHOT.2015.03.31T0122 repository using the [repo_config|http://builds.puppetlabs.lan/puppetserver/2.0.0.SNAPSHOT.2015.03.31T0122/repo_configs/rpm/pl-puppetserver-2.0.0.SNAPSHOT.2015.03.31T0122-el-7-x86_64.repo]\n * {{yum -y install puppetserver}}\n * Start a tcpdump to capture all the traffic to updates.puppetlabs.com: {{tcpdump -s1500 -w updates.cap -i ens160 host updates.puppetlabs.com}}\n * Start the puppetserver with {{service puppetserver start}}\n * Wait for the server to fully start\n * Stop the tcpdump with CTRL-C and observe the output of, {{10 packets captured}}.  This indicates tcpdump successfully captured some traffic from the system under test to the updates service.\n\nFinally, inspect the capture with {{tshark}}  The output indicates a GET request is made with the query parameters {{/?product=puppetserver&group=puppetlabs&version=2.0.0-SNAPSHOT}}  This tells us the correct artifact-id is being used to construct the product identifier and {{puppetserver}} is being used, not {{puppet-server}}.\n\n{code}\ntshark -r updates.cap\n  1   0.000000 10.32.122.250 -> 198.58.106.243 TCP 74 43259\u219280 [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=628391 TSecr=0 WS=128\n  2   0.056286 198.58.106.243 -> 10.32.122.250 TCP 74 80\u219243259 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=618049206 TSecr=628391 WS=128\n  3   0.056317 10.32.122.250 -> 198.58.106.243 TCP 66 43259\u219280 [ACK] Seq=1 Ack=1 Win=14720 Len=0 TSval=628447 TSecr=618049206\n  4   0.190993 10.32.122.250 -> 198.58.106.243 HTTP 310 GET /?product=puppetserver&group=puppetlabs&version=2.0.0-SNAPSHOT HTTP/1.1\n  5   0.247221 198.58.106.243 -> 10.32.122.250 TCP 66 80\u219243259 [ACK] Seq=1 Ack=245 Win=30080 Len=0 TSval=618049264 TSecr=628582\n  6   0.252744 198.58.106.243 -> 10.32.122.250 HTTP 336 HTTP/1.1 200 OK\n  7   0.252760 10.32.122.250 -> 198.58.106.243 TCP 66 43259\u219280 [ACK] Seq=245 Ack=271 Win=15744 Len=0 TSval=628644 TSecr=618049265\n  8   0.337727 10.32.122.250 -> 198.58.106.243 TCP 66 43259\u219280 [FIN, ACK] Seq=245 Ack=271 Win=15744 Len=0 TSval=628729 TSecr=618049265\n  9   0.394244 198.58.106.243 -> 10.32.122.250 TCP 66 80\u219243259 [FIN, ACK] Seq=271 Ack=246 Win=30080 Len=0 TSval=618049308 TSecr=628729\n 10   0.394276 10.32.122.250 -> 198.58.106.243 TCP 66 43259\u219280 [ACK] Seq=246 Ack=272 Win=15744 Len=0 TSval=628785 TSecr=618049308\n{code}\n\nFunctional review passed in my opinion.", "created": "2015-03-31T17:54:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "**Release Notes**\n\nFixed a bug preventing puppetserver from reporting when new versions are available.", "created": "2015-04-13T10:42:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Double checked that this is properly closed.  Marked QA Reviewed etc.  Late risk assessment", "created": "2015-06-01T18:41:00.000000"}], "components": [], "created": "2015-03-26T13:09:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22860cc8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz2br:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found a problem with version checking, need to fix before 2.0 GA"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77695108_*|*_1_*:*_1_*:*_11038_*|*_10007_*:*_1_*:*_12835844_*|*_3_*:*_1_*:*_3847282_*|*_5_*:*_1_*:*_47147848428_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_354720777"}], "description": "SERVER-518 covers some updates around the package 'group-id' and 'artifact-id' that Puppet Server uses with respect to calls to the version check service.  The big changes were around changing the 'group-id' from \"puppetlabs.packages\" to \"puppetlabs\" and the 'artifact-id' from \"puppet-server\" to \"puppetserver\".\n\nThe nature of the changes on the Puppet Server master branch will be a little different than those on the stable branch because of the work which was done on the master branch to move from the embedded version check service to the separate dujour.version-check library.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17289", "fixedVersions": ["SERVER 2.0.0"], "id": "17289", "issueType": "Task", "key": "SERVER-520", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-31T17:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Apply artifact-id updates to version checks in master", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "This was a book keeping ticket, and therefore has 0 story points.", "created": "2015-04-01T15:22:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Smoked tested Puppet server build 2.0.0.SNAPSHOT.2015.04.01T2117 on Ubuntu 12.04 and Ubuntu 14.04 and everything looked good!\n", "created": "2015-04-01T18:37:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-26T11:24:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@782b25e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0kv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "no real scope change"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14841_*|*_5_*:*_1_*:*_47058842325_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_544406625"}], "description": "This ticket was created because a bunch of related but very tactical tickets just got moved through to resolved but they skipped over the functional review.\n\nThey all relate to updating puppetserver on debian based platforms (debian7, ubuntu1404, ubuntu1204) with the AIO pathing changes and then getting them working through CI again.\n\nBasically, the impact and risk are both pretty high IMHO becuase we swapped all of the paths.  We also had a hard time getting the puppetserver service starting because the init script on debian is a bit fragile.\n\nWe do have a ton of automated testing around this, but I think it still warrants some review.\n\nThe tickets I pull through to resolved are:\n\n * SERVER-499\n * SERVER-502\n * SERVER-503\n * SERVER-510\n * SERVER-512\n\nThe ones related to windows don't require any functional review from my perspective because this behavior is already covered by the client platform team.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16104", "fixedVersions": [], "id": "16104", "issueType": "Task", "key": "SERVER-519", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-04-01T18:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Review 2.0.0 Debian Family Changes", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged and passed Jenkins acceptance test job - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/211/.  Moving to \"testing\", assuming QA might want to do some validation of the dujour checkins based on the latest changes integrated.", "created": "2015-03-26T17:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Tested 1.0.8 candidate package on CentOS 7 VM.  During puppetserver startup, saw the following message:\n\n{noformat}\n2015-03-28 18:05:13,141 INFO  [p.s.v.version-check-core] Newer version 2.0.0-rc4 is available! Visit https://puppetlabs.com/blog/release-candidate-open-source-puppet-4.0 for details.\n{noformat}\n\nAlso validated that real dujour service registered checkins against 1.0.8 after each service startup.\n", "created": "2015-03-28T20:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Moving to 'resolved' per conversation with [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2015-03-30T11:16:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Late QARA", "created": "2015-06-01T18:56:00.000000"}], "components": [], "created": "2015-03-25T17:59:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7825e329"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz1kn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Discovered problem with dujour check ins."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_18459181_*|*_1_*:*_1_*:*_67677_*|*_10007_*:*_1_*:*_64472245_*|*_3_*:*_1_*:*_2950287_*|*_5_*:*_1_*:*_21930552_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_321910410"}], "description": "For all of the public releases that we've been doing on Puppet Server up to now, we've been using \"puppetserver\" (no hyphen between \"puppet\" and \"server\") as the \"artifact-id\".  The project name defined in a Clojure project's \"defproject\" macro ultimately ends up in the Maven manifest metadata in the jar which is built and is used by the dujour check-in process for determining the project's current version.\n\nBack when ezbake was still an app (and not the lein-ezbake plugin that it is today), the Puppet Server jar was packaged with \"puppetserver\" as the project name in defproject.\n\nFor example, see https://github.com/puppetlabs/ezbake/blob/d072ebbf5f6de801e1705f927bd12ac1362f3d88/configs/puppetserver/puppetserver.clj#L1:\n\n{noformat}\n(defproject puppetlabs.packages/puppetserver...\n{noformat}\n\nHowever, the \"defproject\" in project.clj in the Puppet Server repo has had, probably from its earliest versions:\n\n{noformat}\n(defproject puppetlabs/puppet-server\n{noformat}\n\nNote that a hyphen appears in \"puppet-server\" in the latter example.\n\nPer some of the changes that went into consolidating ezbake into the lein-ezbake plugin, the separate \"defproject\" in the ezbake repo for Puppet Server was eliminated.  Now the dujour version check will use the \"defproject\" value from the project.clj file.  If unchanged, this would mean that any future dujour checkins would use \"puppet-server\" instead of \"puppetserver\" as the name.\n\nChanging from \"puppetserver\" to \"puppet-server\" is not ideal here because it complicates the queries / consolidation that would need to be done to compare different versions of Puppet Server.  Also, the additional use of the hyphen goes against the grain of SERVER-392, where we seemed to be gravitating toward less hyphens.\n\nThis ticket proposes that we remove the hyphen from \"puppet-server\" in the defproject in Puppet Server's project.clj in order to preserve backward compatibility for dujour checkins and support the evolving desire to eliminate the use of the hyphen in Puppet Server references.\n\nThe \"group-id\" that the defproject would use by default has also been changed -- from \"puppetlabs.packages\" (under ezbake as an app) vs. \"puppetlabs\" (via lein ezbake as a plugin).  The {{default-group-id}} is currently hardcoded in version_check_core.clj as \"puppetlabs.packages\".  This would need to be changed to \"puppetlabs\" in order for the version retrieval from the Maven pom.properties file -- when Puppet Server is running from a package install -- to be able to matchup with the group-id as derived from the defproject macro.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "15787", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "15787", "issueType": "Task", "key": "SERVER-518", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-30T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update group-id and artifact-id for version checks", "timeSpent": "PT0S", "updated": "2015-06-01T18:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged and subsequent Jenkins acceptance test job was green - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/213/.  Moving to testing.", "created": "2015-03-28T00:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Tested 1.0.8 Puppet Server candidate package on CentOS 7 VM.  The test included registering a custom report processor which outputs an error message when a {{SocketError}}, the new type of exception that should be thrown for HTTP client failures as part of the work for this ticket.\n\nAt the following location, {{/usr/share/ruby/vendor_ruby/puppet/reports/custom.rb}}, stored this file:\n\n{code:language=ruby}\nrequire 'puppet'\n\nPuppet::Reports.register_report(:custom) do\n  desc \"Process reports via custom report processor\"\n\n  def process\n    conn = Puppet::Network::HttpPool.http_instance(\"192.168.7.1\", 65535, false)\n    begin\n       conn.post(\"bleh\", self.to_yaml, { \"Content-Type\" => \"application/x-yaml\"})\n    rescue SocketError => e\n       Puppet.err \"custom report processor errored out with SocketError: #{e.inspect}\"\n    rescue Exception => e\n       Puppet.err \"custom report processor errored out with something other than SocketError: #{e.inspect}\"\n    end\n  end\nend\n{code}\n\nRelated to the above code, nothing was configured to be listening for connections at \"http://192.168.7.1:65535\".\n\nUnder the \\[main\\] section of the {{/etc/puppet/puppet.conf}} file, added the following setting:\n\n{noformat}\nreports = custom\n{noformat}\n\nRestarted the puppetserver service.\n\nPerformed a puppet agent run against the master.\n\nThe following error messages appeared in the {{/var/log/puppetserver/puppetserver.log}} file:\n\n{noformat}\n2015-03-28 20:54:59,545 ERROR [c.p.h.c.i.PersistentSyncHttpClient] Error executing http request\njava.net.ConnectException: Connection refused\n\tat sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_71]\n...\n2015-03-28 20:54:59,561 ERROR [puppet-server] Puppet custom report processor errored out with SocketError: #<Puppet::Server::HttpClientError: Error executing http request>\n{noformat}", "created": "2015-03-29T16:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Moving to 'resolved' per conversation with [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2015-03-30T11:17:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Late QARA", "created": "2015-06-01T18:58:00.000000"}], "components": [], "created": "2015-03-25T13:34:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@589521db"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp6fr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found in PE 3.8 classifier testing."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_29469474_*|*_1_*:*_1_*:*_3526193_*|*_10007_*:*_1_*:*_81999464_*|*_3_*:*_1_*:*_95562474_*|*_5_*:*_1_*:*_21888103_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_213255510"}], "description": "Under Puppet Server, users of the Puppet::Network::HttpPool class get clients that are instances of the {{Puppet::Server::HttpClient}} Ruby class.  The {{Puppet::Server::HttpClient}} class makes outgoing HTTP client requests via the Java-based clj-http-client library.  Any exceptions thrown for those requests are cascaded up to their Ruby layer callers as the JRuby form of the Java exception, i.e., possible to reference from a rescue block in Ruby code as {{Java::ComPuppetlabsHttpClient::HttpClientException}} so long as the underlying runtime is JRuby.  However, it will still be possible for some time for the calling Ruby code to be run from under either an MRI Ruby or a JRuby runtime.\n\nGiven the continued need for MRI/JRuby compatibility, we should catch, inside of the {{Puppet::Server::HttpClient}} class, any Java-layer exceptions which might be thrown and re-raise them to callers as a more standard Ruby exception type.  Ruby's standard {{SocketError}} is probably the best choice here as it is the type which would be thrown under MRI Ruby for HttpClient errors.  The {{Puppet::Server::HttpClient}} class should only ever be run under a JRuby runtime, as part of Puppet Server, so this would be the best layer at which to abstract the underlying Java-related functionality from any callers.\n\nThe client calls occur from Puppet Server at the following locations:\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.3/src/ruby/puppet-server-lib/puppet/server/http_client.rb#L59\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.3/src/ruby/puppet-server-lib/puppet/server/http_client.rb#L68\n\nException re-raising should be wrapped around the above calls.\n\n--\n\nHaving the underlying HTTPClientException available to any callers running under JRuby, however, could still be useful - e.g., for introspecting into any nested inner exceptions to validate the root cause of a SocketError for testing.  To allow for preserving this context in a way that would allow the base type of the exception raised to still be SocketError, we could define a new exception class in Puppet Server Ruby code which derives from SocketError, accepts the underlying Java exception as an argument in the constructor, and stores that argument into a field in the object with a public accessor for retrieval.  Any callers that would want to interpret the exception as Puppet Server's custom SocketError class could then pull the Java exception back out of the object for inspection, as necessary.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "17587", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "17587", "issueType": "Task", "key": "SERVER-517", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-30T11:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Re-raise HttpClientExceptions as Ruby SocketError from http-client handler", "timeSpent": "PT0S", "updated": "2015-06-01T18:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-03-25T11:43:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cafa2db"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3x9j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_603492560_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_53417944366"}], "description": "So, the {{fail()}} function causes a rather ridiculous stack trace. Is there any way to simplify or shorten this?\n\n{quote}\n2015-03-19 17:44:50,144 ERROR [puppet-server] Puppet The shell /bin/zsh is unsupported at /etc/puppetlabs/puppet/modules/userprefs/manifests/init.pp:43 on node kurt.puppetlabs.vm\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/functions/fail.rb:3:in `real_function_fail'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/functions.rb:164:in `function_fail'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler.rb:51:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/functions.rb:157:in `function_fail'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/function.rb:42:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/block_expression.rb:11:in `evaluate'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/block_expression.rb:10:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/else.rb:19:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/ifstatement.rb:27:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/block_expression.rb:11:in `evaluate'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/block_expression.rb:10:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/ifstatement.rb:25:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/block_expression.rb:11:in `evaluate'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/block_expression.rb:10:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/else.rb:19:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/ifstatement.rb:27:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/block_expression.rb:11:in `evaluate'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast/block_expression.rb:10:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/ast.rb:61:in `safeevaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/resource/type.rb:127:in `evaluate_code'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/resource.rb:79:in `evaluate'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:384:in `evaluate_definitions'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler.rb:51:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:383:in `evaluate_definitions'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:382:in `evaluate_definitions'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler.rb:51:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:381:in `evaluate_definitions'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/errors.rb:62:in `exceptwrap'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:380:in `evaluate_definitions'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:403:in `evaluate_generators'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler.rb:51:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:400:in `evaluate_generators'\norg/jruby/RubyKernel.java:1501:in `loop'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:397:in `evaluate_generators'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:137:in `compile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler.rb:51:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:137:in `compile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/context.rb:64:in `override'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:244:in `override'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:117:in `compile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/compiler.rb:34:in `compile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/catalog/compiler.rb:95:in `compile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler.rb:51:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/catalog/compiler.rb:93:in `compile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util.rb:161:in `benchmark'\n/opt/puppet/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util.rb:160:in `benchmark'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/catalog/compiler.rb:92:in `compile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/catalog/compiler.rb:52:in `find'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/indirection.rb:201:in `find'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/api/v1.rb:105:in `do_find'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/api/v1.rb:50:in `call'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/context.rb:64:in `override'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:244:in `override'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/api/v1.rb:49:in `call'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/route.rb:81:in `process'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/handler.rb:63:in `process'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler.rb:51:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/handler.rb:61:in `process'\n/opt/puppet/share/puppetserver/file:/opt/puppet/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:38:in `handleRequest'\nPuppet$$Server$$Master_1411842402.gen:13:in `handleRequest'\nrequest_handler_core.clj:270:in `invoke'\nrequest_handler_service.clj:11:in `invoke'\nrequest_handler_service.clj:20:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:619:in `invoke'\ncore.clj:2396:in `doInvoke'\nmaster_core.clj:57:in `invoke'\ncore.clj:99:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:30:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_core.clj:78:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\nringutils.clj:75:in `invoke'\nringutils.clj:81:in `invoke'\nhttp_metrics.clj:137:in `invoke'\nhttp_metrics.clj:137:in `invoke'\nhttp_metrics.clj:132:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_service.clj:50:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\njetty9_core.clj:335:in `invoke'\n{quote}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16610", "fixedVersions": [], "id": "16610", "issueType": "Bug", "key": "SERVER-516", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "fail() function causes ridiculously huge stack trace in logs", "timeSpent": "PT0S", "updated": "2016-12-09T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:dc666788-5651-476c-a211-ec5b44a7b0dd] - you may want to follow this as well if similar work could apply to PE / FOSS versions of PuppetDB.", "created": "2015-04-01T11:06:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "This was accidentally pulled into the 4/15 sprint, and has since been removed.", "created": "2015-04-09T11:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2] [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] I found this and assigned it to Lori.", "created": "2016-03-11T14:33:00.000000"}, {"author": "70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2", "body": "Taking this one for discussion in a CLI Leads meeting. It would be good if there were a consistent approach to this.", "created": "2016-03-11T14:42:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We think that this should most likely output only the\u00a0FOSS puppetserver version for consistency with Puppet's behavior.", "created": "2018-02-14T17:18:00.000000"}], "components": [], "created": "2015-03-25T10:59:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50470ca6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2122"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xnz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_605167451_*|*_3_*:*_1_*:*_2777874_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_188743125747_*|*_10005_*:*_1_*:*_30105716668"}], "description": "When the PE version of \"puppetserver --version\" CLI is run, the output ideally should include both the \"pe-puppet-server-extensions\" version and the underlying \"puppet-server\" FOSS package versions.  Currently, it only includes the \"pe-puppet-server-extensions\" version, which can be confusing for users because the two versions can often be out of synch. \n\nFor example, a PE release might include \"pe-puppet-server-extensions\" version 1.0.6 but \"puppet-server\" FOSS version 1.0.3.  Seeing only \"1.0.6\" in the output from this command might lead the user to think that there is a FOSS version of puppet-server called \"1.0.6\" when there may not actually be or, potentially even worse, there may be such a FOSS version but a later set of fixes are included in the FOSS version which are not included in the PE version.\n\nWe need to improve the command so that it reports (ideally):\n\n* PE Version number\n* PE-PuppetServer version number\n* OSS-PuppetServer version number", "epicLinkSummary": "General Improvements", "estimate": "PT0S", "externalId": "16103", "fixedVersions": [], "id": "16103", "issueType": "Task", "key": "SERVER-1239", "labels": ["usability"], "originalEstimate": "PT0S", "parent": "15096", "parentSummary": "General Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2022-03-08T10:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate having puppetserver --version for PE include PE and FOSS version info", "timeSpent": "PT0S", "updated": "2022-03-08T10:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] - Is this what it looks like right after installation of the package, or did this only happen after the test framework, via the ruby-hocon library I believe, rewrote the file?", "created": "2015-03-24T14:19:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Looks like this issue is caused by a test.", "created": "2015-03-24T14:26:00.000000"}], "components": [], "created": "2015-03-24T14:14:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@785c43b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz0mn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_742498_*|*_6_*:*_1_*:*_0"}], "description": "The puppetserver.conf file in Ubuntu 14 / build: contains the following with no whitespace nor carriage returns.\n\n{\"jruby-puppet\":{\"gem-home\":\"/var/lib/puppet/jruby-gems\",\"master-conf-dir\":\"/etc/puppet\",\"master-var-dir\":\"/var/lib/puppet\"},\"http-client\":{},\"profiler\":{},\"puppet-admin\":{\"client-whitelist\":[]}}\n\nWe should restore spacing to make reading easy.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15544", "fixedVersions": [], "id": "15544", "issueType": "Bug", "key": "SERVER-514", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2015-03-24T14:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Spacing removed from default puppetserver.conf file ", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This passed the next full matrix Jenkins acceptance test job for stable - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/210/.  Moving to 'testing'.", "created": "2015-03-26T12:47:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Treating this as medium risk, medium severity, medium probability.  The Jetty version bump portion of this will be tested with long term testing, see PE-8586.  Opinions on wether or not we need to perform functional review against the changes to max-threads and shutdown-timeout-seconds are welcome, as is help with actually performing functional review against this ticket.\n\nIf no functional review is needed against the max-threads and shutdown-timeout-seconds settings, then this ticket should be linked to PE-8586 and closed.\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314]  Opinions welcome.\n", "created": "2015-03-27T10:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Tested 1.0.8 candidate package on CentOS 7 VM.  Observed from packaging that Jetty 9.2.10 was present.\n\n---\n\nValidated that up to 200 threads could be used from the Jetty server thread pool by configuring selectors and acceptors, enabled by TK-148.  Initially added the following to the \"webserver\" section in {{/etc/puppetserver/conf.d/webserver.conf}} and restarted puppetserver service:\n\n{noformat}\nssl-selector-threads = 100\nssl-acceptor-threads = 99\n{noformat}\n\nRan the following to determine the number of selector threads started by the process:\n\n{noformat}\nsudo -u puppet jstack `ps -ef | grep java | grep puppetserver | awk '{print $2}'` | grep \"\\-selector\\-\"\n{noformat}\n\nOutput from the command was 100.\n\nRan the following to determine the number of acceptor threads started by the process:\n\n{noformat}\nsudo -u puppet jstack `ps -ef | grep java | grep puppetserver | awk '{print $2}'` | grep \"\\-acceptor\\-\"\n{noformat}\n\nThe result was 99.\n\nChanged the webserver section settings to the following and restarted the puppetserver service:\n\n{noformat}\nssl-selector-threads = 100\nssl-acceptor-threads = 100\n{noformat}\n\nDuring startup, the process failed with:\n\n{noformat}\n2015-03-28 19:19:56,359 ERROR [p.t.internal] Error during service start!!!\njava.lang.IllegalStateException: Insufficient threads: max=200 < needed(acceptors=100 + selectors=100 + request=1)\n\tat org.eclipse.jetty.server.Server.doStart(Server.java:350) ~[puppet-server-release.jar:na]\n\tat org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) ~[puppet-server-release.jar:na]\n...\n{noformat}\n\nThis confirmed that the web server was unable to start more than 200 threads.\n\n---\n\nAlso validated that {{shutdown-timeout-seconds}} was around 30 seconds by default.  Test involved registering an HTTP report processor where the service receiving the report payload paused for 60 seconds after receiving the request but before delivering a response.\n\nAdded the following to the \\[main\\] section in the {{/etc/puppet/puppet.conf}} and restarted puppetserver service:\n\n{noformat}\nreports = http\nreporturl = http://192.168.7.1:8080/bleh\n{noformat}\n\nStarted service that stalled on the request at \"http://192.168.7.1:8080\".\n\nStarted an agent run against the master.  After the agent displayed, \"Notice: Finished catalog run in 0.01 seconds\", performed \"service puppetserver stop\".  In the master log, {{/var/log/puppetserver/puppetserver.log}}, saw the following message:\n\n{noformat}\n2015-03-28 19:31:29,050 INFO  [p.t.s.w.jetty9-core] Shutting down web server.\n{noformat}\n\nAfter about 30 seconds, saw the following message in the master log:\n\n{noformat}\n2015-03-28 19:31:59,073 INFO  [o.e.j.s.ServerConnector] Stopped ServerConnector@1104f0e2{SSL-HTTP/1.1}{0.0.0.0:8140}\n{noformat}\n\nAt about the same time, saw the following error in the agent output and the agent run terminated:\n\n{noformat}\nError: Could not send report: Connection refused - connect(2)\n{noformat}", "created": "2015-03-29T00:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Per [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]'s recommendation, closing this.  Additional Jetty QA activities can follow PE-8586.", "created": "2015-03-29T00:45:00.000000"}], "components": [], "created": "2015-03-24T13:46:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3670c5db"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz0lb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Essentially was planned but not properly ticketed at sprint start time."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_81760949_*|*_1_*:*_1_*:*_8560_*|*_3_*:*_1_*:*_87491984_*|*_5_*:*_1_*:*_146184459_*|*_6_*:*_2_*:*_12541_*|*_10011_*:*_1_*:*_215916050"}], "description": "We should bump the dependency that Puppet Server has on the trapperkeeper-webserver-jetty9 package to version 1.3.0.\n\nVersion 1.3.0 includes Jetty version 9.2.10, which addresses a critical security vulnerability that was present in Jetty versions 9.2.3 - 9.2.8.  See https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00074.html.  Note that Jetty version 9.2.8 was being referenced by tk-jetty9 version 1.2.0, which is currently being used by Puppet Server.  No Puppet Server release has been done since the upgrade to tk-jetty9 yet, though, so this vulnerability would not have been present in a released version of Puppet Server.  Puppet Server 1.0.3 and earlier were using tk-jetty9 versions that referenced Jetty version 9.1.0.\n\nIn the process of doing so, the defaults for a couple of settings in the {{webserver}} section will change:\n\n* {{max-threads}} - from 100 to 200.\n* {{shutdown-timeout-seconds}} - from 60 to 30 seconds.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16609", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "16609", "issueType": "Task", "key": "SERVER-513", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-29T00:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump to tk-jetty9 1.3.0 and changes to shutdown-timeout-seconds and max-threads defaults", "timeSpent": "PT0S", "updated": "2015-06-01T18:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Added pull request for 0.3.1 release.", "created": "2015-03-25T17:31:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Made it through the master branch pipeline last night.", "created": "2015-03-26T10:25:00.000000"}], "components": [], "created": "2015-03-23T14:51:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61ad9fc4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyzun:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found AIO - Need an ezbake release to cut the second RC"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_60795939_*|*_1_*:*_1_*:*_8326_*|*_10007_*:*_1_*:*_198383_*|*_3_*:*_1_*:*_745824_*|*_5_*:*_1_*:*_47606811001_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_6179_*|*_10006_*:*_1_*:*_181475601"}], "description": "Changes to ezbake need to land into master, then get released as an official version prior to the 2.0.0 second RC we're going to ship on Wednesday.\n\nThe major changes I'm expecting to get in are:\n\n * SERVER-502\n * SERVER-508", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17585", "fixedVersions": [], "id": "17585", "issueType": "Task", "key": "SERVER-512", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-26T10:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Release ezbake for 2.0.0 wednesday RC", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Pull requests that need to be merged into master are (in order):\n\n * https://github.com/puppetlabs/ezbake/pull/213 (MERGED)\n * https://github.com/puppetlabs/ezbake/pull/214 (MERGED)\n * https://github.com/puppetlabs/puppet-server/pull/459 (MERGED)\n * https://github.com/puppetlabs/puppet-server/pull/461 (MERGED)", "created": "2015-03-23T16:27:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Process:\n\nThing to avoid:  Don't let the 10: lein ezbake job run against the commit that introduces 2.0.0-rc4 as the version number.  If we do then that number will likely be burned because ship nightlies is FALSE.\n\nFirst, merge pull request, Jenkins will skip over the 2.0.0-rc4 commit and run against 2.0.0-SNAPSHOT.\n\nSecond, do a manual kick off of the production master branch pipeline.  Use a LAYOUT of {{redhat7-64ma redhat7-64m-64a redhat6-64ma  redhat6-64m-32a ubuntu1404-64ma ubuntu1204-64ma debian7-64ma ubuntu1404-64m-32a ubuntu1204-64m-32a debian7-64m-32a}} which includes debian flavors and redhat6, redhat7\n\nIf that passes then we're confident we can do another manual kick off in the morning with SHIP_NIGHTLIES=TRUE and using the SHA of the commit that introduces 2.0.0-rc4", "created": "2015-03-25T19:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Manual Kick off started at: https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_init-manual_master/2/\n\nWe'll release the platforms that are green.", "created": "2015-03-25T19:31:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[Manual Kick Off #2|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_init-manual_master/2/] failed because there were two spaces (blanks) separating two of the layout expressions which caused Jenkins to try to run against a layout of `\"\"` (the empty string).  This didn't work because (facepalm).\n\nTrying again in [Manual Kick Off #3|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_init-manual_master/3/]", "created": "2015-03-25T19:57:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Kicked off one more job with windows agents included.  See the pipeline graph at [platform_puppet-server_init-manual_master/4/BuildGraph/|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_init-manual_master/4/BuildGraph/].\n\nThis results of this pipeline run will tell us how the full set of testing permutations, except fedora20, are performing in the master branch of puppet-server.  This build is a snapshot build of what will become {{2.0.0-rc4}}.", "created": "2015-03-25T21:31:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Windows failed in the pre-suite, which was perplexing because SERVER-499.  Fixed the problem as mentioned in SERVER-499 comments.\n\nKicked off [platform_puppet-server_init-manual_master/5/BuildGraph/|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_init-manual_master/5/BuildGraph/] which is the second attempt at testing all the GA platforms except fedora20.", "created": "2015-03-25T22:42:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "RC4 kicked off.  Look for the ship nightlies job in the [build graph|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_init-manual_master/6/BuildGraph/]\n\n[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] (FYI [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4]) the repository configurations, which is what end users will use to install these packages will be published shortly at:\n\n * http://nightlies.puppetlabs.com/puppetserver/2.0.0-rc4/repo_configs/", "created": "2015-03-26T16:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c], [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4], I spoke too soon.  We just burned the 2.0.0-rc4 version because smoke testing failed.\n\nAbout to re-launch with 2.0.0-rc5.", "created": "2015-03-26T16:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c], [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4]  And...  spoke too soon again.  Looks like we may be able to salvage 2.0.0-rc4.\n\nSo, as soon as http://nightlies.puppetlabs.com/puppetserver/2.0.0-rc4/repo_configs/ does not give back 404 Not Found, we're good to go for puppet server.", "created": "2015-03-26T16:48:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "OK http://nightlies.puppetlabs.com/puppetserver/2.0.0-rc4/ is live now.", "created": "2015-03-26T16:55:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "2.0.0-rc4 released to http://nightlies.puppetlabs.com/puppetserver/2.0.0-rc4/\n\nI manually tested centos7 and made sure puppetserver installs with puppet-agent 0.9.1 as a dependency.  I then started the service with {{service puppetserver start}} and did an agent run with {{/opt/puppetlabs/bin/puppet agent --test --server $(hostname -f)}}.\n\nEverything looks good, no errors, agent run completed successfully.", "created": "2015-03-26T17:36:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-23T13:59:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@641e0e40"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyztb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found AIO.  We probably should have created a ticket for this in our planning meeting?"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_43605_*|*_3_*:*_1_*:*_87753839_*|*_5_*:*_1_*:*_47580722459_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_184448605"}], "description": "We're planning to do a second RC of puppetserver 2.0.0 on Wednesday the 25th.\n\nThe version identifier doesn't matter, but it needs to be greater than 2.0.0-rc3 which was the first released RC.\n\nWhatever layouts are passing green in the [puppet-server (master) 25: Integration Full Test Suite|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_integration-system_full-master/] job will be released.\n\nAssuming PR's get merged, this should likely be:\n\n * {{redhat7}}\n * {{redhat6}}\n * {{ubuntu1404}}\n * {{ubuntu1204}}\n * {{debian7}}\n\nThis means we'll likely have everything we plan to have for GA except for {{fedora20}}.\n\n", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17584", "fixedVersions": ["SERVER 2.0.0"], "id": "17584", "issueType": "Task", "key": "SERVER-511", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-26T17:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 2.0.0 second RC", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "I believe that you're missing the pre-suite setup step from the Puppet repo that installs CA certs on Windows:\nhttps://github.com/puppetlabs/puppet/blob/master/acceptance/setup/common/pre-suite/070_InstallCACerts.rb", "created": "2015-03-23T11:50:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moving this to unblocked, I will copy the pre-suite setup [~accountid:557058:263afade-3e4f-46c6-b50a-cf2982192562] mentioned and proceed with the work to get a full acceptance suite run of the {{redhat7-64m-windows2008r2-64a}} layout.", "created": "2015-03-23T12:04:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Add a pull request for master.  This should get a full green run with the layouts of {{redhat7-64m-windows2008r2-64a}} and {{ubuntu1404-64m-windows2008r2-64a}} when merged into master along with the pull request for SERVER-499.", "created": "2015-03-23T12:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "In the [experiemental aio pipeline|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_full-aio/34/] the previously failing tests, basic_install.rb and with_version.rb, are now passing with the inclusion of the 070_InstallCACerts.rb pre-suite setup file.", "created": "2015-03-23T14:20:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Made it through the master branch pipeline last night.", "created": "2015-03-26T10:25:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-22T11:11:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6042018f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyyjj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found AIO.  Moved 1 point from SERVER-412 to avoid inflation"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_60985951_*|*_1_*:*_1_*:*_6887_*|*_10007_*:*_1_*:*_190576695_*|*_3_*:*_2_*:*_4194904_*|*_5_*:*_1_*:*_47606821215_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_87041290"}], "description": "The windows agents in the server acceptance suite are currently passing smoke tests but failing in the full acceptance test suite on the following error:\n\n{code}\n#<Beaker::Host::CommandFailure: Host 'wpq3xgx1ug1q866.delivery.puppetlabs.net' exited with 1 running:\n cmd.exe /c puppet module install pmtacceptance-nginx\nLast 10 lines of output were:\n\tNotice: Preparing to install into C:/ProgramData/PuppetLabs/code/environments/production/modules ...\n\tNotice: Downloading from https://forgeapi.puppetlabs.com ...\n\tError: Could not connect via HTTPS to https://forgeapi.puppetlabs.com\n\t  Unable to verify the SSL certificate\n\t    The certificate may not be signed by a valid CA\n\t    The CA bundle included with OpenSSL may not be valid or up to date>\n{code}\n\nThe failing tests are:\n\n * {{ruby/puppet/acceptance/tests/modules/install/basic_install.rb}}\n * {{ruby/puppet/acceptance/tests/modules/install/with_version.rb}}\n\nWe have a couple of options.  The issue is known and reported in PUP-3442.  A robust solution to resolve the issue has been proposed in PUP-3450.\n\nWe could let our tests fail and wait for those issues to be resolved, but this could impact our schedule.\n\nAn alternative is to skip these tests and leave this ticket in our blocked column or in a triage state so that we can avoid committing to fix this issue until we're able to do so by re-enabling the tests in a future sprint.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "14930", "fixedVersions": ["SERVER 2.0.0"], "id": "14930", "issueType": "Task", "key": "SERVER-510", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-26T10:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Get windows2008r2-64a layouts passing Full Acceptance", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] you have any ideas on this?  I can think of ways we could do this kind of thing for the app-level config files, but at the system level I'm less certain.", "created": "2015-03-23T09:27:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yea at the system level basically we can validate that various defaults settings exist, but ensuring that they are valid is a different story. I don't have any great ideas there. Some of them you won't know until java gets ahold of them (such as invalid JAVA_ARGS).", "created": "2015-03-23T10:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e]: [~accountid:623c12b6ee1b5a0070293582] suggested that maybe in some cases for other apps, the init script would have another copy of the variables so that if they were removed from the defaults file things would still work?", "created": "2015-03-23T17:35:00.000000"}, {"author": "5b61153325ea8f2ca147bd04", "body": "I like the idea of setting sane default values in the init script", "created": "2015-03-23T17:45:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Relates to SERVER-521 in that the proposal there includes improvements to the way we handle variables coming from defaults.", "created": "2015-04-01T11:19:00.000000"}], "components": [], "created": "2015-03-20T22:45:00.000000", "creator": "5b61153325ea8f2ca147bd04", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b77a961"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3x9b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_995545305_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_53418045345"}], "description": "Many popular applications have a \"configtest\" tool to validate configuration files before starting or reloading. For example, apachectl is wrapped by the apache / httpd init script so you can \"service apache2 configtest\" and it will tell you where your config files are broken.\n\nThis would be helpful for puppet server. I've been debugging a dumb mistake I made in trying to puppetize installs of open source puppetserver. I inadvertently replaced all of /etc/default/puppetserver with the single string 'JAVA_ARGS=\"-Xms2776m -Xmx2776m\"'.\n\nThis is obviously not puppetserver's fault in any way, but the resulting behavior was frustrating; I got no errors at all but the puppetserver service started and returned exit code 0, indicating success. No logs, no output, etc. With a \"configtest\" that validates all relevant config files before starting the service, problems of this nature could be caught ahead of time. \n\nI'm a little embarrassed to admit such an obvious mistake, but given how much time I wasted spent to troubleshoot it I have to believe other people will run into similar situations.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16102", "fixedVersions": [], "id": "16102", "issueType": "New Feature", "key": "SERVER-509", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b61153325ea8f2ca147bd04", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CLI tooling to validate configuration files", "timeSpent": "PT0S", "updated": "2016-12-09T16:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This issue presumably would exist in ezbake 0.2.6 now in puppet-server stable - so we could include it under one of the Puppet Server 1.x epics.\n\nMaybe we could fix this just by adding one more case to the if statement in foreground to avoid doing runuser, sudo, or su if the current user is already the user that the $COMMAND would need to be run as?\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - does this feel like something you want to get into Puppet Server 1.0.8?  Not sure how likely it would be for someone to be in this situation.", "created": "2015-03-20T16:04:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pull request against master is up at https://github.com/puppetlabs/ezbake/pull/208", "created": "2015-03-20T18:08:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Add a pull request against the stable branch.  Needs to be merged in to stable and up to master, then released to Nexus prior to the next RC we're shipping on Wednesday.", "created": "2015-03-23T14:48:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "In discussions with the team and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] we decided to punt this issue until after the second RC.", "created": "2015-03-24T14:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Should this be in the 4.0 epic?", "created": "2015-03-30T09:51:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Yep, thanks.", "created": "2015-03-30T09:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Per some of the discussion that took place on the PR, I was thinking it might be better to just defer the further rework of the {{puppetserver foreground}} subcommand out until we have a chance to get around to https://puppet.atlassian.net/browse/SERVER-441.  SERVER-441 will likely involve reworking the script further to allow for pre-start actions + root-user only execution.\n\nI'd propose then that we just close this in favor of SERVER-441.  I also don't consider this to be a blocker for 2.0 GA either.\n\n[~accountid:623c12b6ee1b5a0070293582] - what do you think?", "created": "2015-03-30T09:57:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I think it'd be fine to close this in favor of SERVER-441 and remove it from the 2.0.0 GA critical path.\n\nThis is only an issue when running foreground as a non-root user and there's a straight forward work-around of running as root.", "created": "2015-03-30T10:10:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-20T15:19:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@438a5a60"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyywf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO packages not working on ubuntu1404"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9584_*|*_10007_*:*_2_*:*_326524655_*|*_3_*:*_2_*:*_8762411_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_510173530"}], "description": "I'm running into this issue on Ubuntu 14.04 with a snapshot of ezbake 0.3.0 which includes the improvements from SERVER-344.\n\nAfter becoming puppet with {{su puppet -s /bin/bash}}, and changing to the puppet home directory.\n\n{code}\npuppet@imfgom2qepry15d:~$ /opt/puppetlabs/bin/puppetserver foreground\n+ set -a\n+ '[' -r /etc/default/puppetserver ']'\n+ . /etc/default/puppetserver\n++ JAVA_BIN=/usr/bin/java\n++ JAVA_ARGS='-Xms2g -Xmx2g -XX:MaxPermSize=256m'\n++ USER=puppet\n++ GROUP=puppet\n++ INSTALL_DIR=/opt/puppetlabs/server/apps/puppetserver\n++ CONFIG=/etc/puppetlabs/puppetserver/conf.d\n++ BOOTSTRAP_CONFIG=/etc/puppetlabs/puppetserver/bootstrap.cfg\n++ SERVICE_STOP_RETRIES=60\n+ set +a\n+ CLI_DIR=/opt/puppetlabs/server/apps/puppetserver/cli\n+ CLI_APP_DIR=/opt/puppetlabs/server/apps/puppetserver/cli/apps\n++ ls /opt/puppetlabs/server/apps/puppetserver/cli/apps\n+ APPS='foreground\ngem\nirb\nruby'\n+ '[' -z foreground ']'\n+ '[' foreground = --help ']'\n+ '[' foreground = -h ']'\n+ '[' foreground = --version ']'\n+ '[' foreground = -v ']'\n+ execsubcommand foreground\n+ sub=foreground\n+ shift\n+ cmd=/opt/puppetlabs/server/apps/puppetserver/cli/apps/foreground\n+ '[' -e /opt/puppetlabs/server/apps/puppetserver/cli/apps/foreground ']'\n+ exec /opt/puppetlabs/server/apps/puppetserver/cli/apps/foreground\npuppet is not in the sudoers file.  This incident will be reported.\n{code}", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16101", "fixedVersions": [], "id": "16101", "issueType": "Bug", "key": "SERVER-508", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Duplicate", "resolutionDate": "2015-03-30T10:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix sudo on ubuntu1404", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:8ed100be-9a13-4ed1-92d2-88ac897d6774", "body": "imo, pmt should probably be replaced with a community standard like r10k :P", "created": "2015-03-20T13:18:00.000000"}], "components": [], "created": "2015-03-20T13:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ff3ee84"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xt3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_274632393_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_30578157405"}], "description": "We should put together a module that users can use to get a working single-node puppetserver / puppetdb setup off the ground easily.\n\nThe workflow would probably be something like:\n\n* Install puppet\n* install module via PMT\n* run a command like `puppet apply -e `include puppetserver::server_with_puppetdb` or similar\n\nThis would install the puppet server package and start the service, make sure that the CA was online, etc., and then call into the PuppetDB module to get that all up and working, including postgres.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15226", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "15226", "issueType": "New Feature", "key": "SERVER-507", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2016-03-11T14:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet module for getting a single-node install set up, including puppetdb", "timeSpent": "PT0S", "updated": "2016-03-11T14:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Should be 2 points against SERVER-412.", "created": "2015-03-20T12:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Where Fedora 20 is planned to End-Of-Life on 06/23/2015 -- https://lists.fedoraproject.org/pipermail/announce/2015-May/003267.html -- and Puppet Server 2.x doesn't have Fedora 20 as an officially supported platform anyway, I'm going to mark this issue as closed / won't fix.", "created": "2015-06-19T15:41:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-20T12:14:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@152dc2c2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqn3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO fix test failures"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_63755754_*|*_3_*:*_3_*:*_91126941_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_3_*:*_5895329416_*|*_10006_*:*_3_*:*_426740865_*|*_10005_*:*_1_*:*_1397843275"}], "description": "Fedora 20 looks to be failing in the initial repository setup steps.  Packages are available in {{/artifacts/deb/testing/}}.  repository configurations are available,\n\nThis looks to be an issue of the pre-suite hitting the wrong URL for the repo configuration file.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15543", "fixedVersions": [], "id": "15543", "issueType": "Task", "key": "SERVER-506", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Won't Fix", "resolutionDate": "2015-06-19T15:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix fedora20 pre-suite", "timeSpent": "PT0S", "updated": "2016-01-19T07:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Closing as won't fix for the 2.0.0 GA release becasue Debian 8 is still in testing and has not been released.  See comments from [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] and [~accountid:63d40635a05386069cdb69d6] in the Puppet 4 Launch meeting notes for confirmation.", "created": "2015-03-23T12:33:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Setting QA Status to Reviewed because no additional QA action is required.", "created": "2015-04-29T16:26:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-20T12:09:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4634e117"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyyjr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO fix test failures"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10872_*|*_3_*:*_1_*:*_154325034_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_106315311"}], "description": "Debian 8 looks to be failing in the initial repository setup steps.  Packages are available in {{/artifacts/deb/testing/}}.\n\nThis looks to be failing differently than Ubuntu, which gets beyond the repository setup phase.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17070", "fixedVersions": [], "id": "17070", "issueType": "Task", "key": "SERVER-505", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Won't Fix", "resolutionDate": "2015-03-23T12:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix debian8 pre-suite", "timeSpent": "PT0S", "updated": "2015-04-29T16:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Left off seeing where we stand now that SERVER-502 passed smoke testing.\n\nCheck here to see how far we got:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_smoke-aio/\n\nAnd the full suite:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_full-aio/27/", "created": "2015-03-20T19:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "This should be resolved with SERVER-502.", "created": "2015-03-21T14:26:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Made it through the master branch pipeline last night.", "created": "2015-03-26T10:24:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-20T11:30:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45f39e37"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyywfz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO test failures need fixing"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_60962157_*|*_1_*:*_1_*:*_2953967_*|*_10007_*:*_1_*:*_344911718_*|*_3_*:*_1_*:*_84142736_*|*_5_*:*_1_*:*_47606830559_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_21472436"}], "description": "For the 2.0.0 GA we need to make sure the acceptance test layout of ubuntu1404-64ma and ubuntu1404-64m-32a both work.\n\nThe tests are currently failing on the pre-suite around here:\n\n{code}\nSetting up puppetserver (2.0.0.SNAPSHOT.2015.03.19T1436-1puppetlabs1) ...\n/var/lib/dpkg/info/puppetserver.postinst: 3: /var/lib/dpkg/info/puppetserver.postinst: /usr/share/puppetserver/scripts/install.sh: not found\n{code}\n\nThe full run and failure in the pre-suite is available at [Build #25|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_full-aio/25/]", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16608", "fixedVersions": [], "id": "16608", "issueType": "Bug", "key": "SERVER-503", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-26T10:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Get pre-suite working on Ubuntu 12.04 (precise)", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Smoke tests passing at: https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_smoke-aio/48/\n\nUsing the changes in https://github.com/puppetlabs/ezbake/pull/209", "created": "2015-03-20T18:11:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "New pull request with more measured change is up at https://github.com/puppetlabs/ezbake/pull/214\n\nI'm doing exploratory testing of packages that result from this smaller change.  The reason I went down the `daemon` subcommand route in the first place is because I found that resolving the first `postinst` error resulted in a cleanly installing package, but a `puppetserver` service that still refused to start.\n\nThis is a bit perplexing because the only difference in the debian init script between stable and master is as follows at this point in the HEAD of both branches:\n\n{code}\ndiff --git a/resources/puppetlabs/lein-ezbake/template/foss/ext/debian/ezbake.init.erb b/resources/puppetlabs/lein-ezbake/template/foss/ext/debian/ezbake.init.erb\nindex cd78826..c460d5f 100755\n--- a/resources/puppetlabs/lein-ezbake/template/foss/ext/debian/ezbake.init.erb\n+++ b/resources/puppetlabs/lein-ezbake/template/foss/ext/debian/ezbake.init.erb\n@@ -27,7 +27,7 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin\n NAME=<%= EZBake::Config[:project] %>\n DESC=\"<%= EZBake::Config[:project] %> Puppet Labs version-checking backend\"\n JARFILE=\"<%= EZBake::Config[:uberjar_name] %>\"\n-PIDFILE=/var/run/$NAME.pid\n+PIDFILE=/var/run/puppetlabs/$NAME/$NAME.pid\n SCRIPTNAME=/etc/init.d/$NAME\n START_TIMEOUT=${START_TIMEOUT:-60}\n\n@@ -55,6 +55,11 @@ do_start()\n     <%= action %>\n     <% end -%>\n\n+    if [ ! -d  \"/var/run/puppetlabs/$NAME\" ] ", "created": "2015-03-24T15:38:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n\nHere are my findings for Ubuntu 12.04 comparing master to stable.\n\nStable branch:\n\n{code}\nroot@d1xbg4sur22b4hz:~# puppetserver --version\npuppetserver version: 1.0.4.SNAPSHOT.2015.03.24T0146\nroot@d1xbg4sur22b4hz:~# puppet --version\n3.7.4\n{code}\n\nChange to echo the execution:\n\n{code}\n    echo \"start-stop-daemon --start $EXTRA_ARGS --quiet --pidfile $PIDFILE --chdir $INSTALL_DIR --exec $JAVA_BIN \\\n        --startas /bin/bash -- -c \\\"exec $EXEC >> /var/log/puppetserver/puppetserver-daemon.log 2>&1\\\"\"\n    start-stop-daemon --start $EXTRA_ARGS --quiet --pidfile $PIDFILE --chdir $INSTALL_DIR --exec $JAVA_BIN \\\n        --startas /bin/bash -- -c \"exec $EXEC >> /var/log/puppetserver/puppetserver-daemon.log 2>&1\"\n{code}\n\nResult:\n\n{code}\nroot@d1xbg4sur22b4hz:~# /etc/init.d/puppetserver start\nstart-stop-daemon --start --chuid puppet --background --make-pidfile --quiet --pidfile /var/run/puppetserver.pid --chdir /usr/share/puppetserver --exec /usr/bin/java         --startas /bin/bash -- -c \"exec /usr/bin/java -XX:OnOutOfMemoryError=\"kill -9 %p\" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetserver -Djava.security.egd=/dev/urandom -Xms2g -Xmx2g -XX:MaxPermSize=256m -cp '/usr/share/puppetserver/puppet-server-release.jar' clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetserver/conf.d -b '/etc/puppetserver/bootstrap.cfg' >> /var/log/puppetserver/puppetserver-daemon.log 2>&1\"\n{code}\n\nProcess is up and running:\n\n{code}\npuppet    3800 30.8 20.0 3626284 813308 ?      Sl   17:38   0:55 /usr/bin/java -XX:OnOutOfMemoryError=kill -9 %p -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetserver -Djava.security.egd=/dev/urandom -Xms2g -Xmx2g -XX:MaxPermSize=256m -cp /usr/share/puppetserver/puppet-server-release.jar clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetserver/conf.d -b /etc/puppetserver/bootstrap.cfg\n{code}\n\nFor master:\n\n{code}\nroot@g7ydg70rocpbfat:~# puppetserver --version\npuppetserver version: 2.0.0.SNAPSHOT.2015.03.24T1443\nroot@g7ydg70rocpbfat:~# puppet --version\n4.0.0-rc1\n{code}\n\nChange to echo the execution:\n\n{code}\n    echo \"start-stop-daemon --start $EXTRA_ARGS --quiet --pidfile $PIDFILE --chdir $INSTALL_DIR --exec $JAVA_BIN \\\n        --startas /bin/bash -- -c \\\"exec $EXEC >> /var/log/puppetserver/puppetserver-daemon.log 2>&1\\\"\"\n    start-stop-daemon --start $EXTRA_ARGS --quiet --pidfile $PIDFILE --chdir $INSTALL_DIR --exec $JAVA_BIN \\\n        --startas /bin/bash -- -c \"exec $EXEC >> /var/log/puppetserver/puppetserver-daemon.log 2>&1\"\n{code}\n\nResult:\n\n{code}\nroot@g7ydg70rocpbfat:~# /etc/init.d/puppetserver start\nstart-stop-daemon --start --chuid puppet --background --make-pidfile --quiet --pidfile /var/run/puppetlabs/puppetserver/puppetserver.pid --chdir /opt/puppetlabs/server/apps/puppetserver --exec /usr/bin/java         --startas /bin/bash -- -c \"exec /usr/bin/java -XX:OnOutOfMemoryError=\"kill -9 %p\" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetlabs/puppetserver -Djava.security.egd=/dev/urandom -Xms2g -Xmx2g -XX:MaxPermSize=256m -cp '/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar' clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetlabs/puppetserver/conf.d -b '/etc/puppetlabs/puppetserver/bootstrap.cfg' >> /var/log/puppetserver/puppetserver-daemon.log 2>&1\"\n{code}\n\nProcess is not up and running.\n\nNow to dissect this information...", "created": "2015-03-24T18:43:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "OK, I reformatted these gnarly command line aguments to be line oriented and here's the diff I ended up with:\n\n{code}\ndiff -U2 stable.txt master.txt\n--- stable.txt  2015-03-24 17:52:20.000000000 -0700\n+++ master.txt  2015-03-24 17:49:15.000000000 -0700\n@@ -7,7 +7,7 @@\n   --quiet \\\n   --pidfile \\\n-  /var/run/puppetserver.pid \\\n+  /var/run/puppetlabs/puppetserver/puppetserver.pid \\\n   --chdir \\\n-  /usr/share/puppetserver \\\n+  /opt/puppetlabs/server/apps/puppetserver \\\n   --exec \\\n   /usr/bin/java \\\n@@ -20,5 +20,5 @@\n         -XX:OnOutOfMemoryError=\"kill -9 %p\" \\\n         -XX:+HeapDumpOnOutOfMemoryError \\\n-        -XX:HeapDumpPath=/var/log/puppetserver \\\n+        -XX:HeapDumpPath=/var/log/puppetlabs/puppetserver \\\n         -Djava.security.egd=/dev/urandom \\\n         -Xms2g \\\n@@ -26,12 +26,12 @@\n         -XX:MaxPermSize=256m \\\n         -cp \\\n-        '/usr/share/puppetserver/puppet-server-release.jar' \\\n+        '/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar' \\\n         clojure.main \\\n         -m \\\n         puppetlabs.trapperkeeper.main \\\n         --config \\\n-        /etc/puppetserver/conf.d \\\n+        /etc/puppetlabs/puppetserver/conf.d \\\n         -b \\\n-        '/etc/puppetserver/bootstrap.cfg' \\\n+        '/etc/puppetlabs/puppetserver/bootstrap.cfg' \\\n         >> \\\n         /var/log/puppetserver/puppetserver-daemon.log \\\n{code}\n\nStable command reads:\n\n{code}\nstart-stop-daemon \\\n  --start \\\n  --chuid \\\n  puppet \\\n  --background \\\n  --make-pidfile \\\n  --quiet \\\n  --pidfile \\\n  /var/run/puppetserver.pid \\\n  --chdir \\\n  /usr/share/puppetserver \\\n  --exec \\\n  /usr/bin/java \\\n  --startas \\\n  /bin/bash \\\n  -- \\\n  -c \\\n  \"exec \\\n        /usr/bin/java \\\n        -XX:OnOutOfMemoryError=\"kill -9 %p\" \\\n        -XX:+HeapDumpOnOutOfMemoryError \\\n        -XX:HeapDumpPath=/var/log/puppetserver \\\n        -Djava.security.egd=/dev/urandom \\\n        -Xms2g \\\n        -Xmx2g \\\n        -XX:MaxPermSize=256m \\\n        -cp \\\n        '/usr/share/puppetserver/puppet-server-release.jar' \\\n        clojure.main \\\n        -m \\\n        puppetlabs.trapperkeeper.main \\\n        --config \\\n        /etc/puppetserver/conf.d \\\n        -b \\\n        '/etc/puppetserver/bootstrap.cfg' \\\n        >> \\\n        /var/log/puppetserver/puppetserver-daemon.log \\\n        2>&1\"\n{code}\n\nmaster command reads:\n\n{code}\nstart-stop-daemon \\\n  --start \\\n  --chuid \\\n  puppet \\\n  --background \\\n  --make-pidfile \\\n  --quiet \\\n  --pidfile \\\n  /var/run/puppetlabs/puppetserver/puppetserver.pid \\\n  --chdir \\\n  /opt/puppetlabs/server/apps/puppetserver \\\n  --exec \\\n  /usr/bin/java \\\n  --startas \\\n  /bin/bash \\\n  -- \\\n  -c \\\n  \"exec \\\n        /usr/bin/java \\\n        -XX:OnOutOfMemoryError=\"kill -9 %p\" \\\n        -XX:+HeapDumpOnOutOfMemoryError \\\n        -XX:HeapDumpPath=/var/log/puppetlabs/puppetserver \\\n        -Djava.security.egd=/dev/urandom \\\n        -Xms2g \\\n        -Xmx2g \\\n        -XX:MaxPermSize=256m \\\n        -cp \\\n        '/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar' \\\n        clojure.main \\\n        -m \\\n        puppetlabs.trapperkeeper.main \\\n        --config \\\n        /etc/puppetlabs/puppetserver/conf.d \\\n        -b \\\n        '/etc/puppetlabs/puppetserver/bootstrap.cfg' \\\n        >> \\\n        /var/log/puppetserver/puppetserver-daemon.log \\\n        2>&1\"\n{code}\n", "created": "2015-03-24T18:53:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Directory information (from master)\n\n{code}\nroot@g7ydg70rocpbfat:~# find /var/run/puppetlabs -ls\n 18316    0 drwxr-xr-x   3 puppet   puppet         60 Mar 24 17:00 /var/run/puppetlabs\n 19664    0 drwxrwxr-x   2 puppet   puppet         60 Mar 24 17:00 /var/run/puppetlabs/puppetserver\n 20815    4 -rw-r--r--   1 root     root            5 Mar 24 17:43 /var/run/puppetlabs/puppetserver/puppetserver.pid\nroot@g7ydg70rocpbfat:~# find /var/log/puppetlabs -ls\n 33879    4 drwxr-x---   3 puppet   puppet       4096 Mar 24 17:00 /var/log/puppetlabs\n 33880    4 drwx------   2 puppet   puppet       4096 Mar 24 14:46 /var/log/puppetlabs/puppetserver\n\nroot@g7ydg70rocpbfat:~# find /etc/puppetlabs -ls\n287061    4 drwxr-xr-x   6 root     root         4096 Mar 24 17:00 /etc/puppetlabs\n287062    4 drwxr-xr-x   5 root     root         4096 Mar 24 16:59 /etc/puppetlabs/code\n284357    4 -rw-r--r--   1 root     root          335 Mar 18 10:56 /etc/puppetlabs/code/hiera.yaml\n287063    4 drwxr-xr-x   3 root     root         4096 Mar 24 16:59 /etc/puppetlabs/code/environments\n287064    4 drwxr-xr-x   4 root     root         4096 Mar 24 16:59 /etc/puppetlabs/code/environments/production\n287065    4 drwxr-xr-x   2 root     root         4096 Mar 18 11:04 /etc/puppetlabs/code/environments/production/manifests\n287066    4 drwxr-xr-x   2 root     root         4096 Mar 18 11:04 /etc/puppetlabs/code/environments/production/modules\n284358    4 -rw-r--r--   1 root     root          879 Mar 18 10:56 /etc/puppetlabs/code/environments/production/environment.conf\n287067    4 drwxr-xr-x   2 root     root         4096 Mar 18 11:04 /etc/puppetlabs/code/hieradata\n287068    4 drwxr-xr-x   2 root     root         4096 Mar 18 11:04 /etc/puppetlabs/code/modules\n287069    4 drwxr-xr-x   2 root     root         4096 Mar 24 16:59 /etc/puppetlabs/mcollective\n284359    4 -rw-r--r--   1 root     root          447 Mar 18 10:56 /etc/puppetlabs/mcollective/discovery-help.erb\n284360    4 -rw-r--r--   1 root     root          521 Mar 18 10:56 /etc/puppetlabs/mcollective/server.cfg\n284361    4 -rw-r--r--   1 root     root          442 Mar 18 10:56 /etc/puppetlabs/mcollective/metadata-help.erb\n284362    4 -rw-r--r--   1 root     root           19 Mar 18 10:56 /etc/puppetlabs/mcollective/facts.yaml\n284363    4 -rw-r--r--   1 root     root          427 Mar 18 10:56 /etc/puppetlabs/mcollective/client.cfg\n284364    4 -rw-r--r--   1 root     root         1160 Mar 18 10:56 /etc/puppetlabs/mcollective/data-help.erb\n284365    4 -rw-r--r--   1 root     root         1694 Mar 18 10:56 /etc/puppetlabs/mcollective/rpc-help.erb\n287070    4 drwxr-xr-x   3 root     root         4096 Mar 24 17:00 /etc/puppetlabs/puppet\n284366    8 -rw-r--r--   1 root     root         4429 Mar 18 10:56 /etc/puppetlabs/puppet/auth.conf\n287083    4 drwxrwx--x   2 puppet   puppet       4096 Mar 24 17:00 /etc/puppetlabs/puppet/ssl\n284367    4 -rw-r--r--   1 root     root          336 Mar 24 17:01 /etc/puppetlabs/puppet/puppet.conf\n287078    4 drwxr-xr-x   3 root     root         4096 Mar 24 17:00 /etc/puppetlabs/puppetserver\n284467    4 -rw-r--r--   1 root     root          838 Mar 24 14:46 /etc/puppetlabs/puppetserver/logback.xml\n284469    4 -rw-r--r--   1 root     root          954 Mar 24 14:46 /etc/puppetlabs/puppetserver/bootstrap.cfg\n287079    4 drwxr-xr-x   2 root     root         4096 Mar 24 17:00 /etc/puppetlabs/puppetserver/conf.d\n284471    4 -rw-r--r--   1 root     root          467 Mar 24 17:00 /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf\n284474    4 -rw-r--r--   1 root     root          196 Mar 24 14:46 /etc/puppetlabs/puppetserver/conf.d/global.conf\n284473    4 -rw-r--r--   1 root     root          801 Mar 24 14:46 /etc/puppetlabs/puppetserver/conf.d/web-routes.conf\n284472    4 -rw-r--r--   1 root     root          450 Mar 24 14:46 /etc/puppetlabs/puppetserver/conf.d/ca.conf\n284470    4 -rw-r--r--   1 root     root          153 Mar 24 14:46 /etc/puppetlabs/puppetserver/conf.d/webserver.conf\n284475    4 -rw-r--r--   1 root     root          339 Mar 24 14:46 /etc/puppetlabs/puppetserver/request-logging.xml\n\nroot@g7ydg70rocpbfat:~# find /opt/puppetlabs/server/apps/puppetserver -ls\n 33886    4 drwxr-xr-x   5 root     root         4096 Mar 24 17:00 /opt/puppetlabs/server/apps/puppetserver\n 33887    4 drwxr-xr-x   3 root     root         4096 Mar 24 17:00 /opt/puppetlabs/server/apps/puppetserver/cli\n 33888    4 drwxr-xr-x   2 root     root         4096 Mar 24 17:00 /opt/puppetlabs/server/apps/puppetserver/cli/apps\n 31826    4 -rwxr-xr-x   1 root     root          643 Mar 24 14:46 /opt/puppetlabs/server/apps/puppetserver/cli/apps/foreground\n 31833    4 -rwxr-xr-x   1 root     root          172 Mar 24 14:46 /opt/puppetlabs/server/apps/puppetserver/cli/apps/ruby\n 31827    4 -rwxr-xr-x   1 root     root          171 Mar 24 14:46 /opt/puppetlabs/server/apps/puppetserver/cli/apps/gem\n 31835    4 -rwxr-xr-x   1 root     root          171 Mar 24 14:46 /opt/puppetlabs/server/apps/puppetserver/cli/apps/irb\n 31844    4 -rwxr-xr-x   1 root     root         1497 Mar 24 14:46 /opt/puppetlabs/server/apps/puppetserver/ezbake-functions.sh\n 31841 32596 -rw-r--r--   1 root     root     33376066 Mar 24 14:46 /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar\n 33890    4 drwxr-xr-x   2 root     root         4096 Mar 24 17:00 /opt/puppetlabs/server/apps/puppetserver/scripts\n 31843   12 -rwxr-xr-x   1 root     root        11800 Mar 24 14:46 /opt/puppetlabs/server/apps/puppetserver/scripts/install.sh\n 33889    4 drwxr-xr-x   2 root     root         4096 Mar 24 17:00 /opt/puppetlabs/server/apps/puppetserver/bin\n 31836    4 -rwxr-xr-x   1 root     root         1960 Mar 24 14:46 /opt/puppetlabs/server/apps/puppetserver/bin/puppetserver\n 31849    8 -rw-r--r--   1 root     root         4640 Mar 24 14:46 /opt/puppetlabs/server/apps/puppetserver/ezbake.manifest\n\nroot@g7ydg70rocpbfat:~# ls -ld /opt/puppetlabs/server/apps\ndrwxr-xr-x 3 root root 4096 Mar 24 17:00 /opt/puppetlabs/server/apps\nroot@g7ydg70rocpbfat:~# ls -ld /opt/puppetlabs/server\ndrwxr-xr-x 5 root root 4096 Mar 24 17:00 /opt/puppetlabs/server\nroot@g7ydg70rocpbfat:~# ls -ld /opt/puppetlabs\ndrwxr-xr-x 5 root root 4096 Mar 24 17:00 /opt/puppetlabs\nroot@g7ydg70rocpbfat:~# ls -ld /opt\ndrwxr-xr-x 3 root root 4096 Mar 24 16:59 /opt\n{code}", "created": "2015-03-24T18:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For the master command, I noticed that it is outputting to {{/var/log/puppetserver/puppetserver-daemon.log}}.  That should be {{/var/log/puppetlabs/puppetserver/puppetserver-daemon.log}}, right?  Not sure if {{start-stop-daemon}} would fail because that file weren't otherwise writable but seems like that should be changed anyway...", "created": "2015-03-24T19:20:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Actually I think that's it! \u00a0Bash would terminate without even trying to start the command if it can't open the file we're redirecting to.\n\n\nThis also explains why we never see the output file even though I'd expect a 0 byte file.\n", "created": "2015-03-24T19:28:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Made it through the master branch pipeline last night.", "created": "2015-03-26T10:24:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-20T11:20:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7219356e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyywfr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO test failures need fixing"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_60967887_*|*_1_*:*_1_*:*_3536907_*|*_10007_*:*_2_*:*_352129789_*|*_3_*:*_2_*:*_98297245_*|*_5_*:*_1_*:*_47606848777_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_92223"}], "description": "For the 2.0.0 GA we need to make sure the acceptance test layout of ubuntu1404-64ma and ubuntu1404-64m-32a both work.\n\nThe tests are currently failing on the pre-suite around here:\n\n{code}\nSetting up puppetserver (2.0.0.SNAPSHOT.2015.03.19T1436-1puppetlabs1) ...\n/var/lib/dpkg/info/puppetserver.postinst: 3: /var/lib/dpkg/info/puppetserver.postinst: /usr/share/puppetserver/scripts/install.sh: not found\n{code}\n\nThe full run and failure in the pre-suite is available at [Build #25|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_full-aio/25/]", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15542", "fixedVersions": [], "id": "15542", "issueType": "Bug", "key": "SERVER-502", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-26T10:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ubuntu 14.04 pre-suite fix", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:068480b2-dd12-4176-9516-63b7a5e65844] that error looks like the Puppet ruby code is not on your ruby load path", "created": "2015-03-23T17:28:00.000000"}, {"author": "557058:068480b2-dd12-4176-9516-63b7a5e65844", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Hi Chris.  Thank you for your response.  I have updated the issue with a self contained vagrant environment that demonstrates the problem.  If you like, please download the git repo and follow the instructions to get the environment up and going.  Please let me know if you have any issues.\n\nThank you!", "created": "2015-03-23T22:26:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "I went through the packages that foreman-proxy depends on, installed them one by one on a clean installation and found that it's *ruby-ffi* that's triggering the problem.\n\n{noformat}\nroot@ubuntu:~# puppetserver foreground\n2015-03-31 09:48:03,018 INFO  [o.e.j.u.log] Logging initialized @12008ms\n2015-03-31 09:48:03,761 INFO  [p.t.s.w.jetty9-core] Removing buggy security provider SunPKCS11-NSS version 1.7\n2015-03-31 09:48:07,865 INFO  [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2015-03-31 09:48:07,866 WARN  [p.s.j.jruby-puppet-core] No configuration value found for jruby-puppet max-active-instances", "created": "2015-03-31T03:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Interesting.  I think that same package might be causing some issues on SERVER-14 and SERVER-160 as well.", "created": "2015-03-31T09:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4] thanks for tracking that down!", "created": "2015-03-31T09:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Here's a link that shows the files contained in the ruby-ffi package:\n\nhttps://packages.debian.org/sid/amd64/ruby-ffi/filelist\n\nIn Puppet Server 1.0.2 we might have been vulnerable to an issue where some of those .rb files would get into the load path, but that should be fixed in 1.0.8.  I'm more suspicious of the .so file.  The Puppet Server jar contains a few .so files for FFI, and they get copied to a temp directory and loaded from there when the app is running.  But it's possible that the file:\n\n{code}/usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/2.1.0/ffi_c.so{code}\n\nis ending up on the LD_LIBRARY_PATH in front of the temp dir that JRuby is trying to use?", "created": "2015-03-31T09:37:00.000000"}, {"author": "557058:068480b2-dd12-4176-9516-63b7a5e65844", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I have tested with Puppet Server 1.0.8 and the problem persists.  Also, I tried both 1.7 and 1.8 versions of foreman-proxy (both resulting in the same error).", "created": "2015-05-11T16:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:068480b2-dd12-4176-9516-63b7a5e65844] I linked in a related ticket, SERVER-592.  We've had a few issues related to the system LD_LIBRARY_PATH and how it affects JRuby's native extensions.\n\nHave you tried the workaround that [~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4] mentioned above?  Does that solution cause other problems for you?\n\nYou could also try setting the LD_LIBRARY_PATH explicitly in the init script, as discussed in SERVER-592.\n\nWe're definitely interested in coming up with a solution to this that can be baked into the product so that it works out-of-the-box, but we're not yet sure what the best solution is, so feedback on what works / doesn't work for you would be helpful.\n\nping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e]", "created": "2015-05-12T02:26:00.000000"}, {"author": "557058:068480b2-dd12-4176-9516-63b7a5e65844", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I wanted to update the issue to indicate that it was still an issue out-of-the-box.  Thank you for pointing me to [~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4]'s solution.  This worked!\n\nAll that was required was the following:\n{code}\napt-get remove ruby-ffi\n{code}\n\nI am guessing I could add this to my puppet server's manifest but for now, removing it by hand worked!\n{code}\npackage { 'ruby-ffi':\n  ensure => absent,\n}\n{code}", "created": "2015-05-12T22:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:068480b2-dd12-4176-9516-63b7a5e65844] thanks for the update!  We'd definitely like for it to work out of the box so we'll keep this open and see if we can figure something out.", "created": "2015-05-13T01:17:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-19T21:58:00.000000", "creator": "557058:068480b2-dd12-4176-9516-63b7a5e65844", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22775067"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3x8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1084273504_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_53418402662"}], "description": "I have created a vagrant environment that demonstrates the problem: [puppetserver_foremanproxy_error|https://github.com/Conzar/puppetserver_foremanproxy_error]\n\nThe bug is caused by foreman-proxy. \n\nWill update when I find out additional information.\n\nOS: Ubuntu 14.04\nPuppet Server Versions Tested: 1.0.2-1puppetlabs1 & 1.0.8-1puppetlabs1\nForeman Proxy Versions Tested: 1.7 & 1.8\nInstall: via package\n\nThe following error is the output of: puppetserver foreground\n{code}\nLoadError: no such file to load -- puppet/defaults\n            require at org/jruby/RubyKernel.java:1065\n            require at /usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55\n             Puppet at /usr/lib/ruby/vendor_ruby/puppet.rb:114\n             (root) at /usr/lib/ruby/vendor_ruby/puppet.rb:29\n            require at org/jruby/RubyKernel.java:1065\n             (root) at /usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n            require at /usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55\n            require at org/jruby/RubyKernel.java:1065\n             (root) at file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server.rb:1\n             (root) at /usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n            require at org/jruby/RubyKernel.java:1065\n            require at /usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55\n             (root) at file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:1\n             invoke at jruby_puppet_core.clj:164\n             invoke at jruby_puppet_core.clj:179\n             invoke at jruby_puppet_core.clj:167\n             invoke at jruby_puppet_agents.clj:54\n             invoke at jruby_puppet_agents.clj:39\n             invoke at jruby_puppet_agents.clj:116\n             invoke at internal.clj:247\n             invoke at internal.clj:231\n  shutdown_on_error at internal.clj:286\n             invoke at internal.clj:255\n             invoke at internal.clj:255\n             invoke at core.clj:619\n           doInvoke at core.clj:2396\n             invoke at core.clj:619\n           doInvoke at core.clj:2396\n             invoke at jruby_puppet_agents.clj:35\n             invoke at core.clj:1839\n2015-03-20 16:40:59,924 ERROR [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:59) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032.invoke(jruby_puppet_agents.clj:39) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7108$send_prime_pool_BANG___7109$fn__7110$fn__7112.invoke(jruby_puppet_agents.clj:116) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) [na:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:167) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyTo(AFn.java:151) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:137) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.invoke(RestFn.java:408) [puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7009$send_agent__7010$fn__7011$agent_fn__7012.invoke(jruby_puppet_agents.clj:35) [na:na]\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1839) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:161) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:132) [puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.doRun(Agent.java:114) [puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.run(Agent.java:163) [puppet-server-release.jar:na]\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_75]\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_75]\n        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) no such file to load -- puppet/defaults\n        at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1317) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1310) ~[puppet-server-release.jar:na]\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_75]\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_75]\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_75]\n        at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_75]\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) ~[puppet-server-release.jar:na]\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) ~[puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:164) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762$fn__6763.invoke(jruby_puppet_core.clj:179) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762.invoke(jruby_puppet_core.clj:167) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        ... 24 common frames omitted\nCaused by: org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- puppet/defaults\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at RUBY.Puppet(/usr/lib/ruby/vendor_ruby/puppet.rb:114) ~[na:na]\n        at RUBY.(root)(/usr/lib/ruby/vendor_ruby/puppet.rb:29) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server.rb:1) ~[na:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at RUBY.(root)(file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:1) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:164) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762$fn__6763.invoke(jruby_puppet_core.clj:179) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762.invoke(jruby_puppet_core.clj:167) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032.invoke(jruby_puppet_agents.clj:39) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7108$send_prime_pool_BANG___7109$fn__7110$fn__7112.invoke(jruby_puppet_agents.clj:116) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) [na:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release.jar:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) ~[na:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:167) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyTo(AFn.java:151) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:137) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n        at clojure.lang.RestFn.invoke(RestFn.java:408) [puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7009$send_agent__7010$fn__7011$agent_fn__7012.invoke(jruby_puppet_agents.clj:35) ~[na:na]\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1839) ~[puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:161) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:132) [puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.doRun(Agent.java:114) ~[puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.run(Agent.java:163) ~[puppet-server-release.jar:na]\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_75]\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_75]\n        at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_75]\nCaused by: org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- puppet/defaults\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at RUBY.Puppet(/usr/lib/ruby/vendor_ruby/puppet.rb:114) ~[na:na]\n        at RUBY.(root)(/usr/lib/ruby/vendor_ruby/puppet.rb:29) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server.rb:1) ~[na:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at RUBY.(root)(file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:1) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:164) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762$fn__6763.invoke(jruby_puppet_core.clj:179) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762.invoke(jruby_puppet_core.clj:167) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032.invoke(jruby_puppet_agents.clj:39) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7108$send_prime_pool_BANG___7109$fn__7110$fn__7112.invoke(jruby_puppet_agents.clj:116) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) ~[na:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7009$send_agent__7010$fn__7011$agent_fn__7012.invoke(jruby_puppet_agents.clj:35) ~[na:na]\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1839) ~[puppet-server-release.jar:na]\n2015-03-20 16:40:59,944 INFO  [p.t.internal] Beginning shutdown sequence\n2015-03-20 16:40:59,953 INFO  [p.t.s.w.jetty9-service] Shutting down web server(s).\n2015-03-20 16:40:59,959 INFO  [p.t.internal] Finished shutdown sequence\nException in thread \"main\" java.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:59)\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032.invoke(jruby_puppet_agents.clj:39)\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7108$send_prime_pool_BANG___7109$fn__7110$fn__7112.invoke(jruby_puppet_agents.clj:116)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231)\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286)\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255)\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255)\n        at clojure.lang.AFn.applyToHelper(AFn.java:167)\n        at clojure.lang.AFn.applyTo(AFn.java:151)\n        at clojure.core$apply.invoke(core.clj:619)\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396)\n        at clojure.lang.RestFn.applyTo(RestFn.java:137)\n        at clojure.core$apply.invoke(core.clj:619)\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396)\n        at clojure.lang.RestFn.invoke(RestFn.java:408)\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7009$send_agent__7010$fn__7011$agent_fn__7012.invoke(jruby_puppet_agents.clj:35)\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1839)\n        at clojure.lang.AFn.applyToHelper(AFn.java:161)\n        at clojure.lang.RestFn.applyTo(RestFn.java:132)\n        at clojure.lang.Agent$Action.doRun(Agent.java:114)\n        at clojure.lang.Agent$Action.run(Agent.java:163)\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)\n        at java.lang.Thread.run(Thread.java:745)\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) no such file to load -- puppet/defaults\n        at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133)\n        at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1317)\n        at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1310)\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:606)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:164)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762$fn__6763.invoke(jruby_puppet_core.clj:179)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762.invoke(jruby_puppet_core.clj:167)\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:54)\n        ... 24 more\nCaused by: org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- puppet/defaults\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55)\n        at RUBY.Puppet(/usr/lib/ruby/vendor_ruby/puppet.rb:114)\n        at RUBY.(root)(/usr/lib/ruby/vendor_ruby/puppet.rb:29)\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55)\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n        at RUBY.(root)(file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server.rb:1)\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55)\n        at RUBY.(root)(file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:1)\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:164)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762$fn__6763.invoke(jruby_puppet_core.clj:179)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762.invoke(jruby_puppet_core.clj:167)\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:54)\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032.invoke(jruby_puppet_agents.clj:39)\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7108$send_prime_pool_BANG___7109$fn__7110$fn__7112.invoke(jruby_puppet_agents.clj:116)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231)\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286)\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255)\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255)\n        at clojure.core$apply.invoke(core.clj:619)\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396)\n        at clojure.core$apply.invoke(core.clj:619)\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396)\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7009$send_agent__7010$fn__7011$agent_fn__7012.invoke(jruby_puppet_agents.clj:35)\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1839)\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15786", "fixedVersions": [], "id": "15786", "issueType": "Bug", "key": "SERVER-501", "labels": ["package", "puppetdb", "support", "ubuntu"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:068480b2-dd12-4176-9516-63b7a5e65844", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server + foreman-proxy causes puppet server failure on Ubuntu 14.04", "timeSpent": "PT0S", "updated": "2016-12-09T16:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-03-19T17:48:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71689a47"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z4n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_344302082_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_54173323748"}], "description": "In SERVER-345, we had some discussion about the possibility of having Puppet Server intentionally fail to startup with a meaningful error message for the case that a file at the {{localcacert}} location exists, none of the other files that the CA would generate for itself do, and the \"real\" Puppet certificate-authority service is enabled at startup.  We decided to forego that work in the interest of getting the work for not overwriting the {{localcacert}} with the {{cacert}} done.  Given that a few IRC users have encountered some confusion around this behavior, I thought I'd open a separate ticket that we can investigate further at some point.\n\nUpon review of the PR for SERVER-345, we decided to bail on the idea of adding :localcacert to {{required-ca-files}} as was discussed in the ticket. Doing this would have been problematic if the CA files had been pre-generated, outside puppet-server's startup process. In that scenario, it would be possible for the localcacert to not exist but for the other CA files to exist - which would have failed the required-ca-files check.  I think this could still be done safely if we were to change the logic to only additionally fail if localcacert does exist but any of the other CA files did not exist at startup - given this would still seem to be an invalid scenario. Doing this would have involved a bit more logic, though.\n\nSome additional context from [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] on SERVER-345:\n\n{quote}\nIn an external CA use case where the external CA is another Puppet CA, it's common for users to do an agent run on the new master machine before starting the actual server. The key here is that in a multi-master scenario, there is usually a 'master of masters', which is where the agents on all of the other masters are configured to point to. This is a very common deployment pattern from what I understand.\n\nThis agent run will result in certs being generated with the fqdn of the machine, and the file paths where those certs get deployed will correspond with where Puppet Server will be looking for its 'master cert' on startup. We also get a copy of the localcacert via the agent run.\n{quote}", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "16100", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16100", "issueType": "Task", "key": "SERVER-500", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider failing Puppet Server startup if localcacert but no CA files exist at startup", "timeSpent": "PT0S", "updated": "2016-12-09T16:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Left off porting over {{install_puppet_from_msi}} from Puppet to Puppet Server.  The beaker version is totally borked on needlessly trying to compare versions.", "created": "2015-03-19T19:00:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I think this is 1 point planned for in SERVER-412.", "created": "2015-03-20T12:11:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pre-suite for windows is passing fully now in the [puppet-server (aio) 20:  Smoke Acceptance Test Suite|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_smoke-aio/53/].  \n\nWe're getting two errored tests in the full acceptance suite when running the {{redhat7-64m-windows2008r2-64a}} layout, but both of these errors are related to a known foregapi SSL issue.\n\nThe foregeapi SSL issue that is already reported in PUP-3442 with a robust solution described in PUP-3445.\n\n\n", "created": "2015-03-22T11:04:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pull Request 2 at https://github.com/puppetlabs/puppet-server/pull/473 The first PR didn't fix the pre-suite because I screwed up the logic while addressing review comments.", "created": "2015-03-25T22:35:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Made it through the master branch pipeline last night.", "created": "2015-03-26T10:25:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-19T17:38:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f5d435"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyywg7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_59447776_*|*_1_*:*_1_*:*_1157721_*|*_10007_*:*_1_*:*_344905807_*|*_3_*:*_3_*:*_76442087_*|*_5_*:*_1_*:*_47606796599_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_96867278"}], "description": "Windows agents are failing acceptance tests in the pre_suite phase because repositories are trying to be configured.\n\nWe simply need to skip this step for windows agents.\n\n{code}\n#<RuntimeError: No repository installation step for windows yet...>\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/dsl/install_utils.rb:1117\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_smoke-aio/LAYOUT/redhat7-64m-windows2008r2-64a/LDAP_TYPE/PLATFORM/NONE/label/beaker/acceptance/suites/pre_suite/foss/10_install_release_repos.rb:3\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_smoke-aio/LAYOUT/redhat7-64m-windows2008r2-64a/LDAP_TYPE/PLATFORM/NONE/label/beaker/acceptance/suites/pre_suite/foss/10_install_release_repos.rb:2\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_smoke-aio/LAYOUT/redhat7-64m-windows2008r2-64a/LDAP_TYPE/PLATFORM/NONE/label/beaker/acceptance/suites/pre_suite/foss/10_install_release_repos.rb:2\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/dsl/structure.rb:41\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_smoke-aio/LAYOUT/redhat7-64m-windows2008r2-64a/LDAP_TYPE/PLATFORM/NONE/label/beaker/acceptance/suites/pre_suite/foss/10_install_release_repos.rb:1\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/test_case.rb:120\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/test_case.rb:120\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/benchmark.rb:295\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/test_case.rb:117\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/test_suite.rb:286\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/test_suite.rb:283\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/test_suite.rb:283\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/test_suite.rb:325\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/cli.rb:147\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/cli.rb:89\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-7d0cccf22cc7/bin/beaker:6\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\nWarning: acceptance/suites/pre_suite/foss/10_install_release_repos.rb errored in 0.37 seconds\n{code}\n\nReproducible with [smoke test job|https://jenkins.puppetlabs.com/job/experimental_puppet-server_integration-system_smoke-aio/] parameters {{LAYOUT_AXIS=redhat7-64m-windows2008r2-64a}}, {{PACKAGE_BUILD_VERSION=2.0.0.SNAPSHOT.2015.03.19T1436}} and {{PUPPET_BUILD_VERSION=7e8ad0146f4240779cd50d307f5964c0380f16cd}}.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15785", "fixedVersions": ["SERVER 2.0.0"], "id": "15785", "issueType": "Bug", "key": "SERVER-499", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-26T10:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix pre_suite for Windows", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:8ed100be-9a13-4ed1-92d2-88ac897d6774", "body": "turned out to be a complete yak shave for multiple reasons.\nmy conclusion thus far is that the puppetdb setup integration needs to be considered in puppetserver's docs / installation process.\n\nalso, i think the ssl setup has to be re-thought: puppetdb offers the ssl-setup utility, maybe something similar should be done for puppetserver.\n\na clear, necessary setup that needs to be done after the package installation, and which says: this thing will provide a new CA, XOR: take over old certs lying around here (i.e.: maybe just fix up permissions)\n\nthe problem with such an utility is to make it idempotent ", "created": "2015-03-20T13:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:8ed100be-9a13-4ed1-92d2-88ac897d6774] your link is broken--it just points us to the stdlib module.  :)  Mind fixing it?", "created": "2015-03-23T17:24:00.000000"}, {"author": "557058:8ed100be-9a13-4ed1-92d2-88ac897d6774", "body": "*fixed* ._.", "created": "2015-03-24T05:11:00.000000"}], "components": [], "created": "2015-03-19T17:32:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c9849bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z4v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_345179767_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_91484848921"}], "description": "We have some puppet server documentation which covers the use case of configuring Puppet Server for an \"external CA\" scenario - http://docs.puppetlabs.com/puppetserver/1.0/external_ca_configuration.html.\n\n  There are a number of users, however, who are looking to configure a Puppet Server master for environments where the \"external CA\" is actually a Puppet CA - e.g., where each Puppet Server master can be one of a group of masters all configured to use a remote Puppet CA, the latter of which may happen to be a Puppet Server instance as well.  The existing \"external CA documentation\", however, is not well-suited for walking a user through how to enable this use case.  A number of IRC users have encountered issues with the \"remote Puppet CA\" configuration - e.g., getting the master into a state where it has the \"wrong\" set of certificates configured.  We should supplement the existing documentation with some documentation more oriented toward \"remote Puppet CA\" use cases.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15225", "fixedVersions": [], "id": "15225", "issueType": "Task", "key": "SERVER-498", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2018-02-14T12:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Need to create some documentation for \"remote Puppet CA\" configuration", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Version 0.5 of hiera-eyaml-gpg has been released, which contains the fix that makes it compatible with Puppet Server.", "created": "2015-03-23T17:39:00.000000"}], "components": [], "created": "2015-03-19T10:56:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c69f4ed"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3x8n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_368773783_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_28599149336"}], "description": "hiera-eyaml-gpg \\[1] is a gem that is installed on the Puppet master.  It is currently incompatible with Puppet Server because its implementation uses gpgme, another ruby library, which has C extensions and therefore does not work under JRuby. \\[2]\n\n[~accountid:623c135e1c7f6a007049e9ad] opened a PR against hiera-eyaml-gpg \\[3] in which he added support for JRuby by using ruby_gpg instead of gpgme when running under JRuby.  This PR is currently the best source of information on this topic, and interested parties should follow and/or comment on it.\n\nThere is currently a pre-release gem of hiera-eyaml-gpg which contains this change and has been reported by [~accountid:623c135e1c7f6a007049e9ad] to work under Puppet Server.  Long-term, that PR needs to be merged and a new gem of hiera-eyaml-gpg needs to be released.  At that point, it should work under Puppet Server, as long as users install the latest version.\n\n\\[1] https://github.com/sihil/hiera-eyaml-gpg\n\\[2] https://github.com/sihil/hiera-eyaml-gpg/issues/23\n\\[3] https://github.com/sihil/hiera-eyaml-gpg/pull/24", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17069", "fixedVersions": [], "id": "17069", "issueType": "Story", "key": "SERVER-497", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Done", "resolutionDate": "2016-02-17T16:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "hiera-eyaml-gpg compatibility", "timeSpent": "PT0S", "updated": "2016-02-26T11:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-03-18T15:27:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45d50499"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxhz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1725766554_*|*_5_*:*_1_*:*_46062576865_*|*_6_*:*_1_*:*_0"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%222.0.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16099", "fixedVersions": [], "id": "16099", "issueType": "Sub-task", "key": "SERVER-496", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-07T14:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Version 2.0.0 added to Dujour", "created": "2015-04-15T10:43:00.000000"}], "components": [], "created": "2015-03-18T15:26:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a0beb9b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxhr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1725524906_*|*_3_*:*_1_*:*_106455_*|*_5_*:*_1_*:*_45386159140_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_676568110"}], "description": "Update dujour to notify users to use 2.0.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15784", "fixedVersions": [], "id": "15784", "issueType": "Sub-task", "key": "SERVER-495", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-15T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 2.0.0", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] sent out the announcements at 11:40 today.  Marking as done.", "created": "2015-04-15T14:51:00.000000"}], "components": [], "created": "2015-03-18T15:26:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f71249b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxhj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2403805354_*|*_5_*:*_1_*:*_45371297979_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_13277863"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15625", "fixedVersions": [], "id": "15625", "issueType": "Sub-task", "key": "SERVER-494", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-15T14:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:d9fe472a-950d-429a-b103-3d6c896a6529] Here's another documentation ticket we have as part of the \"release tasks\" for the puppetserver 2.0.0 release. Could you please advise on how we should handle this ahead of the 2.0.0 release scheduled for this Wednesday the 15th of April?\n\nThis similar to the SERVER-487 one...\n\nThanks!\n-Jeff", "created": "2015-04-09T14:23:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Docs have been pushed.  [~accountid:63d40628f6e1b543161789a7] and I manually smoke tested portions of them this morning, particularly the agent upgrade from 3.x to 4.x and the puppetserver upgrade from 1.x to 2.x.", "created": "2015-04-15T14:49:00.000000"}], "components": [], "created": "2015-03-18T15:26:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fe4fec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxhb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1896972663_*|*_3_*:*_1_*:*_15194883_*|*_5_*:*_1_*:*_45371430255_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_504794396"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15222", "fixedVersions": [], "id": "15222", "issueType": "Sub-task", "key": "SERVER-493", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-15T14:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "server 2.0 packages staged and ready for the DNS cutover tomorrow morning at 10am.", "created": "2015-04-14T15:38:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "the dns cutover was successful", "created": "2015-04-15T11:07:00.000000"}], "components": [], "created": "2015-03-18T15:26:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6194df1d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxh3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1725727004_*|*_3_*:*_1_*:*_1409161_*|*_5_*:*_1_*:*_45384145558_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_676575028"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14929", "fixedVersions": [], "id": "14929", "issueType": "Sub-task", "key": "SERVER-492", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-04-15T11:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-03-18T15:25:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1171c60e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxgv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1726356927_*|*_5_*:*_1_*:*_45384151464_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_7456442_*|*_10006_*:*_1_*:*_669910576"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17582", "fixedVersions": [], "id": "17582", "issueType": "Sub-task", "key": "SERVER-491", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-04-15T11:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "I'm not sure when this happened, but I'm assuming [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] got the go-ahead before packages were shipped to burji3 prior to the dns cutover", "created": "2015-04-15T11:09:00.000000"}], "components": [], "created": "2015-03-18T15:25:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7207e8b9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxgn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2402365459_*|*_3_*:*_1_*:*_1520893_*|*_5_*:*_1_*:*_45384008624_*|*_6_*:*_1_*:*_0"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17288", "fixedVersions": [], "id": "17288", "issueType": "Sub-task", "key": "SERVER-490", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-04-15T11:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Packages smoke tested heavily, both with automated CI tests and manually on RHEL-7 systems using the VM pooler.", "created": "2015-04-09T14:24:00.000000"}], "components": [], "created": "2015-03-18T15:24:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78a412ab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxgf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1897166307_*|*_5_*:*_1_*:*_45891318941_*|*_6_*:*_1_*:*_0"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17068", "fixedVersions": [], "id": "17068", "issueType": "Sub-task", "key": "SERVER-489", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-09T14:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "2.0.0 SHA for tag is 612d532124560881e63aa35a0f56b50a67f06e82", "created": "2015-04-07T17:00:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Tag is staged locally, and ready to be pushed out.\n\n{code}\n[141] Melissa@melissa:puppet-server:(master)$ git show puppet-server-2.0.0\ntag puppet-server-2.0.0\nTagger: Melissa Stone <melissa@puppetlabs.com>\nDate:   Tue Apr 14 10:29:19 2015 -0700\n\npuppet-server-2.0.0\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\nComment: GPGTools - http://gpgtools.org\n\niQIcBAABCgAGBQJVLU5vAAoJEBBUt6JL1uww45oP/3tnTvAcfwprWDUqza4Dkxmd\nF1qPEM4egBK04bi4+Fmdr9blRdbMUgBGsTsW5NEKtyDK2KMR1LH6Uf60i/2mEj6m\nuwfY/DQoQkTNWx3NnoJIYW5JhpVcIrWe38V7imHZBiqmGKLwdJ1Y1zmi2sLNaChO\nkuUSO6rKF6jW9OZCzn2ySYPMjOaXtVLcDNr+t8Hv+41FX05EOfctat+THqlRtZiA\nK5WeXY4NsSBtQ9XrYV5mA0rIaiGl28OjHTNIw34Hb0Ibo26euVt8MS97qryLDwc6\nP6N81CuJQC9FIeC+rc6spTdGa0JYKWwwjd13P1ntN6z+8eYmAzlKq/eM5gHXJWbw\nYSUFFWpYWyWsBpOHPE4Qc+6P5EcWV+6HOH2233M/wz1RtQDlRe7s8J+FlQ1D4M5r\njsZPrvd7xI5UrxpeQrNYTiCKe2tCKVspWUcdh0eSv0Al4HdEOD+mLAy6Zhg8Nxl2\nYY908DLnfmhR+2niSmTbt8CgNSEdD/hX/7CM21mmw0/c8l8FgLUrl9B2Md72M2kl\n5wcEK54M9mFXL8XQetIkcVBhPZ/V9xK9oVhGTVKzyUuyw8yXATTJ3g5z5fXlSBxf\n2werNumvJSfhooPhEilWcwBMTQASbdpeVoMTPWjZNgCAOMeY+T+CarB6miNj0lzd\n7Qf42ZkDSnN7KqlAnKy+\n=HriE\n-----END PGP SIGNATURE-----\n\ncommit 612d532124560881e63aa35a0f56b50a67f06e82\nAuthor: Jeff McCune <jeff@puppetlabs.com>\nDate:   Tue Mar 10 17:32:58 2015 -0700\n\n    (SERVER-484) Update version to 2.0.0\n\n    This commit bumps the version to the 2.0.0 identifier.\n\ndiff --git a/project.clj b/project.clj\nindex f1af343..fe233f8 100644\n--- a/project.clj\n+++ b/project.clj\n@@ -1,7 +1,7 @@\n (def tk-version \"1.0.1\")\n (def tk-jetty-version \"1.1.1\")\n (def ks-version \"1.0.0\")\n-(def ps-version \"2.0.0-SNAPSHOT\")\n+(def ps-version \"2.0.0\")\n\n (defn deploy-info\n   [url]\n\n{code}", "created": "2015-04-14T11:30:00.000000"}], "components": [], "created": "2015-03-18T15:24:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@458ac14d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxg7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1726392920_*|*_5_*:*_1_*:*_45469171667_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_7453026_*|*_10006_*:*_1_*:*_584925323"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:623c12b6ee1b5a0070293582] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16607", "fixedVersions": [], "id": "16607", "issueType": "Sub-task", "key": "SERVER-488", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-04-14T11:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Release notes merged into master as 239776a", "created": "2015-04-15T10:33:00.000000"}], "components": [], "created": "2015-03-18T15:24:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d7986d3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxfz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1897043194_*|*_5_*:*_1_*:*_45386764659_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_504720504"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16374", "fixedVersions": [], "id": "16374", "issueType": "Sub-task", "key": "SERVER-487", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-15T10:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] I'm not able to work on this ticket because I'm not a project admin for SERVER.  When I try and get there, I get \"You cannot edit the configuration of this project\"\n\nCould you please make me a project administrator for SERVER so I can work on this ticket?\n\nhttps://jira.puppetlabs.com/plugins/servlet/project-config/SERVER/summary\n\nThanks!\n-Jeff", "created": "2015-04-09T14:19:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "[~accountid:623c12b6ee1b5a0070293582] Should be resolved.", "created": "2015-04-09T14:33:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Re these misc items:\n\n * I'm not going to mark it released here since that's blocked on docs, blogs, etc. We can always do that retroactively so no rush there.\n * There are both SERVER 2.0.1 and 2.1.0 versions.\n * Fixes for Server 2.0.0: https://puppet.atlassian.net/issues/?filter=14016\n * Introduced in Server 2.0.0: https://puppet.atlassian.net/issues/?filter=14017", "created": "2015-04-14T11:02:00.000000"}], "components": [], "created": "2015-03-18T15:23:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67c330ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxfr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1896948600_*|*_3_*:*_1_*:*_405083324_*|*_5_*:*_1_*:*_45471412136_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_15094758"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16098", "fixedVersions": [], "id": "16098", "issueType": "Sub-task", "key": "SERVER-486", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-14T11:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Puppet Server does not merge master down to stable.  See the [README_BRANCHING|https://github.com/puppetlabs/puppet-server/blob/5ad6dd7bffe31ab4fc4efad7aa071830def81f6a/README_BRANCHING.md] for more information relevant at the time of this writing.  See the [master README_BRANCHING|https://github.com/puppetlabs/puppet-server/blob/master/README_BRANCHING.md] for current information.\n\nClosing.", "created": "2015-04-07T14:43:00.000000"}], "components": [], "created": "2015-03-18T15:23:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@438b8e6b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxfj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1725514348_*|*_3_*:*_1_*:*_105679_*|*_5_*:*_1_*:*_46554662897_*|*_6_*:*_1_*:*_0"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15782", "fixedVersions": [], "id": "15782", "issueType": "Sub-task", "key": "SERVER-485", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Won't Fix", "resolutionDate": "2015-04-07T14:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-09-27T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "PR for the version bump dance: https://github.com/puppetlabs/puppet-server/pull/488", "created": "2015-04-07T14:56:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Kicked off the build of 2.0.0 GA\n\nBuild graph at: https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_init-manual_master/7/BuildGraph/", "created": "2015-04-07T16:59:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Passed CI, version 2.0.0 has been updated in source.", "created": "2015-04-09T11:51:00.000000"}], "components": [], "created": "2015-03-18T15:23:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c2e37ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxfb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_154596290_*|*_1_*:*_1_*:*_1726046693_*|*_10007_*:*_1_*:*_7122614_*|*_3_*:*_1_*:*_331646_*|*_5_*:*_1_*:*_45899920783_*|*_6_*:*_1_*:*_0"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15621", "fixedVersions": [], "id": "15621", "issueType": "Sub-task", "key": "SERVER-484", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-04-09T11:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "{code}\n++ Issues committed in this release\n  ** MAINT\n      Update branching docs to account for 2.1\n      Update version to 1.0.8 per email discussion\n      Fix dujour issues\n      Brevity is beautiful\n      Update branching README to reflect plans re: 1.0.4\n      Move Puppet submodule to head of master\n      Throw IllegalStateException over Exception\n      Fix paths for AIO based on PR feedback\n      Fix broken link in documentation\n      Fix broken link in documentation\n      Merge SERVER-363 changes from stable to master\n      Bump version of ssl-utils\n      Bump to the new version of ssl-utils\n      Bump version of facter in submodule\n      Bump Ruby puppet version\n      Bump Beaker version fo acceptance tests\n      Bump Beaker version fo acceptance tests\n      Add JARS_NO_REQUIRE=true to gem subcommand (for the Nteenth time)\n      be more tolerant of ssl exceptions in tests\n      Fix broken config service test\n      Restore acceptence test settings\n      Upgrade to Clojure 1.6\n      Upgrade clj-http-client dependency to 0.4.1\n      Upgrade trapperkeeper-webserver-jetty9 dependency to 1.1.1\n      Update version to 1.0.3-SNAPSHOT for development\n      Add sqa-utils to Gemfile.\n      Upgrade to jruby 1.7.18\n      Fix intermittent gem install failures.\n      Update TK and Kitchensink dependencies\n  -- SERVER-100\n      Remove calls to Puppet::Util::Instrumentation\n  -- SERVER-101\n      Changed jvm-ca references to ssl-utils\n      Changed jvm-ca references to jvm-ssl-utils\n  -- SERVER-102\n      Remove PUPPET_LOADED from Rakefile\n  -- SERVER-116\n      Reuse client instances\n  -- SERVER-155\n      Eliminate duplicated code\n  -- SERVER-206\n      Add https after http test\n      Always configure SSL context\n      Cleanup based on PR comments\n      Add test for master termination\n      Add and call master terminate method\n  -- SERVER-211\n      Update JRuby to 1.7.17 and fix String::crypt\n  -- SERVER-220\n      Include Jetty dependency in uberjar\n  -- SERVER-246\n      Improve Error handling after timeout\n      Add :borrow-timeout config option\n  -- SERVER-247\n      Add jira-ruby to Gemfile\n  -- SERVER-253\n      Documentation for subcommands\n  -- SERVER-259\n      Improve validate-memory-requirements! error message\n  -- SERVER-260\n      Fix lookup of resources from catalog in test\n      Update puppet submodule to Puppet 4\n      Update facter submodule to 2.4.0\n  ** SERVER-262\n      Fix `puppetserver gem env` subcommand\n  -- SERVER-268\n      Improve Acceptance README\n  -- SERVER-272\n      Add not found handler for master and ca routes\n      Add version to CA and remove environment reference\n      Update master routes to use v3 and url prefix\n  -- SERVER-29\n      Fix jruby interpreter test.\n      Set JARS_NO_REQUIRE='true' on scripting containers.\n  -- SERVER-294\n      upgrade clj-http-client dependency\n      restore test to match agent behavior\n      delete Content-Type hack\n      update test case to match agent\n  -- SERVER-296\n      Add more detail about branching strategy\n      Add documentation about branching strategy\n  -- SERVER-300\n      Add 404 with URL prefix tests\n      Address PR comments\n      Craft special 404 error message\n  -- SERVER-303\n      Address further PR feedbaack\n      Fix version-check-test\n      Clean-up version check test\n      Add version check test\n      Remove version-check service\n  -- SERVER-319\n      Add sample request logging config for devs\n      Apache-style request logging\n  -- SERVER-326\n      Add /v3/environments route\n  -- SERVER-331\n      Fold os-settings back into jruby-puppet\n  -- SERVER-332\n      Allow all TLS algorithms in the dev lein profile\n      Allow all TLS algorithms in the dev lein profile\n  -- SERVER-334\n      Generate upgrade message once\n  -- SERVER-338\n      Use lein-ezbake 0.1.2 to resolve netstat issue\n  -- SERVER-339\n      Override beaker default AIO paths for centos7\n      Make it possible to run beaker from master\n      Depend on puppet-agent AIO dev version\n  -- SERVER-354\n      fix initialization of Puppet logging\n  -- SERVER-356\n      Fix foreground output\n  -- SERVER-357\n      Change to Puppet Server Layout vardir\n  -- SERVER-363\n      EZBake 0.2.3 support\n  -- SERVER-369\n      Update the run directory\n      Update log file locations to match AIO spec\n      Work around beaker problems with AIO paths\n  -- SERVER-383\n      Add spec test for new OIDs\n      Extend trusted facts test\n      Add more trusted fact OIDs\n  -- SERVER-386\n      Depend on puppet-agent AIO dev version\n  -- SERVER-387\n      Change puppetserver conf.d config directory\n  -- SERVER-389\n      Increase JRuby pool default-borrow-timeout\n  -- SERVER-399\n      Upgrade to latest puppet-agent\n  -- SERVER-409\n      Update documentation\n      Plumb top-level directories into JRuby\n  -- SERVER-410\n      Always cache features in puppet server\n  -- SERVER-414\n      Manage rundir during service startup\n  -- SERVER-415\n      Update PUPPET_BUILD_VERSION for RE-4141\n      Update PUPPET_BUILD_VERSION\n  -- SERVER-419\n      Add puppetserver-confdir to beaker options\n  -- SERVER-435\n      Pin beaker to 7d0cccf\n  -- SERVER-438\n      Update version to 2.0.0-rc3\n      Update version to 2.0.0-rc2\n  -- SERVER-450\n      Move clj-semver to dev profile\n      Add proper semver parsing to unit tests\n  -- SERVER-454\n      Remove exception handler in config service test\n  -- SERVER-455\n      Update spec to expect puppet 4.0.0-rc1\n  -- SERVER-476\n      Bump puppet agent version to be EL-7 compatible\n  -- SERVER-499\n      Fix inverted confinement for 10_install_release_repos\n      Fix puppet command not found error on windows\n      Add ruby_command helper method for windows\n      Install Puppet MSI\n      Don't install dev repos on windows\n      Skip repository configuration for windows\n  ** SERVER-506\n      Set repo-target to PC1 for 2.0 release\n      Bump ezbake version to 0.3.2\n  -- SERVER-510\n      Copy 070_InstallCACerts from puppet\n  -- SERVER-511\n      Update version to 2.0.0-rc4\n  -- SERVER-520\n      Remove hyphen from puppet-server in project.clj\n  -- SERVER-533\n      Update branching document for 2.1\n  -- SERVER-85\n      Sync CA CRL to Host CRL at startup\n  -- SERVER-88\n      improve exception handling\n      catch errors before they get to Jetty\n  ** DOCS\n      Copyedit section in configuration.markdown about enabling SSLv3\n  ** HACK\n      Use beaker from git 32e123e\n  ** MAINT\n      Update puppet-agent dependency to 1166ad6\n      Fix bundler Illformed requirement error\n      Pin to beaker version 8909e35\n      Update acceptance helper for new beaker layout\n      Return to 2.0.0-SNAPSHOT\n      Update to ezbake 0.3.1\n      Confine windows specific pre-suite steps\n      Use Beaker 2.7.1 from rubygems\n      Use Beaker 2.7.1 from git\n      Add redhat7-64m-windows2008r2-64a host config\n      Return to 2.0.0-SNAPSHOT\n      Return to 2.0.0-SNAPSHOT\n      Use lein-ezbake 0.3.0 instead of 0.3.0-SNAPSHOT\n      Check service start right out of the package\n      Remove puppetpath to address PR comment\n      Clear all AIO hacks and workarounds\n      Refactor PuppetConfig spec tests\n      make 'lein test' include integration tests\n      Augment the PATH to the facter executable\n      Add more stuff to .gitignore\n      Remove Gemfile.lock\n      Remove duplicate rake in Gemfile\n      fix travis script\n      Update puppet submodule & fix tests\n      Update puppet submodule\n      Update packaging & acceptance tests to create puppet user\n      Update webrouting configs for master service\n      Remove unused require from puppet-server-lib\n      Add description to spec rake task\n      Add detailed docs on GEM_HOME and JRuby REPL's\n      bump version number to 2.0.0-SNAPSHOT\n      address bit-rot in dev/user_repl.clj\n      fixup botched merge conflict resolution\n      delete a couple unused functions\n  -- SERVER-358\n      Update permissions on ssldir for the puppet user\n  ** UNMARKED\n      Address PR Feedback\n      Revert Revert (SERVER-415) Update PUPPET_BUILD_VERSION for RE-4141\n      Revert \"(SERVER-415) Update PUPPET_BUILD_VERSION for RE-4141\"\n      Update to lein-ezbake 0.3.0-SNAPSHOT\n      Revert \"(SERVER-101) Changed jvm-ca references to ssl-utils\"\n      Revert \"(MAINT) Bump to the new version of ssl-utils\"\n      Revert \"(maint) Update puppet submodule\"\n      Create correct manifestdir in preinstall\n      Remove puppet-agent version constraint in ezbake.conf\n      Change puppet-agent version to 0.2.1\n      Use options['puppetbindir'] rather than hardcoding in acceptance tests\n      Remove path options from hostconfig\n      Add TODO comments about os-settings.conf and ruby-load-path\n      Add TODO comment to acceptance tests\n      Add TODO comment to postinst\n      Update Gemfile and Gemfile.lock for new beaker and sqa-utils\n      Update options for centos 6 jenkins test\n      Add bindir to path when running puppet\n      Create puppet user\n      Add JARS_NO_REQUIRE true to ruby and irb subcommands\n      Install puppet-agent package, not puppet\n      Add gems needed for running puppet acceptance tests\n      Update Gemfile\n      Change ruby libdir in os-settings for acceptance tests\n      Update configs for packaging\n      A bunch of hacks in the postinstall to get packages working\n      Change puppet dependency to puppet-agent 0.2.0\n      lein-release plugin: bumped version from 1.0.3 to 1.0.4-SNAPSHOT for next development cycle\n      lein-release plugin: preparing 1.0.3 release\n      Revert \"(SERVER-262) Fix `puppetserver gem env` subcommand\"\n      Revert \"Merge branch 'stable_s252_gem_env' into stable\"\n      Revert \"(SERVER-262) Remove JARS_NO_REQUIRE failing test\"\n      (EZ-15) Add lein-ezbake configuration.\n      (PUP-3851) Remove v2.0 endpoints\n      DOCS: Fixed list typo (missing return)\n      DOCS: Added listing for subcommands page in index\n      DOCS: Added note that version 1.0.1 was skipped.\n      DOCS: Release note typo fix.\n      DOCS: Release notes 1.0.2\n      DOCS: Update to logback change note in configuration.markdown\n      DOCS: configuration.markdown, added note that restart isn't needed for logback changes\n      fix typo in docstring\n\n++ Issues without an issue reference\n    a7cde1b: Address PR Feedback\n    86fbeca: Revert Revert (SERVER-415) Update PUPPET_BUILD_VERSION for RE-4141\n    f8c7e2f: Revert \"(SERVER-415) Update PUPPET_BUILD_VERSION for RE-4141\"\n    742a8ca: Update to lein-ezbake 0.3.0-SNAPSHOT\n    dae12a0: Revert \"(SERVER-101) Changed jvm-ca references to ssl-utils\"\n    b19ee86: Revert \"(MAINT) Bump to the new version of ssl-utils\"\n    9879822: Revert \"(maint) Update puppet submodule\"\n    1e9ee50: Create correct manifestdir in preinstall\n    4f3193f: Remove puppet-agent version constraint in ezbake.conf\n    533073b: Change puppet-agent version to 0.2.1\n    49e35ea: Use options['puppetbindir'] rather than hardcoding in acceptance tests\n    b099bce: Remove path options from hostconfig\n    87233f7: Add TODO comments about os-settings.conf and ruby-load-path\n    68d4c23: Add TODO comment to acceptance tests\n    95e712a: Add TODO comment to postinst\n    434a314: Update Gemfile and Gemfile.lock for new beaker and sqa-utils\n    38e8471: Update options for centos 6 jenkins test\n    65fae43: Add bindir to path when running puppet\n    ea3cfb9: Create puppet user\n    7f8553e: Add JARS_NO_REQUIRE true to ruby and irb subcommands\n    a4b6ad3: Install puppet-agent package, not puppet\n    08a459a: Add gems needed for running puppet acceptance tests\n    51e6a27: Update Gemfile\n    ac073bf: Change ruby libdir in os-settings for acceptance tests\n    490c653: Update configs for packaging\n    24b0610: A bunch of hacks in the postinstall to get packages working\n    6d422f7: Change puppet dependency to puppet-agent 0.2.0\n    5e1b7f0: lein-release plugin: bumped version from 1.0.3 to 1.0.4-SNAPSHOT for next development cycle\n    80e9df5: lein-release plugin: preparing 1.0.3 release\n    f5e6f77: Revert \"(SERVER-262) Fix `puppetserver gem env` subcommand\"\n    b2f83a7: Revert \"Merge branch 'stable_s252_gem_env' into stable\"\n    44314c0: Revert \"(SERVER-262) Remove JARS_NO_REQUIRE failing test\"\n    1efebe4: (EZ-15) Add lein-ezbake configuration.\n    d3bf38d: (PUP-3851) Remove v2.0 endpoints\n    8cf02d4: DOCS: Fixed list typo (missing return)\n    9a47a75: DOCS: Added listing for subcommands page in index\n    d2b608c: DOCS: Added note that version 1.0.1 was skipped.\n    e07b599: DOCS: Release note typo fix.\n    b78f13a: DOCS: Release notes 1.0.2\n    f95bae3: DOCS: Update to logback change note in configuration.markdown\n    cbe4fbe: DOCS: configuration.markdown, added note that restart isn't needed for logback changes\n    c8a255d: fix typo in docstring\n\n++ Issues in Git that are not in Jira\n    MAINT\n      9915e7f: Update branching docs to account for 2.1\n      93ff361: Update version to 1.0.8 per email discussion\n      203d976: Fix dujour issues\n      715f2f9: Brevity is beautiful\n      1315435: Update branching README to reflect plans re: 1.0.4\n      824f92c: Move Puppet submodule to head of master\n      c4e269b: Throw IllegalStateException over Exception\n      206eb64: Fix paths for AIO based on PR feedback\n      255c7d8: Fix broken link in documentation\n      31e3d9d: Fix broken link in documentation\n      bea93a8: Merge SERVER-363 changes from stable to master\n      aef0f45: Bump version of ssl-utils\n      25718a2: Bump to the new version of ssl-utils\n      2a7bd24: Bump version of facter in submodule\n      84f2f33: Bump Ruby puppet version\n      e34af87: Bump Beaker version fo acceptance tests\n      b4db721: Bump Beaker version fo acceptance tests\n      dafbe4a: Add JARS_NO_REQUIRE=true to gem subcommand (for the Nteenth time)\n      66e526e: be more tolerant of ssl exceptions in tests\n      f516dd9: Fix broken config service test\n      1f62c56: Restore acceptence test settings\n      3c6e116: Upgrade to Clojure 1.6\n      35e237f: Upgrade clj-http-client dependency to 0.4.1\n      f1d4c82: Upgrade trapperkeeper-webserver-jetty9 dependency to 1.1.1\n      d643460: Update version to 1.0.3-SNAPSHOT for development\n      626e0cf: Add sqa-utils to Gemfile.\n      3fe488b: Upgrade to jruby 1.7.18\n      40f3211: Fix intermittent gem install failures.\n      da9534c: Update TK and Kitchensink dependencies\n    SERVER-262\n      44abb39: Fix `puppetserver gem env` subcommand\n    SERVER-506\n      c382892: Set repo-target to PC1 for 2.0 release\n      ed74b06: Bump ezbake version to 0.3.2\n    docs\n      414911e: Copyedit section in configuration.markdown about enabling SSLv3\n    hack\n      52989ac: Use beaker from git 32e123e\n\n++ Issues in Jira not found in Git\n    SERVER-524: (Fixed) Set repo-target to PC1 for 2.0 release\n    SERVER-479: (Duplicate) Functional Review\n    SERVER-457: (Fixed) Get dujour working with Puppet Server 2.0.0 RC\n    SERVER-412: (Done) Get Pup4/Pup-Svr2 acceptance tests passing for OSes beyond EL-7 \n    SERVER-407: (Done) Use a released beaker version \n    SERVER-371: (Fixed) Change gem_home to /opt/puppetlabs/puppet/cache/jruby-gems\n    SERVER-370: (Duplicate) Change ruby-load-path to /opt/puppetlabs/puppet/lib/ruby/vendor_ruby\n    SERVER-359: (Won't Fix) project.clj no longer compatible with lein release task\n    SERVER-358: (Fixed) Moving 'puppet' user creation to puppet-server packaging\n    SERVER-352: (Unresolved) Consider removing puppet-server's dependency on puppet-agent\n    SERVER-348: (Fixed) Move confdir to /etc/puppetlabs/puppet\n    SERVER-347: (Fixed) Specify codedir similar to confdir and vardir\n    SERVER-337: (Fixed) puppet-server CA service uses wrong $ssldir\n    SERVER-336: (Duplicate) Puppetserver on EL7 or Ubuntu 14.04 does not always work after a reboot\n    SERVER-333: (Done) Cleanup hacks from packaging post install\n    SERVER-321: (Fixed) make sure Puppet Server 2.0 builds are excluding the JRuby BC jar\n    SERVER-309: (Done) memory testing on a build that contains jruby 1.7.18\n    SERVER-299: (Fixed) 404 error message for webrick/rack master about Puppet 3 agents and url changes\n    SERVER-271: (Unresolved) configuration for URL path prefixes\n    SERVER-149: (Unresolved) Update URLs for Puppet4 compatibility\n    SERVER-148: (Duplicate) Craft 404 error message that includes verbiage about Puppet 4 URL changes\n    SERVER-119: (Unresolved) Not signing trusted facts properly according to RFC\n    SERVER-66: (Fixed) separate dujour version check service from puppetserver\n{code}", "created": "2015-04-07T14:41:00.000000"}], "components": [], "created": "2015-03-18T15:22:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23764615"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1724564671_*|*_3_*:*_1_*:*_968365_*|*_5_*:*_1_*:*_46063069255_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release) There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15219", "fixedVersions": [], "id": "15219", "issueType": "Sub-task", "key": "SERVER-483", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-07T14:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "{code}\n++ Issues committed in this release\n  ** MAINT\n      Update branching docs to account for 2.1\n      Update version to 1.0.8 per email discussion\n      Fix dujour issues\n      Brevity is beautiful\n      Update branching README to reflect plans re: 1.0.4\n      Move Puppet submodule to head of master\n      Throw IllegalStateException over Exception\n      Fix paths for AIO based on PR feedback\n      Fix broken link in documentation\n      Fix broken link in documentation\n      Merge SERVER-363 changes from stable to master\n      Bump version of ssl-utils\n      Bump to the new version of ssl-utils\n      Bump version of facter in submodule\n      Bump Ruby puppet version\n      Bump Beaker version fo acceptance tests\n      Bump Beaker version fo acceptance tests\n      Add JARS_NO_REQUIRE=true to gem subcommand (for the Nteenth time)\n      be more tolerant of ssl exceptions in tests\n      Fix broken config service test\n      Restore acceptence test settings\n      Upgrade to Clojure 1.6\n      Upgrade clj-http-client dependency to 0.4.1\n      Upgrade trapperkeeper-webserver-jetty9 dependency to 1.1.1\n      Update version to 1.0.3-SNAPSHOT for development\n      Add sqa-utils to Gemfile.\n      Upgrade to jruby 1.7.18\n      Fix intermittent gem install failures.\n      Update TK and Kitchensink dependencies\n  -- SERVER-100\n      Remove calls to Puppet::Util::Instrumentation\n  -- SERVER-101\n      Changed jvm-ca references to ssl-utils\n      Changed jvm-ca references to jvm-ssl-utils\n  -- SERVER-102\n      Remove PUPPET_LOADED from Rakefile\n  -- SERVER-116\n      Reuse client instances\n  -- SERVER-155\n      Eliminate duplicated code\n  -- SERVER-206\n      Add https after http test\n      Always configure SSL context\n      Cleanup based on PR comments\n      Add test for master termination\n      Add and call master terminate method\n  -- SERVER-211\n      Update JRuby to 1.7.17 and fix String::crypt\n  -- SERVER-220\n      Include Jetty dependency in uberjar\n  -- SERVER-246\n      Improve Error handling after timeout\n      Add :borrow-timeout config option\n  -- SERVER-247\n      Add jira-ruby to Gemfile\n  -- SERVER-253\n      Documentation for subcommands\n  -- SERVER-259\n      Improve validate-memory-requirements! error message\n  -- SERVER-260\n      Fix lookup of resources from catalog in test\n      Update puppet submodule to Puppet 4\n      Update facter submodule to 2.4.0\n  ** SERVER-262\n      Fix `puppetserver gem env` subcommand\n  -- SERVER-268\n      Improve Acceptance README\n  -- SERVER-272\n      Add not found handler for master and ca routes\n      Add version to CA and remove environment reference\n      Update master routes to use v3 and url prefix\n  -- SERVER-29\n      Fix jruby interpreter test.\n      Set JARS_NO_REQUIRE='true' on scripting containers.\n  -- SERVER-294\n      upgrade clj-http-client dependency\n      restore test to match agent behavior\n      delete Content-Type hack\n      update test case to match agent\n  -- SERVER-296\n      Add more detail about branching strategy\n      Add documentation about branching strategy\n  -- SERVER-300\n      Add 404 with URL prefix tests\n      Address PR comments\n      Craft special 404 error message\n  -- SERVER-303\n      Address further PR feedbaack\n      Fix version-check-test\n      Clean-up version check test\n      Add version check test\n      Remove version-check service\n  -- SERVER-319\n      Add sample request logging config for devs\n      Apache-style request logging\n  -- SERVER-326\n      Add /v3/environments route\n  -- SERVER-331\n      Fold os-settings back into jruby-puppet\n  -- SERVER-332\n      Allow all TLS algorithms in the dev lein profile\n      Allow all TLS algorithms in the dev lein profile\n  -- SERVER-334\n      Generate upgrade message once\n  -- SERVER-338\n      Use lein-ezbake 0.1.2 to resolve netstat issue\n  -- SERVER-339\n      Override beaker default AIO paths for centos7\n      Make it possible to run beaker from master\n      Depend on puppet-agent AIO dev version\n  -- SERVER-354\n      fix initialization of Puppet logging\n  -- SERVER-356\n      Fix foreground output\n  -- SERVER-357\n      Change to Puppet Server Layout vardir\n  -- SERVER-363\n      EZBake 0.2.3 support\n  -- SERVER-369\n      Update the run directory\n      Update log file locations to match AIO spec\n      Work around beaker problems with AIO paths\n  -- SERVER-383\n      Add spec test for new OIDs\n      Extend trusted facts test\n      Add more trusted fact OIDs\n  -- SERVER-386\n      Depend on puppet-agent AIO dev version\n  -- SERVER-387\n      Change puppetserver conf.d config directory\n  -- SERVER-389\n      Increase JRuby pool default-borrow-timeout\n  -- SERVER-399\n      Upgrade to latest puppet-agent\n  -- SERVER-409\n      Update documentation\n      Plumb top-level directories into JRuby\n  -- SERVER-410\n      Always cache features in puppet server\n  -- SERVER-414\n      Manage rundir during service startup\n  -- SERVER-415\n      Update PUPPET_BUILD_VERSION for RE-4141\n      Update PUPPET_BUILD_VERSION\n  -- SERVER-419\n      Add puppetserver-confdir to beaker options\n  -- SERVER-435\n      Pin beaker to 7d0cccf\n  -- SERVER-438\n      Update version to 2.0.0-rc3\n      Update version to 2.0.0-rc2\n  -- SERVER-450\n      Move clj-semver to dev profile\n      Add proper semver parsing to unit tests\n  -- SERVER-454\n      Remove exception handler in config service test\n  -- SERVER-455\n      Update spec to expect puppet 4.0.0-rc1\n  -- SERVER-476\n      Bump puppet agent version to be EL-7 compatible\n  -- SERVER-499\n      Fix inverted confinement for 10_install_release_repos\n      Fix puppet command not found error on windows\n      Add ruby_command helper method for windows\n      Install Puppet MSI\n      Don't install dev repos on windows\n      Skip repository configuration for windows\n  ** SERVER-506\n      Set repo-target to PC1 for 2.0 release\n      Bump ezbake version to 0.3.2\n  -- SERVER-510\n      Copy 070_InstallCACerts from puppet\n  -- SERVER-511\n      Update version to 2.0.0-rc4\n  -- SERVER-520\n      Remove hyphen from puppet-server in project.clj\n  -- SERVER-533\n      Update branching document for 2.1\n  -- SERVER-85\n      Sync CA CRL to Host CRL at startup\n  -- SERVER-88\n      improve exception handling\n      catch errors before they get to Jetty\n  ** DOCS\n      Copyedit section in configuration.markdown about enabling SSLv3\n  ** HACK\n      Use beaker from git 32e123e\n  ** MAINT\n      Update puppet-agent dependency to 1166ad6\n      Fix bundler Illformed requirement error\n      Pin to beaker version 8909e35\n      Update acceptance helper for new beaker layout\n      Return to 2.0.0-SNAPSHOT\n      Update to ezbake 0.3.1\n      Confine windows specific pre-suite steps\n      Use Beaker 2.7.1 from rubygems\n      Use Beaker 2.7.1 from git\n      Add redhat7-64m-windows2008r2-64a host config\n      Return to 2.0.0-SNAPSHOT\n      Return to 2.0.0-SNAPSHOT\n      Use lein-ezbake 0.3.0 instead of 0.3.0-SNAPSHOT\n      Check service start right out of the package\n      Remove puppetpath to address PR comment\n      Clear all AIO hacks and workarounds\n      Refactor PuppetConfig spec tests\n      make 'lein test' include integration tests\n      Augment the PATH to the facter executable\n      Add more stuff to .gitignore\n      Remove Gemfile.lock\n      Remove duplicate rake in Gemfile\n      fix travis script\n      Update puppet submodule & fix tests\n      Update puppet submodule\n      Update packaging & acceptance tests to create puppet user\n      Update webrouting configs for master service\n      Remove unused require from puppet-server-lib\n      Add description to spec rake task\n      Add detailed docs on GEM_HOME and JRuby REPL's\n      bump version number to 2.0.0-SNAPSHOT\n      address bit-rot in dev/user_repl.clj\n      fixup botched merge conflict resolution\n      delete a couple unused functions\n  -- SERVER-358\n      Update permissions on ssldir for the puppet user\n  ** UNMARKED\n      Address PR Feedback\n      Revert Revert (SERVER-415) Update PUPPET_BUILD_VERSION for RE-4141\n      Revert \"(SERVER-415) Update PUPPET_BUILD_VERSION for RE-4141\"\n      Update to lein-ezbake 0.3.0-SNAPSHOT\n      Revert \"(SERVER-101) Changed jvm-ca references to ssl-utils\"\n      Revert \"(MAINT) Bump to the new version of ssl-utils\"\n      Revert \"(maint) Update puppet submodule\"\n      Create correct manifestdir in preinstall\n      Remove puppet-agent version constraint in ezbake.conf\n      Change puppet-agent version to 0.2.1\n      Use options['puppetbindir'] rather than hardcoding in acceptance tests\n      Remove path options from hostconfig\n      Add TODO comments about os-settings.conf and ruby-load-path\n      Add TODO comment to acceptance tests\n      Add TODO comment to postinst\n      Update Gemfile and Gemfile.lock for new beaker and sqa-utils\n      Update options for centos 6 jenkins test\n      Add bindir to path when running puppet\n      Create puppet user\n      Add JARS_NO_REQUIRE true to ruby and irb subcommands\n      Install puppet-agent package, not puppet\n      Add gems needed for running puppet acceptance tests\n      Update Gemfile\n      Change ruby libdir in os-settings for acceptance tests\n      Update configs for packaging\n      A bunch of hacks in the postinstall to get packages working\n      Change puppet dependency to puppet-agent 0.2.0\n      lein-release plugin: bumped version from 1.0.3 to 1.0.4-SNAPSHOT for next development cycle\n      lein-release plugin: preparing 1.0.3 release\n      Revert \"(SERVER-262) Fix `puppetserver gem env` subcommand\"\n      Revert \"Merge branch 'stable_s252_gem_env' into stable\"\n      Revert \"(SERVER-262) Remove JARS_NO_REQUIRE failing test\"\n      (EZ-15) Add lein-ezbake configuration.\n      (PUP-3851) Remove v2.0 endpoints\n      DOCS: Fixed list typo (missing return)\n      DOCS: Added listing for subcommands page in index\n      DOCS: Added note that version 1.0.1 was skipped.\n      DOCS: Release note typo fix.\n      DOCS: Release notes 1.0.2\n      DOCS: Update to logback change note in configuration.markdown\n      DOCS: configuration.markdown, added note that restart isn't needed for logback changes\n      fix typo in docstring\n\n++ Issues without an issue reference\n    a7cde1b: Address PR Feedback\n    86fbeca: Revert Revert (SERVER-415) Update PUPPET_BUILD_VERSION for RE-4141\n    f8c7e2f: Revert \"(SERVER-415) Update PUPPET_BUILD_VERSION for RE-4141\"\n    742a8ca: Update to lein-ezbake 0.3.0-SNAPSHOT\n    dae12a0: Revert \"(SERVER-101) Changed jvm-ca references to ssl-utils\"\n    b19ee86: Revert \"(MAINT) Bump to the new version of ssl-utils\"\n    9879822: Revert \"(maint) Update puppet submodule\"\n    1e9ee50: Create correct manifestdir in preinstall\n    4f3193f: Remove puppet-agent version constraint in ezbake.conf\n    533073b: Change puppet-agent version to 0.2.1\n    49e35ea: Use options['puppetbindir'] rather than hardcoding in acceptance tests\n    b099bce: Remove path options from hostconfig\n    87233f7: Add TODO comments about os-settings.conf and ruby-load-path\n    68d4c23: Add TODO comment to acceptance tests\n    95e712a: Add TODO comment to postinst\n    434a314: Update Gemfile and Gemfile.lock for new beaker and sqa-utils\n    38e8471: Update options for centos 6 jenkins test\n    65fae43: Add bindir to path when running puppet\n    ea3cfb9: Create puppet user\n    7f8553e: Add JARS_NO_REQUIRE true to ruby and irb subcommands\n    a4b6ad3: Install puppet-agent package, not puppet\n    08a459a: Add gems needed for running puppet acceptance tests\n    51e6a27: Update Gemfile\n    ac073bf: Change ruby libdir in os-settings for acceptance tests\n    490c653: Update configs for packaging\n    24b0610: A bunch of hacks in the postinstall to get packages working\n    6d422f7: Change puppet dependency to puppet-agent 0.2.0\n    5e1b7f0: lein-release plugin: bumped version from 1.0.3 to 1.0.4-SNAPSHOT for next development cycle\n    80e9df5: lein-release plugin: preparing 1.0.3 release\n    f5e6f77: Revert \"(SERVER-262) Fix `puppetserver gem env` subcommand\"\n    b2f83a7: Revert \"Merge branch 'stable_s252_gem_env' into stable\"\n    44314c0: Revert \"(SERVER-262) Remove JARS_NO_REQUIRE failing test\"\n    1efebe4: (EZ-15) Add lein-ezbake configuration.\n    d3bf38d: (PUP-3851) Remove v2.0 endpoints\n    8cf02d4: DOCS: Fixed list typo (missing return)\n    9a47a75: DOCS: Added listing for subcommands page in index\n    d2b608c: DOCS: Added note that version 1.0.1 was skipped.\n    e07b599: DOCS: Release note typo fix.\n    b78f13a: DOCS: Release notes 1.0.2\n    f95bae3: DOCS: Update to logback change note in configuration.markdown\n    cbe4fbe: DOCS: configuration.markdown, added note that restart isn't needed for logback changes\n    c8a255d: fix typo in docstring\n\n++ Issues in Git that are not in Jira\n    MAINT\n      9915e7f: Update branching docs to account for 2.1\n      93ff361: Update version to 1.0.8 per email discussion\n      203d976: Fix dujour issues\n      715f2f9: Brevity is beautiful\n      1315435: Update branching README to reflect plans re: 1.0.4\n      824f92c: Move Puppet submodule to head of master\n      c4e269b: Throw IllegalStateException over Exception\n      206eb64: Fix paths for AIO based on PR feedback\n      255c7d8: Fix broken link in documentation\n      31e3d9d: Fix broken link in documentation\n      bea93a8: Merge SERVER-363 changes from stable to master\n      aef0f45: Bump version of ssl-utils\n      25718a2: Bump to the new version of ssl-utils\n      2a7bd24: Bump version of facter in submodule\n      84f2f33: Bump Ruby puppet version\n      e34af87: Bump Beaker version fo acceptance tests\n      b4db721: Bump Beaker version fo acceptance tests\n      dafbe4a: Add JARS_NO_REQUIRE=true to gem subcommand (for the Nteenth time)\n      66e526e: be more tolerant of ssl exceptions in tests\n      f516dd9: Fix broken config service test\n      1f62c56: Restore acceptence test settings\n      3c6e116: Upgrade to Clojure 1.6\n      35e237f: Upgrade clj-http-client dependency to 0.4.1\n      f1d4c82: Upgrade trapperkeeper-webserver-jetty9 dependency to 1.1.1\n      d643460: Update version to 1.0.3-SNAPSHOT for development\n      626e0cf: Add sqa-utils to Gemfile.\n      3fe488b: Upgrade to jruby 1.7.18\n      40f3211: Fix intermittent gem install failures.\n      da9534c: Update TK and Kitchensink dependencies\n    SERVER-262\n      44abb39: Fix `puppetserver gem env` subcommand\n    SERVER-506\n      c382892: Set repo-target to PC1 for 2.0 release\n      ed74b06: Bump ezbake version to 0.3.2\n    docs\n      414911e: Copyedit section in configuration.markdown about enabling SSLv3\n    hack\n      52989ac: Use beaker from git 32e123e\n\n++ Issues in Jira not found in Git\n    SERVER-524: (Fixed) Set repo-target to PC1 for 2.0 release\n    SERVER-479: (Duplicate) Functional Review\n    SERVER-457: (Fixed) Get dujour working with Puppet Server 2.0.0 RC\n    SERVER-412: (Done) Get Pup4/Pup-Svr2 acceptance tests passing for OSes beyond EL-7 \n    SERVER-407: (Done) Use a released beaker version \n    SERVER-371: (Fixed) Change gem_home to /opt/puppetlabs/puppet/cache/jruby-gems\n    SERVER-370: (Duplicate) Change ruby-load-path to /opt/puppetlabs/puppet/lib/ruby/vendor_ruby\n    SERVER-359: (Won't Fix) project.clj no longer compatible with lein release task\n    SERVER-358: (Fixed) Moving 'puppet' user creation to puppet-server packaging\n    SERVER-352: (Unresolved) Consider removing puppet-server's dependency on puppet-agent\n    SERVER-348: (Fixed) Move confdir to /etc/puppetlabs/puppet\n    SERVER-347: (Fixed) Specify codedir similar to confdir and vardir\n    SERVER-337: (Fixed) puppet-server CA service uses wrong $ssldir\n    SERVER-336: (Duplicate) Puppetserver on EL7 or Ubuntu 14.04 does not always work after a reboot\n    SERVER-333: (Done) Cleanup hacks from packaging post install\n    SERVER-321: (Fixed) make sure Puppet Server 2.0 builds are excluding the JRuby BC jar\n    SERVER-309: (Done) memory testing on a build that contains jruby 1.7.18\n    SERVER-299: (Fixed) 404 error message for webrick/rack master about Puppet 3 agents and url changes\n    SERVER-271: (Unresolved) configuration for URL path prefixes\n    SERVER-149: (Unresolved) Update URLs for Puppet4 compatibility\n    SERVER-148: (Duplicate) Craft 404 error message that includes verbiage about Puppet 4 URL changes\n    SERVER-119: (Unresolved) Not signing trusted facts properly according to RFC\n    SERVER-66: (Fixed) separate dujour version check service from puppetserver\n{code}", "created": "2015-04-07T14:26:00.000000"}], "components": [], "created": "2015-03-18T15:22:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70a9553f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1725505086_*|*_5_*:*_1_*:*_46063118724_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release). There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14928", "fixedVersions": [], "id": "14928", "issueType": "Sub-task", "key": "SERVER-482", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-07T14:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Done.", "created": "2015-04-07T14:44:00.000000"}], "components": [], "created": "2015-03-18T15:22:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18f57c95"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyxen:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1725722584_*|*_3_*:*_1_*:*_29497_*|*_5_*:*_1_*:*_46062887045_*|*_6_*:*_1_*:*_0"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%222.0.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17580", "fixedVersions": [], "id": "17580", "issueType": "Sub-task", "key": "SERVER-481", "labels": [], "originalEstimate": "PT0S", "parent": "17287", "parentSummary": "puppetserver 2.0.0 2015-03-31 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-07T14:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "FYI, [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4], [~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] This is the master ticket for the puppetserver 2.0.0 GA release.", "created": "2015-03-25T14:14:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:63d40635a05386069cdb69d6] Regarding our conversation from the AIO stand up this morning, this is the puppet-server 2.0.0 GA master ticket created from the release rake task.", "created": "2015-03-25T15:23:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:63d40628f6e1b543161789a7] [~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4]\n\nA full, production, CI run against all 2.0.0 supported platforms has been kicked off.  This run integrates the puppetserver 2.0.0 packages with the puppet-agent 1.0.0 package.\n\nFirst run is at: https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_integration-system_smoke-master/353/BuildGraph/", "created": "2015-04-09T12:17:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:63d40628f6e1b543161789a7] [~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4]\n\nThe first full suite ran failed on a known transient issue already tracked in QENG-2138.  As soon as the other cells complete I'll re-kick the failed cell.\n\nThis expands our time, sequentially.  What was expected to be a 3 hour turn around is not at least a 6+ hour turn around.\n\n-Jeff", "created": "2015-04-09T14:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Only one failure found, it's a false-positive QENG-2138 issue as mentioned previously.\n\nRe-running the {{redhat6-64ma}} cell.\n\nThe matrix results were lost because a subsequent job didn't run with the same matrix cells.  This can be seen at: https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/273/\n\nThe full results, however, are available in the Console Output of job #273 and they are:\n\n{code}\n > git submodule update --init --recursive\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat6-64ma,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1404-64m-windows2008r2-64a,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1204-64ma,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb debian7-64m-32a,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1204-64m-32a,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat7-64ma,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1404-64ma,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat7-64m-windows2008r2-64a,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb debian7-64ma,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat7-64m-64a,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1404-64m-32a,LDAP_TYPE=,PLATFORM=,beaker\nTriggering puppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat6-64m-32a,LDAP_TYPE=,PLATFORM=,beaker\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat6-64ma,LDAP_TYPE=,PLATFORM=,beaker completed with result FAILURE\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1404-64m-windows2008r2-64a,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1204-64ma,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb debian7-64m-32a,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1204-64m-32a,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat7-64ma,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1404-64ma,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat7-64m-windows2008r2-64a,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb debian7-64ma,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat7-64m-64a,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb ubuntu1404-64m-32a,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\npuppet-server (master) 25:  Full Acceptance Test Suite \u00bb redhat6-64m-32a,LDAP_TYPE=,PLATFORM=,beaker completed with result SUCCESS\nCollecting metadata...\nMetadata collection done.\nStarted calculate disk usage of build\nFinished Calculation of disk usage of build in 0 seconds\nStarted calculate disk usage of workspace\nFinished Calculation of disk usage of workspace in 0 seconds\nNotifying upstream projects of job completion\nFinished: FAILURE\n{code}", "created": "2015-04-09T14:46:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] [~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] [~accountid:63d40628f6e1b543161789a7]\n\n[Job 275|https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/274/] tracks the re-run of {{redhat6-64ma}} of puppetserver 2.0.0 with puppet-agent 1.0.0.\n\nUnfortunately, Job 274 is currently running and won't complete for about 2 hours.  This increased the serialization effect to three sequential runs, so ~9 hour turnaround time.\n\nWe should get all the green balls in place sometime between 7 PM and 8 PM tonight if all goes well. ", "created": "2015-04-09T14:49:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Shipped it.\n\n!https://dl.dropboxusercontent.com/u/602885/github/squirrelmobster.jpeg!", "created": "2015-04-15T14:49:00.000000"}], "components": [], "created": "2015-03-18T15:21:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30f7ebbc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0lj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_438323054_*|*_3_*:*_1_*:*_700764970_*|*_5_*:*_1_*:*_45862752339_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1278178202"}], "description": "puppetserver 2.0.0 2015-03-31 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n\n----\nRisk assessment: Low (no additional validation needed)\nProbability: Low (does not impact users)\nSeverity: Low (does not impact users)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17287", "fixedVersions": [], "id": "17287", "issueType": "Task", "key": "SERVER-480", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-04-15T14:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 2.0.0 2015-03-31 Release", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [], "components": [], "created": "2015-03-18T12:16:00.000000", "creator": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@672c8696"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyx8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1209103847_*|*_5_*:*_1_*:*_46590497452_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17578", "fixedVersions": ["SERVER 2.0.0"], "id": "17578", "issueType": "Sub-task", "key": "SERVER-479", "labels": [], "originalEstimate": "PT0S", "parent": "17276", "parentSummary": "separate dujour version check service from puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "resolution": "Duplicate", "resolutionDate": "2015-04-01T12:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Functional Review", "timeSpent": "PT0S", "updated": "2016-09-21T17:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We are creating PID files consistently on all OSes with the latest ezbake.  Closing...", "created": "2016-12-09T16:34:00.000000"}], "components": [], "created": "2015-03-18T11:37:00.000000", "creator": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4fea8f9d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hysv8f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_452585468_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_54173639340"}], "description": "Using pupetserver 2.0.0-rc3 on RHEL 7, starting the server does not create a pidfile at the configured pidfile location.\n\nh2. Steps to reproduce\nh3. Stop puppetserver\n{code}\nservice puppetserver stop\n{code}\nh3. Remove any existing puppetserver pidfile\n{code}\nrm `puppet master --configprint pidfile`\n{code}\nh3. Start puppetserver\n{code}\nservice puppetserver start\n{code}\nh3. Expected pidfile is not present on disk\n{code}\n# ls -l  `puppet master --configprint pidfile`\nls: cannot access /var/run/puppetlabs/puppetserver/puppetserver.pid: No such file or directory\n{code}\n\nh2. Beaker implications\nh3. {{with_puppet_running_on}} causes pidfile to be created\nBeaker winds up calling {{puppet master}} on the master which creates the pidfile\n{code}\n \"/puppetdb/acceptance/.bundle/gems/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/host.rb:321:in `exec'\",\n \"/puppetdb/acceptance/.bundle/gems/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/dsl/helpers.rb:690:in `start_puppet_from_source_on!'\",\n \"/puppetdb/acceptance/.bundle/gems/bundler/gems/beaker-7d0cccf22cc7/lib/beaker/dsl/helpers.rb:594:in `with_puppet_running_on'\",\n{code}\nh3. {{with_puppet_running_on}} fails in teardown due to stale pidfile\nThe pid in the {{pidfile}} created by {{puppet master}} does not reflect the current pid of the puppetserver process. This causes a teardown exception to be raised by Beaker for the {{with_pupept_running_on}}.\n\n{code}\n#<Beaker::Host::CommandFailure: Host 'etqb30l51day2z1.delivery.puppetlabs.net' exited with 1 running:\n kill 4374\nLast 10 lines of output were:\n        bash: line 0: kill: (4374) - No such process>\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15218", "fixedVersions": [], "id": "15218", "issueType": "Bug", "key": "SERVER-478", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "resolution": "Fixed", "resolutionDate": "2016-12-09T16:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server 2.0.0-rc3 is not creating pidfile on RHEL 7", "timeSpent": "PT0S", "updated": "2016-12-09T16:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [{"attacher": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "created": "2015-04-13T12:02:00.000000", "name": "3.7.5-agent-run.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11255"}, {"attacher": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "created": "2015-04-13T12:02:00.000000", "name": "4.0.0-agent-run.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10560"}, {"attacher": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "created": "2015-04-13T12:02:00.000000", "name": "init.pp", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10639"}], "comments": [{"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], [~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49], relevant to your interests.", "created": "2015-04-02T08:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] we should probably make sure there is some test coverage around auth.conf", "created": "2015-04-02T08:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], totally agree that we'll need to add some tests to validate the \"auth.conf\" rules per the URL re-mapping behavior - i.e., requests to \"old\" URLs successfully validated against \"auth.conf\" rules enforcing access to the corresponding \"new\" URLs.\n\nPurely at the URL layer, we might be able to get away with doing Clojure-level integration tests, like we did for the binary file issue with the \"file_bucket\" API: https://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.8/test/integration/puppetlabs/services/jruby/request_handler_test.clj#L43.\n\nI agree, though, that it would be good to have at least some more end-to-end tests involving a real Puppet agent doing the requests.  Hoping that [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] might be able to help us with those layer of tests when we get to that point...", "created": "2015-04-02T09:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Clojure tests will provide some utility, but this is a case where I actually think there's more bang for the buck in a beaker test.  There are so many requests, with non-trivial payloads and ordering issues, that make up the initial agent run (cert requests, plugin sync, etc.), that I think you'd be at risk of spending too much time trying to fabricate all of that in Clojure as compared to just doing an actual agent run.  You'd also have to worry about those payloads changing if there are additional y/z releases in the Puppet 3 series before it is EOL.\n\nJust my two cents.  If I were implementing this I probably wouldn't do much clojure testing beyond validating that the urls are transformed properly.  *Maybe* I'd do a single integration test that did an end-to-end on one of the simpler endpoints, and then spend the rest of my energy getting a beaker test with a real agent run.", "created": "2015-04-02T09:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I definitely agree with doing the \"urls are transformed properly\" kind of tests at the Clojure \"unit\" level.\n\nAt the Clojure \"integration\" testing level, the testing I'd been thinking of would have only gone so far as to make a request to a particular endpoint that gets routed down into core Ruby Puppet such that \"auth.conf\" rules should be enforced and see that either the \"Forbidden request\" is thrown back if the request should be denied or that the request is \"successful\".  For \"success\", I'd only be thinking the test would go so far as to look for a HTTP 2XX return code and not necessarily validate the response payload - as the latter would definitely be much more cumbersome to setup and maintain over time.\n\nI definitely agree with having a real 3.x agent run be included at the \"acceptance\" level, and Beaker definitely seems like the best vehicle to do that.  I'm hoping not to get into a bunch of combinatorial testing around auth.conf and different endpoints at that level, though.  We'd definitely need at least an \"agent run is successful\" when the auth.conf should properly permit it, and probably an \"agent run fails\" when one or more rules in the auth.conf configuration should deny the agent access to an endpoint.", "created": "2015-04-02T13:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "That sounds exactly right to me.", "created": "2015-04-02T14:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}file_metadata response changed in PUP-3355. Change is expected to be backwards-compatible.{quote}\n\n[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] Does this mean it is expected that a Puppet 3.x agent would be able to handle either the \"wrapped\" or \"non-wrapped\" response document with no problem?  /cc [~accountid:63d40628f6e1b543161789a7] for any words of wisdom he may want to document for us here.", "created": "2015-04-07T15:58:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "{quote}Does this mean it is expected that a Puppet 3.x agent would be able to handle either the \"wrapped\" or \"non-wrapped\" response document with no problem{quote}\n\nYes! Puppet 3.x and 4.x deserialization code will accept either wrapped or non-wrapped documents (so the server when it receives a request and the agent when it receives a response). See https://github.com/puppetlabs/puppet/blob/4.0.0-rc3/lib/puppet/network/formats.rb#L103-L111\n\nIn Puppet 4.0, that part that changed is the serialization code no longer generates wrapped documents. So 3.x agents will send wrapped requests, the 4.0 master will accept it (unwrapping and throwing away the \"data\" envelope), and will response with a non-wrapped response, which the 3.x agent will accept.", "created": "2015-04-07T16:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Yes! Puppet 3.x and 4.x deserialization code will accept either wrapped or non-wrapped documents (so the server when it receives a request and the agent when it receives a response).{quote}\n\nGreat, thanks, [~accountid:63d40628f6e1b543161789a7].  Assuming that's the case, then, I'd propose we not add anything to the Puppet Server 2.1 URL / compatibility work to \"wrap\" an \"unwrapped\" Puppet 4 master response being sent to the Puppet 3.x agent.", "created": "2015-04-07T17:21:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Attached HTTP captures of 3.x and 4.x agent runs along with the corresponding manifest used during them", "created": "2015-04-13T12:02:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "About \"file_metadata query parameter links value changed in PUP-3935\", ideally this shouldn't be a compatibility issue as 4.x puppet agents can specify the value as `manage` or `follow`, where `manage` is the default if the value is unspecified. puppetserver should already handle these three cases, but since it's only been tested with 4.x agents, it may assume the `links` parameter is always present.", "created": "2015-04-13T17:39:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. ...puppet agents can specify the value as `manage` or `follow`, where `manage` is the default if the value is unspecified\n\nThe default value in 4.0.0 is {{:follow}} - https://github.com/puppetlabs/puppet/blob/4.0.0/lib/puppet/configurer/downloader.rb#L48 - unless this doesn't end up being the \"default\" value used when not specified.\n\nI'm thinking we might have to address this change in default value if agents are assuming one or the other?\n\n*UPDATE*: Discussed this issue with [~accountid:63d40628f6e1b543161789a7] in person and we don't expect this change in default values to cause problems.  The agents won't rely on default values and will always explicitly specify them by the time the request is made.  Even though the default values *have* changed across versions, the agent's have the appropriate defaults for their version.", "created": "2015-04-13T17:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] Since we broke out some separate implementation tickets from this one, can we reference those in a comment on this ticket and close this one out?", "created": "2015-04-15T12:28:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Yeah, I suppose we/I can just update the implementation tickets as necessary. They're all Linked to from this ticket.\n\nGoing to Resolve this ticket.", "created": "2015-04-15T12:45:00.000000"}], "components": [], "created": "2015-03-18T10:53:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19c560c3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyz7fr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "UX Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623cfc5b01f8660070b787cf"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_454443886_*|*_3_*:*_1_*:*_1039946835_*|*_5_*:*_1_*:*_45870359066_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_931550945"}], "description": "PE-8404 calls for some work to be done to allow Puppet 3.x agents to be able to send requests to a master containing Puppet 4.x and have the requests automatically converted to the new request APIs that Puppet 4.x now supports.  This ticket is intended to capture any early scoping / investigation activities that would need to be done to support this functionality.\n\n--\n\nh2. Potential Issues\n----\n\n* {{file_metadata}} response changed in PUP-3355 to remove PSON wrapper.  Change is expected to be backwards-compatible.\n* {{node}} response changed in PUP-3355 to remove PSON wrapper.  Change is expected to be backwards-compatible.\n* {{catalog}} response changed in PUP-3355 to remove PSON wrapper.  Change is expected to be backwards-compatible.\n* {{file_metadata}} query parameter {{links}} value changed in PUP-3935 for {{pluginfacts}} and {{plugins}} only.  Might need to translate this.\n\nh2. Implementation Details\n----\nUPDATE: We had an engineering meeting on 3/30/15 to discuss this a bit further.  Some notes from that meeting:\n\n1) The only Puppet 4 master that will be required to support Puppet 3.x agent request mapping is a Puppet Server 2.x master, not a WEBrick or Rack master.  This will allow for us to create a Puppet Server-only solution.\n\n2) The \"legacy\" and \"v2.0\" master/CA Compojure routes had been removed for Puppet Server 2.0.  These could be basically restored for Puppet Server 2.1, with some middleware function(s) which can transform the URL and request parameters in the Ring request map from the \"legacy\" / \"v2.0\" format to corresponding \"v3\" master / \"v1\" CA formats, as appropriate.  Post-transformation, the request handlers could just call into the same functions that the \"v3\" master / \"v1\" CA handlers have been calling into.\n\nOld routes:\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.8/src/clj/puppetlabs/services/ca/certificate_authority_core.clj#L239-L275\n\nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.8/src/clj/puppetlabs/services/master/master_core.clj#L10-L78\n\n3) It would be best for the code involved in performing the \"legacy/v2.0\" -> \"v3\" master / \"v1\" CA transformation to be isolated such that it would would be very straightforward to purge it later on.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] suggested we might be able to do this by consolidating the new code into a service which registers its own independent ring handler with the webserver.  That way, removing the remapping logic in a later release would hopefully be as simple as just deleting the service namespaces.  We could consolidate the Puppet 3.x compatible CA and master routes into a single service rather than spreading them across 2 services.\n\n4) Remove the \"not found\" fallback route for the master and CA so that the Puppet 3.x compatible route ring handlers will be evaluated when needed:\n\nhttps://github.com/puppetlabs/puppet-server/blob/0ca3d679dbdd4749f884729112f2f99aa6d50528/src/clj/puppetlabs/services/master/master_service.clj#L43\n\nAlso, take care that no new \"not-found\" route is added to any of the legacy routes that are being restored so that we don't adversely affect the ability for the new Puppet 4.x routes to be handled properly.\n\n5) The solution should restore legacy compatibility not only for the URLs but also for binary file transfer.  This would need to account for the work done in PUP-3812.  For legacy \"file*\" requests, this may include:\n\n- Map the Content-Type \"text/plain\" header to \"application/octet-stream\".\n\n- Map the Accept \"raw\" header to \"binary\".\n\n6) Assuming the URL remapping would be occurring at the Compojure route layer, a \"legacy\" URL would have been transformed into a Puppet 4-compatible URL by the time the incoming request could be evaluated against \"auth.conf\" rules.  There's probably not any unique development work to be done around this aspect, but we should work with the docs team to ensure that this behavior is appropriately documented for users.\n__________\nRisk Assessment : N/A  Initial Scoping ticket; testable code changes expected in other tickets", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17286", "fixedVersions": [], "id": "17286", "issueType": "Task", "key": "SERVER-526", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-04-15T12:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Initial scoping / investigation for rewriting Pup 3.x URL requests to Pup 4.x", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "This got merged in, built, ran through automated testing, and the RC is published to http://nightlies.puppetlabs.com/puppetserver/2.0.0-rc3/repos/el/7/devel/x86_64/\n\nI'm putting this into the Testing column because I'd like to manually smoke test this myself.  No need for [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] to worry about this, we still have the decision in place that we are not doing manual QA testing for the RC.", "created": "2015-03-17T13:03:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "2.0.0-rc3 has been published to http://nightlies.puppetlabs.com/puppetserver/2.0.0-rc3/\n\nNote, this isn't the correct location specified in QENG-2027, but it is published and I've functionally reviewed 2.0.0-rc3 in steps carried out in SERVER-414 so I'm pulling this all the way through to \"Done\"\n\nWe may need to do 2.0.0-rc4 depending on how we want to ship to the correct location.", "created": "2015-03-17T16:12:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-17T08:24:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49234b9f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyywhb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found AIO, 2.0.0-rc2 didn't ship to nightlies"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_16236468_*|*_1_*:*_1_*:*_7363_*|*_3_*:*_1_*:*_443167_*|*_5_*:*_1_*:*_48363577341_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_11411164"}], "description": "I'm making the call this morning to do 2.0.0-rc3 since 2.0.0-rc2 missed the nightly ship step.\n\nProcess to follow to get to nightly:\n\n1: Make two commits, one to change the version to 2.0.0-rc3, the next to switch back to snapshot.  Don't push or do a pull request.\n2: Push both commits simultaneously.\n3: Jenkins will skip over the immutable non-snapshot build.\n4: Manually kick off the 2.0.0-rc3 build entering the SHA from step 1 into the job at https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_init-manual_master/build?delay=0sec", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17576", "fixedVersions": [], "id": "17576", "issueType": "Task", "key": "SERVER-477", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-17T16:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "2.0.0-rc3", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Not really removed. Was a cloned ticket. Bookkeeping problem. ", "created": "2015-03-18T15:48:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Current version to test:  7e8ad0146f4240779cd50d307f5964c0380f16cd\n\nThe version will likely change this sprint, but it can be updated as part of the individual tickets that force an update of the version.\n\nIn general, just pick a version from http://builds.puppetlabs.lan/puppet-agent/ that looks to have the repo configurations we need to test against.  Don't pick 0.9.0 since that's RHEL-7 only.", "created": "2015-03-19T17:57:00.000000"}], "components": [], "created": "2015-03-16T22:18:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ca61047"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyywfb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_45005_*|*_3_*:*_1_*:*_187933_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_243309257"}], "description": "This ticket covers all of the work involved in periodically bumping the puppet-server's dependency on puppet-agent in CI to track the HEAD of the AIO branch.  This should be bound within the course of the current sprint, with another to replace it if needed when the next sprint is kicked off.\n\n----\nRisk assessment: Low (no additional validation needed)\nProbability: Low (does not impact users)\nSeverity: Low (does not impact users)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16097", "fixedVersions": ["SERVER 2.0.0"], "id": "16097", "issueType": "Task", "key": "SERVER-476", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-19T17:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Continually bump puppet-server dependency on puppet-agent as AIO progresses", "timeSpent": "PT0S", "updated": "2015-04-07T14:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think I already have tickets for all the other stuff, but I'll close this out as a dupe when I get to those if that turns out to be the case.", "created": "2015-03-16T17:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Decided to keep this to reflect the FOSS status endpoint, and use the other ticket for the PE status endpoint.", "created": "2015-05-05T05:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This will be new API that is not going to be entirely baked in time for the 1.1/2.1 releases, so I'm going to hold off on doing the work until either we've tagged those releases or we have a branching strategy that gives me a safe place to target these changes at.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] ping, re: branching.  This is not blocking me, I wouldn't have time to work on it until after the support escalation stuff winds down which will be at least a few more days, but we might want to touch base at some point.", "created": "2015-05-21T03:49:00.000000"}], "components": [], "created": "2015-03-16T16:42:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@730bb558"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqqn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth, pseudo-blocker for some other tickets in sprint"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1726173_*|*_3_*:*_2_*:*_1377141680_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_18507518817_*|*_10006_*:*_1_*:*_4277068143"}], "description": "Utilize the new TK status service, once it's available.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] knows the secrets about this ticket, i.e., what data Puppet Server should expose, etc.\n\nh3.QA\nRisk Assessment: N/A; New Feature.  QA Testing handled in TK-208 / SERVER-583.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "16700", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16700", "issueType": "New Feature", "key": "SERVER-475", "labels": ["status-service"], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Duplicate", "resolutionDate": "2015-12-21T07:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "expose status information over HTTP", "timeSpent": "PT0S", "updated": "2016-01-19T06:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-03-16T16:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4476a444"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw8f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1212257029_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2244557"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%22SERVER%201.0.8%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14927", "fixedVersions": [], "id": "14927", "issueType": "Sub-task", "key": "SERVER-474", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T17:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2015-03-30T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Done - although I expect users on older builds will actually be asked to upgrade to 2.0.0, since it's a newer semantic version than 1.0.8.", "created": "2015-03-30T17:08:00.000000"}], "components": [], "created": "2015-03-16T16:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51170806"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw87:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1211993368_*|*_5_*:*_1_*:*_46745431356_*|*_6_*:*_1_*:*_0"}], "description": "Update dujour to notify users to use 1.0.8.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17575", "fixedVersions": [], "id": "17575", "issueType": "Sub-task", "key": "SERVER-473", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T17:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 1.0.8", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sent announce messages to puppet-dev and puppet-users mailing lists.", "created": "2015-03-30T18:26:00.000000"}], "components": [], "created": "2015-03-16T16:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3812340b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw7z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1212295680_*|*_3_*:*_1_*:*_2105279_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2261992"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17285", "fixedVersions": [], "id": "17285", "issueType": "Sub-task", "key": "SERVER-472", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T18:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2015-03-30T18:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Docs updated for 1.0.8 on puppetlabs.com - http://docs.puppetlabs.com/puppetserver/1.0/release_notes.html.  New tuning guide also published -  http://docs.puppetlabs.com/puppetserver/1.0/tuning_guide.html.", "created": "2015-03-30T17:16:00.000000"}], "components": [], "created": "2015-03-16T16:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c0b6a1d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw7r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_785082847_*|*_10007_*:*_1_*:*_427393721_*|*_5_*:*_1_*:*_46744984695_*|*_6_*:*_1_*:*_0"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17067", "fixedVersions": [], "id": "17067", "issueType": "Sub-task", "key": "SERVER-471", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T17:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-03-16T16:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ebc21f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw7j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1210874042_*|*_3_*:*_1_*:*_1424109_*|*_5_*:*_1_*:*_46744615328_*|*_6_*:*_1_*:*_0"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16699", "fixedVersions": [], "id": "16699", "issueType": "Sub-task", "key": "SERVER-470", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-30T17:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-03-16T16:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@83f7eed"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw7b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1212272831_*|*_5_*:*_1_*:*_46744643843_*|*_6_*:*_1_*:*_0"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16373", "fixedVersions": [], "id": "16373", "issueType": "Sub-task", "key": "SERVER-469", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-30T17:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Go from [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314], [~accountid:623c12b6ee1b5a0070293582], [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] and [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]", "created": "2015-03-30T16:37:00.000000"}], "components": [], "created": "2015-03-16T16:28:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ef91fa6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw73:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1210199613_*|*_5_*:*_1_*:*_46746722792_*|*_6_*:*_1_*:*_0"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16096", "fixedVersions": [], "id": "16096", "issueType": "Sub-task", "key": "SERVER-468", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-30T16:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] have you done any manual smoke testing on the puppet-server 1.0.8 packages?", "created": "2015-03-30T11:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] I did some testing already on CentOS 7, all looked good.  Was going to do some more on other OSes today and have asked that [~accountid:623c12b6ee1b5a0070293582] and [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] help with that.  We'll add more comments here, with more details, as we complete testing on additional platforms.", "created": "2015-03-30T11:23:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]m wonderful! You knew exactly what I was going to ask!", "created": "2015-03-30T11:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Did the following testing with the tagged packages on CentOS 7 - all successful.\n\n1) Installed puppetserver 1.0.8.\n\n* Put a simple notify resource in the site.pp.\n* Started puppetserver.\n* Did a 'puppet agent -t' run against the server, saw the expected message.\n\n* Configured PuppetDB\n-- Ran 'sudo puppet resource package puppetdb ensure=latest'\n-- Ran 'sudo puppet resource service puppetdb ensure=running enable=true'\n-- Ran 'sudo puppet resource package puppetdb-terminus ensure=latest'\n-- Created puppetdb.conf and route.yaml files.\n-- Restarted puppetserver service.\n\n* Did another 'puppet agent -t' run against the server, was successful.\n* Queried puppetdb with 'curl http://localhost:8080/v3/nodes/<my_host>' and saw reasonable looking output.\n\n2) Wiped VM clean and tried upgrade test.\n\n* Installed puppetserver 1.0.2 from package repo.\n* Upgraded to puppetserver 1.0.8.\n* Did a 'puppet agent -t' run and was successful.\n* Stopped puppetserver service.\n* Started puppetserver service via 'puppetserver foreground'.\n* Did a 'puppet agent -t' run and was successful.\n", "created": "2015-03-30T12:50:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Ended up with some problems on Ubuntu 14.04:\n\n* Added Puppet labs repo for agent\n* Added puppet server test repo from builds.puppetlabs\n* installed puppetserver package\n\nNow a keypair exists before starting any service:\n\n{code}\nroot@ubuntu-1404:/home/justin# tree /var/lib/puppet/ssl/\n/var/lib/puppet/ssl/\n\u251c\u2500\u2500 certificate_requests\n\u251c\u2500\u2500 certs\n\u251c\u2500\u2500 private\n\u251c\u2500\u2500 private_keys\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 ubuntu-1404.localdomain.pem\n\u2514\u2500\u2500 public_keys\n    \u2514\u2500\u2500 ubuntu-1404.localdomain.pem\n{code}\n\nPuppet server won't start with the keys in this state. ", "created": "2015-03-30T13:02:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "My smoke testing passed for Fedora 19, Fedora 20, and an upgrade from 1.0.2 to 1.0.8 on Fedora 20.\n\nThe detailed steps I carried out during smoke testing are available in SERVER-525.", "created": "2015-03-30T13:08:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Looks like I was working with a dirty VM. Never mind that previous comment.", "created": "2015-03-30T13:28:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Installing Puppet sever and PuppetDB from the puppetlabs-puppetdb module all works great on Ubuntu 14.04", "created": "2015-03-30T14:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Did the same set of install / reinstall tests as above for Debian 7 and all were successful.", "created": "2015-03-30T14:41:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Installed on Ubuntu 12.04 as well. Looks good.", "created": "2015-03-30T15:57:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Installed on CentOS 6.  Looks good with the puppetdb module, pluginsync, catalog compilation, etc... all worked fine without anything smoking.", "created": "2015-03-30T16:06:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] - Smoke testing looks good for all of the platforms we tried:\n\n- CentOS 6\n- CentOS 7\n- Debian 7\n- Ubuntu 12.04\n- Ubuntu 14.04\n- Fedora 19\n- Fedora 20\n\nI'm going to move this card to \"done\".", "created": "2015-03-30T16:12:00.000000"}], "components": [], "created": "2015-03-16T16:27:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d8079ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw6v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1190549301_*|*_3_*:*_1_*:*_7490456_*|*_5_*:*_1_*:*_46748783817_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10675963"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15780", "fixedVersions": [], "id": "15780", "issueType": "Sub-task", "key": "SERVER-467", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T16:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\ud83d\udead Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] - we should be good to go for creating the tag at this point.  \n\n1.0.8 build passed on the full OS configuration matrix for Jenkins CI - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/218/.\n\nHere is the SHA of the merge commit for Puppet Server that our 1.0.8 packages were built from:\n\n{noformat}\nfa3d8646f82afe947ac5795a708487b6de7b4b04\n{noformat}\n\nDoes this give you what you need to start the tagging process?", "created": "2015-03-30T10:52:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "packages are available at http://builds.puppetlabs.lan/puppetserver/1.0.8/", "created": "2015-03-30T11:08:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] yes, that's all the information I need for tagging the repo", "created": "2015-03-30T11:08:00.000000"}], "components": [], "created": "2015-03-16T16:27:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ac04fc6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw6n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1190441884_*|*_5_*:*_1_*:*_46766512391_*|*_6_*:*_1_*:*_0"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15619", "fixedVersions": [], "id": "15619", "issueType": "Sub-task", "key": "SERVER-466", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-30T11:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Short form release story:\n\nPuppet Server 1.0.8 is a bug fix version that also includes several new, backwards-compatible features. We've added new HTTP client timeout settings, a special logfile to capture only HTTP traffic, and a JRuby tuning guide to help you get the best performance from Puppet Server. Bug fixes include extended JRuby default borrow timeouts, fixed CA handling, and the addition of 'runuser' to startup scripts.", "created": "2015-03-25T18:42:00.000000"}], "components": ["DOCS"], "created": "2015-03-16T16:27:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3056a22b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw6f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_260929836_*|*_10007_*:*_1_*:*_73485790_*|*_3_*:*_1_*:*_524916868_*|*_5_*:*_1_*:*_11475426558_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_120274"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15217", "fixedVersions": [], "id": "15217", "issueType": "Sub-task", "key": "SERVER-465", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-26T15:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2015-08-06T10:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Marked the 1.0.8 version as \"released\" in JIRA.\n\nI didn't create a public query, but, in the announce messages, I did include a link to the query that JIRA automatically enables:\n\nhttps://puppet.atlassian.net/browse/SERVER/fixforversion/12807", "created": "2015-03-30T18:28:00.000000"}], "components": [], "created": "2015-03-16T16:27:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f2dabaa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw67:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1189564151_*|*_3_*:*_1_*:*_27312155_*|*_6_*:*_1_*:*_0"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15046", "fixedVersions": [], "id": "15046", "issueType": "Sub-task", "key": "SERVER-464", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T18:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2015-03-30T18:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The master branch for Puppet Server currently covers 2.X.  The Puppet Server 1.0.8 release is intended primarily as a bug fix release from stable.  It would be inappropriate to try to merge Puppet Server 2.X down into the 1.0.8 release so closing this ticket with no action.", "created": "2015-03-21T00:18:00.000000"}], "components": [], "created": "2015-03-16T16:27:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50045f27"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw5z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_373909788_*|*_6_*:*_1_*:*_0"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17574", "fixedVersions": [], "id": "17574", "issueType": "Sub-task", "key": "SERVER-463", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2015-03-21T00:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2015-03-24T11:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "1.0.8 build passed on the full OS configuration matrix for Jenkins CI - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/218/.", "created": "2015-03-30T10:43:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Treating this as a house keeping ticket.  No risk assessment needed.", "created": "2015-03-30T16:18:00.000000"}], "components": [], "created": "2015-03-16T16:27:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f57fca1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw5r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1051193168_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_157876273"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17066", "fixedVersions": [], "id": "17066", "issueType": "Sub-task", "key": "SERVER-462", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T16:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2015-03-30T16:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-03-16T16:26:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f3eda5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw5j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_373769449_*|*_3_*:*_1_*:*_677571289_*|*_5_*:*_1_*:*_46906234153_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release) There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16696", "fixedVersions": [], "id": "16696", "issueType": "Sub-task", "key": "SERVER-461", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-28T20:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [], "components": [], "created": "2015-03-16T16:26:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@598ecb40"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw5b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_584768904_*|*_3_*:*_1_*:*_466623800_*|*_5_*:*_1_*:*_46906188506_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release). There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16372", "fixedVersions": [], "id": "16372", "issueType": "Sub-task", "key": "SERVER-460", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-28T20:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "1.0.8 build passed on the full OS configuration matrix for Jenkins CI - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/218/.\n\nRelevant JIRA tickets moved to \"done\".", "created": "2015-03-30T16:16:00.000000"}], "components": [], "created": "2015-03-16T16:26:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42493a1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyw53:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_373748124_*|*_3_*:*_1_*:*_677691269_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_157556910"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%22SERVER%201.0.8%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16095", "fixedVersions": [], "id": "16095", "issueType": "Sub-task", "key": "SERVER-459", "labels": [], "originalEstimate": "PT0S", "parent": "15847", "parentSummary": "puppetserver 1.0.8 2015-03-24 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T16:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2015-03-30T16:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0cbf1c7f6a007049e5b9", "attachments": [], "comments": [], "components": [], "created": "2015-03-16T16:26:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@671cfaa6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyywgn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2439687_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1214520127"}], "description": "puppetserver 1.0.8 2015-03-24 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n\n----\nRisk assessment: Low (no additional validation needed)\nProbability: Low (does not impact users)\nSeverity: Low (does not impact users)", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "15847", "fixedVersions": ["SERVER 1.0.8"], "id": "15847", "issueType": "Task", "key": "SERVER-458", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T18:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 1.0.8 2015-03-24 Release", "timeSpent": "PT0S", "updated": "2015-03-30T18:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Pull request is up at https://github.com/puppetlabs/puppet-server/pull/448", "created": "2015-03-16T12:18:00.000000"}, {"author": "623e7507866b810069e57527", "body": "Looks like there was a green run last night containing these changes, so I'm putting this into Testing.", "created": "2015-03-17T10:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I still don't see any checkins on dujour from any 2.0.0-x versions.  During jenkins runs I believe this is expected, because we intentionally override the update server url to avoid spamming the production dujour instance.  However, if anyone has done any manual installation / testing with a 2.0.x since this change was merged, I would kind of expect to see checkins from that.\n\nWe definitely need to do functional review on this before closing it out.", "created": "2015-03-18T11:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] this may end up being an issue for 1.0.8 as well, we're going to need to keep an eye on it.", "created": "2015-03-18T11:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Hmm, yeah.  I'm pretty sure I did some manual testing where \"2.0.0-rc1\" would have been in the check in request and I was using the live updates.puppetlabs.com URL.  (I used \"2.0.0-rc1\" since I knew we were going to burn that version anyway, not to be \"released\" to the public).  I even remember inspecting the request via Wireshark to see that \"2.0.0-rc1\" was in the request going to the URL.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], maybe I need to get an education from you on how to check the dujour server statistics?  Is there a chance that there's a bug on the dujour server side with handling \"-rcX\" on the end of a version?", "created": "2015-03-18T11:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Oh, and I should mention that when I was doing that testing it was with Puppet Server per the code from the PR for this ticket.", "created": "2015-03-18T12:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "You can hit it with curl:\n\n{code}\n$ curl http://updates.puppetlabs.com\\?product\\=foo\\&version\\=1.0-rc1\nfoo is not a Puppet Labs product, yo\n$ curl http://updates.puppetlabs.com\\?product\\=foo\nNo product and/or version parameters in query, yo% \n{code}\n\nHopefully if it doesn't give you an error message then it should have tracked the hit.  If you actually wanted to see the data you'll either need a login for:\n\nhttps://updates.puppetlabs.com/dashboard\n\nWhich I don't have and am not sure how to get", "created": "2015-03-18T13:01:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:623c12b6ee1b5a0070293582] didn't you make a green team login for dujour?", "created": "2015-03-18T13:46:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] I recall that you told me how in one of the releases we've done recently, but I don't think I ever added us to the {{.htpasswd}} file.", "created": "2015-03-19T14:24:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:623c12b6ee1b5a0070293582] Here's the file. It has a green team hash, but I have no idea what password that corresponds to https://github.com/puppetlabs/puppetlabs-modules/blob/4e93dfb717ffc658a94be6e97f836dc86715bd5a/site/profile/files/dujour/htpasswd#L7", "created": "2015-03-19T14:51:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Ah, OK.  I did find the password after all.\n\nI take it I need to add 2.0.0-rc3 to https://updates.puppetlabs.com/dashboard/releases/puppetserver ?", "created": "2015-03-20T16:26:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "2.0.0-rc3 has been added to https://updates.puppetlabs.com/dashboard/releases", "created": "2015-03-23T14:16:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I took a crack at some manual testing/validation of this fix.  I can confirm that Puppet Server 2.0.0-rc4 is successfully checking-in with Dujour.\n\nInitially, my thought was that I would test this by pulling down the 2.0.0-rc4 package, starting the service, and verifying that a new check-in showed up in Dujour.  However, looking at Dujour, there are currently over 22,000 check-ins for Puppet Server 2.0.0-rc4, and this count is increasing by roughly 100 every few minutes!  The vast majority of these check-ins are coming from the Puppet acceptance tests running on Jenkins", "created": "2015-04-02T14:55:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "*Bug Fixed*\n\nPuppet Server correctly checks for new versions and reports when they're available to the user.", "created": "2015-04-13T11:51:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-16T12:01:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d7a3cb0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0qf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found AIO - Version check doesn't work with RC versions"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_72211497_*|*_1_*:*_1_*:*_7697_*|*_10007_*:*_1_*:*_7606597_*|*_3_*:*_1_*:*_2670497_*|*_5_*:*_1_*:*_46985807459_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1396711489"}], "description": "This is a nice to have for puppetserver 2.0.0 RC but not a blocker.  It is a blocker for GA.\n\nWe need to bring Preben's improvements to the version check library at https://github.com/puppetlabs/puppet-server/pull/448 into the 2.0.0 branch as quickly as possible so that we can get good information about the RC versions.\n\nAaron has said this is not a blocker for RC, but it should be fixed as soon as possible along the path to GA.\n___\nRisk assessment: High (QA to perform Functional Review and to make an automated test)\nProbability: High (This feature has broken in the past)\nSeverity: High (When this breaks, we don't get information back from the customers about what version of puppetserver is running.)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17573", "fixedVersions": ["SERVER 2.0.0"], "id": "17573", "issueType": "Bug", "key": "SERVER-457", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-04-02T14:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Get dujour working with Puppet Server 2.0.0 RC", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Added a commit to the same pull request we're using for SERVER-415", "created": "2015-03-16T12:14:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moving to resolved, unit test fixed.\n\nI don't think this requires functional review since there's no code change, only changes to the unit tests.", "created": "2015-03-16T22:21:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-16T11:30:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17c8c85e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyygmn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_25030658_*|*_1_*:*_1_*:*_10448_*|*_10007_*:*_1_*:*_11487412_*|*_3_*:*_1_*:*_2556845_*|*_5_*:*_1_*:*_48427816246_*|*_6_*:*_1_*:*_0"}], "description": "Trying to update our dependency on puppet-agent to 4.0.0-rc1, we're now seeing this failure in the Ruby spec tests:\n\n{code}\nFailures:\n\n  1) Puppet::Server::Master puppet version returns the correct puppet version number\n     Failure/Error: master.puppetVersion.should == '3.7.4'\n       expected: \"3.7.4\"\n            got: \"4.0.0-rc1\" (using ==)\n     # ./spec/puppet-server-lib/puppet/jvm/master_spec.rb:17:in `(root)'\n     # ./spec/run_specs.rb:5:in `(root)'\n     # form-init111985068497148575.clj:1:in `invoke'\n     # main.clj:274:in `invoke'\n     # main.clj:279:in `invoke'\n     # main.clj:307:in `invoke'\n     # main.clj:342:in `invoke'\n     # main.clj:420:in `doInvoke'\n{code}", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15616", "fixedVersions": ["SERVER 2.0.0"], "id": "15616", "issueType": "Improvement", "key": "SERVER-455", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-16T22:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix ruby spec failure on version bump", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Deepak has published 0.3.0 to clojars, so we should be able to remove the exception handler now.", "created": "2015-03-16T23:30:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pull request to remove the semver exception handler for false (invalid) values in the config service unit tests is at https://github.com/puppetlabs/puppet-server/pull/457\n", "created": "2015-03-16T23:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c12b6ee1b5a0070293582] can you go ahead and story point this ticket and move it into your current sprint if you've done the work?", "created": "2015-03-17T06:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "dankreek merged commit 67f883d into puppetlabs:master", "created": "2015-03-17T12:39:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged and Jenkins acceptance test job that followed was green - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/229/.  Moving to 'resolved' since there doesn't appear to be anything here worth having QA review - was just a unit test change.", "created": "2015-03-18T10:20:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-16T10:28:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4afa9fd1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyvjz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Timing was ideal to adopt this.  Quick fix after hours."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_78090828_*|*_1_*:*_1_*:*_25657063_*|*_10007_*:*_1_*:*_16617305_*|*_5_*:*_1_*:*_48298303445_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_51956765"}], "description": "As part of the work in SERVER-450, we added a dependency on clj-semver 0.2.0.  The trouble is this release doesn't contain an API function that returns a boolean value, we can only get back true or have an exception raised when validating a semver string.\n\nIdeally we'd like to remove the [try / catch IllegalArgumentException|https://github.com/puppetlabs/puppet-server/pull/451/files#diff-90f8e03c968fbe59a09152a1dc239221R34] since it would be better to implement this without an exception handler.\n\nThere will need to be a non-snapshot release of clj-semver that contains https://github.com/grimradical/clj-semver/commit/9690467728b7c9266897804c3e11704b185ffa69 for us to accomplish this task.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15216", "fixedVersions": ["SERVER 2.0.0"], "id": "15216", "issueType": "Improvement", "key": "SERVER-454", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-18T10:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove semver exception handler", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-03-16T10:23:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52c6f6de"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3x87:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25826945_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_54777556504"}], "description": "Based on the discussion with [~accountid:6323b259d1b3f6489b9466a7] over https://github.com/puppetlabs/puppet-server/pull/451 he mentioned:\n\n{quote}\nThough I think a reasonable interim step would at least be to bring this into the puppetlabs github org and give other folks permission to manage/refactor/etc. the thing. That work?\n{quote}\n\nSo we'd just need to establish the github repository and do a release to clojars from puppetlabs instead of grimradical.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15045", "fixedVersions": [], "id": "15045", "issueType": "Task", "key": "SERVER-453", "labels": ["tech-debt"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move clj-semver to puppetlabs org", "timeSpent": "PT0S", "updated": "2017-05-17T15:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Started test, added link to spreadsheet where the data will be once there is some", "created": "2015-03-16T15:08:00.000000"}], "components": [], "created": "2015-03-14T07:13:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f28e252"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovbj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "QA support"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_186476600_*|*_3_*:*_1_*:*_5015247805_*|*_5_*:*_1_*:*_43453401491_*|*_6_*:*_1_*:*_0"}], "description": "This ticket tracks testing internal to the green team.\n___\nRisk assessment: N/A  (internal housekeeping / testing ticket)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15613", "fixedVersions": [], "id": "15613", "issueType": "Task", "key": "SERVER-452", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-05-13T12:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "long-running gatling mem test for new jetty/jruby", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-03-13T15:54:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7322f69e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xkn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_264990153_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_54777716428"}], "description": "The current spec tests in Puppet server use the old rspec 2 standard, this should up updated.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15845", "fixedVersions": ["SERVER 2.y"], "id": "15845", "issueType": "Improvement", "key": "SERVER-451", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update tests to rspec 3", "timeSpent": "PT0S", "updated": "2016-12-09T16:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Moving to resolved, unit test fixed.\n\nI don't think this requires functional review since there's no code change, only changes to the unit tests.", "created": "2015-03-16T22:21:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-13T15:26:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6576ad13"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyv1z:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found AIO sigh"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_42645347_*|*_1_*:*_1_*:*_16403_*|*_10007_*:*_1_*:*_235631972_*|*_3_*:*_1_*:*_5802437_*|*_5_*:*_1_*:*_48427827015_*|*_6_*:*_1_*:*_0"}], "description": "Version identifiers!  They seem so easy!\n\nUpdating puppet-server to use puppet-agent from  http://builds.puppetlabs.lan/puppet-agent/890a4a29148a3ae2997cb1cf2cefd329e6badf3d/ which includes the puppet from tag 4.0.0-rc1, we get the following unit test failure.\n\n{code}\nlein test :only puppetlabs.services.config.puppet-server-config-service-test/config-service-functions\n\nFAIL in (config-service-functions) (puppet_server_config_service_test.clj:57)\nBasic puppet-server config service function usage The config service has puppet's version available.\nexpected: (valid-semver-number? (get-in-config service [:puppet-server :puppet-version]))\n  actual: (not (valid-semver-number? \"4.0.0-rc1\"))\n{code}\n\nThis unit test needs to be fixed before we're able to fully test puppetserver integrated with puppet-agent.\n\n", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16695", "fixedVersions": ["SERVER 2.0.0"], "id": "16695", "issueType": "Bug", "key": "SERVER-450", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-16T22:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix unit test that barfs all over version ID 4.0.0-rc1", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged and full acceptance test suite passed - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/208/.  Moving to \"testing\">", "created": "2015-03-25T14:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Tested {{connect-timeout-milliseconds}} with 1.0.8 candidate package on CentOS 7 VM.\n\nTest involved registering an HTTP report processor pointing to a node different than the one that the master was running on but where nothing was actually listening on the port.\n\nIn the {{/etc/puppetserver/conf.d/puppetserver.conf}} file under the {{http-client}} section, added the following setting:\n\n{noformat}\nconnect-timeout-milliseconds: 12000\n{noformat}\n\nAdded the following to the \\[main\\] section in the {{/etc/puppet/puppet.conf}} and restarted puppetserver service:\n\n{noformat}\nreports = http\nreporturl = http://10.0.0.1:255/bleh\n{noformat}\n\nStarted an agent run against the master.  Near the end of the agent run, in the master log, {{/var/log/puppetserver/puppetserver.log}}, saw the following message:\n\n{noformat}\n2015-03-28 20:02:49,030 INFO  [puppet-server] Puppet Compiled catalog for jb-centos7.localdomain in environment production in 0.13 seconds\n{noformat}\n\nAfter about 12 seconds, saw the following error in the master log:\n\n{noformat}\n2015-03-28 20:03:01,303 ERROR [c.p.h.c.i.PersistentSyncHttpClient] Error executing http request\njava.net.SocketTimeoutException: null\n\tat org.apache.http.nio.pool.RouteSpecificPool.timeout(RouteSpecificPool.java:170) ~[puppet-server-release.jar:na]\n...\n{noformat}", "created": "2015-03-29T01:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Also tested {{idle-timeout-milliseconds}} with 1.0.8 candidate package on CentOS 7 VM.\n\nTest involved registering an HTTP report processor which accepts connections and consumes the request but sleeps for 60 seconds before providing a response.\nIn the {{/etc/puppetserver/conf.d/puppetserver.conf}} file under the {{http-client}} section, added the following setting:\n\n{noformat}\nidle-timeout-milliseconds: 12000\n{noformat}\n\nAdded the following to the \\[main\\] section in the {{/etc/puppet/puppet.conf}} and restarted puppetserver service:\n\n{noformat}\nreports = http\nreporturl = http://127.0.0.1:8080/bleh\n{noformat}\n\nStarted HTTP report processor listening at http://127.0.0.1:8080.  Report processor configured to consume and write request text to stdout.\n\nStarted an agent run against the master. Near the end of the agent run, in the master log, {{/var/log/puppetserver/puppetserver.log}}, saw the following message:\n\n{noformat}\n2015-03-28 20:19:21,779 INFO  [puppet-server] Puppet Compiled catalog for jb-centos7.localdomain in environment production in 0.10 seconds\n{noformat}\n\nAlso saw from the stdout in the HTTP report processor that it had received a report POST from the master.\n\nAfter about 12 seconds, saw the following error in the master log:\n\n{noformat}\n2015-03-28 20:19:34,059 ERROR [c.p.h.c.i.PersistentSyncHttpClient] Error executing http request\njava.net.SocketTimeoutException: null\n\tat org.apache.http.nio.protocol.HttpAsyncRequestExecutor.timeout(HttpAsyncRequestExecutor.java:285) ~[puppet-server-release.jar:na]\n...\n{noformat}", "created": "2015-03-29T15:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Moving to 'resolved' per conversation with [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2015-03-30T11:18:00.000000"}], "components": ["DOCS"], "created": "2015-03-13T10:55:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7adae5d8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp1wv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Rescoped Puppet Server 1.0.8 and PE 3.8 and this was above the cut line."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_14572971_*|*_1_*:*_1_*:*_281519337_*|*_10007_*:*_1_*:*_152507460_*|*_3_*:*_1_*:*_530905664_*|*_5_*:*_1_*:*_21846128_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_421874258_*|*_10006_*:*_1_*:*_68811673"}], "description": "TK-134 will enable client timeouts to be configured for clj-http-client connections.  Where the Puppet Server is a client, it should allow for these timeouts to be exposed for external user configuration and impose some reasonable defaults.\n\nStandard puppet.conf configuration covers timeout settings which could be mapped to the underlying clj-http-client settings.  The ones currently used by the Puppet agent are http_connect_timeout and http_read_timeout.\n\nWhere we eventually expect to be able to separate the master configuration more cleanly from the agent configuration, however, I'm thinking it might be better to add new settings for these to the {{http-client}} Trapperkeeper configuration section, which currently only supports the {{ssl-protocols}} and {{cipher-suites}} settings.\n\nAlso, we'll need to decide what default values to use for these settings.  For the \"connection timeout\", we may consider following the Puppet agent lead and use \"2 minutes\".  The \"read timeout\" that Puppet uses is defined as \"infinite\".  This seems a little dangerous for the Puppet Server master to use in that it could cause the master to lock up completely under high load.  Maybe 20 minutes would be a better default, the newly ordained default for the jruby pool's borrow timeout?\n\n--\n\nUPDATE: These were eventually implemented under the {{http-client}} section as {{idle-timeout-millliseconds}} and {{connect-timeout-milliseconds}}.  The default for {{idle-timeout-milliseconds}} is 20 minutes.  The default for {{connect-timeout-milliseconds}} is 2 minutes.  Information on the new settings is covered in the \"puppetserver.conf\" settings documentation, see https://github.com/puppetlabs/puppet-server/blob/86e2b6b79a9ad88c796579945d3d802cdc250359/documentation/configuration.markdown#puppetserverconf.\n\n----\nRisk assessment: High (automated test needed)\nProbability: Medium (effects users needing to adjust timeout)\nSeverity:  High (No work around available)", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16094", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "16094", "issueType": "New Feature", "key": "SERVER-449", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-30T11:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Expose http-client timeouts from Puppet Server", "timeSpent": "PT0S", "updated": "2015-12-17T15:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "small code change.  low probability.  high severity because it can cause oom errors.  Test on a single core system, and on a system with many cores.  Ensure that single core sys 1, dual core sys 1, 3 core system = 2, 4 core = 3, anything larger should make 4 jrubyes.\n\n", "created": "2015-03-20T13:17:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I need an AWS account to test this.  Reopened HELP-825.", "created": "2015-03-24T17:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Tested this with 1.0.8 candidate package on CentOS 7 VM.\n\nIn both cases below, I did not have a {{max-active-instances}} value set under {{http-client}} in the {{/etc/puppetserver/conf.d/puppetserver.conf}} file.\n\n---\n\nInitially configured the VM with only 1 cores.  During startup, the puppetserver service outputted the following messages in the {{/var/log/puppetserver/puppetserver.log}} file:\n\n{noformat}\n...\n2015-03-28 17:40:08,554 WARN  [p.s.j.jruby-puppet-core] No configuration value found for jruby-puppet max-active-instances", "created": "2015-03-30T10:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Moving to 'resolved' per conversation with [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31].", "created": "2015-03-30T11:18:00.000000"}], "components": [], "created": "2015-03-12T17:03:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@35810e51"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "small simple code change, but can substantially increase memory usage."}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Could cause OOM errors."}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp1zz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Driven by PE 3.8 scoping changes"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_239781688_*|*_1_*:*_1_*:*_1617198_*|*_10007_*:*_1_*:*_80494631_*|*_3_*:*_1_*:*_2290592_*|*_5_*:*_1_*:*_21830298_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1210314635"}], "description": "Longer-term, we need to make some more refined adjustments to the algorithm / process that Puppet Server uses to calculate the default {{max-active-instances}} for JRubies.  The details of the longer-term plans are covered by SERVER-364.\n\nFor the forthcoming release of 1.X Puppet Server, however, we need to at least make a targeted improvement which caps this default number at a value that should be safer to use with the default 2Gb JVM Heap which is configured.\n\nFor the next release, this ticket proposes changing {{default-pool-size}} in \"jruby_puppet_core.clj\" from...\n\n{noformat}\n(+ 2 (ks/num-cpus))\n{noformat}\n\n...to...\n\n{noformat}\n(min 4 (max (- (ks/num-cpus) 1) 1))\n{noformat}\n\nThe above would ensure that by default the number of JRubies would never exceed 4 and would never exceed 1 less the number of cores on the node.  The latter would be useful for ensuring that the master doesn't consume every available core on the node under high workload situations, at least by default.\n___\nRisk assessment: Medium (QA will perform functional review, but no automated testing)\nProbability: Low (small simple code change)\nSeverity: Low (High, could cause OOM errors)", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16093", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "16093", "issueType": "Task", "key": "SERVER-448", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-30T11:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change default max-active-instances to not exceed 4 JRubies", "timeSpent": "PT0S", "updated": "2015-12-17T16:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "As discussed in Server team backlog grooming, for all unresolved tickets under this epic, I will remove the Fix versions, with the intention of reprioritizing these and/or picking them for the next possible release. \ncc [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5], [~accountid:623c12b6ee1b5a0070293582], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]\n", "created": "2015-08-14T12:40:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "According to Chris, the data in this epic is stale and should be deleted. Closing the epic.", "created": "2016-08-16T14:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "\"Done\" seems like a weird state for this one.  It's decidedly not done, and\nI think that both Jeremy and I feel like stuff in there ought to still get\nlooked at.  I don't think they're going to approve it, so I'm mostly OK\nwith that being on our \"probably won't make the cut\" list, I just probably\nwouldn't personally mark it as \"done\".\n\nThat said, this is all bananas anyway and I don't know what the right thing\nto do is for any of this stuff, so if \"Done\" seems right to you, it's fine.\n\nOn Tue, Aug 16, 2016 at 1:14 PM, Karen Van der Veer (JIRA) <\n\n", "created": "2016-08-16T15:14:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "Reopening", "created": "2016-08-18T08:55:00.000000"}], "components": [], "created": "2015-03-12T14:44:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d4df16d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-2"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Server- TBD tickets"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_yellow"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyor9z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_3_*:*_64564969025_*|*_6_*:*_2_*:*_153753390_*|*_10013_*:*_1_*:*_27073488663"}], "description": "This epic encapsulates all the tickets that have been groomed and listed as potential candidates to work on- at the first opportunity available, but aren't supporting a PE release or a PE feature. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16693", "fixedVersions": [], "id": "16693", "issueType": "Epic", "key": "SERVER-447", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2018-02-06T23:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Non PE- Puppet Server tickets to be scoped", "timeSpent": "PT0S", "updated": "2018-02-06T23:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Not sure why this is still open but the associated PR has already been merged for this.  Sounds like the PE level testing will be covered separately, so closing.", "created": "2015-05-22T14:16:00.000000"}], "components": [], "created": "2015-03-12T11:59:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62a6412c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzjgn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_2742345622_*|*_10007_*:*_2_*:*_2446830202_*|*_3_*:*_3_*:*_953431275_*|*_5_*:*_1_*:*_1044305745_*|*_6_*:*_1_*:*_0"}], "description": "Moving to a different web routing library, to improve ability to introspect routes (in support of other feature work).\n\nh3.QA:\nRisk Assessment: N/A: New features: Testing organized in PE-9588", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15842", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "15842", "issueType": "Improvement", "key": "SERVER-598", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-05-22T14:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "port Puppet Server to use comidi for web routes", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think in this case that puppetserver is behaving by design, although the error message could be more instructive.\n\nIf neither the private key nor the certificate file is present, puppetserver's master should, via the CA service, generate its own private key and certificate at initial startup.  If the private key file exists but the certificate does not at startup time, however, the service should fail startup with the error message that you saw.  Continuing on with the certificate generation process via the \"puppet cert\" CLI tool is a reasonable way to get past that problem.  Another approach that I would expect to work would be to just remove the private key file and let puppetserver regenerate one the next time it starts up.\n\nThis is a bit of a divergence between puppetserver's master and the Ruby-based WEBrick/Rack master.  For the Ruby-based master, I believe in this case that the certificate would automatically be generated from the private key and the service would eventually start up successfully.  For puppetserver, however, we were a little more cautious about letting the certificate automatically be generated in that it did not seem to be normal for the private key to exist without the certificate at startup and, so, we had thought that a user might want to have the change to do some manual remediation before continuing.", "created": "2015-03-12T10:27:00.000000"}, {"author": "623e756394742a00683f7cf7", "body": "This definitely sounds like a byproduct of how I stood up my test instance. \n\nMaybe it would be a good idea to add a warning and/or an opportunity to sign any pending requests like this in debconf?\n\nThanks!", "created": "2015-03-12T10:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Seems like we should attempt to improve either docs or error messaging around this, but probably not adopt the existing webrick behavior.", "created": "2015-03-16T17:27:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm guessing that this one may have been encountered for the same reason as is discussed in SERVER-528 - an agent being run before the Puppet Server master had been started for the first time.  I'm going to close this one out in favor of that ticket.", "created": "2015-05-09T16:07:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-12T10:05:00.000000", "creator": "623e756394742a00683f7cf7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b912dfa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynq9z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_372135513_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4660792907"}], "description": "Fresh install of puppetserver breaks on startup (after fixing SERVER-445):\n\n{code}\n015-03-12 15:36:59,577 INFO  [p.t.s.w.jetty9-core] Removing buggy security provider SunPKCS11-NSS version 1.7\n2015-03-12 15:37:05,478 INFO  [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2015-03-12 15:37:05,496 INFO  [p.t.s.w.jetty9-service] Initializing web server(s).\n2015-03-12 15:37:29,939 WARN  [puppet-server] Puppet Setting templatedir is deprecated. See http://links.puppetlabs.com/env-settings-deprecations\n   (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')\n2015-03-12 15:37:29,953 INFO  [puppet-server] Puppet Puppet settings initialized; run mode: master\n2015-03-12 15:37:32,142 INFO  [p.s.j.jruby-puppet-agents] Finished creating JRubyPuppet instance 1 of 3\n2015-03-12 15:37:32,157 INFO  [p.s.c.puppet-server-config-core] Initializing webserver settings from core Puppet\n2015-03-12 15:37:42,773 WARN  [puppet-server] Puppet Setting templatedir is deprecated. See http://links.puppetlabs.com/env-settings-deprecations\n   (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')\n2015-03-12 15:37:42,797 INFO  [puppet-server] Puppet Puppet settings initialized; run mode: master\n2015-03-12 15:37:45,731 INFO  [p.s.c.certificate-authority-service] CA Service adding a ring handler\n2015-03-12 15:37:45,752 WARN  [o.e.j.s.h.ContextHandler] Empty contextPath\n2015-03-12 15:37:45,796 INFO  [p.s.p.puppet-admin-service] Starting Puppet Admin web app\n2015-03-12 15:37:45,919 ERROR [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Cannot initialize master with partial state; need all files or none.\nFound:\n/var/lib/puppet/ssl/private_keys/vagrant-ubuntu-trusty-64.pem\nMissing:\n/var/lib/puppet/ssl/certs/vagrant-ubuntu-trusty-64.pem\n\n\tat puppetlabs.puppetserver.certificate_authority$eval10120$partial_state_error__10121$fn__10122.invoke(certificate_authority.clj:213) ~[na:na]\n\tat puppetlabs.puppetserver.certificate_authority$eval10120$partial_state_error__10121.invoke(certificate_authority.clj:198) ~[na:na]\n\tat puppetlabs.puppetserver.certificate_authority$eval10587$initialize_master_ssl_BANG___10588$fn__10591.invoke(certificate_authority.clj:583) ~[na:na]\n\tat puppetlabs.puppetserver.certificate_authority$eval10587$initialize_master_ssl_BANG___10588.invoke(certificate_authority.clj:564) ~[na:na]\n\tat puppetlabs.puppetserver.certificate_authority$eval10587$initialize_master_ssl_BANG___10588$fn__10589.invoke(certificate_authority.clj:569) ~[na:na]\n\tat puppetlabs.puppetserver.certificate_authority$eval10587$initialize_master_ssl_BANG___10588.invoke(certificate_authority.clj:564) ~[na:na]\n\tat puppetlabs.services.ca.certificate_authority_service$reify__14918$service_fnk__5259__auto___positional$reify__14927.initialize_master_ssl_BANG_(certificate_authority_service.clj:29) ~[na:na]\n\tat puppetlabs.services.protocols.ca$eval14880$fn__14881$G__14872__14885.invoke(ca.clj:3) ~[na:na]\n\tat puppetlabs.services.protocols.ca$eval14880$fn__14881$G__14871__14890.invoke(ca.clj:3) ~[na:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:167) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyTo(AFn.java:151) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:421) [puppet-server-release.jar:na]\n\tat puppetlabs.services.master.master_service$reify__11458$service_fnk__5259__auto___positional$reify__11471.init(master_service.clj:23) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval5095$fn__5122$G__5087__5125.invoke(services.clj:12) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval5095$fn__5122$G__5086__5129.invoke(services.clj:12) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$run_lifecycle_fn_BANG_.invoke(internal.clj:145) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$run_lifecycle_fns.invoke(internal.clj:173) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$build_app_STAR_$reify__5953.init(internal.clj:437) [na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_$fn__5965.invoke(internal.clj:463) [na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_.invoke(internal.clj:462) [na:na]\n\tat puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:113) [na:na]\n\tat puppetlabs.trapperkeeper.core$run.invoke(core.clj:144) [na:na]\n\tat puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159) [na:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:457) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:427) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:172) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:617) [puppet-server-release.jar:na]\n\tat puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:457) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:427) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:172) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:617) [puppet-server-release.jar:na]\n\tat clojure.main$main_opt.invoke(main.clj:335) [puppet-server-release.jar:na]\n\tat clojure.main$main.doInvoke(main.clj:440) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:512) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:435) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:185) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release.jar:na]\n\tat clojure.main.main(main.java:37) [puppet-server-release.jar:na]\n2015-03-12 15:37:45,938 INFO  [p.t.internal] Beginning shutdown sequence\n2015-03-12 15:37:45,971 INFO  [p.t.s.w.jetty9-service] Shutting down web server(s).\n2015-03-12 15:37:45,996 INFO  [p.t.internal] Finished shutdown sequence\n2015-03-12 15:37:46,678 INFO  [p.s.j.jruby-puppet-agents] Finished creating JRubyPuppet instance 2 of 3\n2015-03-12 15:37:52,527 WARN  [puppet-server] Puppet Setting templatedir is deprecated. See http://links.puppetlabs.com/env-settings-deprecations\n   (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')\n2015-03-12 15:37:52,546 INFO  [puppet-server] Puppet Puppet settings initialized; run mode: master\n2015-03-12 15:37:53,602 INFO  [p.s.j.jruby-puppet-agents] Finished creating JRubyPuppet instance 3 of 3\n{code}\n\n{{/var/lib/puppet/ssl/private_keys/vagrant-ubuntu-trusty-64.pem}}\u00a0exists from the VM's creation as well. \n\nCurious, I attempted the following below:\n\n{code}\nroot@vagrant-ubuntu-trusty-64:/var/lib/puppet/ssl# puppet cert generate vagrant-ubuntu-trusty-64\nWarning: Setting templatedir is deprecated. See http://links.puppetlabs.com/env-settings-deprecations\n   (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1139:in `issue_deprecation_warning')\nNotice: vagrant-ubuntu-trusty-64 has a waiting certificate request\nNotice: Signed certificate request for vagrant-ubuntu-trusty-64\nNotice: Removing file Puppet::SSL::CertificateRequest vagrant-ubuntu-trusty-64 at '/var/lib/puppet/ssl/ca/requests/vagrant-ubuntu-trusty-64.pem'\nNotice: Removing file Puppet::SSL::CertificateRequest vagrant-ubuntu-trusty-64 at '/var/lib/puppet/ssl/certificate_requests/vagrant-ubuntu-trusty-64.pem'\n{code}\n\nAfter doing this the server starts successfully.\n\nNot too sure if this is the domain of the package or even puppetserver, but it may be prudent to ensure that the host's certificate exists before startup, or just ensure that it is probably documented that the master needs a valid cert in the CA to start up correctly.\n", "environment": "Ubuntu 14.04 (Vagrant/Vbox) 1 GB RAM", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15044", "fixedVersions": [], "id": "15044", "issueType": "Bug", "key": "SERVER-446", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e756394742a00683f7cf7", "resolution": "Duplicate", "resolutionDate": "2015-05-09T16:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ubuntu puppetserver pacakge out-of-box startup failing due to missing certs", "timeSpent": "PT0S", "updated": "2016-01-19T07:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e756394742a00683f7cf7] this may be a dupe of SERVER-404 and SERVER-414?  Fixes for those are targeted at Puppet Server 1.1 and Puppet Server 2.0.", "created": "2015-03-12T09:59:00.000000"}, {"author": "623e756394742a00683f7cf7", "body": "Hey Chris,\n\nDefinitely a dupe and moreso a little inaccurate on my part (seeing as how 14.04 uses tmpfs as described). I've added functionality for this in my init scripts for now. \n\nThanks! ", "created": "2015-03-12T10:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Great, glad you have a workaround.  Thanks for the report, will mark this as a dupe and close, but feel free to re-open if you find anything else.", "created": "2015-03-12T11:05:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-12T09:50:00.000000", "creator": "623e756394742a00683f7cf7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@711fd992"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyu7b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4556461_*|*_6_*:*_1_*:*_0"}], "description": "Fresh install of Puppet server in an ubuntu/trusty64 Vagrant/Vbox VM. Tweaked memory settings to 512MB and set to startup. \n\nGot the following error:\n{code}\n2015-03-12 15:27:36,114 ERROR [puppet-server] /File[/var/run/puppet]/ensure change from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /var/run/puppet\n2015-03-12 15:27:36,159 ERROR [p.t.internal] shutdown-on-error triggered because of exception!\n{code}\n\nJVM stack trace excluded for sanity's sake.\n\nCreated {{/var/run/puppet}} manually with puppet:puppet permissions and got past this error (although there are other cert issues now that I will create a separate issue for)\n\nNot too sure if this is a result of how I am setting up things, however it would probably be a good idea to ensure that {{/var/run/puppet}} exists in the .deb with correct permissions to avoid this error.\n\nIncidentally, {{/var/run}} is in the directory tree for puppetserver, so it does not sound like a stretch to ask for {{/var/run/puppet}}:\n\n{code}\nroot@vagrant-ubuntu-trusty-64:/# dpkg -L puppetserver\n/.\n/var\n/var/run\n/var/log\n/var/log/puppetserver\n/usr\n/usr/bin\n/usr/bin/puppetserver\n/usr/share\n/usr/share/puppetserver\n/usr/share/puppetserver/cli\n/usr/share/puppetserver/cli/apps\n/usr/share/puppetserver/cli/apps/foreground\n/usr/share/puppetserver/cli/apps/gem\n/usr/share/puppetserver/cli/apps/ruby\n/usr/share/puppetserver/cli/apps/irb\n/usr/share/puppetserver/puppet-server-release.jar\n/usr/share/puppetserver/ezbake-functions.sh\n/usr/share/puppetserver/ezbake.manifest\n/usr/share/doc\n/usr/share/doc/puppetserver\n/usr/share/doc/puppetserver/changelog.Debian.gz\n/etc\n/etc/default\n/etc/default/puppetserver\n/etc/logrotate.d\n/etc/logrotate.d/puppetserver\n/etc/puppetserver\n/etc/puppetserver/logback.xml\n/etc/puppetserver/bootstrap.cfg\n/etc/puppetserver/conf.d\n/etc/puppetserver/conf.d/webserver.conf\n/etc/puppetserver/conf.d/puppetserver.conf\n/etc/puppetserver/conf.d/os-settings.conf\n/etc/puppetserver/conf.d/ca.conf\n/etc/puppetserver/conf.d/web-routes.conf\n/etc/puppetserver/conf.d/global.conf\n/etc/init.d\n/etc/init.d/puppetserver\n{code}", "environment": "Ubuntu 14.04 (Vagrant/Vbox) 1 GB RAM", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16371", "fixedVersions": [], "id": "16371", "issueType": "Bug", "key": "SERVER-445", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e756394742a00683f7cf7", "resolution": "Duplicate", "resolutionDate": "2015-03-12T11:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "(Ubuntu puppetserver pacakge) ", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Wow, that's weird, this really doesn't seem like something that should differ under Puppet Server.  We still run a large part of the original ruby puppetmaster code under the hood.  Anyway, thanks for the bug report.", "created": "2015-03-11T15:09:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "and the great things is my logs get added several 100 lines of this:\nMar 16 15:06:49 p-login01 puppet-agent[25010]: (/File[/var/lib/puppet/lib/facter/util/.svn/entries]/content) \nMar 16 15:06:49 p-login01 puppet-agent[25010]: (/File[/var/lib/puppet/lib/facter/util/.svn/entries]/content) --- /var/lib/puppet/lib/facter/util/.svn/entries#0112015-03-16 15:59:24.591919942 +0100\nMar 16 15:06:49 p-login01 puppet-agent[25010]: (/File[/var/lib/puppet/lib/facter/util/.svn/entries]/content) +++ /tmp/puppet-file20150316-25010-5y2edy-0#0112015-03-16 16:06:49.382918649 +0100\nMar 16 15:06:49 p-login01 puppet-agent[25010]: (/File[/var/lib/puppet/lib/facter/util/.svn/entries]/content) @@ -1,7 +1,7 @@\nMar 16 15:06:49 p-login01 puppet-agent[25010]: (/File[/var/lib/puppet/lib/facter/util/.svn/entries]/content)  10\nMar 16 15:06:49 p-login01 puppet-agent[25010]: (/File[/var/lib/puppet/lib/facter/util/.svn/entries]/content)  \nMar 16 15:06:49 p-login01 puppet-agent[25010]: (/File[/var/lib/puppet/lib/facter/util/.svn/entries]/content)  dir\nMar 16 15:06:49 p-login01 puppet-agent[25010]: (/File[/var/lib/puppet/lib/facter/util/.svn/entries]/content) -4529\nMar 16 15:06:49 p-login01 puppet-agent[25010]: (/File[/var/lib/puppet/lib/facter/util/.svn/entries]/content) +4541\n\neach fact (of which I have many) - logs this syslog..\n\n:(\n", "created": "2015-03-16T09:09:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:4e3eb0ca-7205-43fb-877c-a175a00d2181] is there anything unusual in your puppet.conf file?  Do you set a value for {{pluginsignore}}?\n\nWondering if this has to do with our handling of multi-value query params.", "created": "2015-04-10T13:51:00.000000"}, {"author": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "body": "My puppet.conf on server:\n[main]\n    logdir = /var/log/puppet\n    rundir = /var/run/puppet\n    ssldir = $vardir/ssl\n    modulepath = /etc/puppet/modules\n    pluginsync = true\n    dns_alt_names = puppet,puppet.example.com,puppetmaster.example.com\n\n[user]\n    ssl_client_header = SSL_CLIENT_S_DN\n    ssl_client_verify_header = SSL_CLIENT_VERIFY\n     localconfig = $vardir/localconfig\n        server = puppetmaster.example.com\n       ca = false\n        ca_server = puppetmaster-01.example.com\n     report = true\n        runinterval = 1800\n\n[agent]\n    classfile = $vardir/classes.txt\n    localconfig = $vardir/localconfig\n  server = puppetmaster.example.com\n  ca_server = puppetmaster-01.example.com\n    report = true\n  runinterval = 1800\n\n[master]\n        certname=puppetmaster-01.example.com\n        dns_alt_names=puppet.example.com,puppetmaster.example.com\n        ca_server=puppetmaster-01.example.com\n        templatedir=/var/lib/puppet/templates\n        reports         = puppetdb\n        storeconfigs = true\n        storeconfigs_backend = puppetdb\n        facts_terminus = rest\n        inventory_server = localhost\n        inventory_port = 8081\n        #ENC\n        node_terminus = exec\n       external_nodes = /usr/local/bin/puppet_node_classifier_enc.sh\n        modulepath = /home/$environment/puppet/modules/\n        manifest = /home/$environment/puppet/manifests/site.pp\n\n[production]\n        modulepath = /etc/puppet/modules\n        manifest = /etc/puppet/manifests/site.pp\n\n(and yes we haven't changed to directory environments yet.. we're almost ready to do that :)", "created": "2015-04-13T00:43:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Turns out the paths to ignore were being sent over by the agent as a list of query parameters which were being converted to a Clojure vector by Ring. The Puppet Ruby code ended up being tripped by this because the .is_a?(Array) test will fail on a Clojure PersistentVector. The PR I posted will correct this issue by converting all vectors to Ruby arrays.", "created": "2015-04-14T16:01:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The PR that [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] put up for this was merged.  That PR included a Ruby spec test which covers the code changes added to address the mishandled query parameter coercion.  The PR did not include any sort of a more automated \"system\" level test which exercises a full \"pluginsync\" from the agent to the master, confirming that the specified \"ignore\" arguments are properly honored.\n\n[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] - for QA's benefit around the acceptance testing to be done for this later, I think it would be good to document in this ticket what you did to test this manually at the \"pluginsync\" level.", "created": "2015-04-24T13:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This has been in the stable branch for a while now and Jenkins jobs are still passing in CI - see https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/266/ for example. Moving to \"testing\".\n\nAssuming [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] may still need to sync up with [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] around approaches for testing this at a system level.", "created": "2015-04-28T14:53:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] How did you test this?  Is this a corner case if the steps to reproduce include \"use config file enviornments?\"", "created": "2015-04-29T18:05:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Oh whoops... sorry, replying to this comment completely slipped my mind.  \n\nI tested this by creating a manifest which contained a module with a custom function. Inside the directory which contained the custom function I created a dummy \".svn\" directory which itself contained a dummy file. I then did an agent run (ensuring pluginsync is not turned off) and checked that the agent's car dir did not contain the .svn directory.", "created": "2015-05-11T12:01:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Sounds good to me.  Setting up for close.  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I'll throw a ticket saying that an acceptance test around this fix would be \"nice to have\" but I need more information/education about file syncing, what additional tests we should be doing, and how exactly we expect hide files from sync.", "created": "2015-05-11T12:10:00.000000"}], "components": [], "created": "2015-03-11T14:46:00.000000", "creator": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7bba8e5a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyov8f:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_351599290_*|*_1_*:*_1_*:*_441502610_*|*_10007_*:*_2_*:*_784325611_*|*_3_*:*_2_*:*_167348038_*|*_5_*:*_1_*:*_2002012969_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1113665584_*|*_10006_*:*_1_*:*_2402840193"}], "description": "I just had to migrate to puppetserver (passenger suddenly shot up in cpu usage - from never using 4 cores, to eating up 12 cores without actually working properly).. \n\nafter converting a few details, for ruby 1.9.. I now notice that fact sync sends a lot of extra files to all my nodes :(\n\n..\nNotice: /File[/var/lib/puppet/lib/puppetdb/.svn/text-base/lexer.l.svn-base]/ensure: defined content as '{md5}28c546275feb2e6d3c42a48de82bf00e'\nNotice: /File[/var/lib/puppet/lib/puppetdb/.svn/text-base/astnode.rb.svn-base]/ensure: defined content as '{md5}708e991268aab69e4b0967389c42abd3'\nNotice: /File[/var/lib/puppet/lib/puppetdb/.svn/text-base/util.rb.svn-base]/ensure: defined content as '{md5}5618f606db5a476978ba188ba82503db'\nNotice: /File[/var/lib/puppet/lib/puppetdb/.svn/text-base/grammar.y.svn-base]/ensure: defined content as '{md5}3eee58c0cecf64471979f2978f80e735'\nNotice: /File[/var/lib/puppet/lib/puppetdb/.svn/props]/ensure: created\nNotice: /File[/var/lib/puppet/lib/hiera/backend/.svn/tmp]/ensure: created\nNotice: /File[/var/lib/puppet/lib/hiera/backend/.svn/tmp/text-base]/ensure: created\nNotice: /File[/var/lib/puppet/lib/hiera/backend/.svn/tmp/props]/ensure: created\nNotice: /File[/var/lib/puppet/lib/hiera/backend/.svn/tmp/prop-base]/ensure: created\nNotice: /File[/var/lib/puppet/lib/puppet/provider/a2mod/.svn/tmp/text-base]/ensure: created\nNotice: /File[/var/lib/puppet/lib/puppet/parser/functions/.svn/tmp/text-base]/ensure: created\nNotice: /File[/var/lib/puppet/lib/puppet/property/.svn/tmp/text-base]/ensure: created\nNotice: /File[/var/lib/puppet/lib/puppet/parser/functions/.svn/text-base/union.rb.svn-base]/ensure: defined content as '{md5}137998fe47decf25aede20f0c0155a4c'\nNotice: /File[/var/lib/puppet/lib/puppet/parser/.svn/entries]/ensure: defined content as '{md5}66672296f74ce84e150747bbe1cf6092'\nNotice: /File[/var/lib/puppet/lib/facter/.svn/tmp/text-base]/ensure: created\nNotice: /File[/var/lib/puppet/lib/puppet/.svn/text-base]/ensure: created\nNotice: /File[/var/lib/puppet/lib/puppet/type/.svn/text-base/rabbitmq_user_permissions.rb.svn-base]/ensure: defined content as '{md5}2d12cd7d9c8bd2afd2e4a4b24a35b58b'\n\nie. it's suddenly started syncing hidden folders.. I'd rather it didn't, or that it was configurable :)\n\nh3.QA\nRisk Assessment: Medium (Needs FR)\nProbability: Low\nSeverity: Medium - Low", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16092", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "16092", "issueType": "Bug", "key": "SERVER-442", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:4e3eb0ca-7205-43fb-877c-a175a00d2181", "resolution": "Fixed", "resolutionDate": "2015-05-11T12:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "fact syncs hidden folders (ie. .svn)", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Relates to SERVER-521 in that this ticket will likely involve re-working the subcommand to allow pre-start actions and root-user only execution while SERVER-521 will involve similar changes for a daemon process rather than a foreground process.", "created": "2015-03-30T10:13:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Did some work in recent ezbake packaging to improve creation of /var/run directory at package install and reboot so this may no longer be relevant.  Closing...", "created": "2016-12-09T16:31:00.000000"}], "components": [], "created": "2015-03-11T13:03:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39137c8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z5j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_447599399_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_54778085939"}], "description": "For SERVER-404, some work was done to ensure that the appropriate /var/run/... directory has been created at the time the puppetserver service is started.  Previously, the /var/run/... directory might have only been created at installation time or by the \"puppet\" service if it happened to be started before the \"puppetserver\" service, depending upon the OS distribution.\n\nThe work for SERVER-404 adds creation of the directory to the service \"start\" phase.  When running \"puppetserver foreground\", however, none of the service \"start\" plumbing is invoked and so the logic that would create the /var/run/... directory would not be invoked.  Assuming the /var/run/... directory does not exist at the time \"puppetserver foreground\" were run -- e.g., because the puppetserver service were not enabled and \"puppetserver foreground\" were being run right after a reboot or initial installation -- the same missing /var/run/... directory problem from SERVER-404 could cause puppetserver to fail to start.\n\nThis could be created by working logic into the foreground script to create the directory - maybe via a generic ezbake hook for foreground like the one done for SERVER-404 that could be utilized across projects.  It would also be good if the pre-service execution script that \"puppetserver foreground\" and \"service puppetserver start\" were unified so that further changes to it would be picked up by both paths.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "17617", "fixedVersions": ["SERVER 2.y"], "id": "17617", "issueType": "Bug", "key": "SERVER-441", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Incomplete", "resolutionDate": "2016-12-09T16:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver foreground can fail if /var/run/... directory missing", "timeSpent": "PT0S", "updated": "2016-12-09T16:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623c0dfd8d8b9c0068b8af97", "body": "Take a look at the test results being ingested by telly. There is a properties section at the top of each junit output file that may contain information you want for #4.", "created": "2015-03-11T13:52:00.000000"}], "components": [], "created": "2015-03-11T12:47:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f193b06"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1808825428_*|*_3_*:*_1_*:*_1634129_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10984053421"}], "description": "Given my experience synchronizing test case IDs between test rail and puppet server tests in the qatests repository, I have a reasonably clear path to modifying those tests to update test rail with results when they run from Jenkins.\n\nAssuming we want each Jenkins nightly run recorded in a Test Rail Test Run,  The basic outline is this:\n1.  Create a small script to create a new test run in Test Rail.  This scripts reports out the name of the Test Run (as well as any other data required...)\n2.  Modify the Jenkins shell script to call the above script before beaker is called, and to assign the output of the script either to an environment variable or passed into the beaker options hash.  (This is work that would be checked into the JJB repo).\n3.  Modify the Jenkins shell script to call Telly after beaker returns execution to the Jenkins shell script, pass the Test Run ID into Telly.  (Again, this work is checked into JJB)\n4.  Enhance #1 with information about OS configuration and layout info.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16091", "fixedVersions": [], "id": "16091", "issueType": "Task", "key": "SERVER-440", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Duplicate", "resolutionDate": "2015-08-06T14:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Make QATests automatically update TestRail results.", "timeSpent": "PT0S", "updated": "2016-01-19T07:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c12b6ee1b5a0070293582] Just FYI: you can't do 'experimental' builds of things w/o including SNAPSHOT in the version string.  If you allow a run to go through CI w/o SNAPSHOT in the version string (no matter what corner of Jenkins it's running in), you will end up deploying an artifact to nexus:\n\nhttp://nexus.delivery.puppetlabs.net/content/repositories/releases/puppetlabs/puppet-server/2.0.0-rc1/\n\nThese artifacts are supposed to be immutable", "created": "2015-03-11T07:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c12b6ee1b5a0070293582] I just noticed the master CI jobs are green from last night!  So, first of all, OMGOMGOMG THANK YOU!  But secondly, now I'm wondering if maybe those runs are what created the nexus artifact, and maybe I just misunderstood your comment about the 'experimental rc1'?", "created": "2015-03-11T07:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "SERVER-390 was about writing acceptance tests for the foreground command.", "created": "2015-03-11T07:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK now I just saw https://github.com/puppetlabs/puppet-server/pull/435 , so it looks like the master branch doesn't have the version bump, which means that the nexus artifact probably did come from the experimental branch?", "created": "2015-03-11T07:58:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n\n{quote}Just FYI: you can't do 'experimental' builds of things w/o including SNAPSHOT in the version string.{quote}\n\nYep, this is a problem and a great opportunity for improvement in the system.  Last night was a great example of why it's a problem, we need to see if {{2.0.0-rc1}} is good, ahead of time, but we can't because it doesn't include SNAPSHOT in the version string.\n\n{quote}OK now I just saw https://github.com/puppetlabs/puppet-server/pull/435 , so it looks like the master branch doesn't have the version bump, which means that the nexus artifact probably did come from the experimental branch?{quote}\n\nYes, the nexus artifact came from my topic branch.", "created": "2015-03-11T13:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I'm going to mark this as resolved.   We've done the investigation and we know why it's failing.\n\nThe reason is that {{/var/log/puppetlabs/puppetserver}} is managed in the RPM spec, but it's ghosted.  This means the RPM will not create the directory, but it is considered \"owned\" by the package.  It's desirable that the package does not create the directory because if it does, then it could mask the issue described in SERVER-336 until the system is rebooted.\n\nThe solution is to make sure {{/var/log/puppetlabs/puppetserver}} is created during the startup phase of {{puppetserver}}.  SERVER-414 tracks this work for the 2.0.0 release.\n\nThe tests are green when they should be red because beaker calling {{puppet apply}} in the pre_suite causes {{/var/run/puppetlabs}} to change ownership from root to puppet.  This, in turn, allows the puppetserver to start because it is able to create the {{puppetserver}} subdirectory since the EUID of the jruby puppet processes are puppet and the parent directory is then owned by puppet.\n\n", "created": "2015-03-11T13:36:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-11T00:21:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e32362c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyysw7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Ran into this manually smoke testing a pre-build of rc1 built from my topic branch."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18064_*|*_5_*:*_1_*:*_48891159764_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_47682561"}], "description": "Installing an experimental build of 2.0.0-rc1, built in Job 5 from commit aba66ac using the experimental AIO pipeline at https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_init-manual_aio/\n\nI get this error trying to run {{puppetserver foreground}} immediately after installation.\n\nI suspect this is related to SERVER-404 not being merged, along with SERVER-336.  If we don't have acceptance tests for those tickets, we should definitely consider adding them.\n\n{code}\n[root@xqtfp3v6qzd7agn ~]# puppetserver foreground\nbash: puppetserver: command not found\n[root@xqtfp3v6qzd7agn ~]# /opt/puppetlabs/bin/puppetserver foreground\n2015-03-10 23:06:34,965 INFO  [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2015-03-10 23:06:34,982 INFO  [p.t.s.w.jetty9-service] Initializing web server(s).\n2015-03-10 23:06:47,723 INFO  [puppet-server] Puppet Puppet settings initialized; run mode: master\n2015-03-10 23:06:49,597 ERROR [puppet-server] Puppet Could not set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserve\nr\norg/jruby/RubyDir.java:443:in `mkdir'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:88:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:48:in `withumask'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:87:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:427:in `set'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:501:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:183:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:209:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:219:in `eval_resource'\norg/jruby/RubyMethod.java:128:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `thinmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:157:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:938:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42:in `initialize_p\nuppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_core.clj:229:in `invoke'\njruby_puppet_core.clj:199:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:39:in `invoke'\njruby_puppet_agents.clj:117:in `invoke'\ninternal.clj:247:in `invoke'\ninternal.clj:231:in `invoke'\ninternal.clj:286:in `shutdown_on_error'\ninternal.clj:255:in `invoke'\ninternal.clj:255:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\njruby_puppet_agents.clj:35:in `invoke'\ncore.clj:1913:in `invoke'\n2015-03-10 23:06:49,686 ERROR [puppet-server] Puppet Could not set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserve\nr\norg/jruby/RubyDir.java:443:in `mkdir'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:88:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:48:in `withumask'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:87:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:427:in `set'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:501:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:183:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:209:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:219:in `eval_resource'\norg/jruby/RubyMethod.java:128:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `thinmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:157:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:938:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42:in `initialize_p\nuppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_core.clj:229:in `invoke'\njruby_puppet_core.clj:199:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:39:in `invoke'\njruby_puppet_agents.clj:117:in `invoke'\ninternal.clj:247:in `invoke'\ninternal.clj:231:in `invoke'\ninternal.clj:286:in `shutdown_on_error'\ninternal.clj:255:in `invoke'\ninternal.clj:255:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\njruby_puppet_agents.clj:35:in `invoke'\ncore.clj:1913:in `invoke'\nWrapped exception:\nPermission denied - /var/run/puppetlabs/puppetserver\norg/jruby/RubyDir.java:443:in `mkdir'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:88:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:48:in `withumask'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:87:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:427:in `set'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:501:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:183:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:209:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:219:in `eval_resource'\norg/jruby/RubyMethod.java:128:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `thinmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:157:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:938:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42:in `initialize_p\nuppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_core.clj:229:in `invoke'\njruby_puppet_core.clj:199:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:39:in `invoke'\njruby_puppet_agents.clj:117:in `invoke'\ninternal.clj:247:in `invoke'\ninternal.clj:231:in `invoke'\ninternal.clj:286:in `shutdown_on_error'\ninternal.clj:255:in `invoke'\ninternal.clj:255:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\njruby_puppet_agents.clj:35:in `invoke'\ncore.clj:1913:in `invoke'\n2015-03-10 23:06:49,697 ERROR [puppet-server] /File[/var/run/puppetlabs/puppetserver]/ensure change from absent to directory failed: Could no\nt set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserver\n2015-03-10 23:06:49,748 ERROR [puppet-server] Puppet Could not set 'directory' on ensure: Permission denied - /etc/puppetlabs/puppet/ssl\norg/jruby/RubyDir.java:443:in `mkdir'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:88:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:48:in `withumask'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:87:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:427:in `set'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:501:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:183:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:209:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:219:in `eval_resource'\norg/jruby/RubyMethod.java:128:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `thinmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:157:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:938:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42:in `initialize_p\nuppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_core.clj:229:in `invoke'\njruby_puppet_core.clj:199:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:39:in `invoke'\njruby_puppet_agents.clj:117:in `invoke'\ninternal.clj:247:in `invoke'\ninternal.clj:231:in `invoke'\ninternal.clj:286:in `shutdown_on_error'\ninternal.clj:255:in `invoke'\ninternal.clj:255:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\njruby_puppet_agents.clj:35:in `invoke'\ncore.clj:1913:in `invoke'\n2015-03-10 23:06:49,775 ERROR [puppet-server] Puppet Could not set 'directory' on ensure: Permission denied - /etc/puppetlabs/puppet/ssl\norg/jruby/RubyDir.java:443:in `mkdir'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:88:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:48:in `withumask'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:87:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:427:in `set'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:501:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:183:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:209:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:219:in `eval_resource'\norg/jruby/RubyMethod.java:128:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `thinmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:157:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:938:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42:in `initialize_p\nuppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_core.clj:229:in `invoke'\njruby_puppet_core.clj:199:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:39:in `invoke'\njruby_puppet_agents.clj:117:in `invoke'\ninternal.clj:247:in `invoke'\ninternal.clj:231:in `invoke'\ninternal.clj:286:in `shutdown_on_error'\ninternal.clj:255:in `invoke'\ninternal.clj:255:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\njruby_puppet_agents.clj:35:in `invoke'\ncore.clj:1913:in `invoke'\nWrapped exception:\nPermission denied - /etc/puppetlabs/puppet/ssl\norg/jruby/RubyDir.java:443:in `mkdir'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:88:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:48:in `withumask'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:87:in `set_directory'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:427:in `set'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/property.rb:501:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:183:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:209:in `sync'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:204:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:219:in `eval_resource'\norg/jruby/RubyMethod.java:128:in `call'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:284:in `thinmark'\n/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:283:in `thinmark'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:147:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction.rb:138:in `evaluate'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:178:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/log.rb:157:in `with_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/transaction/report.rb:107:in `as_logging_destination'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:177:in `apply'\n/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:938:in `use'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config.rb:42:in `initialize_p\nuppet'\nfile:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_core.clj:229:in `invoke'\njruby_puppet_core.clj:199:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:39:in `invoke'\njruby_puppet_agents.clj:117:in `invoke'\ninternal.clj:247:in `invoke'\ninternal.clj:231:in `invoke'\ninternal.clj:286:in `shutdown_on_error'\ninternal.clj:255:in `invoke'\ninternal.clj:255:in `invoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\ncore.clj:626:in `invoke'\ncore.clj:2468:in `doInvoke'\njruby_puppet_agents.clj:35:in `invoke'\ncore.clj:1913:in `invoke'\n2015-03-10 23:06:49,777 ERROR [puppet-server] /File[/etc/puppetlabs/puppet/ssl]/ensure change from absent to directory failed: Could not set\n'directory' on ensure: Permission denied - /etc/puppetlabs/puppet/ssl\n2015-03-10 23:06:49,779 INFO  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/certs] Dependency File[/etc/puppetlabs/puppet/ssl] has failure\ns: true\n2015-03-10 23:06:49,780 WARN  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/certs] Skipping because of failed dependencies\n2015-03-10 23:06:49,782 INFO  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/public_keys] Dependency File[/etc/puppetlabs/puppet/ssl] has f\nailures: true\n2015-03-10 23:06:49,782 WARN  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/public_keys] Skipping because of failed dependencies\n2015-03-10 23:06:49,784 INFO  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/certificate_requests] Dependency File[/etc/puppetlabs/puppet/s\nsl] has failures: true\n2015-03-10 23:06:49,785 WARN  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/certificate_requests] Skipping because of failed dependencies\n2015-03-10 23:06:49,786 INFO  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/private_keys] Dependency File[/etc/puppetlabs/puppet/ssl] has\nfailures: true\n2015-03-10 23:06:49,787 WARN  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/private_keys] Skipping because of failed dependencies\n2015-03-10 23:06:49,789 INFO  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/private] Dependency File[/etc/puppetlabs/puppet/ssl] has failu\nres: true\n2015-03-10 23:06:49,790 WARN  [puppet-server] /File[/etc/puppetlabs/puppet/ssl/private] Skipping because of failed dependencies\nRuntimeError: Got 2 failure(s) while initializing: File[/var/run/puppetlabs/puppetserver]: change from absent to directory failed: Could not\nset 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserver; File[/etc/puppetlabs/puppet/ssl]: change from absent to dire\nctory failed: Could not set 'directory' on ensure: Permission denied - /etc/puppetlabs/puppet/ssl\n                use at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:948\n              apply at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:190\n                use at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:938\n  initialize_puppet at file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/puppet_config\n.rb:42\n         initialize at file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:27\n             invoke at jruby_puppet_core.clj:229\n             invoke at jruby_puppet_core.clj:199\n             invoke at jruby_puppet_agents.clj:54\n             invoke at jruby_puppet_agents.clj:39\n             invoke at jruby_puppet_agents.clj:117\n             invoke at internal.clj:247\n             invoke at internal.clj:231\n  shutdown_on_error at internal.clj:286\n             invoke at internal.clj:255\n             invoke at internal.clj:255\n             invoke at core.clj:626\n           doInvoke at core.clj:2468\n             invoke at core.clj:626\n           doInvoke at core.clj:2468\n             invoke at jruby_puppet_agents.clj:35\n             invoke at core.clj:1913\n2015-03-10 23:06:49,841 ERROR [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7068$prime_pool_BANG___7069$fn__7070.invoke(jruby_puppet_agents.clj:59) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7068$prime_pool_BANG___7069.invoke(jruby_puppet_agents.clj:39) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7145$send_prime_pool_BANG___7146$fn__7147$fn__7149.invoke(jruby_puppet_agents.cl\nj:117) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(\ninternal.clj:286) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) [na:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:160) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyTo(AFn.java:144) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:137) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.invoke(RestFn.java:408) [puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7046$send_agent__7047$fn__7048$agent_fn__7049.invoke(jruby_puppet_agents.clj:35)\n [na:na]\n        at clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:154) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:132) [puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.doRun(Agent.java:114) [puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.run(Agent.java:163) [puppet-server-release.jar:na]\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_75]\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_75]\n        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]\nCaused by: org.jruby.embed.InvokeFailedException: (RuntimeError) Got 2 failure(s) while initializing: File[/var/run/puppetlabs/puppetserver]:\n change from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserver; File[/etc\n/puppetlabs/puppet/ssl]: change from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /etc/puppetlabs/pup\npet/ssl\n        at org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(EmbedRubyObjectAdapterImpl.java:317) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(EmbedRubyObjectAdapterImpl.java:169) ~[puppet-server-release.jar:na\n]\n        at org.jruby.embed.ScriptingContainer.callMethod(ScriptingContainer.java:1508) ~[puppet-server-release.jar:na]\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_75]\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_75]\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_75]\n        at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_75]\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) ~[puppet-server-release.jar:na]\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) ~[puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6798$create_pool_instance_BANG___6799$fn__6800.invoke(jruby_puppet_core.clj:229) ~\n[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6798$create_pool_instance_BANG___6799.invoke(jruby_puppet_core.clj:199) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7068$prime_pool_BANG___7069$fn__7070.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        ... 24 common frames omitted\nCaused by: org.jruby.exceptions.RaiseException: (RuntimeError) Got 2 failure(s) while initializing: File[/var/run/puppetlabs/puppetserver]: c\nhange from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /var/run/puppetlabs/puppetserver; File[/etc/p\nuppetlabs/puppet/ssl]: change from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /etc/puppetlabs/puppe\nt/ssl\n        at RUBY.use(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:948) ~[na:na]\n        at RUBY.apply(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:190) ~[na:na]\n        at RUBY.use(/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:938) ~[na:na]\n        at RUBY.initialize_puppet(file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/pu\nppet_config.rb:42) ~[na:na]\n        at RUBY.initialize(file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb\n:27) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6798$create_pool_instance_BANG___6799$fn__6800.invoke(jruby_puppet_core.clj:229) ~\n[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6798$create_pool_instance_BANG___6799.invoke(jruby_puppet_core.clj:199) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7068$prime_pool_BANG___7069$fn__7070.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7068$prime_pool_BANG___7069.invoke(jruby_puppet_agents.clj:39) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7145$send_prime_pool_BANG___7146$fn__7147$fn__7149.invoke(jruby_puppet_agents.cl\nj:117) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(\ninternal.clj:286) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) [na:na]\n        at clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:626) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4228.doInvoke(core.clj:2468) [puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7046$send_agent__7047$fn__7048$agent_fn__7049.invoke(jruby_puppet_agents.clj:35)\n [na:na]\n        at clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913) [puppet-server-release.jar:na]\n2015-03-10 23:06:49,858 ERROR [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Unable to borrow JRuby instance from pool\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6898$validate_instance_from_pool_BANG___6899$fn__6900.invoke(jruby_puppet_core.clj\n:293) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6898$validate_instance_from_pool_BANG___6899.invoke(jruby_puppet_core.clj:283) ~[n\na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6996$borrow_from_pool_with_timeout__6997$fn__6998.invoke(jruby_puppet_core.clj:343\n) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6996$borrow_from_pool_with_timeout__6997.invoke(jruby_puppet_core.clj:331) ~[na:na\n]\n        at puppetlabs.services.jruby.jruby_puppet_service$reify__7276$service_fnk__5259__auto___positional$reify__7287.borrow_instance(jruby_\npuppet_service.clj:55) ~[na:na]\n        at puppetlabs.services.config.puppet_server_config_core$eval9656$get_puppet_config__9657$fn__9658$fn__9659.invoke(puppet_server_confi\ng_core.clj:102) ~[na:na]\n        at puppetlabs.services.config.puppet_server_config_core$eval9656$get_puppet_config__9657$fn__9658.invoke(puppet_server_config_core.cl\nj:102) ~[na:na]\n        at", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17284", "fixedVersions": [], "id": "17284", "issueType": "Bug", "key": "SERVER-439", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-11T13:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate puppetserver foreground failing in \"2.0.0-rc1\"", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Can't produce until SERVER-414 is sorted out.", "created": "2015-03-11T11:45:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "SSL directory issues block this.  These SSL issues are captured in SERVER-358", "created": "2015-03-11T11:46:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Blocked by RE-4141 in that we need to flow the provides changes being made to puppet-agent through our CI system before we cut the rc2 version.", "created": "2015-03-13T12:15:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pull request submitted for the 2.0.0-rc2 version bump:\n\nhttps://github.com/puppetlabs/puppet-server/pull/454", "created": "2015-03-16T15:39:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pull request merged as e2bffe0.\n\npuppetserver 2.0.0-rc2 is built by Jenkins project puppet-server (master) 10: Lein EZBake [build 101|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/Master%20Branch/job/platform_puppet-server_packaging-os-clj_lein-ezbake_master/101/].\n\nPackages are available at: http://builds.puppetlabs.lan/puppetserver/2.0.0-rc2/\n\nVersion identifier returned to 2.0.0-SNAPSHOT to avoid issues with the nightly timer trigger builds running with a reused immutable version identifier.\n\n\n", "created": "2015-03-16T22:34:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "We have 2.0.0-rc2 built, but it didn't get shipped to nightlies.  2.0.0-rc3 is currently being built and should get shipped to nighties as per SERVER-477.", "created": "2015-03-17T08:34:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-10T17:09:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fc936bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyygm7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found AIO work.  We need an rc1 version."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_37183927_*|*_1_*:*_1_*:*_12042_*|*_10007_*:*_3_*:*_85156845_*|*_3_*:*_6_*:*_11191772_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_4_*:*_440330884"}], "description": "NOTE: Decision made to go to 2.0.0-rc2 because 2.0.0-rc1 was pushed into Nexus as a non-snapshot build and we don't trust Nexus to handle different artifacts with the same version identifier.\n\nThis is the next most critical step along the wonderful and glorious path to 2.0.0.\n\nOnce the master branch of puppetserver is fully green for EL-7, we need to produce a {{2.0.0-rc2}} build.  This entails:\n\n1. [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] will update the master branch pipeline to accept a git SHA parameter as a manual job with no other triggers.\n\n2. [~accountid:623c12b6ee1b5a0070293582] Will submit a PR to bump the version identifier for the project to {{2.0.0-rc2}} (note the hypen, this is very specific and confirmed with [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920])  This PR should only be merged if the master branch is fully green following the merge into master of https://github.com/puppetlabs/puppet-server/pull/432\n\n3. Once built, Jeff will submit another PR to return the version identifier to {{2.0.0-SNAPSHOT}}.\n\n4. Finally, make sure to add an annotated git tag named {{2.0.0-rc2}} with the exact SHA that brings in the {{2.0.0-rc2}} version identifier.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16691", "fixedVersions": ["SERVER 2.0.0"], "id": "16691", "issueType": "Task", "key": "SERVER-438", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-17T08:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Produce puppetserver 2.0.0-rc2", "timeSpent": "PT0S", "updated": "2015-04-21T16:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged and corresponding Jenkins job against the Puppet Server stable branch was green - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/190/.\n\nNo functional changes here for QA to review - just a version dependency bump - so moving to \"resolved\".", "created": "2015-03-17T09:54:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-10T15:56:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7998cd87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywu0f:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_66094521_*|*_1_*:*_1_*:*_259261537_*|*_10007_*:*_1_*:*_13526259_*|*_3_*:*_1_*:*_244166898_*|*_5_*:*_1_*:*_1150084693_*|*_6_*:*_1_*:*_0"}], "description": "The stable branch of Puppet Server is still on the old {{certificate-authority 0.6.0}}, but other dependencies are bringing in {{jvm-ssl-utils 0.8.0}}.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16370", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "16370", "issueType": "Task", "key": "SERVER-437", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-03-17T09:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade stable branch to jvm-ssl-utils 0.8.0", "timeSpent": "PT0S", "updated": "2015-06-01T18:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Will wait until the next time this comes up and pair with [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] to see what would need to be done to test the PR.", "created": "2015-04-01T11:14:00.000000"}], "components": [], "created": "2015-03-10T11:29:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a465a88"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyys7b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1899887121_*|*_6_*:*_1_*:*_0"}], "description": "Discover, document, and script a procedure to build Trapperkeeper from source via beaker, to enable more timely functional review of trapper keeper tickets.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15839", "fixedVersions": [], "id": "15839", "issueType": "Task", "key": "SERVER-436", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-04-01T11:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Get a method for performing early functional review against Trapperkeeper PRs.", "timeSpent": "PT0S", "updated": "2015-04-14T16:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "This should look like {{gem 'beaker', *location_for(ENV['BEAKER_LOCATION'] || 'git://github.com/puppetlabs/beaker#master')}} in the Gemfile.", "created": "2015-03-09T14:31:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Relates to PUP-4056 in that the beaker pin was last updated there in Puppet.  We're synchronizing on this change:\n\n{code}\ncommit 890102b80ffe945052be24990d57ec1e3039e253\nAuthor: Josh Cooper <josh@puppetlabs.com>\nDate:   Mon Mar 9 15:23:21 2015 -0700\n\n    (PUP-4056) Update pin to beaker version that supports AIO\n\n    Updates the default beaker pin to a version that supports AIO.\n\ndiff --git a/acceptance/Gemfile b/acceptance/Gemfile\nindex d0c2f92..2fe81cc 100644\n--- a/acceptance/Gemfile\n+++ b/acceptance/Gemfile\n@@ -12,7 +12,7 @@ def location_for(place, fake_version = nil)\n   end\n end\n\n-gem \"beaker\", *location_for(ENV['BEAKER_VERSION'] || 'git://github.com/puppetlabs/beaker#31bc7aa4405ac4fa0a2896be1c644dee34a0ea3e')\n+gem \"beaker\", *location_for(ENV['BEAKER_VERSION'] || 'git://github.com/puppetlabs/beaker#7d0cccf22cc7289113de862fe4a4494872f574bb')\n gem \"rake\", \"~> 10.1\"\n gem \"httparty\", :require => false\n gem 'uuidtools', :require => false\n{code}", "created": "2015-03-10T10:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Ready for merge: https://github.com/puppetlabs/puppet-server/pull/430", "created": "2015-03-10T10:37:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA doesn't need to test this", "created": "2015-03-10T14:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "puppet-server master tests on EL7 are passing now - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/ - so moving this to 'Done'.", "created": "2015-03-11T14:48:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-09T14:29:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1dd800bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyrdj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found AIO.  Josh mentioned this work blocks QENG-1916"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_90535698_*|*_1_*:*_1_*:*_52746_*|*_10007_*:*_1_*:*_10980852_*|*_3_*:*_1_*:*_387633_*|*_5_*:*_1_*:*_48886805843_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_71977141"}], "description": "Puppet Server needs to track beaker master branch so that we know we're able to do a full release of beaker prior to the AIO GA releases.\n\nThe beaker release is tracked in QENG-1916.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15215", "fixedVersions": ["SERVER 2.0.0"], "id": "15215", "issueType": "Task", "key": "SERVER-435", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-11T14:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change puppetserver master branch to track Beaker as Puppet does", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Failing in the same way as described in SERVER-502.", "created": "2015-03-20T11:48:00.000000"}], "components": [], "created": "2015-03-09T10:44:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@379e4d2d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyr6v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_954258237_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15214", "fixedVersions": [], "id": "15214", "issueType": "Sub-task", "key": "SERVER-434", "labels": [], "originalEstimate": "PT0S", "parent": "17064", "parentSummary": "Try out puppet-server acceptance against aio packages for non-el7 linux platforms", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-20T11:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Try Puppet Server on Debian 7 64 bit", "timeSpent": "PT0S", "updated": "2015-03-20T11:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "kicked off in [build #47|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_smoke-aio/47/]", "created": "2015-03-20T11:59:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Failed in the repository setup phase.  Filed as SERVER-505.", "created": "2015-03-20T12:12:00.000000"}], "components": [], "created": "2015-03-09T10:44:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5025c508"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyr6n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_954939921_*|*_3_*:*_1_*:*_721431_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17616", "fixedVersions": [], "id": "17616", "issueType": "Sub-task", "key": "SERVER-432", "labels": [], "originalEstimate": "PT0S", "parent": "17064", "parentSummary": "Try out puppet-server acceptance against aio packages for non-el7 linux platforms", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-20T12:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Try Puppet Server on Debian 8 64 bit", "timeSpent": "PT0S", "updated": "2015-03-20T12:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Trying a build with {{PLATFORM=redhat6}} {{LAYOUT=64m-64a}}\n\n", "created": "2015-03-18T18:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Trying again with {{PLATFORM=redhat7 redhat6 ubuntu1404 ubuntu1204 debian7}} and {{LAYOUT=64m-64a 64m-windows2008r2-64a}}", "created": "2015-03-18T18:52:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Having trouble getting the host configurations right.  My challenge is to figure out the PLATFORM and LAYOUT strings that make up the sparse configuration matrix Josh, Justin and I came up with this morning.  Specifically:\n\n{code}\n+ export LAYOUT=64m-64a\n+ LAYOUT=64m-64a\n+ bundle exec genconfig2 redhat7\n+ cat hosts.cfg\n---\nHOSTS: {}\nCONFIG:\n  nfs_server: none\n  consoleport: 443\n  datastore: instance0\n  folder: Delivery/Quality Assurance/Enterprise/Dynamic\n  resourcepool: delivery/Quality Assurance/Enterprise/Dynamic\n  pooling_api: http://vcloud.delivery.puppetlabs.net/\n{code}", "created": "2015-03-18T20:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "From the build attempt [here|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_smoke-aio/LAYOUT=64m-64a,LDAP_TYPE=,PLATFORM=redhat7,label=beaker/38/console].", "created": "2015-03-18T20:30:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "The following layouts pass smoke testing:\n\n * {{redhat6-64a}}\n * {{redhat6-64m-32a}}\n\nWaiting on acceptance testing running in [build #25|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_full-aio/25/]", "created": "2015-03-19T17:52:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "The [full acceptance suite|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_full-aio/25/] passed for redhat6-64ma and redhat6-64m-32-a", "created": "2015-03-20T10:55:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-09T10:44:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@336e5cdd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyr6f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_789922596_*|*_3_*:*_2_*:*_161132047_*|*_5_*:*_1_*:*_8476_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17065", "fixedVersions": [], "id": "17065", "issueType": "Sub-task", "key": "SERVER-430", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "17064", "parentSummary": "Try out puppet-server acceptance against aio packages for non-el7 linux platforms", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-20T10:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Try Puppet Server on RHEL6 64 bit", "timeSpent": "PT0S", "updated": "2015-03-20T10:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "kicked off in [build #47|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_smoke-aio/47/]", "created": "2015-03-20T11:59:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Failing in repository setup step.  Should be pretty straightforward to fix.  Filed as SERVER-505.", "created": "2015-03-20T12:18:00.000000"}], "components": [], "created": "2015-03-09T10:44:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46b864be"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyr67:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_954968606_*|*_3_*:*_1_*:*_1060591_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16369", "fixedVersions": [], "id": "16369", "issueType": "Sub-task", "key": "SERVER-428", "labels": [], "originalEstimate": "PT0S", "parent": "17064", "parentSummary": "Try out puppet-server acceptance against aio packages for non-el7 linux platforms", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-20T12:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Try Puppet Server on Fedora 20 64 bit", "timeSpent": "PT0S", "updated": "2015-03-20T12:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Tried it out, we're getting failures in the pre-suite which look to be packaging errors in puppetserver.  This is tracked in SERVER-502.", "created": "2015-03-20T11:21:00.000000"}], "components": [], "created": "2015-03-09T10:44:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1eb9310f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyr5z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_952609997_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15837", "fixedVersions": [], "id": "15837", "issueType": "Sub-task", "key": "SERVER-426", "labels": [], "originalEstimate": "PT0S", "parent": "17064", "parentSummary": "Try out puppet-server acceptance against aio packages for non-el7 linux platforms", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Done", "resolutionDate": "2015-03-20T11:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Try puppet-server on Ubuntu 14.04 64 bit (trusty)", "timeSpent": "PT0S", "updated": "2015-03-20T11:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Tried it out, we're getting failures in the pre-suite which look to be packaging errors in puppetserver. This is tracked in SERVER-503.", "created": "2015-03-20T11:33:00.000000"}], "components": [], "created": "2015-03-09T10:44:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17b922e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyr5r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_953325749_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15213", "fixedVersions": [], "id": "15213", "issueType": "Sub-task", "key": "SERVER-424", "labels": [], "originalEstimate": "PT0S", "parent": "17064", "parentSummary": "Try out puppet-server acceptance against aio packages for non-el7 linux platforms", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Done", "resolutionDate": "2015-03-20T11:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Try Puppet Server on Ubuntu 12.04 64 bit (precise)", "timeSpent": "PT0S", "updated": "2015-03-20T11:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Working with Wayne today, we sorted out the following plan of action:\n\nWithin the context of the aio branch and pipeline, which strives to mirror the master pipeline so that we can easily integrate back into master when the time comes, the following things are true:\n\n * Jobs inside of the pipeline are matrix jobs, but there is only a single dimension to the matrix.  There are not multiple dimensions in order to avoid testing combinations that we don't want to test or having to deal with combination filters.\n * The single dimension is on LAYOUT.  PLATFORM will remain because it may cause issues if it is removed, but the value of PLATFORM will be empty (NONE).\n * sqa-utils-gem is sufficient.  It needs to have support added for fedora20 and debian8, which is ticketed in QENG-2053.  These VM's already exist as templates in the pooler.  It would be a nice to avoid the default of adding the agent role to the master, but this is non-trivial to add.", "created": "2015-03-19T16:21:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Here's the list of layouts we want to test based on the meeting with Josh Cooper and Justin Stoller:\n\nThe thinking is: We're going to test the agent running on the master at 64 bit.  For additional coverage we're going to test a 32 bit agent, when available, over the network.  We're going to get windows coverage by testing win2008r2-64a against redhat7 on merge and nightly and windows2008-r2-64a nightly against ubuntu1404-65m.\n\nThe values for the LAYOUT parameter are:\n\nOn Merge:\n\n{code}\nredhat7-64ma\nredhat7-64m-windows2008r2-64a\nubuntu1404-64ma\n{code}\n\nNightly:\n\n{code}\nredhat7-64m-windows2008r2-64a\nubuntu1404-64m-windows2008r2-64a\n\nredhat7-64ma\nredhat6-64ma\nubuntu1404-64ma\nubuntu1204-64ma\ndebian7-64ma\ndebian8-64ma\nfedora20-64ma\n\nredhat7-64m-64a (32 bit is not available)\nredhat6-64m-32a\nubuntu1404-64m-32a\nubuntu1204-64m-32a\ndebian7-64m-32a\ndebian8-64m-32a\nfedora20-64m-32a\n{code}", "created": "2015-03-19T16:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[Build #42|https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_smoke-aio/42/] is the first build that I've run that attempts all of the GA targets.", "created": "2015-03-19T16:48:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Build #42 was no-good because 2.0.0-rc3 has only RHEL7 packages.\n\n[Build #46|https://jenkins.puppetlabs.com/job/experimental_puppet-server_integration-system_smoke-aio/46/] is closer because {{PACKAGE_BUILD_VERSION=2.0.0.SNAPSHOT.2015.03.19T1436}}, which has package builds for RPM and DEB platforms.  Similarly, puppet-agent 0.9.0 is not a suitable value for {{PUPPET_BUILD_VERSION}} becasue it is rhel7 only as well.  Recent puppet-agent builds with expanded platforms are suitable.", "created": "2015-03-19T17:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Putting into closed because all of the platforms have been run and triaged into other tickets.", "created": "2015-03-20T12:19:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-09T10:44:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f34b2e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp1x3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "With EL7 nearing release state, we found the need to scope the work required for additional platforms."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22840491_*|*_3_*:*_1_*:*_245116735_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_688100262"}], "description": "We are currently running the AIO puppet-server component pipeline:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/\n\nagainst EL7 only.\n\nWe will be adding additional platforms once we get EL7 out the door a in priority order which can be found here:\n\nhttps://docs.google.com/a/puppetlabs.com/document/d/1SvhwLO39RxEU1irp0cYXSJQwWFO7kc_3brh0egV-fkY/edit\n\nNote that, in addition to EL7, we have have packages currently for:\n\n * RHEL5\n * RHEL6\n * Debian 7 (wheezy)\n * Ubuntu 12.04 (precise)\n * Ubuntu 14.04 (trusty)\n\nFor each platform, please add a comment to the ticket reporting success/failure. If there are failures, create tickets to track the followup work (i.e. don't do it in the aegis of this ticket or it might live forever).\nOne thing to note is that we should only be testing against el7 masters, so some of the node configs (in acceptance/config/nodes) will need to be updated accordingly.\n\n----\nRisk assessment: Low (no additional validation needed)\nProbability: Low (does not impact users)\nSeverity:  Low (does not impact users)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17064", "fixedVersions": [], "id": "17064", "issueType": "Task", "key": "SERVER-420", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-20T12:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Try out puppet-server acceptance against aio packages for non-el7 linux platforms", "timeSpent": "PT0S", "updated": "2015-03-25T16:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Likely here:\n\n{code}\n+ bundle exec genconfig centos7-64mdca\n+ cat hosts.cfg\n---\nHOSTS:\n  centos7-64-1:\n    roles:\n    - agent\n    - master\n    - database\n    - dashboard\n    hypervisor: vcloud\n    pe_dir: \n    pe_ver: \n    pe_upgrade_dir: \n    pe_upgrade_ver: \n    platform: el-7-x86_64\n    template: Delivery/Quality Assurance/Templates/vCloud/centos-7-x86_64\nCONFIG:\n  nfs_server: none\n  consoleport: 443\n  datastore: instance0\n  folder: Delivery/Quality Assurance/Enterprise/Dynamic\n  resourcepool: delivery/Quality Assurance/Enterprise/Dynamic\n  pooling_api: http://vcloud.delivery.puppetlabs.net/\n+ set +x\n{code}", "created": "2015-03-06T17:16:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "This is because beaker removed puppetserver-confdir from AIO defaults. You should be able to add the following globally in your options.rb file (as opposed to each host file):\n\n{code:ruby}\n  :is_puppetserver => true,\n  :puppetservice => 'puppetserver',\n  :'puppetserver-confdir' => '/etc/puppetlabs/puppetserver/conf.d',\n{code}", "created": "2015-03-06T17:22:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Thanks Josh, I'll try that out.", "created": "2015-03-06T17:35:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Adding the {{puppetserver-confdir}} key to {{options.rb}} resolved this problem in the aio branch of puppet-server.  Moving to resolved.", "created": "2015-03-09T10:14:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{code}\ncommit 62e2ffb13810cc0b059c6f3be0fe819c3a977205\nAuthor: Jeff McCune <jeff@puppetlabs.com>\nDate:   Fri Mar 6 16:35:27 2015 -0800\n\n    (SERVER-419) Add puppetserver-confdir to beaker options\n\ndiff --git a/acceptance/config/beaker/options.rb b/acceptance/config/beaker/options.rb\nindex 1570d37..08cb105 100644\n--- a/acceptance/config/beaker/options.rb\n+++ b/acceptance/config/beaker/options.rb\n@@ -8,6 +8,7 @@\n   \"puppetservice\" => 'puppetserver',\n   \"use-service\" => true,\n   \"master-start-curl-retries\" => 60,\n-  \"puppetpath\" => \"/etc/puppetlabs/agent\"\n+  \"puppetpath\" => \"/etc/puppetlabs/puppet\",\n+  \"puppetserver-confdir\" => '/etc/puppetlabs/puppetserver/conf.d'\n }\n{code}", "created": "2015-03-09T10:14:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-06T17:12:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e818aac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyqxj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found new errors in acceptance tests now that QENG-1946 is merged"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5057_*|*_3_*:*_1_*:*_230536282_*|*_5_*:*_1_*:*_49076076385_*|*_6_*:*_1_*:*_0"}], "description": "In the aio branch of puppet-server, I'm seeing the following failure now that we're tracking beaker's master branch and QENG-1946 has been merged in.\n\n{code}\n#<RuntimeError: Error: /puppetserver.conf does not exist on bnck3n2w2tclnq8.delivery.puppetlabs.net>\n/workspace/serious/src/beaker/lib/beaker/dsl/helpers.rb:778\n/workspace/serious/src/beaker/lib/beaker/dsl/helpers.rb:584\n/workspace/serious/src/puppet-server/acceptance/lib/helper.rb:102\n/workspace/serious/src/puppet-server/acceptance/suites/pre_suite/foss/90_validate_sign_cert.rb:5\n/workspace/serious/src/beaker/lib/beaker/test_case.rb:120\n/workspace/serious/src/beaker/lib/beaker/test_case.rb:120\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/2.1.0/benchmark.rb:294\n/workspace/serious/src/beaker/lib/beaker/test_case.rb:117\n/workspace/serious/src/beaker/lib/beaker/test_suite.rb:286\n/workspace/serious/src/beaker/lib/beaker/test_suite.rb:283\n/workspace/serious/src/beaker/lib/beaker/test_suite.rb:283\n/workspace/serious/src/beaker/lib/beaker/test_suite.rb:325\n/workspace/serious/src/beaker/lib/beaker/cli.rb:149\n/workspace/serious/src/beaker/lib/beaker/cli.rb:89\n/workspace/serious/src/beaker/bin/beaker:6\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bin/beaker:23\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bin/beaker:23\nWarning: acceptance/suites/pre_suite/foss/90_validate_sign_cert.rb errored in 2.88 seconds\n{code}\n\nI suspect this is because our host configuration does not define {{puppetserver-confdir}} in:\n\n{code}\npuppetserver_conf = File.join(\"#{host['puppetserver-confdir']}\", \"puppetserver.conf\")\n{code}\n\nat beaker {{lib/beaker/dsl/helpers.rb:583}}", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15609", "fixedVersions": ["SERVER 2.0.0"], "id": "15609", "issueType": "Task", "key": "SERVER-419", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-09T10:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate AIO 90_validate_sign_cert.rb failure (Error: /puppetserver.conf does not exist)", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Relates to PUP-4111 in that [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] is also seeing errors.  These may or may not be the same issue at this point.\n\nOur master branch is pinned a bit behind where puppet is, but it is strange that this started failing since everything is pinned in the master branch of puppet-server.\n\n[~accountid:63d40628f6e1b543161789a7] mentioned this could be an order-dependent error.", "created": "2015-03-06T15:51:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The error {{undefined method `keys' for nil:NilClass}} is occurring because the test is using {{puppetpath}} with an incorrect value, likely in a host config file.\n\nStarting at https://github.com/puppetlabs/puppet/blob/b792d8437f925a640f74bc1642fb6a129b276e72/acceptance/lib/puppet/acceptance/environment_utils.rb#L230, it passes in {{master\\['puppetpath'\\]}}, which tries to get a directory hash: https://github.com/puppetlabs/puppet/blob/b792d8437f925a640f74bc1642fb6a129b276e72/acceptance/lib/puppet/acceptance/environment_utils.rb#L170. This causes the `ls` call to fail in https://github.com/puppetlabs/puppet/blob/b792d8437f925a640f74bc1642fb6a129b276e72/acceptance/lib/puppet/acceptance/environment_utils.rb#L160, an exception is raise (due to non-zero exit code), but the {{ensure}} block tries to cleanup {{new_files}} which was never initialized. https://github.com/puppetlabs/puppet/blob/b792d8437f925a640f74bc1642fb6a129b276e72/acceptance/lib/puppet/acceptance/environment_utils.rb#L207", "created": "2015-03-06T16:41:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Leaving this open because I still need to make a determination if we need to change something in puppet server land to get this resolved.\n\nI don't think so because this isn't failing in the aio branches and I've never seen it fail there, but leaving it open over the weekend to figure out how to find out for sure.", "created": "2015-03-06T17:07:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Not an issue in the aio branch for the reasons Josh described.", "created": "2015-03-09T14:54:00.000000"}], "components": [], "created": "2015-03-06T15:22:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d223ead"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyqn3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found errors in acceptance tests, need to investigate"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5859_*|*_3_*:*_1_*:*_253897943_*|*_5_*:*_1_*:*_49059286689_*|*_6_*:*_1_*:*_0"}], "description": "We're seeing errors like these in master:\n\n{code}\n  * clear out the temporary files\n#<NoMethodError: undefined method `keys' for nil:NilClass>\n/var/lib/jenkins/workspace/platform_puppet-server_integration-system_full-master/LAYOUT/64mdca-64a/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/lib/puppet/acceptance/environment_utils.rb:207\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/dsl/structure.rb:41\n/var/lib/jenkins/workspace/platform_puppet-server_integration-system_full-master/LAYOUT/64mdca-64a/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/lib/puppet/acceptance/environment_utils.rb:206\n/var/lib/jenkins/workspace/platform_puppet-server_integration-system_full-master/LAYOUT/64mdca-64a/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/lib/puppet/acceptance/environment_utils.rb:210\n/var/lib/jenkins/workspace/platform_puppet-server_integration-system_full-master/LAYOUT/64mdca-64a/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/lib/puppet/acceptance/environment_utils.rb:230\n/var/lib/jenkins/workspace/platform_puppet-server_integration-system_full-master/LAYOUT/64mdca-64a/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/tests/environment/environment_scenario-master_environmentpath.rb:26\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/test_case.rb:120\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/test_case.rb:120\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/benchmark.rb:295\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/test_case.rb:117\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/test_suite.rb:286\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/test_suite.rb:283\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/test_suite.rb:283\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/test_suite.rb:325\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/cli.rb:147\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/lib/beaker/cli.rb:93\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-32e123e9a5b7/bin/beaker:6\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\nUnstubbing address forge.puppetlabs.com to IP 10.32.23.69 on machine u94oyziazul9yz7.delivery.puppetlabs.net\n\nu94oyziazul9yz7.delivery.puppetlabs.net (centos7-64-1) 13:09:10$ puppet resource host forge.puppetlabs.com ensure=absent\nNotice: /Host[forge.puppetlabs.com]/ensure: removed\nhost { 'forge.puppetlabs.com':\n  ensure => 'absent',\n}\n\nu94oyziazul9yz7.delivery.puppetlabs.net (centos7-64-1) executed in 0.55 seconds\nUnstubbing address forgeapi.puppetlabs.com to IP 10.32.23.69 on machine u94oyziazul9yz7.delivery.puppetlabs.net\n\nu94oyziazul9yz7.delivery.puppetlabs.net (centos7-64-1) 13:09:11$ puppet resource host forgeapi.puppetlabs.com ensure=absent\nNotice: /Host[forgeapi.puppetlabs.com]/ensure: removed\nhost { 'forgeapi.puppetlabs.com':\n  ensure => 'absent',\n}\n\nu94oyziazul9yz7.delivery.puppetlabs.net (centos7-64-1) executed in 0.58 seconds\nWarning: ruby/puppet/acceptance/tests/environment/environment_scenario-master_environmentpath.rb errored in 5.21 seconds\n{code}\n\nFailing tests:\n\n{code}\nacceptance/tests/environment/environment_scenario-bad.rb\nacceptance/tests/environment/environment_scenario-default.rb\nacceptance/tests/environment/environment_scenario-existing.rb\nacceptance/tests/environment/environment_scenario-master_environmentpath.rb\nacceptance/tests/environment/environment_scenario-non_existent.rb\nacceptance/tests/environment/environment_scenario-with_explicit_environment_conf.rb\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15833", "fixedVersions": [], "id": "15833", "issueType": "Task", "key": "SERVER-417", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-09T14:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate NoMethodError failures in master acceptance", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Ping.  Please feel free to replace any of the words in this ticket to make it more accurate.", "created": "2015-03-05T15:40:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "See https://github.com/puppetlabs/puppet/pull/2435 for some history...", "created": "2015-03-05T17:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] to discuss with [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] next week and break this down into an actionable task, and discuss options for ownership.", "created": "2015-05-27T11:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] to discuss with [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] next week and break this down into an actionable task, and discuss options for ownership.", "created": "2015-09-09T11:34:00.000000"}], "components": [], "created": "2015-03-05T15:39:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37eca13"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xjr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24694543698_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_31036500063"}], "description": "We need to run the ruby spec tests in https://github.com/puppetlabs/puppet/tree/master/spec to find the cases where the use of JRuby causes unexpected behaviors.\n\nConsider dividing ruby spec tests in the puppet repository into separate folders named:\nCOMMON (those spec tests that run against both puppetserver and the client);\nSERVER (those tests that run only against puppetserver); and \nCLIENT (those tests that run only against the client.)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15212", "fixedVersions": [], "id": "15212", "issueType": "Story", "key": "SERVER-416", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Run ruby spec tests against puppetserver's jruby", "timeSpent": "PT0S", "updated": "2016-12-09T16:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "We need to bump up to a puppet-agent package that includes the changes in RE-4141 and the general \"package provides\" changes prior to rc2. ", "created": "2015-03-13T12:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pull request to bring our dependency on Puppet Agent up to 2.0.0-rc1 is at https://github.com/puppetlabs/puppet-server/pull/452", "created": "2015-03-16T10:40:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Assigning back to me until SERVER-455 gets merged in.", "created": "2015-03-16T12:47:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Bumped to use puppet-agent 4.0.0-rc1 this sprint.", "created": "2015-03-16T22:16:00.000000"}], "components": [], "created": "2015-03-04T16:35:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7aaa7ce5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyygmf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_24629088_*|*_1_*:*_1_*:*_430159621_*|*_10007_*:*_1_*:*_7715207_*|*_3_*:*_2_*:*_510293405_*|*_5_*:*_1_*:*_48427940839_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_80858839"}], "description": "This ticket covers all of the work involved in periodically bumping the puppet-server's dependency on puppet-agent in CI to track the HEAD of the AIO branch.  This should be bound within the course of the current sprint, with another to replace it if needed when the next sprint is kicked off.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17283", "fixedVersions": ["SERVER 2.0.0"], "id": "17283", "issueType": "Task", "key": "SERVER-415", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-16T22:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Continually bump puppet-server dependency on puppet-agent as AIO progresses", "timeSpent": "PT0S", "updated": "2018-04-03T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Pull request added for puppetserver 2.x in the master branch modeled after the changes made in SERVER-404\n\nNote, this doesn't actually get us to green, but it does knock out one thing that's preventing us.\n\nIf this patch gets merged, we'll still fail on this:\n\n{code}\nPuppet Could not set 'directory' on ensure: Permission denied - /etc/puppetlabs/puppet/ssl\n{code}\n\nBut that should get fixed in SERVER-358.", "created": "2015-03-11T20:07:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I'm doing some ad-hoc manual smoke testing on this ticket as part of my manual exploration of the 2.0.0-rc3 build.", "created": "2015-03-17T13:08:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Here's what I did to manually smoke test the directory creation and permissions.\n\nSetup Steps:\n\nSetup the repositories pretending I'm a customer.  This makes the RC builds available for installation.  Following the details about the repositories we're going to ship RC builds to in QENG-2027. \n\n{code}\ncd /etc/yum.repos.d/\ncurl -O http://nightlies.puppetlabs.com/puppetserver-latest/repo_configs/rpm/pl-puppetserver-latest-el-7-x86_64.repo\ncurl -O http://nightlies.puppetlabs.com/puppet-agent-latest/repo_configs/rpm/pl-puppet-agent-latest-el-7-x86_64.repo\n{code}\n\nVariant A: Install puppetserver first\n\n(Note, variant B is installing puppet-agent first, then doing something with puppet agent, then installing puppetserver afterwards.  Variant B is relavant because the puppet user and group do not exist until the puppetserver package is installed and this affects the behavior of puppet-agent)\n\n{code}\nyum -y install puppetserver\n{code}\n\nStart the puppetserver service\n\n{code}\nservice puppetserver start\n{code}\n\nDoes the service start OK? Validated by a simple check of the service status.  I'm expecting to see something indicating the service started up and is still running.\n\n{code}\n[root@a05r4ca5j1d44y9 ~]# service puppetserver status\nRedirecting to /bin/systemctl status  puppetserver.service\npuppetserver.service - puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/puppetserver.service", "created": "2015-03-17T15:21:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Variant B\n\n(Note, variant B is installing puppet-agent first, then doing something with puppet agent, then installing puppetserver afterwards. Variant B is relavant because the puppet user and group do not exist until the puppetserver package is installed and this affects the behavior of puppet-agent)\n\nSetup is the same:\n\n{code}\ncd /etc/yum.repos.d/\ncurl -O http://nightlies.puppetlabs.com/puppetserver-latest/repo_configs/rpm/pl-puppetserver-latest-el-7-x86_64.repo\ncurl -O http://nightlies.puppetlabs.com/puppet-agent-latest/repo_configs/rpm/pl-puppet-agent-latest-el-7-x86_64.repo\n{code}\n\nInstall puppet agent without installing puppetserver.  This results in the {{puppet:puppet}} account being absent from the system which affects the behavior of puppet-agent.\n\n{code}\nyum -y install puppet-agent\n{code}\n\nRun puppet apply, which has the effect of puppet checking the ownership and permissions of configuration files and directories.  This check behaves different than Variant A because {{puppet::puppet}} does not yet exist.\n\n{code}\n[root@jtwl3manzm35e31 yum.repos.d]# /opt/puppetlabs/bin/puppet apply -e 'notice hello'\nNotice: Scope(Class[main]): hello\nNotice: Compiled catalog for jtwl3manzm35e31.delivery.puppetlabs.net in environment production in 0.33 seconds\nNotice: Applied catalog in 0.02 seconds\n{code}\n\nImmediately after running puppet apply, observe the ownership and permissions of the run directory.  We can use this as a baseline for comparison for future observations:\n\n{code}\n[root@jtwl3manzm35e31 yum.repos.d]# find /var/run/puppetlabs -ls\n 34605    0 drwxr-xr-x   2 root     root           40 Mar 16 14:48 /var/run/puppetlabs\n{code}\n\nThe file permissions look OK in that they will allow puppetserver to start becasue the mode is {{755}} which will give the {{puppet:puppet}} user that puppetserver executes as access to the run directory.\n\nNow install puppetserver\n\n{code}\nyum -y install puppetserver\n{code}\n\nStart the service:\n\n{code}\nservice puppetserver start\n{code}\n\nAnd check that it starts the same way we did in Variant A with the {{service puppetserver status}} and a {{puppet agent -t}} run.\n\n{code}\n[root@jtwl3manzm35e31 yum.repos.d]# service puppetserver start\nRedirecting to /bin/systemctl start  puppetserver.service\nJob for puppetserver.service failed. See 'systemctl status puppetserver.service' and 'journalctl -xn' for details.\n{code}\n\nUh oh...  Time in investigate...", "created": "2015-03-17T15:45:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "For the failure in Variant B, here's my debugging actions:\n\nFirst, look at the logs:\n\n{code}\nMar 17 14:44:15 jtwl3manzm35e31 systemd[1]: Starting puppetserver Service...\n-- Subject: Unit puppetserver.service has begun with start-up\n-- Defined-By: systemd\n-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel\n--\n-- Unit puppetserver.service has begun starting up.\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: RuntimeError: Got 1 failure(s) while initializing: File[/var/log/puppetlabs/puppetserver]: change from absent to directory f\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: use at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:948\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: apply at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:190\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: use at /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/settings.rb:938\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: initialize_puppet at file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/serve\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: initialize at file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/maste\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at jruby_puppet_core.clj:229\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at jruby_puppet_core.clj:199\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at jruby_puppet_agents.clj:54\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at jruby_puppet_agents.clj:39\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at jruby_puppet_agents.clj:117\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at internal.clj:247\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at internal.clj:231\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: shutdown_on_error at internal.clj:286\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at internal.clj:255\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at internal.clj:255\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at core.clj:626\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: doInvoke at core.clj:2468\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at core.clj:626\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: doInvoke at core.clj:2468\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at jruby_puppet_agents.clj:35\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: invoke at core.clj:1913\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: Exception in thread \"main\" java.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at puppetlabs.services.jruby.jruby_puppet_agents$eval7068$prime_pool_BANG___7069$fn__7070.invoke(jruby_puppet_agents.clj:59)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at puppetlabs.services.jruby.jruby_puppet_agents$eval7068$prime_pool_BANG___7069.invoke(jruby_puppet_agents.clj:39)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at puppetlabs.services.jruby.jruby_puppet_agents$eval7145$send_prime_pool_BANG___7146$fn__7147$fn__7149.invoke(jruby_puppet_\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.lang.AFn.applyToHelper(AFn.java:160)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.lang.AFn.applyTo(AFn.java:144)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.core$apply.invoke(core.clj:626)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.core$partial$fn__4228.doInvoke(core.clj:2468)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.lang.RestFn.applyTo(RestFn.java:137)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.core$apply.invoke(core.clj:626)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.core$partial$fn__4228.doInvoke(core.clj:2468)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.lang.RestFn.invoke(RestFn.java:408)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at puppetlabs.services.jruby.jruby_puppet_agents$eval7046$send_agent__7047$fn__7048$agent_fn__7049.invoke(jruby_puppet_agent\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1913)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.lang.AFn.applyToHelper(AFn.java:154)\nMar 17 14:44:52 jtwl3manzm35e31 java[10005]: at clojure.lang.RestFn.applyTo(RestFn.java:132)\n{code}\n\nThis looks to be the issue tracked in PUP-4194, which is in progress and not a blocker for RC.  It will be fixed for the GA though and is not actually part of the rundir issue, it's part of the log directory issue.\n\nWorking around that known issue by running {{/opt/puppetlabs/bin/puppet apply -e 'notice hello'}} to reset permissions yields a puppetserver that starts:\n\n{code}\n[root@jtwl3manzm35e31 yum.repos.d]# service puppetserver status | grep Active:\nRedirecting to /bin/systemctl status  puppetserver.service\n   Active: active (running) since Tue 2015-03-17 14:53:23 PDT", "created": "2015-03-17T15:58:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I think we should consider this passing functional review given the observations of behavior.", "created": "2015-03-17T15:59:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "**Release Notes**\n\nFixed a bug where puppetserver was not starting reliably from the service management framework due to the \"rundir\" not being writable.", "created": "2015-04-13T10:56:00.000000"}], "components": [], "created": "2015-03-04T15:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@747c40f9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyp07:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_69571345_*|*_1_*:*_1_*:*_418919294_*|*_10007_*:*_1_*:*_72467355_*|*_3_*:*_2_*:*_31391891_*|*_5_*:*_2_*:*_48368750317_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_357184141_*|*_10006_*:*_1_*:*_169149670"}], "description": "This ticket is related to the work spawned from SERVER-336.  The work in that ticket concerns ensuring that the appropriate rundirs (/var/run/...) are created for \"puppet\" and \"puppetserver\" such that puppetserver can properly be started - both initially and after reboot.  That ticket covers some different implications in packaging needed to support different init environments - SysV, upstart, and systemd.\n\nSimilar work will likely need to be done for Puppet Server 2.0 - with some unique aspects related to AIO pathing changes.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15606", "fixedVersions": ["SERVER 2.0.0"], "id": "15606", "issueType": "Task", "key": "SERVER-414", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-17T16:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Handle rundir creation for puppet and puppetserver in Puppet Server 2.x", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-03-04T14:53:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17160d95"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-791"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywqhj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_436305534_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_55383887167"}], "description": "This ticket is related to SERVER-364 (improve max-active-instances default value) and SERVER-365 (improve heap size default value).  The work in those tickets are intended to go deeper into the details of the specific algorithms that we'll use for computing the default values that should be configured for puppetserver at installation time.  Ahead of finishing the details on those algorithms, we should be able to start investigating the work that will be needed in the puppetserver packaging init scripts that will be required.  This ticket is intended to cover that investigation work.\n\nItems to investigate should include:\n\n1) Get at least a high-level understanding of how the scripting will be hooked, e.g., from Ez-Bake.  This is related to EZ-31.\n\n2) Decide upon -- maybe via prototyping -- best option for scripting language to be used, i.e., bash, Ruby, ...\n\nThis should take into consideration the tasks that the script will ultimately need to perform.  This would include:\n\n* Programmatic modification of the puppetserver sysconfig/default (JAVA_OPTS for heap size) and puppetserver.conf (JRuby max-active-instances).\n\n* Gathering data that will be used in computing the desired value.  This would include available system memory and the number of CPU \"cores\" on the local machine where puppetserver is being installed.\n\nThis should also take into account packaging implications around any upstream dependencies the script would require.  For example, if we go with a Ruby script, some version of Ruby would be a dependency.  If \"facter\" might provide the most convenient method for gathering the data needed to compute default values, it may make sense to make \"facter\" an upstream dependency.  For programmatic manipulation of the puppetserver configuration file, it may make sense, if we choose to use Ruby, to make the Ruby HOCON gem an upstream dependency.  If that proves to be too prohibitive and we decide to go with a more crude awk-like approach, the upstream dependencies may be significantly lighter.\n\n----\n\nThe key deliverable from this ticket should be a detailed description of the approach that we'll use to implement SERVER-364 and SERVER-365.", "epicLinkSummary": "Improve default settings", "estimate": "PT0S", "externalId": "17615", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "17615", "issueType": "Task", "key": "SERVER-413", "labels": [], "originalEstimate": "PT0S", "parent": "14991", "parentSummary": "Improve default settings", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate scripting for configuring JRuby instances & JVM heap size at install", "timeSpent": "PT0S", "updated": "2016-12-09T16:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Relates to SERVER-420 in that SERVER-420 tracks the task of doing an initial evaluation to see how far we get for each platform.  Once we know how far we get, the actual work required to get tests passing will be created as broken out sub-tasks of this ticket.", "created": "2015-03-09T14:37:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moved 2 points over to SERVER-502", "created": "2015-03-20T12:52:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moved 2 points over to SERVER-499", "created": "2015-03-21T14:26:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moved 1 point over to SERVER-505", "created": "2015-03-21T17:42:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moved 1 point over to SERVER-510", "created": "2015-03-22T11:12:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moved 1 point over to SERVER-511", "created": "2015-03-26T11:26:00.000000"}], "components": [], "created": "2015-03-04T14:13:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b2ef01"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyywfj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_438662968_*|*_5_*:*_1_*:*_47241030704_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1810422155"}], "description": "Work up to now on the getting the Puppet Server smoke and Puppet acceptance test suite passing with AIO packaging changes Puppet Server 2.0 and Puppet 4.0 has been focused up to now on EL7.  This is a placeholder ticket intended to cover the work that will be needed to get the smoke and acceptance tests passing for other OS distributions beyond EL7.  This ticket may need to be broken up into smaller tickets as the scope of the work becomes more clear.\n\n----\nRisk assessment: Low (no additional validation needed)\nProbability: Low (does not impact users)\nSeverity:  Low (does not impact users)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15043", "fixedVersions": ["SERVER 2.0.0"], "id": "15043", "issueType": "Task", "key": "SERVER-412", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2015-03-30T15:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Get Pup4/Pup-Svr2 acceptance tests passing for OSes beyond EL-7 ", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] I decided to go the clojure route instead of the {{master.rb}} route...  It didn't end up being that much code and it seems to make sense.  Thoughts?", "created": "2015-03-03T19:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "TBH I'd have a slight preference for doing this in the ruby code.  Here are some reasons:\n\n* When writing programs that have interop between different languages, the surface area where you cross the boundary between the two is always the most tricky / risky part of the code.  It's a weird blend of the two languages, there is type coercion going on, etc.  And it's often not that visible to someone skimming through the code because it's usually not a place where any real business logic happens.  For that reason, I always strive to make that surface area as small as humanly possible.  In this case, since the final desired action is going to take place in Ruby and there are no dependencies on Clojure, it seems like that'd allow us to have one less thing that has to cross the boundary between the languages.  (In general, I'm hoping we can keep the list of args that Clojure has to pass in to the JRuby constructor limited to two classes of data: 1) settings that we can't avoid due to run_mode, and 2) Long-lived Java/Clojure data structures that we need to be able to call methods on from Ruby (e.g. the Profiler object).\n\n* We already have a few spots in the Ruby code that are doing something very similar to this", "created": "2015-03-04T07:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I don't have a super-strong opinion on this.\n\nDoing it in the core Ruby Puppet code seems like a reasonable thing to do since we're hard-coding the value for it anyway and, therefore, wouldn't have a need to expose it out to the Clojure layer.  Not sure if JRuby would ever inadvertently coerce a Clojure/Java String of value \"true\"  into a Ruby boolean and, therefore, confuse the settings command line parser in core Ruby Puppet code?  If so, that could be an argument for doing it directly in core Ruby puppet code.\n\nIf we were to do it in the core Ruby Puppet code, seems like it wouldn't be much more than just ensuring that the \"--always_cache_features\" and \"true\" values are appended onto the args array that is passed into {{Puppet.initialize_settings}} - https://github.com/puppetlabs/puppet-server/blob/a0cf2836b4b50a11a0839da8fcf8fba234254f5e/src/ruby/puppet-server-lib/puppet/server/puppet_config.rb#L18-L20.  I imagine that we would want to make sure it is passed in on the args array to {{Puppet.initialize_settings}} in case any feature parsing might happen before the function were to return?", "created": "2015-03-04T09:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Passing settings via the '--blah' syntax seems like a hack to me", "created": "2015-03-04T09:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Also, I'm not really concerned that the interop boundary / type coercion would ever cause us any problems for this particular setting", "created": "2015-03-04T09:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I agree that the spot in puppet_config.rb that you mentioned looks cleaner.  I wasn't sure, however, if it is important that the setting be set earlier than that.  Is it possible that any code behind {{initialize_settings}} that would not cache features that should be cached would be executed -- or that the setting would be processed with the \"wrong\" value the first time through this code path and side effects from that would occur as a result?  I'm really unfamiliar with this code, so my concerns may be completely unfounded.  If so, I'd be good with your recommendation.", "created": "2015-03-04T10:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ah.  That's a totally legit concern.  The relevant code is here:\n\nhttps://github.com/puppetlabs/puppet/blob/d7f7bb4ddd101ca1a0728d3a8fed4cd609a0b200/lib/puppet/util/feature.rb#L27-L42\n\nThe thing that we really care about for this setting is that once the server is started up, if there are 'feature?' calls within the code path that is followed for handling a request, we want to make sure we're caching.  It's not nearly as big of a deal if we don't cache a few things during initial startup.  So, my thinking is that as long as we've toggled the setting *before* we start handling requests, we should be good.\n\nAnyway, I'll butt out of this ticket now and let you guys decide how you want to proceed", "created": "2015-03-04T11:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}The thing that we really care about for this setting is that once the server is started up, if there are 'feature?' calls within the code path that is followed for handling a request, we want to make sure we're caching. It's not nearly as big of a deal if we don't cache a few things during initial startup. So, my thinking is that as long as we've toggled the setting before we start handling requests, we should be good.{quote}\n\nOk, that's reasonable.\n\nSo I'm good with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]'s recommendation on where we'd make the code change for this ticket -- in the Ruby \"puppet_config.rb\" file.  The PR that is currently up for this ticket, however, passes this through from the Clojure layer.\n\n[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], [~accountid:623c12b6ee1b5a0070293582] - what do you guys think on this?", "created": "2015-03-04T13:51:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. Nate Wolfe, Jeff McCune - what do you guys think on this?\n\nI agree with Chris' points - I think we should implement and test this in Ruby, not Clojure.", "created": "2015-03-04T14:02:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Sounds good to me, I'll switch it over to implementing it in Ruby.", "created": "2015-03-04T15:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "RE: The spot in the code where we should be setting \"always_cache_features\" to true, I would appreciate [~accountid:63d40628f6e1b543161789a7]'s opinion.\n\n[~accountid:63d40628f6e1b543161789a7] - the question I'd raised above was whether it would be necessary to have \"always_cache_features\" be set to true as part of the args array which Puppet Server passes in a call to {{Puppet.initialize_settings}} (from ../lib/puppet.rb) or if it would be okay to just have Puppet Server set it manually -- {{Puppet\\[:always_cache_features\\] = true}} -- immediately after the return from {{Puppet.initialize_settings}}.  I seem to recall you mentioning that there's a possibility that if \"always_cache_features\" is set at the wrong time -- too late? -- that some (all?) features might not get cached at all -- or maybe some related side-effect.  As mentioned above, we think it looks a little cleaner aesthetically to set the value after the return from {{Puppet.initialize_settings}}, but I wanted to make sure that there's not some unexpected consequence in doing that.  What do you think?", "created": "2015-03-05T09:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "You can see the use of the setting in the code that I linked above...", "created": "2015-03-05T10:01:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] this should be fine:\n\n{code:ruby}\nPuppet.initialize_settings\nPuppet[:always_cache_features] = true\n{code}\n\nAs long as it's done before the server starts handling requests, so that the server doesn't constantly re-evaluate features that are defined with a block, e.g. https://github.com/puppetlabs/puppet/blob/master/lib/puppet/feature/base.rb#L17", "created": "2015-03-05T13:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sounds good, thanks, [~accountid:63d40628f6e1b543161789a7].", "created": "2015-03-05T13:44:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Something I noticed ... when {{always_cache_features}} is set, we still clear the [gem file paths|https://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/feature.rb#L85]. So anytime you have a {{Puppet.features.add(:foo, :libs => \\['foo'\\])}} it will clear the gem file paths, which can slow down future {{`require 'bar'`}} when rubygems are activated.\n\nThere was a community PR along those lines: https://github.com/puppetlabs/puppet/pull/2952/files#diff-091edbc669646be650c7d1de1e5500c5L50, but we didn't merge it because it also changed autoloader behavior. But I wonder if the server would see additional performance benefit if we extended {{always_cache_features}} to not clear gem file paths? /cc [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920]", "created": "2015-03-05T15:52:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Ready for merge again, moved the implementation into the PuppetConfig ruby class.", "created": "2015-03-05T15:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:63d40628f6e1b543161789a7] are you sure that the clear still gets called?  I mean, it might get called a few times but things should stabilize quickly and it shouldn't get called after that, right?\n\nthe 'clear' gets called in 'load_library', which only gets called from 'test', and 'test' only happens in the 'else' branch of the metaprogrammed logic:\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/feature.rb#L38\n\nThe 'if' branch of the metaprogramming checks the always_cache_features flag, which means that the gem paths shouldn't get cleared more than once per feature, right?\n\nSo it seems like conditioning that would maybe have a small perf benefit during the first few requests, but probably none after that... right?", "created": "2015-03-05T17:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "puppet-server master tests on EL7 are passing now - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/. Since this involves reworking how a setting is plumbed into Puppet, moving to \"testing\" so QA has a chance to review this.", "created": "2015-03-11T14:48:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This is low impact to the customer (low severity)\nand unlikely to be encountered by an end user.  Low risk.  No functional review.  Additionally, there is already an automated unit test that covers this.", "created": "2015-03-11T16:15:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "*Release Notes*\n\nFix a bug in puppetserver where always_cache_features was not always overridden because it could be changed in puppet.conf.  The behavior is now explicitly managed in code rather than configuration.", "created": "2015-04-13T10:59:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-03T15:37:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68d1aa3b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3hz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_434746764_*|*_1_*:*_1_*:*_1042556_*|*_10007_*:*_2_*:*_148184363_*|*_3_*:*_2_*:*_100231606_*|*_5_*:*_1_*:*_48813023377_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_74013283_*|*_10006_*:*_1_*:*_432595"}], "description": "It was decided as part of the discussion around SERVER-409 and PUP-4073 that we need to explicitly configure always_cache_features in code rather than in puppet.conf's configuration.\n\nWe're doing this so that we can remove all of the {{puppet.conf}} settings being explicitly set by the puppet-agent packages and the puppetserver packages.  After resolving this ticket and SERVER-409 the resulting {{puppet.conf}} should be a completely empty (but existing) file immediately after an initial install of {{puppetserver}} and {{puppet-agent}}.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15602", "fixedVersions": ["SERVER 2.0.0"], "id": "15602", "issueType": "Task", "key": "SERVER-410", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-12T11:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Explicitly override always_cache_features in puppetserver", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "puppet-server master tests on EL7 are passing now - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/.  Since this involves plumbing some new settings, moving to \"testing\" so QA has a chance to review this.", "created": "2015-03-11T14:46:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed with Jeff McCune.  This deals with how puppetserver starts the jruby threads.    \nThese values are not designed to be end user modifiable.  We already have automated testing that will fail if this isn't implemented incorrectly.  Functional review not planned.", "created": "2015-03-11T16:12:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "*New Feature*\n\npuppetserver has a new configuration setting, codedir, which maps to the codedir setting in the new [Puppet Installation Layout][layout]\n\n[layout]: https://github.com/puppetlabs/puppet-specifications/blob/2abde272af859ffb434cb62725e6f54ca65da704/file_paths.md", "created": "2015-04-13T11:55:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-03T15:29:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45be0da6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3hr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_92659254_*|*_1_*:*_1_*:*_749975_*|*_10007_*:*_1_*:*_79025433_*|*_3_*:*_1_*:*_512585936_*|*_5_*:*_1_*:*_48813350317_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_73757397"}], "description": "As part of the AIO work a new top-level configuration setting, codedir, has been introduced.  This setting needs to be set explicitly to match the Puppet Installation Layout specification [1].  All 5 settings based on run_mode [2] need to be plumbed through and injected.  These are confdir, vardir, codedir, logdir, and rundir.\n\nIdeally the implementation will pass these settings along the argument vector (or the eqivalent when starting JRuby scripting containers), similar to how rack based servers accomplished this [3].\n\nNOTE: confdir and vardir are already being plumbed through, so the same approach will likely be sufficient for codedir, logdir and rundir.\n\n * [1]: https://github.com/puppetlabs/puppet-specifications/blob/9ad3b15961c55f5ee32d62932fa27b246d7ac468/file_paths.md\n * [2]: https://github.com/puppetlabs/puppet/blob/c3757f734e9b5ec6979c43c07c671c482590ae66/lib/puppet/util/run_mode.rb#L56-L76\n * [3]: https://github.com/puppetlabs/puppet/blob/e6b873f6f0000b57c5e00fcb3a8d92a0c325b07d/ext/rack/config.ru#L14-L18", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15267", "fixedVersions": ["SERVER 2.0.0"], "id": "15267", "issueType": "Task", "key": "SERVER-409", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-12T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Plumb confdir, vardir, codedir, logdir, rundir values via dependency injection", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I view this as low risk after discussing with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f].  This change was merged to the puppet server master branch without problems.  Encountering a timeout on a jruby borrow is rare, and when it happens, the result is that a single agent run fails with an HTTP 500.  \n\nClosing out with no functional review.", "created": "2015-03-20T13:10:00.000000"}], "components": [], "created": "2015-03-03T13:34:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34b44f36"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp1zr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Urgency & Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_239751548_*|*_1_*:*_1_*:*_528292306_*|*_10007_*:*_1_*:*_83608516_*|*_3_*:*_1_*:*_2203139_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_353694619_*|*_10006_*:*_1_*:*_256865996"}], "description": "When Puppet Server's master is handling a request that needs to be handled by JRuby, the master will borrow a JRuby request instance from a pool.  Currently, the borrow attempt will block indefinitely.  Under high-load situations where all of the instances of the pool are in use, then, requests could back up indefinitely waiting for a JRuby instance to become available.\n\nIn order to bound the amount of time that a borrow attempt could take, a {{borrow-timeout}} setting should be made available to the user to configure the maximum wait time.  A reasonably high value should be used as the default, however, to avoid introducing large numbers of request failures for \"normal\" cases where a master might be experiencing temporary traffic spikes.  This ticket proposes that a 20 minute maximum be used as the default value.\n\nThe work for this ticket was already done on the Puppet Server master branch -- in SERVER-246 and SERVER-389.  This ticket basically just tracks the backport of the {{borrow-timeout}} functionality to the Puppet Server stable branch for inclusion in a 1.x release.\n___\nRisk assessment: Low (QA will not perform any validation)\nProbability: Low\nSeverity: Low (generally only affects a single puppet agent run)", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "17282", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "17282", "issueType": "Improvement", "key": "SERVER-408", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-03-20T13:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Expose configurable `borrow-timeout` to allow JRuby pool borrows to timeout", "timeSpent": "PT0S", "updated": "2015-06-01T18:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Has the version of Beaker we need to move to been released yet?", "created": "2015-03-09T12:21:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "No, not that I'm aware of.  2.5.1 does not have the changes we need from QENG-1946, so I think we'll need 2.5.2 or 2.6.x, or whatever comes after 2.5.1.", "created": "2015-03-09T12:45:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Blocked on figuring out what released beaker version we should use.  This will likely be whatever official release follows 2.5.1, be it 2.5.2, 2.6.0, or 3.0.0, etc...\n\nI couldn't find a related ticket.", "created": "2015-03-09T12:48:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "This ticket cannot be actioned by engineering until there is a final released version of Beaker with AIO changes.  This final released version of beaker is tracked in QENG-1916.", "created": "2015-03-09T14:26:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "puppet-server master branch has been pinned to a release version of beaker 2.7.1 using rubygems in commit 3462a11.", "created": "2015-03-25T19:54:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-02T17:12:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1cd8b52c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp1xb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1324265_*|*_5_*:*_1_*:*_47658839069_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1408158345_*|*_10006_*:*_1_*:*_583846582"}], "description": "We need to update the master branch of puppet-server to use a released version of Beaker, not a git location or URI.\n\n----\nRisk assessment: Low (no additional validation needed)\nProbability: Low (does not impact users)\nSeverity:  Low (does not impact users)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16690", "fixedVersions": ["SERVER 2.0.0"], "id": "16690", "issueType": "Task", "key": "SERVER-407", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-25T19:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use a released beaker version ", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "{{cve-2013-1654_sslv2_downgrade_agent.rb}} is also failing in a similar manner.  I'm going to re-characterize this ticket as \"ruby path\" failures / errors since resolving the path to ruby should fix them all.\n\n{code}\nn9qx9v301atnp4o.delivery.puppetlabs.net (centos7-64-1) executed in 0.17 seconds\nExited: 127\n#<Beaker::Host::CommandFailure: Host 'n9qx9v301atnp4o.delivery.puppetlabs.net' exited with 127 running:\n /opt/puppetlabs/bin/ruby -ropenssl -e \"puts OpenSSL::SSL::SSLContext::METHODS.include?(:SSLv2)\"\n\nLast 10 lines of output were:\n\tbash: /opt/puppetlabs/bin/ruby: No such file or directory>\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/host.rb:332\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/dsl/helpers.rb:88\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/shared/host_manager.rb:95\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/dsl/patterns.rb:32\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/dsl/helpers.rb:78\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_full-aio/LAYOUT/64mdca/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/tests/security/cve-2013-1654_sslv2_downgrade_agent.rb:18\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_full-aio/LAYOUT/64mdca/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/tests/security/cve-2013-1654_sslv2_downgrade_agent.rb:22\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_full-aio/LAYOUT/64mdca/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/tests/security/cve-2013-1654_sslv2_downgrade_agent.rb:21\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_full-aio/LAYOUT/64mdca/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/tests/security/cve-2013-1654_sslv2_downgrade_agent.rb:21\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/dsl/structure.rb:52\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_full-aio/LAYOUT/64mdca/PLATFORM/centos7/label/beaker/ruby/puppet/acceptance/tests/security/cve-2013-1654_sslv2_downgrade_agent.rb:1\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_case.rb:120\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_case.rb:120\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/benchmark.rb:295\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_case.rb:117\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_suite.rb:286\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_suite.rb:283\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_suite.rb:283\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_suite.rb:325\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/cli.rb:147\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/cli.rb:93\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/bin/beaker:6\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\nWarning: ruby/puppet/acceptance/tests/security/cve-2013-1654_sslv2_downgrade_agent.rb errored in 0.18 seconds\n{code}", "created": "2015-03-02T15:09:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Josh and Ethan think this will be resolved once PUP-4056 is resolved.", "created": "2015-03-02T17:05:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Related test failures in puppet:\n\n * tests/environment/agent_runs_pluginsync_with_proper_environment.rb\n * tests/environment/use_enc_environment_for_files.rb\n * tests/environment/use_enc_environment_for_pluginsync.rb", "created": "2015-03-02T17:07:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I know the pull request doesn't reference SERVER-406 (this ticket) and instead references SERVER-415 and SERVER-419, neither of which are in \"Ready for Merge.\"\n\nHowever!\n\nThis is the last chunk of flagged, high-priority work to get EL-7 passing fully so that's why I selected this ticket to be the one that sits in \"Ready for Merge\" and links to https://github.com/puppetlabs/puppet-server/pull/432", "created": "2015-03-10T15:57:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moved to resolved / done because the pull request has been merged and CI is (mysteriously) green.", "created": "2015-03-11T11:41:00.000000"}], "components": ["Puppet Server"], "created": "2015-03-02T14:11:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6570f796"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3hj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14484_*|*_10007_*:*_1_*:*_71208156_*|*_3_*:*_2_*:*_11713545_*|*_5_*:*_1_*:*_48898218316_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_682093796"}], "description": "List of failing acceptance tests related to ruby not on the PATH:\n\n * {{cve-2013-1654_sslv2_downgrade_agent.rb}}\n * {{ticket_6857_password-disclosure-when-changing-a-users-password.rb}}\n\nNote, this is failing in a preliminary run [1] that assumes QENG-1841 and PUP-4057 have both been merged and are being employed by puppet-server.\n\n[1]: https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_full-aio/3/", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15264", "fixedVersions": [], "id": "15264", "issueType": "Task", "key": "SERVER-406", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-11T11:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate ruby command not found failures", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2015-03-02T13:28:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@648b7f95"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xrb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14719881_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_55983326471"}], "description": "I noticed this Yak to shave working on AIO related work.  Methods in puppet-server's {{acceptance/lib/helper.rb}} make calls to the {{logger}} method.  This method does not exist, so the following error is raised when code paths that send messages to the {{logger}} are traversed.\n\n{code}\nmd9us8a123619dn.delivery.puppetlabs.net (centos7-64-1) executed in 0.20 seconds\nBegin acceptance/suites/pre_suite/foss/00_setup_environment.rb\n\n  * Initialize Test Config\n#<NameError: undefined local variable or method `logger' for PuppetServerExtensions:Module>\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_smoke-aio/LAYOUT/64mdca/PLATFORM/centos7/label/beaker/acceptance/lib/helper.rb:85\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_smoke-aio/LAYOUT/64mdca/PLATFORM/centos7/label/beaker/acceptance/lib/helper.rb:27\n/var/lib/jenkins/workspace/experimental_puppet-server_integration-system_smoke-aio/LAYOUT/64mdca/PLATFORM/centos7/label/beaker/acceptance/suites/pre_suite/foss/00_setup_environment.rb:2\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_case.rb:120\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_case.rb:120\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/benchmark.rb:295\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_case.rb:117\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_suite.rb:286\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_suite.rb:283\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_suite.rb:283\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/test_suite.rb:325\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/cli.rb:147\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/lib/beaker/cli.rb:89\n/usr/local/rvm/gems/ruby-1.9.3-p484/bundler/gems/beaker-fdfa69bec248/bin/beaker:6\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\nWarning: acceptance/suites/pre_suite/foss/00_setup_environment.rb errored in 0.14 seconds\n{code}\n\nI suspect this \"works\" because we simply never execute code paths that exercise the logger in the normal course of executing the acceptance tests.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16689", "fixedVersions": [], "id": "16689", "issueType": "Bug", "key": "SERVER-405", "labels": ["beaker"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix invalid logging configuration in beaker helper.rb", "timeSpent": "PT0S", "updated": "2016-12-09T16:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This PR has been in the stable branch for a few days now.  A recent Puppet Server stable branch acceptance test run passed for all variants - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/188/.\n\nManually inspected one CI machine, CentOS 7, to see that the ExecStartPre invocation of {{/usr/bin/install}} for the {{/var/run/puppet}} directory had been created.\n\nMoving this to \"Testing\".", "created": "2015-03-17T09:49:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The probability that a customer will encounter problems with this issue seems low given that testing already performed above", "created": "2015-03-20T09:49:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Previous comment result of tester error.   This comment has been edited.\n\nManually validated Ubuntu 14.04 starts puppetserver out of the box with PE on reboot.\nPE-build = 3.8.0-rc0-281-gd05d353\npuppetserver --version = 1.0.7.SNAPSHOT.2015.03.17T1700\n\n\n", "created": "2015-03-23T09:37:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Setting as blocked because the foss builds do not presently restart the puppetserver service automatically on reboot.  Checked RHEL7 and Ubuntu 14.", "created": "2015-03-24T13:43:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] so, for FOSS distribution should we be installing these services as \"activated\" or defer to operating system defaults? ", "created": "2015-03-24T17:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], so if the puppetserver service were \"enabled\" post installation, would it be restarted properly following a reboot?  If that's the case, I think we'd need to test the resolution of this ticket per the behavior after the service has initially been enabled, and any follow-up testing which would assume that the service had automatically been enabled after installation would need to follow SERVER-398.", "created": "2015-03-24T17:52:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "OK.  So for this ticket, shall I just validate that /var/run/puppetserver exists?  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314]", "created": "2015-03-24T18:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I was thinking that for this ticket we would validate that if you enable the service after installing it, the puppetserver service would still come to ready following a reboot -- even on systems that would need to recreate the {{/var/run/...}} directory on a tmpfs after the reboot.  From what I understand in the discussion on SERVER-398, it sounds like the service may already be enabled automatically after install on some distributions.", "created": "2015-03-24T18:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "RHEL7 with 1.0.4.SNAPSHOT.2015.03.24T0146:\nsystemctl start puppetserver.service\nsystemctl enable puppetserver\n#Works on reboot.\n\nUbunyu 14.04 ....\nservice puppetserver start\nupdate-rc.d puppetserver defaults\nreboot....  #Works.\n", "created": "2015-03-24T19:19:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] Enabled, but not started.", "created": "2015-04-01T14:02:00.000000"}], "components": [], "created": "2015-02-27T17:05:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d208f6a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp1vz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Spun off puppet server not starting all the time ticket"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_508307193_*|*_1_*:*_1_*:*_259263628_*|*_10007_*:*_1_*:*_178306561_*|*_3_*:*_2_*:*_523732762_*|*_5_*:*_1_*:*_511390716_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_618798964_*|*_10004_*:*_1_*:*_20212563_*|*_10006_*:*_1_*:*_55797913"}], "description": "For the FOSS packaging we need to ensure that the /var/run/puppetserver directory is properly created on systems that mount /var/run on a tmpfs filesystem. For EL7-ish systems we will need to take the same approach described in ENTERPRISE-565, and for Debianish systems we will need to make the directory and change its owner to puppet before launching Pupper server.\n\n----\nRisk assessment: High (automated validation needed)\nProbability: Medium (impacts users using in memory mounts for var)\nSeverity: High (causes server to fail to start)", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "15830", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "15830", "issueType": "Bug", "key": "SERVER-404", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2015-03-24T19:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Properly create /var/run/puppetserver dir at service startup", "timeSpent": "PT0S", "updated": "2015-12-17T15:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Pulling this into the active sprint based on conversation IRL with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049]", "created": "2015-03-02T15:59:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "The unit tests are all failing because of missing directories, which is a result of the potential bug described in PUP-4073.", "created": "2015-03-03T12:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] [~accountid:623c12b6ee1b5a0070293582] I think there may be an important distinction here, between which paths we need to override for clojure tests vs. which we need to override in packaging.\n\nAs discussed in PUP-4073, I'd like to try (if possible) to minimize the number of settings that a user needs to worry about duplicating between puppetserver.conf and puppet.conf.  I had one idea that I proposed on that ticket that might help us keep that from growing beyond where we are now.\n\nFor the clojure tests, though, I don't think we can necessarily avoid specifying all of them.  Because, as [~accountid:63d40628f6e1b543161789a7] pointed out in that ticket, there is no guarantee that the log/run dirs are children of the vardir, and we want to configure our tests to use quarantined directories that are neither the ones specified by the 'root/master' run mode nor the 'agent/user' run mode.\n\nSo... not sure I've thought this through enough to give a solid recommendation on a particular path forward, but I do think that I can see a possibility that it ends up being relatively reasonable to specify all of those paths for our clojure tests, but specify a smaller number of them in our packaging.", "created": "2015-03-03T13:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The work in SERVER-409 would plumb through a few additional settings from puppetserver.conf down into core Ruby Puppet code.  The state of these unit tests should benefit from that work.  After that comes in, we'll need to look at what additional work will be needed to make these tests pass.", "created": "2015-03-03T18:42:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "I expect this ticket to be resolved upon merging SERVER-409", "created": "2015-03-09T19:04:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-27T17:03:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3dfe64f8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3hb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_255360604_*|*_3_*:*_1_*:*_74240442_*|*_5_*:*_1_*:*_48978091742_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_603990041_*|*_10006_*:*_1_*:*_456730"}], "description": "This ticket is preparation for the puppet-server 2.0 release.  At that point we'll lock our submodule to the puppet 4.0 tag.\n\nWe know ahead of time that {{lein -U test :all}} is failing with the current HEAD of the master branch of puppet.  We need to resolve those test failures prior to, or during, the submodule update.\n\nHere's what the failure looks like:\n\n{code}\n$ lein -U test :all\n\nlein test puppetlabs.puppetserver.bootstrap-int-test\n2015-02-27 15:02:20,646 ERROR [puppet-server] Puppet Cannot create /Users/jeff/.puppet/code; parent directory /Users/jeff/.puppet does not exist\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/type/file/ensure.rb:84:in `set_directory'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/property.rb:427:in `set'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/property.rb:501:in `sync'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/type/file/ensure.rb:183:in `sync'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction/resource_harness.rb:209:in `sync'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction/resource_harness.rb:81:in `perform_changes'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction/resource_harness.rb:20:in `evaluate'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction.rb:204:in `apply'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction.rb:219:in `eval_resource'\norg/jruby/RubyMethod.java:128:in `call'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction.rb:147:in `evaluate'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/util.rb:284:in `thinmark'\n/Users/jeff/.m2/repository/org/jruby/jruby-stdlib/1.7.18/jruby-stdlib-1.7.18.jar!/META-INF/jruby.home/lib/ruby/1.9/benchmark.rb:295:in `realtime'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/util.rb:283:in `thinmark'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction.rb:147:in `evaluate'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/graph/relationship_graph.rb:118:in `traverse'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction.rb:138:in `evaluate'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/resource/catalog.rb:178:in `apply'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/util/log.rb:157:in `with_destination'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/transaction/report.rb:107:in `as_logging_destination'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/resource/catalog.rb:177:in `apply'\n/workspace/serious/src/puppet-server/ruby/puppet/lib/puppet/settings.rb:938:in `use'\n/workspace/serious/src/puppet-server/src/ruby/puppet-server-lib/puppet/server/puppet_config.rb:38:in `initialize_puppet'\n/workspace/serious/src/puppet-server/src/ruby/puppet-server-lib/puppet/server/master.rb:27:in `initialize'\njruby_puppet_core.clj:207:in `invoke'\njruby_puppet_core.clj:172:in `invoke'\njruby_puppet_agents.clj:54:in `invoke'\njruby_puppet_agents.clj:39:in `invoke'\njruby_puppet_agents.clj:117:in `invoke'\ninternal.clj:247:in `invoke'\ninternal.clj:231:in `invoke'\n{code} ", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15598", "fixedVersions": [], "id": "15598", "issueType": "Task", "key": "SERVER-403", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-10T13:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix clojure unit tests in preparation for ruby/puppet update", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Not sure what the best solution for this is exactly.\n\nMight make sense to have Puppet Server get the webserver configuration for the server associated with the {{MasterService}} webroute and do its checks for override against that.  Somewhere around https://github.com/puppetlabs/puppet-server/blob/puppet-server-2.1.1/src/clj/puppetlabs/services/config/puppet_server_config_service.clj#L29?\n\nCould augment the tk-jetty9 {{override-webserver-settings!}} function with some way of indicating which \"server\" that the overrides should apply to, have Puppet Server pass in its intended server to override along with its override config, and convert the backing {{:overrides}} key in the webserver-context {{:state}} to have a per-server map rather than just a single instance, around https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/1.3.1/src/puppetlabs/trapperkeeper/services/webserver/jetty9_core.clj#L751-L826.  Could then have the {{merge-webserver-overrides-with-options}} function merge in the overrides provided only for a specific server, around https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/1.3.1/src/puppetlabs/trapperkeeper/services/webserver/jetty9_core.clj#L535-L541.  Maybe it would be good to have the original {{override-webserver-settings!}} without a server parameter designation just override the settings for the default server rather than effectively all servers - although I suppose that would be a breaking change.\n\nHonestly, I have no idea if anyone outside of Puppet Server uses the {{override-webserver-settings!}} functionality in tk-jetty9, so we probably have a fair amount of liberty to make it as simple as possible to just meet Puppet Server's needs.", "created": "2015-07-16T18:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Could augment the tk-jetty9 override-webserver-settings! function with some way of indicating which \"server\" that the overrides should apply to{quote}\n\nI'd forgotten but this had already been done, at the service level rather than at the core function level:\n\nhttps://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/1.3.1/src/puppetlabs/trapperkeeper/services/webserver/jetty9_service.clj#L82-L88\n\nSo all of the other comments about merging in the overrides for a single server - at the tk-jetty9 level anyway - would already be taken care of.\n\nThe incremental part of this which would need to be done, then, would be having Puppet Server extract the webserver configuration associated with the {{MasterService}} webroute, inspect the settings to see if the SSL configuration is present, and, if not, override the webserver configuration with the SSL settings for that specific server (as opposed to just having the \"default\" server settings overridden, which is what would happen today).\n\n{quote}There may be other issues with our support for multiple servers", "created": "2015-07-27T15:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I suppose the one hurdle we probably wouldn't be able to overcome would be with multiple services intending to use the same webserver instance.  For example, if Puppet Server's services and some other non-Puppet Server services were configured to use the same webserver instance, Puppet Server probably would not be able to detect that and avoid applying its webserver override logic - at least not in a very straightforward way.", "created": "2015-07-27T15:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52] do you have an ETA for when you might have your first builds that attempt to use a second Jetty instance?  My preference would be to wait until we actually have a reproducible issue with this so that we can make sure the fix will work with your stuff... but as soon as that happens I can make sure this gets pulled into a sprint immediately.", "created": "2015-08-05T08:35:00.000000"}, {"author": "557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52", "body": "We had one a couple of weeks ago, we just aren't turning code-manager on by default. For us I'm not aware of a problem yet but we haven't done much testing. puppetserver overrides ssl config for the default server but the code-manager server is configured normally.", "created": "2015-08-05T09:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "It probably doesn't manifest itself as a big problem in PE by default.  My understanding is that the default values that would be computed from {{puppet.conf}} for overrides end up being the same as what the PE module populates as discrete {{ssl-*}} settings in the {{webserver.conf}} file for Puppet Server anyway.  So the fact that the settings are being overridden in memory with the same values as would be in the {{webserver.conf}} anyway is probably not a big deal.  Seems like it would be a bigger problem for any cases where a user were to want to use different paths for any of these settings in {{webserver.conf}} than what would be derived from the {{puppet.conf}} settings.  I have no idea how likely that is.", "created": "2015-08-05T10:04:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I think this must be fixed for Ankeny.  Otherwise, our customers will have to do a lot of SSL workaround configuration work on their Masters and Compile only Masters.\n\nWithout SSL work around config, puppet server will not start", "created": "2015-09-02T10:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] so the code that you have there looks like it's just generating pem files and moving them around?  I'm with [~accountid:557058:d2f4e3cd-249f-4cc2-8a57-23433aeefb52] in that it doesn't sound like that's exactly the same issue described in SERVER-402?\n\nI most definitely agree that it sounds like you are hitting something that must be fixed prior to Ankeny release, but I'm still pretty unclear on what you are actually running in to.  Can you get us a copy of the error message or stack trace or log file?  And maybe a tarball of the conf.d directory when its in the broken state?  If we have clear repro steps and a basic idea of how to diagnose I will most definitely make sure that this gets prioritized and brought into a sprint ASAP.", "created": "2015-09-03T02:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] for these lines:\n\n{code}\n    # These settings will be ignored by puppet-server in favor of\n    # of puppet.conf values\n    ssl-cert: \"/etc/puppetlabs/puppet/ssl/certs/bnk3c7baq1xeaur.delivery.puppetlabs.net.pem\"\n    ssl-key: \"/etc/puppetlabs/puppet/ssl/private_keys/bnk3c7baq1xeaur.delivery.puppetlabs.net.pem\"\n    ssl-ca-cert: /etc/puppetlabs/puppet/ssl/certs/ca.pem\n    ssl-crl-path : \"/etc/puppetlabs/puppet/ssl/crl.pem\"\n{code}\n\nAre those getting added to the config file via your beaker pre-suite?  Or do they get put in there during installation?", "created": "2015-09-14T11:09:00.000000"}, {"author": "623e7507866b810069e57527", "body": "This is a dupe of SERVER-964, so I'm closing it out.", "created": "2015-10-01T17:15:00.000000"}], "components": [], "created": "2015-02-27T15:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a12917a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyymfz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_266396494_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_18398769695"}], "description": "If you attempt to set up the webserver configuration for Puppet Server in such a way as to take advantage of tk-j9's support for multiple webservers in the same process:\n\nhttps://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/m...https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/master/doc/jetty-config.md#configuring-multiple-webservers-on-isolated-ports\n\nThen Puppet Server will ignore any SSL configuration that you put into the tk-j9 config, because of this:\n\nhttps://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/master/doc/jetty-config.md#configuring-multiple-webservers-on-isolated-ports\n\nSo it will try to use the values it gets from Puppet/puppet.conf instead of your explicit tk-j9 values.\n\nThis makes it impossible to write certain kinds of tests that would be very useful.\n\nThere may be other issues with our support for multiple servers; e.g. none of our calls to `add-ring-handler` specify a webserver ID, which means that there must always be a `default` webserver in the configuration.  That *might* be OK, but it means that we can't ever run in the same process with any other app that has that issue unless we're able to share SSL configs and such.\n\nI can envision a scenario in the near future where we want to put together a single trapperkeeper config / ezbake project that will build a monolithic PE uberjar that combines Puppet Server, PuppetDB, and PE Console Services.  It's likely that we're going to need to be able to play nicely with the tk-j9 multi-server configs in order to be able to pull that off, so we should try to fix as much as possible.\n\nBut at the bare minimum we *have* to fix the issue about not honoring the SSL config.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17614", "fixedVersions": [], "id": "17614", "issueType": "Bug", "key": "SERVER-402", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2015-10-01T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server is not compatible with tk-j9's support for multiple servers", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "This is blocked on pull request https://github.com/puppetlabs/puppet/pull/3662 getting merged for ticket PUP-4057 along with QENG-1841 being merged.\n\nI am confident this test file will run successfully once PUP-4057 is merged based on the following setup:\n\n * I updated our {{ruby/puppet}} submodule to point at my Github fork.\n * I pushed all Git tags to my own fork to work around SERVER-405 (Fix invalid logging configuration in beaker helper.rb).\n * I pushed origin/pr/3662 at 8c388537647eaa12af84893e7e51fb5628dcf0b3 to the aio branch of https://github.com/jeffmccune/puppet\n * I pushed the following combination to the aio branch of puppet-server and kicked off the full integration suite (JOB #3) from the \"aio\" view at: https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/\n   ** puppet-agent @ 1a390de7dcb73cf350083ffeb24932506541df89\n   ** beaker 2.5.0 from git://github.com/kevpl/beaker (at qeng1841_aio_pathsupdate)\n   ** puppet-server @ 685cea01f9660e5f2c12fb7ed61c17a00eeb8f22 + the dependency changes described here.\n   ** {{ruby/puppet}} @ 8c388537647eaa12af84893e7e51fb5628dcf0b3 (Josh's pull request for PUP-4057)\n * I also ran this test file in isolation from my laptop using the vmpooler and the file passed successfully.", "created": "2015-03-02T13:54:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Once this is unblocked, there should be no work required to resolve this ticket beyond verifying the test is passing once puppet-server's master branch has been updated to include versions of {{ruby/puppet}}, {{puppet-agent}} and {{beaker}} that have all of the necessary fixes.", "created": "2015-03-02T13:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] - looks like this test is passing in the Puppet Server pipeline now - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/197/LAYOUT=64mdca,PLATFORM=centos7,label=beaker/#showFailuresLink.  Any reason to keep this ticket open at this point?", "created": "2015-03-03T18:37:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Yes, this is resolved now that PUP-4057 is merged.", "created": "2015-03-04T12:20:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Nothing for Test Rail here.", "created": "2015-03-26T16:24:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-27T13:33:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c4f0125"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyymdr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_296150_*|*_3_*:*_1_*:*_10343939_*|*_5_*:*_1_*:*_49496903875_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_167616612_*|*_10006_*:*_1_*:*_249356069"}], "description": "The {{ruby/puppet/acceptance/tests/external_ca_support/jetty_external_root_ca.rb}} acceptance test is failing when using {{BEAKER_LOCATION=git://github.com/kevpl/beaker#qeng1841_aio_pathsupdate}}.\n\nHere's the error:\n\n{code}\ndx2xspb3nk3vekt.delivery.puppetlabs.net (redhat7-64-1) 12:05:38$ puppet agent --confdir /tmp/jetty_external_root_ca.YiHSoN/etc/agent --vardir /tmp/jetty_external_root_ca\n.YiHSoN/etc/agent/var --test\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nError: /File[/tmp/jetty_external_root_ca.YiHSoN/etc/agent/var/facts.d]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:/\n//pluginfacts\nError: /File[/tmp/jetty_external_root_ca.YiHSoN/etc/agent/var/lib]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///pl\nugins\nInfo: Caching catalog for agent1.example.org\nInfo: Applying configuration version '1425067541'\nInfo: Creating state file /tmp/jetty_external_root_ca.YiHSoN/etc/agent/var/state/state.yaml\nNotice: Applied catalog in 0.01 seconds\n\ndx2xspb3nk3vekt.delivery.puppetlabs.net (redhat7-64-1) executed in 3.81 seconds\nWarning:\n</\\Werror\\W/i> expected to not match\n<\"Error: /File[/tmp/jetty_external_root_ca.YiHSoN/etc/agent/var/facts.d]: Could not evaluate: Could not retrieve information from environment production source(s) puppet\n:///pluginfacts\\nError: /File[/tmp/jetty_external_root_ca.YiHSoN/etc/agent/var/lib]: Could not evaluate: Could not retrieve information from environment production sourc\ne(s) puppet:///plugins\\n\">.\n\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/dsl/outcomes.rb:43\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/dsl/helpers.rb:600\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/dsl/helpers.rb:636\n/workspace/serious/src/puppet-server/ruby/puppet/acceptance/tests/external_ca_support/jetty_external_root_ca.rb:110\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/test_case.rb:120\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/test_case.rb:120\n/opt/crossfader/versions/ruby/2.1.4/lib/ruby/2.1.0/benchmark.rb:294\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/test_case.rb:117\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/test_suite.rb:286\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/test_suite.rb:283\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/test_suite.rb:283\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/test_suite.rb:325\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/cli.rb:149\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/lib/beaker/cli.rb:93\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bundler/gems/beaker-5022e302f91c/bin/beaker:6\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bin/beaker:23\n/workspace/serious/src/puppet-server/.bundle/gems/ruby/2.1.0/bin/beaker:23\n\ndx2xspb3nk3vekt.delivery.puppetlabs.net (redhat7-64-1) 12:05:42$ puppet master --configprint config\n/etc/puppetlabs/puppet/puppet.conf\n\ndx2xspb3nk3vekt.delivery.puppetlabs.net (redhat7-64-1) executed in 0.40 seconds\n\ndx2xspb3nk3vekt.delivery.puppetlabs.net (redhat7-64-1) 12:05:43$ if [ -f '/tmp/jetty_external_root_ca.rb.5NAhNW/puppet.conf.bak' ]; then cat '/tmp/jetty_external_root_ca\n.rb.5NAhNW/puppet.conf.bak' > '/etc/puppetlabs/puppet/puppet.conf'; rm -f '/tmp/jetty_external_root_ca.rb.5NAhNW/puppet.conf.bak'; fi\n{code}", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17063", "fixedVersions": [], "id": "17063", "issueType": "Task", "key": "SERVER-401", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-04T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate jetty_external_root_ca.rb acceptance test", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "To run locally: {{export BEAKER_LOCATION=git://github.com/kevpl/beaker#qeng1841_aio_pathsupdate}}", "created": "2015-02-27T12:36:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:63d40628f6e1b543161789a7] Mentioned the following issue on the Puppet side.  This is an FYI so we're able to determine if issues we see on our side should be resolved by their efforts\n\n{quote}\n@jeff So I'm seeing failures on our end because a bunch of puppet acceptance tests are using \"puppetpath\", which beaker defaults to /etc/puppetlabs/agent: https://github.com/puppetlabs/beaker/blob/master/lib/beaker/host/unix.rb#L69\nthe tests are actually conflating codedir and confdir\n\ne.g. it should be using #\\{codedir\\}/modules\nvs #\\{confdir\\}/puppet.conf\n\nThe short term fix is to update the host definition to use /etc/puppetlabs/puppet (or code).. the reason we're seeing failures now is the puppetserver packages no longer creates /etc/puppetlabs/agent\n{quote}", "created": "2015-02-27T13:37:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "We've stopped using 'puppetpath' in our accrtance tests. Try the recent puppet-agent build from this morning on nightlies.puppetlabs.com", "created": "2015-02-28T14:34:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Trying again, this time having updated puppet-server's ruby/puppet submodule closer to HEAD of master at c4e005217a684134e779ec5e359e8002beb6a127 while also incorporating a more recent puppet-agent package at version http://builds.puppetlabs.lan/puppet-agent/1a390de7dcb73cf350083ffeb24932506541df89/\n\nTesting with puppet-server version {{2.0.0.SNAPSHOT.2015.03.02T0943}}\n\nWe'll see what shakes out...", "created": "2015-03-02T10:47:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Jenkins is running currently against the \"aio\" topic branch.  Job #3 at [1] is our current best educated guess at what puppet-server should expect once QENG-1841, PUP-4057 are merged in and we've updated our master branch to employ these changes.\n\n[1]: https://jenkins.puppetlabs.com/view/Puppet%20Server/view/aio/job/experimental_puppet-server_integration-system_full-aio/3/", "created": "2015-03-02T14:05:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "This is no longer relevant now that PUP-4056 and PUP-3997 have been merged into the master branch of puppet.  All of the failures we're seeing in the master branch of puppet-server are attributable to work tracked in PUP itself, not in Beaker.\n\nWe'll be pinning beaker to the same version puppet is pinning to in their acceptance/Gemfile from here on out.", "created": "2015-03-10T15:35:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-27T12:22:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1452822a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3h3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_43091_*|*_3_*:*_1_*:*_958341943_*|*_5_*:*_1_*:*_48970394739_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_44354"}], "description": "As discussed in the AIO triage today, the server team is going to try beaker from https://github.com/puppetlabs/beaker/pull/719 against our master branch and see what failures shake out of a full acceptance run.\n\nIf all (or most) of the failures are not addressed, then subsequent tickets will be created.\n\nThe results of the triage will be posted here.\n\nAs additional information, the current results of the full acceptance suite running against puppet-server master are triaged at: https://gist.github.com/jeffmccune/8457c38f8a46dfa52219", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15261", "fixedVersions": [], "id": "15261", "issueType": "Task", "key": "SERVER-400", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-03-10T15:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Try beaker from pr/719", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The most recent version is http://nightlies.puppetlabs.com/puppet-agent/cdddc289b958224005c0ddfe47433a69dfcb84de/. AFAIK all of the AIO pathing changes for facter, hiera, puppet are in.", "created": "2015-02-26T21:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Didn't see any failures in recent CI that seem to be related to this - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/197 - so moving to done.\n\nWill have follow-up work as we continue to track HEAD on the Puppet AIO branch.", "created": "2015-03-03T18:31:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Nothing for Test Rail here.", "created": "2015-03-26T16:20:00.000000"}], "components": [], "created": "2015-02-26T18:58:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ae8c00f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyly7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_275855945_*|*_1_*:*_1_*:*_61478493_*|*_10007_*:*_1_*:*_87609569_*|*_3_*:*_1_*:*_5454974_*|*_5_*:*_1_*:*_49561240042_*|*_6_*:*_1_*:*_0"}], "description": "Step 1: Figure out a version of puppet-agent published to http://builds.puppetlabs.lan/puppet-agent/ which is close to the HEAD of the branch [~accountid:63d40628f6e1b543161789a7] is actively building his side of the bridge from.  Hopefully this is HEAD, but might not be if HEAD is bad.\n\nOnce the SHA is identified, run puppet-server against that SHA using the PUPPET_BUILD_VERSION environment variable and see what EL-7 smoke test failures shake out.\n\nFix them?\n\nRinse, repeat?  (Maybe as separate tickets?)\n", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16090", "fixedVersions": ["SERVER 2.0.0"], "id": "16090", "issueType": "Task", "key": "SERVER-399", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-03T18:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppet-agent dependency closer to AIO HEAD", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm pretty sure this is normal.", "created": "2015-02-26T14:21:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "It's not normal.  As a sysadmin, if I install a package that contains a service I expect the service to start back up when the power goes out and my server reboots so I don't get paged out of bed at 3AM.", "created": "2015-02-26T14:30:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I may be wrong about that, Chris may be right. http://fedoraproject.org/wiki/Packaging:SysVInitScript says \"Note that the default for most network-listening scripts is off. This is done for better security. We have multiple tools that can enable services, including GUIs.\"", "created": "2015-02-26T14:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yeah I'm pretty sure that if you install postgres on both debian and redhat you'll observe this behavior.", "created": "2015-02-26T14:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "also... [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e]?  [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4]?", "created": "2015-02-26T14:45:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "tl", "created": "2015-02-26T14:57:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "So, on systemd machines the package gets installed with the service in a disabled state and the user will need to run {systemctl enable puppetserver} to allow it to start on boot. Looks like this is a close-won't-fix?", "created": "2015-02-26T16:18:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] No, unless I misunderstand we need to make sure the package gets installed with the service in an _enabled_ state, not disabled.", "created": "2015-02-26T16:30:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "We currently call {code}%{systemd_post}{code} in the post of the package installation. The systemd_post macro expands to the following\n\n{code}\nif [ $1 -eq 1 ] ", "created": "2015-02-26T16:30:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I think adding the systemctl enable line in the post (on initial install at least) is probably the right way to go.", "created": "2015-02-26T16:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Discussing this in the triage meeting today, it seems like the dev team has consensus that we'd prefer not to have it start immediately upon installation.  Opinions seem more varied about whether it should be configured to start after reboot, but we definitely don't want it to start immediately upon installation.", "created": "2015-03-02T17:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Let's just do what [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] said.", "created": "2015-03-09T17:08:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "FWIW, I had to \"systemctl start puppetserver\" before I could \"systemctl enable puppetserver.\"  Your milage may vary.", "created": "2015-03-24T19:22:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "I do not agree. We should not start services or enable them for reboot starting. (they should be usable from system tools like service/systemctl) The reasons are the same. If a service has not been configured, don't start it. Rebooting does not guarantee that you have configured the service. We often use puppet to do this, which makes sense.", "created": "2015-09-17T12:26:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "My reading of chkconfig here was flawed. From the manpage, it reads as though `chkconfig --add` will enable the service via various runlevel links, but that isn't the case.\n\npuppet and mcollective ship with no default runlevels listed in the chkconfig headers in the initscripts, so `chkconfig --add` does not enable them out of the box.", "created": "2015-09-17T13:08:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "But we're also inconsistent here. On sles, our services are enabled out of the box so they will start after a reboot, on el and fedora they aren't.", "created": "2015-09-17T13:46:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "Let's normalize SLES then. ", "created": "2015-09-17T14:02:00.000000"}], "components": [], "created": "2015-02-26T14:16:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61ccf060"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z3b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_957145211_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_55383400114"}], "description": "The FOSS Puppet server packaging installs the puppetserver service in a disabled state on Redhat-type systems. Do we want this to be installed as enabled? ", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15042", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "15042", "issueType": "Bug", "key": "SERVER-398", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Incomplete", "resolutionDate": "2016-12-09T16:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "FOSS packaging installs a disabled service", "timeSpent": "PT0S", "updated": "2016-12-09T16:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I swear we used to have %p in there, did that get changed?", "created": "2015-02-26T14:18:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "In the systemd service configuration the line reads \"-XX:OnOutOfMemoryError=kill\\ -9\\ %p \\\" but unfortunately systemd interpolates \"%p\" and replaces it with the name of the unit. We will need to change this to \"%%p\" which specifies the literal \"%p\"", "created": "2015-02-26T15:51:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Looks like this is a dup of PE-8274", "created": "2015-02-27T15:46:00.000000"}], "components": [], "created": "2015-02-26T14:08:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32953aef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyylrb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_92251113_*|*_6_*:*_1_*:*_0"}], "description": "As [~accountid:623c12b6ee1b5a0070293582] pointed out in SERVER-336, the current JVM argument {{-XX:OnOutOfMemoryError=kill\\ -9\\ puppetserver}} should probably be replaced with something like {{kill\\ -9\\ %p}} where {{%p}} gets replaced by the process' PID number.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17062", "fixedVersions": [], "id": "17062", "issueType": "Bug", "key": "SERVER-397", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Duplicate", "resolutionDate": "2015-02-27T15:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Need to change OOM kill command", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-02-26T13:23:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6aa19228"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xjb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_359924121_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_55983753552"}], "description": "Clojure AOT compilation might have a significant impact on Puppet Server startup time.  We need to measure this, and if it's a big enough difference, we might need to revisit our decisions on whether or not to use AOT for packages.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16089", "fixedVersions": [], "id": "16089", "issueType": "Improvement", "key": "SERVER-396", "labels": ["startup-time"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Revisit AOT in terms of impact on startup time", "timeSpent": "PT0S", "updated": "2016-12-09T16:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We've recently upgraded to Clojure 1.7 so I suspect this can be closed.", "created": "2016-02-17T16:48:00.000000"}], "components": [], "created": "2015-02-26T13:18:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@688b1e45"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xj3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_360185400_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_55983743420"}], "description": "A large part of the development work going on for the forthcoming Clojure 1.7.0 release is targeted at improving Clojure startup time.  We should grab an alpha/beta build and measure the difference that it will have for us.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15828", "fixedVersions": [], "id": "15828", "issueType": "Improvement", "key": "SERVER-395", "labels": ["startup-time"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-12-09T16:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Evaluate startup time improvements we might get from Clojure 1.7.0", "timeSpent": "PT0S", "updated": "2016-12-09T16:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I suggest a timeout value of 1 minute in these cases.", "created": "2015-02-26T12:57:00.000000"}], "components": [], "created": "2015-02-26T12:56:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67bb8486"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xiv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_361422123_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_55983800307"}], "description": "SERVER-389 changes the default {{borrow-timeout}} from 1 to 20 minutes.  That timeout is reasonable for requests that occur from the agent during a run, especially the catalog request.  However, it is unreasonably long for requests coming from a user - eg, the {{/environment-cache}} endpoint.  For these kinds of requests, the timeout should be much lower - there's no way a user using {{curl}} or a GUI like the PE console are going to tolerate requests to this endpoint taking 20 minutes.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17250", "fixedVersions": [], "id": "17250", "issueType": "Improvement", "key": "SERVER-394", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "make timeouts more flexible when acquiring a JRuby instance", "timeSpent": "PT0S", "updated": "2016-12-09T16:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We need to try to repro this.", "created": "2015-03-02T17:17:00.000000"}, {"author": "557058:8ed100be-9a13-4ed1-92d2-88ac897d6774", "body": "for some a strange reason, it seems to be really hard to come by ipv6-only servers in the western world.", "created": "2015-03-09T09:03:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "> We need to try to repro this.\n\n[~accountid:557058:cdbb71a2-54ec-4b14-afef-932752df7be9] Is this something you could help us reproduce?  Is an IPv6 only server a possibility for us to reproduce this issue?", "created": "2015-03-09T10:38:00.000000"}, {"author": "557058:cdbb71a2-54ec-4b14-afef-932752df7be9", "body": "Ops doesn't really have IPv6 internally in any real capacity, and I'd have to reproduce this in my personal lab.  Just looking at it though, rubygems.org doesn't seem to have a AAAA record, so I'd assume that v4 would be required.  Updates.puppetlabs.com does have v6, but the message above is connection refused.  {{nmap -6 -p 443 updates.puppetlabs.com}} shows the port is closed, so that piece seems to indicate a problem with the updates service.  I'll look.", "created": "2015-03-09T11:55:00.000000"}, {"author": "557058:cdbb71a2-54ec-4b14-afef-932752df7be9", "body": "The following should help the updates side.  I can't do much for rubygems.\n\nhttps://github.com/puppetlabs/puppetlabs-modules/pull/3616", "created": "2015-03-09T12:37:00.000000"}, {"author": "557058:cdbb71a2-54ec-4b14-afef-932752df7be9", "body": "The PR above has been merged.  The site updates.puppetlabs.com should support v6.", "created": "2015-03-19T09:45:00.000000"}], "components": [], "created": "2015-02-26T10:36:00.000000", "creator": "557058:8ed100be-9a13-4ed1-92d2-88ac897d6774", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ef17157"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotun:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_369674387_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_55983877158"}], "description": "puppet server's core components all assume that when they talk to the out-side world, they'll be talking IPv4 only.\n\nAll of our internal machines are IPv6 only, so they resolve things like updates.puppetlabs.com and rubygems.org either directly to IPv6, or indirectly via DNS64 and NAT64.\n\nThe first symptom of something being off is that puppetserver takes a long time to start up, and we only see in the debug log why:\n\n{code}\n2015-02-26 17:26:46,048 DEBUG [p.s.v.version-check-core] Could not retrieve update information (http://updates.puppetlabs.com)\njava.net.SocketException: Network is unreachable\n        at sun.nio.ch.Net.connect0(Native Method) ~[na:1.8.0_31]\n        at sun.nio.ch.Net.connect(Net.java:457) ~[na:1.8.0_31]\n        at sun.nio.ch.Net.connect(Net.java:449) ~[na:1.8.0_31]\n        at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:647) ~[na:1.8.0_31]\n        at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processSessionRequests(DefaultConnectingIOReactor.java:272) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:141) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:348) ~[puppet-server-release.jar:na]\n        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_31]\n{code}\n\nthe second can be seen when trying to install a gem:\n\n{code}\nigalic@puppet01 ~ % sudo -H  /usr/bin/puppetserver gem  install hiera-file\nERROR:  Could not find a valid gem 'hiera-file' (>= 0), here is why:\n          Unable to download data from https://rubygems.org/ - SocketError: Network is unreachable (https://rubygems.org/latest_specs.4.8.gz)\nsudo -H /usr/bin/puppetserver gem install hiera-file  13,43s user 0,31s system 182% cpu 7,511 total\nigalic@puppet01 ~ % \n{code}\n\ni'd like to be able to tell puppetserver to prefer ipv6. putting that intent in the form of {{JAVA_ARGS=\"-Xms2g -Xmx2g -Djava.net.preferIPv6Addresses=true\"}} into {{/etc/default/puppetserver}} doesn't seem to suffice:\n\nstartup:\n\n{code}\n2015-02-26 17:34:56,866 DEBUG [p.s.v.version-check-core] Could not retrieve update information (http://updates.puppetlabs.com)\njava.net.ConnectException: Connection refused\n        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_31]\n        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716) ~[na:1.8.0_31]\n        at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvent(DefaultConnectingIOReactor.java:173) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:147) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:348) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:189) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.doExecute(CloseableHttpAsyncClientBase.java:67) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.access$000(CloseableHttpAsyncClientBase.java:38) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:57) ~[puppet-server-release.jar:na]\n        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_31]\n{code}\n\ngem:\n\n{code}\nigalic@puppet01 ~ % sudo -H  /usr/bin/puppetserver gem  install hiera-file\nERROR:  Could not find a valid gem 'hiera-file' (>= 0), here is why:\n          Unable to download data from https://rubygems.org/ - SocketError: Network is unreachable (https://rubygems.org/latest_specs.4.8.gz)\nsudo -H /usr/bin/puppetserver gem install hiera-file  13,97s user 0,33s system 187% cpu 7,637 total\nigalic@puppet01 ~ % \n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16688", "fixedVersions": [], "id": "16688", "issueType": "Bug", "key": "SERVER-393", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:8ed100be-9a13-4ed1-92d2-88ac897d6774", "resolution": "Incomplete", "resolutionDate": "2016-12-09T16:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server assumes IPv4 (even if the machine is IPv6 only)", "timeSpent": "PT0S", "updated": "2016-12-09T16:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Why would we change the name at this point?", "created": "2015-02-26T10:54:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "The inconsistency is a constant source of confusion and angst.", "created": "2015-02-26T11:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:63d40635a05386069cdb69d6] [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] since RE were involved in the original decisions about how to deal with the naming issues.", "created": "2015-02-26T11:28:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "The reason we had to hyphenate haven't changed. I don't understand why we would change. \n\nWe don't want somebody running puppet-server (package on EL) auto upgrading to JVM puppetmaster. Until we drop  ruby/rack support, I don't think we should make this change. ", "created": "2015-02-26T12:40:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The reasoning here was that el and fedora (and previous versions of us), ship(ped) packages called puppet-server which will have a version higher than the current puppetserver packages. This has 2 main consequences. First, users that had fedora/el/our repos enabled would not get our puppetserver if it were named puppet-server, because the version of the ruby based edition would be higher. The only way around this would be to add an epoch to the clojure/jruby puppetserver package, which would then mean that users who installed puppet-server with el/fedora and our repos would *always* get that version, and would get upgraded to it from the ruby based edition.\n\nAt some point, puppet-server packages will go away from the world, but that is a long way off.", "created": "2015-02-26T12:53:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "> The inconsistency is a constant source of confusion and angst.\n\nFor whom?  I doubt end-users are confused since they rarely look at the git repository, or other things that reference puppet-server.\n\nI don't think we should ever make the change unless there's a compelling reason doing so would be significantly net-better for end users.  That is, the benefits to the end user outweigh the pain of having to deal with a name change.  For example, any automation or scripting that end users have put around package installation will break once we change the name of the package.  From the end user perspective, the breaking change will be for little reason or benefit and have a potentially high impact.", "created": "2015-02-26T14:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I agree with [~accountid:623c12b6ee1b5a0070293582], and maybe we should just change the github repo name to not have a hyphen in it.  [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] do you care?", "created": "2015-03-02T17:14:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Nope, I don't care that much", "created": "2015-03-02T17:18:00.000000"}, {"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "Actual Resolution: *Achieved differently*\nRealized by SERVER-1206", "created": "2016-03-11T17:43:00.000000"}], "components": [], "created": "2015-02-25T21:06:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f3afad7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3yzr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1018853399_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_31801011495"}], "description": "For the initial release(s) of Puppet Server, we wanted to call the package \"puppet-server\", but we couldn't because the existing package for the Puppet master already had that name.  Thus, we chose \"puppetserver\", and other things like file paths and such also adopted this non-hyphenated form.  The inconsistency between \"puppetserver\" and \"puppet-server\" is very confusing.  [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] mentioned that this decision was temporary, and we should fix it:\nbq. [11:37 AM] eric sorenson: i thought that was a temp thing for packaging that we were gonna fix in puppet server 2", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15258", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "15258", "issueType": "Task", "key": "SERVER-392", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-03-11T17:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "s/puppetserver/puppet-server", "timeSpent": "PT0S", "updated": "2016-05-04T17:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We should put error handling in place which catches that {{IllegalStateException}} and returns an HTTP 503.  The error message in the exception, \"Attempt to borrow a JRuby instance from the pool timed out\", would be good to include in the response body.", "created": "2015-02-26T15:38:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] We're thinking that it might be worthwhile to improve the user feedback when this lower-level error occurs.  Currently, the Puppet Server will respond with a 500 and the exception message, which can be seen above in the description.  There is a configuration setting to adjust the timeout length, which we've documented [here|https://github.com/puppetlabs/puppet-server/blob/master/documentation/configuration.markdown#puppetserverconf] as {{:borrow-timeout}}.\n\nJ.D. - Do you have any ideas or suggestions on what the response message should say? Maybe something that would offer more guidance or direction on what the user can do?", "created": "2015-02-26T17:06:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "+1 to a better message. I'll defer to [~accountid:623c08e1562ab90069f8aed4] or [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] to write something, though.", "created": "2015-02-27T12:08:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "RE: the HTTP status code, I'd be okay with what [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] is suggesting.  http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html describes the 503 as:\n\n{quote}The server is currently unable to handle the request due to a temporary overloading or maintenance of the server.{quote}\n\n\"Temporary overloading\" seems like an appropriate description for this condition - all of our JRubies are spoken for right now, but hopefully we'll have some available for you when you come back later.", "created": "2015-02-27T12:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Assigning this to [~accountid:623c08e1562ab90069f8aed4] to request his suggestion on what we use for the error message which would be displayed in the agent run output if this problem were to happen.  Please reassign as necessary.", "created": "2015-02-27T12:48:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "We could probably do that. We'd need a brief explanation of what circumstances might cause that error condition in the real world, and what the recommended fix for those conditions would be. (I can see the levers that are affecting all this, but there's a bunch of them, so it'd be nice to have some distillation of what _reasonable-seeming use behavior_ might actually land you there.\n\nIf you decide you want input from us before you can continue, please drop science, add the DOCS component, and assign to me. :)", "created": "2015-02-27T12:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c08e1562ab90069f8aed4], sounds good.  [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] - could you write up something more detailed for [~accountid:623c08e1562ab90069f8aed4] to describe this?", "created": "2015-02-27T12:57:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Ha, looks like our comments crossed in the night. So am I understanding right:\n\n* This would happen because the server's overloaded.\n* We assume you've already got your jruby pool config set up appropriately for your hardware, so you don't need to change config, you just need to not point too many agents at the thing at once. \n\n???", "created": "2015-02-27T12:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}This would happen because the server's overloaded.{quote}\n\nYeah, that should be the only reason you see this - at least \"overloaded\" per its current configuration.\n\n{quote}We assume you've already got your jruby pool config set up appropriately for your hardware, so you don't need to change config, you just need to not point too many agents at the thing at once.{quote}\n\nNot sure we can assume that?\n\nIt may be that you actually intend for your server to handle more concurrent requests from agents than the number of JRuby instances you currently have configured for your master.  In which case, you might want to bump the {{max-active-instances}} setting up.\n\nIf your master is already configured with the number of JRuby instances that are desired for the load you expect your master to be able to handle, though, you probably would need to lower the number of agents that are hitting your master.  You might also try to do some tuning on the agent side to splay out / randomize the frequency of requests made to the master to lessen the likelihood that the timeout would be hit.\n\nMaybe all of this is too much detail to try to capture in the running agent's output - and better to cover in whatever manner of \"tuning\" documentation we end up with for puppetserver?\n\n---\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] may have some additional suggestions here to consider for the verbiage we want...", "created": "2015-02-27T13:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c08e1562ab90069f8aed4] - have you had a chance to look into this any further?  Not sure I labeled this properly to be on your radar.", "created": "2015-03-11T14:42:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Ack, sorry, I let this drop. \n\nI'm actually out of capacity right now with other concerns. Another docs person might be able to help with this. Best I've got right now is:\n\n\"Error: Attempt to borrow a JRuby instance from the pool timed out. This means Puppet Server is temporarily overloaded. If you get this error once, it might be a coincidence", "created": "2015-03-11T18:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:623c08e1562ab90069f8aed4].  I'd be good with that message if [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] is.  [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] - what do you think?", "created": "2015-03-12T09:57:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "I'm fine with it, but if you did want something a bit shorter...\n\n\"Error: Attempt to borrow a JRuby instance from the pool timed out", "created": "2015-03-12T10:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Sounds fine to me.  Thanks again, [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] and [~accountid:623c08e1562ab90069f8aed4].", "created": "2015-03-12T10:12:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Sorry, Accidentally moved this.  Put it back to how Jeremy had it set.", "created": "2015-03-13T10:57:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Just put the PR up. I wasn't able to directly grab the Puppet version number, since this is 100% Clojure code, so the response headers will be a bit different than the other ones. Would this be a significant issue?", "created": "2015-04-10T17:18:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Actually, I totally forgot I can just grab that from the PuppetConfig service, so I'll will add that to the PR.", "created": "2015-04-13T11:52:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Added the new PR with the X-Puppet-version header included.", "created": "2015-04-13T12:12:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Prematurely merged into stable as https://github.com/puppetlabs/puppet-server/commit/5921e08cd61560d589c1128b3044f4a0cff17966\n\n", "created": "2015-04-16T15:20:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Justin's still working on the slingshot handling and some other organization things.", "created": "2015-04-16T15:22:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] FYI, I reverted the merge commit, which means your new PR should probably start off by reverting the revert.  The other option is to simply rebase, but that would have the effect of commits that look to be duplicates, much like both cherry picking across branches and merging up between branches.\n\nLMK if I can help, sorry for the trouble.", "created": "2015-04-16T15:54:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Oh, whoops... before I read this I went for the later option. The new PR link is posted.", "created": "2015-04-17T12:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This has been in the stable branch for a while now and Jenkins jobs are still passing in CI - see https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/266/ for example.  Moving to \"testing\".", "created": "2015-04-28T14:51:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This is passing in CI", "created": "2015-05-05T14:45:00.000000"}], "components": [], "created": "2015-02-25T13:20:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7cc0346"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyov87:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_422983758_*|*_1_*:*_2_*:*_168027411_*|*_10007_*:*_2_*:*_767670375_*|*_3_*:*_3_*:*_448742848_*|*_5_*:*_1_*:*_2511298649_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_604495960_*|*_10004_*:*_1_*:*_1057967395_*|*_10006_*:*_2_*:*_2493263286"}], "description": "SERVER-246 introduced a timeout for allowing JRuby pool borrow attempts.  The work for it, however, didn't directly cover what the external user experience should be if one of these timeouts were hit in the context of an incoming agent request.  Presumably, the exception that the borrow attempt would throw would be translated into an HTTP failure response on the wire.  The internal exception message has \"Error: Attempt to borrow a JRuby instance from the pool timed out\".  This message should probably be more descriptive, e.g., including some informative text and what the user might be able to do to address the issue.\n\nThis ticket would cover:\n\n1) Evaluate what the current behavior is for a failure.\n\n2) Investigate what would be involved in catching the internal exception and rethrowing as a more user-friendly failure in the HTTP response.\n\n3) Solicit opinions - maybe from UX - on what a more appropriate message for a consumer of the HTTP response would be.\n\n----\n\nFor reference, the following is what appears on the agent side when the JRuby pool borrow times out:\n{quote}\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: Error 500 on SERVER: Internal Server Error: java.lang.IllegalStateException: Error: Attempt to borrow a JRuby instance from the pool timed out\n{quote}\n\nThe full stacktrace that follows this exception message is printed out in the Server log.\n\nThe agent run continues after receiving this warning/error, likely using some cached state from the previous run.\n\nTo reproduce...\n\nFirst, the setup:\n\n- Install a custom \"sleep\" function on the Server:\n{code:title=sleep.rb|ruby}\nmodule Puppet::Parser::Functions\n  newfunction(:sleep) do |args|\n    sleep args.first\n  end\nend\n{code}\n\n- Sleep 15 seconds in a manifest:\n{code:title=site.pp|ruby}\nsleep(15)\n{code}\n\n- Use only 1 JRuby instance, and lower the Puppet Server borrow timeout to 10 seconds:\n{code:title=puppet-server.conf|conf}\njruby-puppet: {\n    max-active-instances: 1\n    borrow-timeout: 10000\n}\n{code}\n\nNow, trigger the timeout:\n\n1. Borrow the only JRuby directly with curl (since you can't do two simultaneous agent runs):\n{code:bash}\n$ curl -k -H \"Accept: pson\" https://localhost:8140/puppet/v3/catalog/my-agent\\?environment\\=production\n{code}\n\n2. Immediately after the curl command, do an agent run:\n\n{code:bash}\n$ puppet agent --no-daemonize --onetime --verbose --server localhost --certname my-agent\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: Error 500 on SERVER: Internal Server Error: java.lang.IllegalStateException: Error: Attempt to borrow a JRuby instance from the pool timed out\nInfo: Retrieving plugin\nInfo: Caching catalog for my-agent\nInfo: Applying configuration version '1424979993'\nNotice: I'm still tired :(\nNotice: /Stage[main]/Foo/Notify[I'm still tired :(]/message: defined 'message' as 'I'm still tired :('\nNotice: Applied catalog in 0.02 seconds\n{code}\n\nh3.QA:\nRisk Assessment: Low\nProbability: Medium\nSeverity: Low.  Only affects the error message we throw when we time out a JRuby request.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15826", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "15826", "issueType": "Task", "key": "SERVER-391", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-05-05T14:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve error message for JRuby pool borrow timeout", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "There's a unix command called 'timeout' that might help here, e.g.:\n\n{code}timeout -s HUP 30s grep foo{code}\n\nIf you did that with your foreground and piping to a file, that would probably allow you to terminate the server easily.\n", "created": "2015-02-25T07:21:00.000000"}], "components": [], "created": "2015-02-24T16:58:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6cfc787a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywu1j:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_519271148_*|*_10007_*:*_1_*:*_1215997729_*|*_3_*:*_1_*:*_778414_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5086908191"}], "description": "We have acceptance tests for most of our subcommands, except \"foreground\".  Sometime during a git operation we lost the change made to the logback.xml file that allowed for \"foreground\" to work (specifically, printing to the console).  We didn't realize this immediately, and no tests failed, but our \"foreground\" command was broken.\n\nThis ticket is for writing (or attempting) such a test.  The challenge is calling \"foreground\" in a way that allows the test to both detect output on STDOUT but also be able to shut down the Server.\n\nIMPLEMENTATION IDEAS\n\n* Something simple like {{on(master, \"puppetserver foreground\" ...}} won't work because it won't return control to Beaker.\n* Redirecting to a file like {{on(master, \"puppetserver foreground > output\" ...}} will capture the output, but we won't be able to terminate the Server (in a reasonable way) at that point.\n* We might be able to spawn a child process to run \"foreground\" and then kill its STDIN in the hopes that this will cause the JVM to terminate, but we're thinking chances are pretty slim this is how the JVM will behave.\n* We might be able to run \"foreground\" via Ruby and then have access to its STDOUT and terminate it via object methods.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16687", "fixedVersions": [], "id": "16687", "issueType": "Improvement", "key": "SERVER-390", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Done", "resolutionDate": "2015-05-14T17:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Write acceptance test for \"foreground\" subcommand", "timeSpent": "PT0S", "updated": "2015-05-27T12:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Note that in production, virtually all of the meaningful uses of the JRuby pool goes through this macro:\n\nhttps://github.com/puppetlabs/puppet-server/blob/cd659b95ac557502f3bab2eea878fa7e6a131b6f/src/clj/puppetlabs/services/jruby/jruby_puppet_service.clj#L96\n\nwhich uses the `borrow` signature that doesn't specify a timeout.  Therefore, it is my belief that in the catalog compilation scenario that you are describing, we are already avoiding this issue.  If we wanted to bump the default timeout for purposes relating to testing, that might still be worthwhile, but I don't believe the change that you're suggesting would have any impact on production scenarios.\n\nWhether or not we *should* be using a timeout in the typical use case is a different question.", "created": "2015-02-23T19:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The macro doesn't specify a timeout but it calls into a JRuby service function, `borrow-instance`, which makes a call to {{borrow-from-pool-with-timeout}} with a timeout value:\n\nhttps://github.com/puppetlabs/puppet-server/blob/cd659b95ac557502f3bab2eea878fa7e6a131b6f/src/clj/puppetlabs/services/jruby/jruby_puppet_service.clj#L53\n\nThat timeout value may derive from the {{borrow-timeout}} key in the {{jruby-puppet}} configuration section or, if not specified in that section, the {{default-borrow-timeout}}, which is 60 seconds.\n\nThe code on the stable branch doesn't have this change.  Calls made to the JRuby service to borrow an instance with no timeout, basically any call in a production code path, would effectively use an infinite timeout.  The change to fix a timeout on each JRuby borrow request came into the master branch for https://github.com/puppetlabs/puppet-server/pull/329.\n\nMaybe it makes sense to rework this such that calls to the JRubyPuppet service and CI don't require a timeout.", "created": "2015-02-23T23:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Crap, you're right, sorry.  I've been spending a lot more time in the stable branch lately.\n\nThis is obviously not good the way that it is", "created": "2015-02-24T08:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and I talked about this and agreed that it's probably still better to have a timeout for borrowing JRuby pool instances - at least in the context of incoming HTTP requests, like from an agent - than to revert back to the state where the timeout is infinite.  Based on some limited, empirical data we have, we agreed that bumping the default up to 20 minutes would be reasonable.", "created": "2015-02-25T12:22:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "20 minutes sounds extremely high to me.  You mention some data that led you to that number - could you elaborate?\n\nTaking a step back, I don't see why this timeout should be increased at all.  It seems like, from the perspective of an agent and especially a user interacting with the HTTP API directly, if the server can't handle my request within 60 seconds because the system is so heavily loaded, that an HTTP 503 (triggered by a timeout) is exactly what should happen.\n\nOn that note, I wonder if Jetty and/or the agent's HTTP client timeout connections after a period of inactivity, which would render this change useless anyways?", "created": "2015-02-25T12:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] could give some more perspective on some of the real-world-ish compilation times he's seen with some fairly complex catalogs.  It was on the order of some number of minutes, not seconds in some cases.\n\nI believe a keep-alive connection -- where TCP keep-alive packets may periodically be sent to keep lower-level transports from killing the connection due to inactivity - would only be able to hit an idle-timeout that results in the connection being terminated by the Jetty server if no HTTP request were outstanding.  So if you had an HTTP keep-alive request with no response having been given to the client yet, the Jetty default idle-timeout, 30 seconds, wouldn't cause the connection to be killed by Jetty.\n\nI'm not as familiar with timeouts from the Puppet client side of things.  I believe the client uses different timeouts per request type - like file vs. configuration requests use different values.  Given the potentially high response time for a catalog to be provided, I'm not sure if the client enforces an upper bound for catalog requests.  [~accountid:63d40628f6e1b543161789a7] probably knows that.\n", "created": "2015-02-25T12:55:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. It was on the order of some number of minutes, not seconds in some cases.\n\nWow, that is wild.\n\nOkay, so let's say that all of the JRubies are occupied for several minutes, and one more request comes in - in this case, it still seems like a timeout after a minute is reasonable.  The work of compiling a catalog hasn't even been started, and there's no way of knowing when it will be.\n\nI also wonder about the potential impact on a heavily loaded system of letting things block for 20 minutes ... I think increasing this timeout also increases the resource consumption of the system under heavy load - now you have more connections open, more threads blocked waiting, etc.", "created": "2015-02-25T13:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Where JRubies are such an expensive resource and, therefore, only a handful to actually exist in a given server installation, I expect the case where all of the JRubies to all be checked out from the pool to not be all that uncommon.  Combining that with realistic times for the length of a catalog compilation and it seems like with a 60 second borrow timeout, it seems like a server could be hitting these failure conditions fairly frequently.  From the agent's perspective, I'm not exactly sure what that means.  If an agent were to have some retry intelligence built into it, it seems like the same connection build up situation that you're mentioning would happen around the retry attempts.  If an agent were more dumb and just bypass the catalog compilation - deferring to using a stale catalog - then it seems like getting agents, typically running on 30 minute run intervals, to using the latest catalog could be delayed significantly.  Having the agent delay a hopefully much smaller amount of time on a pending HTTP catalog request than on the standard default run interval to get to the latest catalog would seem to better mitigate this concern.\n\nI agree with you that we shouldn't put the server into a situation were the load it is taking on is \"unbounded\".  Although I think the tuning in terms of the maximum number of connections / requests that the server should allow for would be better done at the server level rather than on a per-request type basis.  And I think we need to more thought into what the reasonable defaults at that layer need to be.\n\nIf we can't come to an agreement on this thread, might be getting to the point soon where a few of us need to get together directly to hash this out...", "created": "2015-02-25T14:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I keep waffling on this one.  It seems like maybe what we should do is determine what the agent uses for a timeout on the catalog request, and just set it to a value very slightly higher than that?", "created": "2015-02-25T14:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Sorry to thrash on this [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049].  Two things:\n\n1. I was wrong this morning when I said that my gatling simulations with some customer data were showing a 3m catalog compile time.  They're actually less than a minute.  (I don't think these are necessarily the most expensive compiles a user would ever see but they've got some complexity to them, so they're not a terrible benchmark.)\n2. Looking at the puppet docs:\n\nhttps://docs.puppetlabs.com/references/latest/configuration.html#configtimeout\n\nI *think* this implies that by default an agent will timeout its HTTP request after 2 minutes.  In which case it seems like it's probably pointless for us to wait much longer than that on the borrow.  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] does that sound logical to you?", "created": "2015-02-25T14:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}2. Looking at the puppet docs:\nhttps://docs.puppetlabs.com/references/latest/configuration.html#configtimeout\nI think this implies that by default an agent will timeout its HTTP request after 2 minutes.  In which case it seems like it's probably pointless for us to wait much longer than that on the borrow{quote}\n\nIf this \"configtimeout\" is what the agent uses for the catalog request, then I'd agree with you.  [~accountid:63d40628f6e1b543161789a7] - can you confirm that?", "created": "2015-02-25T14:43:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "a 2-minute timeout sounds reasonable to me.", "created": "2015-02-25T14:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "If we go with a much more moderate timeout, I think we also need to think about how this is apparently affecting our current Travis CI runs on the master branch.  I have no idea what it is that's causing those to run so slowly that basic requests for a pool instance are timing out.  Maybe we need to add some sort of test-time only construct that allows _most_ of the tests - or at least the batch of ones that seem to be most directly affected by this problem - to do borrows with a much higher or infinite timeout?  I'd really like to avoid having tests fail periodically because of this issue.", "created": "2015-02-25T14:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Agree, but if we decide 2m is the number, let's see how that goes w/Travis and then react accordingly.", "created": "2015-02-25T14:53:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - Agreed that making Travis runs stop failing is important.  However, I think the discussion on this ticket so far has been concerned with production configuration.  If Travis is still failing on 2-minute timeouts, perhaps we just need to make that timeout configurable and bump it up for Travis.", "created": "2015-02-25T14:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Agree with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] on the wait and see approach with Travis and the 2 minute timeout, assuming we end up doing that.\n\n{quote}If Travis is still failing on 2-minute timeouts, perhaps we just need to make that timeout configurable and bump it up for Travis.{quote}\n\nThe timeout is already configurable at the TK service level, via {{borrow-timeout}} under the {{jruby-puppet}} section.  If we need to do something custom for testing, we might be able to just tweak it through that.", "created": "2015-02-25T15:16:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "{quote}If this \"configtimeout\" is what the agent uses for the catalog request, then I'd agree with you.{quote}\n\nThe agent no longer uses `configtimeout` because it conflated too many issues. The agent currently uses two network timeouts [http_connect_timeout|https://github.com/puppetlabs/puppet/blob/master/lib/puppet/defaults.rb#L432] defaulting to 2m and [http_read_timeout|(https://github.com/puppetlabs/puppet/blob/master/lib/puppet/defaults.rb#L439] defaulting to infinite. The connect timeout handles the TCP handshake. The read timeout handles anytime puppet makes a blocking read request.\n\nCatalog compilation is one area where the client will block for awhile, with an idle connection that might be closed by jetty or loadbalancer. The other is report processing, and that's the one we had the escalation about. It was taking 90secs to process the report and the loadbalancer was killing the idle connection.", "created": "2015-02-25T15:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Didn't see any failures in recent CI that seem to be related to this - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/197 - so moving to testing.", "created": "2015-03-03T18:29:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed this issue with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]", "created": "2015-03-09T12:12:00.000000"}], "components": [], "created": "2015-02-23T18:57:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@304c2ad4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3gv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_451502301_*|*_1_*:*_1_*:*_156950705_*|*_10007_*:*_1_*:*_81113836_*|*_5_*:*_1_*:*_49069180313_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_492171115"}], "description": "The default-borrow-timeout for JRuby instances is currently set at 60 seconds.  See:\n\nhttps://github.com/puppetlabs/puppet-server/blob/cd659b95ac557502f3bab2eea878fa7e6a131b6f/src/clj/puppetlabs/services/jruby/jruby_puppet_service.clj#L13\n\nIt doesn't seem unrealistic in production for this timeout to be hit.  For example, all of the allocated JRubies could be concurrently used for compiling expensive catalog compilations, each of which could take longer than 60 seconds to complete.  We should think about setting a significantly larger default for this - ideally one with some significant buffer above the maximum time a realistic, expensive catalog compilation would take to complete.  Not sure what that is yet and may need to solicit some outside feedback to come up with a good number for that...\n\n--\n\nThere's quite a bit of discussion in the thread below around what we think the timeout for JRuby pool borrowing should be.  We ultimately settled on 20 minutes.  The number is somewhat arbitrary in that we don't have much real-world data on catalog compilations and report processing to suggest a specific number.  An agent which has successfully made a socket connection with a master would effectively use an infinite timeout on the read it would perform to wait for the response to a request.  Considering that, we also discussed the possibility of reverting back to the \"infinite\" timeout that is in use on currently released puppetserver code.  Ultimately, though, the majority was concerned that not bounding the wait time could lead to thread \"hangs\" on the server, ultimately manifested as \"hangs\" in the response back to a client.  20 minutes was a compromise that seems to be \"long enough\" to account for the upper bound on worst-case catalog compilations / report processing while not leaving the server vulnerable to these \"hangs\".", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16368", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "16368", "issueType": "Improvement", "key": "SERVER-389", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-09T12:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bump default-borrow-timeout to something significantly higher", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Smoke tests will pass without this change.  Kicking back to ready for engineering.", "created": "2015-02-23T11:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Updating the config directory is going to require a change to ezbake.  To build using development snapshots of ezbake, follow this procedure:\n\n * do a lein install in the ezbake project\n * Then set the dependency in project.clj in the plugins key to the snapshot version of ezbake.\n\nIdeally each project will be able to specify the configuration directory without needing to coordinate with other projects, e.g. puppet server and PuppetDB.\n\n", "created": "2015-02-23T12:13:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "puppet-server config directory has been updated for EL-7 as of SERVER-369 being merged into master.", "created": "2015-02-26T18:35:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "*New Feature*\n\nThe puppetserver configuration directory has been updated in version 2.0.0 to match the new [Puppet Installation Layout][layout] implemented in Puppet 4.0.0.  This should be captured in the \"where's my stuff?\" documentation.\n\n[layout]: https://github.com/puppetlabs/puppet-specifications/blob/2abde272af859ffb434cb62725e6f54ca65da704/file_paths.md", "created": "2015-04-13T11:57:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-23T11:27:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d23e399"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyjan:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10467_*|*_3_*:*_1_*:*_16086762_*|*_5_*:*_1_*:*_49992954757_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_267826097_*|*_10006_*:*_1_*:*_1013841"}], "description": "Puppet Server needs to be updated to match the AIO layout.\n\nThis should be an issue of changing {{/etc/puppetserver/conf.d}} to {{/etc/puppetlabs/puppetserver/conf.d}}.\n\nSource of truth for the path is at:\n\nhttps://github.com/puppetlabs/puppet-specifications/blob/af825090dba94c56d332b0e61d73395eb6eb0535/file_paths.md", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17248", "fixedVersions": ["SERVER 2.0.0"], "id": "17248", "issueType": "Task", "key": "SERVER-387", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-02-26T18:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppet-server config directory", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Add PR to update puppet-agent", "created": "2015-02-23T10:38:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Puppet server dependency on puppet-agent has been updated to {{puppet-agent-0.3.2.65.gbc00b6e-1.el7.x86_64}} for EL-7 as of SERVER-369 being merged into master.", "created": "2015-02-26T18:37:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA treating this as a housekeeping / version bumping ticket.  No risk assessment needed.", "created": "2015-04-14T16:16:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-23T10:31:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2bb39093"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp52f:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_455345_*|*_10007_*:*_1_*:*_287908428_*|*_5_*:*_1_*:*_49992897737_*|*_6_*:*_1_*:*_0"}], "description": "@jeff @nwolfe @jb @cprice we have updated puppet-agent builds for rhel7, wheezy, trusty and windows at http://builds.puppetlabs.lan/puppet-agent/bc00b6e7106846aae0af5b915976a8d192e53803/ There shouldn't be any functional difference to what you've been using. These builds are built off of the puppet#master branch with all AIO changes merged in.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16686", "fixedVersions": ["SERVER 2.0.0"], "id": "16686", "issueType": "Task", "key": "SERVER-386", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-02-26T18:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update puppet-agent dep to bc00b6e", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I believe that this might be a dupe of SERVER-336 ?", "created": "2015-02-20T13:43:00.000000"}, {"author": "5bfc81a3a424561a8ea5de2d", "body": "I agree, this looks like the open-source, ubuntu variant of the above.", "created": "2015-02-20T13:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "great, thanks, we'll be working on a fix for this soon.  In the meantime you might be able to just put a 'mkdir' in the init script?", "created": "2015-02-20T14:06:00.000000"}, {"author": "5bfc81a3a424561a8ea5de2d", "body": "yaa, as long as it's a known thing I'll work around it for now.", "created": "2015-02-20T14:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Cool.  Thanks for the bug report!", "created": "2015-02-20T16:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Closing as a dupe of SERVER-336.  [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] or whomever picks that up, can you take a quick pass at the info in this ticket and see if there's anything we need to copy over to the other one?", "created": "2015-02-23T17:33:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-20T13:30:00.000000", "creator": "5bfc81a3a424561a8ea5de2d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f988865"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyilb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_273794372_*|*_6_*:*_1_*:*_0"}], "description": "I don't know if this is a startup timing thing or what, but I'm testing puppetserver on an lxc container and get this consistently:\n\nPuppet and puppetserver are installed via puppetlabs deb packages on this box.  Puppet agent is enabled via /etc/default/puppet.  At box startup, puppetserver fails to start because it lacks permissions to create /var/run/puppet:\n\n{noformat}\nRuntimeError: Got 1 failure(s) while initializing: File[/var/run/puppet]: change\n from absent to directory failed: Could not set 'directory' on ensure: Permissio\nn denied - /var/run/puppet\n{noformat}\n\nPresumably because it's trying to do so as user puppet?  However, if I then do a local run via 'puppet agent -t', the run of course fails since it can't connect to itself (the non-running master) but /var/run/puppet is then successfully created for whatever reason:\n\n{noformat}\nroot@puppet:/var/log/puppetserver#   puppet agent -t\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: Connection refused - connect(2)\nInfo: Retrieving pluginfacts\nError: /File[/var/lib/puppet/facts.d]: Failed to generate additional resources using 'eval_generate': Connection refused - connect(2)\nError: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet://puppet/pluginfacts: Connection refused - connect(2)\nWrapped exception:\nConnection refused - connect(2)\nInfo: Retrieving plugin\nError: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': Connection refused - connect(2)\nError: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve file metadata for puppet://puppet/plugins: Connection refused - connect(2)\nWrapped exception:\nConnection refused - connect(2)\nError: Could not retrieve catalog from remote server: Connection refused - connect(2)\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\nError: Could not send report: Connection refused - connect(2)\n\nroot@puppet:/var/log/puppetserver# ls -la /var/run/\ntotal 48\ndrwxr-xr-x 11 root   root    460 Feb 20 12:08 .\ndrwxr-xr-x 21 root   root   4096 Feb 20 11:17 ..\n-rw-r--r--  1 root   root      4 Feb 20 11:17 container_type\n-rw-r--r--  1 root   root      4 Feb 20 11:17 crond.pid\n----------  1 root   root      0 Feb 20 11:17 crond.reboot\n-rw-r--r--  1 root   root      4 Feb 20 11:17 dhclient.eth0.pid\ndrwxrwxrwt  2 root   root     40 Feb 20 11:17 lock\n-rw-r--r--  1 root   root    112 Feb 20 11:42 motd.dynamic\ndrwxr-xr-x  3 root   root    140 Feb 20 11:17 network\ndrwxr-xr-x  2 puppet puppet   40 Feb 20 12:08 puppet\n\n{noformat}\n\nAt this point, puppetserver is able to start fine.", "environment": "Ubuntu 14.04, Puppet 3.7.4, Puppetserver 1.0.2", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17246", "fixedVersions": [], "id": "17246", "issueType": "Bug", "key": "SERVER-385", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5bfc81a3a424561a8ea5de2d", "resolution": "Duplicate", "resolutionDate": "2015-02-23T17:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver can't create /var/run/puppet", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6] If you can help out with this it would be great.  We need to step through each of the \"relates to\" tickets above, and come up with a quick manual test, run it, try to record some steps (so that we can fix automation later) and record results.  I owe you a FOSS install demo....", "created": "2015-03-11T15:33:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "We have automated tests around all of these issues.  I'm closing this ticket out.", "created": "2015-03-18T15:37:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Changed this to a \"Task\" instead of a \"Story\" because this doesn't contain a requirement.", "created": "2015-08-10T13:13:00.000000"}], "components": [], "created": "2015-02-18T16:53:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@513aa2b2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3gn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_639354_*|*_5_*:*_1_*:*_48279108549_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_2410400753"}], "description": "This ticket tracks the efforts to test the changes to HTTP CA for puppetserver 2.0.  This activity is blocked until we have a relatively stable build.  ", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17245", "fixedVersions": [], "id": "17245", "issueType": "Task", "key": "SERVER-384", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Done", "resolutionDate": "2015-03-18T15:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate changes to HTTP CA", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "What are the practical effects of not having these new OIDs present in the CA service? Will they not appear as named facts in the $trusted hash, when running under Puppet Server? ", "created": "2015-02-25T13:03:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "They will be present but the user will have to refer to them as $trusted['.1.3.6.1.4.1....'] etc instead of by $trusted[pp_whatever]", "created": "2015-02-25T14:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Not sure if [~accountid:623c08e1562ab90069f8aed4]'s question was about what the implications of having the new short names go into core Ruby Puppet for PUP-3986 without the corresponding changes being made to the Puppet Server CA service?  If that were the case, I think the piece we'd be losing is that you'd be able to use the new short names in a csr_attributes.yaml to build up custom extensions for an agent CSR but you wouldn't be able to use them to generate custom extensions for the master certificate itself - which all happens in Clojure code in Puppet Server.  [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] probably recalls the implications of that better than I do...", "created": "2015-02-25T14:37:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "At this time, assuming Puppet server is using the Ruby code with the new OIDs in it, the only implication I can find is when the master generates its CSR, the new short names won't be properly read from the csr_attributes.yaml file. ", "created": "2015-02-25T14:37:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Heh, yeah what [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] said. The $trusted hash is still all handled by Puppet so that will still work, and since those OIDs all fall under the  \"1.3.6.1.4.1.34380.1.1\" OID, the will also be properly signed onto a cert by Puppet server.", "created": "2015-02-25T14:39:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Ah, thanks everybody. (And yeah, my question was about the effect of having Puppet's ruby code run out in front of puppetserver's clojure CA service.)", "created": "2015-02-25T14:40:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Just a heads up that PUP-3986 has been merged and through CI, so should be released in puppet 4.0 / puppet-agent 1.0.", "created": "2015-02-25T20:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR integrated and passed Puppet Server master branch integration full test suite - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/216/.  Moving to \"testing\".", "created": "2015-03-17T09:41:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920], it sounds like this is covered by existing puppet acceptance tests running against puppet server. Is that correct?", "created": "2015-03-25T15:21:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] We enhanced some existing Puppet Server tests for these:\n\n- Ruby 'spec' test to validate that the new certificate extensions will be decodable at the Ruby layer when running under Puppet Server - https://github.com/puppetlabs/puppet-server/blob/ff788fa859c8d563c57ec0e13f63a78acbd49ed7/spec/puppet-server-lib/puppet/jvm/certificate_spec.rb#L27-L80.\n\n- Clojure 'unit' test to validate that the extensions are added into the CA master certificate from csr_attributes.yaml - https://github.com/puppetlabs/puppet-server/blob/ff788fa859c8d563c57ec0e13f63a78acbd49ed7/test/unit/puppetlabs/puppetserver/certificate_authority_test.clj#L836-L913.", "created": "2015-03-25T15:45:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] this is only covered by the spec tests in the PR in the linked PUP ticket. No puppet acceptance tests AFAIK.", "created": "2015-03-25T21:02:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Passed functional review.\n\npuppet-server package: http://builds.puppetlabs.lan/puppetserver/2.0.0-rc4/\npuppet-agent package: http://builds.puppetlabs.lan/puppet-agent/f6bb7cb59b35178b5ce8b9aea98a9b3d142237d9/\nplatforms (both server and agent, but different VMs):\n* centos-7-x86_64\n* ubuntu-1404-x86_64\n\nHigh-level steps followed:\n* Install server package (don't start though)\n* Lay down csr_attributes.yaml file with new OIDS for master cert\n* Lay down site.pp to \"notify\" OID values\n* Start server\n* Verify master cert has proper extensions (via openssl directly)\n* Install agent package on different VM (don't run agent though)\n* Lay down csr_attributes.yaml file with new OIDS for agent cert\n* Agent run against server (do not autosign cert though)\n* Sign agent cert using all API's\n** CLI tool (puppet cert sign ...)\n** CLI tool over HTTP (puppet certificate sign ...)\n** HTTP certificate_status API\n* Verify agent run succeeds and prints out custom OID values", "created": "2015-04-01T18:44:00.000000"}], "components": ["Certificate Authority", "Puppet Server"], "created": "2015-02-18T16:36:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a0717d8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0kf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_435073513_*|*_10007_*:*_1_*:*_683258199_*|*_3_*:*_1_*:*_948000_*|*_5_*:*_1_*:*_47058428656_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1328571394_*|*_10006_*:*_1_*:*_1185056569"}], "description": "New OID short names are being added to the MRI Puppet master and this should be mirrored in the CA service.\n\n----\nRisk assessment: High (validated via automated acceptance tests)\nProbability: Medium (impacts users using trusted facts)\nSeverity: High (security issue)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15824", "fixedVersions": ["SERVER 2.0.0"], "id": "15824", "issueType": "Improvement", "key": "SERVER-383", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2015-04-01T18:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add new trusted fact OIDs to CA service", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I would like the ability to disable the hprof dumps altogether in an easy manner.\n\nSo, if this could be a count, and I could set it from 0 to X, that would be ideal.", "created": "2015-02-23T15:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "You can achieve this by just editing the init script and removing the handful of JVM args around \"OutOfMemory\"... is that sufficient?  I suppose that would potentially cause you conflicts on upgrades...", "created": "2015-02-23T15:16:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "Not so potential conflicts.\n\nIf you have a system with 'epic tons' of memory but very little disk, a single hprof may, in fact, nuke your system which is why I want this.", "created": "2015-02-23T15:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Fair enough, will keep it in mind.", "created": "2015-02-23T15:39:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "With the completion of EZ-49 I find this ticket to be low-value polish.  \n\n", "created": "2015-10-21T12:04:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Since we're now only generating hprof when the user requests, the need for this is obviated.", "created": "2015-10-21T12:43:00.000000"}], "components": [], "created": "2015-02-18T14:59:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1bc12498"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-791"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqqf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_440109710_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_20716112882"}], "description": "We've had some reports of users disks filling up with the giant heap dump files that get generated when Puppet Server hits an OOM error.\n\nIt's pretty rare that more than one of these files would be of any actual value to engineering, so it seems like maybe we should just change the code to use a fixed filename for the .hprof file and let it be overwritten on subsequent OOMs; then there'd never be more than one and we wouldn't have to worry about them filling up the disk.", "epicLinkSummary": "Improve default settings", "estimate": "PT0S", "externalId": "17061", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "17061", "issueType": "Task", "key": "SERVER-381", "labels": [], "originalEstimate": "PT0S", "parent": "14991", "parentSummary": "Improve default settings", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-10-21T12:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Limit number of hprof files that can be generated?", "timeSpent": "PT0S", "updated": "2016-01-19T06:55:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Resolving this in favor of tracking the validation work in PE-8586.", "created": "2015-03-12T17:26:00.000000"}], "components": [], "created": "2015-02-18T14:50:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23b41e99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3nr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Available bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_53145162_*|*_1_*:*_1_*:*_440223400_*|*_10007_*:*_1_*:*_73067884_*|*_3_*:*_1_*:*_5222133_*|*_5_*:*_1_*:*_1554918158_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_121462891_*|*_10006_*:*_1_*:*_1213453687"}], "description": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] has been doing some work on tk-j9 to get us up to a newer version of Jetty.  Need to make sure that change is surfaced in Puppet Server.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16367", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "16367", "issueType": "Task", "key": "SERVER-380", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-03-12T17:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade Jetty to 9.2.x", "timeSpent": "PT0S", "updated": "2015-12-30T16:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1] [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] I was planning on taking a first stab at this and then handing off to docs to make it shippable afterwards.  Let me know if that sounds OK.  If so, maybe we don't need to assign it to Jean yet.", "created": "2015-02-19T14:30:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "Sounds good. I'm going to take off the Docs component, then. Please add it when you're ready for Jean to jump in.\n", "created": "2015-02-19T14:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "cool, will do.", "created": "2015-02-19T15:22:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Sweet, thank you!", "created": "2015-02-19T15:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] [~accountid:623c08e1562ab90069f8aed4] I just added the Docs component to this ticket, because I have a PR with a first stab at some copy now.", "created": "2015-03-16T18:47:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Proofed and PR'd with Server release notes.", "created": "2015-03-26T11:13:00.000000"}], "components": ["DOCS"], "created": "2015-02-18T14:41:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e129476"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp20v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Urgency & Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_440961340_*|*_10007_*:*_1_*:*_659363182_*|*_3_*:*_1_*:*_27342000_*|*_10009_*:*_1_*:*_177439536_*|*_5_*:*_1_*:*_367719259_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1789231954"}], "description": "We need to write up some notes on tuning recommendations for Puppet Server.  This should include:\n\n* How to tune # of Jrubies\n* How to tune heap size\n* How to estimate the number of JRubies needed\n* How to estiamte the heap size (based on num JRubies + num agents)\n* How to tune ulimit\n* How to estimate ulimit\n* How to tune Jetty max threads?\n...\n___\nRisk: N/A (documentation ticket)\n", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16088", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "16088", "issueType": "Task", "key": "SERVER-379", "labels": ["PE-8251"], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-03-26T11:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tuning guide for JRubies, Heap size, etc.", "timeSpent": "PT0S", "updated": "2015-12-30T16:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This is not something we would want to turn on by default, assuming we come up with a good solution for SERVER-366.  Probably still worth investigating and either write up some example docs, or put a commented-out example of how someone could use this in our default logback.xml.", "created": "2015-02-23T12:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] mentioned that this would be a big win for him if we could target it at a 1.x release.  It seems like the kind of thing that would be pretty easy to apply to both the old and new branches, so definitely worth considering when we pick this up.", "created": "2016-04-01T19:13:00.000000"}], "components": [], "created": "2015-02-18T14:03:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@151fd934"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Minor"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynssn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_443501710_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_56588739299"}], "description": "We've got a few other tickets that cover some logging improvements like supporting regex filtering of log messages, and using logback to limit the max disk usage for log files.  However, all of those approaches involve some loss of data (though it may be a tolerable amount).\n\nThere is another option we should at least look into, which is that logback supports configuring a filter for 'duplicate' messages:\n\nhttp://logback.qos.ch/manual/filters.html#DuplicateMessageFilter\n\nThis might be useful for cases like the \"No file descriptors\" issue that is described in PE-8008; if there is a way we can cause the message to show up once (or every so often) in the log file w/o repeating it over and over again, then we can ensure that it's still visible to the user but avoid filling up the disk with dupes.\n\nI experimented with this just a little and wasn't able to get it to work for a case where I was throwing an exception over and over again.  Not sure if the cache size wasn't set high enough or if there was some other issue.  We should investigate this further.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16087", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16087", "issueType": "Task", "key": "SERVER-378", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Explore logging configuration for filtering duplicate messages", "timeSpent": "PT0S", "updated": "2016-12-09T16:20:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [{"attacher": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "created": "2015-03-24T03:21:00.000000", "name": "gem", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10789"}], "comments": [{"author": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "body": "Example of in-place fix to {{/opt/puppet/share/puppetserver/cli/apps/gem}}:\n\n{noformat}\n#!/usr/bin/env bash\nPROXY_PORT=8080\nPROXY_HOST=myproxy.xyz.com\n\nJVM_EXTRA=\" -Dhttp.proxyHost=$PROXY_HOST -Dhttp.proxyPort=$PROXY_PORT -Dhttps.proxyHost=$PROXY_HOST -Dhttps.proxyPort=$PROXY_PORT \"\n\n\"${JAVA_BIN}\" ${JVM_EXTRA} \\\n    -cp \"${INSTALL_DIR}/puppet-server-release.jar\" \\\n   clojure.main -m puppetlabs.puppetserver.cli.gem \\\n    --config \"${CONFIG}\" -- \"$@\" \n\n{noformat}\n\nThis fix could be enhanced by splitting the {{http_proxy}} and {{https_proxy}} environment variables into the required components using {{awk}} so that they are automatically resolved without having to edit the file in the future.", "created": "2015-02-17T21:00:00.000000"}, {"author": "557058:40012a54-2ed1-4d1e-9ccb-74f662cd4f06", "body": "You could also consider supporting the proxy-related variables in puppet.conf. \nAlso please make sure to also support and test a scenario with authenticated proxies (the above example would not work for those cases).", "created": "2015-03-18T10:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:40012a54-2ed1-4d1e-9ccb-74f662cd4f06] thanks for the extra info.  What sort of authentication mechanism are you using to connect to your proxy?", "created": "2015-03-18T11:20:00.000000"}, {"author": "557058:40012a54-2ed1-4d1e-9ccb-74f662cd4f06", "body": "I am using\n\n{{http_proxy=http://$username:$password@$hostname:$port}}\n\nnote: $username and $password need to be urlencoded.\n\nAlternatively, the puppet proxy config variables (https://docs.puppetlabs.com/references/latest/configuration.html) support\n\n* http_proxy_host\n* http_proxy_port\n* http_proxy_user\n* http_proxy_password", "created": "2015-03-18T11:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Great, thanks.  Just wanted to make sure we were talking about pw auth and not something more complex, like cert-based.  We'll make sure we get in a fix that includes pw auth.\n\nIn the meantime, I've found a few stack overflow articles that suggest that you could extend the workaround proposed in this ticket with:\n\n{code}\n-Dhttp.proxyUser=someUserName\n-Dhttp.proxyPassword=somePassword\n{code}\n\nWould be interested in hearing whether that works for you, just as a workaround until we get a real fix in place.\n", "created": "2015-03-18T13:48:00.000000"}, {"author": "557058:40012a54-2ed1-4d1e-9ccb-74f662cd4f06", "body": "One more issue which crops up regularly is the proxy exclusion patterns (the no_proxy setting). How can that be configured?", "created": "2015-03-18T16:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm not familiar with that", "created": "2015-03-18T16:58:00.000000"}, {"author": "557058:40012a54-2ed1-4d1e-9ccb-74f662cd4f06", "body": "No, that's actually a Linux-ism, see here: https://wiki.archlinux.org/index.php/proxy_settings\nDifferent configuration scopes use a different syntax to describe proxy exceptions. Java world has {{http.nonProxyHosts}}, see http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html", "created": "2015-03-18T17:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Great, that's helpful info.  Thanks.", "created": "2015-03-18T17:23:00.000000"}, {"author": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "body": "Updated {{gem}} script file:\n* Parses proxy variables from puppet.conf\n* Allows puppet.conf variables to be overridden by environment variable {{http_proxy}}\n* No need to code the proxy information into the script file any more\n* Nice(er) drop-in replacement until this can be addressed system-wide", "created": "2015-03-23T04:01:00.000000"}, {"author": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "body": "PR of above file:  https://github.com/puppetlabs/puppet-server/pull/460", "created": "2015-03-23T04:34:00.000000"}, {"author": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "body": "[~accountid:557058:40012a54-2ed1-4d1e-9ccb-74f662cd4f06] Unfortunately its not possible to pass proxy usernames and passwords that JVM will automatically use via JVM environment variables.  There is (Java/Clojure) coding effort required to get this to work so the fix outlined here won't work for you, you need support in-product", "created": "2015-03-24T02:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "As a historical note...\n\nPer some work that was done in SERVER-262, we, for the Puppet Server 1.0.2 release only, had enabled many environment variables to flow through from the shell environment to the running Ruby code.  For only Puppet Server 1.0.2, then, the {{http_proxy}} and {{https_proxy}} environment variables would have been honored for gem installs.\n\nSERVER-262 was later reverted for work done in SERVER-522.  The original behavior which disallowed environment variables to flow through would have been restored in Puppet Server 1.0.8.  Note that no PE releases have used Puppet Server 1.0.2.", "created": "2015-04-09T14:57:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I spent some time playing around with different proxy parameters and methods for specifying those parameters.  I wanted to take the current environment variable filtering question out of the equation, so I just ran gem through jruby from the command line, like:\n\n{noformat}\njruby -e 'load \"<jruby_home_dir>/bin/gem\" list nokogiri --remote --all\n{noformat}\n\nI setup a local squid proxy via SquidMan, http://squidman.net/squidman/, on my Mac, enabling proxy authentication so that I could see the effect when manipulating the corresponding authentication parameters when performing gem commands.\n\nHere are some observations:\n\n1) The \"http*\" proxy environment variables (e.g., {{http_proxy}}) supersede any corresponding values that may have been set via the Java system properties (e.g., {{http.proxyHost}} and {{http.proxyPort}}).\n\n2) I couldn\u2019t get any requests to actually use the {{http.proxyUser}}, {{http.proxyPassword}}, or {{http.nonProxyHosts}} values.  For the {{http.proxyUser}} or {{http.proxyPassword}} to be used, maybe it is necessary to set a default global Authenticator in code like is mentioned in the stackoverflow article that [~accountid:557058:ba2d08f5-8947-446f-bada-55ecb351d6cc] mentioned earlier, http://stackoverflow.com/questions/1626549/authenticated-http-proxy-with-java, not sure.  For {{http.nonProxyHosts}}, I don\u2019t have a good explanation, although it does seem that others have encountered similar problems - e.g., http://stackoverflow.com/questions/17902830/jvm-arguments-for-https-nonproxyhosts.  Maybe it\u2019s just a case of \u201cJust doesn\u2019t work\u201d on my Mac.\n\n3) I didn\u2019t run into any problems / unexpected behaviors with respect to how rubygems utilizes the different proxy-related environment variables - {{http(s)_proxy}}, {{http(s)_proxy_user}}, {{http(s)_proxy_pass}}, or {{no_proxy}}.  There is an order of precedence that rubygems follows for these options which seems sane to me.  This includes:\n\na) If the target of the request is an \u201chttps\u201d url, rubygems will look for an {{https_\\*}} variable first.  If it doesn\u2019t find one, it falls back to a {{http_\\*}} variable.  If the target of the request is an \u201chttp\u201d url, rubygems will only look for an {{http_\\*}} variable.\n\nb) Rubygems will look for an environment variable in all lowercase first, e.g., {{http_proxy}}.  If that is not found, rubygems will fall back to looking for an all uppercase variable, e.g., {{HTTP_PROXY}}.\n\nc) For the proxy username and password to use in the HTTP {{Proxy-Authorization}} header for the request, rubygems will look for a username and password in the URL for the {{http(s)_proxy}} first, falling back to any values in {{http(s)_proxy_user}} and {{http(s)_proxy_pass}} if not found.  So for example, if you had a value of \u201chttp://user1:pass1@127.0.0.1:8080\u201d for {{http_proxy}}, \u201cuser2\u201d for {{http_proxy_user}}, and \u201cpass2\u201d for {{http_proxy_pass}}, the {{Proxy-Authorization}} header would include the Base64-encoded form of \u201cuser1:pass1\u201d.  If you had a value of \u201chttp://127.0.0.1:8080\u201d for {{http_proxy}} with the same values for {{http_proxy_user}} and {{http_proxy_pass}}, the {{Proxy-Authorization}} header would include the Base64-encoded form of \u201cuser2:pass2\u201d.\n\n---\n\n{quote}We are also trying to move toward a world where Puppet Server no longer has a dependency on puppet.conf settings. So, I'd been imagining that we would expose the required proxy settings in the puppet server config files and then wire up the puppet server gem command to use those.\nThere are some mixed opinions about the various pros and cons about allowing environment variables through, so we are expecting to have a design meeting to cover SERVER-297 pretty soon, and the output of that conversation will have an impact on what we decide to do as the final solution for this one.{quote}\n\nWhere we ended up as a result of SERVER-297 is that we are still whitelisting the {{HOME}} and {{PATH}} environment variables.  We set aside the broader conversation about possibly opening the door for whitelisting environment variables more generally, like for custom ones that might be specific to a particular gem, to SERVER-584.\n\nI'm pretty sold at this point on the value of allowing the proxy-related variables flow all the way from the parent shell environment into Ruby code when running under JRuby - not just for gem operations but more generally for any Ruby code that would run under Puppet Server.  This just seems like the right thing to do from a *nix tool perspective.\n\nI'm also onboard with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]' thinking that we should define a mechanism for proxy settings to be specified in Puppet Server\u2019s configuration files and that any integration between \u201cpuppetserver gem\u201d proxy configuration settings should be built on the Puppet Server configuration and not \u201cpuppet.conf\u201d, as we\u2019ll be more generally trying to migrate \u201cmaster\u201d operations away from \u201cpuppet.conf\u201d dependencies over time.\n\nAssuming we eventually get to a model where the proxy settings could be derived either from Puppet Server configuration settings or from shell environment variables, the order of precedence would need to be established.  I\u2019ve thought about this a fair amount - and changed my opinion multiple times in the process.  At this point, I\u2019d suggest that we go with having any shell environment variable that is defined override any corresponding setting which may be present in the Puppet Server configuration.  This approach would seem most consistent with how *nix tools typically seem to work - including legacy Puppet (https://docs.puppetlabs.com/references/latest/configuration.html#httpproxyhost).  Also, it would provide users with a straightforward way to set a one-off value for a gem install.  For example, users might want to manage a standard group of proxy settings in configuration - for use by Puppet extensions in the production Puppet Server stack and for Puppet Server CLI commands - but, for just a single \u201cgem install\u201d, want to use a different proxy server.  By defining a different value for that environment variable in the context of that one \u201cgem install\u201d invocation, the unique proxy value could be used once without affecting the \u201cglobal\u201d configuration for future commands.\n\n---\n\nFor this ticket, I\u2019d propose that we do the following:\n\n1) Add the lowercase and uppercase variants of {{http_proxy}}, {{https_proxy}}, {{http_proxy_user}}, {{https_proxy_user}}, {{http_proxy_pass}}, {{https_proxy_pass}}, and {{no_proxy}} to the current environment variable whitelist used for the construction of JRuby ScriptingContainers.\n\n2) Add support for an optional \u201cproxy\u201d section to the \u201chttp-client\u201d section of \u201cpuppetserver.conf\u201d - http://docs.puppetlabs.com/puppetserver/2.1/configuration.html#puppetserverconf.\n\nProposed Clojure schema:\n\n{code:clojure}\n(def ProxyCredentials\u2028  {:user schema/Str\u2028 :password schema/Str})\n(def ProxyInfo\u2028  {:host schema/Str\u2028\n  (schema/optional-key :credentials) ProxyCredentials\n\u2028  (schema/optional-key :no-proxy-hosts) [schema/Str]})\n{code}\n\nExample:\n\n{code}\nhttp-client: {\n\u2026\n  proxy: {\n    host: my-proxy-host\n    port: 8080\n    credentials: {\n      user: proxyuser\n      password: proxypassword\n    }\n    no-proxy-hosts: { \u201c*.mydomain.com\u201d, \u201c*.myotherdomain.com\u201d }\n  }\n}\n\n{code}\n\n3) For any of the following environment variables not set from the environment, inject a value from the \u201chttp-client\u201d configuration section (if one is available) into the JRuby ScriptingContainer's environment.\n\n* HTTP_PROXY -> http://\\[proxy.host\\]:\\[proxy.port]\n* HTTP_PROXY_USER -> \\[proxy.credentials.user\\]\n* HTTP_PROXY_PASS -> \\[proxy.credentials.password\\]\n* NO_PROXY -> Flattened, comma-delimited form of \\[proxy.no-proxy-hosts\\].\n\nAssuming no environment variables or \"http-client\" proxy configuration were available, rubygems should just fallback to using the Java system properties for proxy (where they work anyway), if specified, else no proxy at all.\n\n---\n\nThoughts from others - [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], in particular?", "created": "2015-07-01T17:23:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}Thoughts from others{quote}\n\nI'm +1 in that I've read the whole thing and have no qualms with anything proposed.\n\nTo bring this back around to [~accountid:623a4bced32a94006a63ca40]'s issue where he uses the Faraday library from a report processor, am I correct in my understanding that this proposal will support his use case by allowing the extension to read proxy settings from the JRuby ENV object?  From the user perspective, they will be able to set the proxy settings either in the environment or in the puppetserver configuration file and those settings will flow through to the custom extension without the user or Nan (as the extension author) having to do anything special?", "created": "2015-07-01T18:02:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}To bring this back around to Nan Liu's issue where he uses the Faraday library from a report processor, am I correct in my understanding that this proposal will support his use case by allowing the extension to read proxy settings from the JRuby ENV object?{quote}\n\nThanks, [~accountid:623c12b6ee1b5a0070293582].  Glad you brought up a different example to consider.\n\nYeah, this should allow for any Ruby code - not just rubygems - that runs under Puppet Server to reference {{ENV\\['http_proxy\\*'\\]}} and get a value which would have been defined in the shell environment.\n\nIt looks like Faraday, unlike rubygems, only looks for an environment variable named {{http_proxy}} (lowercase) and not {{HTTP_PROXY}} (uppercase) and would only be able to derive the proxy user and password from whatever is in the {{http_proxy}} variable as it does not look at the {{http_proxy_user}} or {{http_proxy_password}} environment variables:\n\nhttps://github.com/lostisland/faraday/blob/v0.9.1/lib/faraday/connection.rb#L84\n\nOutside of rubygems, I actually haven't found a case yet for where {{http_proxy_user}} and {{http_proxy_password}} environment variables are used directly.  The mapping I proposed for the \"http-client\" configuration variables onto the environment variables that could be seen in process by Ruby code probably doesn't make sense for more general purposes, then.  Maybe a better mapping would be:\n\n* http_proxy -> http://[proxy.credentials.user]:[proxy.credentials.password]@[proxy.host]:[proxy.port] -- or, if no credentials set, just -- http://[proxy.host]:[proxy.port]\n* https_proxy -> (same as http_proxy)\n* no_proxy -> Flattened, comma-delimited form of \\[proxy.no-proxy-hosts\\]\n\nIf we were to apply this configuration override across all Ruby execution paths under Puppet Server, this approach would take away a little of the flexibility that you'd have with how environment variables are used in rubygems.  It seems like this would still be flexible enough for general purposes, though, and consistency in definition across Ruby execution paths seems like it would lead to more predictable results for users.\n\nI'd still be okay with having the {{http_proxy_user}} and {{http_proxy_pass}} shell environment variables be flowed through to Ruby code - just with the caveat that those could be trumped via the population of credentials into the {{http_proxy}} variable from configuration file settings, depending upon specific Ruby extension's use of those variables.  Although maybe if those are truly only rubygems specific, it wouldn't be worth whitelisting those.  Thoughts?\n\n\n\n\n\n", "created": "2015-07-01T18:56:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}I'd still be okay with having the http_proxy_user and http_proxy_pass shell environment variables be flowed through to Ruby code - just with the caveat that those could be trumped via the population of credentials into the http_proxy variable from configuration file settings, depending upon specific Ruby extension's use of those variables. Although maybe if those are truly only rubygems specific, it wouldn't be worth whitelisting those. Thoughts?{quote}\n\nI vote we just ignore http_proxy_user and http_proxy_pass and not include them in the whitelist at all.  They'll be relatively easy to add if there's a compelling reason to do so, but I think the answer of \"just put the username and password in the http_proxy variable to make that work will be acceptable to nearly everyone.\n\nI also really like the new mapping of lower case variables instead of upper case variables.  In my opinion the lower case form is more conventional for proxy configuration (as we observed with Faraday) than the upper case form, even though environment variables are usually upper case.\n\nThoughts, particularly on whether or not we should simply ignore the upper case forms or not?", "created": "2015-07-02T15:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:623c12b6ee1b5a0070293582].\n\n{quote}I vote we just ignore http_proxy_user and http_proxy_pass and not include them in the whitelist at all.  They'll be relatively easy to add if there's a compelling reason to do so, but I think the answer of \"just put the username and password in the http_proxy variable to make that work will be acceptable to nearly everyone.{quote}\n\nI'm good with that.  Can revisit later if we need to.\n\n{quote}I also really like the new mapping of lower case variables instead of upper case variables. In my opinion the lower case form is more conventional for proxy configuration (as we observed with Faraday) than the upper case form, even though environment variables are usually upper case.{quote}\n\nYeah, I don't have a good feel for that.  Anecdotally, I've seen various references to both all uppercase and all lowercase - fortunately never mixed case - in google searches.  About the proxy variables specifically, https://wiki.archlinux.org/index.php/Proxy_settings says:\n\n{quote}Some programs look for the all caps version of the environment variables.{quote}\n\nFor programs that support both, it does generally seem like a lowercase version is given precedence - e.g., rubygems as mentioned earlier, curl (http://curl.haxx.se/docs/manpage.html).  I also have to wonder, though, that since many programs seem to support both formats about the likelihood of users having systems that use the uppercase format - especially, as you mentioned, since it seems conventional for environment variables more generally to be in uppercase.\n\n--\n\nWith respect to our whitelist into the JRuby ScriptingContainer, I'd be fine with just playing dumb and letting either an all uppercase or all lowercase version of any variable that we want to whitelist come through.  Then we wouldn't have to get into guessing games about what third-party Ruby libraries might have only had support for reading an uppercase form of the variable and what-not.\n\nWith respect to the mapping from any specified \"http-client\" configuration settings, I'd also be fine with mapping onto an uppercase and lowercase form of the variable, i.e.:\n\n* http_proxy -> http://[proxy.credentials.user]:[proxy.credentials.password]@[proxy.host]:[proxy.port] \u2013 or, if no credentials set, just \u2013 http://[proxy.host]:[proxy.port]\n* HTTP_PROXY, https_proxy, HTTPS_PROXY -> (same as http_proxy)\n* no_proxy -> Flattened, comma-delimited form of \\[proxy.no-proxy-hosts\\]\n* NO_PROXY (same as no_proxy)\n\nWhat do you think?", "created": "2015-07-02T16:07:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}What do you think?{quote}\n\n+1, sounds close to ideal.  Only detailed-level question remaining in my mind is if mapping http proxy on top of HTTPS_PROXY and https_proxy could cause an issue for someone who wants to use two different proxies for the two different protocols.", "created": "2015-07-02T21:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Just read this.  Sounds OK to me.  My only question is: if this is just intended to solve the 'gem' and http proxy issues, then it doesn't solve the general issue around allowing users to opt-in to additional environment variables.  I think that's fine, I do think we should treat that as two discrete sets of work (especially since I believe that the clj-http-client code will need to be modified in order to support what you're describing here, right?).\n\nIt might be worth mapping out the plan for the more general environment variable issue a little further, though, just to make 100% sure that it will fit in nicely with your proposal here.\n\nI don't mind deferring to you guys' judgment on that, though.  This proposal sounds fine for this ticket.", "created": "2015-07-03T02:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Only detailed-level question remaining in my mind is if mapping http proxy on top of HTTPS_PROXY and https_proxy could cause an issue for someone who wants to use two different proxies for the two different protocols.{quote}\n\nI was only thinking that the mapping would be done for cases where the environment variable were not already set.  So if someone had set the {{https_proxy}} and/or {{HTTPS_PROXY}} variables in the shell environment, the proxy specified in the configuration file would not override those.\n\nThis would raise the question as well, though, about whether we should have a scheme-specific distinction in the proxy configuration file.  So, rather than my relatively simpler example from earlier, you might be able to do something like:\n\n{noformat}\nhttp-client: {\n\u2026\n  proxy: {\n    http: {\n      host: my-http-proxy-host\n      port: 8080\n      credentials: {\n        user: httpproxyuser\n        password: httpproxypassword\n      }\n    }\n    https: {\n      host: my-https-proxy-host\n      port: 8080\n      credentials: {\n        user: httpsproxyuser\n        password: httpsproxypassword\n      }\n    }\n    no-proxy-hosts: { \u201c*.mydomain.com\u201d, \u201c*.myotherdomain.com\u201d }\n  }\n}\n{noformat}\n\nGiven that it seems like we've survived without having to make that distinction in the legacy Puppet settings for proxy so far, though, I hesitate to add that level of complexity to the schema at this point.  Also, the inconsistent support for even referencing the scheme-specific settings among tools/libraries, e.g., faraday not even trying to look at {{https_proxy}}, makes me even less inclined to try to do some sort of mapping for it.  Hoping we could just add that distinction later when/if it is needed.  Having the flexibility to make that distinction via the shell environment variables, if really needed, might be enough for now.\n\nI'd also be good with just having the override from proxy configuration be applied to the {{http_proxy}} and {{HTTP_PROXY}} variables, when not set in the shell environment, and forego any mapping over the {{https_proxy}} and/or {{HTTPS_PROXY}} variables.  Sound sane? \n\n", "created": "2015-07-09T17:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}My only question is: if this is just intended to solve the 'gem' and http proxy issues, then it doesn't solve the general issue around allowing users to opt-in to additional environment variables. I think that's fine, I do think we should treat that as two discrete sets of work (especially since I believe that the clj-http-client code will need to be modified in order to support what you're describing here, right?).{quote}\n\nYeah, what I had in mind for this specific ticket was just to provide a solution for the http client proxy issues for {{puppetserver gem}} and other pure-Ruby extension points running in Puppet Server.  This wouldn't cover proxy in the context of HTTP client calls that Puppet Server would make via {{com.puppetlabs.puppetserver.ExecutionStubImpl}}, which go back through our Ruby/Java Interop layer.  For the latter, work I'd been thinking we'd do around SERVER-156, I'd been thinking we'd need to do a Java / clj-http-client equivalent implementation - hopefully building upon the configuration setting approach that we lay out in this ticket.\n\n{quote} It might be worth mapping out the plan for the more general environment variable issue a little further, though, just to make 100% sure that it will fit in nicely with your proposal here.{quote}\n\nYeah, that's a fair point.  The approach I have in mind for the more general environment variable issue, work that would be done for SERVER-584, would be compatible with the changes that we would be starting with here.  I'll take a cut at describing my thoughts on that one and see if we can reach some level of consensus before we get too deep into implementation toward the approach we've been talking about for this one.\n", "created": "2015-07-09T17:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\nYeah, what I had in mind for this specific ticket was just to provide a solution for the http client proxy issues for puppetserver gem and other pure-Ruby extension points running in Puppet Server. This wouldn't cover proxy in the context of HTTP client calls that Puppet Server would make via com.puppetlabs.puppetserver.ExecutionStubImpl, which go back through our Ruby/Java Interop layer. For the latter, work I'd been thinking we'd do around SERVER-156, I'd been thinking we'd need to do a Java / clj-http-client equivalent implementation - hopefully building upon the configuration setting approach that we lay out in this ticket.\n{quote}\n\nIdeally we could just re-use the settings that you're defining in this ticket, right?\n\n{quote}\nYeah, that's a fair point. The approach I have in mind for the more general environment variable issue, work that would be done for SERVER-584, would be compatible with the changes that we would be starting with here. I'll take a cut at describing my thoughts on that one and see if we can reach some level of consensus before we get too deep into implementation toward the approach we've been talking about for this one.\n{quote}\n\nIn terms of order of operations, it's up to you how far you want to get into the weeds of writing up notes and debating the implementation details for SERVER-584 right now.  As long as you've thought it through enough to where you feel like the UX (in terms of config files) is going to feel reasonably cohesive, and that the new sections of settings for the two things aren't going to conflict with one another I'm happy.", "created": "2015-07-10T00:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}This would raise the question as well, though, about whether we should have a scheme-specific distinction in the proxy configuration file. ... Given that it seems like we've survived without having to make that distinction in the legacy Puppet settings for proxy so far, though, I hesitate to add that level of complexity to the schema at this point.{quote}\n\nSo after spending some time looking at how Apache / Java handles proxy settings (documented in SERVER-156), I've changed my mind on this point.  In particular it appears that the default Java {{ProxySelector}} is pretty rigid about only using the {{<scheme>.proxyHost}} and {{<scheme>.proxyPort}} associated with the scheme in the target URI for a request - see http://www.docjar.com/html/api/sun/net/spi/DefaultProxySelector.java.html.  So if your target URI has a scheme of \"https\", only the {{https.proxyHost}} and {{https.proxyPort}} settings would be used.  If neither of those were defined but the {{http.proxyHost}} and {{https.proxyPort}} were, the {{ProxySelector}} would not fall back to using the {{http.*}} ones for a target URI having a scheme of \"https\".\n\nSince the scheme distinction seems to be common with respect to environment variables and Java system properties, I think it would be better for us to just have our proxy configuration allow for that distinction as well.  So, that could look like the example I'd listed earlier:\n\n{noformat}\nhttp-client: {\n\u2026\n  proxy: {\n    http: {\n      host: my-http-proxy-host\n      port: 8080\n      credentials: {\n        user: httpproxyuser\n        password: httpproxypassword\n      }\n    }\n    https: {\n      host: my-https-proxy-host\n      port: 8080\n      credentials: {\n        user: httpsproxyuser\n        password: httpsproxypassword\n      }\n    }\n    no-proxy-hosts: { \u201c*.mydomain.com\u201d, \u201c*.myotherdomain.com\u201d }\n  }\n}\n{noformat}\n\nI'd propose we only try to map configuration for {{http.\\*}} to {{http.\\*}} and {{https.\\*}} to {{https.\\*}} with respect to environment variables -- and later, for SERVER-156, to proxy option setting in the client libraries -- and not try to get into substituting any app-layer {{https}} to {{http}} fallbacks.  We can just let the various utility libraries take care of that sort of fallback mapping however they already do.\n\n[~accountid:623c12b6ee1b5a0070293582] - what do you think?", "created": "2015-07-17T09:18:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Ideally we could just re-use the settings that you're defining in this ticket, right?{quote}\n\nDefinitely.  That's why I'm hoping to get the design for this right so that we can use the same in both places.\n\n{quote}In terms of order of operations, it's up to you how far you want to get into the weeds of writing up notes and debating the implementation details for SERVER-584 right now. As long as you've thought it through enough to where you feel like the UX (in terms of config files) is going to feel reasonably cohesive, and that the new sections of settings for the two things aren't going to conflict with one another I'm happy.{quote}\n\nWe have a separate conversation going on SERVER-584 now.  I'm hoping that we're pretty close to making a decision on that.  Given that we have a couple of directions proposed there that would affect the way we'd express the environment variable overrides for this ticket, I'm inclined to just try to let SERVER-584 be completed first before trying to continue forward on the development for this one.", "created": "2015-07-17T09:23:00.000000"}, {"author": "624502b24fe01d006ba67d2f", "body": "I hit this today in PE 3.8.2 on SLES 11, I ended up using the '-p' option in 'gem install' and it worked flawlessly. Is it already fixed in PE 3.8.2 or is this another workable option? \n\n-p, -\u200b-[no-]http-proxy [URL] - Use HTTP proxy for remote operations", "created": "2015-08-12T17:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Merged to puppetserver#master at [7cb154a|https://github.com/puppetlabs/puppetserver/commit/7cb154acdd83744f5b9158a9428a4b85cdf1a99f].", "created": "2016-11-29T11:39:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Acceptance tests for this passed in https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppetserver/view/all/job/platform_puppetserver_integration-system_no-conditional_full-master/42/.", "created": "2016-11-30T11:41:00.000000"}, {"author": "6080945388cb76006beecfc5", "body": "For posterity the work-around example looks like so:\n\n{code}\npuppetserver gem install -p http://webproxy.acme.com:8080 hiera-eyaml\n{code}\n", "created": "2017-03-07T11:28:00.000000"}, {"author": "557058:4d037d5f-6e67-465d-84d3-9631f5599649", "body": "[~accountid:623c0cbfa1d81f0069d8dec0] Posterity thanks you for that!", "created": "2017-05-03T08:40:00.000000"}, {"author": "557058:0f478d07-ecfb-4cd4-b21c-b711bda1c7e9", "body": "I have a custom function which is using 'net/http' and I want it to inherit the line 'http_proxy=<some value>' from /etc/sysconfig/pe-puppetserver, but it doesn't seem to work.\u00a0 Is there a way to make this pass through so my custom function can see it?", "created": "2018-03-27T18:44:00.000000"}, {"author": "557058:c9b48d3b-3b16-4fba-80cb-daf19743b953", "body": "Removed from PE known issues in a long-overdue cleanup.", "created": "2018-09-18T10:20:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2015-02-17T20:18:00.000000", "creator": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49dfe856"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-790"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Master Config", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Monolithic"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "RHEL 6 (x86_64)"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymkqf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "(unsure whether this is a bug fix or new feature) `puppetserver gem` command now respects HTTP_PROXY, HTTPS_PROXY, NO_PROXY, http_proxy, https_proxy, and no_proxy environment variables. This means that puppetserver can now install gems when behind a proxy if these environment variables are set."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_86675048_*|*_1_*:*_2_*:*_1019778647_*|*_10007_*:*_1_*:*_1021236846_*|*_3_*:*_2_*:*_39772607168_*|*_5_*:*_1_*:*_18146102059_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_3_*:*_14401681323"}], "description": "Updated description: puppetserver gem command should use system defined proxies http_proxy, https_proxy, no_proxy, HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables if set and notify the user that it is doing so.\n\n-----------------------------------------------------\n\nOriginal Description:\n\nh2. Description\nWhen a puppet master must access the internet via a proxy server, it is not possible to use the {{puppetserver gem}} command to install gems.\n\nThis command is required to be usable to install gems into the JVM for systems such as {{hiera-eyaml}}.\n\nh2. Expected result\n{{puppetserver gem}} command should use system defined proxies {{http_proxy}}, {{https_proxy}} environment variables if set *and* notify the user that it is doing so.\n\nh2. Actual result\n{{puppetserver gem install ...}} fails with a timeout error when attempting to install gems.\n\nh2. Workaround\nhttp://docs.puppetlabs.com/pe/3.7/release_notes_known_issues.html#installing-gems-when-puppet-server-is-behind-a-proxy-requires-manual-download-of-gems\n\nTake a backup of the file {{/opt/puppet/share/puppetserver/cli/apps/gem}}\nEdit the file to supply JVM arguments to support http(s) proxies by adding the parameters\n* -Dhttps.proxyHost=XXX\n* -Dhttp.proxyHost=XXX\n* -Dhttp.proxyPort=XXX\n* -Dhttps.proxyPort=XXX\n\nh2. Suggested fix\npuppetserver 'gem' script defined in  {{/opt/puppet/share/puppetserver/cli/apps/gem}} should be aware of and re-export formatted (eg with {{awk}}) contents of environment variables {{http_proxy}} and {{https_proxy}}.  When doing so it should notify the user by printing a message to the screen.\n\nh3.QA:\nRisk Assessment: High\nProbability: Medium Low\nSeverity: High", "environment": "puppet master accesses internet via a proxy server", "epicLinkSummary": "Improve handling of environment variables", "estimate": "PT0S", "externalId": "15041", "fixedVersions": ["SERVER 5.0.0"], "id": "15041", "issueType": "Bug", "key": "SERVER-377", "labels": ["docs_reviewed", "maintenance"], "originalEstimate": "PT0S", "parent": "17620", "parentSummary": "Improve handling of environment variables", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "resolution": "Fixed", "resolutionDate": "2016-11-30T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\"puppetserver gem\" command doesn't work from behind a proxy server", "timeSpent": "PT0S", "updated": "2018-09-18T10:20:00.000000", "votes": "8", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "This should be fixed by bumping the version of ssl-utils from 0.7.0 to 0.8.0. This was just done today, hopefully this fixes it.", "created": "2015-02-19T18:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think this was taken care of by the work for SERVER-119.\n\nSERVER-119 has been in Puppet Server master for a while now and I don't believe any of the extensions-related tests are failing in Puppet Server CI for master on EL7 anymore. See https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/197/.\n\nOk to close this one?", "created": "2015-03-03T18:08:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Yeah, this was verified by PUP-4005.", "created": "2015-03-04T10:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Issue was addressed by the work for SERVER-119.  Moving to done since this was about the failing certificate extension tests in CI, which have now been addressed.  QA work for the new certificate extension implementation should be tracked against SERVER-119.", "created": "2015-03-04T13:32:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Nothing for Test Rail here.", "created": "2015-03-26T16:20:00.000000"}], "components": [], "created": "2015-02-17T18:28:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3651d384"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb5b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1045059537_*|*_1_*:*_1_*:*_1187782_*|*_3_*:*_1_*:*_61855424_*|*_5_*:*_1_*:*_49492761253_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_170123461"}], "description": "Josh has reported failures in the certificate extension tests, see PUP-4005 and PUP-3560.  Need to investigate.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17613", "fixedVersions": [], "id": "17613", "issueType": "Task", "key": "SERVER-376", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-03-04T13:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "revisit errors in SSL cert extension tests", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "This ticket captures the same work described in SERVER-339, marking as duplicate and moving to resolved.", "created": "2015-02-19T11:43:00.000000"}], "components": [], "created": "2015-02-17T18:27:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37d7ad2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb5j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_23397_*|*_5_*:*_1_*:*_50622362808_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_148592410"}], "description": "Josh said that we should use this commit from puppet-agent to roll the new packages:\n\n49f7b1b967e44020587ab087f87e2f", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17243", "fixedVersions": [], "id": "17243", "issueType": "Task", "key": "SERVER-375", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2015-02-19T11:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "build new puppet-agent packages from stable commit, update puppet-server dep to use them.", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Why wouldn't we support everything the {{gem}} subcommand supports?  We did previously ship a fully working and supported {{gem}} command in Puppet Enterprise.", "created": "2015-02-18T10:21:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I'm not familiar enough with all of {{gem}}'s subcommands to know if that makes sense or not", "created": "2015-02-18T11:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Because a ton of them (like 'server') are pointless and diminishing returns on investment, IMO.  We should probably just talk through this IRL whenever we talk about the environment stuff, which hopefully will be very soon.", "created": "2015-02-18T11:24:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Well, just to record my $0.02, I say we do nothing on this ticket.  I think it's a premature optimization and we're going to find that {{gem}} subcommands either already behave as they're supposed to, or they're commands that nobody, in the context of puppetserver, cares about.  In either case, no action is likely required on our part.", "created": "2015-02-23T18:11:00.000000"}], "components": [], "created": "2015-02-17T18:22:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b461010"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xin:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_515051400_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_56587988476"}], "description": "Add a whitelist in the implementation of {{puppetserver gem ...}} which defines the set of subcommands that are actually supported.  If a given subcommand is unsupported, the user should receive a very clear error message saying something along the lines of ...\n\n{code}\n'puppetserver gem foobar' is not a supported command.  The available subcommands to 'puppetserver gem' are:\n  list - lists all the gems\n  something - does something else\n{code}\n\nThis should prevent users from trying to use things which don't work, like {{puppetserver gem server}}.  This came out of discussion on SERVER-311.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17060", "fixedVersions": [], "id": "17060", "issueType": "Improvement", "key": "SERVER-374", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "improve \"puppetserver gem\" handling of unsupported subcommands", "timeSpent": "PT0S", "updated": "2016-12-09T16:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ping [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] - I think you were asking me about this earlier today so maybe this ticket will be of interest to you.\n\n[~accountid:557058:de061074-a878-4ca5-823d-51eb605817e8] I do think that we'd have to shut down and restart the web server in order to reload the CRL for now, but there might be a way to achieve that without shutting down the whole JVM, and if so, that might be significantly faster.\n\nWe also have some tickets around re: improving startup time, which I presume would go some way towards alleviating your concerns?", "created": "2015-02-17T15:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Linked in another related ticket that might significantly reduce startup time (in terms of how long it takes for the server to start accepting connections again).", "created": "2015-02-17T15:57:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I linked this to TK-149 which is intended to cover the trapperkeeper-webservices-jetty9 level work to runtime CRL reloading in the Jetty server.", "created": "2015-02-18T09:13:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "I'm going to update the relationship between this and [TK-149] so that ticket is marked as 'blocking' this one.", "created": "2015-04-23T12:37:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Should there be a setting that causes the CRL to reload on a given interval as well?  I guess this would only be needed if the commands that revoke certs don't also automatically cause the CRL to be reloaded at the same time.  ", "created": "2015-07-17T12:12:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Hi [~accountid:557058:96a443bf-a3ab-426b-9442-ce50c9977428] - I see the fix version has been removed from this ticket. Do you have any additional context around that? ", "created": "2015-09-25T14:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "One of the things we'll want to think about with this is how this might affect some current user workflows.\n\nFor example, I understand that some users have implemented a workflow where they allow nodes to decommission themselves when they are going out of service.  To do that, I believe the node would currently make {{certificate_status}} calls in the following order:\n\n1) Set {{desired_state}} to {{revoked}} for the certificate.\n\nThis adds the certificate to the CRL but does not delete the certificate or any associated files from disk.\n\n2) Call DELETE for the certificate.\n\nThis actually deletes the certificate file from disk.\n\n--\n\nEssentially, this workflow would rely upon the client being able to make the DELETE call successfully even though it is already on the CRL.  If the web server were to start using the new CRL immediately after it were updated, though, the attempt to make the DELETE call would be rejected at the SSL layer.\n\nMaking the calls in the reverse order doesn't work either.  If the DELETE call were made first, the client certificate would be removed from disk.  The attempt to do the {{desired_state}} call with a value of {{revoked}} for the certificate would fail with an HTTP 404.  The server needs to extract the serial number from the certificate in order to know which serial number to add to the CRL.  The CA implementation attempts to get the serial number from the certificate file on disk, which no longer exists at this point.  I suppose we could put in some logic that pulls the serial number from the client certificate given for the SSL request - in the case where the client is manipulating its own certificate.  That feels a little odd to me, though.\n\nSeems like a better approach would be to augment the CA API to provide a way to revoke and delete certificate files from disk in a single HTTP call.  Probably worth considering that work whenever we get around to implement real-time CRL reloading.\n\n\n\n\n\n\n", "created": "2015-11-10T12:44:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "This issue should be resolved by the new HUP functionality of puppet server right?  \n\nhttps://docs.puppet.com/puppetserver/latest/restarting.html", "created": "2016-06-20T09:54:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "I'd say mitigated rather than resolved because there's still risk of service interruption if you HUP and the burden is on the user to know when to do it and what the risks are. Better that it's handled transparently and cleanly by us under the hood.", "created": "2016-06-20T10:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Now that we have the ability to reload Puppet Server via the service framework (which should be much faster than doing a full process restart), we may not have a significant need for this anymore.  Closing this for now.", "created": "2016-12-09T16:19:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] The point is not \"we need a quick method to reload\" so much as \"I want a simple way of fully decommissioning a node so that I don't have to perform additional steps on puppet infrastructure hosts\"\n\nA puppet administrator shouldn't need to perform three steps to decommission a node", "created": "2016-12-12T14:16:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] As far as THIS TICKET goes, I think HUP is a great method to reload the CRL.\n-- It's fast.\n-- It's well designed.\n---- If the puppet server is in the middle of a request, it will finish the existing requests before servicing the HUP.\n---- Puppet Server can queue up to 5 requests...\n-- It's robust.  (I tested by hupping puppetserver in a bash loop.  It stayed up and continued to service catalog requests.)     ", "created": "2016-12-12T14:19:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I think we're in agreement.  I believe this ticket is resolved and now any other tools that want to reload the CRL should use HUP to do that.  ", "created": "2016-12-12T14:32:00.000000"}], "components": [], "created": "2015-02-17T15:39:00.000000", "creator": "557058:de061074-a878-4ca5-823d-51eb605817e8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70485c62"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - $$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - 25-50% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The CRL should be up to date all the time in an ideal world. In the interim something to make this less lengthy would be great.\n\nThis is the same process as it was pre puppet-server, but it takes much longer now due to jvm startup times. "}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "2 - Annoyance"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywqhr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_63151344_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_57049656075"}], "description": "When managing client certs to do things like retire old nodes with \"puppet node clean\" or revoke client certs for nodes that had a security issue, the CRL gets updated. Right now it seems that the only way to get the puppetserver to reload this new CRL is by a full restart, which is a very time consuming operation. With rack/passenger, a simple and quick \"apachectl graceful\" command would reload the CRL. I tried the 2 current admin API commands that flush the environment cache and restart the jruby interpreter pool but neither of them make the puppetserver see the updated CRL. Would it be possibly to make a new admin command to do this, or provide some other lightweight method to reload the puppetserver to see the updated CRL?", "environment": "Puppet 3.7.4 on RHEL6 x86_64.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15822", "fixedVersions": [], "id": "15822", "issueType": "New Feature", "key": "SERVER-373", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:de061074-a878-4ca5-823d-51eb605817e8", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Quick method needed to reload the CRL.", "timeSpent": "PT0S", "updated": "2016-12-19T11:50:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:63d40628f6e1b543161789a7] this is not a setting that we've ever configured explicitly for Puppet Server, so my assumption would be that we will inherit the change from Puppet itself once it has been rolled into a package.  Is that inaccurate?", "created": "2015-02-17T13:37:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] It looks like some of the beaker host configs use the old value:\n\n{noformat}\n $ git grep /usr/share/puppet/modules\nacceptance/config/beaker/local/el6/1host.cfg:    sitemoduledir: /usr/share/puppet/modules\nacceptance/config/beaker/vbox/el6/64/1host.cfg:    sitemoduledir: /usr/share/puppet/modules\nacceptance/config/beaker/vbox/el6/64/2hosts.cfg:    sitemoduledir: /usr/share/puppet/modules\nacceptance/config/beaker/vcenter_dual.cfg:    sitemoduledir: /usr/share/puppet/modules\nacceptance/config/beaker/vcenter_mono.cfg:    sitemoduledir: /usr/share/puppet/modules\n{noformat}\n\nBut perhaps they are obsolete?", "created": "2015-02-17T18:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] do we even set those ^^ in our acceptance runs?", "created": "2015-02-17T18:51:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] \nThose beaker host configs aren't used in CI any longer, we actually generate the host config using the \"genconfig2\" command from https://github.com/puppetlabs/sqa-utils-gem\n\nAlso, the particular host config files shown in that grep command are really outdated--I'd be surprised and a little embarassed if anyone has been using them. I am fairly certain they are cruft that should either be updated to remove the path settings or just removed from the repo entirely.\n\nBeaker itself should be setting the correct paths here:\nhttps://github.com/puppetlabs/beaker/blob/master/lib/beaker/host/unix.rb", "created": "2015-02-17T19:12:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] Thanks for confirming. Btw, please don't rely on beaker to provide host specific settings. I know it's a well established pattern, but I want to put the kibosh on that. It is better to query the host directly using {{host.puppet\\['vardir'\\]}}. Beaker will execute {{puppet agent --configprint vardir}} on the host, and retrieve its value. If you need the config setting for a different application, e.g. master's vardir, you can do {{host.puppet('master')\\['vardir'\\]}}. The reason I mention this is that if/when we move the master vardir to a different directory, then will likely have a master and agent on the same box with two different vardirs. So having a \"global\" {{vardir}} defined in beaker won't help.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Originally this ticket came about because puppet acceptance tests fail if the site and dist module directories don't exist. For some reason the AIO and puppet-server packages don't create these directories (at least don't create both of them). But the old packages did (and so didn't need a setup step to create them). I assumed the module directories were created by the old puppet-server packages, but now I'm not so sure. It looks like it may have been a puppet-common thing. If so, I think we can close this ticket, and open one against puppet-agent.\n\n/cc [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] should puppet-agent be creating these directories, e.g. https://github.com/puppetlabs/puppet/blob/master/ext/redhat/puppet.spec.erb#L120", "created": "2015-02-17T22:39:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "It looks like creating the module directories is PUP-4001, so I'm going to close this.", "created": "2015-02-18T09:59:00.000000"}], "components": [], "created": "2015-02-16T15:42:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b6c83ba"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb6n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_4098866_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_148108890"}], "description": "The puppet-server is using sitemoduledir {{/usr/share/puppet/modules}}, and needs to be moved to {{/opt/puppetlabs/puppet/modules}}. This is also referred to as the system modulepath in PUP-3809.\n\n", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17059", "fixedVersions": [], "id": "17059", "issueType": "Bug", "key": "SERVER-372", "labels": ["AIO"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Duplicate", "resolutionDate": "2015-02-18T09:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change sitemoduledir to /opt/puppetlabs/puppet/modules", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Gem home changed as part of SERVER-369 merge into master.", "created": "2015-02-26T18:28:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "*New Feature*\n\nPuppet Server has changed the path of Ruby Gem extensions to {{/opt/puppetlabs/server/data/puppetserver/jruby-gems}} for the 2.0.0 release.", "created": "2015-04-13T12:34:00.000000"}], "components": [], "created": "2015-02-16T15:31:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a125366"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb6f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_4098088_*|*_3_*:*_1_*:*_61923024_*|*_5_*:*_1_*:*_49993432288_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_544144182_*|*_10006_*:*_2_*:*_264404404"}], "description": "puppetserver.conf defines {{gem-home: /var/lib/puppet/jruby-gems}} but this needs to be moved to either the default puppet {{vardir}} (to be updated in SERVER-369), or moved to a puppetserver-specific vardir (SERVER-357).", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16685", "fixedVersions": ["SERVER 2.0.0"], "id": "16685", "issueType": "Bug", "key": "SERVER-371", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2015-02-26T18:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change gem_home to /opt/puppetlabs/puppet/cache/jruby-gems", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Ticket SERVER-331 mentions setting ruby-load-path at install time based on operating system will no longer be necessary. Perhaps this ticket can be closed as a dup?", "created": "2015-02-16T22:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "They are related, for sure, but we hadn't captured the new path yet.", "created": "2015-02-17T13:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Duplicate of SERVER-331", "created": "2015-02-26T18:27:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "*Release Notes*\n\nPuppet Server has changed the location of the ruby load path to {{/opt/puppetlabs/puppet/lib/ruby/vendor_ruby}}.  This should not affect end users because custom extensions should be installed using Gem libraries rather than plain Ruby libraries.", "created": "2015-04-13T12:39:00.000000"}], "components": [], "created": "2015-02-16T15:04:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@248b8904"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb67:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_4100565_*|*_5_*:*_1_*:*_49993338655_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_544046064_*|*_10006_*:*_2_*:*_328051872"}], "description": "The puppet-agent package now installs puppet into {{/opt/puppetlabs/puppet/lib/ruby/vendor_ruby}}\n\nThe os-settings.conf file needs to be updated to point to the correct place (it's currently using {{/opt/puppetlabs/agent/lib/ruby/vendor_ruby}})", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16086", "fixedVersions": ["SERVER 2.0.0"], "id": "16086", "issueType": "Bug", "key": "SERVER-370", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Duplicate", "resolutionDate": "2015-02-26T18:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change ruby-load-path to /opt/puppetlabs/puppet/lib/ruby/vendor_ruby", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "If we decide to move puppet-server's vardir to a different namespace (as described in SERVER-357) then this ticket can be closed.", "created": "2015-02-16T15:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I believe that a lot of the items listed in the config files above were intended to be temporary hacks to workaround issues in Puppet's packaging.  My understanding was that we'd be able to delete most of them (see SERVER-333 , and [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] probably knows the most about whether we are still planning to be able to remove those).\n\nThe separate vardir issue would definitely change those plans slightly, though.", "created": "2015-02-17T13:40:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "At today's meeting we decided to change puppet-server to use the same set of paths as puppet-agent, and at some point in the future (after the AIO changes have been merged), separating the master's vardir. So I think it makes sense to keep this ticket and and SERVER-357 both open.", "created": "2015-02-17T15:06:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Add pull request that makes the changes, limited in scope to exactly what's described in the ticket.\n\nI fully expect these changes to fail in CI.", "created": "2015-02-19T16:23:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Previous Description from Josh before I co-opted this ticket.\n\n{quote}\nIn puppet, the default {{vardir}} is changing from {{/var/lib/puppet}} to {{/opt/puppetlabs/puppet/cache}}. The puppetserver code, config files and packaging need to be updated to point to the new location.\n\n{noformat}\n$ git grep /var/lib/puppet\nacceptance/config/beaker/local/el6/1host.cfg:    puppetvardir: /var/lib/puppet\nacceptance/config/beaker/vbox/el6/64/1host.cfg:    puppetvardir: /var/lib/puppet\nacceptance/config/beaker/vbox/el6/64/2hosts.cfg:    puppetvardir: /var/lib/puppet\nacceptance/config/beaker/vcenter_dual.cfg:    puppetvardir: /var/lib/puppet\nacceptance/config/beaker/vcenter_mono.cfg:    puppetvardir: /var/lib/puppet\ndev/puppet-server.conf.sample:    #master-var-dir: /var/lib/puppet\ndocumentation/configuration.markdown:    * `gem-home`: This setting determines where JRuby looks for gems. It is also used by the `puppetserver gem` command line tool. If not specified, uses the Puppet default `/var/lib/puppet/jruby-gems`.\ndocumentation/configuration.markdown:    * `master-var-dir`: Optionally, set the path to the Puppet variable directory. If not specified, uses the Puppet default `/var/lib/puppet`.\ndocumentation/configuration.markdown:    gem-home: /var/lib/puppet/jruby-gems\ndocumentation/configuration.markdown:    master-var-dir: /var/lib/puppet\ndocumentation/gems.markdown:    /var/lib/puppet/jruby-gems\nresources/ext/config/conf.d/puppetserver.conf:    gem-home: /var/lib/puppet/jruby-gems\nresources/ext/ezbake.conf:               postinst: [\"install --directory --group=puppet --owner=puppet /var/lib/puppet/jruby-gems\",\nresources/ext/ezbake.conf:               postinst: [\"install --directory --group=puppet --owner=puppet /var/lib/puppet/jruby-gems\",\n{noformat}\n\nAlso puppet-server is referring to {{/opt/puppetlabs/agent}} which was an earlier version of the AIO vardir path. These need to be updated to {{/opt/puppetlabs/puppet/cache}}:\n\n{noformat}\n$ git grep /opt/puppetlabs/agent\nacceptance/lib/helper.rb:    \"/opt/puppetlabs/agent/lib/ruby/vendor_ruby\"\nresources/ext/config/conf.d/puppetserver.conf:    master-var-dir: /opt/puppetlabs/agent/cache\nresources/ext/ezbake.conf:                         \"echo \\\\\\\"    ruby-load-path: [/opt/puppetlabs/agent/lib/ruby/vendor_ruby]\\\\\\\" >> %{buildroot}%{_sysconfdir}/%{realname}/conf.d/os-settings.conf\",\nresources/ext/ezbake.conf:                          \"usermod -d /opt/puppetlabs/agent/cache puppet\",\nresources/ext/ezbake.conf:                          \"chown puppet:puppet /opt/puppetlabs/agent/cache\",\nresources/ext/ezbake.conf:                          \"chmod 775 /opt/puppetlabs/agent/cache\",\nresources/ext/ezbake.conf:                          \"install --directory /opt/puppetlabs/agent/cache/reports\",\nresources/ext/ezbake.conf:                          \"chown puppet:puppet /opt/puppetlabs/agent/cache/reports\",\nresources/ext/ezbake.conf:                          \"chmod 775 /opt/puppetlabs/agent/cache/reports\",\nresources/ext/ezbake.conf:                          \"echo \\\\\\\"vardir = /opt/puppetlabs/agent/cache\\\\\\\"   >> /etc/puppetlabs/agent/puppet.conf\",\nresources/ext/ezbake.conf:                         \"echo \\\\\\\"    ruby-load-path: [/opt/puppetlabs/agent/lib/ruby/vendor_ruby]\\\\\\\"  >> $(BUILD_ROOT)/$(confdir)/$(realname)/conf.d/os-settings.conf\",\nresources/ext/ezbake.conf:                          \"usermod -d /opt/puppetlabs/agent/cache puppet\",\nresources/ext/ezbake.conf:                          \"chown puppet:puppet /opt/puppetlabs/agent/cache\",\nresources/ext/ezbake.conf:                          \"chmod 775 /opt/puppetlabs/agent/cache\",\nresources/ext/ezbake.conf:                          \"install --directory /opt/puppetlabs/agent/cache/reports\",\nresources/ext/ezbake.conf:                          \"chown puppet:puppet /opt/puppetlabs/agent/cache/reports\",\nresources/ext/ezbake.conf:                          \"chmod 775 /opt/puppetlabs/agent/cache/reports\",\nresources/ext/ezbake.conf:                          \"echo \\\\\\\"vardir = /opt/puppetlabs/agent/cache\\\\\\\"   >> /etc/puppetlabs/agent/puppet.conf\",\n{noformat}\n{quote}", "created": "2015-02-20T11:51:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Status update on this before all-staff.  I've got the puppet-server acceptance tests passing on EL-7 in my topic branch.  I need to rebase, then I'll put up a pull request for review while I continue working on the rest of the `ruby/puppet/acceptance` tests.", "created": "2015-02-20T17:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Add new PR focused on EL-7 changes only.  The full set of AIO paths have not yet been updated, but rather enough to get smoke tests passing.\n\nSpecifically, puppet-server's confdir of /etc/puppetserver/conf.d has not yet been updated.\n\nI'm going to continue working on the rest of the changes, but PR 2 is at least an incremental step in the right direction, and should get us to a point where people can work in parallel.", "created": "2015-02-23T11:39:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I'm going to keep working on getting all of the changes to all of the paths made.  I don't think it makes a whole lot of sense to try and work on these piece by piece, but it would be good to get reviews on the pull request in an ongoing basis as each of the discrete tickets is added to the pile.", "created": "2015-02-23T16:15:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Changes to ezbake are also necessary.  Our master branch will need to depend on 0.3.x of ezbake, currently in the topic branch at https://github.com/puppetlabs/ezbake/pull/189", "created": "2015-02-23T16:20:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Relates to QENG-1891 in that I'm going to hack around the problem using the pre-suite.  Once beaker is updated as per QENG-1891 the pre-suite hacks should be removed.", "created": "2015-02-24T13:43:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:63d40628f6e1b543161789a7] and [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] while working on AIO changes for puppetserver, the question of write access to the log and run directories came up.  Could you two please review https://github.com/puppetlabs/puppet-specifications/pull/27 and merge it into the specification if it's OK and resolves the ambiguity and write-access problem?", "created": "2015-02-24T17:41:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moving to fixed as this has been merged into master and passed smoke testing.  Individual tickets for EL-7 acceptance test failures coming out of the full suite are going to be created now.", "created": "2015-02-26T18:01:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "From a QA perspective, this appears to be a task rather than a bug.  Setting QA Reviewed = Yes with out any additional action.  ", "created": "2015-04-14T16:12:00.000000"}], "components": [], "created": "2015-02-16T14:58:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20f966cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb5z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_4099657_*|*_10007_*:*_3_*:*_176355134_*|*_3_*:*_2_*:*_434269637_*|*_5_*:*_1_*:*_49995055129_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_260230617"}], "description": "This ticket is bucket where all of the work required to get a full, passing CI run against EL-7 is being done.  There will be a number of related tickets blocked by this ticket.  The work described in those blocked tickets will likely be completed by the time this ticket itself is completed.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15820", "fixedVersions": ["SERVER 2.0.0"], "id": "15820", "issueType": "Bug", "key": "SERVER-369", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2015-02-26T18:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Get EL-7 CI passing fully (WAS: Update puppet-server's vardir)", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "5fcaca29aa1d30006f796b07", "created": "2015-02-16T01:03:00.000000", "name": "puppet-server-startup.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10559"}, {"attacher": "5fcaca29aa1d30006f796b07", "created": "2015-02-16T01:03:00.000000", "name": "puppet-server.conf.colo", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10638"}], "comments": [{"author": "5fcaca29aa1d30006f796b07", "body": "The startup messages I get from puppet server and the contents of my config file.", "created": "2015-02-16T01:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "If you are running Puppet Server from a relatively recent commit on the master branch, you will also need to be using a relatively recent version of the core Puppet Ruby code for both the master and the agent.  Older versions of the master and agent code - including the 3.6.2 and 3.7.4 release packages of core Ruby Puppet - are not compatible with the more recent Puppet Server master branch code, primarily due to the URL-related changes coming in Puppet 4 which are documented here: \n\nhttps://github.com/puppetlabs/puppet/blob/master/api/docs/http_api_index.md\n\nFor a compatible set of core Ruby Puppet commits, you could look at where the latest .../ruby/puppet and .../ruby/facter git submodules under Puppet Server are pointing.  As of the latest commit on Puppet Server master, cf5feecff12bbafc69f172c567e0e7b1289e1214 (2015 Feb 13), the git submodule for .../ruby/puppet points at b792d8437f925a640f74bc1642fb6a129b276e72 (2015 Feb 4) and for .../ruby/facter at 8ff4fa5e0251aaa1b3fea1e2e308a34b2ffe6027 (2015 Jan 22).\n\nIf you want to continue using previous release packages of Ruby Puppet with Puppet Server, you could run Puppet Server from the \"stable\" branch in git - or from a git tag corresponding to a more recent package release, like puppet-server-1.0.2.  These do not incorporate the Puppet 4 URL changes.", "created": "2015-02-16T20:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5fcaca29aa1d30006f796b07] can you confirm that you are running from the source code of the master branch?  If so, then as [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] suggested above, I believe that your issue is just that Puppet 3.x is only compatible with Puppet Server 1.x (which is in our 'stable' branch), and Puppet Server 2.x is intended for Puppet 4.x compatibility.\n\nWe intend to create some documentation about our branching strategies Very Soon Now.  See SERVER-296 for more info.\n\nlet us know if switching to the 'stable' branch resolves your issue.  Thanks!", "created": "2015-02-17T18:15:00.000000"}, {"author": "5fcaca29aa1d30006f796b07", "body": "Yes, I was running off the master branch, and that was the problem.\nI changed to the stable branch, and it is working now.\n\nI would request that you do add documentation early in the README describing your branching strategy.\nI am a user/proponent of the GitFlow style, where master is what is released, and future versions are in develop and/or feature branches off develop, so I was not expecting future development on master.  My mistake cost me several hours (non-fun!) over the weekend.\n\nAnyway, all is well now, thank you for quickly setting me straight.\n\nOn an unrelated note, as a longtime Clojure developer, I could not be more thrilled about the new puppet-server.\n\nFeel free to close this issue.\n", "created": "2015-02-19T00:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yeah, the branching strategy is different from what I've seen in some other previous projects I've worked on, but we are trying to mimic the branching strategy used by Puppet itself.\n\nDocs coming soon - I promise!", "created": "2015-02-19T08:24:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-16T00:48:00.000000", "creator": "5fcaca29aa1d30006f796b07", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22518ccc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyea7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_664511893_*|*_6_*:*_1_*:*_0"}], "description": "I start puppet-server via\n\nlein run -c /path/to/puppet-server.conf --debug\n\nThe server starts up OK, AFAICT.\n\nI've tried to connect from two different clients, one running 3.7.4, the other is running 3.6.2\n\nIn each case, I get this:\n\nDebug: Finishing transaction 13232440\nDebug: Creating new connection for https://puppet-server.dcj.com:8140\nError: Could not request certificate: No content type in http response; cannot parse\nExiting; failed to retrieve certificate and waitforcert is disabled\n\nI do not see ANYTHING in the puppet server logs or on the command line.\n\nSo I am doing something very wrong, and the puppet clients are failing before the puppet server would log any connection attempt.\n\nThe two client machines can definitely ping and DNS resolve the name of the server.\n\nI set up a one liner shell script on the puppet-server box which which served a text file via http (on another port) and verified that one of the clients could http get that file, that worked.\n\nAny advice you could give me about how to debug this would be greatly appreciated.  \n\nI will attempt to attach some files to this issue", "environment": "I run puppet-server from source on from within a FreeNAS jail.\nThis used to work fine last fall, circa puppet-server 0.4.0\nI recently upgraded my puppet server to the latest git commit (and re-pulled a few minutes ago...)\nI am running FreeNAS 9.3 (FreeBSD 9.3)\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16435", "fixedVersions": [], "id": "16435", "issueType": "Bug", "key": "SERVER-368", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5fcaca29aa1d30006f796b07", "resolution": "Duplicate", "resolutionDate": "2015-02-23T17:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Trouble with client connections since upgrading puppet server", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "AFAIK, JRuby doesn't allocate its own heap / memory pool as a subset of the overall heap that the JVM uses for the process.  When running from a package, the minimum / maximum heap sizes for Puppet Server can be configured via the corresponding -Xms and -Xmx settings in the JAVA_ARGS variable, as documented in https://github.com/puppetlabs/puppet-server/blob/master/documentation/install_from_packages.markdown#memory-allocation.  These sizes would apply to any memory that Java allocates, not just JRuby-related allocations.\n\nThis page talks about a 500MB being set as the default maximum heap size for JRuby -  https://github.com/jruby/jruby/wiki/Troubleshooting-Memory-Use#jvm-uses-whatever-you-give-it.  I think all that means is that when you start jruby via the wrapper shell script which sets up the command line arguments to run jruby via the java command line, jruby.sh, that the default -Xmx that the script uses is 500m.  See:\n\nhttps://github.com/jruby/jruby/blob/1.7.19/bin/jruby.sh#L138\n\nhttps://github.com/jruby/jruby/blob/1.7.19/bin/jruby.sh#L259-L287\n\nI'm not sure where the 512mb number comes from.  I'm not aware of any code in Puppet Server that passes a number of this size into the JRuby ScriptingContainer objects that Puppet Server allocate.  I have seen that the pom.xml files for JRuby specify 512M for jruby.compile.memory, but I understand this to only be relevant to the memory that maven sets up for Java to use when building JRuby.\n\nIs there somewhere else that you saw a reference to a 512m heap?", "created": "2015-02-16T20:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The settings you can configure for a JRuby instance are typically found here - https://github.com/jruby/jruby/blob/1.7.19/core/src/main/java/org/jruby/RubyInstanceConfig.java and https://github.com/jruby/jruby/blob/1.7.19/core/src/main/java/org/jruby/util/cli/Options.java.  I didn't find anything memory heap-related in these.\n\n", "created": "2015-02-16T20:43:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] it's quite possible that I don't understand how this works.  :)\n\nNow that I think about this it would make sense that JRuby would just share the heap size since they all run under the same invocation of the JVM.  If it's not possible to configure the amount of memory that JRuby uses then that's fine I can cross it off my list of possible ways to reduce memory usage.  ", "created": "2015-02-16T20:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yep, there is one heap size per JVM.", "created": "2015-02-17T12:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] I believe that our goals w/rt memory usage are captured in a few other tickets, and I'm not sure there's anything actionable on this?  Closing it for now just to help clean up our backlog, but I'm happy to discuss further and re-open if you think I've missed something.", "created": "2015-02-17T18:11:00.000000"}], "components": [], "created": "2015-02-15T18:55:00.000000", "creator": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62e6de21"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyye9z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_170193206_*|*_6_*:*_1_*:*_0"}], "description": "It is my current understanding that puppetserver ships with a 512MB heap size for JRuby.  \n\nThis is separate from the heap size for puppetserver as a whole and as such makes running puppet server on around or less than 512MB of RAM nearly impossible.  \n\nThe amount of heap size for JRuby specifically should be configurable if possible.  ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15596", "fixedVersions": [], "id": "15596", "issueType": "New Feature", "key": "SERVER-367", "labels": ["tcse"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "resolution": "Cannot Reproduce", "resolutionDate": "2015-02-17T18:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Should Allow Configuring the Amount of Heap That JRuby Utilizes", "timeSpent": "PT0S", "updated": "2015-12-30T16:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It's important that we understand how whatever solution we come up with here will interact with our existing logrotate configuration, or whether we need to change the logrotate configuration.", "created": "2015-02-23T11:37:00.000000"}, {"author": "557058:5f998a8b-08b1-46f5-beb0-60cd1d60b36b", "body": "I can provide some feedback here. It would be nice if logback could handle rotation wherever we're using it. I'd prefer that we use size based rotation across all services regardless of whether they use logback. It means we can give customers more explicit requirements around disk usage.", "created": "2016-03-10T12:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] mentioned that this would be a big win for him if we could target it at a 1.x release.  It seems like the kind of thing that would be pretty easy to apply to both the old and new branches, so definitely worth considering when we pick this up.", "created": "2016-04-01T19:13:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "h1. Logging Improvements\n\nPuppet Server 2.6.0 introduces changes to how log files are managed. Previously, logs would be backed up and compressed once a day through logrotate. Log rotation is now managed by logback, the java logging framework that Puppet Server uses. This comes with some improvements, the main ones being:\n* Logs are now backed up and compressed after exceeding 10MB\n* If the total size of all the logs exceeds 1GB, the oldest logs will be deleted\n\nThis means that certain pathological error states (such as running out of file handles) that would previously cause Puppet Server to fill up disk partitions with nothing but logs of stack traces, will no longer be a problem.\n\nh2. Upgrade note for Debian users\n*tl", "created": "2016-09-02T15:47:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] Here's the logback ticket with my attempt at upgrade docs and links to the PRs", "created": "2016-09-06T14:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] - since with this feature Puppet Server will no longer be using {{logrotate}} - ignoring the work that users would have to do to manually unconfigure it on an upgrade for Debuntu - we should probably remove / revise our references to {{logrotate}} in some of the Puppet Server logging docs.  Via grep, I found references to {{logrotate}} in the following docs:\n\n* config_file_logbackxml.markdown\n* config_logging_advanced.markdown\n* services_master_puppetserver.markdown\n\nSince we'll be releasing the new logging functionality in both Puppet Server 1.2.0 and 2.6.0, it probably makes sense to update the logging docs around {{logrotate}} against the 1.x branch first - then we can merge up to stable and on to master from there.\n\nHope this makes sense.  Thanks!", "created": "2016-09-06T14:45:00.000000"}], "components": [], "created": "2015-02-14T00:00:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5bd321cb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymy3r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "New Feature:\nPuppet Server 2.6.0 introduces changes to how log files are managed. Previously, logs would be backed up and compressed once a day through logrotate. Log rotation is now managed by logback. Improvements:\n* Logs are now backed up and compressed after exceeding 10MB\n* If the total size of all the logs exceeds 1GB, the oldest logs will be deleted\n\nKnown Issue: \nUpgrade note for Debian users: tl;dr: You must manually remove /etc/logrotate.d/puppetserver to stop logrotate from trying to (harmlessly) manage your Puppet Server log files"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_11513028_*|*_1_*:*_1_*:*_321086101_*|*_10007_*:*_1_*:*_179452411_*|*_3_*:*_1_*:*_1024163088_*|*_5_*:*_1_*:*_217340004_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_501797099_*|*_10006_*:*_1_*:*_47246367643"}], "description": "This is related to PE-8008.\n\nWe've had some issues with disk usage going crazy when Puppet Server runs out of file handles; it starts logging tons and tons of exceptions about the issue.  (Often the solution is simply to increase the ulimit, but users are still frustrated by the disk getting filled up by log files.)\n\n`logrotate` has been our go-to tool to try to solve this problem so far, but we've found that when the file handle errors start occuring, they come in much, much faster than logrotate manages them.\n\nWe discovered that logback has support for what we want:\n\nhttp://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP\n\nIf we ship a reasonable default logback configuration based on those features, we should be able to keep the log files from growing completely out of control.\n\nWe'll need to experiment with the config to find one that we think makes sense, make sure that this isn't a big performance hit, and make sure we understand how it would interact with logrotate.  We may need to modify ezbake such that specific projects can opt out of logrotate if it turns out that it's better to just have logback handle it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15255", "fixedVersions": ["SERVER 1.2.0", "SERVER 2.6.0"], "id": "15255", "issueType": "Improvement", "key": "SERVER-366", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-09-06T11:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "improve logging config to limit max disk usage", "timeSpent": "PT0S", "updated": "2016-09-30T12:24:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We're going to extend ezbake to allow projects to configure a pre-exec shell script that will be run before the service starts.  That's tracked in EZ-31.\n\nWe can do some work on these tickets ahead of time in terms of fleshing out the implementation details of the shell script that we'll want to use, but the final plumbing will be blocked on EZ-31.\n\nHere's a google doc with some rough notes on how we are thinking about setting the settings:\n\nhttps://docs.google.com/a/puppetlabs.com/document/d/1bKQXDeiYpgPOyueKoS33iJ1R15vkP1w8X788r6YURwY/edit\n\nWe'll try to clean that up and write up a more formal plan for review soon.", "created": "2015-02-25T17:38:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "What language should this script be in?", "created": "2015-02-26T10:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "TBD", "created": "2015-02-26T13:09:00.000000"}], "components": [], "created": "2015-02-13T23:28:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34c3c046"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-791"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynstb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_322819798_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_57107290033"}], "description": "In OSS Puppet Server we ship with config files that set the max heap size to 2G, no matter what.\n\nToday, with the default number of JRuby instances set to num-cpus + 2, that doesn't make much sense.  If the user installs Puppet Server on a machine that has a large number of cores, we're virtually guaranteed to get an OOM.\n\nIn SERVER-364, we are considering lowering the default number of JRuby instances to a max of 4 or 6, but less for machines with a low number of CPU cores.  If we do that, 2G may be a reasonable max heap size for machines that end up with the default of 6 jrubies, but for the smaller machines, it'd be nice if we could default to a lower value.\n\nTo achieve this we'd need to be able to detect the number of cores and/or total system RAM during installation, and modify the defaults/sysconfig file to set an appropriate value during installation.  *If* we can figure out a sane way to do that, we still need to decide on a formula for calculating the value based on the number of JRubies.  We'll probably need to do some perf testing against SERVER-325 as input to this, because it's possible that that ticket will significantly reduce the RAM requirements overall.", "epicLinkSummary": "Improve default settings", "estimate": "PT0S", "externalId": "17612", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "17612", "issueType": "Improvement", "key": "SERVER-365", "labels": [], "originalEstimate": "PT0S", "parent": "14991", "parentSummary": "Improve default settings", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "improve default value for heap size", "timeSpent": "PT0S", "updated": "2016-12-09T16:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I like the {{min (num-cpus, X)}} approach.  Would align us well with what Jetty does for defaulting the number of selectors/acceptors for incoming web requests.  _They also moved to this after having used an unbounded, cores-based approach in prior versions_.  In 9.2.7, Jetty caps those both at 4.  We could choose to do the same instead of going with 6 as our default max.  I'm definitely willing to concede to others' practical knowledge for the best max, however.", "created": "2015-02-18T16:02:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I think it would be cool calculate the default # of JRubies dynamically, based on {{-Xmx}} (available at runtime as {{Runtime.getRuntime().maxMemory()}}).", "created": "2015-02-18T16:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] We should talk more about what you're suggesting, I think we're on the same page.\n\n[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Our recent adventures with support escalations have led me to believe that doing any of this dynamically is a bad idea, and that it makes more sense to start with a fixed number of JRubies and provide more info to users about how this should map to their heap size, rather than the other way around.  I've created several other tickets relating to this and plan to work closely with [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] to define the strategy around default values, since he has had the most visibility into what has and hasn't worked for customers in the real world.", "created": "2015-02-19T09:20:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - I think I get the general gist of what you're getting at, but I just want to point out that [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]'s suggestion is still \"dynamic\" in some sense, it's just based off of different inputs (# CPUs vs. heap size - of course, # of CPUs is likely static on a given machine, so my suggestion is \"more dynamic\" in a sense, but I digress ... ).\n\nAnyway, I guess what I'm getting at is that it seems like the heap size is a much important parameter to consider when calculating the number of JRubies to create.", "created": "2015-02-19T11:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] yeah, I also agree with the gist of what you're saying.\n\nI think where I'd like to land if we can figure out a way to pull it off is to only have the dynamism happen as part of the installation process.  We do something during initial package setup that involves an algorithm with just a little bit of dynamism, but the result is that we end up with hard-coded values in the relevant spots in the config files, and the 'max-active-instances' configuration setting becomes a required setting rather than an optional one.  Then we do our best to help make the configuration options / constraints visible to the user after the fact, but we rely on them to tune them from that point forward, rather than anything dynamic happening as part of the actual application code.\n\nWhether or not there is a sane way to achieve this goal from a technical perspective is a separate question, but that seems like the right initial goal to me.  Need to discuss further with [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100].", "created": "2015-02-19T12:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Are you thinking the initial dynamism would be a function of the PE installer or just in the standard puppetserver packaging (so that FOSS users would have similar behavior) - or maybe both?", "created": "2015-02-19T16:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "tbd", "created": "2015-02-19T16:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We're going to extend ezbake to allow projects to configure a pre-exec shell script that will be run before the service starts.  That's tracked in EZ-31.\n\nWe can do some work on these tickets ahead of time in terms of fleshing out the implementation details of the shell script that we'll want to use, but the final plumbing will be blocked on EZ-31.\n\nHere's a google doc with some rough notes on how we are thinking about setting the settings:\n\nhttps://docs.google.com/a/puppetlabs.com/document/d/1bKQXDeiYpgPOyueKoS33iJ1R15vkP1w8X788r6YURwY/edit\n\nWe'll try to clean that up and write up a more formal plan for review soon.", "created": "2015-02-25T17:37:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] didn't this get an improvement already?  Does this need to be updated or closed?", "created": "2015-09-10T16:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] well, we had some meetings about how to implement this (a looooong time ago), and we had decided that we wanted to do it in a pre-exec shell script.  And I believe the algorithm was a bit more sophisticated than what we have today.  What we have today was *going* to be a sort of short-term workaround until we had time to do the long-term implementation, but, if you are happy enough with the behavior we have today then I'd have no problem closing this out.", "created": "2015-09-10T16:25:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] The description currently describes the old-old behavior.  In a perfect JIRA world to me, we'd close this out since we did improve the default value and open a new ticket that says what the current behavior is and how we think we might improve it.  \n\nThoughts?", "created": "2015-09-10T16:37:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "After talking it through with [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] and [~accountid:557058:79cfdf4b-b7db-45b4-904b-68a82fb46933] we're going to close this ticket, and focus efforts in this area on [SERVER-413]", "created": "2015-10-21T12:39:00.000000"}], "components": [], "created": "2015-02-13T22:53:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f22edc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Critical"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-791"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqq7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_324891312_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_21234675612"}], "description": "We currently default the 'max-active-instances' for JRuby to (num-cpus) + 2.  This has proven to be problematic in cases where users install Puppet Server on a machine with a very large number of cores, because the volume of JRuby instances requires a huge amount of RAM.  Since we default to a max heap size of 2GB, there is a strong likelihood of an OutOfMemoryError.\n\nIf we instead err on the side of setting the number of JRuby instances too *low*, then the user might experience performance issues and need to manually tune the number of JRuby instances higher, but that seems preferable to erring on the side of tuning the number of instances too *high* and having the service crash.  \n\nFurthermore, if we add some additional metrics to the system we can detect if there is more load than we can handle with the configured number of JRuby instances, and log informative messages suggesting that the user increase the number of JRubies.\n\nWith all of this in mind, it seems like the best option would be to default to a static value like 4 or 6.  However, those settings might be too high for demo/test systems that only have one or two cores.\n\nPerhaps the default could be something like `min(num-cpus, 6)`?\n\n", "epicLinkSummary": "Improve default settings", "estimate": "PT0S", "externalId": "17058", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "17058", "issueType": "Bug", "key": "SERVER-364", "labels": [], "originalEstimate": "PT0S", "parent": "14991", "parentSummary": "Improve default settings", "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-10-21T12:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "improve default value for max-active-instances", "timeSpent": "PT0S", "updated": "2016-01-19T06:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Once this is done for stable, it might be worth updating the confluence docs on building a package locally (https://confluence.puppetlabs.com/display/ENG/How+To+build+Puppet+Server+from+a+local+topic+branch) to clarify building puppet server for pre-ezbake-as-plugin vs. today (rather than building puppet server on master vs. stable, which I believe is what it has now).", "created": "2015-02-18T16:57:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Nothing for Test Rail here.", "created": "2015-03-26T16:17:00.000000"}], "components": [], "created": "2015-02-13T13:27:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18fb1186"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp53j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_100294674_*|*_1_*:*_1_*:*_45958_*|*_10007_*:*_1_*:*_334140463_*|*_3_*:*_1_*:*_530445179_*|*_5_*:*_1_*:*_2933592784_*|*_6_*:*_1_*:*_0"}], "description": "Get master and/or stable up to speed with the newest EZBake (0.2.2)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15253", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "15253", "issueType": "Task", "key": "SERVER-363", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-02-24T17:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade to newest EZBake", "timeSpent": "PT0S", "updated": "2015-04-07T14:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Currently working on this.", "created": "2015-02-12T12:55:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Add pull request against puppet-server", "created": "2015-02-12T13:01:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Releated to PUP-1073 which describes the failing test.", "created": "2015-02-12T15:12:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Add a link to the \"real\" fix in puppet, which may not get merged for some time.  Our work-around in puppet-server's pre-suite should be removed once the PR against puppet is merged and available in the {{ruby/puppet}} submodule of puppet-server.", "created": "2015-02-12T15:24:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "This issue is tracked on the puppet side as PUP-3960", "created": "2015-02-12T15:35:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I thought this got fixed in an ezbake package level dependency, but I need to verify that...", "created": "2015-02-19T12:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "No, the acceptance test is supposed to fix it in the puppet side.  See https://github.com/puppetlabs/puppet/pull/3601/files", "created": "2015-02-19T14:57:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:623e7507866b810069e57527] Do you know why this is in Needs information?", "created": "2015-02-23T10:58:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:623c12b6ee1b5a0070293582] I believe it's because I dragged it into the \"blocked\" column on the Jira board, but that automatically assigns the \"Needs Information\" status.", "created": "2015-02-23T11:05:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] This is the createrepo ticket we mentioned in the AIO stand up today.\n\nRelevant links to PR's are:\n\n * https://github.com/puppetlabs/puppet/pull/3575\n * https://github.com/puppetlabs/puppet/pull/3601\n * https://github.com/puppetlabs/puppet-server/pull/398\n", "created": "2015-02-27T12:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Closing as a duplicate of PUP-3960.  [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] mentioned today:\n\n{quote}\n@jb i *think* we have pup-3960 fixed now with the most recent merge, CI will take 2-3 hours however /cc @JohnDuarte\n{quote}", "created": "2015-03-02T14:18:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "And PUP-3960 did pass CI, so is now resolved.", "created": "2015-03-02T14:36:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-12T12:55:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b548562"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp53b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10014_*|*_10007_*:*_1_*:*_699024204_*|*_3_*:*_1_*:*_387039_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_530082916_*|*_10006_*:*_1_*:*_330674801"}], "description": "The {{common_package_name_in_different_providers.rb}} ruby puppet acceptance test is failing with {{exited with 127 running: createrepo /tmp/rpmrepo}}\n\nFull stack:\n\n{code}\n#<Beaker::Host::CommandFailure: Host 'm1yas9jxjsz0p5h.delivery.puppetlabs.net' exited with 127 running:\n createrepo /tmp/rpmrepo\nLast 10 lines of output were:\n\tbash: createrepo: command not found>\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/host.rb:286\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/dsl/helpers.rb:88\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/shared/host_manager.rb:95\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/dsl/patterns.rb:32\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/dsl/helpers.rb:78\n/var/lib/jenkins/workspace/platform_puppet-server_integration-system_full-master/LAYOUT/64mdca/PLATFORM/redhat7/label/beaker/ruby/puppet/acceptance/lib/puppet/acceptance/rpm_util.rb:18\n/var/lib/jenkins/workspace/platform_puppet-server_integration-system_full-master/LAYOUT/64mdca/PLATFORM/redhat7/label/beaker/ruby/puppet/acceptance/tests/resource/package/common_package_name_in_different_providers.rb:44\n/var/lib/jenkins/workspace/platform_puppet-server_integration-system_full-master/LAYOUT/64mdca/PLATFORM/redhat7/label/beaker/ruby/puppet/acceptance/tests/resource/package/common_package_name_in_different_providers.rb:42\n/var/lib/jenkins/workspace/platform_puppet-server_integration-system_full-master/LAYOUT/64mdca/PLATFORM/redhat7/label/beaker/ruby/puppet/acceptance/tests/resource/package/common_package_name_in_different_providers.rb:42\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/test_case.rb:120\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/test_case.rb:120\n/usr/local/rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/benchmark.rb:295\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/test_case.rb:117\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/test_suite.rb:357\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/test_suite.rb:354\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/test_suite.rb:354\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/test_suite.rb:396\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/cli.rb:149\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/lib/beaker/cli.rb:95\n/usr/local/rvm/gems/ruby-1.9.3-p484/gems/beaker-2.3.0/bin/beaker:6\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/beaker:23\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15\n{code}\n\nThis could be fixed by adding the dependencies to the pre_suite directory in puppet-server since puppet's code base is volatile due to AIO changes at the moment.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17241", "fixedVersions": [], "id": "17241", "issueType": "Task", "key": "SERVER-360", "labels": ["AIO", "tests"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Duplicate", "resolutionDate": "2015-03-02T14:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix createrepo issue with ruby puppet acceptance tests", "timeSpent": "PT0S", "updated": "2015-11-30T12:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] can you please attempt to edit the description of this ticket to describe the root cause of the issue in more detail, and perhaps a few sentences about possible solutions / paths forward?  Better to do this now while you still have context... this ticket may be fairly cryptic to whoever picks it up later without that context.", "created": "2015-02-12T09:11:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Added more detail, let me know if I missed something!\n\n[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] Please add more detail or clarity regarding the EZBake improvements if necessary.", "created": "2015-02-12T12:07:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] and I chatted about this briefly in person.  My suggestion is to try and move to a world where the CI system does not modify the files in the project repository as part of the release process.  Specifically, I propose that it would be closer to ideal if the version bump happened prior to the start of the automated release process.  This version bump could be automated or manual, but the goal is to have everything staged in Git ahead of time so that we, as a team, can review it before kicking off the full, automated release process.\n\nAdvantages of this approach:\n\n * We have an opportunity to review the version identifier prior to starting the automated release process.\n * We have a consistent process for major, minor and bugfix releases.  (the current automated version bump currently only works for Z releases.)\n * Humans are in control of the version identifier, what we tag, and what we (may) digitally sign.\n * Easier to explain and reason about, the automated release process can be thought of as a pure function relative to the codebase as an input instead of a function that mutates the input.", "created": "2015-02-12T15:56:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Another side comment, but related, was that it could be nice to have two variables, one for each branch we release from, to prevent merge conflicts from stable => master.\n\nFor example:\n\n\n{code}\n(def ps-stable-version \"1.0.6-SNAPSHOT\")\n(def ps-master-version \"2.0.0-SNAPSHOT\")\n(defproject puppetlabs/puppet-server ps-master-version)\n{code}\n\nThere will be one conflict to resolve once we make this change and then merge it up, but from that point forward the version identifiers shouldn't conflict on future merge-ups.\n\n\n\n\n", "created": "2015-02-12T16:06:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] FYI, this is the same thing we were talking about back when [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e], you and I met after the FOSS 1.0.2 release.", "created": "2015-02-12T16:10:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:623c12b6ee1b5a0070293582] yeah I remember discussing this back then, the version string variable problem with lein-ezbake was probably the biggest reason I didn't push for an automated \"release\" step.\n\nI think we could still think of an automated release step as a pure function as long as we understand that one of the outputs of that pure function is a series of git commits and a git tag after passing project.clj through a well-understood series of transformations.\n\nAs for the different variables for \"master\" vs \"stable\", wouldn't we still run into conflicts on all merge-ups? In master branch the \"defproject\" line as well as the ezbake profile puppet-server dependency will contain \"ps-master-version\" but in stable it will always need to be \"ps-stable-version\"...unless I'm just not thinking that through clearly.", "created": "2015-02-12T16:21:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}I think we could still think of an automated release step as a pure function as long as we understand that one of the outputs of that pure function is a series of git commits and a git tag after passing project.clj through a well-understood series of transformations.{quote}\n\nI really don't mean to be argumentative or anything, and I'm new to functional programming so I may still be ignorant about this, but what you describe is a process that mutates the input to the \"function\" (process), as a clear, observable side-effect.  The output of the \"function\" are the release artifacts, the modification of the input is an observable side-effect.  That's not pure.\n\n{quote}In master branch the \"defproject\" line as well as the ezbake profile puppet-server dependency will contain \"ps-master-version\" but in stable it will always need to be \"ps-stable-version\"...unless I'm just not thinking that through clearly.{quote}\n\nIt's not super-clear, I had to think it though a couple of times (and try it out once) before I came to the conclusion.\n\nThe main idea is that version identifier strings will change _every_ time we cut a release.  All of those changes get merged-up and create conflicts.  If we can replace all of those strings with a symbol then that symbol will not need to change _every_ release, they'll remain static after _one_ merge-up.\n\nYou're correct there will be a conflict once we merge all of the symbols in the stable branch up into master, but the idea is that that conflict needs to be resolved only once.  Once resolved, all subsequent releases will require no changes to the symbols, only a re-definition of the symbol itself, which we can move to two different lines which will not conflict between branches.\n\nI'm trying to figure out how to visually represent this, or explain it better, but it might be easier to just try it out in a fake repository with two branches.", "created": "2015-02-12T16:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Not sure how this will shake out exactly but if it ends up that we need this ticket to be done in order to get the next Puppet Server 1.x release out and that happens before the Puppet Server 2.x release, we may pull this back to the Puppet Server 1.x epic and do the work off ezbake / Puppet Server stable first.  Leaving this in the Puppet 4.0 / Puppet Server 2.x camp for now.", "created": "2015-03-13T12:09:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Also, FWIW, I was hoping to come to a consensus regarding the process in our team retro, but the next one isn't scheduled until the 24th, which is pretty late given the upcoming releases.", "created": "2015-03-16T12:35:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "General update: \n\nChatted with [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] again about this and we're basically okay with the manual release process we have right now.\nThe process is documented on Confluence at [Releasing a new version of Puppet Server|https://confluence.puppetlabs.com/display/ENG/Releasing+a+new+version+of+Puppet+Server].\n\nRegarding a fix to be able to automate this again...sounds like the best solution would be to improve ezbake to get rid of the self project dependency, which was the original reason we needed to pull out the version string into a top-level def.  But, at the same time, we do feel like it would be worthwhile to be able to replace version strings in top-level defs to allow for more automation (like auto-updating dependencies, etc).", "created": "2015-03-23T12:17:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "{quote}sounds like the best solution would be to improve ezbake to get rid of the self project dependency{quote}\nJust to clarify, the desired ezbake improvement is that we want to be able to have an implicit dependency on the current project.", "created": "2015-03-23T12:20:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Closing this as there's no tangible work to be done regarding the specific issue defined here. Basically, we're okay with the manual process we have right now.\n\nSee EZ-35 for the ezbake improvement discussed here.", "created": "2015-03-23T12:54:00.000000"}], "components": [], "created": "2015-02-11T19:07:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d1e511d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp1wn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_514789666_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2915255690"}], "description": "The automated step during a release that modifies the version string in project.clj is broken because it can't handle a version variable - it must be a hard-coded version string. The string literal was extracted into a variable because it needed to be referenced in multiple places in the file.\n\nThe release task has a step that changes the version property of the defproject map in project.clj.  See the {{[\"change\" \"version\" \"leiningen.release/bump-version\" \"release\"]}} step [here|https://github.com/technomancy/leiningen/blob/master/doc/DEPLOY.md#overriding-the-default-release-tasks], and the corresponding source [here|https://github.com/technomancy/leiningen/blob/master/src/leiningen/change.clj].\n\nThis step expects the version to be a string literal in the defproject call, like so: \n{{(defproject puppetlabs/puppet-server \"1.1.0-SNAPSHOT\" ...)}}.  \nInstead of a string literal, we have pulled the string out into a top-level {{(def ps-version \"1.1.0-SNAPSHOT\")}} variable and use it like so: {{(defproject puppetlabs/puppet-server ps-version ...)}}.\n\nThe {{\"change\"}} lein plugin cannot handle changing this top-level {{def}} - it can only change properties of the project map (that is, one of the {{:<property>}} values defined in the call to defproject).\n\nThere are several paths forward that would essentially solve this problem, or make it go away. \nThe first few attempt to improve support for changing variables/properties in the project.clj file:\n* Improve the {{change}} plugin so it can modify top-level variables too, or write our own plugin that extends {{change}}\n* Use a more general string find+replace plugin like [lein-file-replace|https://github.com/jcrossley3/lein-file-replace], though after some brief exploration I don't think this plugin would result in something maintanable\n* Use a lower-level tool (i.e. sed/awk/something-on-the-OS) to perform the string find+replace, which could be shelled out to during release\n\nEven better, we could try to eliminate the need for the top-level variable altogether so we can keep the version string literal in the call to defproject and not have to muck with lein plugins or shelling out. The other usage of the version string is in the ezbake profile dependency list [here|https://github.com/puppetlabs/puppet-server/pull/396/files#diff-0fff143854a4f5c0469a3819b978a483R84]. \n\n[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] is suggesting that we instead improve EZBake itself to not require this self-dependency, which as it just so happens would be a required step in making EZBake more usable outside of Puppet Labs anyway.\n\n----\nRisk assessment: Low (no additional validation required)\nProbability: Low (does not impact users)\nSeverity: Low (does not impact users)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17057", "fixedVersions": ["SERVER 2.0.0"], "id": "17057", "issueType": "Bug", "key": "SERVER-359", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Fix", "resolutionDate": "2015-03-23T12:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "project.clj no longer compatible with lein release task", "timeSpent": "PT0S", "updated": "2015-03-25T15:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] says that we're already doing this in the post-install on Puppet Server, but that it's a gross hack and needs to be cleaned up.  (See SERVER-333.)\n\n[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] [~accountid:623c12b6ee1b5a0070293582] I think that [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] will end up owning this work when we tackle it, but I'm keeping it on our board because I think it might have implications for some of our other tickets.", "created": "2015-02-17T18:04:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "We're doing all of the chmoding etc necessary to have all of the directories have the right permissions in the postinstall in ezbake.conf (https://github.com/puppetlabs/puppet-server/blob/master/resources/ext/ezbake.conf#L18-L35). The creation of the puppet user and group is I believe done by ezbake since we're setting user and group to 'puppet' (at least for FOSS) (https://github.com/puppetlabs/puppet-server/blob/master/project.clj#L68-L69)", "created": "2015-02-18T10:31:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] We were not sure in planning if you were going to work on this, or if the expectation was that the server team should work on it. Please let me know what you were expecting so I can make sure it ends up in the right place.", "created": "2015-02-18T17:56:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] Sorry about that,this is all me, as far as the work is concerned. Informational for the server team.\n\n", "created": "2015-02-18T18:40:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] Makes sense. We just wanted to make sure it did not fall between the cracks. Thanks.", "created": "2015-02-19T10:59:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "[~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] This ticket came up in an AIO status meeting today. Just wanted to check in and see if you are blocked or waiting on anyone for this. I see it is targeted at the 03-11 sprint. Do you still think it will be done at the end of the sprint?", "created": "2015-03-04T13:48:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Just to confirm a question [~accountid:63d40628f6e1b543161789a7] asked this morning, puppet-server is currently _not_ creating the puppet user and group as part of the package installation.  This can be seen here:  https://github.com/puppetlabs/puppet-server/blob/d837d8190b887238d02524ff2db2f889a7458eb6/resources/ext/ezbake.conf", "created": "2015-03-06T11:29:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:623c12b6ee1b5a0070293582] It may not be doing it in ezbake.conf, but that's because it/ezbake is doing it as a result of setting user and group in project.clj in the {{lein-ezbake}} section: https://github.com/puppetlabs/puppet-server/blob/d837d8190b887238d02524ff2db2f889a7458eb6/project.clj#L68-L69", "created": "2015-03-06T11:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] Ah, thanks for the information.  [~accountid:63d40628f6e1b543161789a7] I was wrong, puppet-server packages are creating the user and group in the RPM spec template:\n\nhttps://github.com/puppetlabs/ezbake/blob/4625cd7b439ad893eaadf652b4251dd2313a7a18/resources/puppetlabs/lein-ezbake/template/foss/ext/redhat/ezbake.spec.erb#L133-L139", "created": "2015-03-06T12:27:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "@josh Though, re-reading the ticket for the 3rd time, I realize there's actually two issues.  One is the actual user and group creation.  The second is making sure all of the new paths have the correct user and group ownership and file permissions.  I'll chase this up and update the ticket with what exactly is required for AIO.", "created": "2015-03-06T14:03:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "> The second is making sure all of the new paths have the correct user and group ownership and file permissions.\n\nThis second chunk of work was confirmed in the AIO standup today.", "created": "2015-03-09T18:01:00.000000"}, {"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "The linked PRs update the packaging to include the application data dir (/opt/puppetlabs/server/data/$project), and update the pid dir with permissions applied for the app user and group.\n\nAlso included is an update to puppet-server to correctly set permissions on the ssldir", "created": "2015-03-10T17:35:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "ezbake PR rebased and merged.  SERVER-414 will update puppet-server to use ezbake 0.3.0 rather than a snapshot.  Once SERVER-414 is merged, the puppet-server PR here will get merged and then we should be good to go.", "created": "2015-03-12T15:01:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "puppet-server PR rebased and merged.", "created": "2015-03-12T17:38:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "*Release Notes*\n\nPuppet Server 2.0.0 creates the user and group the service runs as.  In previous versions, puppetserver relied on the underlying puppet package to create the user and group.  The overall result and behavior should be equivalent from the end user point of view.", "created": "2015-04-13T12:41:00.000000"}], "components": [], "created": "2015-02-11T18:29:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1b2b080a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp2u7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Had to clean up hacks for AIO"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Release Engineering"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_64509414_*|*_1_*:*_1_*:*_516916336_*|*_10007_*:*_1_*:*_172944570_*|*_3_*:*_1_*:*_106767002_*|*_5_*:*_1_*:*_48725949249_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1702283981"}], "description": "In puppet-agent packaging, the 'puppet' user will no longer be created. \n\nWe will be moving the user/group creation to the puppet-server packaging.\n\nIn addition, the user will be standardized to 'puppet' across both FOSS and PE. ", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15818", "fixedVersions": ["SERVER 2.0.0"], "id": "15818", "issueType": "Improvement", "key": "SERVER-358", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Fixed", "resolutionDate": "2015-03-13T11:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Moving 'puppet' user creation to puppet-server packaging", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The specific issue we run into is that if puppet apply, resource, agent, etc runs as root, then it can create subdirectories in $vardir that the master uses. If the former creates the subdirectories, then they can end up owned by root, and not writable by puppet. So later when the puppetserver starts, it will be unable to save a report or store a file in the file bucket. For example, the following directories in /opt/puppetlabs/agent/cache have the wrong permissions:\n\n{noformat}\n        drwxr-x---.  2 root   puppet    6 Feb 11 12:07 bucket\n        drwxr-x---.  6 root   puppet 4096 Feb 11 12:09 reports\n        drwxr-x---.  2 root   puppet    6 Feb 11 12:07 server_data\n{noformat}\n\nGuess how many times we've tried to fix this issue using a shared vardir:\n\nhttps://puppet.atlassian.net/browse/PUP-3156\nhttps://puppet.atlassian.net/browse/PUP-3163\nhttps://puppet.atlassian.net/browse/PUP-3459\n", "created": "2015-02-11T23:44:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I noticed that hiera's documentation makes reference to $vardir, recently [updated|https://github.com/puppetlabs/hiera/pull/244/files#diff-04c6e90faac2675aa89e2176d2eec7d8R213] to account for AIO paths:\n\n{code:ruby}\n# load the facts for example.com\nscope = YAML.load_file(\"/opt/puppetlabs/puppet/cache/yaml/facts/example.com.yaml\").values\n{code}\n\nThe docs assume that {{yamldir}} is under the agent's {{vardir}}. \n\nI don't believe any of the hiera code relies on the agent's {{vardir}}, as {{Hiera::Util::var_dir}} is mapped to [{{/etc/puppetlabs/code}}|https://github.com/puppetlabs/hiera/blob/master/lib/hiera/util.rb#L34]. But something to keep in mind as server side changes could affect hiera.", "created": "2015-02-15T14:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Maybe we should change that in the docs?  Who would own that?  [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd]?", "created": "2015-02-17T13:46:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I actually submitted a PR already to fix hiera docs. I was just making the point that changing the master's vardir could have implications on hiera. Not sure if it actually will though.", "created": "2015-02-17T15:09:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "mvaster-var-dir updated to /opt/puppetlabs/server/data/puppetserver as of the merge into master from SERVER-369.\n\n{{\"master-var-dir\":\"/opt/puppetlabs/server/data/puppetserver\"}}", "created": "2015-02-26T18:29:00.000000"}], "components": [], "created": "2015-02-11T18:07:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63e0fa3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb73:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_23710333_*|*_5_*:*_1_*:*_49993332851_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_544055865_*|*_10006_*:*_2_*:*_729592738"}], "description": "In working through several permissions issues with [~accountid:63d40628f6e1b543161789a7], it has become apparent that separating the master and agent vardirs would be a good thing. As puppetserver already has the facility to do this via master-var-dir, it should be updated to point to /opt/puppetlabs/server/data/puppetserver (according to the layout outlined in PUP-3809).", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17240", "fixedVersions": ["SERVER 2.0.0"], "id": "17240", "issueType": "Bug", "key": "SERVER-357", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2015-02-26T18:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update master-var-dir to point to /opt/puppetlabs/server/data/puppetserver", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We should probably look into writing some sort of acceptance test for this as part of this work, since it's not really clear when this might have broken.", "created": "2015-02-17T17:57:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Ticket for writing an acceptance test: SERVER-390", "created": "2015-02-24T17:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Didn't see any failures in recent CI that seem to be related to this - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/197 - so moving to testing.", "created": "2015-03-03T18:26:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated in 1.0.4.SNAPSHOT.2015.03.04T0145.", "created": "2015-03-04T15:13:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Captured in Test Fail as https://testrail.ops.puppetlabs.net/index.php?/cases/view/64185", "created": "2015-03-26T16:44:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "*Release Notes*\n\nPuppet Server 2.0.0 fixed a bug that existed in previous versions where the {{puppetserver foreground}} command would not produce any output, making it appear as if the command had not started or was stalled.  The foreground command produces debugging output in 2.0.0.", "created": "2015-04-13T12:46:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-11T17:54:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d2e388c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyycsv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_615611490_*|*_1_*:*_1_*:*_518661034_*|*_10007_*:*_1_*:*_93376875_*|*_3_*:*_1_*:*_8504918_*|*_5_*:*_1_*:*_2250523898_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_74812035_*|*_10006_*:*_1_*:*_493791629"}], "description": "Running {{puppetserver foreground}} produces no output in the terminal (console).  This is not expected, I'd hope to see at least something, like \"Puppet server X.Y.Z ready to rock!\"\n\nI was able to get output by passing the --debug flag, but then it's nearly overwhelming since there's a ton of debug output.\n\nI too a quick stab at fiddling with {{-Dlogappender=STDOUT}} variations to no avail, so am filing this and moving on.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16923", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "16923", "issueType": "Bug", "key": "SERVER-356", "labels": ["debug", "logging", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-03-04T15:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver foreground produces no output", "timeSpent": "PT0S", "updated": "2015-04-13T12:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Closing this epic since all of the child tickets are closed, and the release has shipped.", "created": "2015-04-30T11:08:00.000000"}], "components": [], "created": "2015-02-11T16:44:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@574102c6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Green: Puppet Server 1.0.8 / PE 3.8"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywus7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_586416860_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_6129001688"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15250", "fixedVersions": ["SERVER 1.0.8"], "id": "15250", "issueType": "Epic", "key": "SERVER-355", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-04-30T11:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "timeSpent": "PT0S", "updated": "2015-10-22T08:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I suppose this is just stuck in \"Ready for CI\" until we are actually getting green CI runs.", "created": "2015-02-13T16:57:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This appears to be medium risk.  QA will test this, but it doesn't need any automated testing.  When this clears CI, I expect this will take 15 minutes or so to validate.\n\n[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Can you propose a method for me to generate a puppet log entry that would have been lost previous to this PR?", "created": "2015-03-10T13:35:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] - Off the top of my head ... I have no idea.  [~accountid:63d40628f6e1b543161789a7] - any chance you remember what you ran into when we uncovered this?  Maybe something QA could use to easily verify the fix?", "created": "2015-03-10T16:15:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] if puppetserver debugging is enabled, and you start the puppetserver, you should see messages in the puppetserver log coming from puppet ruby code like you would if you were running {{puppet master --no-daemonize --debug}}, e.g.\n\n{noformat}\nDebug: Using settings: adding file resource 'confdir': 'File[/Users/josh/.puppet]{:path=>\"/Users/josh/.puppet\", :ensure=>:directory, :loglevel=>:debug, :links=>:follow, :backup=>false}'\n{noformat}", "created": "2015-03-10T16:57:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed in Puppet Server aka PE Green Team with Josh Cooper and Nate Wolfe.  We aren't using the puppet master command above.\n\nI validated that puppet agent -t --server <serverFQDN/CertName> results in new lines in the /var/log/puppetlabs/puppetserver/puppetserver.log file.", "created": "2015-03-12T17:55:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Marked QA Reviewed.  We aren't writing new testing for this medium risk issue.  Resolved.\n", "created": "2015-03-12T17:55:00.000000"}], "components": [], "created": "2015-02-11T16:28:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e91de3a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3kv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2257591665_*|*_1_*:*_1_*:*_42410_*|*_10007_*:*_1_*:*_81732709_*|*_3_*:*_1_*:*_71307303_*|*_10009_*:*_1_*:*_16710_*|*_5_*:*_1_*:*_48789408423_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_96492694"}], "description": "[~accountid:63d40628f6e1b543161789a7] and [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] have reported that Puppet's debug logging does not seem to show up under Puppet Server.\n\nThis is likely caused by a recent change to Puppet - you can now set the log level in settings.  See https://github.com/puppetlabs/puppet/pull/3346\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] found that replacing\n{code}\nPuppet::Util::Log.level = :debug\n{code}\nwith\n{code}\nPuppet[:log_level] = \"debug\"\n{code}\n seemed to fix the issue.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16922", "fixedVersions": ["SERVER 2.0.0"], "id": "16922", "issueType": "Bug", "key": "SERVER-354", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2015-03-12T17:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "some of Puppet's log messages seem to be lost", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:6243b143f3824d006a579629] how many cores does your machine have, and what are you using as your max heap size for Puppet Server?  How many agents do you have checking in?\n\nOften the CPU load indicates that a lot of garbage collection is going on, and in some cases simply increasing the max heap size will alleviate this kind of issue?", "created": "2015-02-10T18:56:00.000000"}, {"author": "6243b143f3824d006a579629", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] The machine has 6 cores, Xmx is 512m and this services 16 agents.  What would you recommend for Xmx?  What's the best way to monitor the GC.  I'm familiar w/ the PuppetDB dashboard which is awesome.", "created": "2015-02-10T21:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:6243b143f3824d006a579629] if you're only servicing 16 agents and they're running on a regular 30-minute interval, your best bet is probably to decrease the number of JRuby instances.  You can do this via the 'max-active-instances' setting described here: https://docs.puppetlabs.com/puppetserver/1.0/configuration.html#puppetserverconf\n\nFor 16 agents you can probably get away with 2 JRuby instances, and then you probably don't need to increase your heap size.  In current versions of Puppet Server the default is (num cores + 2), which is 8 in your case... and 512M heap is probably too low for 8 JRubies.\n\nIn a future release we will probably change that default to something that's not based on your # of cores, since it has implications on RAM requirements.  We're also working on improving the JRuby instance management to require less RAM overall, and to behave more gracefully (even if it involves a service shutdown) if we get into a state like the one you're describing.\n\nAs for monitoring the GC, probably the best tool I can recommend is 'jvisualvm', which ships with the JDK.  In order to use it you'd need to add some JVM args to open up a JMX port", "created": "2015-02-11T08:30:00.000000"}, {"author": "6243b143f3824d006a579629", "body": "Thanks [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]!  I've got a good 30+ hours of running now with the only change of max-active-instances=2 and things have been as smooth as a snake in a barrel of butter ever since.  I haven't yet done any GC monitoring yet, but hope to when I get a chance to do more tuning.  Thank you for all the excellent details above and especially for making puppet-server (IIUC, it's your baby) -- it's sooo much nicer to set up than the old Master.\n\nI was discussing my situation and your recommendation with a colleague afterwards.  I had the idea that it would be nice to have some general guidelines for N agents running at M-minute intervals yielding a recommended X JRuby instances.  As I briefly pondered it something \"felt\" complicated about a relatively simple sounding problem.  He brought up http://en.wikipedia.org/wiki/Erlang_distribution as a way to solve that very problem.  I don't know if you are aware of this or how it might be integrated into either the configuration or documentation, but thought I'd share just the same.  Enjoy and thanks again!", "created": "2015-02-12T16:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:6243b143f3824d006a579629] thanks for the reply and the kind words!  We are definitely planning on writing up a 'tuning guide' soon, and improving some of the default values as well.  Thanks for the Erlang distribution link too--will check it out!\n\nI'll live this ticket open for now, as a reminder to myself until I have time to create a more detailed ticket about tuning docs.", "created": "2015-02-12T16:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Created SERVER-379 to capture the need for some better docs on tuning.", "created": "2015-02-23T17:21:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-10T18:06:00.000000", "creator": "6243b143f3824d006a579629", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c9c8d76"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyybm7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1120568957_*|*_6_*:*_1_*:*_0"}], "description": "I've come home several times to find the CPU fans spinning hard on the machine that hosts my Puppet Server.  Logging in I will see a load average of 6 or better.  If I restart the puppet-server.service things quiet down and the load average will drop to ~1, even if agents subsequently hit it.  It will stay good for several hours... until I turn my back on it.\n\nI'm not sure what more I can provide.  Where should I investigate next?", "environment": "Fedora 20 with puppet-server-3.7.4-1.fc20.noarch from the PuppetLabs repo.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15593", "fixedVersions": [], "id": "15593", "issueType": "Bug", "key": "SERVER-353", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6243b143f3824d006a579629", "resolution": "Duplicate", "resolutionDate": "2015-02-23T17:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "high CPU load until service restarted", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]  Ping, I think the decision needed here is related to a product decision as per our discussion over RE-3975 and SERVER-348.", "created": "2015-02-10T12:02:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Ping, I think this is a potential big issue and is definitely related to Puppet 4.0 changes.", "created": "2015-02-10T12:03:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:623c12b6ee1b5a0070293582] I'm not sure I follow this comment {quote}The puppet-agent package, however, has made an assumption that the puppet master service will not be running{quote}", "created": "2015-02-16T22:09:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}\nThe puppet-agent package, however, has made an assumption that the puppet master service will not be running\n{quote}\n\n[~accountid:63d40628f6e1b543161789a7] I'm not sure I follow it either.  I think I was referring to the implication that follows from all of the AIO work being focused on only the agent, not on the master.\n\nWith this said, I don't have a clear and concrete example that illustrates, \"an assumption that the puppet master service will not be running.\"", "created": "2015-02-17T12:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "IMO I think we need the dependency in order to get the Ruby code.  My impression was that this was more of a concern about the naming being weird than about the actual technical neccessity for the dependency.", "created": "2015-02-17T12:39:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yes, it's mostly about the naming being weird, but it is also about the technical aspects of the dependency.  There is clear evidence that the decision making surrounding the puppet-agent package is narrowly focused on agent only.  This narrow focus, in turn, has caused technical complications when integrating with puppet server.  Specifically, the decision to use {{/etc/puppetlabs/agent}} was made soundly with an agent-only scope, but it is clearly wrong when considering the real world context of agent and master usages.\n\nThis ticket is about the need to keep track of these conflicts attributable to puppet-server depending on something that's not taking in account puppet-server needs and context.", "created": "2015-02-17T12:49:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "The {{confdir}} was changed to {{/etc/puppetlabs/puppet}} at some point. Does this eliminate the concerns you had?", "created": "2015-02-17T15:03:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:63d40628f6e1b543161789a7] Yes, I have no concrete concerns.  On a vague existential concern that puppet-server depending on puppet-agent is going to bite us in the ass.", "created": "2015-02-17T16:27:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "This ticket isn't actionable from the perspective of the Agile board, next steps are for me to work with Chris and Aaron to bring this to Arch.  (As discussed IRL during planning session on 2015-02-18)", "created": "2015-02-19T12:16:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "When this came up in the planning meeting, we mentioned possibilities of:\n\n# Depending on a puppet-common package\n# Having puppet-server contain a redundant copy of the whole Puppet code\n\nThe second option sounds really un-dry, but now I'm thinking: in a future where we support multiple API versions at once to support easy, comfortable agent upgrades, we could use separate copies of the Puppet code in separate jruby interpreters to serve those incompatible API routes. And that might let us accelerate the process of slimming down the Puppet code, and make it easier to have those API upgrades do disruptive things like change the way the language works or the entire catalog format. \n\nJust wanted to put that out there. ", "created": "2015-02-19T12:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c08e1562ab90069f8aed4] yes, we've already had several discussions with RE about introducing 'legacy' puppet packages in the future.  These would be server-only, and more than one of them could be installed side-by-side, and we'd do just what you're getting at with the JRuby interpreters.\n\nThe discussions that we've had on that front are somewhat orthogonal to this ticket, though.  We'd been assuming that the \"main\"/\"latest\" ruby code would still be shared with the agent, either the way we're doing it now, or via a package like 'puppet-common'.\n\nWe could definitely make a more stark separation between master/agent ruby code, and I think the conversation is definitely worth having post-4.0.", "created": "2015-02-19T18:34:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-10T12:01:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b6bf2ea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xrj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_623706476_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_88004952_*|*_10005_*:*_1_*:*_57018786077"}], "description": "With the AIO changes, which are scoped and focused strictly on the behavior or the puppet-agent, and the changes to separate code and configuration, which are focused on the master service running in puppet-server, there are conflicting concerns.\n\nFor example, the new confdir for the agent is {{/etc/puppetlabs/agent}}.  Puppet-server previously dependend on the puppet package, which contained both the master and agent services.  With the puppet package going away, the puppet-server dependencies have been updated to puppet-agent.  The puppet-agent package, however, has made an assumption that the puppet master service will not be running and the package is agent-only.  This is not the case with puppet-server because we load all of the master service code from the agent package.\n\nWe need to decide if puppet-server will no longer depend on the puppet-agent package in order to serve up the master service.\n\nIf we decide this, we need to figure out how to accomplish this.\n\n-Jeff", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16684", "fixedVersions": [], "id": "16684", "issueType": "Task", "key": "SERVER-352", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Incomplete", "resolutionDate": "2016-12-09T16:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider removing puppet-server's dependency on puppet-agent", "timeSpent": "PT0S", "updated": "2016-12-09T16:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "This is closely related to SERVER-347 in that troubleshooting this SSL issue requires running the tests against both branches.  They're different in that it may not be possible yet to setup an automated job.", "created": "2015-02-10T17:51:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I've run it manually a number of times now.  There are definitely issues related to the {{master}} service selecting the wrong configuration directory, which prevent the rest of the acceptance test suite from executing.  This makes it difficult (impossible) to scope the full set of changes we'll need to make in puppet-server since we can't get past the pre_suite in the acceptance runs.\n\nI'm going to go ahead and resolve this for the time being.  As things settle down with the AIO puppet-agent we'll need to integrate these two branches together again.", "created": "2015-02-11T18:26:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-10T11:43:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e1470b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyaxb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11978_*|*_3_*:*_1_*:*_90604330_*|*_5_*:*_1_*:*_51289579883_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_19959296"}], "description": "Talking with [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] and [~accountid:63d40628f6e1b543161789a7], we've come to understand the puppet-server acceptance tests are currently executing against a fixed version (0.2.1) of the puppet-agent packages.\n\nSimilarly, the puppet acceptance tests are currently executing against a fixed version of the puppet-server packages.\n\nWe currently have no acceptance tests that are running against the integrated combination of puppet-server master with puppet-agent AIO changes.  This is a problem because we don't yet know what failures and work will result in the outcome of merging in PUP-3809 into puppet.\n\nThis task is to capture the work necessary to create a parameterized job (or pipeline?) that is capable of taking Nate's branch https://github.com/puppetlabs/puppet/pull/3556 as a parameter and integrating that with a parameterized build of puppet-server, e.g. using PACKAGE_BUILD_VERSION", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15247", "fixedVersions": [], "id": "15247", "issueType": "Task", "key": "SERVER-351", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Incomplete", "resolutionDate": "2015-02-11T18:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Run puppet-server master against puppet AIO packages", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "Yeah, this'd be nice, especially if you're stringing a script together to do your code deploys. \n\nRelated question: does it make sense to automatically add the master's own certificate to the admin-api certificate whitelist? (Which is currently empty by default.) Because if we did that, the flush command could just ping the API endpoint with the master's key, and anything able to act as the `puppet` user (e.g. a code deploy cron job) would be able to run it. \n\nNever mind, there's probably a much better way to do that. It's what I wired up for my vagrant environment, though.\n", "created": "2015-03-09T17:20:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "The http endpoint is pretty easy to hit even with curl.", "created": "2019-01-16T15:14:00.000000"}], "components": [], "created": "2015-02-10T11:31:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14db170"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz08fr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_627865655_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_123455933137"}], "description": "Add another CLI tool to Puppet Server that makes the HTTP request to flush the environment cache.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16919", "fixedVersions": [], "id": "16919", "issueType": "Task", "key": "SERVER-349", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Fix", "resolutionDate": "2019-01-16T15:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add a CLI to flush the environment cache", "timeSpent": "PT0S", "updated": "2019-01-16T15:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] FYI, I added this to the Puppet 4.0 changes.", "created": "2015-02-10T10:29:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "puppetserver.conf https://github.com/puppetlabs/puppet-server/blob/master/resources/ext/config/conf.d/puppetserver.conf\n\nmaster-conf-dir has the wrong path", "created": "2015-02-10T11:56:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "We haven't yet updated Puppet Server with the new code/conf changes, so these outputs are expected (but wrong/old).", "created": "2015-02-10T12:55:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "This affects the default puppetserver.conf, packaging and acceptance:\n\n{noformat}\nacceptance/config/beaker/options.rb:  \"puppetpath\" => \"/etc/puppetlabs/agent\"\nresources/ext/config/conf.d/puppetserver.conf:    master-conf-dir: /etc/puppetlabs/agent\nresources/ext/ezbake.conf:                          \"echo \\\\\\\"[master]\\\\\\\"                               > /etc/puppetlabs/agent/puppet.conf\"\n...\n{noformat}", "created": "2015-02-16T15:37:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Confdir moved to /etc/puppetlabs/puppet in the merge into master from SERVER-369", "created": "2015-02-26T18:28:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-10T10:26:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2dc24009"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb6v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_8130910_*|*_5_*:*_1_*:*_49993402765_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_1072162310_*|*_10006_*:*_3_*:*_331009780"}], "description": "Looking into recent (puppet-server-1.0.3-127-gee34a8f) builds, we're explicitly setting the master service confdir setting to {{/etc/puppetlabs/agent}} in the puppetserver.conf HOCON configuration file.\n\n{code}\n[root@e86e81ly9uizqvt ~]# puppet master --configprint confdir\n/etc/puppetlabs/agent\n[root@e86e81ly9uizqvt ~]# puppet master --configprint ssldir\n/etc/puppetlabs/agent/ssl\n[root@e86e81ly9uizqvt ~]# puppet master --configprint environmentpath\n/etc/puppetlabs/agent/environments\n{code}\n\nAs per RE-3975, we don't yet know what the correct value _should_ be, but we know {{/etc/puppetlabs/agent}} is incorrect.  As a result, I'm marking this ticket as blocked by RE-3975.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16433", "fixedVersions": ["SERVER 2.0.0"], "id": "16433", "issueType": "Bug", "key": "SERVER-348", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-02-26T18:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move confdir to /etc/puppetlabs/puppet", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c12b6ee1b5a0070293582] FYI I just added this to our epic.  Pretty sure we haven't been seeing this in our own acceptance test runs with Nate's puppet-agent, on EL7... so, not sure what to make of it.", "created": "2015-02-10T09:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "On the failing machine mentioned above, I turned on debug-level logging in the puppetserver logback.xml file and saw that the following values from core Puppet were being used:\n\n{noformat}\n2015-02-10 08:44:10,790 DEBUG [p.s.c.puppet-server-config-service] Initializing with the following settings from core Puppet:\n{:ca-name \"Puppet CA: lyvdzg9x0frzq2r.delivery.puppetlabs.net\",\n :hostcrl \"/opt/puppetlabs/agent/cache/.puppet/ssl/crl.pem\",\n :hostprivkey\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/private_keys/lyvdzg9x0frzq2r.delivery.puppetlabs.net.pem\",\n :csrdir \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/requests\",\n :capub \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_pub.pem\",\n :hostcert\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/certs/lyvdzg9x0frzq2r.delivery.puppetlabs.net.pem\",\n :requestdir\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/certificate_requests\",\n :ssl-client-verify-header \"HTTP_X_CLIENT_VERIFY\",\n :dns-alt-names \"\",\n :puppet-version \"3.7.4\",\n :cacert \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_crt.pem\",\n :localcacert \"/opt/puppetlabs/agent/cache/.puppet/ssl/certs/ca.pem\",\n :autosign \"/etc/puppetlabs/agent/autosign.conf\",\n :csr-attributes \"/etc/puppetlabs/agent/csr_attributes.yaml\",\n :ca-ttl 157680000,\n :cakey \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_key.pem\",\n :cacrl \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_crl.pem\",\n :serial \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/serial\",\n :certdir \"/opt/puppetlabs/agent/cache/.puppet/ssl/certs\",\n :cert-inventory\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/inventory.txt\",\n :hostpubkey\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/public_keys/lyvdzg9x0frzq2r.delivery.puppetlabs.net.pem\",\n :ssl-client-header \"HTTP_X_CLIENT_DN\",\n :certname \"lyvdzg9x0frzq2r.delivery.puppetlabs.net\",\n :signeddir \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/signed\",\n :allow-duplicate-certs false}\n{noformat}\n\nI think the reason that the agent is succeeding when connecting to the Ruby Puppet master is that the CA cert and related files that the Ruby Puppet master is using comes from under {{/etc/puppetlabs/agent/ssl}} whereas puppetserver is using files from under {{/opt/puppetlabs/agent/cache/.puppet/ssl}}.  The CA cert that the agent has already downloaded was from a run against the Ruby Puppet master/CA and so when the agent tries to connect to the puppetserver master and gets a server certificate not issued from that same CA, the certificate verification would fail.\n\nI think we need to look into why there is an apparent discrepancy between the locations that the Ruby master/CA and puppetserver are deriving for {{ssl-dir}}.\n\n[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], [~accountid:623c12b6ee1b5a0070293582] - what are your thoughts on this?", "created": "2015-02-10T09:56:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "My thoughts are that this is related to the manner in which Puppet changes the behavior of default settings based on the EUID of the process, though I'm not yet 100% certain.\n\nIn any event I'll dive into this and figure out what's going on.\n\nThanks for the detailed report, [~accountid:63d40628f6e1b543161789a7].", "created": "2015-02-10T10:07:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Talking with Josh, the plan of action to get this resolved is to wait on puppet-agent 0.3.1 packages from Haus and then execute our puppet-server acceptance tests integrated with puppet-agent 0.3.1 in the master service.  This will result in a puppet-server that is using puppet code that's close to their \"master\" branch and includes the changes inside of the puppet-agent aio branch.\n\nOnce we're in this situation, we'll have a clear idea of what puppet-server integrated with puppet-agent looks like, and how good or bad acceptance tests are.", "created": "2015-02-10T17:14:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "0.3.1 should land at: http://builds.delivery.puppetlabs.net/puppet-agent/0.3.1/\n\nThe puppet-agent package can be integrated when running acceptance tests from a local topic branch using something like:\n\n{code}\n#! /bin/bash\nset -x\n: ${PACKAGE_BUILD_VERSION:=\"2.0.0.SNAPSHOT.2015.02.10T1335\"}\n: ${PUPPET_BUILD_VERSION:=\"0.3.1\"}\nexport PACKAGE_BUILD_VERSION\nexport PUPPET_BUILD_VERSION\n\nbe beaker \\\n  --config acceptance/config/beaker/jenkins/el-7-x86_64-mdca.cfg \\\n  --type aio \\\n  --keyfile ~/.ssh/id_rsa-acceptance \\\n  --tests acceptance/suites/tests \\\n  --pre-suite acceptance/suites/pre_suite/foss/ \\\n  --options acceptance/config/beaker/options.rb \\\n  --load-path acceptance/lib \\\n  --helper acceptance/lib/helper.rb \\\n  --post-suite acceptance/suites/post_suite \\\n  --preserve-hosts always\n{code}", "created": "2015-02-10T17:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "0.3.1 is available at http://builds.delivery.puppetlabs.net/puppet-agent/0.3.1/  Moving to unblocked.", "created": "2015-02-10T17:48:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "OK, I've triaged this pretty deeply and puppet-server is definitely using the wrong configuration directory when integrated with puppet-agent 0.3.1.\n\n{code}\n/opt/puppetlabs/agent/cache/.puppet/ssl/certs/ca.pem\n/opt/puppetlabs/agent/cache/.puppet/ssl/ca/serial\n/opt/puppetlabs/agent/cache/.puppet/ssl/ca/inventory.txt\n/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_pub.pem\n/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_key.pem\n/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_crt.pem\n/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_crl.pem\n/opt/puppetlabs/agent/cache/.puppet/ssl/crl.pem\n{code}\n\nThis is likely caused by the run_mode changes in puppet core incorrectly thinking it's starting up as a library instead of as the {{master}} service.\n\nGiven the state of flux of the puppet-agent packages, I'm not sure how to action this right now.", "created": "2015-02-11T18:21:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:623c12b6ee1b5a0070293582] are you sure that you installed puppet-agent 0.3.1? I ask because that version does not contain any run_mode changes. I saw the behavior you are seeing when I tested puppetserver and the latest version of puppet-agent build off of nate's branch (which does have run_mode changes), and that's why we have pinned puppet-agent to 0.3.1 in our acceptance tests.", "created": "2015-02-12T00:21:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}Jeff McCune are you sure that you installed puppet-agent 0.3.1?{quote}\n\n[~accountid:63d40628f6e1b543161789a7] Apologies, I manually installed puppet-agent 0.3.2 in an effort to see if there are things I could work to fix in puppet-server.", "created": "2015-02-12T10:45:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "[~accountid:623c12b6ee1b5a0070293582] no worries, thanks for confirming. I'm looking into the run_mode/settings issue, which I think is what you're running into.", "created": "2015-02-12T11:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:63d40628f6e1b543161789a7] I'm out of date on the latest w/rt paths, but I thought that `codedir` was going to end up being relative to a parent dir like `puppetdir` or similar, in which case the change we'd need to make would be to explicitly pass `puppetdir`, and then let `codedir` assume its default value from there.  Is that no longer accurate?", "created": "2015-02-17T13:35:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "There is not currently a {{puppetdir}} setting. If we did, it would point to {{/etc/puppetlabs}} and yet contain a {{puppet}} subdirectory. I think that would be very confusing and misleading. Users could easily assume {{$puppetdir == /etc/puppetlabs/puppet}}, which is not true.\n\nIf we create a new setting for {{/etc/puppetlabs}} then users (puppetserver, config.ru, webrick) need to specify the new setting and remove the confdir setting, so that it defaults to the correct place. That seemed a bit magical to me...\n\nAlternatively, if there is just a new {{codedir}} setting, it's independent from {{confdir}} and explicit. That said, I'm happy to add a new setting for the root {{/etc/puppetlabs}} directory if that's what everyone wants. I'd prefer to do that after the AIO changes are merged into master though.\n\nAnd now that I write this I see the confluence page says \"Puppet puppetdir will be /etc/puppetlabs/puppet\" yet it is not the *current* source of truth, and I have been ignoring it. I'm going to create a single source of truth in PUP-4026 because this is bananas.", "created": "2015-02-17T23:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm fine w/no 'puppetdir'.  Just wasn't aware that we'd changed that.", "created": "2015-02-18T07:36:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "This should no longer be an issue with the AIO changes merged into master.  Puppet server is correctly using /etc/puppetlabs/puppet/ssl and sharing this directory with the agents.", "created": "2015-02-26T18:21:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Specifically, this was resolved by having postinstall execute [\"/opt/puppetlabs/puppet/bin/puppet config set --section master codedir /etc/puppetlabs/code\"|https://github.com/puppetlabs/puppet-server/commit/f469efe21f9c677600a2f203b695da4f079c5db1#diff-ed578ab4ea8fc53339bbd79b7b88cca2R7] for both redhat and debian packages.", "created": "2015-02-26T18:40:00.000000"}], "components": [], "created": "2015-02-10T01:13:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@270a017"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp52v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_420695916_*|*_3_*:*_2_*:*_108837036_*|*_4_*:*_1_*:*_4025_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_545780899_*|*_10006_*:*_2_*:*_368767288"}], "description": "Update:\n\npuppet-server needs to initialize puppet with {{--codedir /etc/puppetlabs/code}} similar to how it handles vardir and confdir. Since puppet-server doesn't specify this setting, and it runs as non-root, the codedir will default to {{~/.puppet/code}}, but {{$HOME}} for the puppet user is in vardir resulting in puppet-server trying to access {{/opt/puppetlabs/agent/cache/.puppet/code}} (using an older version of vardir)\n\nAlso note several files/directories currently in {{$confdir}} need to be moved to {{$codedir}}:\n\n{noformat}\n    environmentpath: /etc/puppetlabs/code/environments\n    distmoduledir: /etc/puppetlabs/code/modules\n    hieraconf:     /etc/puppetlabs/code/hiera.yaml\n    hieradatadir:  /etc/puppetlabs/code/hieradata\n{noformat}\n\nOriginal:\n\nTrying to run AIO acceptance using the puppet-server package from:\n\nhttps://gist.github.com/joshcooper/283cc84a1b45b57d5a8e#file-gistfile1-txt-L966\n\nDuring the acceptance setup, we execute the ruby puppet master and verify that all of the agents can download their SSL cert, and make an authenticated SSL connection. This works fine: https://gist.github.com/joshcooper/283cc84a1b45b57d5a8e#file-gistfile1-txt-L1578-L1618\n\nHowever, as soon as the puppet-agent package tries to connect to the master, it fails with:\n\n{noformat}\n[root@pb5dl7xbpawqosr ~]# puppet agent -t --server lyvdzg9x0frzq2r.delivery.puppetlabs.net\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: SSL_connect returned=1 errno=0 state=unknown state: certificate verify failed: [unable to get local issuer certificate for /CN=lyvdzg9x0frzq2r.delivery.puppetlabs.net]\nInfo: Retrieving pluginfacts\nError: /File[/opt/puppetlabs/agent/cache/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=unknown state: certificate verify failed: [unable to get local issuer certificate for /CN=lyvdzg9x0frzq2r.delivery.puppetlabs.net]\n{noformat}\n\nThis error is coming from openssl. If I try to execute openssl on the agent host using the CA cert that the agent has already downloaded, it fails in the same way, verify error 20:\n\n{noformat}\n[root@pb5dl7xbpawqosr ~]# openssl s_client -connect lyvdzg9x0frzq2r.delivery.puppetlabs.net:8140 -CAfile /etc/puppetlabs/agent/ssl/certs/ca.pem\nCONNECTED(00000003)\ndepth=0 CN = lyvdzg9x0frzq2r.delivery.puppetlabs.net\nverify error:num=20:unable to get local issuer certificate\nverify return:1\ndepth=0 CN = lyvdzg9x0frzq2r.delivery.puppetlabs.net\nverify error:num=27:certificate not trusted\nverify return:1\ndepth=0 CN = lyvdzg9x0frzq2r.delivery.puppetlabs.net\nverify error:num=21:unable to verify the first certificate\nverify return:1\n...\n    Verify return code: 21 (unable to verify the first certificate)\n---\n{noformat}\n\nIn particular, note that the cert at depth 0 is the server's certificate, not the CA cert.\n\nHowever, if I stop the puppet-server, and run the ruby puppet master:\n\n{noformat}\n[root@lyvdzg9x0frzq2r ~]# puppet resource service puppetserver ensure=stopped\nNotice: /Service[puppetserver]/ensure: ensure changed 'running' to 'stopped'\nservice { 'puppetserver':\n  ensure => 'stopped',\n}\n[root@lyvdzg9x0frzq2r ~]# puppet master --no-daemonize\nNotice: Starting Puppet master version 3.7.4\n{noformat}\n\nThe openssl on the agent works as expected:\n\n{noformat}\n[root@pb5dl7xbpawqosr ~]# openssl s_client -connect lyvdzg9x0frzq2r.delivery.puppetlabs.net:8140 -CAfile /etc/puppetlabs/agent/ssl/certs/ca.pem\nCONNECTED(00000003)\ndepth=1 CN = Puppet CA: lyvdzg9x0frzq2r.delivery.puppetlabs.net\nverify return:1\ndepth=0 CN = lyvdzg9x0frzq2r.delivery.puppetlabs.net\nverify return:1\n...\n    Verify return code: 0 (ok)\n---\n{noformat}\n\nNote that the ruby puppet master is sending the CA cert at depth 0, and the server at depth 1.\n\nBoth agent and master are rhel7 x86_64 with selinux enabled.\n\nI'm not 100% sure this is a puppet-server issue, but it seems likely given the different cert chains.\n\nAlso note that AIO started testing against a new puppet-server promoted build in order to pick up the net-tools dependency. This may have introduced a regression in the puppet-server's SSL code.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16085", "fixedVersions": ["SERVER 2.0.0"], "id": "16085", "issueType": "Bug", "key": "SERVER-347", "labels": ["AIO", "updated_release_notes"], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2015-02-26T18:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Specify codedir similar to confdir and vardir", "timeSpent": "PT0S", "updated": "2015-12-30T16:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:1577af4b-80df-445b-a17c-f09b2ef915d2", "body": "To me it looks like this bug produced by SERVER-85 prohibits an CA architecture like this:\n\n{code}               +------------------------+\n               |                        |\n               |  self-signed Root CA   |\n               |                        |\n               +-----------+------------+\n                           |\n                           |\n                           v\n               +------------------------+\n               |                        |\n               |    Intermediate CA     |\n               |                        |\n               +------+----------+------+\n                      |          |\n           +----------+          +------------+\n           |                                  |\n           v                                  v\n  +-----------------+                +----------------+\n  |                 |                |                |\n  | Master SSL Cert |                | Agent SSL Cert |\n  |                 |                |                |\n  +-----------------+                +----------------+{code}\n\nWhich is one CA architecture described here: https://docs.puppetlabs.com/puppet/latest/reference/config_ssl_external_ca.html#option-2-single-intermediate-ca\nWhich itself is linked on the Puppet Server: External CA Configuration https://docs.puppetlabs.com/puppetserver/latest/external_ca_configuration.html\n\nIs that the case?\nWhich would make this bug a blocker for me, as I'm currently trying to setup such an CA architecture with Puppet 4: https://groups.google.com/forum/#!topic/puppet-users/qidVk7Vj5a0\n", "created": "2015-07-03T04:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Presuming that you had followed all of the instructions in https://docs.puppetlabs.com/puppetserver/latest/external_ca_configuration.html, including https://docs.puppetlabs.com/puppetserver/latest/external_ca_configuration.html#disabling-the-internal-puppet-ca-service, I don't think this particular issue would have anything to do with the problem that you are describing.  The code added in SERVER-85 which synchronizes the \"cacrl\" file to the \"hostcrl\" file would only be executed when the \"real\" CA service -- {{puppetlabs.services.ca.certificate-authority-service/certificate-authority-service}} -- is enabled in the {{bootstrap.cfg}} file.  When the \"disabled\" CA service, however, is enabled instead -- {{puppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service}} -- I would not expect the \"hostcrl\" file to be replaced by the one at the location in the \"cacrl\" setting.\n\nFor this setup, I would have expected that you would have to concatenate the root CA's CRL and intermediate CA's CRL into the file that you have placed at {{/etc/puppetlabs/puppet/ssl/ca/ca_crl.pem}} - in order for the server to validate the certificate for any incoming client against both the root CA's CRL and intermediate CA's CRL.\n\nIn your Google thread, you noted that the {{ssl-crl-path}} was being set to:\n\n{noformat}\nssl-crl-path : /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem\n{noformat}\n\nNote that the example in https://docs.puppetlabs.com/puppetserver/2.1/external_ca_configuration.html#web-server-configuration has:\n\n{noformat}\nssl-crl-path : /etc/puppetlabs/puppet/ssl/crl.pem\n{noformat}\n\nFor consistency, it would probably be better to follow the recommendation in the doc and configure the file to be loaded from {{/etc/puppetlabs/puppet/ssl/crl.pem}}, which is essentially what the {{hostcrl}} setting would use by default.\n\nFrom the nature of the error messages that you mentioned in the Google thread, I wonder if this is an issue on the client rather than on the server.  Those seem like they are being displayed in the output of a Puppet agent and seem more likely to have been written based on the agent's inability to validate the server certificate against its local CRL as opposed to the server being unable to validate the connecting agent against the server's local CRL.  You might take a look at PUP-3788.  Not sure that we've root-caused that one yet, but there seemed to be some suspicion about the Puppet agent's ability to validate the server's certificate against a CRL file bundled with multiple CRLs - that of the root CA and that of an intermediate CA.", "created": "2015-07-08T12:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:71582ab7-ed41-48f8-a53e-545356d7dee4] just curious if you've seen this, as it looks possibly related to the kind of split CRLs you are working on. If it seems like this is no longer an issue, feel free to close.", "created": "2018-07-23T22:25:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "This seems different. I do not quite yet understand the concept of hostcrls and their use (am interested to learn more about the kinds of configurations it supports). Infra CRL would still apply to Puppet CA issued CRL and hence 'could' potentially replace cacrl but thats about it. Not related to hostcrl - whatever relationship hostcrl has with cacrl like being a superset etc stays. ", "created": "2018-07-24T12:20:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I'm pretty sure {{hostcrl}} here just refers to the SSL client's (whether that is e.g. the agent on the MoM, a compile master, or an agent node) copy of the CA CRL. I guess I was mostly wondering if your work making the CRLs separate and more explicit might also clean up the syncing of the CA CRL(s) to the puppet agent that runs on the MoM itself.", "created": "2018-07-24T12:28:00.000000"}, {"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "Are there other scenarios/situations where hostcrl is not a copy of CA crl else not sure I understand its purpose. If CA crl is just the Puppet CA generated CRL that a client/agent sees then it would now see the shorter infra CRL (transparently). ", "created": "2018-07-25T10:47:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This might end up causing a problem for us depending on if we end up leveraging multiple intermediate CAs as part of HA work, though we might also move away from CRLs and/or filesystem storage entirely as part of that work, too. More investigation needed.", "created": "2018-10-30T13:06:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-09T15:32:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17429f86"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xif:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_699391583_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_190335821547"}], "description": "It is \"possible\", although I'm not sure how likely, that the file at the \"hostcrl\" setting referenced by puppet.conf could have multiple CRLs in it.  This could be done to allow clients issued from different CAs to be validated against CRLs which belong to those CAs.  If this were the case, the file at the \"hostcrl\" location might be different from the one at the \"cacrl\" setting, where the latter one would just be the immediate CRL associated with the Puppet CA's certificate and not a list of CRLs.\n\nPrior to the work done for SERVER-85, the CRL that the webserver would use, in the event it were not set explicitly in the webserver.conf file, would be the one controlled by the \"cacrl\" setting.  After the work done in SERVER-85, the CRL that the webserver would use would derive from the \"hostcrl\" setting.  In theory, this would allow for the \"hostcrl\" and \"cacrl\" to represent different files.  The implementation for SERVER-85, however, unconditionally copies the \"cacrl\" file over the top of the \"hostcrl\" file - see retrieve-ca-crl! in certificate_authority.clj.\n\nIn order to support the use case of having multiple CRLs for webserver validation in one file but to update the Puppet CA CRL to pick up newly issued CRLs (e.g., with new client certificate revocations), it would be better for the logic in retrieve-ca-crl! to surgically update just the CRL from the \"cacrl\" file while leaving any other CRLs which might be in the \"localcacrl\" file alone.  The CA Authority Key Identifier (AKI) extension might be a reasonable way to match up the CRLs between the two files as it is intended to be unique per CA.\n\nThe implementation for this wouldn't need to be restricted to the original file at the \"hostcrl\" setting already having multiple CRLs in it before the synchronization were done.  Even if the \"hostcrl\" file had only one file in it to start and the corresponding \"cacrl\" file had one or more CRLs in it that were issued from an AKI that is different than the one in the \"hostcrl\" file, the synchronization process should preserve the original CRL PEM in the \"hostcrl\" file, adding on the CRL PEMs from the \"cacrl\" file.\n\n", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "16084", "fixedVersions": [], "id": "16084", "issueType": "Bug", "key": "SERVER-346", "labels": ["ca"], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2021-02-28T16:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "More surgical update of hostcrl from cacrl setting", "timeSpent": "PT0S", "updated": "2021-02-28T16:52:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ran into this with a user in IRC today.  In the case where you are disabling the Puppet Server CA and trying to use an existing CA from elsewhere, then we try to initialize Jetty via the 'cacert' setting, which points to 'ssl/ca/ca_crt.pem', which won't ever exist on a puppet server instance that has had the CA disabled from the get-go.  Prioritizing it for 1.1.", "created": "2015-03-02T14:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "In this case, did the user not, in addition to disabling the Puppet Server CA, add the {{ssl-ca-cert}} setting to the puppet-server webserver.conf file (documented at https://docs.puppetlabs.com/puppetserver/1.0/external_ca_configuration.html#web-server-configuration)?  The {{ssl-ca-cert}} setting in the webserver.conf, if specified, should trump any CA location settings from puppet.conf.", "created": "2015-03-02T14:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "That was the solution we eventually got him to, once we figured out what was going wrong... and it worked fine.  Just wasn't entirely intuitive to get him there.\n\nEspecially since the first run of the server had the CA enabled, so it generated new (incompatible) certs for him and he had to determine that he needed to go delete them.", "created": "2015-03-02T14:43:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Just for clarification, on the second point above, I wasn't suggesting that the behavior of inferring the location of the CA cert from puppet.conf when the webserver.conf's \"ssl-ca-cert\" setting is not set would go away completely.  Instead, I was suggesting it be changed to:\n\n{noformat}\nif the \"ssl-ca-cert\" setting is defined in the webserver.conf\nthen\n  use the \"ssl-ca-cert\" setting for the CA cert location\nelse\n  use the \"ssl_server_ca_auth\" setting for the CA cert location\n{noformat}\n\nThe implementation in Ruby Puppet settings would allow for a unique value to be specified in the puppet.conf file for \"ssl_server_ca_auth\".  If no explicit value is set for \"ssl_server_ca_auth\", however, Ruby Puppet will return the value that the \"cacert\" puppet.conf setting holds when the value for \"ssl_server_ca_auth\" is queried.\n\n---\n\nI'm not sure if the changes suggested on this ticket would fundamentally improve the problem that the user had encountered.  Or maybe the external CA documentation just needs to be improved?\n\nIdeally, we could move away from this setting override stuff completely and just say that the value from the \"ssl-ca-cert\" setting in the webserver.conf file is the only one that Puppet Server will consider for the CA certificate that it configures the Jetty webserver to use.  One problem with doing that, though, is that the Puppet Server package does not configure a value for \"ssl-ca-cert\" by default and the Jetty SSL server configuration needs to boot with *some* CA certificate.  We went down the path of not configuring \"ssl-X\" values in the default webserver.conf file and, if not later set by the user, inferring them from the puppet.conf file instead because the \"ssl-X\" settings in puppet.conf had support for more *dynamic* values, like interpolating default values based on the certname of the running host, whereas the values in the webserver.conf are all literal.  May not be worth revisiting that part of the implementation until another major version boundary where the SSL settings in webserver.conf can more cleanly be separated from the ones in puppet.conf.", "created": "2015-03-02T18:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Assuming we end up doing this one, it may make sense to try to do some or all of SERVER-346 at the same time.  It is similar in the sense that it refers to a setting that we're not handling the overrides for properly although it is specific to CRLs and has some unique work associated with it - the surgical replacement of a Puppet CRL without affecting other CRLs that may be in the hostcrl file.", "created": "2015-03-02T18:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We can break this to a different ticket if you like, but all that I was suggesting w/rt this user is that if we used 'localcacert' instead of 'cacert', he would not have had a problem.", "created": "2015-03-02T19:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}but all that I was suggesting w/rt this user is that if we used 'localcacert' instead of 'cacert', he would not have had a problem.{quote}\n\nAh, my bad.  Above I had written:\n\n{quote} If no explicit value is set for \"ssl_server_ca_auth\", however, Ruby Puppet will return the value that the \"cacert\" puppet.conf setting holds when the value for \"ssl_server_ca_auth\" is queried.{quote}\n\nThe \"ssl_server_ca_auth\" setting, if not explicitly set, falls back to the \"localcacert\" setting, not the \"cacert\" setting.\n\nSo, I think both points on this ticket would apply to this user:\n\n1) If the user had placed a Custom CA cert at the \"localcacert\" location but had not yet disabled the CA service at startup, the \"localcacert\" should no longer be replaced by the \"cacert\" one -- although a superfluous file would still be generated at the \"cacert\" location because the CA service had not been explicitly disabled yet.\n\n2) Assuming no value for \"ssl_server_ca_auth\" had been set, the Jetty server would now be populated with the cert at the \"localcacert\" location instead of the one at the \"cacert\" location.\n\nGiven the above, I wouldn't see a need for a new ticket to be filed since this one should cover the use case.\n", "created": "2015-03-03T08:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "One more clarifying comment:\n\nI think that the best-case scenario for a user that is wanting to disable the CA is that we can educate them to do an agent run on the box in question before ever starting Puppet Server.  In this case, they will have populated localcacert by pulling down the correct CA cert from the \"real\" CA.  They will have no file at the 'cacert' path.\n\nIf, at this point, they attempt to start Puppet Server w/o disabling the CA, the server should (correctly) fail to start, log an error message about the pem files being an inconsistent state, and Do No Harm in terms of creating bad certs or overriding any existing ones.\n\nIf, next, they modify bootstrap.cfg to disable the CA, then the server will fail to start *again* because the jetty override code is looking in the 'cacert' path and there is no file there.  This is really where we landed with the user in IRC the other day", "created": "2015-03-03T13:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}If, at this point, they attempt to start Puppet Server w/o disabling the CA, the server should (correctly) fail to start, log an error message about the pem files being an inconsistent state, and Do No Harm in terms of creating bad certs or overriding any existing ones.{quote}\n\nI think this highlights some extra work that would need to be done which my description isn't currently capturing.\n\nIf the Puppet Server CA is enabled, the CA will try to generate CA certificates if all of its \"required files\" are missing.  From \nhttps://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.3/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L135-L137, this list includes cacert, cacrl, cakey, cert-inventory, and serial.  In the situation you mentioned here, I think the Puppet Server CA would generate the CA certificate-related files, which ultimately would end up being bogus.\n\nWe could augment this by failing to startup or generate any CA related files if the file at the ssl_server_ca_auth file -- and/or hostcrl? -- file already exists.  If this were the case, we might presume that the user was setting those files up manually in order to do an external CA configuration setup and so erroring out of the install with an informative message could help them clarify intent - e.g., if you're planning an external CA configuration, disable the CA service, otherwise remove these files and restart the puppetserver...\n\n\n\n\n", "created": "2015-03-03T15:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I thought that [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] had put in changes that would cause it to fail fast if any of the master or ca pem files already existed, but not all of them?  That seems like the simplest / best path...\n\nI would like to try really hard to avoid over-complicating this issue since all of this stuff should be going away in the next major anyway...", "created": "2015-03-03T18:57:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. I thought that Nate Wolfe had put in changes that would cause it to fail fast if any of the master or ca pem files already existed, but not all of them?\n\nYes, but not for *all* of the files, only a select few, which can be seen here: https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L132", "created": "2015-03-03T19:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think the key is that it looks like that code breaks up the validation into two separate pieces, one for master, and one for CA.  So that might mean that if the user had done an agent run, and thus had the relevant master certs and localcacert stuff in place, before they ever started puppet server... and then they started it, *with* the CA enabled by mistakey, that it would try to generate the cacert et al, and you'd end up in a super weird state with half 'legit' certs and half bogus (CA).  Which is not awesome.\n\nThat said, the worst of the problems that this user encountered would have been solved by simply replacing the 'cacert' in the jetty override code with 'localcacert'.  That change would take significantly less time than the amount of time that has been invested in this comment thread so far :)  So I'm starting to lean towards just breaking that out into a separate ticket, prioritizing that, and de-prioritizing this... if we don't come around to a pretty simple approach for moving forward on this one soon.", "created": "2015-03-03T21:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}So that might mean that if the user had done an agent run, and thus had the relevant master certs and localcacert stuff in place, before they ever started puppet server...{quote}\n\nI'm a bit confused as to how this would happen exactly.  For master certs / localcacert to be present, wouldn't either the Puppet Server have had to be started (and, therefore, the still enabled Puppet CA service) and agent run against it or someone have manually (i.e., outside of the Puppet agent process) have dropped the \"legit\" certs / localcacert in place on the master's file system?  I suppose how the files get there may not be as important, just wanted to make sure I wasn't missing some critical context here...\n\n{quote}and then they started it, with the CA enabled by mistakey, that it would try to generate the cacert et al, and you'd end up in a super weird state with half 'legit' certs and half bogus (CA). Which is not awesome.{quote}\n\nDefinitely agree with that.  Jetty would end up using a CA cert generated by the Puppet CA to authenticate clients but would be serving up an \"external CA derived\" cert to the client for it to validate.  Most likely, the server would end up rejecting client requests because those clients' certs would not have been issued from the Puppet CA.\n\n---\n\nI've been thinking that the work for this ticket could come down to:\n\n1) Change the implementation of {{retrieve-ca-cert!}} in certificate_authority.clj to not copy the {{cacert}} over the top of the {{localcacert}} if there's already a file at the {{localcacert}} location.\n\nThis would avoid the problem of the user's \"external CA\" cert possibly being stomped by the Puppet CA service if the \"external CA\" cert happened to be populated before the Puppet Server were started and the Puppet CA were still enabled as the master tries to retrieve the CA cert during initialization.  This doesn't solve the issue of the Puppet CA going ahead and initializing its own certs, which isn't ultimately what the user wants to have happen.\n\n2) Change the {{init-webserver!}} function in puppet_server_config_core.clj to, for the case that Jetty webserver ssl settings are being overridden from core Ruby Puppet settings, override the Jetty webserver {{ssl-ca-cert}} setting with the core Ruby Puppet {{ssl_server_ca_auth}} setting.\n\n{{ssl_server_ca_auth}} falls back to {{localcacert}} when {{ssl_server_ca_auth}} is not defined in core Ruby Puppet.  Targeting {{ssl_server_ca_auth}} for the override would allow for a user to configure multiple CA certificates to use when authenticating clients whereas {{localcacert}} only allows for one, presumably that from which the server's own certificate was issued.  {{localcacert}} is an overloaded setting in that it also gets used by the master for authenticating servers when the master makes SSL client calls.  The user should be able to define unique CA certificate stores for {{ssl_server_ca_auth}} (server authenticating clients) vs. {{ssl_client_ca_auth}} (client authenticating servers), where a difference in the content between the two is desired.\n\n3) Add :localcacert to the list of {{required-ca-files}} that certificate_authority.clj uses to decide whether to generate the CA files or not.\n\nIf we did this and a file had already been populated in the :localcacert location but not all of the other CA files had been put in place, we'd fail the service startup with a \"partial-state-error\" - with no potentially confusing CA-related certificate files having been created.  (Although the CA directories would still have been created because that currently happens right before the required files check).\n\nFrom a coupling perspective, it would feel a little odd to do the :localcacert check in the CA service implementation since this feels like more of a master service thing.  I expect this will all get reworked in a future CA service implementation anyway, though.\n\n---\n\nI'd prefer to keep this ticket about #1 and #2 above.  If the simple change for #3 above seems workable, we could cover that for this ticket as well.  But otherwise, I'd probably create a new ticket to cover the work related to avoiding generation of certificate-related files if :localcacert was pre-populated.\n\nIn terms of priority, [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], are you suggesting that what #1 and #2 would cover would be worth including in Puppet Server 1.1 / PE 3.8 but that the superfluous certificate file generation, if we decide to separate it, could be lower priority / potentially done later?", "created": "2015-03-04T12:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\n|    So that might mean that if the user had done an agent run, and thus had the relevant master certs and localcacert stuff in place, before they ever started puppet server...\n\nI'm a bit confused as to how this would happen exactly. For master certs / localcacert to be present, wouldn't either the Puppet Server have had to be started (and, therefore, the still enabled Puppet CA service) and agent run against it or someone have manually (i.e., outside of the Puppet agent process) have dropped the \"legit\" certs / localcacert in place on the master's file system? I suppose how the files get there may not be as important, just wanted to make sure I wasn't missing some critical context here...\n{quote}\n\nIn an external CA use case where the external CA is another Puppet CA, it's common for users to do an agent run on the new master machine before starting the actual server.  The key here is that in a multi-master scenario, there is usually a 'master of masters', which is where the agents on all of the *other* masters are configured to point to.  This is a very common deployment pattern from what I understand.\n\nThis agent run will result in certs being generated with the fqdn of the machine, and the file paths where those certs get deployed will correspond with where Puppet Server will be looking for its 'master cert' on startup.  We also get a copy of the localcacert via the agent run.  \n\nw/rt the rest of the implementation details, here's what I care about:\n\n* We land a change in 1.1 that will cause the Jetty overrides to end up pointing to 'localcacert' instead of 'cacert' for the use case described above, and\n* We don't add on more than a couple of extra story points worth of work beyond that\n\nI'll defer to you and [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] on deciding the rest of the implementation details as long as those two criteria are met.", "created": "2015-03-04T14:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks for the clarification on the use case, [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14].  That all makes sense to me.  I pulled the info from my last comment up into the issue description as I think that will cover the basic work that we would need for this ticket.  I agree that, regarding the work to avoid CA artifacts being inappropriately / unnecessarily written, we should minimize the additional implementation work as much as possible.  [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], feel free to chime in with any parts of the description that you think need more work.", "created": "2015-03-09T16:42:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "So, as far as I can tell, the ssl_server_ca_auth setting is supposed to point to a single PEM file which contains multiple CA certs. Does this sound right?", "created": "2015-03-10T17:29:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "And it looks like that roll-over behavior doesn't happen in the Puppet config code, but somewhere else in the CA code. So we will need to mimic this behavior:\n\n{code}\n[root@localhost ~]# puppet config print localcacert\n/var/lib/puppet/ssl/certs/ca.pem\n[root@localhost ~]# puppet config print  ssl_server_ca_auth\n\n{code}\n\n", "created": "2015-03-10T17:49:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. 3) Add :localcacert to the list of required-ca-files that certificate_authority.clj uses to decide whether to generate the CA files or not.\n\nYeah, we should add {{:localcacert}} to the {{required-master-files}} - the CA doesn't have a {{:localcacert}}.\nI just verified this addition behaves as expected.\n\nAlso, while you're in there you should change the datatype from a vector to a set, which it should've been in the first place.\nFor example, \n{code}(def required-master-files [:hostprivkey :hostcert :localcacert]){code} \nshould become \n{code:clojure}(def required-master-files #{:hostprivkey :hostcert :localcacert}){code}\n\nI also verified this change is acceptable.", "created": "2015-03-11T13:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "RE: the {{ssl_server_ca_auth}} setting, I had misinterpreted how the default was derived.  I had been thinking that if the value of the {{ssl_server_ca_auth}} setting were obtained from Puppet directly that if a user had not supplied a value for it via the CLI or puppet.conf, that the value returned would be the same as the one that {{localcacert}} would return.\n\nThis \"fallback\" logic, however, isn't wired into the setting at all.  Instead, the fallback occurs via the WEBrick server configuration.  In the following lines of code, the SSL configuration for WEBrick includes references to {{localcacert}} and {{ssl_server_ca_auth}}:\n\nhttps://github.com/puppetlabs/puppet/blob/3.7.4/lib/puppet/network/http/webrick.rb#L123-L129\n\nWhen the value is queried via the SSL configuration, the \"fallback\" is performed:\n\nhttps://github.com/puppetlabs/puppet/blob/3.7.4/lib/puppet/ssl/configuration.rb#L29\n\n---\n\nThis would mean that the {{ssl_server_ca_auth}} setting is only used in the context of WEBrick configuration, not Rack (e.g., Passenger) configuration.  Given that, I don't think it makes sense to try to have {{ssl_server_ca_auth}} be respected by Puppet Server.\n\nPuppet Server would still allow for users to make a distinction between the set of CA certificates that Puppet Server uses for authenticating clients connecting to it vs. the set of CA certificates that Puppet Server uses for authenticating servers for outbound connections it makes.  A distinct value for {{ssl-ca-cert}} in the Puppet Server \"webserver\" configuration could be set for authenticating clients, see:\n\nhttps://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/trapperkeeper-webserver-jetty9-1.1.1/doc/jetty-config.md#ssl-ca-cert\n\nThe value from puppet.conf's {{localcacert}}, having a different value from {{ssl-ca-cert}}, would still be used by Puppet Server in the context of making connections to external servers.\n\nArguably, Puppet Server could consider the {{ssl_client_ca_auth}} setting, if non-empty, in place of {{localcacert}} in the context of making connections to external servers.  I'm inclined to forego that for now and see if it becomes a significant issue.\n\n---\n\nWith respect to this ticket, I'm going to remove the {{ssl_server_ca_auth}} language from the description.  The major change, then, would be that {{ssl-ca-cert}} would be overridden from {{localcacert}}, not considering {{ssl_server_ca_auth}}.\n", "created": "2015-03-11T13:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Upon review of the PR, we decided to bail on the idea of adding {{:localcacert}} to {{required-ca-files}} as well.  Doing this would have been problematic if the CA files had been pre-generated, outside puppet-server's startup process.  In that scenario, it would be possible for the {{localcacert}} to not exist but for the other CA files to exist - which would have failed the {{required-ca-files}} check.\n\nI think this could still be done safely if we were to change the logic to only additionally fail if {{localcacert}} does exist but any of the other CA files did not exist at startup - given this would still seem to be an invalid scenario.  Doing this would have involved a bit more logic, though.  In the interest of getting the rest of the work for this ticket into the forthcoming Puppet Server release, we decided to forego the work to fail startup if {{localcacert}} exists but other CA files do not.  I removed the associated language from the ticket description.", "created": "2015-03-14T12:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "PR was merged and corresponding full integration test suite job against the Puppet Server stable branch was green - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/191/.  Moving to \"testing\".", "created": "2015-03-17T09:52:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Probability: Medium-High", "created": "2015-03-20T13:07:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated that an empty ca.pem file in the localcacert location is not overwritten on puppetserver start.  (puppetserver errors out and fails to start, as expected.)\nValidated that a different ca.pem file (with an entirely different key, CN, etc etc) is not overwritten on puppetserver start.\nTested against 1.0.4.SNAPSHOT.2015.03.24T0146 on RHEL 7. ", "created": "2015-03-27T13:01:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The above validation was performed after a conversation with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] explaining that this is all that needs to be validated for this ticket.\n", "created": "2015-03-27T13:08:00.000000"}], "components": ["DOCS", "Puppet Server"], "created": "2015-02-09T15:17:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52ea189a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp1w7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_65621603_*|*_1_*:*_2_*:*_711302701_*|*_10007_*:*_1_*:*_350503576_*|*_3_*:*_1_*:*_262028413_*|*_5_*:*_1_*:*_274700460_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_875469427_*|*_10006_*:*_1_*:*_588103743_*|*_10005_*:*_1_*:*_1109794587"}], "description": "Puppet Server likely isn't handling the use of the cacert / localcacert settings correctly in two cases:\n\n1) The retrieve-ca-cert! function in certificate_authority.clj unconditionally copies the file at the \"cacert\" setting to the file at the \"localcacert\" setting.\n\nIf a pre-existing file were located at the \"localcacert\" location, that file would be overwritten from the content of the file at the \"cacert\" location.  This approach would be problematic if a user were to have intended to load multiple CA certificates into the file at the \"localcacert\" location - e.g., to allow clients issued from different CAs to access the master - since the file at the \"cacert\" location would presumably only have the CA service's certificate and not the other allowed CA certificates.\n\n\nInstead, it would seem better for this logic to only copy the file if the file at the \"localcacert\" location did not already exist.\n\n2) Via the init-webserver! function in puppet_server_config_core.clj, the value of the \"cacert\" setting from puppet.conf is propagated up to the webserver in the event that no value for \"ssl-ca-cert\" is present in the webserver configuration.\n\nAssuming that the \"cacert\" setting is intended to denote the location where the Puppet Server CA service obtains its own certificate, it would seem more appropriate for the init-webserver! function to use the \"localcacert\" setting to populate the list of CA certificates that the webserver would use to validate clients.\n\n------\n\nFrom the comments below, I pulled up these items to be covered in the work for this ticket:\n\n1) Change the implementation of retrieve-ca-cert! in certificate_authority.clj to not copy the cacert over the top of the localcacert if there's already a file at the localcacert location.\n\nThis would avoid the problem of the user's \"external CA\" cert possibly being stomped by the Puppet CA service if the \"external CA\" cert happened to be populated before the Puppet Server were started and the Puppet CA were still enabled as the master tries to retrieve the CA cert during initialization. This doesn't solve the issue of the Puppet CA going ahead and initializing its own certs, which isn't ultimately what the user wants to have happen.\n\n2) Change the init-webserver! function in puppet_server_config_core.clj to, for the case that Jetty webserver ssl settings are being overridden from core Ruby Puppet settings, override the Jetty webserver ssl-ca-cert setting with the core Ruby Puppet localcacert setting.\n\n----\nRisk assesment: High (automated test needed)\nProbability: Medium-High; Users have encountered issues already for this. \nSeverity: Medium. If a user brings up a puppet CA on a master where the user wanted to use an external puppet CA, the local CA will stomp on the certificate from the external CA.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16083", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "16083", "issueType": "Bug", "key": "SERVER-345", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-27T13:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fixup usages of cacert / localcacert in master", "timeSpent": "PT0S", "updated": "2015-12-17T15:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Definitely, I just ran into this myself trying to execute {{puppetserver foreground}} on an EL-7 system.  I was trying to emulate systemd's behavior of switching to the puppet user prior to executing the process, but I couldn't come up with any way to accomplish this goal without modifying the subcommand shell script or taking other annoying steps like modifying pam.", "created": "2015-02-11T17:13:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "the foreground subcommand is in ezbake: https://github.com/puppetlabs/ezbake/blob/96856ce0b009cb64a58ab472224f9908f3dfe119/resources/puppetlabs/lein-ezbake/template/global/ext/cli/foreground.erb", "created": "2015-02-11T17:27:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "pull request added", "created": "2015-02-11T18:10:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9], we attempted to change \"sudo\" to \"runuser\" and ran into a new problem where the puppetserver foreground script now needs to be run as root, and can't actually be run by the puppet user:\n\n{code}\n# after logging in as the 'puppet' user:\n$ puppetserver foreground\nrunuser: may not be used by non-root users\n{code} \n\nWe're thinking this isn't the optimal solution. Currently puppetdb's foreground script runs via this method\n{code}\nsu puppetdb -s /bin/bash -c \"...\"\n{code}\n\nand we have yet to receive any reports similar to this one. This probably isn't much different than just using sudo, but would this maybe be a more acceptable solution?\n", "created": "2015-02-23T10:59:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "That's non-ideal due to Environment carry over.\n\nWould it be possible to just wrap it in a\n\n{code}\nif [ \"$EUID\" = \"0\" ]", "created": "2015-02-23T11:08:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] Could you clarify the issue with environment carry-over that you mentioned?", "created": "2015-02-23T11:22:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "Ah, sorry, I was misremembering.\n\nrunuser for root and su for normal users.\n\nhttp://danwalsh.livejournal.com/55588.html", "created": "2015-02-23T11:27:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Thanks Trevor, was there another concern related to preserving, or not\npreserving environment variables that leads you to have an expectation\naround how the foreground subcommand should behave?  If so, what's the\nexpected behavior?  For example, would you expect the environment to be\ncleared, in line with something like `su -` or `runuser -` or should it be\nmostly preserved?\n\n-Jeff\n", "created": "2015-02-23T13:58:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I would expect the environment to be cleared, particularly in light of the recent Shellshock nonsense.\n\nLooking at Dan's blog, runuser looks like it might be a must for SELinux-based systems so you might still have to do the split command.", "created": "2015-02-23T14:13:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "So, to be safe (and clear) here's my plan:\n\nIF the $EUID is 0 AND runuser is installed, use runuser\nELSE use sudo\n\nDoes that sound good, [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]?", "created": "2015-02-23T16:43:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "For completeness, you may want to check if the user can run the command\nunder sudo and, if not, fall back to su.\n\nTrevor\nOn Feb 23, 2015 6:44 PM, \"Justin May (JIRA)\" <issue-updates@puppetlabs.com>\n\n", "created": "2015-02-23T17:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314], yeah, what I was thinking of was something like:\n\n{noformat}\nif [ \"$EUID\" = \"0\" ] && command -v runuser >/dev/null 2>&1", "created": "2015-02-24T10:06:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "(y) Looks great.", "created": "2015-02-24T10:42:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-09T12:59:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3139cddb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3gf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_236017803_*|*_1_*:*_1_*:*_708353195_*|*_10007_*:*_1_*:*_864751318_*|*_3_*:*_1_*:*_361245827_*|*_10009_*:*_1_*:*_793251795_*|*_5_*:*_1_*:*_1043699431_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_238435182"}], "description": "For systems that have restricted login capability (through access.conf for example) the use of the puppetserver * command line utilities will not be able to run unless using 'runuser'.\n\nThe change appears to be just changing the word 'su' to 'runuser' in the puppetserver/cli/apps/* files.", "environment": "Linux", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16431", "fixedVersions": ["SERVER 1.0.8"], "id": "16431", "issueType": "Bug", "key": "SERVER-344", "labels": ["account", "product-security", "security"], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Fixed", "resolutionDate": "2015-03-18T15:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Startup scripts should use 'runuser' not 'su'.", "timeSpent": "PT0S", "updated": "2015-12-30T16:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:de061074-a878-4ca5-823d-51eb605817e8] You could try turning up the log level on the server... edit /etc/puppetserver/logback.xml, and find the places where it says 'INFO', and change them to 'DEBUG'.  That will probably give you a lot more noise than you want, so if you find some messages that you would like to selectively enable, you can add more 'logger' lines, like the one that we have about Jetty, and set the log level for individual namespaces explicitly.\n\nDoes that help?", "created": "2015-02-11T15:10:00.000000"}, {"author": "557058:de061074-a878-4ca5-823d-51eb605817e8", "body": "After enabling DEBUG logging, I do see messages like this when a client with a revoked cert tries to connect:\n\n{noformat}\n2015-02-12 10:41:36,817 DEBUG [o.e.j.s.HttpConnection] \njavax.net.ssl.SSLHandshakeException: General SSLEngine problem\n\tat sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1336) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:519) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:799) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:767) ~[na:1.7.0_75]\n\tat javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) ~[na:1.7.0_75]\n\tat org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:503) ~[puppet-server-release.jar:na]\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:213) ~[puppet-server-release.jar:na]\n\tat org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505) [puppet-server-release.jar:na]\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) [puppet-server-release.jar:na]\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) [puppet-server-release.jar:na]\n\tat java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]\nCaused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem\n\tat sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1714) ~[na:1.7.0_75]\n\tat sun.security.ssl.Handshaker.fatalSE(Handshaker.java:281) ~[na:1.7.0_75]\n\tat sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273) ~[na:1.7.0_75]\n\tat sun.security.ssl.ServerHandshaker.clientCertificate(ServerHandshaker.java:1682) ~[na:1.7.0_75]\n\tat sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:176) ~[na:1.7.0_75]\n\tat sun.security.ssl.Handshaker.processLoop(Handshaker.java:901) ~[na:1.7.0_75]\n\tat sun.security.ssl.Handshaker$1.run(Handshaker.java:841) ~[na:1.7.0_75]\n\tat sun.security.ssl.Handshaker$1.run(Handshaker.java:839) ~[na:1.7.0_75]\n\tat java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_75]\n\tat sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1273) ~[na:1.7.0_75]\n\tat org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:591) ~[puppet-server-release.jar:na]\n\t... 5 common frames omitted\nCaused by: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Certificate has been revoked, reason: KEY_COMPROMISE, revocation date: Thu Feb 12 10:39:14 EST 2015, authority: CN=Puppet CA: puppetmaster, extension OIDs: [2.5.29.21]\n\tat sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:350) ~[na:1.7.0_75]\n\tat sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:249) ~[na:1.7.0_75]\n\tat sun.security.validator.Validator.validate(Validator.java:260) ~[na:1.7.0_75]\n\tat sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326) ~[na:1.7.0_75]\n\tat sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:281) ~[na:1.7.0_75]\n\tat sun.security.ssl.X509TrustManagerImpl.checkClientTrusted(X509TrustManagerImpl.java:132) ~[na:1.7.0_75]\n\tat sun.security.ssl.ServerHandshaker.clientCertificate(ServerHandshaker.java:1669) ~[na:1.7.0_75]\n\t... 12 common frames omitted\nCaused by: java.security.cert.CertPathValidatorException: Certificate has been revoked, reason: KEY_COMPROMISE, revocation date: Thu Feb 12 10:39:14 EST 2015, authority: CN=Puppet CA: puppetmaster, extension OIDs: [2.5.29.21]\n\tat sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:159) ~[na:1.7.0_75]\n\tat sun.security.provider.certpath.PKIXCertPathValidator.doValidate(PKIXCertPathValidator.java:351) ~[na:1.7.0_75]\n\tat sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:191) ~[na:1.7.0_75]\n\tat java.security.cert.CertPathValidator.validate(CertPathValidator.java:279) ~[na:1.7.0_75]\n\tat sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:345) ~[na:1.7.0_75]\n\t... 18 common frames omitted\nCaused by: java.security.cert.CertificateRevokedException: Certificate has been revoked, reason: KEY_COMPROMISE, revocation date: Thu Feb 12 10:39:14 EST 2015, authority: CN=Puppet CA: puppetmaster, extension OIDs: [2.5.29.21]\n\tat sun.security.provider.certpath.CrlRevocationChecker.verifyRevocationStatus(CrlRevocationChecker.java:424) ~[na:1.7.0_75]\n\tat sun.security.provider.certpath.CrlRevocationChecker.verifyRevocationStatus(CrlRevocationChecker.java:270) ~[na:1.7.0_75]\n\tat sun.security.provider.certpath.CrlRevocationChecker.check(CrlRevocationChecker.java:211) ~[na:1.7.0_75]\n\tat sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:133) ~[na:1.7.0_75]\n\t... 22 common frames omitted\n{noformat}\n\nSo it appears to be a DEBUG message about an http connection problem caused by a java exception from the revoked cert. Is there anyway the puppetserver could catch these exceptions and produce more informative logging at a higher level, maybe warning or error? I can add a line like this to our logback.xml to catch these, but it also causes a lot of other DEBUG messages to be logged:\n\n{noformat}\n    <logger name=\"org.eclipse.jetty.server.HttpConnection\" level=\"DEBUG\"/>\n{noformat}\n\nAlso, as I said before, the client only reports a generic ssl error:\n{noformat}\nWarning: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read finished A\n{noformat}\nIs there anyway to have the client report something more informative?\n\nAnother common problem is clock sync, so I ran another test where the client's clock is out of sync, in the past, and this is what the server reported in the debug logs:\n\n{noformat}\n2015-02-12 10:59:34,447 DEBUG [o.e.j.s.HttpConnection] \njavax.net.ssl.SSLException: Received fatal alert: bad_certificate\n\tat sun.security.ssl.Alerts.getSSLException(Alerts.java:208) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1650) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1618) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1787) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1071) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:893) ~[na:1.7.0_75]\n\tat sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:767) ~[na:1.7.0_75]\n\tat javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) ~[na:1.7.0_75]\n\tat org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:503) ~[puppet-server-release.jar:na]\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:213) ~[puppet-server-release.jar:na]\n\tat org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505) [puppet-server-release.jar:na]\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) [puppet-server-release.jar:na]\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) [puppet-server-release.jar:na]\n\tat java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]\n{noformat}\n\nThis time the client error message is much more informative:\n{noformat}\nWarning: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: puppetmaster]\n{noformat}\nbut without the debugging, nothing is logged on the server.", "created": "2015-02-12T09:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:de061074-a878-4ca5-823d-51eb605817e8] Unfortunately, it'd be a fairly complex undertaking for us to catch these errors and improve upon them, because they are happening in the Jetty web server layer before it even hands off the request to any Puppet Labs code.  It's something we can explore in the future, but not something we're likely to be able to tackle very soon.\n\nThere are some other solutions that may still improve things for you in the interim, though.  Logback provides some pretty robust capabilities for filtering log messages, so it should be possible to put together a logging configuration that would allow you to set the logging level to DEBUG for the `org.eclipse.jetty.server.HttpConnection` class, while still filtering out some set of the messages that you don't want to see from that class.  We might even consider changing the default logback configuration for Puppet Server to do that once we get a good filter configuration set up.\n\nFor more info, you might be interested in looking at the docs for logback filters:\n\nhttp://logback.qos.ch/manual/filters.html\n\nI think a particularly useful filter would be the EvaluatorFilter:\n\nhttp://logback.qos.ch/manual/filters.html#evalutatorFilter\n\nBut, it requires us to ship some dependencies with Puppet Server that we're not shipping yet.  We plan to ship them in a future release", "created": "2015-02-12T10:58:00.000000"}, {"author": "557058:de061074-a878-4ca5-823d-51eb605817e8", "body": "Thanks for the update, it would be nice to have better default logging in the future. I manually added the request access logging following the trapper keeper docs and I see there is a ticket requesting that this also be added as default in SERVER-319. We tested puppetserver on our production puppet master but had to roll back due to a 5% error rate which we think is due to the bug described in SERVER-40. What about reloading the CRL, should I open a separate bug for that?", "created": "2015-02-17T09:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:de061074-a878-4ca5-823d-51eb605817e8] can you try the workaround suggested for SERVER-40 here?: \n \nhttps://puppet.atlassian.net/browse/SERVER-40?focusedCommentId=105687&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-105687\n\nShould just be a matter of commenting out one `require` statement.\n\nAnd yes, I'd recommend opening a separate ticket for CRL.  Thanks!", "created": "2015-02-17T10:20:00.000000"}, {"author": "557058:de061074-a878-4ca5-823d-51eb605817e8", "body": "Thanks for the workaround tip. I re-read the tickets more thoroughly, tried the workaround and it seems to work perfectly so far, and we do see at least a 40%+ performance improvement compared to rack/passenger. I also opened a new ticket for the CRL issue, SERVER-373.", "created": "2015-02-17T15:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Great, glad to hear it!", "created": "2015-02-17T15:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "RE: The fairly generic {{read finished A}} message that the client sees when the server rejects its certificate due to a verification failure, we have a ticket that goes into more detail about the reason for this.  See TK-150.\n\nIn the case of the clock-skew condition where the client sees a more informative failure message, {{read server certificate B: certificate verify failed: |CRL is not yet valid for /CN=Puppet CA: puppetmaster|}}, I believe it is the client which is detecting that the CRL is invalid and, therefore, has more direct control over producing an informative error message.  For the case that the server is rejecting the client certificate, though, we'd have to figure out how to coerce the Java SSL stack to produce the SSL alert which would provide the more meaningful error.  This may be possible to do - just not sure at this point.", "created": "2015-02-18T09:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}Unfortunately, it'd be a fairly complex undertaking for us to catch these errors and improve upon them, because they are happening in the Jetty web server layer before it even hands off the request to any Puppet Labs code. It's something we can explore in the future, but not something we're likely to be able to tackle very soon.{quote}\n\nOne way we might be able to do this would be to derive our own {{SslContextFactory}} and have it return some custom TrustManagers - https://github.com/eclipse/jetty.project/blob/jetty-9.1.0.v20131115/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java#L922 - that we \"enhance\" with some more concise, informative logging around any certificate verification failures - i.e., messages that don't involve one having to dig through nested stack traces to get more details and that could include better identifying information in the error like the client certificate subject.\n\nThat said, this could be a significant amount of work, like [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] mentioned.", "created": "2015-02-18T09:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For those who want even more detailed SSL debugging information, there's also the option of turning on JVM-level SSL tracing via the \"javax.net.debug\" Java system property.  For example, this can be used to show a detailed dump of the transactions that take place during the SSL handshake for a request.\n\nTo enable this, one would need to add a \"-Djavax.net.debug=<desiredlevel>\" argument to the JAVA_ARGS argument in /etc/sysconfig/puppetserver or /etc/default/puppetserver, depending upon your OS distribution.  Unfortunately, the output produced from enabling this property apparently does not use the standard Java logging framework functionality and so would not be routed based on the configuration in puppetserver's logback.xml file.  Instead, the output would appear in the \"/var/log/puppetserver/puppetserver-daemon.log\" file.\n\nFor more information on \"javax.net.debug\", see http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/ReadDebug.html.", "created": "2015-02-23T18:16:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Gonna close this as wontfix since it seems like the return is small for the amount of effort required.", "created": "2015-10-21T13:06:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-09T10:08:00.000000", "creator": "557058:de061074-a878-4ca5-823d-51eb605817e8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53df984e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-791"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqpz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_716655679_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_21236018156"}], "description": "I have been testing the new Puppet Server recently and I manually added the apache style request access logging following the trapperkeeper & logback documentation, but it still does not log any sort of errors, like SSL connection errors. For example, revoke a client cert, then restart the server and try to connect, the client just reports generic SSL errors like:\n\nWarning: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read finished A\n\nand the server logs absolutely nothing, not even an indication that a connection attempt was made and failed. Some more useful logging on the client would help and something logged on the server indicating the attempted connection and reason for failing would be helpful in debugging problems. If I remember correctly, apache would log a message indicating a CRL error. Also, as a side note, it seems that the CRL is only re-read on a full restart, and given the time this takes, some sort of admin command to force a reload would be really useful. Using the old rack/passenger server, all we had to do was issue an apache graceful reload.\n", "environment": "Opensource Puppet 3.7.4 on RHEL6 x86-64", "epicLinkSummary": "Improve default settings", "estimate": "PT0S", "externalId": "16683", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16683", "issueType": "Bug", "key": "SERVER-343", "labels": [], "originalEstimate": "PT0S", "parent": "14991", "parentSummary": "Improve default settings", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:de061074-a878-4ca5-823d-51eb605817e8", "resolution": "Won't Fix", "resolutionDate": "2015-10-21T13:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SSL error logging is non-existent.", "timeSpent": "PT0S", "updated": "2017-02-07T16:50:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:de061074-a878-4ca5-823d-51eb605817e8", "body": "I am not sure what was happening, but I saw this on my test puppetmaster. I started over with a fresh ssl directory on my test master and now I can't reproduce the problem. Something very strange was going on, but since I can't reproduce it now I guess the ticket can be closed. Sorry.\n", "created": "2015-02-09T12:12:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-09T09:53:00.000000", "creator": "557058:de061074-a878-4ca5-823d-51eb605817e8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d29188c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyy9y7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_8382598_*|*_6_*:*_1_*:*_0"}], "description": "Client host makes cert signing request, which can be seen on the server through the REST API:\n\ncurl -i --cert /etc/pki/puppet/certs/puppetmaster.pem --key /etc/pki/puppet/private_keys/puppetmaster.pem --cacert /etc/pki/puppet/certs/ca.pem -X GET https://puppetmaster:8140/production/certificate_status/puppetclient\nHTTP/1.1 200 OK\nDate: Mon, 09 Feb 2015 16:22:25 GMT\nX-Puppet-Version: 3.7.4\nContent-Type: text/pson;charset=UTF-8\nContent-Length: 687\nServer: Jetty(9.1.z-SNAPSHOT)\n\n{\"name\":\"puppetclient\",\"state\":\"requested\",\"dns_alt_names\":[],\"fingerprint\":\"A6:9C:A1:21:CF:B8:D8:BB:5D:B5:97:2D:AB:A0:F3:BF:47:1C:FC:BD:49:68:16:EB:5F:2F:D3:3B:5A:73:09:6D\",\"fingerprints\":{\"SHA1\":\"67:97:8B:74:F9:24:4A:A3:71:CE:7B:DB:09:33:DF:A5:B7:E8:D1:76\",\"SHA256\":\"A6:9C:A1:21:CF:B8:D8:BB:5D:B5:97:2D:AB:A0:F3:BF:47:1C:FC:BD:49:68:16:EB:5F:2F:D3:3B:5A:73:09:6D\",\"SHA512\":\"8D:45:96:BB:CA:C2:27:B2:C6:9D:03:CA:BF:51:B5:96:AC:67:19:B8:66:74:35:63:F1:8C:17:D3:B9:4A:4B:0F:7D:0F:5A:6D:47:F7:A5:DD:64:9F:3C:A7:CA:4D:04:CE:C4:EA:63:18:2E:BB:EE:18:5A:62:53:59:72:F6:34:2C\",\"default\":\"A6:9C:A1:21:CF:B8:D8:BB:5D:B5:97:2D:AB:A0:F3:BF:47:1C:FC:BD:49:68:16:EB:5F:2F:D3:3B:5A:73:09:6D\"}}\n\nUse the REST API to sign the client cert:\n\ncurl -i --cert /etc/pki/puppet/certs/puppetmaster.pem --key /etc/pki/puppet/private_keys/puppetmaster.pem --cacert /etc/pki/puppet/certs/ca.pem -H 'Content-Type: text/pson' -d '{\"desired_state\":\"signed\"}' -X PUT https://puppetmaster:8140/production/certificate_status/puppetclient\nHTTP/1.1 204 No Content\nDate: Mon, 09 Feb 2015 16:22:32 GMT\nX-Puppet-Version: 3.7.4\nContent-Type: text/plain\nServer: Jetty(9.1.z-SNAPSHOT)\n\nSometimes it works fine, but sometimes it gets put into a revoked state instead:\n\ncurl -i --cert /etc/pki/puppet/certs/puppetmaster.pem --key /etc/pki/puppet/private_keys/puppetmaster.pem --cacert /etc/pki/puppet/certs/ca.pem -X GET https://puppetmaster:8140/production/certificate_status/puppetclient\nHTTP/1.1 200 OK\nDate: Mon, 09 Feb 2015 16:22:36 GMT\nX-Puppet-Version: 3.7.4\nContent-Type: text/pson;charset=UTF-8\nContent-Length: 685\nServer: Jetty(9.1.z-SNAPSHOT)\n\n{\"name\":\"puppetclient\",\"state\":\"revoked\",\"dns_alt_names\":[],\"fingerprint\":\"13:69:BA:15:09:8B:29:98:C4:08:5A:34:8E:A9:C6:CE:37:97:C0:50:02:ED:BB:1E:C0:5B:66:FE:DC:A8:FB:24\",\"fingerprints\":{\"SHA1\":\"FB:28:FF:EF:82:4C:43:27:5F:43:11:CB:FC:BA:AD:B7:0C:2F:F9:AE\",\"SHA256\":\"13:69:BA:15:09:8B:29:98:C4:08:5A:34:8E:A9:C6:CE:37:97:C0:50:02:ED:BB:1E:C0:5B:66:FE:DC:A8:FB:24\",\"SHA512\":\"30:12:AB:9C:F4:8E:7C:F7:5B:A8:DE:D6:67:4D:A3:31:06:79:8F:56:27:43:69:6E:46:78:DE:F7:B9:09:EA:F7:5D:6C:5D:F0:42:F6:6A:1C:E3:E0:2C:CE:D9:53:AC:67:61:CA:E7:2F:A6:73:C2:E0:01:78:49:0E:82:C3:72:45\",\"default\":\"13:69:BA:15:09:8B:29:98:C4:08:5A:34:8E:A9:C6:CE:37:97:C0:50:02:ED:BB:1E:C0:5B:66:FE:DC:A8:FB:24\"}}\n", "environment": "Opensource Puppet 3.7.4 on RHEL6 x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16082", "fixedVersions": [], "id": "16082", "issueType": "Bug", "key": "SERVER-342", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:de061074-a878-4ca5-823d-51eb605817e8", "resolution": "Cannot Reproduce", "resolutionDate": "2015-02-09T12:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet CA REST API sometimes revokes request to sign client certs.", "timeSpent": "PT0S", "updated": "2015-12-30T16:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5ac72d915fe4b660cda6eee6", "attachments": [], "comments": [{"author": "5ac72d915fe4b660cda6eee6", "body": "error when testing. please delete.", "created": "2015-02-05T06:34:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-05T05:13:00.000000", "creator": "5ac72d915fe4b660cda6eee6", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@117041a6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyy8en:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4870478_*|*_6_*:*_2_*:*_28376049902"}], "description": "When configuring multiple values environmentpath puppetserver only looks in the first directory given for subdirectories. \n\nAs per puppet-master reference documentation https://docs.puppetlabs.com/references/latest/configuration.html#environmentpath can have multiple values seperated by system path separator character. Since https://github.com/puppetlabs/puppet-server/blob/master/documentation/puppet_conf_setting_diffs.markdown does not mention any difference to the setting one would expect this to work also in puppetserver.\n\nTest case:\n* set: environmentpath = $confdir/environments:$confdir/env\n* make directories: $confdir/environments, $confdir/env,  $confdir/env,/production\n** puppeserver start fails with   {{Got 1 failure(s) while initializing: File[/etc/puppet/environments/production]: change from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /etc/puppet/environments/production}}\n* set  environmentpath = $confdir/env:$confdir/environments\n** puppetserver starts but clients do not get content from environments below $confdir/environments\n\nuse case: have one environmentpath managed by r10k (which purges everyting unknown) and a second one for legacy content\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17611", "fixedVersions": [], "id": "17611", "issueType": "Bug", "key": "SERVER-340", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5ac72d915fe4b660cda6eee6", "resolution": "Cannot Reproduce", "resolutionDate": "2015-12-30T16:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "environmentpath only uses first directory", "timeSpent": "PT0S", "updated": "2015-12-30T16:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "This was originally supposed to be bump the puppet-agent package to 0.2.2, but it turns out that that version is not fully working (it doesn't lay down puppet.conf in the right place for the code/config split). I've pushed up a branch: https://github.com/rlinehan/puppet-server/tree/fix/master/SERVER-339-bump-puppet-agent which does the necessary work, but it won't run until we have a new puppet-agent package.", "created": "2015-02-05T11:49:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "McCune, Corcoran, Wolfe think this is not actionable until we have a version of puppet-agent that is not so much in flux, and has the code/conf (and maybe AIO) changes settled.", "created": "2015-02-10T12:33:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Current information talking to Cooper, Haus and Whopper, is that puppet-agent 0.3.1 is what they're using to integrate with puppet-server.\n\nhttp://builds.delivery.puppetlabs.net/puppet-agent/0.3.1/", "created": "2015-02-10T18:16:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c12b6ee1b5a0070293582] - Based on your last comment, it sounds like this issue is no longer blocked - is that correct?", "created": "2015-02-11T11:00:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Correct, we could bump to 0.3.1 instead of the 0.2.2 mentioned in the description.  I manually ran puppet-server master against puppet-agent 0.3.1 last night, and the pre-suite and smoke tests on EL7 passed.", "created": "2015-02-11T12:04:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "The \"remove puppet.conf hacks (hard-coded /etc/puppetlabs/agent paths) in postinstall\" is blocked again until we have puppet-agent packages with the new paths described in https://puppet.atlassian.net/browse/PUP-3632", "created": "2015-02-13T12:29:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "* Josh said that commit 49f7b1b967e44020587ab087f87e2f\n5e3ff2b1f6 from the puppet-agent repo is in a good state for us to do a build off of it and update the Puppet Server dependency for acceptance tests. ", "created": "2015-02-18T11:15:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "This commit corresponds to a package version of puppet-agent, located at: http://builds.puppetlabs.lan/puppet-agent/49f7b1b967e44020587ab087f87e2f5e3ff2b1f6/", "created": "2015-02-18T11:25:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Talking with [~accountid:63d40628f6e1b543161789a7], there are three main places to look if puppet is being used as a reference for how to accomplish this sort of thing.\n\n1: They're running against beaker from HEAD of master.  (See their Gemfile for the location_for method)\n2: They're overriding beaker hard-coded paths using the beaker host configuration.  See their rhel7.yaml host configuration file for an example of their explicit path overrides.\n3: There's a bunch of hacks in 020_AIO_Workarounds.rb that we may or may not need to replicate.  (Gratitude for keeping those hacks in one place).", "created": "2015-02-18T15:37:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Work around if you get a SocketError from master:\n\n{code}\nexport BEAKER_LOCATION='git://github.com/puppetlabs/beaker#831a6c4e806df14929918ca806b77d5073e7d849'\n{code}\n\nThis work around requires something like the following for the Gemfile:\n\n{code}\ndiff --git a/Gemfile b/Gemfile\nindex 5c8e8e0..72b78cc 100644\n--- a/Gemfile\n+++ b/Gemfile\n@@ -1,14 +1,28 @@\n source ENV['GEM_SOURCE'] || \"https://rubygems.org\"\n\n+def location_for(place, fake_version = nil)\n+  if place =~ /^(git[:@][^#]*)#(.*)/\n+    [fake_version, { :git => $1, :branch => $2, :require => false }].compact\n+  elsif place =~ /^file:\\/\\/(.*)/\n+    ['>= 0', { :path => File.expand_path($1), :require => false }]\n+  else\n+    [place, { :require => false }]\n+  end\n+end\n+\n gem 'rake', :group => [:development, :test]\n gem 'jira-ruby', :group => :development\n\n group :test do\n   gem 'rspec'\n-  gem 'beaker', '~> 2.2'\n+  gem 'beaker', *location_for(ENV['BEAKER_LOCATION'] || '~> 2.2')\n   if ENV['GEM_SOURCE'] =~ /rubygems\\.delivery\\.puppetlabs\\.net/\n     gem 'sqa-utils', '~> 0.11'\n   end\n   gem 'httparty'\n   gem 'uuidtools'\n end\n+\n+if File.exists? \"#{__FILE__}.local\"\n+  eval(File.read(\"#{__FILE__}.local\"), binding)\n+end\n{code}", "created": "2015-02-18T16:42:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Add minimal PR that will surely fail in CI, but should hopefully unblock things so tickets can be worked in parallel.", "created": "2015-02-18T18:14:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] merged this into master in an effort to resolve test failures in parallel team efforts.", "created": "2015-02-19T11:45:00.000000"}], "components": [], "created": "2015-02-04T12:30:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ce37d42"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp51j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15703492_*|*_10007_*:*_1_*:*_63101726_*|*_3_*:*_3_*:*_100653403_*|*_5_*:*_1_*:*_50622374906_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_512481341_*|*_10006_*:*_2_*:*_601400473"}], "description": "Remove puppet.conf hacks in postinstall (https://github.com/puppetlabs/puppet-server/blob/master/resources/ext/ezbake.conf#L26-L29 and https://github.com/puppetlabs/puppet-server/blob/master/resources/ext/ezbake.conf#L61-L64)\n\nUpdate acceptance tests to install puppet-agent 0.2.2: https://github.com/puppetlabs/puppet-server/blob/master/acceptance/lib/helper.rb#L31", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15816", "fixedVersions": ["SERVER 2.0.0"], "id": "15816", "issueType": "Task", "key": "SERVER-339", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-02-19T11:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "bump dependency to new puppet-agent", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The failure appears to be due to the system under test not having \"netstat\" installed and the check that the _wait_for_app_ function in ezbake_functions.sh does during init failing to detect that the puppetserver service has started because of its dependency on \"netstat\" having been installed.\n\nWe should look into adding \"net-tools\" as a dependency for puppetserver packages so that netstat will be present when the puppetserver init occurs.  \"net-tools\" works for CentOS 7 but would need to confirm that the same package name applies to other OSes.  Also, we should consider doing this more broadly for any non-PuppetServer packages that rely upon the same netstat polling procedure for init.", "created": "2015-02-04T11:59:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I'm able to reproduce this failure on-demand by running the acceptance tests from a local topic branch.\n\nI've re-built packages with the net-tools dependency expressed and will re-run the acceptance tests from the topic branch before submitting a PR.", "created": "2015-02-04T13:49:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "PR ready.  Smoke tested locally.", "created": "2015-02-04T14:23:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "This ticket also needs a PR against master of ezbake.\n\nDecision in planning meeting is to submit this change as a pull request based on the master branch only of ezbake. The reason being, stable and puppetserver/stable will go away as soon as we go gold on the next PE release.", "created": "2015-02-04T15:18:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "New pull request, with some interesting dancing, against ezbake itself:\n\nhttps://github.com/puppetlabs/ezbake/pull/178\n\nThe plan is to tag 0.1.2 from the zero_one_x branch once this pull request is\nreviewed and merged. Once tagged, 0.1.2 will be built and made available to\nthe projects, at which point puppet-server could update the dependency on\nlein-ezbake from 0.1.0 to 0.1.2.", "created": "2015-02-04T17:47:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Add link to pull request against puppet-server that updates lein-ezbake from 0.1.0, which does not express a dependency on net-tools to 0.1.2, which does.", "created": "2015-02-04T18:24:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Merged into master as https://github.com/puppetlabs/puppet-server/commit/ee34a8f87efa8d6cbfe233fc604b376e2f634b20", "created": "2015-02-05T14:19:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "These were all merged in last sprint, prior to the AIO path changes.  As a result I'm marking this as resolved/fixed and any new issues that result from the AIO path changes should already be captured or should be created as new tickets.", "created": "2015-02-19T11:50:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Puppet Server 2 has already shipped.  Risk Assessment N/A.  This ticket discusses a failing test.  No review needed.  Ping [~accountid:623c12b6ee1b5a0070293582] Please let me know if this is incorrect.  ", "created": "2015-04-29T16:25:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-04T10:21:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b0bc74c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp527:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1200660719_*|*_1_*:*_1_*:*_6290427_*|*_10007_*:*_2_*:*_76648563_*|*_3_*:*_2_*:*_17738602_*|*_5_*:*_1_*:*_50622118775_*|*_6_*:*_1_*:*_0"}], "description": "From https://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_smoke-master/218/LAYOUT=64mdca,PLATFORM=centos7,label=beaker/consoleFull\n\n{code}\nhekwz1fsmrku9rw.delivery.puppetlabs.net (centos7-64-1) 01:37:15$ puppet resource service puppetserver ensure=running\nError: Could not start Service[puppetserver]: Execution of '/usr/bin/systemctl start puppetserver' returned 1: Job for puppetserver.service failed. See 'systemctl status puppetserver.service' and 'journalctl -xn' for details.\nWrapped exception:\nExecution of '/usr/bin/systemctl start puppetserver' returned 1: Job for puppetserver.service failed. See 'systemctl status puppetserver.service' and 'journalctl -xn' for details.\nError: /Service[puppetserver]/ensure: change from stopped to running failed: Could not start Service[puppetserver]: Execution of '/usr/bin/systemctl start puppetserver' returned 1: Job for puppetserver.service failed. See 'systemctl status puppetserver.service' and 'journalctl -xn' for details.\nservice { 'puppetserver':\n  ensure => 'stopped',\n}\n\nhekwz1fsmrku9rw.delivery.puppetlabs.net (centos7-64-1) executed in 120.70 seconds\n\nhekwz1fsmrku9rw.delivery.puppetlabs.net (centos7-64-1) 01:39:16$ curl -m 1 https://localhost:8140\n  Trying command 300 times.\n..............................................................................................................................................................................................................................................................................................................  Command `curl -m 1 https://localhost:8140` failed.\n{code}\n\n\n /var/log/puppetserver/puppetserver.log seems to indicate that the JRubyPuppet instances are all getting started, but then it seems like the service is getting killed after about 2 minutes. \n\n", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16429", "fixedVersions": ["SERVER 2.0.0"], "id": "16429", "issueType": "Bug", "key": "SERVER-338", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-02-19T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test failure: Puppet Server fails to start in 2.0 builds on EL 7", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "puppet-server on EL with SERVER-369 merged into master master is now dropping the ssl dir into {{/etc/puppetlabs/puppet/ssl}}, which matches the specification and is shared with the puppet-agent package.", "created": "2015-02-26T18:34:00.000000"}], "components": ["Certificate Authority"], "created": "2015-02-04T06:27:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@276c4f62"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyy7kv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1163555795_*|*_5_*:*_1_*:*_49993019097_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_544336314_*|*_10006_*:*_1_*:*_236545586"}], "description": "Starting puppet-server off the nightly build drops the ssldir into the puppet user's home directory, not {{/etc/puppetlabs/agent/ssl}}.\n\nLooks like it's getting the settings as a user run_mode, not root/server/ca?\n\n{code}\n2015-02-04 11:54:23,556 DEBUG [main] [p.s.c.puppet-server-config-service] Initializing with the following settings from core Pu\nppet:\n{:ca-name \"Puppet CA: glitcher.local\",\n :hostcrl \"/opt/puppetlabs/agent/cache/.puppet/ssl/crl.pem\",\n :hostprivkey\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/private_keys/glitcher.local.pem\",\n :csrdir \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/requests\",\n :capub \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_pub.pem\",\n :hostcert\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/certs/glitcher.local.pem\",\n :requestdir\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/certificate_requests\",\n :ssl-client-verify-header \"HTTP_X_CLIENT_VERIFY\",\n :dns-alt-names \"\",\n :puppet-version \"3.7.4\",\n :cacert \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_crt.pem\",\n :localcacert \"/opt/puppetlabs/agent/cache/.puppet/ssl/certs/ca.pem\",\n :autosign \"/etc/puppetlabs/agent/autosign.conf\",\n :csr-attributes \"/etc/puppetlabs/agent/csr_attributes.yaml\",\n :ca-ttl 157680000,\n :cakey \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_key.pem\",\n :cacrl \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/ca_crl.pem\",\n :serial \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/serial\",\n :certdir \"/opt/puppetlabs/agent/cache/.puppet/ssl/certs\",\n :cert-inventory\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/inventory.txt\",\n :hostpubkey\n \"/opt/puppetlabs/agent/cache/.puppet/ssl/public_keys/glitcher.local.pem\",\n :ssl-client-header \"HTTP_X_CLIENT_DN\",\n :certname \"glitcher.local\",\n :signeddir \"/opt/puppetlabs/agent/cache/.puppet/ssl/ca/signed\",\n :allow-duplicate-certs false}", "environment": "puppetserver-2.0.0.SNAPSHOT.2015.02.03T1453-1.el7.noarch", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17609", "fixedVersions": ["SERVER 2.0.0"], "id": "17609", "issueType": "Bug", "key": "SERVER-337", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Fixed", "resolutionDate": "2015-02-26T18:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet-server CA service uses wrong $ssldir", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [{"attacher": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "created": "2015-02-04T05:13:00.000000", "name": "debug.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11018"}, {"attacher": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "created": "2015-02-04T05:13:00.000000", "name": "puppetserver-el7.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10929"}], "comments": [{"author": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "body": "The build process looks closed source so I can not help further on this.", "created": "2015-02-04T05:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This is related to the vardir issue described (tangentially) in SERVER-335.", "created": "2015-02-17T17:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It sounds like maybe this is an issue with SERVER 1.x as well, so whomever picks up this ticket needs to validate that.  If it's an issue in 1.x then we need to target the fix at 'stable'.", "created": "2015-02-17T17:39:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Unfortunately this is the behavior in our 1.0.2 release - I just verified this with puppetserver-1.0.2-1puppetlabs1 on Ubuntu 12.04.", "created": "2015-02-18T18:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] thanks for the confirmation.  We definitely need to target this fix at the stable branch then.", "created": "2015-02-19T09:03:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "The behavior [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] and I observed yesterday was that restarting the SUT after installation of puppet/puppet-common/puppetserver the /var/run/puppet directory would be missing because in this particular OS /var/run is symlinked to /run which is mounted with a \"tmpfs\" filesystem--basically, its contents only live in memory and therefore are not persisted across reboots.\n\nIt appeared as if the puppet ruby code running under JRuby expects this directory to exist, tried to create it, but was unable to because only the root user can create subdirectories in /run.\n\nTwo fixes I can imagine, both of which would probably have to happen within the puppetserver init script since it runs as root:\n* Manually install /var/run/puppetserver using mkdir + chmod or the install utility--the difficulty here would be ensuring that we are creating the correct directory for foss vs pe, although I also noticed mention that we may eventually have separate vardirs for master vs agent so...*shrug*\n* Run puppet agent as root before starting the puppetserver init script--although this may lead to /var/run/puppet being owned as root.\n\nI think this problem also highlights the need for an acceptance test that validates the correct behavior of puppetserver after rebooting the SUT. [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], do you know if there is a way to add this to some list of behaviors we should be validating for all our projects with long-running processes?", "created": "2015-02-19T11:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] thanks, I think your diagnosis lines up with other conversations.  There are some other tickets that discuss this issue", "created": "2015-02-19T12:39:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "Regarding fixes in Wayne's comment, using tmpfiles.d is the correct way to create /run directories at boot on a systemd-enabled OS like EL7.  See the original description for an example config file, but you'll see many more under /lib/tmpfiles.d/ used by other programs.", "created": "2015-02-20T01:30:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] At the risk of being overly simplistic, we can \"reboot\", sleep 30, while ssh doesn't connect sleep 5, and once connected check the output from \"service pe-puppetserver status\".", "created": "2015-02-23T11:22:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I noticed this working on the AIO path changes in SERVER-369.  Once we get past the AIO changes I'd like to re-visit and re-triage this issue to make sure we're handling the PID file correctly.\n\nI have two observations in this ticket, they may be closely related or they may actually be two separate issues:\n\nFirst the PID file doesn't get created at all.\n\nSecond, the java argument {{-XX:OnOutOfMemoryError=kill\\ -9\\ puppetserver}} seems to be wrong because the kill command takes a PID, not a process name.\n\nRegarding the PID file, consider this output from commit ee58e0f of my topic branch named s369_the_vardir_that_is_not\n\nNote the lack of a PID file:\n\n{code}\n[root@vs9civja7wmbaws ~]# find /var/run/puppetlabs/ -ls\n 21143    0 drwxr-xr-x   4 puppet   puppet         80 Feb 24 23:22 /var/run/puppetlabs/\n 26130    0 drwxr-xr-x   2 puppet   puppet         40 Feb 24 23:22 /var/run/puppetlabs/puppetserver\n 21157    0 drwxr-xr-x   2 root     root           40 Feb 21 07:07 /var/run/puppetlabs/agent{code}\n\nEven though puppetserver is running:\n\n{code}\n[root@vs9civja7wmbaws ~]# ps auxww | grep java\npuppet    4027  0.2 22.2 3156304 864400 ?      Ssl  Feb24   1:20 java -Xms2g -Xmx2g -XX:MaxPermSize=256m -XX:OnOutOfMemoryError=kill\\ -9\\ puppetserver -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetlabs/puppetserver -Djava.security.egd=/dev/urandom -cp /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetlabs/puppetserver/conf.d -b /etc/puppetlabs/puppetserver/bootstrap.cfg\nroot     13180  0.0  0.0 112640   980 pts/0    S+   09:20   0:00 grep --color=auto java\n{code}\n\nAnd the configuration file specifies the rundir, which is writable by the process:\n\n{code}\n[root@vs9civja7wmbaws ~]# cat /etc/puppetlabs/puppet/puppet.conf\n[master]\nvardir = /opt/puppetlabs/server/data/puppetserver\nlogdir = /var/log/puppetlabs/puppetserver\nrundir = /var/run/puppetlabs/puppetserver\ncodedir = /etc/puppetlabs/code\n\n[main]\ndns_alt_names = puppet,vs9civja7wmbaws,vs9civja7wmbaws.delivery.puppetlabs.net\nverbose = true\n[root@vs9civja7wmbaws ~]# puppet master --configprint pidfile\n/var/run/puppetlabs/puppetserver/master.pid\n{code}", "created": "2015-02-25T10:29:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Concerning EL7, the config file located at {{/etc/tmpfiles.d/puppet.conf}} ensures {{/var/run/puppet}} is created on boot, so a missing vardir doesn't appear to be the problem. However the puppetserver service is installed as disabled, so it will never start on bootup until the service is set to \"enabled' with {{systemctl enable puppetserver}}. I'm going to investigate Ubuntu 14.04 tomorrow.", "created": "2015-02-25T18:03:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "It appears the PE installer does enable the Puppet server service, so that is strictly a FOSS issue.", "created": "2015-02-26T13:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "In FOSS I think it's always been the case that on deb, packages with services automatically start/enable the service, but on rhel they don't.  This pre-dates puppetserver and I believe it is consistent with how packages like postgres behave.", "created": "2015-02-26T14:18:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "The PE installer does not deploy a {{/etc/tmpfiles.d/pe-puppet.conf}} file which is what the OS would use to create the {/var/run/pe-puppet} directory. One should be deployed with the following contents:\n\n{code}\nD /var/run/pe-puppet 0755 pe-puppet pe-puppet -\n{code}", "created": "2015-02-26T14:37:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], should this issue be corrected by the integration team?", "created": "2015-02-26T14:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] you can route this as you see fit.", "created": "2015-02-26T14:48:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "I assume there is some sort of equivalent for Debian-ish systems as well.", "created": "2015-02-26T17:25:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I've got a test loop for this when we have a fix.  Ping me for details.", "created": "2015-02-27T08:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'd like to summarize where we think we are on the investigation for this one.  Please correct me where I'm wrong...\n\n*FOSS EL7*\n\n1) We believe the {{/var/run/puppet}} directory is being created fine at boot - because the {{/etc/tmpfiles.d/puppet.conf}} file installed by the upstream \"puppet\" package specifies that it be created.\n\n2) It appears that the {{/var/run/puppetserver}} directory is specified in the package itself rather than as a file to be created via an {{/etc/tmpfiles.d/puppetserver.conf}} file.  Presumably, this would mean that it would not be re-created following a reboot?  Seems like we should we correct that in the \"puppetserver\" packaging?\n\n3) Post installation, the \"puppetserver\" service is not \"enabled\" by default but probably should be so that the user doesn't have to \"manually\" enable it.  This was spun off into a new ticket - SERVER-398.\n\n*PE EL 7*\n\n4) Apparently the \"pe-puppet\" package doesn't have an \"/etc/tmpfiles.d/...\" file which would ensure that the {{/var/run/pe-puppet}} directory is created.\n\nSeems like this is a separate issue which should be filed as a PE ticket, and maybe assigned to the Integration team.  [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330], you agree?\n\n5) Does the same issue exist for the {{/var/run/pe-puppetserver}} directory creation?  And, if so, seems like that should be corrected in the pe-puppetserver service packaging?\n\n*FOSS and PE Ubuntu 14.04*\n\n6) Still need to investigate.  Presumably, the answer is not going to be exactly the same as for EL 7, at least on FOSS, especially given that we have separate reports of a problem around the {{/var/run/puppet}} directory not being automatically created at boot - SERVER-385.\n\n---\n\n7) Given path and packaging changes, still need to investigate /var/run/... more generally for AIO.  [~accountid:623c12b6ee1b5a0070293582] - are we covered for tickets there?\n", "created": "2015-02-27T10:25:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], that is mostly correct, but as far as I can see, Puppet server 1.x uses the same vardir as Puppet but you correct in that we will need to address that for Puppet server 2.x.", "created": "2015-02-27T10:57:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Actually these sound like release ticket(s) for the packaging changes you have listed.  Though it sounds like there may need to be more investigation for PE?  So perhaps give it the integration scrum team and we can finish investigation in PE and then coordinate with release on the package fixes.", "created": "2015-02-27T12:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330].  [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] indicated that he would file PE tickets for the follow-up PE-specific work to be done around this issue.  We'll make sure those are assigned to you as they are created and will leave it to you to re-route to others as appropriate.", "created": "2015-02-27T12:30:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "Sounds good.", "created": "2015-02-27T12:32:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] I noticed this got changed to Ready for Merge, but I couldn't find a pull request.  Could you point me in the right direction?", "created": "2015-03-09T12:57:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Oh shoot, I forgot this particular ticket is tracking both SERVER-404 and PE-8450. I'll move it back.", "created": "2015-03-09T13:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "In the interest of reducing the number of tickets open for tracking this issue, I'm going to close this one as a \"duplicate\" of the two tickets relating to ensuring the existence of {{/var/run/puppet}} by service start time that were spun off from this issue:\n\n- SERVER-404 (for open-source Puppet)\n- PE-8450 (for Puppet Enterprise)\n\nFor public-facing updates to be delivered for PE-8450, I'd propose that ENTERPRISE-502 be tracked.", "created": "2015-03-12T17:33:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Setting SERVER-404 as the \"duplicates\" link for clearer resolution.", "created": "2015-03-24T15:47:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-04T05:13:00.000000", "creator": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c35b663"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3g7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1167844074_*|*_10007_*:*_1_*:*_8338346_*|*_3_*:*_3_*:*_1359257537_*|*_5_*:*_1_*:*_48790564160_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_13962499_*|*_10006_*:*_1_*:*_601795464"}], "description": "When you install the puppetserver package and you reboot the machine, it does not start anymore because systemd cleans up /var/run/puppetlabs at each boot\n\nThe issue in PE is that {{/var/run/pe-puppet}} does not exist unless pe-puppet has started before pe-puppetserver.  \n\nWe should drop a file on EL7 to create the directory at boot time like following: https://github.com/theforeman/foreman-packaging/blob/rpm/develop/foreman-proxy/foreman-proxy.tmpfiles\n\nThis was also seen in ENTERPRISE-517 (EL 7) and ENTERPRISE-502 (Ubuntu 14.04) \n\n  \n\n", "environment": "CentOS 7\nPuppetserver 2.0.0.SNAPSHOT.2015.02.03T1453", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "16917", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "16917", "issueType": "Bug", "key": "SERVER-336", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "resolution": "Duplicate", "resolutionDate": "2015-03-12T17:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver on EL7 or Ubuntu 14.04 does not always work after a reboot", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] [~accountid:623c12b6ee1b5a0070293582] one of the tickets that we filed for Puppet Server 2.0 is about the possibility of splitting off a separate 'vardir' for Puppet Server vs. the agent.  If we do that, it may resolve the errors that we are seeing in the test logs.  We still probably need a test to cover the success of the 'store' report processor regardless, but it'd be nice if you guys could update this ticket based on the outcome of that conversation that would be appreciated.", "created": "2015-02-17T17:32:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "In puppet AIO acceptance, we have added a workaround setup step to chown/chmod various server directories (reports, bucket, server_data, yaml) to ensure the puppetserver can write to them.", "created": "2015-02-17T18:44:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "I'll probably be picking up this ticket. \n\nLike Chris suggested, I'll add a test that uses the {{store}} report processor, does an agent run, and checks that the report is created successfully.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Does this sound adequate? Also, the {{puppetlabs/qatests}} repo contains a bunch of report processor tests for PE: https://github.com/puppetlabs/qatests/tree/master/suites/pe/tests/023_pe_reports_processor\n\nI don't know how this affects puppetserver exactly, but it might be giving the coverage we want already? [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] thoughts? Or maybe we should port these to the puppetserver acceptance tests?", "created": "2015-05-05T16:59:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I vote for \"porting\" tests out of qatests into puppetlabs/puppet-server/acceptance.  If you are going first, this needs to be done carefully with visibility from [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], and [~accountid:623c12b6ee1b5a0070293582] at a minimum.  We need to make sure the Green team at large is OK with the plan of starting to pull tests out of qatests and put them in acceptance (when those tests work with FOSS)\n\nThe potential downside for the acceptance tests is that they will take longer to run.  QATests needs to die and those tests need to go somewhere...\n\nDiscuss...", "created": "2015-05-05T17:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I know that this was reported as a SERVER ticket, but it seems like the best place for this new test to live would be in the Puppet acceptance suite (https://github.com/puppetlabs/puppet/tree/master/acceptance) rather than Puppet Server acceptance.  Nothing particularly \"Puppet Server\" specific about this test - i.e., should be applicable to a Rack/WEBrick master as well as a Puppet Server master.  Maybe this should be converted into a PUP ticket instead of a SERVER one?\n\n[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], not sure if there's a longer term plan to consolidate any of the FOSS-applicable QATests over into the FOSS Puppet acceptance suite but reusing existing tests rather than writing them from scratch definitely sounds like a good idea to me.  We'd need to ensure, though, that any tests we repurpose for this don't have any external PE dependencies.  'store' report processor rather than PuppetDB or console sounds best to start with here to minimize external dependencies.", "created": "2015-05-05T17:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'd have no problem with porting an existing QA test rather than writing a new one.\n\nI agree with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] that writing the test against PUP probably makes sense, as long as [~accountid:623e796e8d8b9c0068b9f467] and [~accountid:63d40628f6e1b543161789a7] are on board.\n\nThe main goal of this ticket, though, in terms of what I was asking [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] to do, is just to prevent that one silly issue that we have where we see tons of errors in the puppet server logs because the `store` report processor is silently failing throughout our entire test run.  If there's a test from QATests that we can pull to achieve that goal, great.  I do want to be careful that we don't drag [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] into any sort of bigger-picture undertaking w/rt that porting effort, though.  If we think we're at risk of that then I might just have him kick this ticket back into the pool and move onto something else.\n\nI'd also be happy to break this out into more than one ticket if what I'm describing here doesn't fulfill the complete list of expectations that [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] had when creating this ticket.", "created": "2015-05-06T03:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}The main goal of this ticket, though, in terms of what I was asking Joe Pinsonault to do, is just to prevent that one silly issue that we have where we see tons of errors in the puppet server logs because the `store` report processor is silently failing throughout our entire test run.{quote}\n\nYep, that was my goal with this ticket as well - not to address the broader questions about combinations of report processor testing we should be doing, the future of the QATests suite, etc.  My intent with this ticket was to fix the appearance of that error in the log output but, more importantly, to ensure that we have at least some level of sanity check that we haven't fundamentally broken report processing.  If it becomes too problematic to get that one simple test into the Puppet acceptance suite, I'd also be fine with just doing this one in the Puppet Server acceptance suite.  Just wanted to raise the question of where it should live before the work got underway. \n\n\n\n", "created": "2015-05-06T16:40:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "(y) for adding/porting a basic report processing acceptance testing to puppet acceptance. That said it looks like we have something already: https://github.com/puppetlabs/puppet/blob/master/acceptance/tests/reports/submission.rb#L62-L76. It would be good to audit the existing test and see if it needs updating. Specifically, {{on master, \"grep -q #\\{agent\\} #\\{testdir\\}/\\*/\\*\"}} seems a little dubious.", "created": "2015-05-06T17:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:63d40628f6e1b543161789a7] - yeah, that looks like a perfect one to start with.  I expect that test will need a bit of rework to fit the bill here since it looks like that test is being run and passing in our recent Puppet Server acceptance testing builds but there is still evidence of the \"Permission denied\" errors in the log.  Hmmm, maybe that's because the test defines its own custom reportdir that it creates and therefore would bypass the permission denied error?  Seems like there'd be some value in having a test ensure that writing reports to the default reportdir works out of the box for an agent run.", "created": "2015-05-06T18:02:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Good point [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], we should use the existing {{reportdir}} to validate permissions issues.", "created": "2015-05-06T23:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] - I'm thinking this will probably end up needing to be split into 2 tickets:\n\n- SERVER ticket (could just be this one) to ensure that the default {{reportdir}} is writeable prior to the rest of the test suite being run.\n\n- New PUP ticket that would involve updating that existing {{submission}} test or creating a new similar test that uses the default {{reportdir}} to store the report and does something more intelligent to validate that some content from the report was stored properly.\n", "created": "2015-05-08T15:26:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I was talking with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and he thinks it would be ok to move this to PUP and fix up the existing {{submission}} test, so long as we tested it locally against puppetserver to make sure it solves our problem in the short term, since it might take a little while to make it into the puppetserver CI. Does that sound ok?", "created": "2015-05-08T16:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] I still think there's going to be work both to fix up the existing {{submission}} test, which makes sense to me to do in the PUP project, as well as work to ensure that the {{reportdir}} is created as writeable by Puppet Server.  What were you proposing we do around making the {{reportdir}} writeable?  Would that still be work done as part of this ticket and would that be work in the SERVER project?", "created": "2015-05-22T14:04:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-03T14:01:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17694ce9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xtb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1222142929_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_33512638615"}], "description": "For some time, the agent runs performed by FOSS Puppet acceptance tests run against Puppet Server encounter failures when the master tries to deliver reports.  The failures are due to the 'puppet' user that the java puppetserver process is running as not having write permission to the reports directory.\n\nThis failure is likely caused because when early \"puppet apply\" is performed during execution of the acceptance suite, the reports directory is created as owned and writeable only by the root user.  This issue is tracked separately as PUP-3459 and PUP-3165.\n\nWhen/if solutions for the PUP tickets are pursued, the reports directory issue may automatically be cleared up.  In the meantime, though, we should find a way to mitigate this for Puppet Server testing.  Specifically:\n\n1) Find a way to have the reports dir created as writeable by the \"puppet\" user.\n\nAn earlier attempt at this was done as the \"puppet_apply_as_puppet_user\" helper method -- see https://github.com/puppetlabs/puppet-server/blob/533073b13be9294360205be3b7f6d1d1c49d7f68/acceptance/lib/helper.rb#L192.  This didn't seem to address the issue, though, so a different solution needs to be pursued.\n\n2) Add at least 1 test to the Puppet acceptance suite which actually validates that a report is successfully delivered.\n\nThe reports directory permission problem does not cause any current Puppet acceptance tests to fail - just messages being written to the puppetserver log.  This could lead to reports being broken at any time without any means of detecting it.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "16682", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16682", "issueType": "Task", "key": "SERVER-335", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Incomplete", "resolutionDate": "2016-03-11T14:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve puppet master reports acceptance testing", "timeSpent": "PT0S", "updated": "2016-04-20T15:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Merged into master as https://github.com/puppetlabs/puppet-server/commit/744d06f4fca9e38f1e5b7ee42483e1c778b2aec4", "created": "2015-02-04T12:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This appears to have low severity because the previous behavior was expensive in terms of time, but not stability", "created": "2015-03-10T14:03:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed with Jeff McCune.  There is a risk this will regress.  QA to plan an automated test.", "created": "2015-03-11T16:37:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This fails:\n\ncurl -k https://localhost:8140/thisdoesnotexist\nError: Invalid URL - Puppet Server expects requests that conform to the /puppet and /puppet-ca APIs.\n\nNote that Puppet 3 agents aren't compatible with this version", "created": "2015-03-12T13:54:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:623c12b6ee1b5a0070293582] [~accountid:623e7507866b810069e57527]  This fails.  Puppet Server version: is blank.  ", "created": "2015-03-12T14:03:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I've just pushed up a PR that addresses this issue. As it turns out, the default group-id used by the dujour version check library is no longer correct, and as such only works for getting the Puppet Server version in a test environment.", "created": "2015-03-13T14:36:00.000000"}, {"author": "623e7507866b810069e57527", "body": "Looks like a the full integration test suite had a green run last night with these changes, so I'm putting this back into testing.", "created": "2015-03-17T10:56:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This got shipped before it could be functionally reviewed.  I'm setting this to close.", "created": "2015-04-29T12:46:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I'm dropping the risk assessment on this ticket", "created": "2015-05-05T12:50:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-03T10:36:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e9e1d1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovbb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_3103000059_*|*_1_*:*_2_*:*_88816385_*|*_10007_*:*_2_*:*_348904362_*|*_3_*:*_1_*:*_3441862_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_3808761936_*|*_10006_*:*_1_*:*_85567"}], "description": "Currently, we are generating the 404 upgrade message laid out in SERVER-148 every time a route that should get that error message is handled. Generating this includes grabbing the Puppet Version through JRuby, which is an expensive operation. This should be moved into startup and done once.\n___\nRisk assessment: Medium (Devs believe there is a strong chance this will regress.  QA to perform FR and to make an automated test.)\nProbability: High (code runs at every puppetserver service start operation)\nSeverity: Low", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16914", "fixedVersions": ["SERVER 2.0.0"], "id": "16914", "issueType": "Improvement", "key": "SERVER-334", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Fixed", "resolutionDate": "2015-04-29T14:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Get Puppet Version on startup", "timeSpent": "PT0S", "updated": "2015-05-05T14:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Haus mentioned that if we modify ezbake to allow setting a user's homedir, then we could remove https://github.com/puppetlabs/puppet-server/blob/987982286ee87224d03f84f263e4dc6e163e00bc/resources/ext/ezbake.conf#L20.\n\nIt's possible we don't need https://github.com/puppetlabs/puppet-server/blob/987982286ee87224d03f84f263e4dc6e163e00bc/resources/ext/ezbake.conf#L30-L31 - we should try without it and see if it works.\n\nHaus also mentioned that while the comment mentions needing write access to the conf dir, that seems wrong, so we may want to try without that and see.\n", "created": "2015-02-04T17:34:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "This also should probably wait until the puppet-agent package is more finalized.", "created": "2015-02-10T12:48:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I'm working on this as part of the SERVER-369 work.", "created": "2015-02-21T13:10:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "The world has changed drastically with the AIO paths in master.  The current set of post install actions in master are necessary and has been trimmed down for EL-7.  The user home directory should be created appropriately when Rob Braden adds that behavior to the puppetserver packages and removes the user from the puppet-agent packages, until then the usermod postinst action is still required.", "created": "2015-02-26T18:26:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-02T15:06:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@731f51f0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb5r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1071836498_*|*_3_*:*_1_*:*_60493442_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_543890071_*|*_10006_*:*_2_*:*_409398105"}], "description": "-Since we don't have complete AIO puppet-agent packages/since the puppet-agent packages aren't currently doing everything they need to do (such as creating the puppet user), in order to get puppetserver packages, a number of hacks in the postinstall and in the acceptance setup helpers had to be made.-\n\nIt was decided that the puppet-agent packages won't be creating the puppet user after all, so we still need to do some stuff in the postinstall. However, we can probably do some cleanup of these sections in ezbake.conf. We should take another look at this once puppet-agent packages are a little more settled and see what we can remove safely.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15813", "fixedVersions": ["SERVER 2.0.0"], "id": "15813", "issueType": "Task", "key": "SERVER-333", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Done", "resolutionDate": "2015-02-26T18:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Cleanup hacks from packaging post install", "timeSpent": "PT0S", "updated": "2015-12-30T16:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Enabled SSLv3 as per release note instructions with the following change on eternal.delivery.puppetlabs.net:\n\n{code}\neternal% diff -U2 /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/security/java.security{.orig,}\n--- /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/security/java.security.orig\t2015-02-02 14:12:30.000000000 -0800\n+++ /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/security/java.security\t2015-02-02 14:11:15.000000000 -0800\n@@ -439,3 +439,3 @@\n # Example:\n #   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048\n-jdk.tls.disabledAlgorithms=SSLv3\n+# jdk.tls.disabledAlgorithms=SSLv3\n{code}\n\nIf the unit tests pass with this system level change, the plan of action is to remove SSLv3 from the list of disabled algorithms in code, because we need to allow our applications to allow the end user to explicitly configure SSLv3 for backwards compatibility.", "created": "2015-02-02T15:14:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Tests pass with SSLv3 re-enabled as per above comment.\n\nI'm proceeding with the code level changes.  I'm going to put the properties file back the way it was, so tests will start failing again until the pull request to dynamically re-enable SSLv3 is ready.", "created": "2015-02-02T15:18:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Talking with Chris, his preference is to handle the re-enabling of SSLv3 using java command line arguments in the production code rather than dynamically changing the behavior of the production code at runtime.\n\nThe current plan is to change the lein profile to have the appropriate java command line argument that defines the property and handle the need for users to enable SSLv3 using documentation about how to adjust JAVA_OPTS in the service unit files.", "created": "2015-02-02T16:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I had been thinking we were only talking about re-enabling SSLv3 in the context of test code, not production code.  I was envisioning just setting the property programmatically inside of the tests that need to have it set to a specific value.  That seems like it would localize the behavior to only the part of the execution path that specifically needs it and would avoid having to impose a global behavior for all tests/production code.  For users that might need this for their own environments, though, I'd be good with having some new documentation about how to adjust the JAVA_OPTS be created.", "created": "2015-02-02T16:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pull request added.", "created": "2015-02-02T17:00:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}\nI had been thinking we were only talking about re-enabling SSLv3 in the context of test code, not production code. I was envisioning just setting the property programmatically inside of the tests that need to have it set to a specific value. That seems like it would localize the behavior to only the part of the execution path that specifically needs it and would avoid having to impose a global behavior for all tests/production code. For users that might need this for their own environments, though, I'd be good with having some new documentation about how to adjust the JAVA_OPTS be created.\n{quote}\n\nUnfortunately, I couldn't figure out how to enable SSLv3 only for the context of the test code because setting the property programmatically must happen before Java Secure Socket Extension (JSSE) is initialized.  I believe JSSE is initialized earlier in the process lifecycle than test initialization and execution.\n\nI'll add some documentation.", "created": "2015-02-02T18:21:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I've added a pull request that merges stable up into master.  It may be best to do a fast forward merge on that pull request since there's already a merge commit at HEAD and we may not want a double merge commit.", "created": "2015-02-03T12:15:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Merge up from stable into master seems to have proceeded without issue.", "created": "2015-02-04T10:26:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6]Can you functionally review this against Foss?  \n\nHere is an example of how puppet-server acceptance testing in beaker installs foss:\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_full-master/172/LAYOUT=64mdca,PLATFORM=centos6,label=beaker/consoleFull\n\nWhen you are done, can you assign this ticket back to me with workflow set to Ready for Review?  I want to throw some  QA tickets to remind us to expand our testing to include SSL3, TLS 1.0, 1.1 etc.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c]  I don't think we (QA) are going to get to this in time for the current sprint", "created": "2015-02-04T12:27:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This ticket seems to have been opened as the result of a failure in unit tests that now pass.  QA believes specific functional review for this issue is not needed.", "created": "2015-02-05T15:08:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-02T15:04:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3015c95b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp6in:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_142020858_*|*_1_*:*_1_*:*_129144_*|*_10007_*:*_1_*:*_6672219_*|*_3_*:*_1_*:*_6853485_*|*_10009_*:*_3_*:*_1130663939_*|*_5_*:*_1_*:*_3453328067_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_103428343"}], "description": "We're getting unit test failures in Jenkins resulting from Java 1.7.0 Update 75.  In the release notes [1], and CVE-2014-3566 [2] they mention the following:\n\n{quote}\nStarting with the January 20, 2015 Critical Patch Update releases (JDK 8u31, JDK 7u75, JDK 6u91 and above) the Java Runtime Environment has SSLv3 disabled by default.\n{quote}\n\nAnd\n\n{quote}\nSSLv3 is disabled by default\nStarting with JDK 7u75 release, the SSLv3 protocol (Secure Socket Layer) has been deactivated and is not available by default. See the java.security.Security property jdk.tls.disabledAlgorithms in <JRE_HOME>/lib/security/java.security file.\n\nIf SSLv3 is absolutely required, the protocol can be reactivated by removing \"SSLv3\" from the jdk.tls.disabledAlgorithms property in the java.security file or by dynamically setting this Security property to \"true\" before JSSE is initialized.\n{quote}\n\n[1]: http://www.oracle.com/technetwork/java/javase/7u75-relnotes-2389086.html\n[2]: http://www.oracle.com/technetwork/java/javase/documentation/cve-2014-3566-2342133.html", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15244", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "15244", "issueType": "Bug", "key": "SERVER-332", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-02-18T17:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Fix SSLv3 with JVM 1.7.0_75", "timeSpent": "PT0S", "updated": "2015-12-30T16:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We should just move this setting back into the `jruby-puppet` settings where it belongs.  The only reason it wasn't already there is because of exactly the hack described by this ticket.", "created": "2015-02-02T17:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This is a blocker for 2.0, but not for the initial nightlies.", "created": "2015-02-02T17:44:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Whoever picks this up should talk to releng? about whether the ruby path is finalized and we can start this work.\nThe path might still be in flux, but perhaps it's been settled on.", "created": "2015-02-10T12:46:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - \n\nbq. We should just move this setting back into the `jruby-puppet` settings where it belongs.\n\nThis means that an upgrade would necessitate changing the existing config files to account for this change, right?  Just want to make sure we're okay with that before we make this change.", "created": "2015-02-11T14:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm ok with a breaking change on that, but I don't think this would actually break anything", "created": "2015-02-11T14:57:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Okay, good to know we are okay with the breaking change.", "created": "2015-02-11T15:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] I see that you moved these to \"Needs Information\".  What information are you looking for?", "created": "2015-02-22T08:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Oh, now I see that moving something to 'blocked' on our agile board puts it into 'needs information'.  That's... weird.\n\nIn any case, did we decide that this was not actionable independent of the things that [~accountid:623c12b6ee1b5a0070293582] is working on?", "created": "2015-02-22T08:59:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yeah, \"Blocked\" not \"Needs Information\".  We just decided that [~accountid:623c12b6ee1b5a0070293582] would do this along with the handful of other tickets around getting things working again.  In fact I think the just put a PR up including this change :D", "created": "2015-02-23T11:50:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "See: https://github.com/puppetlabs/puppet-server/pull/411#discussion-diff-25198115\n\n{quote}\nI think this takes us part of the way toward what SERVER-331 was calling for, but not all of the way. I think we eventually want to just fold the ruby-load-path setting back into the jruby-puppet section and do away with the os-settings section entirely. @cprice404 - does that sound right?\n\nI'm okay with doing this folding in a follow-up PR for SERVER-331 for the sake of getting this PR through.\n{quote}\n\n{quote}\nYes, SERVER-331 involves getting rid of this section entirely, and yes it's fine to deal with that in a follow-up PR (I think that makes more sense).\n{quote}", "created": "2015-02-26T18:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Puppet-Server Integration smoke tests were green from this PR:\n\nhttps://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_smoke-master/265/\n\nPuppet-Server Integration full tests did not show any new failures that were not present in the prior run:\n\n- Run prior to the PR being integrated:\n\nhttps://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/197/#showFailuresLink\n\n- Latest run:\n\nhttps://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/198/#showFailuresLink\n\n--\n\nMoving to \"Testing\" column.  Probably warrants QA review due to the external change that this introduces - migration of the ruby-load-path from the os-settings to the jruby-puppet configuration section.", "created": "2015-03-04T13:43:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Considering this to be medium risk.  Copied the vendor_ruby dir to vendor_ruby_test, and ensured that puppetserver failed to start.  Moved the jruby-puppet: { ruby-load_path in puppetserver.conf, started up puppetserver just fine.  Resolving.", "created": "2015-03-06T18:27:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-02T14:24:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e8c0408"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3fb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_72856738_*|*_1_*:*_1_*:*_12079195_*|*_10007_*:*_1_*:*_340188692_*|*_3_*:*_3_*:*_11588222_*|*_4_*:*_1_*:*_19019_*|*_5_*:*_1_*:*_49302267382_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_189818836_*|*_10004_*:*_1_*:*_525701023_*|*_10006_*:*_3_*:*_1627160779"}], "description": "For Server < 2.0, the value for {{ruby-load-path}} in os-settings.conf depended on the operating system and where ruby was installed etc. This meant that we generated this conf file during the install step of packaging (https://github.com/puppetlabs/puppet-server/blob/master/resources/ext/ezbake.conf#L22-L24 and https://github.com/puppetlabs/puppet-server/blob/master/resources/ext/ezbake.conf#L36-L38) and that we have to do some hackery in the acceptance tests (https://github.com/puppetlabs/puppet-server/blob/master/acceptance/lib/helper.rb#L154-L186) to lay this down when using beaker.\n\nFor AIO, the ruby-libdir will always be the same thing no matter the platform, so we can lay os-settings.conf down in a regular config file and remove all of this stuff.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15040", "fixedVersions": ["SERVER 2.0.0"], "id": "15040", "issueType": "Improvement", "key": "SERVER-331", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-03-06T18:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Don't create os-settings.conf in install step", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2015-02-02T12:42:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67593245"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyonh3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1465998_*|*_1_*:*_1_*:*_17745738_*|*_10007_*:*_1_*:*_1881111486_*|*_3_*:*_1_*:*_806054026_*|*_5_*:*_1_*:*_37922267075_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_11458930941"}], "description": "This will be a beaker script(s) that kicks off a gatling run against a machine. \n\nThis has two steps:\n* Start Memory monitoring script on SUT\n* Start gatling\n\n", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16726", "fixedVersions": ["None"], "id": "16726", "issueType": "Task", "key": "SERVER-330", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Done", "resolutionDate": "2015-07-16T12:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automate Launching gatling test", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Why are we doing this?  Isn't this handled by beaker via the \"install_pe\" method?  Or are we looking for something that gives us more control?  ", "created": "2015-04-24T13:03:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "I was imagining it just as a wrapper around install_pe with some way of specifying the build hash in the jenkins run-job dialog. Nothing fancy", "created": "2015-04-24T14:46:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] I think there are existing Jenkins jobs that you can look at that have this well covered (unless there is some reason why existing methods don't work)  Shout if you want help finding this stuff in existing Jenkins jobs.", "created": "2015-04-24T15:29:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] That's a really good point, when I get back around to this I'll pick your brain. Definitely don't want to repeat work (and probably do it worse)", "created": "2015-04-24T15:38:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I don't assume you would do it worse.  I think its OK to do it different.  I just wanted to make sure you know that it's been done so that if you wanted to save time you could have a look at how it's been done in the past.", "created": "2015-04-24T16:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yep, we will definitely look to leverage prior art on this.\n\nNote that we need to be able to support OSS Puppet Server for this task, though, in addition to PE.", "created": "2015-04-30T04:57:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:623c0b72bef8a60068c796ce] can this be ready for ci/ready for test/done? Looks like the PR has been merged now.", "created": "2015-06-08T16:06:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Beat me to it, thanks", "created": "2015-06-09T09:26:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-02T12:36:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1691f8e0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoson:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18128837_*|*_10007_*:*_1_*:*_585881959_*|*_3_*:*_1_*:*_350910969_*|*_5_*:*_1_*:*_41131668687_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_10001549691"}], "description": "After a test machine has been reprovisioned, this Jenkins job will install Puppet/PE.\n\nA beaker script that installs a specific build of puppet/puppet server or PE.\n\nNote that for dev purposes we may just assume that the machine exists rather than provisioning it; running cobbler in a dev environment has proven to be extremely difficult.", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "15589", "fixedVersions": ["None"], "id": "15589", "issueType": "Task", "key": "SERVER-329", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2015-06-09T09:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create job to install Puppet Server on SUT", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0]  - this is currently in the jade sub-team but an emerald sprint.  Seems like we should either a) remove the 'jade' sub-team or b) remove it from the emerald sprint, probably just send it to the backlog.", "created": "2016-01-20T14:54:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Not sure why my name was still on it. [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] probably knows what's best for it since he was working on the gatling automation recently. I'll go ahead and remove the jade sub-team though either way", "created": "2016-01-20T15:28:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:623c0b72bef8a60068c796ce] Don't know why your name was on it.  This isn't something we've talked about doing anytime soon so unassigning it and putting it in Ready for Engineering and in the Gatling epic seems like the right thing to do.", "created": "2016-01-20T16:33:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "When we have time to consider this, we ought to consider using razor (unless it turns out the instrumenting razor turns out to be horribly expensive compared to cobbler.)\n", "created": "2016-01-20T18:00:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-02T12:17:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "N/a, not code"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c3317b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-562"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn2mv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_16271498_*|*_1_*:*_1_*:*_19234397_*|*_10007_*:*_1_*:*_246093281_*|*_3_*:*_1_*:*_344886545_*|*_5_*:*_1_*:*_5768034762_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_45694729327"}], "description": "Starting a long running test ideally needs a clean install of the OS. There needs to be automation, probably in the form of a Jenkins job, that uses cobbler to reprovision a base metal machine.\n\nMy initial impression is that there will be a some number of Linux ISOs sitting on a machine running cobbler and this will be setup once and remain mostly static. The automation should only cover forcing the SUT to netboot and talk to the cobbler box.\n\nOnce a machine is provisioned it can be handed off to another Jenkins job that installs puppet", "epicLinkSummary": "Automation of performance and long running memory tests", "estimate": "PT0S", "externalId": "16912", "fixedVersions": ["None"], "id": "16912", "issueType": "Task", "key": "SERVER-328", "labels": ["server-priority"], "originalEstimate": "PT0S", "parent": "17595", "parentSummary": "Automation of performance and long running memory tests", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2016-07-22T16:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automate provisioning of machines", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Might be easiest to just do this test against a PE build assuming we can get [~accountid:623e7507866b810069e57527]'s changes rolled into a PE build soon.", "created": "2015-02-02T11:58:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-02T11:48:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cbc1d9d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyottz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20970371_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_58401448512"}], "description": "We should do some long-running memory tests for Puppet Server 2.0 with the master configured to store reports in a PuppetDB.  This would make the tests a little more real-world than what is currently underway for SERVER-309 and would help exercise the HTTP request path from the master that has been the source of various memory leaks in the past.  We should hold off on starting this until the work for SERVER-206 has gone in, though, as that ticket will close off a known memory leak related to HTTP client requests.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16428", "fixedVersions": [], "id": "16428", "issueType": "Task", "key": "SERVER-327", "labels": [], "originalEstimate": "PT0S", "parent": "16150", "parentSummary": "Manual Gatling Test Epic", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2016-12-09T16:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Do some long-running Puppet Server 2.0 gatling runs w/ PuppetDB hooked up", "timeSpent": "PT0S", "updated": "2016-12-09T16:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I consider this to be High Probability (it will execute on every agent run) and High Severity (if it breaks, the agent run can't complete)\nHigh Probability x High Severity = High Risk.  Functional Review planned, automated acceptance test planned for the future.\n\nhttps://testrail.ops.puppetlabs.net/index.php?/cases/view/64092\n\n\n\n", "created": "2015-03-11T15:45:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I think there is actually an automated test for this now: https://github.com/puppetlabs/puppet/blob/master/acceptance/tests/environment/can_enumerate_environments.rb#L63\n\nI think the reason this bug happened/ticket was created was that at the time the v2 route was removed we didn't yet have Puppet acceptance tests able to run against Puppet Server because we had no working builds. Had we had working builds (i.e. that could start Puppet Server) then we would have seen an acceptance failure.", "created": "2015-03-11T16:00:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Thank you [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091].  QA will not provide an acceptance test because it already exists, see above link.", "created": "2015-03-11T17:20:00.000000"}], "components": ["Puppet Server"], "created": "2015-02-02T11:42:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57f22e3e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3kf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3103004361_*|*_1_*:*_1_*:*_154875_*|*_10007_*:*_1_*:*_76514607_*|*_3_*:*_1_*:*_3995333_*|*_5_*:*_1_*:*_48812647582_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_73242972_*|*_10006_*:*_1_*:*_21783712"}], "description": "When the v2 routes were removed (https://github.com/puppetlabs/puppet-server/commit/d3bf38d5e6da085a0cc8c8083ef568bc09d659cb), the `/environments` endpoint wasn't added to the V3 routes. It needs to be in order for that to be accessible when running puppet server.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17606", "fixedVersions": ["SERVER 2.0.0"], "id": "17606", "issueType": "Bug", "key": "SERVER-326", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-03-12T11:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add back `/v3/environments` endpoint", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "marking this as blocked, because it can't be moved forward until after we've cut the 1.0.8 release based on our latest changes to our release plans.", "created": "2015-03-16T11:08:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] When you have a chance I need to discuss test ideas for FR on this ticket.", "created": "2015-05-04T12:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] have you gotten input on FR for this?  Do you need it?  I can write something up, or we can set up a time to chat, or...", "created": "2015-05-12T03:44:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I think I'm good, except that I'm slow.  There's some rough notes in the TestRail linky.", "created": "2015-05-12T17:05:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "ADD THE DOCS", "created": "2015-05-13T12:07:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Attempted to make an automated test for this: Failed.\n1.  a single agent run requests many jruby requests.\n2.  there isn't a particularly graceful way to identify a given jruby instance from the user agent level.\n\nTested manually.  Setting max-requests-per-instance has the expected results when watching puppetserver.log when watching a single jruby instance.\n\n", "created": "2015-05-13T12:12:00.000000"}], "components": [], "created": "2015-01-29T13:01:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29298462"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Config changes make Probability extremely fluid.  Could be High.  Could be low."}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "We are concerned that if this is incorrectly implemented, there could be memory leak(s)"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovbr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_497822250_*|*_1_*:*_1_*:*_62533_*|*_10007_*:*_2_*:*_2275324371_*|*_3_*:*_2_*:*_3438854893_*|*_5_*:*_1_*:*_1829643777_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1209275148_*|*_10004_*:*_1_*:*_1557440959"}], "description": "This ticket would introduce a new configurable setting to the JRubyPuppet section of Puppet Server - {{max-requests-per-instance}}.  A basic description follows:\n\n---\n\n{{max-requests-per-instance}}: Optionally, limit how many HTTP requests a given JRuby instance will handle in its lifetime.  When a JRuby instance reaches this limit, it gets flushed from memory and replaced with a fresh one. Defaults to 0, which disables automatic JRuby flushing.  This can be useful for working around buggy module code that would otherwise cause memory leaks, but it causes a slight performance penalty whenever a new JRuby has to reload all of the Puppet Ruby code.  If memory leaks from module code are not an issue in your deployment, the default value will give the best performance.\n\n---\n\nOne other more subtle change with the implementation is that the JRubyPuppet pool changes from a FIFO (First-In / First-Out) to a LIFO (Last-In / First-Out) algorithm for how pool instances are borrowed from and returned to the pool as requests are handled.  This was done in order to avoid having instances running at about the same number of requests handled at all times and, therefore, otherwise incurring a heavier performance penalty with pool instances all being flushed at about the same time.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15238", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "15238", "issueType": "New Feature", "key": "SERVER-325", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-05-13T12:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add setting to flush jruby instances after a configurable number of requests", "timeSpent": "PT0S", "updated": "2015-12-17T16:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Good suggestion, and probably not too hard to implement.  Thanks!", "created": "2015-01-29T12:36:00.000000"}, {"author": "557058:091495e8-9cec-4527-9fa6-d220c3a9fcb8", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] yep - my vision is triggering a hit to this endpoint at the end of an r10k update, with a list of environments that have changed.", "created": "2015-01-29T12:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Heads up to [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4].\n\nThere are some performance issues around the 'refresh classes' functionality of the PE Node Classifier", "created": "2015-05-21T04:04:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I agree that the changes [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] is proposing for inclusion in 1.1/2.1 are quite low in-risk.  I've reviewed the PR", "created": "2015-05-21T14:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] let me know if you think this need additional validation and have any questions about it.", "created": "2015-05-25T13:00:00.000000"}], "components": [], "created": "2015-01-29T12:35:00.000000", "creator": "557058:091495e8-9cec-4527-9fa6-d220c3a9fcb8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14227ae0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywu13:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Priority increased due to support escalation"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_270867361_*|*_1_*:*_1_*:*_363718558_*|*_10007_*:*_1_*:*_106646965_*|*_3_*:*_1_*:*_631294_*|*_5_*:*_2_*:*_619542025_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_170152667_*|*_10006_*:*_1_*:*_9278407201"}], "description": "Currently, if you want to use this API endpoint to flush the environment cache, you have no choice but to flush the cache for ALL environments. Ideally, it would take an environment as parameter, so that you can only flush the environments you know to have changed.\n\nAs it stands, using this API endpoint is basically hitting the \"slow down the master\" button, if it's a master under heavy use.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16910", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "16910", "issueType": "New Feature", "key": "SERVER-324", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:091495e8-9cec-4527-9fa6-d220c3a9fcb8", "resolution": "Fixed", "resolutionDate": "2015-05-27T12:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow `environment-cache` to take an environment as an argument.", "timeSpent": "PT0S", "updated": "2015-06-23T17:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "puppetserver --version\npuppetserver version: 1.0.5.SNAPSHOT.2015.01.29T0948\n\npuppetserver gem env\npuppetserver ERROR:  While executing gem ... (NoMethodError)\n    undefined method `split' for nil:NilClass\n## ^^ Expected error, right?\n\npuppetserver gem list\n\n*** LOCAL GEMS ***\n\nffi (1.9.3 java)\njar-dependencies (0.0.9)\njruby-openssl (0.9.5 java)\njson (1.8.0 java)\nkrypt (0.0.2)\nkrypt-core (0.0.2 universal-java)\nkrypt-provider-jdk (0.0.2)\nrake (10.1.0)\nrdoc (4.0.1)\n\n##^^ even though I installed rvm, ruby 2.1, and pry.", "created": "2015-01-29T11:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The `gem env` error is expected, and not a regression from 3.7.1.\n\nTo clarify your last comment, you installed `pry` under your rvm ruby, correct?  And it doesn't show up in the puppetserver gem list?  If that's the case, then yes, this is what we were hoping for.", "created": "2015-01-29T12:06:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Agreed.  expecting an error for gem env.\n\nI installed pry in system MRI ruby both with and without RVM.  It doesn't show up in the puppetserver gem list in either case.\n", "created": "2015-01-29T12:09:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Reviewing for puppetserver --version = 1.0.6 inside of PE build 3.7.2-rc1-2-gcb3ca93 on RHEL7.\n\npuppetserver gem env fails as expected.\npuppetserver ruby --version returns a version string as expected\npuppetserver irb invokes the IRB as expected.\npuppetserver gem list returns a list of \n\ngem install pry... installs pry\npuppetserver gem list does not list pry as expected.\n\ninstall rvm & ruby 2.1...\ninstall pry\npuppetserver gem list does not list pry as expected.\n\nMarking this resolved for PE 3.7.2.\n\n\n", "created": "2015-01-29T13:35:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "https://testrail.ops.puppetlabs.net/index.php?/cases/view/62455", "created": "2015-01-29T16:17:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-29T10:17:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4ecc017c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxznj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1775159_*|*_3_*:*_1_*:*_8036444_*|*_10009_*:*_1_*:*_2051249_*|*_5_*:*_1_*:*_52430189486_*|*_6_*:*_1_*:*_0"}], "description": "Modifications to the MRI / system ruby GEM_PATH an installed gems flow into the puppetserver jruby environment.\n\nSTEPS TO REPRODUCE:\n- Observe and record the puppetserver gem environment:\n--  \"puppetserver gem env\"\n--  \"puppetserver gem list\"\n- Observe and record the MRI system gem environment:\n-- \"gem env\"\n-- \"gem list\"\n- Update the system ruby (using RVM on RHEL7 for example)\n- Observe, record, compare the puppetserver ruby environment and the MRI gem environment\n- Install pry in the puppetserver gem enviornment\n- Observe, record, compare...\n- Install pry in the MRI environment.\n- Observe, record, compare...\n\nEXPECTED RESULTS:\n-  We want the MRI gem paths to be completely separate from the Jruby/puppetserver gem paths so that there is a clear separation between jruby gems and mri gems.\n\nACTUAL RESULTS:\nMRI paths appear in the JRuby/puppetserver gem environment. \nMRI gems appear in the JRuby/puppetserver gem environment.\n \n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16909", "fixedVersions": [], "id": "16909", "issueType": "Bug", "key": "SERVER-323", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2015-01-29T13:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "MRI/system ruby paths and gems appear in the puppetserver jruby enviornment", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2015-01-29T09:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d8b670b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxznr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_92571528_*|*_3_*:*_1_*:*_525932618_*|*_6_*:*_1_*:*_0"}], "description": "In the 1/29/15 overnight run of Puppet Server FOSS #25 acceptance tests against the Puppet Server stable, we started seeing fails of the enc_nonexistent_directory_environment acceptance test.  For example, see: \n\nhttps://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-stable/132/LAYOUT=64mdca-64a,PLATFORM=ubuntu1204,label=beaker/testReport/junit/(root)/ruby_puppet_acceptance_tests_environment/enc_nonexistent_directory_environment_rb/\n\nWe should investigate this.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16426", "fixedVersions": [], "id": "16426", "issueType": "Bug", "key": "SERVER-322", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-02-05T13:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Investigate enc_nonexistent_directory_environment acceptance test fail", "timeSpent": "PT0S", "updated": "2015-11-20T08:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] you already did this, right?", "created": "2015-02-02T14:28:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] yep!", "created": "2015-02-02T14:32:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] Should I test this?  If so, how?  I guess BC means BouncyCastle?  Is there a PR?  How are we making sure that puppet server builds exclude this jar?  ", "created": "2015-02-04T12:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] it'd be good to validate.  All you need to do is do (roughly) an `unzip -l |grep -i META-INF |grep \"\\.jar$\"` on the installed uberjar from a recent build and verify that you don't see a bouncycastle jar inside of our jar. \n\nFor bonus points, run the same unzip command on an OSS 1.x Puppet Server uberjar and verify that you do see the bouncycastle jar there.", "created": "2015-02-04T12:17:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6]  If you get to this before me, it would help.", "created": "2015-02-04T15:25:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "Verified that bouncycastle or bc JAR is not included in the puppetserver.jar.\n\n{code}\nlocalhost:puppetserver-2.0.0.SNAPSHOT.2015.02.05T0906 $ unzip -l puppet-server-release.jar | grep -i META-INF | grep \"\\.jar$\"\n   563494  12-22-14 13:30   META-INF/jruby.home/lib/ruby/shared/jopenssl.jar\n    36523  12-22-14 13:30   META-INF/jruby.home/lib/ruby/shared/json/ext/generator.jar\n    29097  12-22-14 13:30   META-INF/jruby.home/lib/ruby/shared/json/ext/parser.jar\n   196482  12-22-14 13:30   META-INF/jruby.home/lib/ruby/shared/kryptcore.jar\n    13657  12-22-14 13:30   META-INF/jruby.home/lib/ruby/shared/kryptproviderjdk.jar\n   208781  12-22-14 13:30   META-INF/jruby.home/lib/ruby/shared/readline/jline-2.11.jar\n    58182  12-22-14 13:30   META-INF/jruby.home/lib/ruby/shared/readline/readline.jar\n   612219  12-22-14 13:30   META-INF/jruby.home/lib/ruby/shared/ripper.jar\n\n{code}", "created": "2015-02-05T15:34:00.000000"}], "components": [], "created": "2015-01-28T14:38:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19d10077"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp6jj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_437097034_*|*_10007_*:*_1_*:*_9820_*|*_5_*:*_1_*:*_51818240986_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_257444852"}], "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15783", "fixedVersions": ["SERVER 2.0.0"], "id": "15783", "issueType": "Task", "key": "SERVER-321", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-02-05T15:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "make sure Puppet Server 2.0 builds are excluding the JRuby BC jar", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Ping [~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f], [~accountid:557058:720f602d-ed4c-4553-a2cf-8e7dc40c0739]. What are your thoughts on using Razor vs Cobbler for provisioning the machines for these long running tests. \n\n[~accountid:557058:151c148a-2bb4-4fdc-9320-df94e73b0363] gave me a very informative overview and demo of Razor yesterday. I'm not very familiar with Cobbler, and with that in mind here are my thoughts on Razor.\nIt seems like a great tool, easy to setup and straight forward to extend with ruby scripts. It might make provisioning different OSs easier, since it abstracts using kickstart, preseed, etc into erb templates that get filled in automatically by Razor.\n\nRazor comes with brokers that can install puppet and PE after the OS installation, with parameters that can be set to point to whatever version of puppet we're testing.\n\nPlus the people working on Razor would get one more set of people testing their software for them.\n\nDoes razor sound compelling? Or would it be a poor use of my time compared to cobbler?", "created": "2015-02-03T12:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I would presume that the razor path would involve us standing up a razor instance somewhere inside the office, which would need to be maintained by someone in... ops?  delivery?\n\n[~accountid:557058:151c148a-2bb4-4fdc-9320-df94e73b0363] is that assumption correct?\n\n[~accountid:623e7ac51c7f6a00704b2aab] [~accountid:557058:a2383cac-f799-49a4-8b30-0d737d991e23] any idea who would end up needing to own that if we go that route?", "created": "2015-02-03T12:46:00.000000"}, {"author": "557058:362bc1c3-742f-4428-a556-fa2b03887e0f", "body": "Yes, \"who owns this\" is really the only important question. The way I understand things, I \"own\" QE's cobbler setup and I'm loathe to migrate it without a pretty compelling need.", "created": "2015-02-03T12:52:00.000000"}, {"author": "623e7ac51c7f6a00704b2aab", "body": "As much as I think it is important for us to all 'eat our own dog food' and while I'd like to see us use Razor I am not going to compel [~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f] to rebuild our existing (cobbler) capabilities using another tech stack (Razor).  QE is way too stretched thin to do spend effort on a zero sum rebuild.  If someone else wants to build this, I'd support the initiative and can even envision QE taking part, at some level.  Also, I feel Razor is a much more powerful (dangerous) tech, and I'd think OPS would need to much further involved in this as well.", "created": "2015-02-03T12:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "So those last two comments sound like the answer is \"cobbler\" for now, if I'm understanding all of this correctly.", "created": "2015-02-03T13:04:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Sounds that way to me. Thanks for the quick feedback everyone!\n", "created": "2015-02-03T13:41:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Research does not require QA review", "created": "2015-02-12T17:18:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-28T11:37:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f983765"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyy3nb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_453420300_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_78827633"}], "description": "For executing long running memory tests, we use bare metal machines, and reprovision them to maintain consistency between tests. \n\nThis is going to be automated soon, and there's a question of what technology to use to reprovision them. I believe currently Cobbler and kickstart are used and Ryan Guard has suggested looking into Razer as a solution.\n\nI'll use this ticket to post my findings and conclusions about each", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17604", "fixedVersions": [], "id": "17604", "issueType": "Task", "key": "SERVER-320", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Done", "resolutionDate": "2015-02-03T15:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Research Razer and Cobbler for long running memory tests", "timeSpent": "PT0S", "updated": "2015-02-12T17:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] please ping if you need help finding the relevant configs to do this, I've done it a bunch of times lately so I can show you pretty quickly.", "created": "2015-02-10T14:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] also I think we may want to target these changes at the stable branch and merge them up from there, in case we end up doing any additional 1.x releases.  This may have implications w/rt ezbake, so we may need to talk with [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241].", "created": "2015-02-10T14:03:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Moving back to in-progress since the PR was closed for re-work based on review feedback.", "created": "2015-02-13T12:48:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "moved this ticket to PE3.8 epic because the PR was merged against puppet-server/stable.\n", "created": "2015-03-02T19:07:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Blocked, can't install PE 3.8.", "created": "2015-03-03T16:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Could this one be tested against a FOSS package of Puppet-Server?  If a Puppet Server 1.1 were to land before a PE 3.8 release, it would be really nice to have this tested ahead of the Puppet Server 1.1 release.", "created": "2015-03-03T17:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] This is a package-level feature that needs testing against both FOSS and PE packages.  I think we could knock the FOSS part out now.", "created": "2015-03-05T19:58:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] You okay with us moving this one back to the \"Testing\" column?  Or wait until we also have something we can promote to pre-PE 3.8 for you to test?", "created": "2015-03-06T10:02:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Hasn't been implemented in PE.\n\n\n", "created": "2015-03-13T13:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Since this is a packaging issue, we should be testing both FOSS and PE packages before closing it out.", "created": "2015-03-13T13:28:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "FOSS testing is in progress...", "created": "2015-03-13T13:31:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated against foss build 2.0.0.SNAPSHOT.2015.03.12T0108", "created": "2015-03-13T13:39:00.000000"}], "components": [], "created": "2015-01-27T18:17:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40f03ff2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3fj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_514347788_*|*_10007_*:*_2_*:*_396825718_*|*_3_*:*_2_*:*_973035245_*|*_5_*:*_1_*:*_1482126211_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_528751673_*|*_10004_*:*_1_*:*_776146866_*|*_10006_*:*_1_*:*_678675092"}], "description": "pe-console-services and, more recently, puppetdb are already shipping with default logback configs that turn on the apache-style HTTP access logs for jetty.  we need to do this too.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "15039", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "15039", "issueType": "Task", "key": "SERVER-319", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-03-13T13:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "enable apache-style http access logs by default", "timeSpent": "PT0S", "updated": "2015-05-22T15:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Nothing for Test Rail here.", "created": "2015-03-26T16:23:00.000000"}], "components": [], "created": "2015-01-27T16:17:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56d7cc81"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywtzz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521608557_*|*_5_*:*_1_*:*_49382941398_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2688693885"}], "description": "[~accountid:70121:7b50b988-18ad-4913-8df5-c67397870b32] has a PR here:\n\nhttps://github.com/puppetlabs/ezbake/pull/157\n\nrelated to PDB-1034, which will allow projects built from ezbake to run acceptance (beaker) tests from source, rather than only from packages.  We need to track this and/or assist in getting in merged in so that we can start running our own tests from source as well.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16906", "fixedVersions": [], "id": "16906", "issueType": "Task", "key": "SERVER-318", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-03-05T20:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "track / assist with Ken's ezbake PR for running beaker tests from source", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Duplicate of SERVER-268", "created": "2015-02-04T15:38:00.000000"}], "components": [], "created": "2015-01-27T16:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a6baa87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypb53:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_521873816_*|*_5_*:*_1_*:*_51904313096_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_167154052"}], "description": "It seems that our readme's on how to run beaker tests for puppet server are out of date.  We need to update them to reflect the current state of the world.\n\n[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] said he could provide a gist of how he runs them when he needs to do this kind of thing.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15588", "fixedVersions": [], "id": "15588", "issueType": "Task", "key": "SERVER-317", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2015-02-04T15:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "update README on how devs should run beaker tests", "timeSpent": "PT0S", "updated": "2016-09-27T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "attachments": [], "comments": [], "components": [], "created": "2015-01-27T16:12:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@fe27c2a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xsn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_522005292_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_58402959185"}], "description": "In our retro today, we discussed some possible strategies for how devs should run beaker tests against Puppet Server.  One question that came up was \"is it OK for us to use vsphere?\"\n\nIt seems like various folks on the team have gotten differing impressions as to QA/QE's recommendations on that, varying from \"always use vsphere\", to \"you can use it but you'd better make damn sure you clean up after yourself\", to \"don't touch!\".  We need to run it down and get an authoritative answer, and then preferably document it somewhere.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15038", "fixedVersions": [], "id": "15038", "issueType": "Task", "key": "SERVER-316", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Determine \"best practices\" for devs using vsphere for beaker tests", "timeSpent": "PT0S", "updated": "2016-12-09T16:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "If this ticket is picked up, please let me and [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] know.  This would make part of my future work list substantially easier.", "created": "2015-07-08T12:40:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] Is there a rough draft I can have a look at?", "created": "2015-07-28T11:45:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] [~accountid:623e7507866b810069e57527] [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] [~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] The page I wrote up is here: https://confluence.puppetlabs.com/pages/viewpage.action?pageId=40802914. If some of you could review it and check that it makes sense, that would be great!", "created": "2015-07-29T10:34:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I read through Ruth's confluence page and find it to be great.  Very informative and useful.  I don't think there's any more work needed for this ticket, so I'm going to close it out.", "created": "2015-07-29T12:54:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Actually ... [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091], before we close this ticket, do you think it would be worthwhile to send out an e-mail (to the dev@ list or something like that, maybe tech-discuss@) to let people know about the doc you wrote?", "created": "2015-07-29T12:56:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] This looks good to me.", "created": "2015-07-29T13:46:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] Terrific doc -- lots of things I didn't know I didn't know. Made a few edits and a couple of comments.", "created": "2015-07-29T14:27:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Email sent to tech-discuss. Closing.", "created": "2015-07-29T16:22:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-27T14:49:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@715c8cd0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyolcf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "bandwidth at end of sprint"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_528020402_*|*_3_*:*_1_*:*_771827087_*|*_10009_*:*_1_*:*_20896061_*|*_5_*:*_1_*:*_36785364311_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_14492464639"}], "description": "It's pretty hard to tell what actually happens after you promote Puppet Server into PE. What tests get run, and how can you tell their status? Write up some docs to put on Confluence about this, and talk with other teams about what, if anything, they might already have written up.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15585", "fixedVersions": [], "id": "15585", "issueType": "Task", "key": "SERVER-314", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-07-29T16:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create docs about PE testing", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "+1", "created": "2015-07-23T11:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I would really like to get this near the top of the priority list for eng-driven work.", "created": "2015-09-14T14:17:00.000000"}, {"author": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "body": "kinda done with the recent changes? if other changes are needed, we can open specific tickets. ", "created": "2016-03-11T14:35:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-27T10:35:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@137f9fff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xtj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_543237833_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_34808805559"}], "description": "With ezbake-as-a-plugin, all the config files for Puppet Server that were in the ezbake repo are now in the Puppet Server repo in the ezake/ directory.\n\nThis means that we now have config files in {{dev/}}, {{resources/}}, and {{ezbake/}}. It is not very clear what all of these are used for, and you have to go rooting around in the code to figure this out.\n\nIt would be great to see if we can consolidate or get rid of some of these config files, and also make it clearer what each of these files is used for.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "16423", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16423", "issueType": "Improvement", "key": "SERVER-313", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Done", "resolutionDate": "2016-03-11T14:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Wrangle config files", "timeSpent": "PT0S", "updated": "2016-05-25T13:07:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I don't believe we intend to support `puppetserver gem server` as a valid use case for that CLI tool", "created": "2015-02-02T17:28:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] - does it work otherwise?  (aside from logging a stacktrace on ^C)", "created": "2015-02-09T15:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Can we test this with, e.g., 'list' / 'install' and see if the same error occurs?  If so then we should probably look into graceful ways to handle it.", "created": "2015-02-17T17:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Specifically: can we create a corrupt state by CTRL-C during a 'gem install' command?", "created": "2015-02-17T17:29:00.000000"}], "components": [], "created": "2015-01-26T15:25:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b4a4581"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyy1xb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2425977938_*|*_6_*:*_1_*:*_0"}], "description": "Passing CTRL-C to \"puppetserver gem server\" returns an exception error.\n\n\n^C\nException in thread \"main\" org.jruby.embed.EvalFailedException: org.jruby.exceptions.ThreadKill\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:137)\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1317)\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1310)\n\tat puppetlabs.puppetserver.cli.gem$run_BANG_.invoke(gem.clj:22)\n\tat puppetlabs.puppetserver.cli.subcommand$run.invoke(subcommand.clj:38)\n\tat puppetlabs.puppetserver.cli.gem$_main.doInvoke(gem.clj:29)\n\tat clojure.lang.RestFn.invoke(RestFn.java:457)\n\tat clojure.lang.Var.invoke(Var.java:427)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:172)\n\tat clojure.lang.Var.applyTo(Var.java:532)\n\tat clojure.core$apply.invoke(core.clj:617)\n\tat clojure.main$main_opt.invoke(main.clj:335)\n\tat clojure.main$main.doInvoke(main.clj:440)\n\tat clojure.lang.RestFn.invoke(RestFn.java:512)\n\tat clojure.lang.Var.invoke(Var.java:435)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:185)\n\tat clojure.lang.Var.applyTo(Var.java:532)\n\tat clojure.main.main(main.java:37)\nCaused by: org.jruby.exceptions.ThreadKill\n\tat org.jruby.RubyThread.throwThreadKill(RubyThread.java:517)\n\tat org.jruby.RubyThread.checkMail(RubyThread.java:216)\n\tat org.jruby.RubyThread.pollThreadEvents(RubyThread.java:513)\n\tat org.jruby.runtime.ThreadContext.pollThreadEvents(ThreadContext.java:664)\n\tat org.jruby.evaluator.ASTInterpreter.pollAndReturn(ASTInterpreter.java:243)\n\tat org.jruby.ast.WhileNode.interpret(WhileNode.java:164)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)\n\tat org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)\n\tat org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)\n\tat org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:130)\n\tat org.jruby.runtime.Block.yieldSpecific(Block.java:111)\n\tat org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)\n\tat org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)\n\tat org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:190)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:316)\n\tat org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:145)\n\tat org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154)\n\tat org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)\n\tat org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)\n\tat org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:182)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)\n\tat org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:60)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)\n\tat org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)\n\tat org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:182)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)\n\tat org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:60)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)\n\tat org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)\n\tat org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:198)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)\n\tat org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)\n\tat org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)\n\tat org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:182)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)\n\tat org.jruby.ast.VCallNode.interpret(VCallNode.java:88)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.IfNode.interpret(IfNode.java:118)\n\tat org.jruby.ast.IfNode.interpret(IfNode.java:118)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)\n\tat org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)\n\tat org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:214)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)\n\tat org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.ast.CaseNode.interpret(CaseNode.java:138)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)\n\tat org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)\n\tat org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:214)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)\n\tat org.jruby.ast.FCallTwoArgNode.interpret(FCallTwoArgNode.java:38)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)\n\tat org.jruby.ast.RescueNode.interpret(RescueNode.java:116)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)\n\tat org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)\n\tat org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:214)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)\n\tat org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)\n\tat org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)\n\tat org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:198)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)\n\tat org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)\n\tat org.jruby.ast.RescueNode.interpret(RescueNode.java:116)\n\tat org.jruby.ast.BeginNode.interpret(BeginNode.java:83)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.BlockNode.interpret(BlockNode.java:71)\n\tat org.jruby.ast.RootNode.interpret(RootNode.java:129)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)\n\tat org.jruby.Ruby.runInterpreter(Ruby.java:890)\n\tat org.jruby.Ruby.loadFile(Ruby.java:2842)\n\tat org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.loadScript(LibrarySearcher.java:253)\n\tat org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:241)\n\tat org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:50)\n\tat org.jruby.runtime.load.LoadService.load(LoadService.java:361)\n\tat org.jruby.RubyKernel.loadCommon(RubyKernel.java:1089)\n\tat org.jruby.RubyKernel.load19(RubyKernel.java:1081)\n\tat org.jruby.RubyKernel$INVOKER$s$0$1$load19.call(RubyKernel$INVOKER$s$0$1$load19.gen)\n\tat org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)\n\tat org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)\n\tat org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.RootNode.interpret(RootNode.java:129)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)\n\tat org.jruby.Ruby.runInterpreter(Ruby.java:890)\n\tat org.jruby.Ruby.loadFile(Ruby.java:2842)\n\tat org.jruby.runtime.load.ExternalScript.load(ExternalScript.java:66)\n\tat org.jruby.runtime.load.LoadService.load(LoadService.java:361)\n\tat org.jruby.RubyKernel.loadCommon(RubyKernel.java:1089)\n\tat org.jruby.RubyKernel.load19(RubyKernel.java:1081)\n\tat org.jruby.RubyKernel$INVOKER$s$0$1$load19.call(RubyKernel$INVOKER$s$0$1$load19.gen)\n\tat org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)\n\tat org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)\n\tat org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)\n\tat org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)\n\tat org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)\n\tat org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)\n\tat org.jruby.ast.RootNode.interpret(RootNode.java:129)\n\tat org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)\n\tat org.jruby.Ruby.runInterpreter(Ruby.java:890)\n\tat org.jruby.Ruby.runInterpreter(Ruby.java:898)\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:121)\n\t... 17 more\n", "environment": "RHEL 7, Monolithic install.  3.7.2-rc0-178-ga022a61", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15235", "fixedVersions": [], "id": "15235", "issueType": "Bug", "key": "SERVER-311", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2015-02-23T17:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Passing CTRL-C to \"puppetserver gem server\" returns a stack trace error. ", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "My preference had been to allow these to be configurable in core Puppet.  Since we decided against that, though, maybe the best approach would be to just pull these back out of the webrouting config to head off the temptation some users might otherwise have to change these and just leave them hardcoded in Puppet Server instead?", "created": "2015-01-23T18:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "There is a ton of value in having the webrouting config around, for development purposes.  It reflects lessons learned from trying to debug Puppet networking things that went through the indirector, where it became extremely difficult to know what all URLs were available in the web app and where the source code was for any given endpoint.  I feel very strongly about avoiding any repetition of that pattern/mistake in the future, so I still think that 100% of our web apps should be build via webrouting config going forward.\n\nIf we're concerned about users messing with the prefixes when they shouldn't, we should solve that by adding comments to the config file and docs, and/or moving this particular config file into the jar, but not by going back to the more magical/implicit approach for endpoints being registered with the server.", "created": "2015-01-27T13:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7507866b810069e57527] is working on another ticket that is affected by this: SERVER-300.  That catch-all 404 handler needs to be mounted at \"/\" in order to be effective.  We won't want users to change that, but we do still want it to be obvious from the webrouting config that we have a handler mounted there.", "created": "2015-01-27T13:37:00.000000"}, {"author": "70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2", "body": "I'm taking this one because it sounds like there's a more general problem about what to do with configs that users shouldn't need to see.", "created": "2016-03-11T14:48:00.000000"}], "components": [], "created": "2015-01-23T16:59:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e23b72b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xtz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_865594113_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_95714268048"}], "description": "For PUP-3526, we decided that we did not actually want to expose the master url prefix and ca url prefix as configurable settings, we just wanted to hardcode them. These are specified for Puppet Server in its webrouting config. We should do something to prevent users from modifying these values.\n\nThis could be done by sticking the webrouting config in the jar with packaging, but leaving it out for developers to reference for development. Another option might be throwing an error if we detect that the values are changed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15037", "fixedVersions": [], "id": "15037", "issueType": "Task", "key": "SERVER-1238", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Won't Do", "resolutionDate": "2018-02-14T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prevent users from modifying webrouting config", "timeSpent": "PT0S", "updated": "2018-03-30T14:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Started a memory test running on perf-bl14.delivery.puppetlabs.net\nPuppet Server Build: 2.0.0.SNAPSHOT.2015.01.22T2337\nPuppet Build: 3.7.4\n\nI'll update with a link to google doc link once we get some data", "created": "2015-01-27T17:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I presume that you meant 3.7.4 for Puppet build?", "created": "2015-01-27T17:36:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Woops, yes, 3.7.4", "created": "2015-01-27T17:50:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Added link to google doc", "created": "2015-01-28T10:55:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Closing this test, spreadsheet has the latest data", "created": "2015-03-16T10:59:00.000000"}], "components": [], "created": "2015-01-23T16:44:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1deff4f3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3mf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_261269248_*|*_3_*:*_1_*:*_4139427970_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_67810826"}], "description": "We're getting pretty close to target ship date for Puppet Server 2.0.  We haven't done any long-running memory tests yet for a build that contains JRuby 1.7.18.  We need to kick one off ASAP.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16421", "fixedVersions": ["SERVER 2.0.0"], "id": "16421", "issueType": "Task", "key": "SERVER-309", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2015-03-16T10:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "memory testing on a build that contains jruby 1.7.18", "timeSpent": "PT0S", "updated": "2015-10-22T15:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "For clarification: the 'header' mentioned in the subject line is *NOT* an HTTP header.  (I might just be an idiot but that threw me off at first.)", "created": "2015-02-02T17:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] [~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] need help routing / prioritizing this ticket.  Not sure if it's actively blocking people, or whether it should be routed to our team, and if so, where it should be prioritized relative to other work.", "created": "2015-02-02T17:23:00.000000"}, {"author": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] It is not actively blocking anyone", "created": "2015-02-12T13:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:252602f6-56c9-47a2-a176-2c9c57106330] Since we haven't heard anything further on this one in some time, I'm assuming that this may not be an issue anymore so I'm going to close this for now.  Please reopen if it's still causing problems.", "created": "2016-12-09T16:14:00.000000"}], "components": [], "created": "2015-01-22T11:20:00.000000", "creator": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7846dbce"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xi7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2268309455_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_57106151114"}], "description": "We're seeing this sporadically overnight during our main integration/upgrader runs.  [~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] has looked into this before, and indicates that it's the same underlying cause as PUP-3197, and that most likely the issue here is that another process on a slowed vm is laying down a PEM when the puppet cert list call is being made.\n\nI'm not entirely clear if this is touching CA code that has already been redone in puppet-server, or if this is all still in Puppet.  But we did want to record that the problem does crop up in integration runs.\n\nSo far we've only had nightly integration runs with the 0.4.x series.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15036", "fixedVersions": [], "id": "15036", "issueType": "Bug", "key": "SERVER-307", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:252602f6-56c9-47a2-a176-2c9c57106330", "resolution": "Cannot Reproduce", "resolutionDate": "2016-12-09T16:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Occasionally during ci integration tests, `puppet cert list --all` fails with 'header too long'.", "timeSpent": "PT0S", "updated": "2016-12-09T16:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I wasn't able to figure out exactly what the discrepancy was that caused this failure to show up in CI for the first time.  One of things that didn't look right in the stack trace, though, was that the MRI version of bundler was being executed rather than the JRuby one.  I believe this was ultimately due to the \"rake spec\" command line using the MRI version of rake and some of the MRI-related environment subsequently being inherited by bundler.\n\nI replaced the \"rake spec\" command line in the CI script for puppet-server's master branch with this:\n\n{quote}lein run -m org.jruby.Main -e 'load \"META-INF/jruby.home/bin/rake\"' spec{quote}\n\nWith this change, bundler was able to install all of the gems properly and subsequently use rspec to execute the tests successfully.\n\nIn a local project.clj, I tried adding a lein rake alias to do the same thing:\n\n{quote}\"spec\" \\[\"trampoline\" \"run\" \"-m\" \"org.jruby.Main\" \"-e\" \"load \\\"META-INF/jruby.home/bin/rake\\\"\" \"spec\"\\]{quote}\n\nand then just ran \"lein rake\" locally from the command line with a clean \".../vendor\" directory under the base of the repository.  The gems were all loaded properly and tests were run successfully.  Adding the step of bootstrapping another JRuby process to run \"rake\" would increase the execution time for iterative development / testing and so doesn't seem like the best long-term solution.\n\n[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] is going to rework this process a bit to allow for the whole sequence to be run in a JRuby context -- with no intermediate steps in MRI -- while minimizing the number of JRuby processes that need to be spun up for performance purposes.  This will likely involve removing \"rake\" from the sequence entirely and defining a new lein alias that keeps it easy for developers to kick off the sequence.", "created": "2015-01-23T10:29:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-22T10:49:00.000000", "creator": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a20fa00"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xtr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1133753113_*|*_3_*:*_1_*:*_1136173965_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_33513322902"}], "description": "{code}+ java -version\njava version \"1.7.0_65\"\nOpenJDK Runtime Environment (IcedTea 2.5.1) (7u65-2.5.1-2~deb7u1)\nOpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)\n+ lein version\nLeiningen 2.4.2 on Java 1.7.0_65 OpenJDK 64-Bit Server VM\n+ rake spec\n      lein run -m org.jruby.Main       -e 'load \"META-INF/jruby.home/bin/gem\"' install -i '/var/lib/jenkins/workspace/platform_puppet-server_unit-jruby_master/vendor/test_gems' --no-rdoc --no-ri bundler\nCompiling 8 source files to /var/lib/jenkins/workspace/platform_puppet-server_unit-jruby_master/target/classes\nSuccessfully installed bundler-1.7.12\n1 gem installed\n      PATH='/var/lib/jenkins/workspace/platform_puppet-server_unit-jruby_master/vendor/test_gems/bin:/usr/local/rvm/gems/ruby-1.9.3-p484/bin:/usr/local/rvm/gems/ruby-1.9.3-p484@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p484/bin:/usr/local/rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games'       BUNDLE_GEMFILE='/var/lib/jenkins/workspace/platform_puppet-server_unit-jruby_master/ruby/puppet/Gemfile'       GEM_HOME='/var/lib/jenkins/workspace/platform_puppet-server_unit-jruby_master/vendor/test_gems' GEM_PATH='/var/lib/jenkins/workspace/platform_puppet-server_unit-jruby_master/vendor/test_gems'       lein run -m org.jruby.Main         -S bundle install --path='/var/lib/jenkins/workspace/platform_puppet-server_unit-jruby_master/vendor/test_bundle'\nBundler::GemNotFound: Could not find gem 'facter (< 3, > 1.6) java' in the gems available on this machine.\n          resolve at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/resolver.rb:357\n            start at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/resolver.rb:164\n          resolve at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/resolver.rb:129\n          resolve at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/definition.rb:202\n            specs at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/definition.rb:132\n        specs_for at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/definition.rb:177\n  requested_specs at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/definition.rb:166\n  requested_specs at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/environment.rb:18\n            setup at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/runtime.rb:13\n            setup at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler.rb:121\n           (root) at /usr/local/rvm/gems/ruby-1.9.3-p484@global/gems/bundler-1.7.0/lib/bundler/setup.rb:17\n          require at org/jruby/RubyKernel.java:1071\n           (root) at /var/lib/jenkins/.m2/repository/org/jruby/jruby-stdlib/1.7.18/jruby-stdlib-1.7.18.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n           invoke at form-init5642402360445811858.clj:1\n           invoke at main.clj:294\n           invoke at main.clj:299\n           invoke at main.clj:327\n           invoke at main.clj:362\n         doInvoke at main.clj:440\nrake aborted!\nCommand failed with status (1): [      PATH='/var/lib/jenkins/workspace/pla...]\n/var/lib/jenkins/workspace/platform_puppet-server_unit-jruby_master/Rakefile:59:in `block (2 levels) in <top (required)>'\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15:in `eval'\n/usr/local/rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15:in `<main>'{code}\n\nThis has been happening on budget.delivery.puppetlabs.com in the workspace located at /var/lib/jenkins/workspace/platform_puppet-server_unit-jruby_master", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "16905", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16905", "issueType": "Bug", "key": "SERVER-306", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "resolution": "Incomplete", "resolutionDate": "2016-03-11T14:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "JRuby spec tests fail in Jenkins", "timeSpent": "PT0S", "updated": "2016-04-20T15:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [{"attacher": "557058:bab073e0-f060-421e-9465-366c4060cc31", "created": "2015-01-21T13:39:00.000000", "name": "OOM.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11176"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "How much memory does the VM have?  What is your Puppet Server heap set to?", "created": "2015-02-02T17:18:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "3 gig, 4 if you count swap.  -Xms2048m -Xmx2048m.", "created": "2015-02-17T17:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Let's check to see if the VMs for the other distros have more memory than the RHEL7 VM.  If not, we'll revisit.", "created": "2015-02-17T17:23:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "RHEL 7 image: free -m\n             total       used       free     shared    buffers     cached\nMem:          3792       3648        144         57          0        804\n-/+ buffers/cache:       2842        949\nSwap:          819          2        817\n\nvs.\n\nCentOS 6 image: free -m\n             total       used       free     shared    buffers     cached\nMem:          3832       3184        648          0         50       1019\n-/+ buffers/cache:       2114       1718\nSwap:         4031          0       4031\n", "created": "2015-02-24T14:44:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This error occurs because the RHEL 7 image doesn't have the same memory configuration as other images.\n\nPuppet Server can be made to run on a system with less memory, but you need to tune you JVM memory utilization appropriately or you are going to have a bad time.", "created": "2015-02-24T14:55:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-21T13:38:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Affects Build", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "3.7.2-rc0-140-gfeddc90"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74c0e37c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Master Config", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Monolithic"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "RHEL 7 (x86_64)"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxz2v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2942212686_*|*_5_*:*_1_*:*_50179177955_*|*_6_*:*_1_*:*_0"}], "description": "Running the puppet resource file suite from qatests intermittently causes an Out of Memory error on RHEL 7 with a monolithic install.  This same test suite passes in CentOS7, CentOS6, RHEL6, Ubuntu 14.04. and in RHEL 7 with a split install.\n\nSTEPS TO REPRODUCE:\n- Manually launch this test suite in Jenkins:\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/experimental/job/experimental_puppet_intg-system_041_puppet_resource_file/\n\n\nEXPECTED RESULTS:\nTests should pass and complete\n\nACTUAL RESULTS:\nThe OS throws an OOM somewhere during the run of this test suite.\n\nNOTES:\nThe attached OOM.txt file contains a dump from dmesg.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16902", "fixedVersions": [], "id": "16902", "issueType": "Bug", "key": "SERVER-305", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2015-02-24T14:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Running the qatests puppet resource \"file\" suite against RHEL 7 intermittently causes an OOM ", "timeSpent": "PT0S", "updated": "2016-09-27T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "623e7507866b810069e57527", "body": "This can now be done as the dujour-version-check library has been merged.", "created": "2015-02-11T15:49:00.000000"}], "components": [], "created": "2015-01-20T15:02:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4bf33564"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxxx3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_271169902_*|*_1_*:*_1_*:*_2599284809_*|*_10007_*:*_1_*:*_1479317114_*|*_3_*:*_1_*:*_71652548_*|*_5_*:*_1_*:*_48289042818_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17238", "fixedVersions": ["SERVER 2.0.0"], "id": "17238", "issueType": "Sub-task", "key": "SERVER-303", "labels": [], "originalEstimate": "PT0S", "parent": "17276", "parentSummary": "separate dujour version check service from puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Fixed", "resolutionDate": "2015-03-12T20:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Use dujour version check library in Puppet Server", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623e7507866b810069e57527", "body": "Once the Jenkins Jobs get merged in this ticket can finally be closed.", "created": "2015-02-20T11:25:00.000000"}, {"author": "623e7507866b810069e57527", "body": "The library was set up a while ago, and Jenkins Jobs are now present in ci-job-configs, so I'm closing this ticket out.", "created": "2015-02-20T12:59:00.000000"}], "components": [], "created": "2015-01-20T15:02:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2bdf427b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxxwv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_38478_*|*_10007_*:*_1_*:*_2670995859_*|*_5_*:*_1_*:*_50039440038_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16899", "fixedVersions": [], "id": "16899", "issueType": "Sub-task", "key": "SERVER-302", "labels": [], "originalEstimate": "PT0S", "parent": "17276", "parentSummary": "separate dujour version check service from puppetserver", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Fixed", "resolutionDate": "2015-02-20T12:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create dujour version check library", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [{"attacher": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "created": "2016-03-15T13:23:00.000000", "name": "compile_test.jpg", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11026"}], "comments": [{"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "Ping [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] and see ENTERPRISE-488 for commentary.", "created": "2015-01-14T16:19:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] [~accountid:557058:923149f8-040e-4296-b279-cbc5b8a6aa98] am I correct in understanding that the file sync service would directly resolve this issue?  Would it be correct to say that PE-4456 blocks this issue?  \n\nThis would not be resolved by setting the evironment_timeout to unlimited on the master would it?  ", "created": "2015-01-21T10:19:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100]: This issue will persist as long as users generate random, unmanaged, bits of code inside their MODULEPATH (a behavior I don't believe will ever change). Any action that aggressively loads all findable manifests, such as class sync, will suck in these bits of code.\n\nI think the proper fix is to isolate catalog compilation, which should only ever load stuff explicitly listed by site.pp or an ENC, from processes like class sync which load everything that is findable --- and end up sucking in works in progress, failed experiments and other garbage.", "created": "2015-01-21T11:14:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "+1 to charlie's comment, none of the changes in flight will (directly, intentionally) fix this problem.", "created": "2015-01-21T13:51:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "If this is actually an issue with Puppet itself then should this be moved over to the PUP or SERVER project?  \n\nDoes anyone see any work that would be done to the classifier as a result of this ticket?", "created": "2015-01-21T14:21:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "There is no classifier work associated with this ticket. I'm not sure which other project it should be in though.", "created": "2015-01-22T12:24:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "I see two potential projects for this work:\n\n  - PUP: We isolate the code paths such that API requests for environment info don't affect API requests for catalogs.\n\n  - SERVER: We run a separate JRuby process that only handles Classifier sync requests and thus isolates the code being loaded from JRuby processes that compile catalogs.", "created": "2015-01-22T12:36:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] does this have the correct components to be seen by PUP or the Puppet Server Team?", "created": "2015-03-12T11:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] do you have any thoughts on this?  [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]'s suggestion about having a separate JRuby instance for handling the classifier requests might work, but I'm wondering if you have any other ideas?", "created": "2015-03-16T17:19:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I can imagine that it may work if a separate environment is used for the classifier requests", "created": "2015-03-18T11:54:00.000000"}, {"author": "557058:1381f112-1c4e-4869-ba34-30602d945124", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] I'm confused as to what exactly you're proposing. The classifier is intended to operate on the environments that are actually used. Many of its use cases go out the window if we have to use some particular \"classifier\" environment that's not actually used to compile catalogs. We could work with having a shadow environment for each actual environment and only requesting the resource types in those. How long would the shadow environments live? How would Puppet decide when to serve a real environment and when to serve a shadow environment? What would the impact be on FOSS users?", "created": "2015-03-18T12:16:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I am saying that it should naturally be based on the real environment's configuration but not use the real environment instance in memory. The problem is that the classifier logic has the potential of loading all sorts of garbage into an environment that is in live use. A user of the classifier service should not notice anything, but internally it needs to use a separate environment instance. This should work with the new environments loaders and environments - the code that supports the classifier needs to go through the gymnastics of creating this in-memory-clone of the target environment and use it instead of the real. (There are several ways of creating a functioning environment). This cloned environment could be cached with a different timeout as well. Or put differently, there is nothing internally that stops two environment instances to refer to the same set of manifests/modules/etc - they will simply not share information in memory", "created": "2015-03-18T18:51:00.000000"}, {"author": "557058:1381f112-1c4e-4869-ba34-30602d945124", "body": "Yes, that makes sense [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd]. That's what I was envisioning from your previous comment, up until the last bit where you said \"That would be a fix that would go into the Classifier I assume.\" I still don't see what would change about the classifier's use of Puppet as a result of your proposal.", "created": "2015-03-19T10:48:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The classifier contains (or is at least the only user of) the logic that scans for all files and parses them for the purpose of showing all classes and parameters to users. That logic has the opportunity to modify which environment that takes place in - basically arranging so that Puppet.lookup(:current_environment) returns the special environment used for the purpose of providing information. I have not looked at the code for this in a while though - the support for Rdoc did something  bad when loading everything - maybe the support for the classifier does the same.\n\nWith all that said, on 4.0 (only using future parser) this should be much safer as it is possible to parse without side effect and get the information about all possible classes and defines, and their parameter names. For 3.x and possibly also with non directory environments... hm - a separate JRuby instance seems much easier.", "created": "2015-03-19T11:35:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "It is a high-priority fix, based on the CS input.", "created": "2015-05-06T11:23:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "We talked through this in the triage meeting and it sounds like this would best be addressed as part of the larger environment isolation project, which we'd want to address in the Ankeny time frame. So this fix becomes part of the acceptance criteria for that work. [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] did I get that right?\n\nI'm not sure what to manipulate on the ticket to express that decision, though. ", "created": "2015-05-13T11:21:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Another potential solution that just occurred to me is that the current implementation of {{resource_types}} is pretty heavyweight --- it executes a full parse _and evaluation_ of all manifests in an environment. For the question of \"what classes and defined types are available?\" we may be able to implement a lightweight process that just parses manifests and extracts information from the AST without evaluation. If we skip evaluation, then nothing should get accidentally added to the global compilation scope of the puppet master where it can bleed into client catalogs.\n\nThe {{puppetlabs-strings}} module is an example of using approach in order extract class and type names along with parameter values. This approach requires the future parser and would only work reliably under Puppet 4 and newer.", "created": "2015-06-11T16:31:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] I believe this approach is what Henrik is suggesting on [PE-10214], no?", "created": "2015-06-11T16:47:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]: Funny thing, this occurred to me while we were looking at PE-10214 during CS triage. It's quite a wall of text, so I didn't read it completely.\n\nYes, I think Henrik and I are suggesting the same thing: re-factor the {{resources_type}} endpoint so that it is a lightweight process that doesn't use full evaluation of manifest code. The {{puppet-strings}} module could be seen as a proof-of-concept for using this approach to get information on class and types.\n\nThis won't solve all the issues around environment isolation, but should address this specific issue of classifier sync pulling unintended code into catalog compilations.", "created": "2015-06-11T16:58:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] - yes, my suggestion in PE-10214 is the same as Charlie's suggestion wrt. the lightweight parsing and not being subject to crashing on faulty code (PE-10214 is also about keeping the generated information somewhere and knowing when to recompute it).\n\nThe basic parse all .pp files and extract class names, parameter names, and the source for the default value expressions is only slightly more code than iterating over the evaluated known-resource-types, but should be much more light weight. It is still parsing though so always reparsing all .pp files will still not make the UI anywhere near being \"snappy\".", "created": "2015-06-11T22:29:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] Summarizing from our discussion about this earlier today...\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and I believe that the work to be done for PE-10214 will solve the issue described in this ticket.  The implementation for PE-10214 is intended to involve having Puppet Server make use of the new {{Puppet::InfoService}} provided in core Ruby Puppet code (from PUP-4819) to provide a new API that the Node Classifier would call into for getting class names, parameter names, and default value info.  Via a new API that we would layer into Puppet Server, the Classifier's use of {{Puppet::InfoService}}, unlike the resource_types API that the Classifier currently uses, is not expected to have the unwanted side effect of having code that would otherwise not be used for catalog compilations be cached in the environment and, therefore, unnecessarily evaluated during future agent runs.  When that implementation progresses further, we'll evaluate the test case from [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] above to confirm that the malformed code no longer affects further agent runs.\n\n[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], it sounds like this is what you are expecting to see from this as well?", "created": "2015-12-08T18:39:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Yes, that sounds like the right approach.", "created": "2015-12-09T02:57:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Should this also be resolved when PE-10214 is resolved?  ", "created": "2016-02-24T08:18:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] Yes, I expect this to no longer be an issue per the work we're doing under the PE-10214 for PE Burnside.  I'll associate it with the PE Burnside release.  I do think it would be good to have some sort of acceptance-level regression test in place to ensure that we don't regress on this.  /CC [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], [~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6], and [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] for their thoughts on the best way to cover this from a QA perspective.", "created": "2016-02-24T08:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Setting this to \"needs information\" for now since it is currently blocked by the classifier service starting to consume the new environment_classes endpoint in Puppet Server instead of the resource_classes one.  This should be unblocked by the completion of PE-11042.", "created": "2016-02-24T09:01:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "Is this actually going into burnside? [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]", "created": "2016-03-07T15:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:96a443bf-a3ab-426b-9442-ce50c9977428] Yes.  I can move it to \"Ready for Test\" now that the NC side of this work has gone into PE 2016.1.x builds.", "created": "2016-03-07T16:01:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-14T16:18:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@253e9498"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynton:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10864451004_*|*_5_*:*_1_*:*_16924004912_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_678189653_*|*_10004_*:*_1_*:*_1062132517_*|*_10006_*:*_1_*:*_24187618120"}], "description": "Classifier Synchronization (when the classifier requests class information from Puppet Server via the 'resource_types' endpoint) causes all manifests within an environment to be parsed. If this parsing intersects with a catalog request, the resulting compilation will be exposed to any latent problems that exist in the environment: bugs in unused manifests, misplaced or temporary testing code, etc.\n\nh2. Reproduction Case\n\nInstall a PE 3.7.1 all-in-one master.\n\nCreate a test module which contains a half-implemented class:\n\n{code:bash}\nmkdir -p /etc/puppetlabs/puppet/environments/production/modules/compile_test/manifests\n\ncat << EOF > /etc/puppetlabs/puppet/environments/production/modules/compile_test/manifests/init.pp\n# A work in progress.\nclass compile_test {\n  fail(\"This class isn't implemented yet!\")\n}\n\n# Leftover testing code.\ninclude compile_test\nEOF\n{code}\n\nRun the Puppet Agent a few times to verify that the class is not usually included in catalogs:\n\n{noformat}\n# service pe-puppet stop\n\n# while true;do puppet agent -t;done\n\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for pe-371-master.puppetdebug.vlan\nInfo: Applying configuration version '1421168813'\nNotice: Finished catalog run in 8.67 seconds\n\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for pe-371-master.puppetdebug.vlan\nInfo: Applying configuration version '1421168848'\nNotice: Finished catalog run in 7.57 seconds\n\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for pe-371-master.puppetdebug.vlan\nInfo: Applying configuration version '1421168882'\nNotice: Finished catalog run in 7.10 seconds\n\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nInfo: Caching catalog for pe-371-master.puppetdebug.vlan\nInfo: Applying configuration version '1421168813'\nNotice: Finished catalog run in 7.30 seconds\n\n...\n{noformat}\n\nEdit {{/etc/puppetlabs/console-services/conf.d/classifier.conf}} and set the {{synchronization-period}} to 5 seconds in order to aggrivate the bug. Restart {{pe-console-services}}.\n\nh3. Outcome\n\nWith the sync period turned up, compilation fails on nearly every run due to sync activities loading classes that otherwise would not be loaded into the compiler:\n\n{noformat}\n# while true;do puppet agent -t;done\n\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: This class isn't implemented yet! at /etc/puppetlabs/puppet/environments/production/modules/compile_test/manifests/init.pp:3 on node pe-371-master.puppetdebug.vlan\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: This class isn't implemented yet! at /etc/puppetlabs/puppet/environments/production/modules/compile_test/manifests/init.pp:3 on node pe-371-master.puppetdebug.vlan\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: This class isn't implemented yet! at /etc/puppetlabs/puppet/environments/production/modules/compile_test/manifests/init.pp:3 on node pe-371-master.puppetdebug.vlan\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: This class isn't implemented yet! at /etc/puppetlabs/puppet/environments/production/modules/compile_test/manifests/init.pp:3 on node pe-371-master.puppetdebug.vlan\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n\n...\n{noformat}\n\nh3. Expected Outcome\n\nClassifier synchronization has no effect on which manifests are loaded for catalog compilation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15035", "fixedVersions": ["SERVER 2.3.0"], "id": "15035", "issueType": "Bug", "key": "SERVER-1200", "labels": ["support"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Fixed", "resolutionDate": "2016-03-15T13:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Classifier synchronization can pull unused code into catalog compilation", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Reviewed, comments on the PR.", "created": "2015-01-30T12:18:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I consider this to be of high probability (this generates an error message for old agents and any other 404) and low severity (its just an error message.)\nHigh Probability x Low Severity = Medium Risk.  Functional Review planned, no automated testing planned.  less than 30 minutes to play with curl and read the error message.\n", "created": "2015-03-11T15:42:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Tested with ' curl -k https://localhost:8140/somethingcrazy' puppetserver version: 2.0.0.SNAPSHOT.2015.03.12T0108\nEXPECTED RESULTS: (Based on https://puppet.atlassian.net/browse/SERVER-148)\nGeneric 404 message\n\nACUTAL RESULTS:\n---------\nError: Invalid URL - Puppet Server expects requests that conform to the /puppet and /puppet-ca APIs.\n\nNote that Puppet 3 agents aren't compatible with this version", "created": "2015-03-12T13:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "To clarify: there is no generic error message.  There is no attempt to detect which routes would have been valid in the old system, because doing so will introduce the very same problems we were trying to avoid by getting rid of them in the first place.\n\nSo, for this ticket, you should expect to see that error message for *any* 404.\n\nThe part about the missing Puppet Server version seems like a legit issue, though.\n\nAlso in a future release we are going to add in the support for detecting the old urls, against my better judgment... but that's a ways down the line.", "created": "2015-03-12T15:37:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Moving back to the TODO column.  We need a Puppet Server version to show up in the output of the 404 message.\n", "created": "2015-03-12T18:09:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I am able to find two different 404 error messages.... examples:\n\ncurl -w \"httpcode: %{http_code}\" -k https://localhost:8140/thisWillNeverEverWork\nError: Invalid URL - Puppet Server expects requests that conform to the /puppet and /puppet-ca APIs.\n\nNote that Puppet 3 agents aren't compatible with this version", "created": "2015-03-12T18:45:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I've gotten tickets wrong.  This should be in the testing column.\n", "created": "2015-03-12T18:47:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "The first curl command above (and response) indicates that this ticket is validated.", "created": "2015-03-12T18:50:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Resolving.", "created": "2015-03-12T18:50:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote} So, for this ticket, you should expect to see that error message for any 404.{quote}\n\nJust to clarify, the meaning is, \"for any 404 that is not rooted in /puppet/ or /puppet-ca/, etc...\"", "created": "2015-03-12T18:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] is this really resolved?  I thought you'd found a bug in that we aren't reporting the Puppet Server version number correctly?", "created": "2015-03-13T11:06:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-14T15:37:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c8a2cee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxvin:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3124175123_*|*_1_*:*_1_*:*_516244115_*|*_10007_*:*_1_*:*_588168649_*|*_3_*:*_3_*:*_154915863_*|*_4_*:*_1_*:*_2247843_*|*_5_*:*_1_*:*_48293953172_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_97592317_*|*_10006_*:*_2_*:*_449475345"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15580", "fixedVersions": ["SERVER 2.0.0"], "id": "15580", "issueType": "Sub-task", "key": "SERVER-300", "labels": [], "originalEstimate": "PT0S", "parent": "15273", "parentSummary": "Craft 404 error message that includes verbiage about Puppet 4 URL changes", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-03-12T18:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "404 error message for Puppet Server about Puppet 3 agents and url changes", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "I reviewed and commented on the pull request.", "created": "2015-01-30T12:34:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA views this as low risk.  Setting to Ready for Review.", "created": "2015-02-05T15:30:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing out based on conversation in standup today.  Review not needed unless ticket links to acceptance criteria.", "created": "2015-02-09T11:42:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Not reviewing because webrick/rack...\nis deprecated and \nwe're never releasing packages of it and we'll be removing it in puppet 5", "created": "2015-03-12T18:57:00.000000"}], "components": [], "created": "2015-01-14T15:36:00.000000", "creator": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1585fbd4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxvif:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_12992500_*|*_1_*:*_1_*:*_1123506563_*|*_10007_*:*_1_*:*_602577243_*|*_3_*:*_1_*:*_73597492_*|*_10009_*:*_1_*:*_331873415_*|*_5_*:*_1_*:*_50994480514_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_87797901"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15231", "fixedVersions": ["SERVER 2.0.0"], "id": "15231", "issueType": "Sub-task", "key": "SERVER-299", "labels": [], "originalEstimate": "PT0S", "parent": "15273", "parentSummary": "Craft 404 error message that includes verbiage about Puppet 4 URL changes", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "resolution": "Fixed", "resolutionDate": "2015-02-09T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "404 error message for webrick/rack master about Puppet 3 agents and url changes", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Reproduced with RHEL 7 on puppet agent -t run.\n\nstopping and starting, and restarting works as expected.", "created": "2015-01-13T15:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I tried this out with a PE 3.7.1-ish build on CentOS 7.  The \"/var/log/pe-puppetserver/puppetserver.log\" file was not recreated immediately after running \"puppet agent -t\".  After a subsequent \"service pe-puppetserver restart\", however, the \"/var/log/pe-puppetserver/puppetserver.log\" file was recreated and populated with typical log messages pertaining to the bootup - \"... Initializing web server...\".  Will be interesting to see if your results are RHEL-7 specific.\n\nIs this a PE-specific problem or something you've observed with an Open-Source puppetserver package?  If PE specific, probably should move this ticket.", "created": "2015-01-13T15:49:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Will reopen if this behavior causes any problems.", "created": "2015-01-20T11:19:00.000000"}], "components": [], "created": "2015-01-13T14:05:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32302fb4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxu3b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_594638731_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_161236"}], "description": "/var/log/pe-puppetserver/puppetserver.log is not recreated by puppetserver, even on restart\n\nSTEPS:\nrm /var/log/pe-puppetserver/puppetserver.log\npuppet agent -t\nlook for puppetserver.log\nserver pe-puppetserver restart\nlook for puppetserver.log\n\nEXPECTED RESULTS:\nin each case puppetserver should recreate the log file\n\nACTUAL RESULTS:\npuppetserver does not recreate the log file\n\nNOTES:\nSo far only attempted in RHEL7.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17237", "fixedVersions": [], "id": "17237", "issueType": "Bug", "key": "SERVER-298", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Fix", "resolutionDate": "2015-01-20T11:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver.log is not recreated after delete ", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "A good chunk of this work is getting done as part of SERVER-2225. We should keep this ticket to see if there are other CA-specific settings that can be moved besides file paths once that work is done.", "created": "2018-07-17T16:44:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We have decided not to do this work for Puppet 6. The settings will remain in Puppet for the time being.", "created": "2018-09-10T10:55:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Closing due to age.  If it's still important we'll re-open.  ", "created": "2021-12-22T11:16:00.000000"}], "components": [], "created": "2015-01-13T13:19:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74eeb534"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2975"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2nz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jul/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1136917863_*|*_3_*:*_2_*:*_2165605704_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_117560070663_*|*_10005_*:*_2_*:*_98154073971"}], "description": "The work in SERVER-2225 to separate the CA dir from the SSL dir also resulted in our moving all settings related to CA paths from puppet.conf into puppetserver.conf. We should check for other CA related settings that could also be moved for Puppet 6.", "epicLinkSummary": "CA without JRuby", "estimate": "PT0S", "externalId": "15541", "fixedVersions": [], "id": "15541", "issueType": "Task", "key": "SERVER-2222", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": "16025", "parentSummary": "CA without JRuby", "priority": "Low (migrated)", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2021-12-22T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Define replacement CA config settings for those from puppet.conf ", "timeSpent": "PT0S", "updated": "2021-12-22T11:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "The specific discussion point is around how to be as robust as possible while also giving the end-user the environment variable knobs and dials they expect.\n\nOn the extreme conservative side, we've tried unsetting all environment variables except those necessary, e.g. GEM_HOME.  This caused issues, e.g. `gem env` expects PATH to be set.\n\nOn the extreme lax side, we could do nothing and manage no environment variables.\n\nThere's a big middle ground, but something I specifically propose is to manage environment variables common to Ruby.  These are GEM_HOME, GEM_PATH, RUBYLIB, RUBY_OPTS, and RUBYOPT.  If puppetserver doesn't need one of these variables set, then it unsets it.  For other environment variables, e.g. FOO_DEBUG=true and PATH, puppetserver could pass those variables through untouched.", "created": "2015-01-12T16:13:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Pulled out because of PE 3.8 dates. ", "created": "2015-03-18T15:44:00.000000"}, {"author": "557058:1fdc76f4-b360-4f3a-a4b5-990542a56609", "body": "Please note discussion on puppet-dev:\nhttps://groups.google.com/forum/#!topic/puppet-dev/Ac6gCTJXGnA\n\nThis has impact on function calls over http and honoring system http_proxy, no_proxy environment settings.", "created": "2015-04-14T13:22:00.000000"}, {"author": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "body": "I saw the google groups discussion and to me the mapping idea is a bit complex and another thing for users to get wrong.  How about a hybrid approach in the puppet server config file - with good defaults?:\n{noformat}\n  jruby-puppet {\n    gem-home: /var/lib/puppet/jruby-gems,\n    # add more explicit variables here if you like...\n    environment-whitelist: {\n      http_proxy,\n      https_proxy,\n      no_proxy,\n    }\n    ...\n  }\n{noformat}\n\nh3. features\n* users can allow the variables they want to pass through\n* explicit values can be set where needed\n* sensible defaults can be used\n* we steer customers towards a consistent set of environment variables\n\nAdditionally, it would be nice if the proxy variables could be parsed out of puppet.conf so that they will be used if set but can be overriden by explicit environment variables (if set).", "created": "2015-04-14T23:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "There's been a fair amount of discussion here and in related tickets and puppet-dev about a desire to have an option for at least the proxy-related environment variables to be passed through from the shell environment to Ruby code in the Puppet Server process.  Are there any concrete use cases for passing through other environment variables that users have?", "created": "2015-04-14T23:52:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "TODO:\n\nJeremy explained that in Puppet Server 1.x we needed to prepend the 3 ruby lib\ndirectories to the front of the LOAD_PATH because Puppet's code was located in\nthe /usr system Ruby load path and we were picking up the wrong version of\nrubygems (or something similar resulting from cross-loading a library from a\ndifferent copy of Ruby than the JRuby in puppetserver) when trying to require\nthe hipchat gem in SERVER-538\n\nIn Puppet Server 2.x this should no longer be an issue because the Puppet code\nis (finally) located outside of a core ruby library directory.\n\nWe need to validate this actually works if we remove the three elements\npre-pended on the front of the load path in 2.x.  Jeremy mentioned he tried to\nremove them in the master branch but that didn't work for some\nas-of-yet-unknown reason.\n", "created": "2015-05-29T16:56:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Note: While this ticket will be resolved, all of the work described was not completed.  The remaining work is captured in SERVER-721 which is back-port the change from master to stable.", "created": "2015-06-05T14:45:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "PR for FOO_DEBUG smoke test failures is at: https://github.com/puppetlabs/puppet-server/pull/598", "created": "2015-06-05T15:21:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "I was able to successfully use the hipchat report processor module with our hipchat ${PROJECT_ROOM} room from the master branch.  The build I tested is //builds.puppetlabs.lan/puppetserver/2.1.1.master.SNAPSHOT.2015.06.08T1118/repo_configs/rpm/pl-puppetserver-2.1.1.master.SNAPSHOT.2015.06.08T1118-el-7-x86_64.repo with PC1", "created": "2015-06-08T13:41:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Jeff's test above on the hipchat gem is a regression check rather than a FR:\n\nPrevious behavior was that 'puppetserver gem env' would throw an uncaught exception trying to parse path.\n\nInstalled Red Hat Enterprise Linux Server release 6.5 (Santiago), Puppet v4.1.0 via puppet-agent-1.1.0-1.el6.x86_64.rpm, and puppetserver-2.1.1.master-0.1SNAPSHOT.2015.06.09T0120.el6.noarch.rpm.\n\npuppetserver irb supplies a prompt, puts RUBY_VERSION returns 1.9.3.\npuppetserver ruby -pe 'puts RUBY_VERSION' returns \"1.9.3\" after feeding in some returns.\npuppetserver gem env returns expected output:\nRubyGems Environment:\n  - RUBYGEMS VERSION: 2.4.6\n  - RUBY VERSION: 1.9.3 (2015-05-04 patchlevel 551) [java]\n  - INSTALLATION DIRECTORY: /opt/puppetlabs/server/data/puppetserver/jruby-gems\n  - RUBY EXECUTABLE: java -jar /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar\n  - EXECUTABLE DIRECTORY: /opt/puppetlabs/server/data/puppetserver/jruby-gems/bin\n  - SPEC CACHE DIRECTORY: /root/.gem/specs\n  - SYSTEM CONFIGURATION DIRECTORY: file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/etc\n  - RUBYGEMS PLATFORMS:\n    - ruby\n    - universal-java-1.8\n  - GEM PATHS:\n     - /opt/puppetlabs/server/data/puppetserver/jruby-gems\n     - /root/.gem/jruby/1.9\n     - file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/gems/shared\n  - GEM CONFIGURATION:\n     - :update_sources => true\n     - :verbose => true\n     - :backtrace => false\n     - :bulk_threshold => 1000\n     - \"install\" => \"--no-rdoc --no-ri --env-shebang\"\n     - \"update\" => \"--no-rdoc --no-ri --env-shebang\"\n  - REMOTE SOURCES:\n     - https://rubygems.org/\n  - SHELL PATH:\n     - /usr/local/sbin\n     - /usr/local/bin\n     - /sbin\n     - /bin\n     - /usr/sbin\n     - /usr/bin\n     - /root/bin\n     - /opt/puppetlabs/server/bin\n     - /opt/puppetlabs/puppet/bin\n\nThen had some fun with pry...\npuppetserver gem install pry\npuppetserver irb \nirb(main):001:0>\nirb(main):002:0* require 'pry'\n=> true\nirb(main):003:0> binding.pry\n[1] pry(main)> ls\nIRB::ExtendCommandBundle#methods:\n  install_alias_method  irb_context                    irb_fg    irb_kill           irb_push_workspace  irb_workspaces\n  irb                   irb_current_working_workspace  irb_help  irb_load           irb_require\n  irb_change_workspace  irb_exit                       irb_jobs  irb_pop_workspace  irb_source\nself.methods:\n  bindings  cws   inspect             irb_current_working_binding  irb_popb                     irb_pushb   jobs   pushws  workspaces\n  cb        cwws  irb_bindings        irb_cwb                      irb_popws                    irb_pushws  kill   pwws\n  chws      exit  irb_cb              irb_cws                      irb_print_working_binding    irb_pwb     popb   quit\n  conf      fg    irb_change_binding  irb_cwws                     irb_print_working_workspace  irb_pwws    popws  source\n  context   help  irb_chws            irb_pop_binding              irb_push_binding             irb_quit    pushb  to_s\nlocals: _  __  _dir_  _ex_  _file_  _in_  _out_  _pry_\n\npuppetserver ruby -rpry -e 'binding.pry", "created": "2015-06-09T12:09:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-12T16:06:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6405bd6f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Minor"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyosi7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Had some bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_274032054_*|*_1_*:*_1_*:*_673119083_*|*_10007_*:*_1_*:*_2450771_*|*_3_*:*_1_*:*_2066339632_*|*_5_*:*_1_*:*_705448817_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_64001684_*|*_10006_*:*_1_*:*_9689963902"}], "description": "The way puppet server handles environment variables should be consolidated and normalized across the various use cases of the production service and all subcommand invocations.\n\nThis came up in the discussion on https://github.com/puppetlabs/puppet-server/pull/354\n\n{quote}\nAlso, interested in hashing out the whole discussion on clearing/overriding/preserving of different environment variables. You have some great points there. Wanted to get some other opinions to see where others are on that.\n{quote}\n\n{quote}\nYeah, maybe we should just pull that commit out of this PR and reconsider our environment support both for the CLI and the production scripting containers as a separate topic?\n{quote}\n\n{quote}\nI'd be good with separating them, too, although I think the tests would need to be rewritten a bit to work for the code as currently implemented.\n{quote}\n\n{quote}\n I think it also would be good to cover the environment rework stuff under a new JIRA ticket and expand the scope to include reworking the production ScriptingContainer code to be consistent with that of the subcommand tools.\n{quote}\n\n--\n\nSome work had been done in SERVER-262 -- and committed for the SERVER 1.0.2 release -- to fix the \"puppetserver gem env\" command.  Prior to SERVER-262, running the \"puppetserver gem env\" command would result in an error:\n\n{noformat}\n[vagrant@localhost ~]$ puppetserver gem env\nERROR:  While executing gem ... (NoMethodError)\n    undefined method `split' for nil:NilClass\n{noformat}\n\nSERVER-262 was later reverted in SERVER-522 -- SERVER 1.0.3 release -- because of some concerns about the new behavior which would have allowed the GEM_PATH variable to flow through from the user's environment into the JRuby environment in a \"puppetserver gem\" command execution.  In addition to the overall work to consolidate environment handling behavior, this ticket should also cover restoring \"puppetserver gem env\" to working order.\n\n---\n\nUPDATE - One of the pieces we'll need to reconcile as part of this work is how the {{ruby-load-path}} gets set.  In the irb.clj subcommand, the load path is front-loaded with some embedded JRuby lib paths as it is set onto the {{ScriptingContainer}}.  See: https://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.8/src/clj/puppetlabs/puppetserver/cli/irb.clj#L20-L24.  This was done in order to avoid some errors that were otherwise being produced by the system rubygems.  For {{ScriptingContainer}} initialization in production puppetserver code, however, this front-loading was not being done.  In SERVER-538, we found that the hipchat gem could not be loaded correctly unless the JRuby paths were front-loaded onto the load path on CentOS 6.  The front-loading approach may, therefore, be something we should do for production code as well.  We'd have to consider the best way to do that, though.  For example, should the JRuby lib paths just be frontloaded onto the beginning of the list of load paths or could the \"ruby-load-path\" configuration variable provide a way for the user to designate a location in the list of paths into which the JRuby libs are expanded?\n\n---\n\nUPDATE (2) - To avoid the risk of loading too much work into this one ticket, I'd propose that we limit the scope of this ticket to just consolidating the {{ScriptingContainer}} initialization behaviors for now and defer related work out to the implementation for linked tickets:\n\n- SERVER-377 - proxy support for puppetserver gem\n- SERVER-156 - proxy support for http client in production puppetserver master code\n- SERVER-584 - ability to specify arbitrary values for environment variables\n\nThe work for SERVER-297, then, would be about ensuring that all of the puppetserver CLI tools and production puppetserver code stack use the same {{ScriptingContainer}} initialization logic.  The work to be done for the proxy and arbitrary environment variable tickets may alter the original implementation but for now the implementation would just include the following with respect to the JRubyPuppet environment initialization:\n\n1) Set GEM_HOME from {{gem-home}} in the {{jruby-puppet}} config as before.\n2) Set JARS_NO_REQUIRE to true.\n3) Set HOME and PATH from the corresponding environment variables in the shell.  Production Puppet Server code whitelists these for Facter resolution.  This is also needed to allow the irb subcommand to continue working and to restore puppetserver gem env to working order.  Note that as we do SERVER-584 later that we may decide to derive this only from a configuration setting instead.\n4) Set load path from the {{ruby-load-path}} setting in {{os-settings/jruby-puppet}} as appropriate per branch.  For Server 1.X only, add in the \"front-loading\" of the load path with embedded JRuby path libs, as is done for the irb subcommand today - see https://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.8/src/clj/puppetlabs/puppetserver/cli/irb.clj#L20-L24.  This is needed for the irb command to continue working without errors and to address SERVER-538.  The use case outlined in SERVER-538 of being able to properly load the hipchat gem should be validated against this work on Server 1.x to confirm that the issue has been addressed as expected.  Note that this is only strictly needed for Server 1.X and not Server 2.X because for Server 2.x, core Ruby Puppet code is loaded into a separate directory from the system one.\n\nNote that I'm not entirely sure if the above changes will be sufficient for the \"ruby\" subcommand to continue working properly.  It may have dependencies on flowing through other environment variables which would need to be discovered as this work is undertaken.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15034", "fixedVersions": ["SERVER 2.1.1"], "id": "15034", "issueType": "Improvement", "key": "SERVER-297", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-06-09T12:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consolidate environment variable handling behaviors", "timeSpent": "PT0S", "updated": "2015-06-17T16:15:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c08e1562ab90069f8aed4] [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] [~accountid:623c12b6ee1b5a0070293582] [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] [~accountid:623e7507866b810069e57527] [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] I know there has been a decent amount of confusion around this topic lately.  I finally got around to writing up some docs about our current branching strategy and rough upcoming release schedule.  See linked PR, or, when this PR lands, it'll be README_BRANCHING.md in the repo.", "created": "2015-03-06T16:34:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Good info about the restrictions, good info for deciding which branch to PR against in the short-term. \n\nIt doesn't say which branch usually merges into which, and where PRs should be directed in the long-term. \n\nCould also use info about what causes branches to change status -- like, when does 2.x move to stable, and where does 1.x go after that. ", "created": "2015-03-06T16:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c08e1562ab90069f8aed4] added a second PR.", "created": "2015-03-09T10:10:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-06T15:24:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1358a76a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3nj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Caused confusion"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1194025577_*|*_10007_*:*_1_*:*_582860_*|*_3_*:*_1_*:*_942205_*|*_5_*:*_1_*:*_2072255852_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3906882755"}], "description": "[~accountid:623c08e1562ab90069f8aed4] suggested (as part of an email thread) that we document our branching strategy and we all agreed; probably just something added to the README.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "17602", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "17602", "issueType": "Task", "key": "SERVER-296", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-03-06T16:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document branching strategy in README", "timeSpent": "PT0S", "updated": "2015-04-07T14:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:9d7e1ff0-a786-480f-b087-6ebc4f485792", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "It might be that the hiera-mysql gem would need to be updated to work with the equivalent mysql gem available for JRuby.  This page, https://github.com/jruby/jruby/wiki/C-Extension-Alternatives, lists activerecord-jdbc-adapter and jdbc-mysql as replacements.", "created": "2015-01-06T12:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623e797fd32a94006a65d711], I believe you had mentioned that the user who had seen this was able to modify the hiera-mysql gem to use jdbc-mysql and that the hiera-mysql then appeared to be working on Puppet Server.  Can you confirm that is the case?  If so, can we close this issue?", "created": "2015-01-12T18:44:00.000000"}, {"author": "557058:9d7e1ff0-a786-480f-b087-6ebc4f485792", "body": "Hi [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], I'm the user in question here. I have not yet attempted to swap out the driver with the jdbc equivalent. I expect it will work, just haven't had the time to sit down and actually do it.\n\nIf you don't mind, can we hold this open until I've been able to confirm the fix? If I am able to get it working, I will submit a pull request back to the original module developer as well\n", "created": "2015-01-13T09:59:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "No problem, [~accountid:557058:9d7e1ff0-a786-480f-b087-6ebc4f485792], thanks.  Yeah, hoping this ends up being a straightforward replacement and thanks much for offering to take on the work to submit a PR to the original module developer if this works out.", "created": "2015-01-13T10:27:00.000000"}, {"author": "999854:c4af4c6f-1e07-4377-883d-17d9cb1ff964", "body": "got same problem when install gem *hiera-eyaml-gpg* via puppetserver, but it is not in the \"C-Extension-Alternatives\" list.", "created": "2015-03-02T21:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] can you provide links/details re: hiera-eyaml-gpg please?", "created": "2015-03-03T13:56:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "https://github.com/sihil/hiera-eyaml-gpg/pull/24 updates {{hiera-eyaml-gpg}} to be compatible with Puppet Server.  The fundamental issue is to use {{ruby_gpg}} instead of {{gpgme}}.", "created": "2015-03-03T14:05:00.000000"}, {"author": "557058:914ed7f1-226f-4f1f-92e8-84c71cc71ad2", "body": "Seems Hunter Haugen from Puppetlabs has work-around solution now. (https://groups.google.com/forum/?hl=en-GB#!topic/puppet-users/hY6FKP1AZJI)\n---\nFor those following along at home, 0.5.rc1 has been pushed to rubygems and can be installed with *gem install hiera-eyaml-gpg --pre* or *puppetserver gem install hiera-eyaml-gpg --pre*\n---\n\nWill have a try, but still waiting the final solution.", "created": "2015-03-11T03:49:00.000000"}, {"author": "557058:9d7e1ff0-a786-480f-b087-6ebc4f485792", "body": "I was not able to make any progress with this. We've decided to ultimately move away from using the hiera-mysql module altogether in favor of a more pure hiera implementation.\n\nYou can mark this wontfix or disposition however you see fit.\n\nThanks!", "created": "2015-04-08T11:41:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:9d7e1ff0-a786-480f-b087-6ebc4f485792] - Thanks for following up.", "created": "2015-04-13T12:28:00.000000"}, {"author": "557058:b9701f0f-390d-40c1-9497-9ac96dbd3ab1", "body": "\nI stumbled across this ticket recently, and as some Google searches may end up here thought I would clarify that hiera-mysql-2.0.0 is now available and works both with jRuby (jdbc) and regular native mysql and has been tested with Puppet 4.0.0\n\nHopefully my comment won't re-open the ticket, if it does, please close it with my apologies :)\n\n", "created": "2015-05-19T06:09:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b9701f0f-390d-40c1-9497-9ac96dbd3ab1] that is excellent info, thanks a bunch for the update!", "created": "2015-05-19T06:20:00.000000"}], "components": [], "created": "2015-01-06T12:05:00.000000", "creator": "623e797fd32a94006a65d711", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49d99e98"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxqc7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_774375106_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_7604242975"}], "description": "The hiera-mysql gem requires native extensions, and as such currently cannot be installed into the puppetserver.\n\nCurrently, no extension-free alternative seems to exist.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16419", "fixedVersions": [], "id": "16419", "issueType": "Bug", "key": "SERVER-295", "labels": ["customer", "support"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e797fd32a94006a65d711", "resolution": "Won't Fix", "resolutionDate": "2015-04-13T12:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "hiera-mysql gem can't install", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] & [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5]  Are we confident enough in the existing testing that surrounds this issues that we should skip FR/QA?  Stated another way, do we consider the risk to our customers and users on this issue to be low?", "created": "2015-03-10T14:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think the existing testing in Puppet Server is pretty good.  We may want to do some additional testing around the different file API endpoints in Puppet to ensure that uploads with binary content are still working okay.  I suspect that probably isn't covered well in the existing Puppet acceptance suite since we shipped Puppet Server with binary uploads being broken, and we didn't know about that until a PE user had reported the problem.  Maybe you could just cover the same testing through regression that you did for SERVER-269 but with Puppet 4 agents talking to the pre-Puppet Server 2.0 master?", "created": "2015-03-10T14:47:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed with Jeff McCune.  We consider this to have medium Severity, and of medium Probabitlity.  Medium risk.  QA will perform FR.", "created": "2015-03-11T16:46:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "I installed puppetserver 2.0.0-rc4 with puppet-agent 0.9.1 on an Ubuntu 12.04 x64 VM and used the test outlined in SERVER-269 to verify that file serving of binary files is working. Downloading the iso8859.txt file and backing it up to the Puppet's file bucket worked successfully, and the file had the same md5sum locally and when backed up to the file bucket.", "created": "2015-04-06T16:50:00.000000"}], "components": ["Puppet Server"], "created": "2015-01-06T09:46:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c38fc55"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0q7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1647515983_*|*_1_*:*_1_*:*_1214275110_*|*_10007_*:*_1_*:*_775399691_*|*_3_*:*_1_*:*_77660673_*|*_5_*:*_1_*:*_46633281211_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_2252615044_*|*_10006_*:*_1_*:*_1830366432"}], "description": "The work in SERVER-269 slated for SERVER 1.0.1 would introduce a \"hack\" which treats the Content-Type for file_bucket/file requests as though they were \"application/octet-stream\" instead of the \"text/plain\" that they are \"currently\" -- at least through Puppet 3.7.3 -- using.  An associated ticket, PUP-3812, was filed to Puppet core to allow for clients and core Puppet Ruby server code to use \"application/octet-stream\" for file_bucket/file requests.  When/if that ticket is addressed, it would probably make sense to remove this Content-Type conversion hack from the Puppet Server code.\n___\nRisk assessment: Medium (QA to perform FR) \nProbability: Medium\nSeverity: Medium", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15781", "fixedVersions": ["SERVER 2.0.0"], "id": "15781", "issueType": "Improvement", "key": "SERVER-294", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-04-06T16:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Remove text/plain -> application/octet-stream conversion for file_bucket/file", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:291cd4a1-794b-4442-93e6-929db39e48f7", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "https://forge.puppetlabs.com/puppetlabs/pe_puppetserver_gem\nhttps://github.com/puppetlabs/puppetlabs-pe_puppetserver_gem\n\nAre those what you are looking for?", "created": "2015-01-06T07:35:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "These are exactly what I was looking for (just not for PE).  Are they interchangeable at this point (and in the future)?", "created": "2015-01-06T08:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ah, I didn't realize you were looking for non-PE versions.  I don't think anyone has put those together.  They will, unfortunately, be slightly different from the PE ones just due to the hard-coded path to the bin directory.\n\nI would imagine you could simply clone the github repo, rename things, and fix up the hard-coded path for now if you need a workaround.  We will try to find some time to put together an \"official\" one but I'm not quite sure when that would make it into a sprint.", "created": "2015-01-06T08:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "btw, I'm guessing that for \"normal\" gems (non-Puppet-Server) in OSS, you are able to get by with just the built-in gem provider that ships with core puppet?", "created": "2015-01-06T08:56:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Thanks, cloning the repo and doing my own was my first thought after you pointed me to that one.  \n\nYeah, the gem provider works as expected for OSS puppet.\n", "created": "2015-01-06T08:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "great, thanks.  I'll talk with some folks around the office and try to decide whether we want to do a 'puppetserver_gem' provider as a module, or consider just building it into the core like the current 'gem' provider is.", "created": "2015-01-06T09:05:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "This is a pretty easy change, I'm about done updating it for the OSS version (just need to push it out to test it).  If you'd like it as a module, let me know and I can transfer my repo back to puppetlabs so you can release it.", "created": "2015-01-06T09:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks!  Will let you know.", "created": "2015-01-06T09:15:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] any update on this?  Happy to transfer https://github.com/jlambert121/puppetlabs-puppetserver_gem to PL if wanted.", "created": "2015-01-15T09:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:8527c9e8-8e3f-451c-b529-f6fe014233ed] [~accountid:70121:9c658341-861b-467e-8f57-dfcff20944cb] [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] [~accountid:557058:923149f8-040e-4296-b279-cbc5b8a6aa98] any of you gentlemen have thoughts on this?", "created": "2015-01-15T10:24:00.000000"}, {"author": "557058:923149f8-040e-4296-b279-cbc5b8a6aa98", "body": "Oh hey, this is just like ROAD-653 which hit me last week. \n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'm lacking a sense of a) whether this is necessary with unified packaging (I suspect it is) and b) if a puppetserver_gem provider would eliminate the need for the existing [pe_gem|https://forge.puppetlabs.com/puppetlabs/pe_gem] (for those on PE 3.7+). \n\nIf we think it's necessary beyond the next release or two of PE, it's absolutely worth considering making this a puppetlabs Forge module that's shipped by default with PE, for convenience. cc/ [~accountid:557058:b64e0a8c-6f57-44f9-adf1-b0b9767a03da] for awareness. ", "created": "2015-01-15T10:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:923149f8-040e-4296-b279-cbc5b8a6aa98] to clarify: we already have a PE module that is on the forge, which could be shipped with PE today if we chose to do so.  [~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c]'s new module is for OSS.  I think it would still be necessary with unified packaging because there is a difference between gems you'd install for agent use (via `package` resource type's built-in gem provider) vs. Puppet Server use (Justin's module).  I don't think it would eliminate the need for existing pe_puppetserver_gem, but that's a packaging issue and I might be wrong about it.  Maybe [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] has thoughts.\n\nI can see a few different options:\n\n1. If packaging changes result in a world where a single provider could be used for puppetserver gems in both OSS and PE, then we effectively get rid of the existing pe_puppetserver_gem in favor of what Justin has here.\n2. Since, historically, the providers that users need in order to manage gems for their puppet master has been available as part of the core `package` type, maybe this belongs in core rather than in a module?\n3. If we need to continue to maintain a distinction between pe_puppetserver_gem and puppetserver_gem, then potentially we take Justin up on his offer to make this a PL module, and we provide both of them.", "created": "2015-01-15T10:42:00.000000"}, {"author": "557058:923149f8-040e-4296-b279-cbc5b8a6aa98", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], thanks for the explanation. I was not clear. And hey, being unaware of https://forge.puppetlabs.com/puppetlabs/pe_puppetserver_gem shows you how much I'm not the Forge product manager anymore.\n\nRE 1: Even if packaging is disparate, can't the provider accommodate both paths? I would prefer our customer to just think about whether they're installing a gem for the puppet server or for the MRI master. \n\nRE 2: I think we're trying to get away from core type/providers that aren't delivered as modules from the Forge but this does seem like one of the more common ones. [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], I don't have a strong opinion. \n\nRE 3: Just so that I'm clear, I have no objection to it. Just trying to understand it. \n\n", "created": "2015-01-15T10:49:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "[~accountid:557058:923149f8-040e-4296-b279-cbc5b8a6aa98] I actually like your point 1 a lot (or if I mis-interpreted it, I like this idea) - the provider should have the ability to decide if it's PE or not.  From a module standpoint, it is frustrating always having to abstract gem vs. pe_gem if that can be avoided.\n\nOn 2 - To me, it seems like providers that are directly (and only) used by PL products should be included in puppet to increase \"it just works\".  Other custom ones based more around things such as rubyenv or chocolatey seem to make more sense to break out so updates aren't tied to puppet releases.", "created": "2015-01-15T11:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This came up in IRC again today.  [~accountid:557058:d7e0d274-ca44-4c2e-aa93-ca9f7876d631] / [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] do you have any thoughts on whether we should consider taking [~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] up on his kind offer to donate his module?", "created": "2015-03-23T13:54:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "Any update on this guys?  I now need this in my manifests and would rather not have it published to the forge as me if PL is going to be interested in taking it.", "created": "2015-05-03T04:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:999854:5afd6752-12cb-40ec-a90c-66fc8102285c] [~accountid:557058:b64e0a8c-6f57-44f9-adf1-b0b9767a03da] ^^ any thoughts?", "created": "2015-05-03T23:39:00.000000"}, {"author": "557058:b64e0a8c-6f57-44f9-adf1-b0b9767a03da", "body": "We are currently discussing this internally, will have an update soon.", "created": "2015-05-04T09:22:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "I've seen some sprints added to this ticket, is the discussion can being kicked down the road or is the \"we need to do this\" can being kicked down the road?", "created": "2015-05-13T09:52:00.000000"}, {"author": "557058:b64e0a8c-6f57-44f9-adf1-b0b9767a03da", "body": "Hi Justin - We are currently updating the module to handle both OSS and PE.  Former user was going to reach out to you to tell you about the approach.  Thanks!", "created": "2015-05-13T18:17:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "Thanks for the response, I think that's the best solution.  the gem vs. pe_gem provider in 3.x series is frustrating - this is much cleaner.", "created": "2015-05-13T18:24:00.000000"}, {"author": "557058:291cd4a1-794b-4442-93e6-929db39e48f7", "body": "Hi [~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c] I have the new repository for the module up and running. There are still a few things that i need to get sorted. I will let you know when it is getting close", "created": "2015-05-18T05:09:00.000000"}, {"author": "557058:291cd4a1-794b-4442-93e6-929db39e48f7", "body": "We have the first release on the forge and available on git:\nhttps://github.com/puppetlabs/puppetlabs-puppetserver_gem\nhttps://forge.puppetlabs.com/puppetlabs/puppetserver_gem\n\nThanks to everyone and [~accountid:557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c]", "created": "2015-06-03T04:25:00.000000"}], "components": [], "created": "2015-01-06T07:26:00.000000", "creator": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6583c23d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoshb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_172588348_*|*_1_*:*_2_*:*_171511336_*|*_3_*:*_2_*:*_2086032564_*|*_10009_*:*_1_*:*_1446097_*|*_5_*:*_1_*:*_41647025664_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_391246_*|*_10016_*:*_1_*:*_2196718477_*|*_10005_*:*_1_*:*_8163805616"}], "description": "I'm not sure if this ticket should be opened under puppet or puppet server since the provider is in puppet, but the use case is in server - feel free to move.\n\nSince puppetserver has its own gem management under the JRuby installation, modules need a way to specify gems that should be installed (such as eyaml).  I was looking for a package provider for puppetserver (similar to pe_gem), but have not found one.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16725", "fixedVersions": [], "id": "16725", "issueType": "New Feature", "key": "SERVER-293", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "resolution": "Fixed", "resolutionDate": "2015-06-03T09:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "OSS Puppet Server gem provider needed", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Some issues haven't been closed because they're still TBD for PE 3.7.2 instead of FOSS 1.0.2", "created": "2015-01-20T12:00:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44f7f511"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpiv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1295691587_*|*_5_*:*_1_*:*_52721948631_*|*_6_*:*_1_*:*_0"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%221.0.1%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17235", "fixedVersions": [], "id": "17235", "issueType": "Sub-task", "key": "SERVER-292", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-01-20T12:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] Is this something I should do for the 1.0.1 release, or is it something RE typically handles?  If it's me, could you let me know where I can read up on how to update dujour?\n\nThis is currently assigned to me after running the `pl:tickets` rake task as per https://confluence.puppetlabs.com/display/PE/Releasing+a+new+version+of+Puppet+Server", "created": "2015-01-05T12:34:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}\nMatthaus Owens Is this something I should do for the 1.0.1 release, or is it something RE typically handles? If it's me, could you let me know where I can read up on how to update dujour?\n\nThis is currently assigned to me after running the `pl:tickets` rake task as per https://confluence.puppetlabs.com/display/PE/Releasing+a+new+version+of+Puppet+Server\n{quote}\n\nWhoops, sorry [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e], looks like [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] handled this for the 1.0.0 release.  What do you think [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]?", "created": "2015-01-05T12:35:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:623c12b6ee1b5a0070293582] I think that RE has done this in the past because we have the access to do it. However, it would be rad if we weren't the only ones able to do this. To get dujour access, a PR against the following file should be sufficient: https://github.com/puppetlabs/puppetlabs-modules/blob/production/site/profile/files/dujour/htpasswd (it's just standard htpasswd stuff).", "created": "2015-01-05T12:37:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] pull request for green team username and password is at:\n\nhttps://github.com/puppetlabs/puppetlabs-modules/pull/3354\n\nThe password is in my 1Password database.  I'll figure out how to circulate it, or not, later.", "created": "2015-01-15T15:00:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "I've walked through this process with Jeff, and the green team should now have access to do this in the future.", "created": "2015-01-15T15:04:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e9d9e1e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpin:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1824915_*|*_3_*:*_1_*:*_973211_*|*_5_*:*_1_*:*_53142326514_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_704276193_*|*_10005_*:*_1_*:*_167669250"}], "description": "Update dujour to notify users to use 1.0.2.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16898", "fixedVersions": [], "id": "16898", "issueType": "Sub-task", "key": "SERVER-291", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-15T15:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 1.0.2", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73382c1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpi7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1294723495_*|*_5_*:*_1_*:*_52722346642_*|*_6_*:*_1_*:*_0"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16724", "fixedVersions": [], "id": "16724", "issueType": "Sub-task", "key": "SERVER-290", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-20T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [], "comments": [], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45f06dd5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxphz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1294718112_*|*_5_*:*_1_*:*_52722347268_*|*_6_*:*_1_*:*_0"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16418", "fixedVersions": [], "id": "16418", "issueType": "Sub-task", "key": "SERVER-289", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-20T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64d675d5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxphr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_873746050_*|*_3_*:*_1_*:*_1437058_*|*_5_*:*_1_*:*_53141897259_*|*_6_*:*_1_*:*_0"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16021", "fixedVersions": [], "id": "16021", "issueType": "Sub-task", "key": "SERVER-288", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-15T15:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f69b5d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxphj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_873574388_*|*_5_*:*_1_*:*_53143499599_*|*_6_*:*_1_*:*_0"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15779", "fixedVersions": [], "id": "15779", "issueType": "Sub-task", "key": "SERVER-287", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-15T14:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Will be done via the hipchats.", "created": "2015-01-13T16:13:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "+1 from [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79], [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:623c12b6ee1b5a0070293582], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], ", "created": "2015-01-15T14:46:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10a2a74f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxphb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_794960171_*|*_3_*:*_1_*:*_78698152_*|*_4_*:*_1_*:*_75146_*|*_5_*:*_2_*:*_53143352645_*|*_6_*:*_1_*:*_0"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15540", "fixedVersions": [], "id": "15540", "issueType": "Sub-task", "key": "SERVER-286", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-15T14:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "packages available at http://builds.puppetlabs.lan/puppetserver/1.0.1/", "created": "2015-01-14T11:44:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "packages available at http://builds.puppetlabs.lan/puppetserver/1.0.2/", "created": "2015-01-14T15:59:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "[~accountid:623c12b6ee1b5a0070293582] could you put some information about the platforms you tested here? Maybe also the steps you took during testing, and also output?", "created": "2015-01-14T16:04:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Yeah, my testing was primarily on CentOS 7:\n\n{code}\n$ sudo yum install http://builds.puppetlabs.lan/puppetserver/1.0.2/artifacts/el/7/products/x86_64/puppetserver-1.0.2-1.el7.noarch.rpm\n$ sudo systemctl stop  puppetserver\n$ sudo puppetserver foreground\n2015-01-15 15:28:26,176 INFO  [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2015-01-15 15:28:26,186 INFO  [p.t.s.w.jetty9-service] Initializing web server(s).\n2015-01-15 15:28:32,866 INFO  [puppet-server] Puppet Puppet settings initialized", "created": "2015-01-15T16:49:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1fb947c1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxph3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_791715695_*|*_5_*:*_1_*:*_53225930765_*|*_6_*:*_1_*:*_0"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nSmoke test platforms:\n  * EL7\n  * EL6\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15227", "fixedVersions": [], "id": "15227", "issueType": "Sub-task", "key": "SERVER-285", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-01-14T16:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] The 1.0.1 commit is a651c1aed5997a42e74a3dc86dd426665460e2ca on the stable branch.  Please note, I've already updated the stable branch to use 1.0.2-SNAPSHOT for development, so we aren't releasing from HEAD.\n\n-Jeff", "created": "2015-01-14T10:13:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "packages available at http://builds.puppetlabs.lan/puppetserver/1.0.1/", "created": "2015-01-14T11:43:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Updated SHA for 1.0.2 is:\n\n{code}\ncommit f14fee59f36ec9ec6b3294bb62836134098f6e6b\nAuthor: Jeff McCune <jeff@puppetlabs.com>\nDate:   Wed Jan 14 12:08:54 2015 -0800\n\n    (MAINT) Update version to 1.0.2 for release\n\ndiff --git a/project.clj b/project.clj\nindex 6a0727b..c012b5d 100644\n--- a/project.clj\n+++ b/project.clj\n@@ -9,7 +9,7 @@\n     :password :env/nexus_jenkins_password\n     :sign-releases false })\n\n-(defproject puppetlabs/puppet-server \"1.0.2-SNAPSHOT\"\n+(defproject puppetlabs/puppet-server \"1.0.2\"\n   :description \"Puppet Server\"\n\n   :dependencies [[org.clojure/clojure \"1.5.1\"]\n{code}", "created": "2015-01-14T15:47:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "@melissa could you please confirm this is resolved for 1.0.2?  I noticed it was resolved, but I thought that might have been for 1.0.1.", "created": "2015-01-14T15:51:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Confirmed. Built packages available at http://builds.puppetlabs.lan/puppetserver/1.0.2/", "created": "2015-01-14T15:57:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@777acfb9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpgv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_776028918_*|*_3_*:*_1_*:*_271554_*|*_5_*:*_2_*:*_53240398951_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_397507"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:623c12b6ee1b5a0070293582] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15033", "fixedVersions": [], "id": "15033", "issueType": "Sub-task", "key": "SERVER-284", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-14T15:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:623c08e1562ab90069f8aed4] We're still planning on doing the puppet-server 1.0.1 release on Wednesday.  Do you have everything you need for this ticket?  Does it block the release at all, or do the release notes and story happen at a later point in time?", "created": "2015-01-13T16:08:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Just a note that we're releasing the changes as 1.0.2 instead of 1.0.1.", "created": "2015-01-14T16:42:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Server release notes reflect 1.0.2, but have a note that 1.0.1 is a skipped version number.", "created": "2015-01-16T12:08:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72c3471b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpgn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_950570356_*|*_5_*:*_1_*:*_53066517545_*|*_6_*:*_1_*:*_0"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17599", "fixedVersions": [], "id": "17599", "issueType": "Sub-task", "key": "SERVER-283", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-16T12:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] I tried to do this as part of the 1.0.1 puppetserver release that's going out tomorrow (Wednesday), but I don't think I have sufficient permissions.  I found the 1.0.1 version in Jira, but I can't edit anything or mark the version as released.  I also can't create a new version as instructed in this ticket.\n\nAny advice?  Do you know what to do with this ticket?", "created": "2015-01-13T16:05:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Eric Sorenson and I did this.", "created": "2015-01-20T11:57:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4029fda5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpgf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_705647114_*|*_5_*:*_1_*:*_52721564726_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_589885318"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17233", "fixedVersions": [], "id": "17233", "issueType": "Sub-task", "key": "SERVER-282", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-20T11:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c12b6ee1b5a0070293582", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Version number updated to 1.0.1 in SHA a651c1aed5997a42e74a3dc86dd426665460e2ca", "created": "2015-01-14T10:17:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Smoke testing has found an issue.  It looks like running `lein deploy` compiled the JAR file using the Java version on the host running the `lein deploy` process.  This java version is different from the version running in CI.  The resulting RPM on EL7 is giving this error which we think is the result.\n\nTo this end, we're (Chris, Eric0, JB, Haus...) leaning toward burning 1.0.1 and moving directly to 1.0.2.  I'll update this ticket with the new SHA for 1.0.2 and we'll make sure to let the CI system build the JAR file to get the desired Java version building the archive.\n\n{code}\n[vagrant@localhost ~]$ sudo puppetserver foreground\nException in thread \"main\" java.lang.UnsupportedClassVersionError: com/puppetlabs/puppetserver/JRubyPuppetResponse : Unsupported major.minor version 52.0\n\tat java.lang.ClassLoader.defineClass1(Native Method)\n\tat java.lang.ClassLoader.defineClass(ClassLoader.java:800)\n\tat java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)\n\tat java.net.URLClassLoader.defineClass(URLClassLoader.java:449)\n\tat java.net.URLClassLoader.access$100(URLClassLoader.java:71)\n\tat java.net.URLClassLoader$1.run(URLClassLoader.java:361)\n\tat java.net.URLClassLoader$1.run(URLClassLoader.java:355)\n\tat java.security.AccessController.doPrivileged(Native Method)\n\tat java.net.URLClassLoader.findClass(URLClassLoader.java:354)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:425)\n\tat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:412)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:412)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:412)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:412)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:412)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:412)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:358)\n\tat java.lang.Class.forName0(Native Method)\n\tat java.lang.Class.forName(Class.java:191)\n\tat puppetlabs.services.request_handler.request_handler_core$eval6094$loading__4910__auto____6095.invoke(request_handler_core.clj:1)\n\tat puppetlabs.services.request_handler.request_handler_core$eval6094.invoke(request_handler_core.clj:1)\n\tat clojure.lang.Compiler.eval(Compiler.java:6619)\n\tat clojure.lang.Compiler.eval(Compiler.java:6608)\n\tat clojure.lang.Compiler.load(Compiler.java:7064)\n\tat clojure.lang.RT.loadResourceScript(RT.java:370)\n\tat clojure.lang.RT.loadResourceScript(RT.java:361)\n\tat clojure.lang.RT.load(RT.java:440)\n\tat clojure.lang.RT.load(RT.java:411)\n\tat clojure.core$load$fn__5018.invoke(core.clj:5530)\n\tat clojure.core$load.doInvoke(core.clj:5529)\n\tat clojure.lang.RestFn.invoke(RestFn.java:408)\n\tat clojure.core$load_one.invoke(core.clj:5336)\n\tat clojure.core$load_lib$fn__4967.invoke(core.clj:5375)\n\tat clojure.core$load_lib.doInvoke(core.clj:5374)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:142)\n\tat clojure.core$apply.invoke(core.clj:619)\n\tat clojure.core$load_libs.doInvoke(core.clj:5413)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:137)\n\tat clojure.core$apply.invoke(core.clj:619)\n\tat clojure.core$require.doInvoke(core.clj:5496)\n\tat clojure.lang.RestFn.invoke(RestFn.java:482)\n\tat puppetlabs.services.request_handler.request_handler_service$eval6050$loading__4910__auto____6051.invoke(request_handler_service.clj:1)\n\tat puppetlabs.services.request_handler.request_handler_service$eval6050.invoke(request_handler_service.clj:1)\n\tat clojure.lang.Compiler.eval(Compiler.java:6619)\n\tat clojure.lang.Compiler.eval(Compiler.java:6608)\n\tat clojure.lang.Compiler.load(Compiler.java:7064)\n\tat clojure.lang.RT.loadResourceScript(RT.java:370)\n\tat clojure.lang.RT.loadResourceScript(RT.java:361)\n\tat clojure.lang.RT.load(RT.java:440)\n\tat clojure.lang.RT.load(RT.java:411)\n\tat clojure.core$load$fn__5018.invoke(core.clj:5530)\n\tat clojure.core$load.doInvoke(core.clj:5529)\n\tat clojure.lang.RestFn.invoke(RestFn.java:408)\n\tat clojure.core$load_one.invoke(core.clj:5336)\n\tat clojure.core$load_lib$fn__4967.invoke(core.clj:5375)\n\tat clojure.core$load_lib.doInvoke(core.clj:5374)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:142)\n\tat clojure.core$apply.invoke(core.clj:619)\n\tat clojure.core$load_libs.doInvoke(core.clj:5413)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:137)\n\tat clojure.core$apply.invoke(core.clj:619)\n\tat clojure.core$require.doInvoke(core.clj:5496)\n\tat clojure.lang.RestFn.invoke(RestFn.java:408)\n\tat puppetlabs.trapperkeeper.bootstrap$resolve_service_BANG_$fn__5975.invoke(bootstrap.clj:44)\n\tat puppetlabs.trapperkeeper.bootstrap$resolve_service_BANG_.invoke(bootstrap.clj:44)\n\tat puppetlabs.trapperkeeper.bootstrap$parse_bootstrap_config_BANG_$iter__5998__6002$fn__6003.invoke(bootstrap.clj:157)\n\tat clojure.lang.LazySeq.sval(LazySeq.java:42)\n\tat clojure.lang.LazySeq.seq(LazySeq.java:60)\n\tat clojure.lang.RT.seq(RT.java:484)\n\tat clojure.core$seq.invoke(core.clj:133)\n\tat clojure.core$every_QMARK_.invoke(core.clj:2422)\n\tat puppetlabs.trapperkeeper.bootstrap$parse_bootstrap_config_BANG_.invoke(bootstrap.clj:151)\n\tat puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:113)\n\tat puppetlabs.trapperkeeper.core$run.invoke(core.clj:144)\n\tat puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159)\n\tat clojure.lang.RestFn.invoke(RestFn.java:457)\n\tat clojure.lang.Var.invoke(Var.java:427)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:172)\n\tat clojure.lang.Var.applyTo(Var.java:532)\n\tat clojure.core$apply.invoke(core.clj:617)\n\tat puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7)\n\tat clojure.lang.RestFn.invoke(RestFn.java:457)\n\tat clojure.lang.Var.invoke(Var.java:427)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:172)\n\tat clojure.lang.Var.applyTo(Var.java:532)\n\tat clojure.core$apply.invoke(core.clj:617)\n\tat clojure.main$main_opt.invoke(main.clj:335)\n\tat clojure.main$main.doInvoke(main.clj:440)\n\tat clojure.lang.RestFn.invoke(RestFn.java:512)\n\tat clojure.lang.Var.invoke(Var.java:435)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:185)\n\tat clojure.lang.Var.applyTo(Var.java:532)\n\tat clojure.main.main(main.java:37)\n{code}", "created": "2015-01-14T13:07:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Here's the updated SHA for 1.0.2\n\n{code}\ncommit f14fee59f36ec9ec6b3294bb62836134098f6e6b\nAuthor: Jeff McCune <jeff@puppetlabs.com>\nDate:   Wed Jan 14 12:08:54 2015 -0800\n\n    (MAINT) Update version to 1.0.2 for release\n\ndiff --git a/project.clj b/project.clj\nindex 6a0727b..c012b5d 100644\n--- a/project.clj\n+++ b/project.clj\n@@ -9,7 +9,7 @@\n     :password :env/nexus_jenkins_password\n     :sign-releases false })\n\n-(defproject puppetlabs/puppet-server \"1.0.2-SNAPSHOT\"\n+(defproject puppetlabs/puppet-server \"1.0.2\"\n   :description \"Puppet Server\"\n\n   :dependencies [[org.clojure/clojure \"1.5.1\"]\n{code}", "created": "2015-01-14T13:09:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3eead82f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpg7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_712916435_*|*_3_*:*_1_*:*_77990250_*|*_5_*:*_1_*:*_53226755382_*|*_6_*:*_1_*:*_0"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16723", "fixedVersions": [], "id": "16723", "issueType": "Sub-task", "key": "SERVER-280", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-01-14T15:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Yes, there is.  I ran the inquisitor and these came back as false positives:\n\n{quote}\n++ Issues in Jira not found in Git\n    SERVER-276: (Unresolved) puppetserver 1.0.1 2015-01-14 Release\n    SERVER-275: (Unresolved) logback levels aren't changed w/o restart?\n    SERVER-166: (Unresolved) Set START_TIMEOUT to 120 seconds for sysv init scripts and systemd\n{quote}\n\n276 is mine for the release itself.  275 and 166 are both merged into ezbake, which is why they're not showing up against puppet-server's history.", "created": "2015-01-13T15:38:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64e9fa8f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpfz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_703898318_*|*_3_*:*_1_*:*_129386_*|*_5_*:*_1_*:*_53313630254_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release) There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16416", "fixedVersions": [], "id": "16416", "issueType": "Sub-task", "key": "SERVER-279", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-01-13T15:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "All tickets referenced in the commit log have a jira targeted (fix version) set to SERVER 1.0.1\n\n{code}\n++ Issues in Git that are not in Jira\n    MAINT\n      0320f59: Bumped version of TK-Jetty9 dependency\n      2ce3317: Make cli .erb files more robust\n      ec326db: Add sqa-utils to Gemfile.\n      310801a: Fix intermittent gem install failures.\n      5b6b6d6: Update to 1.0.1-SNAPSHOT for development\n    docs\n      b9fff0e: Address PR comments\n      e9a9ce7: Edit page about certificate change errors", "created": "2015-01-13T15:57:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@205c2501"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpfr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_705133864_*|*_5_*:*_1_*:*_53312528214_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release). There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16020", "fixedVersions": [], "id": "16020", "issueType": "Sub-task", "key": "SERVER-278", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-01-13T15:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Delaying this until the recent merges into stable go through CI.", "created": "2015-01-13T13:07:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Code is ready for release, everything ran through CI cleanly last night.", "created": "2015-01-14T10:16:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Yes, it's ready for 1.0.2.", "created": "2015-01-14T15:56:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Yep, 1.0.2 is green.", "created": "2015-01-14T16:06:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c02e6b7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxpif:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_692993523_*|*_3_*:*_2_*:*_2039724_*|*_4_*:*_1_*:*_20954342_*|*_5_*:*_1_*:*_53225608319_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_76066205"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%221.0.1%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15778", "fixedVersions": [], "id": "15778", "issueType": "Sub-task", "key": "SERVER-277", "labels": [], "originalEstimate": "PT0S", "parent": "15539", "parentSummary": "puppetserver 1.0.2 2015-01-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-01-14T16:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0cbf1c7f6a007049e5b9", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c12b6ee1b5a0070293582] ping - sync w/[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] and make sure this date sounds OK.", "created": "2015-01-05T14:45:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Date sounds fine", "created": "2015-01-05T16:42:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Pushing back 1 day to 2015-01-15 in an effort to get a clear go-no-go signal.", "created": "2015-01-14T17:48:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Puppet Server 1.0.2 released.", "created": "2015-01-20T11:58:00.000000"}], "components": [], "created": "2015-01-05T12:05:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@97426ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypq6f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9730543_*|*_5_*:*_1_*:*_53213444957_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1285861488"}], "description": "puppetserver 1.0.2 2015-01-14 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15539", "fixedVersions": ["SERVER 1.0.2"], "id": "15539", "issueType": "Task", "key": "SERVER-276", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Done", "resolutionDate": "2015-01-20T11:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver 1.0.2 2015-01-15 Release", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Is the expectation that changing and saving the file is all that's required to change the logback level, or would the process need to be signaled somehow?\n\nAs a general principle, we've found the magic parsing of configuration files in Puppet very problematic.  It's common practice and generally preferable IMHO to change configuration in response to an event, often the USR1 signal.  This provides a clear point when the configuration will be parsed and expected to change and allows users to batch up a set of changes, then have them take effect when the user sends the signal.", "created": "2014-12-30T11:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "For most things I'd agree with you that an explicit user request would be preferable (and in our case that will often be an HTTP API as opposed to a system-level signal, just because signal handling isn't always the most pleasant thing on the JVM and varies by platform).\n\nHowever, in this case, the dynamic reload is something that is provided by logback itself, and it is supposed to just poll for changes in the file.  My inclination would probably be to just sort out why that built-in functionality isn't working for us today, and assuming it's straightforward, just solve that problem rather than putting together our own machinery to handle it.\n\nIn fact, I believe that this file-polling setting is something that a user is supposed to be able to configure from within the logback config file itself, so when we are pointing people to the logback docs and saying \"this is how you configure our logging system\", we want to know that we actually support everything that those docs suggest.", "created": "2014-12-30T11:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Looks like maybe the issue is just that we aren't including the 'scan' attribute of the 'config' tag in the config files we ship.", "created": "2015-01-02T15:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We should ping the pe-console-services team about this issue as well.", "created": "2015-01-05T14:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] [~accountid:557058:dc666788-5651-476c-a211-ec5b44a7b0dd] We are going to fix this for Puppet Server for PE3.7.2.  We were thinking we should probably do it for PE Console Services as well, so, ping :)\n\n[~accountid:557058:dc666788-5651-476c-a211-ec5b44a7b0dd] I don't think you guys have a specific build coming out that is targeted at PE3.7.2 but maybe this just goes into your next OSS release?", "created": "2015-01-05T15:03:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] thanks. Created PE-7274 to track.", "created": "2015-01-06T09:13:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], Can you propose a test that would validate this fix?  I'm reviewing http://logback.qos.ch/manual/configuration.html for a possible test.\n\nIf QA Console side ( [~accountid:557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c] &| Former user ) are unable to accept PE-7274 for testing, and if PE-7274 there fore does not make it into PE 3.7.2, is there risk for us proceed with this fix? ", "created": "2015-01-06T10:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] it's basically just:\n\n* start up Puppet Server with a logback.xml config file that does *not* have 'scan=true' in the opening 'config' tag, and the log level set to INFO.\n* watch log messages, make sure it's actually logging at INFO\n* edit the logback.xml file, change log level to DEBUG, but don't restart the service\n* watch log messages for 1-2 minutes, confirm that everything is still only logging at INFO\n* restart the service, confirm that it now logs at DEBUG\n\nThen,\n\n* start up Puppet Server with a logback.xml config file that *DOES* have 'scan=true', and log level set to INFO\n* watch log messages, make sure it's logging at INFO\n* edit the logback.xml file, change log level to DEBUG, don't restart the service\n* watch log messages for 1-2 minutes, confirm that the logging dynamically switches over to DEBUG at some point, without ever having to restart the service\n", "created": "2015-01-06T11:39:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Merged into puppetlabs/stable as 3346dd0 and up into master in fc3e28f.", "created": "2015-01-09T11:53:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated fix in rhel7.", "created": "2015-01-22T15:40:00.000000"}], "components": [], "created": "2014-12-30T10:49:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70f988da"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp90v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_949680971_*|*_1_*:*_1_*:*_530587385_*|*_10007_*:*_1_*:*_247733487_*|*_3_*:*_1_*:*_11917150_*|*_10009_*:*_1_*:*_187173673_*|*_5_*:*_1_*:*_53027487507_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_77564753"}], "description": "This may be a duplicate of a ticket that I already created, I can't recall.\n\nWhen I was sitting down with [~accountid:623e797fd32a94006a65d711] to debug some things recently, it did not appear that Puppet Server was dynamically picking up changes to the logback.xml file; it seemed like a restart was required.  I did not think this was the case... it should be able to pick up the changes at runtime.  We need to investigate and perhaps fix.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16019", "fixedVersions": ["SERVER 1.0.2"], "id": "16019", "issueType": "Task", "key": "SERVER-275", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-01-22T15:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "logback levels aren't changed w/o restart?", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "For posterity, I'm not sure we're going to be able to address this in Puppet Server based on the information from the linked articles.\n\n{quote}\nDOES THE CRASH DETECTION HAVE AN IMPACT ON SYSTEM PERFORMANCE?\n\nIn order to be able to report uncaught exceptions, the abrt-java-connector agent must register several JVMTI event callbacks and the processing inside of those callbacks have not-insignificant impact on the performance of an entire application.\n\nIf this is a concern to you, you can disable the Java uncaught exception detection by uninstalling the abrt-java-connector package.\n{quote}\n\nGiven this information, the performance impact is likely a result of processing events callbacks in `abrt-java-connector` and not a result of puppetserver's behavior.", "created": "2014-12-29T14:18:00.000000"}], "components": ["Performance", "Puppet Server"], "created": "2014-12-29T12:58:00.000000", "creator": "623c0c4ba2f6400069eb781b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ec1c692"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxnpb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_610953961_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_203503"}], "description": "The abrt-java-connector will cause a significant performance degradation if installed.\n\nhttps://access.redhat.com/articles/642323\nhttps://access.redhat.com/articles/701653\n\nI noticed catalog compiles going from 5 - 10 seconds on a busy system to 300+ seconds.\n\nJust reporting in case someone else is running into this.", "environment": "Puppetserver 1.0.0\nRHEL 7.0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15538", "fixedVersions": [], "id": "15538", "issueType": "Improvement", "key": "SERVER-274", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Trivial", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0c4ba2f6400069eb781b", "resolution": "Won't Fix", "resolutionDate": "2015-01-05T14:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Documentation:  abrt-java-connector causes puppetserver to run slowly", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "JRuby 1.7.19 shipped, and appears to contain a fix for this leak.", "created": "2015-02-03T08:24:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Resolving this in favor of tracking validation in PE-8586", "created": "2015-03-12T17:27:00.000000"}], "components": [], "created": "2014-12-23T17:16:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2998b548"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-355"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3nz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Available bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_64207412_*|*_1_*:*_1_*:*_1114204622_*|*_10007_*:*_1_*:*_57926464_*|*_3_*:*_1_*:*_3956164_*|*_5_*:*_1_*:*_1554879621_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_121505031_*|*_10006_*:*_1_*:*_5460893294"}], "description": "In doing some memory leak analysis for SERVER-219, I found a memory leak in JRuby.  Even after {{terminate}} is called on a {{ScriptingContainer}}, three {{ChannelDescriptor}} objects -- related to STDIN, STDERR, and STDOUT -- and a few related objects are leaked.  This leak would be manifested in Puppet Server around invocations of the \"jruby-pool\" DELETE admin API.\n\nAn issue was filed to the JRuby project as https://github.com/jruby/jruby/issues/2333.  A fix has already been implemented for the problem and is scheduled to be delivered in JRuby 1.7.19.\n\nThis ticket is just a reminder to track the JRuby issue and test a fix when available in an upgrade to Puppet Server's JRuby dependency.", "epicLinkSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "estimate": "PT0S", "externalId": "17231", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.1.0"], "id": "17231", "issueType": "Bug", "key": "SERVER-273", "labels": [], "originalEstimate": "PT0S", "parent": "15250", "parentSummary": "SERVER 1.0.8 / PE 3.8: Improvements based on debugging support escalations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-03-12T17:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Upgrade to JRuby 1.7.19 / fix for jruby-pool DELETE memory leak", "timeSpent": "PT0S", "updated": "2015-05-22T15:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "The master's ring handler should also be changed to have a {{/v3}} prefix, and we might want to rename {{legacy-routes}} to {{v3-routes}}.", "created": "2014-12-29T17:56:00.000000"}], "components": [], "created": "2014-12-22T16:26:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51de325f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxmvr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1797686401_*|*_3_*:*_1_*:*_8033153973_*|*_5_*:*_1_*:*_45380177134_*|*_6_*:*_1_*:*_0"}], "description": "The environment was removed from the path and is now a query parameter.  Update the master's ring handler to account for this.  On the CA side, remove all traces of environment because it was never necessary and is no longer a part of the URL paths.\n\nThe master and ca routes should now be versioned with v3 and v1, respectively.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16414", "fixedVersions": ["SERVER 2.0.0"], "id": "16414", "issueType": "Sub-task", "key": "SERVER-272", "labels": [], "originalEstimate": "PT0S", "parent": "15810", "parentSummary": "Update URLs for Puppet4 compatibility", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2015-04-15T12:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "version master and ca routes and make environment a query parameter", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Since we are using the Webrouting service in puppet server, we will need to update the configuration to account for the new URL prefixes (both the master and CA ring handler are currently mounted at {{/}}).\n\nGiven that, we'll probably also want to read the new settings from puppet.conf and issue a warning or error if they differ from what's configured in the Webrouting Service config.", "created": "2014-12-22T16:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This may not be a great precedent, but we had a similar conundrum with respect to SSL settings -- where they could be specified in both the \"webserver.conf\" Trapperkeeper configuration and in \"puppet.conf\".  In that case, we went with the approach of letting the \"webserver.conf\" ones win if present, else defer to \"puppet.conf\".  At the very least, a warning seems like a good idea.", "created": "2015-01-08T10:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Off the cuff, I'd say let's not dig this hole any deeper.  Ignore the puppet.conf settings from the puppet server side, and document the p.conf settings as agent-only once we drop webrick.", "created": "2015-01-08T10:52:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "The one issue with ignoring the puppet.conf settings is that, on the server side in the puppet code, the puppet.conf setting is used in authorizing the request (checking it against auth.conf). I also added a check (which I'm not 100% sure is necessary, but which at least provides better error messages) in my PR for PUP-3526 that checks that the indirection matches the prefix (https://github.com/rlinehan/puppet/commit/54ef4ec4cd87612145408359f27fc139beb399bd).", "created": "2015-01-13T18:27:00.000000"}], "components": [], "created": "2014-12-22T16:19:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b6e5341"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxmvb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1905985183_*|*_3_*:*_1_*:*_7925211539_*|*_5_*:*_1_*:*_45380249107_*|*_6_*:*_1_*:*_0"}], "description": "There needs to be one configuration value for the main ring handler's path prefix and another for the CA's ring handler.\n\nThis work has already been done in the Puppet code - settings added to puppet.conf with default values.  Should we just re-use these settings in Puppet Server?  This would be convenient but would be inconsistent with other existing ring handlers that have the same configuration - eg, the admin API.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15777", "fixedVersions": ["SERVER 2.0.0"], "id": "15777", "issueType": "Sub-task", "key": "SERVER-271", "labels": [], "originalEstimate": "PT0S", "parent": "15810", "parentSummary": "Update URLs for Puppet4 compatibility", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2015-04-15T12:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "configuration for URL path prefixes", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "70121:13909895-6fc9-487a-a07d-c6b1891fc66f", "body": "Hello,\n\nI do this to allow servers to delete their own certificates, so there's no manual intervention when rebuilding one of our machines:\n\ncurl -k -X PUT -H \"Content-Type: text/pson\" --data '{\"desired_state\":\"revoked\"}' https://puppet:8140/production/certificate_status/$HOSTNAME\ncurl -k -X DELETE -H \"Accept: pson\" https://puppet:8140/production/certificate_status/$HOSTNAME\n\nWith this in auth.conf:\n\n#LB: allow hosts to delete their own certificates\npath ~ ^/certificate_status/([^/.]*?)\\.(.*)$\nauth any\nallow $1.$2\n\nThere might be a better way to do that now, I haven't looked in 2 years.", "created": "2014-12-23T02:21:00.000000"}, {"author": "6243b0022e101c006a8d5408", "body": "I currently have 3 completely independent puppet masters and was investigating merging them into one Certificate Authority. I came across Puppet Again at Mozilla:\n\nhttps://wiki.mozilla.org/ReleaseEngineering/PuppetAgain\n\nThis uses certificate chaining to allow Puppet masters to be independent, but still part of an external certificate authority.\n\nhttps://wiki.mozilla.org/ReleaseEngineering/PuppetAgain/Certificate_Chaining\n\nThis is SSL scenario #2, but they are managing the ssldir using csync2 which probably won't work with the new design. Just thought I would let you know.\n\nFor my situation, I have 3 geographically separate data centers and like to keep each data center independent because the WAN is slow and unreliable. Ideally I could use the new CA to have a master CA and then 3 chained sub CAs in each data center. That way I can operate without the WAN and have one root key I can installed everywhere instead of three. But this would be a convenience, not a hard requirement.", "created": "2015-02-09T09:08:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Thank you for those details [~accountid:6243b0022e101c006a8d5408]!", "created": "2015-02-09T14:22:00.000000"}], "components": ["Certificate Authority"], "created": "2014-12-22T12:40:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@341876d4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xrr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "UX Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2"}, {"fieldName": "UX Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Critical"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1216687961_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_120361490424"}], "description": "There's a set of breaking changes on the way for the next iteration of the Clojure Certificate Authority, due in Puppet Server 2.0. In order to validate our assumptions about what was previously kind of a murky public/private API delineation, it's important to poll the collective intelligence of the puppet community and find out whether people are using the CA subsystem in unexpected ways.", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "15224", "fixedVersions": [], "id": "15224", "issueType": "Bug", "key": "SERVER-270", "labels": ["ca"], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Done", "resolutionDate": "2018-10-29T17:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gather OSS user requirements and use-cases for CA API/CLI", "timeSpent": "PT0S", "updated": "2018-10-29T17:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated by checking md5sum of files loaded into bucket, and files in the server bucket after puppet agent -t run with iso8859 and binary file in RHEL 7 with 3.7.2-rc0-157-g7032773...\n\n", "created": "2015-01-22T17:13:00.000000"}], "components": ["Puppet Server"], "created": "2014-12-19T17:33:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2dc0fdbb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp8yv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_607204051_*|*_1_*:*_1_*:*_71387425_*|*_10007_*:*_1_*:*_1449367292_*|*_3_*:*_1_*:*_188913229_*|*_10009_*:*_1_*:*_619690994_*|*_5_*:*_1_*:*_53021797704_*|*_6_*:*_1_*:*_0"}], "description": "The Clojure code that processes requests for delivery to JRuby [aggressively transforms the request body to UTF-8|https://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.0/src/clj/puppetlabs/services/request_handler/request_handler_core.clj#L79-L81]. This sort of processing is lossy, alters the data contained in the request body and is not appropriate for all requests submitted to a Puppet Master. Notably, file bucket uploads will completely fail if the file content being saved is not strictly UTF-8.\n\nh2. Reproduction Case\n\nInstall Puppet Server and configure {{/etc/puppet/manifests/site.pp}} with a server-side filebucket. Also set up a file File default for backups and a file resource that purges anything placed into a directory:\n\n{code:puppet}\n# /etc/puppet/manifests/site.pp\nfilebucket { 'main':\n  server => 'poss-head-master.puppetdebug.vlan',\n  path   => false,\n}\n\nFile { backup => 'main' }\n\nnode default {\n  # Everything in /tmp/bukket will be copied to the remote filebucket and\n  # then deleted.\n  file{'/tmp/bukket':\n    ensure => directory,\n    purge => true,\n    recurse => true,\n  }\n}\n{code}\n\nPlace a file containing non-UTF-8 content, such as an [ICU4C sample file|http://source.icu-project.org/repos/icu/icu/tags/milestone-54-0-1/source/extra/uconv/samples/iso8859-1.txt], into the purge directory and run the puppet agent.\n\nh3. Outcome\n\nThe first time the agent runs, the file is backed up using the wrong hash. The second time the agent runs, backup fails due to a hash mismatch:\n\n{noformat}\n# cd /tmp/bukket/\n# curl -O http://source.icu-project.org/repos/icu/icu/tags/milestone-54-0-1/source/extra/uconv/samples/iso8859-1.txt\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n101  1215  101  1215    0     0    237      0  0:00:05  0:00:05 --:--:-- 22924\n# md5sum iso8859-1.txt \n4730fc9e7d7d0e1a1070b6e8c16c728d  iso8859-1.txt\n\n# puppet agent -t --server=$(hostname -f)\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for poss-head-master.puppetdebug.vlan\nInfo: Applying configuration version '1419035270'\nInfo: Computing checksum on file /tmp/bukket/iso8859-1.txt\nInfo: /Stage[main]/Main/Node[default]/File[/tmp/bukket/iso8859-1.txt]: Filebucketed /tmp/bukket/iso8859-1.txt to main with sum 4730fc9e7d7d0e1a1070b6e8c16c728d\nNotice: /Stage[main]/Main/Node[default]/File[/tmp/bukket/iso8859-1.txt]/ensure: removed\nInfo: Creating state file /var/lib/puppet/state/state.yaml\nNotice: Finished catalog run in 0.17 seconds\n\n# ls -R /var/lib/puppet/bucket/\n/var/lib/puppet/bucket/:\nf\n\n/var/lib/puppet/bucket/f:\nc\n\n/var/lib/puppet/bucket/f/c:\n8\n\n/var/lib/puppet/bucket/f/c/8:\n9\n\n/var/lib/puppet/bucket/f/c/8/9:\n8\n\n/var/lib/puppet/bucket/f/c/8/9/8:\n6\n\n/var/lib/puppet/bucket/f/c/8/9/8/6:\na\n\n/var/lib/puppet/bucket/f/c/8/9/8/6/a:\n8\n\n/var/lib/puppet/bucket/f/c/8/9/8/6/a/8:\nfc8986a80772ba0822da161b685d9898\n\n/var/lib/puppet/bucket/f/c/8/9/8/6/a/8/fc8986a80772ba0822da161b685d9898:\ncontents  paths\n\n# curl -O http://source.icu-project.org/repos/icu/icu/tags/milestone-54-0-1/source/extra/uconv/samples/iso8859-1.txt\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n101  1215  101  1215    0     0    238      0  0:00:05  0:00:05 --:--:-- 27000\n\n# puppet agent -t --server=$(hostname -f)\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for poss-head-master.puppetdebug.vlan\nInfo: Applying configuration version '1419035270'\nInfo: Computing checksum on file /tmp/bukket/iso8859-1.txt\nError: Could not back up /tmp/bukket/iso8859-1.txt: Error 400 on SERVER: Got passed new contents for sum {md5}fc8986a80772ba0822da161b685d9898\nError: Could not back up /tmp/bukket/iso8859-1.txt: Error 400 on SERVER: Got passed new contents for sum {md5}fc8986a80772ba0822da161b685d9898\nError: /Stage[main]/Main/Node[default]/File[/tmp/bukket/iso8859-1.txt]/ensure: change from file to absent failed: Could not back up /tmp/bukket/iso8859-1.txt: Error 400 on SERVER: Got passed new contents for sum {md5}fc8986a80772ba0822da161b685d9898\nNotice: Finished catalog run in 0.12 seconds\n{noformat}\n\nh3. Expected Outcome\n\nPuppet Server handles arbitrary character encodings, including raw binary.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16722", "fixedVersions": ["SERVER 1.0.2"], "id": "16722", "issueType": "Bug", "key": "SERVER-269", "labels": ["support"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2015-01-22T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server aggressively coerces request data to UTF-8", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623e7507866b810069e57527", "body": "I'm going to go ahead now and open a PR to address the specific issues I ran into when trying to follow the README. However, I suspect there are other ways in which the README is outdated, so I think we should leave this open to make sure we investigate more thoroughly.", "created": "2015-01-05T15:28:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Resolved since this was already merged in when I was doing some board cleanup.", "created": "2015-02-26T18:39:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Nothing for Test Rail here.", "created": "2015-03-26T16:19:00.000000"}], "components": [], "created": "2014-12-19T15:53:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dbf5ab9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp52n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1464132398_*|*_5_*:*_1_*:*_49992788273_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4507434081"}], "description": "The Puppet Server Acceptance README is a bit out of date and could use some updating. In particular, I ran into an issue where I was trying to run the tests with vSphere as my provisioner using workstream A, but the README does not mention that BEAKER_TYPE and BEAKER_LOADPATH both need to be set. There are probably other ways in which the README needs updating as well, so this should be investigated.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16894", "fixedVersions": ["SERVER 2.0.0"], "id": "16894", "issueType": "Improvement", "key": "SERVER-268", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Fixed", "resolutionDate": "2015-02-26T18:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve Puppet Server Acceptance README", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:13909895-6fc9-487a-a07d-c6b1891fc66f], I wonder if this issue is basically the same as the one described here: https://ask.puppetlabs.com/question/314/hiera-installconfig-problem.  For that situation, it was noted that variable subsitutions in Hiera needed to be wrapped with double quotes in order for Ruby 1.9 to interpret them properly.  Puppet Server is using JRuby version 1.9.  Can you confirm if wrapping the values with double quotes helps?", "created": "2014-12-18T13:23:00.000000"}, {"author": "70121:13909895-6fc9-487a-a07d-c6b1891fc66f", "body": "That looks to have been it, I've put in quotes and I've passed that error. I've now got the same parse errors in my Hiera data files, so I'll have to go fix up all of them up too, thanks.", "created": "2014-12-19T04:33:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks for confirming, [~accountid:70121:13909895-6fc9-487a-a07d-c6b1891fc66f].  Closing out this issue...", "created": "2014-12-24T14:27:00.000000"}], "components": ["Puppet Server"], "created": "2014-12-18T02:22:00.000000", "creator": "70121:13909895-6fc9-487a-a07d-c6b1891fc66f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2326bae3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxlfj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_561915081_*|*_6_*:*_1_*:*_0"}], "description": "Just went to try out Puppetserver as a drop in replacement for Puppet Master & Passenger. I get a hiera.yaml parse error when using Puppetserver that I do not get on Passenger:\n\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: (/etc/puppet/hiera.yaml): found character % '%' that cannot start any token. (Do not use % for indentation) while scanning for the next token at line 7 column 5 at /etc/puppet/environments/production/manifests/site.pp:43 on node nodename.example.com\n\nOur hiera.yaml is this:\n\n[root@ld4puppet01 conf.d]# cat /etc/puppet/hiera.yaml \n# Managed by Puppet\n---\n:backends:\n  - gpg\n  - yaml\n:hierarchy:\n  - %{fqdn}\n  - %{lmax_role}_role\n  - %{zone}_zone\n  - %{pop}.lmax\n  - %{pop}.tradefair\n  - global\n:yaml:\n  :datadir: /etc/puppet/environments/%{environment}/hiera/\n:gpg:\n  :datadir: /etc/puppet/environments/%{environment}/hiera-gpg/\n:merge_behavior: deeper\n\nAnd line 43 of site.pp is a simple hiera() call.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15776", "fixedVersions": [], "id": "15776", "issueType": "Bug", "key": "SERVER-267", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:13909895-6fc9-487a-a07d-c6b1891fc66f", "resolution": "Won't Fix", "resolutionDate": "2014-12-24T14:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Hiera YAML parse error from Puppetserver", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Putting this in the environment caching epic, which might be wrong, but it's at least *less wrong* than \"Puppet 4.0 Changes\"", "created": "2015-05-20T17:04:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "closing this, since it's almost 2 years old with no activity, the code in question has changed significantly since it was filed, and the associated epic was just closed.", "created": "2016-08-17T03:56:00.000000"}], "components": [], "created": "2014-12-17T17:26:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71646535"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-92"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxl3z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2246890542_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_50318480646"}], "description": "As of https://github.com/puppetlabs/puppet-server/pull/329, the only remaining call to {{borrow-from-pool}} on the JRuby pool without a timeout is in {{flush-pool!}}.  Should we add a timeout to this call?\n\nRelevant discussion from the PR:\n\nPreben:\nbq. Do we need the timeout when flushing the JRuby Pool?\n\nJeremy:\n{quote}\nGood question. Originally, I was thinking yes. Since this happens as a \"background\" process, though, and a timeout would result in the associated pool instance being waited for to never be cleaned up, I'm not sure it's a good idea to try to use the timeout here. I'm inclined to not do that at this point. @KevinCorcoran, WDYT?\n{quote}\n\nKevin:\n{quote}\nMy gut reaction is \"yes\" based on the notion that we should never make a call (in this case, .take) that can block indefinitely if it can reasonably be avoided. Granted, I haven't completely thought through the implications a timeout during the context of a pool flush, but ... it seems like it can't be worse than (potentially) blocking forever.\n{quote}\n\nJeremy:\n{quote}\n If we add a timeout for the JRuby pool flush, what would you propose the behavior be if the timeout is hit on a borrow attempt? It doesn't feel right to have the master blow up and shutdown in this case. Would you just skip the .terminate call which would have happened right after that and move on as if everything's fine -- creating a new pool instance in its place, etc. I'm okay doing that, I suppose, if we write a corresponding warning to the log indicating the problem. We run the risk with this approach that if the timeout is consistently too small that we'll get significant memory leakage over time leading up to a Java memory out. Not sure there's any great choices here, though...\n{quote}", "epicLinkSummary": "Environment Caching", "estimate": "PT0S", "externalId": "16721", "fixedVersions": [], "id": "16721", "issueType": "Story", "key": "SERVER-266", "labels": [], "originalEstimate": "PT0S", "parent": "15207", "parentSummary": "Environment Caching", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-08-17T03:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "consider adding timeout to blocking call when flushing JRuby pool", "timeSpent": "PT0S", "updated": "2016-08-17T15:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Changed this to a bug because it causes test failure.", "created": "2016-04-15T12:10:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] pointed out that tk-jetty9 will choose a random port if 0 is specified in configuration.", "created": "2016-04-20T11:17:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] I still think this is something I might be able to pull off.  We should discuss more in depth in a couple of weeks. ..  I've put it in \"Ready For engineering\" because I wanted to stop it from coming up in Puppet Server Grooming.", "created": "2016-05-04T11:12:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This has really been making CI a pain in the ass recently - lots of CI redness due to port collisions. ", "created": "2016-06-27T04:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "These kinds of failures should only occur when pipelines are triggered in parallel, which should be somewhat rare.  There were some incidents last week based on the jenkins servers all being restarted.  Did you see other occurrences besides that batch?\n\nSetting the port to 0 in jetty is easy.  Finding out what port it chose so that you can then make requests to that port is less easy and will require a whole lot of test refactoring.", "created": "2016-06-27T11:00:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Yes, I ran into today when I just happened to merge a PR against one branch while the unit tests were already running against a different branch.", "created": "2016-06-27T11:22:00.000000"}], "components": [], "created": "2014-12-16T18:30:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4884ed45"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxkdb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_3967000398_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_18943308252_*|*_10005_*:*_1_*:*_39634986263"}], "description": "Tests should run by binding to a random unbount port. Currently you can't run a server and run the tests at the same time, which can be a bit of a pain.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17596", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "17596", "issueType": "Bug", "key": "SERVER-265", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tests should use random, unbound ports", "timeSpent": "PT0S", "updated": "2016-12-09T16:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I started hacking on this in the interest of getting a better idea of exactly what it's going to take.  Here's my WIP: https://github.com/KevinCorcoran/puppet-server/commit/b9267b66c8b6e7a1a6e327ebb3aa92e78c6f1a94\n\nAnd here are my other thoughts/notes:\n\n* We have 4 total endpoints/{{defresources}} : /cert_status, /cert_statuses, and the 2 admin endpoints\n* As seen in the commit above, I started using {{ring-json}} which provides middleware for auto-rendering maps, etc. to JSON strings ... I was surprised to learn that we are not already using this for our existing endpoints .... but I guess that none of the ones implemented w/o liberator return JSON, perhaps.\n* Error-handling is going to be the majority of the work.  liberator has a specific API for this based on it\u2019s DSL/decision tree \u2026 in the early endpoints we implemented in the CA, we throw exceptions from \u201cinternal/implementation\u201d namespaces up to the namespace where the ring handler lives, catch the exceptions there, and turn them into ring responses.  This code could probably be DRYed-up and perhaps some middleware extracted from it.  This would probably be worth doing before un-liberating the {{/cert_status(es)}} endpoints.\n* The {{defresource}} implementation for {{/certificate_status}} is, by far, the most complicated - the two endpoints in the admin API are much simpler and also nearly identical, so that ring handler should be much easier to port than the CA's.", "created": "2014-12-16T18:36:00.000000"}], "components": [], "created": "2014-12-16T18:28:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57d3bb4c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xqv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2997343915_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_59547969528"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17230", "fixedVersions": [], "id": "17230", "issueType": "Task", "key": "SERVER-264", "labels": ["low-hanging-fruit", "server"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "remove usage of liberator", "timeSpent": "PT0S", "updated": "2016-12-09T16:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "I added a known issue for this.", "created": "2015-02-25T18:25:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "Sorry. I accidentally resolved the wrong ticket.", "created": "2015-02-25T18:27:00.000000"}], "components": ["Puppet Server"], "created": "2014-12-16T14:48:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28e247e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxk6n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1726837651_*|*_4_*:*_1_*:*_50710099332_*|*_5_*:*_1_*:*_92632_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_4420588402"}], "description": "Just a yak to shave that I ran into...\n\nWhen running `puppetserver gem install pry` as a normal user, I'd expect the gem to be installed into my home directory, or an error message that my user account does not have permission to install gems into the system location.\n\nInstead I get the following error, which I suspect is related to mishandling the {{{HOME}}} environment variable.\n\n{code}\n[vagrant@localhost ~]$ puppetserver gem install pry\nFetching: coderay-1.1.0.gem (100%)\nERROR:  While executing gem ... (Errno::ENOENT)\n    No such file or directory - /.gem/jruby/1.9/cache/coderay-1.1.0.gem\n[vagrant@localhost ~]$ echo $HOME\n/home/vagrant\n{code}\n\nInstalling as root works:\n\n{code}\n[vagrant@localhost ~]$ sudo puppetserver gem install pry\nFetching: coderay-1.1.0.gem (100%)\nSuccessfully installed coderay-1.1.0\nFetching: slop-3.6.0.gem (100%)\nSuccessfully installed slop-3.6.0\nFetching: method_source-0.8.2.gem (100%)\nSuccessfully installed method_source-0.8.2\nFetching: spoon-0.0.4.gem (100%)\nSuccessfully installed spoon-0.0.4\nFetching: pry-0.10.1-java.gem (100%)\nSuccessfully installed pry-0.10.1-java\n5 gems installed\n{code}\n\n{code}\n[vagrant@localhost ~]$ sudo puppetserver gem which pry\n/var/lib/puppet/jruby-gems/gems/pry-0.10.1-java/lib/pry.rb\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17228", "fixedVersions": [], "id": "17228", "issueType": "Improvement", "key": "SERVER-263", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Won't Do", "resolutionDate": "2016-10-04T17:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver gem install fails in an unexpected manner when run unprivileged", "timeSpent": "PT0S", "updated": "2016-10-04T17:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "do other commands like 'list' work?", "created": "2014-12-16T14:23:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Yes, list and which both work as expected.\n\nI'll look into getting a backtrace.", "created": "2014-12-16T14:46:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Exception is thrown from here: https://github.com/jruby/jruby/blob/1.7.17/lib/ruby/shared/rubygems/commands/environment_command.rb#L148\n\ngem env works upstream, my suspicion is that we're unsetting PATH and shouldn't be.", "created": "2014-12-16T23:16:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yeah, that's a good hint.  I recall running into something like that when I was working on the irb subcommand.  I ended up doing this:\n\n{code}\n(let [jruby-config (RubyInstanceConfig.)\n      gem-home     (get-in config [:jruby-puppet :gem-home])\n      env          (doto (HashMap. (.getEnvironment jruby-config))\n                           (.put \"GEM_HOME\" gem-home))]\n  (.setEnvironment env))\n{code}\n\nThe gem cli command currently just does this:\n\n{code}\n(doto (ScriptingContainer.)\n  (.setEnvironment (hash-map \"GEM_HOME\"\n                             (get-in config [:jruby-puppet :gem-home]))))\n{code}\n\nThe ruby and irb commands use a JRuby Main instead of a ScriptingContainer, but the issue could be the same.  I'm thinking we should do a surgical setting of {{GEM_HOME}} in the gem subcommand, preserving other environment variables, like we do in the ruby and irb commands.\n\n[~accountid:623c12b6ee1b5a0070293582], can you try that out and see if it works?\n", "created": "2014-12-17T09:35:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "> Jeff McCune, can you try that out and see if it works?\n\nSure thing.", "created": "2014-12-17T10:44:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] Thanks for the help, not merging into the existing  environment was the exact problem.\n\nPull request: https://github.com/puppetlabs/puppet-server/pull/342", "created": "2014-12-19T13:56:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] In our stand up this morning, [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] mentioned that it'd be really great to get this into PE 3.7.2, and I agreed.  Aaron asked us to make sure and get your sign-off that you'd be able to QA this change without much stress before he'll propose it as being included in PE 3.7.2.\n\nIt's a small change, but the QA burden might be high.  Hopefully not, there's good unit test coverage and an automated acceptance test that runs the command and validates some basic behaviors from the end user perspective.\n\nPlease let us know if you're comfortable reviewing this.  It's OK if not, but without this patch it's difficult for customers to install and manage gems for use with puppetserver with PE 3.7.2 since the PATH and other potentially important environment variables are discarded with the gem subcommand.\n", "created": "2014-12-31T16:43:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:623c12b6ee1b5a0070293582], I propose that we validate with the below steps.  If you think these are adequate, than we should move forward with this.  \n- run puppetserver gem env and ensure it returns the environment and doesn't error.\n- run the gem env that belongs to the os and view the environment\n- modify the puppet server's ruby gem environment\n- run puppetserver gem env and ensure it returns the expected environment and doesn't error.\n- run the gem env that belongs to the os and view the environment\n- modify the OSes gem environment\n- run puppetserver gem env and ensure it returns the expected (NOT modified) environment and doesn't error.", "created": "2015-01-05T14:53:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Agreed, here's the modified list that we talked about in person.  I'm happy to add automated tests too:\n\n* run puppetserver gem env and ensure it returns the environment and doesn't error. (This is covered by the [(SERVER-262) Verify the gem env command returns expected information|https://github.com/puppetlabs/puppet-server/blob/44abb39a791c62b0639137306fc97fa71320ecb1/acceptance/suites/tests/010-puppetserver-cli/subcommand/gem.rb#L81-L87] step)\n* -run the gem env that belongs to the os and view the environment- (OS gem command testing is unnecessary)\n* modify the puppet server's ruby gem environment (We should validate that setting GEM_PATH with the intent of modifying the system gem executable behavior does not adversely affect the behavior of {{puppetserver gem}})\n* -run puppetserver gem env and ensure it returns the expected environment and doesn't error.- (This is covered by the [(SERVER-262) Verify the gem env command returns expected information|https://github.com/puppetlabs/puppet-server/blob/44abb39a791c62b0639137306fc97fa71320ecb1/acceptance/suites/tests/010-puppetserver-cli/subcommand/gem.rb#L81-L87] step)\n* -run the gem env that belongs to the os and view the environment- (Not necessary, see above)\n* -modify the OSes gem environment- (Not necessary, see above about GEM_PATH)\n* run puppetserver gem env and ensure it returns the expected (NOT modified) environment and doesn't error. (Should test this, see comment above about GEM_PATH)\n\n[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Just to document what we talked about in person, I'll be available to help test all of these items and work with you and will also try and get these automated prior to the release.", "created": "2015-01-05T15:30:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] Please consider this ticket a candidate for PE 3.7.2 assuming Erik and Chun are OK with the whole body of work, not just this issue in isolation.", "created": "2015-01-05T15:31:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA agrees.  Include this ticket in PE 3.7.2.", "created": "2015-01-05T16:33:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Cherry-picked down from master into stable as https://github.com/puppetlabs/puppet-server/commit/0bc69c3\n\nResolved the merge conflict and code behavior conflict by removing {{\"JARS_NO_REQUIRE\" \"true\"}}", "created": "2015-01-05T18:00:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated that all the below commands work on RHEL 7 with 3.7.2-rc0-187-g8f7e0d5\npuppetserver gem install pry --no-ri --no-rdoc\npuppetserver gem list\npuppetserver gem env \n\nValidated that modifications to gem-home: setting in the jruby-puppet section of the pe-puppetserver.conf file show immediately  without puppetserver restart in the puppetserver gem env output.\n\nModified system ruby by installing RVM and checking puppetserver gem env.  Paths were modified in puppetserver gem env, but the GEM_HOME setting is preserved.\n\n\n\n", "created": "2015-01-28T15:31:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Fix Version should be set to SERVER 1.0.4", "created": "2015-01-28T15:33:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed at length with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f].  Need input from [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and or [~accountid:623c12b6ee1b5a0070293582].\n\nPossible Issue: Because the GEM PATHs flow through from MRI/System ruby into JRuby/PuppetServer ruby, installing a gem in system ruby will cause it to show up in the puppetserver gem list command.  \n\nEXAMPLE/STEPS TO REPRODUCE:\n- run puppetserver gem list.\n- run gem install nokogiri\n- run puppetserver gem list\n\nRESULTS:\nNokogiri shows up in the puppetserver gem list\n\nEXPECTED RESULTS:\nNokogiri was installed in MRI/System ruby, and should not show up in puppetserver gem list.\n\n", "created": "2015-01-28T16:01:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f].  We already have issues with \"puppetserver gem\" coming in from support.  Allowing the GEM PATHs to flow through from MRI System ruby into JRuby will increase confusion.  I believe the consensus is that we need to fix this, either by reverting this change, or by looking at providing better separation between MRI ruby paths and puppetserver Jruby paths.\n\nPing [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] [~accountid:557058:1d244b27-1afc-481c-a463-e4c0cefad02f] [~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced]Modifying this will cause a new puppetserver version, as well as new builds.  I think we can still make the currently defined schedule, even with this fix.", "created": "2015-01-28T16:11:00.000000"}, {"author": "557058:1d244b27-1afc-481c-a463-e4c0cefad02f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] [~accountid:557058:79f2fdd6-baee-43c4-91af-c7e647173c95] What is the impact to upgrader? CC [~accountid:557058:5c808afb-dce6-44a1-922d-296dc2c81fe8]", "created": "2015-01-28T16:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It doesn't impact upgrades.\n\nWhat it does is it makes the output of 'puppetserver gem list' show gems from the system ruby, as opposed to just the puppetserver jruby.  It's supposed to only show gems from the latter.  That is going to make it incredibly confusing to users if they need to debug anything relating to gems", "created": "2015-01-28T16:44:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Setting this to Failed Review.  I think we are moving towards reverting...\n", "created": "2015-01-28T16:51:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "puppetserver gem env works.  The problem that it introduces shall be tracked in a separate ticket.", "created": "2015-01-29T10:05:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "There seems to be a bit of confusion surrounding the behavior of the gem system, so this is an attempt to clarify things.\n\n{quote}What it does is it makes the output of 'puppetserver gem list' show gems from the system ruby, as opposed to just the puppetserver jruby.{quote}\n\nThis isn't precisely true try because the system ruby does not set `GEM_PATH` by default.  The puppetserver subcommands will only show additional gem libraries if the `GEM_PATH` environment variable is defined in the parent process that spawns `puppetserver`.  Typically, `GEM_PATH` is only set when something above and beyond the default system behavior is being done.  For example, initializing rvm or rbenv in the shell that also spawns `puppetserver` commands will set GEM_PATH so that multiple versions of Ruby can co-exist with different library loading path.  The act of setting GEM_PATH is what causes puppetserver to look in additional directories for gem libraries.\n\nThe user has to take some willful action to initialize their shell process to get these libraries to be visible to puppetserver.\n\nGEM_PATH will almost certainly not be defined from inside the service management framework so there is little chance that installing gems with rvm will affect a puppetserver process started by the service management framework.\n\n{quote}It's supposed to only show gems from the latter.{quote}\n\nIt does show only gems from puppetserver, by default, unless the user has taken explicit steps in an interactive shell that affect the behavior of rubygems, e.g. setting GEM_PATH by initializing rvm.\n\nI think the question we need to answer is, is puppetserver supposed to only have access to its own gems in _all_ cases even if the end user sets GEM_PATH in their shell?\n\n{quote}That is going to make it incredibly confusing to users if they need to debug anything relating to gems", "created": "2015-01-29T12:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I feel pretty strongly at this point that environment variables need to be whitelisted on an as-needed basis, and that we should not allow any environment variables other than the ones that we've explicitly whitelisted for a very well known reason to bleed through into the server environment.", "created": "2015-01-29T12:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I could see a world where we allowed that whitelist to be configured in our config files, but by default I don't think it should contain anything other than the ones we've explicitly whitelisted for our own reasons.\n\nAs for gem env, I'm open to discussion about whitelisting PATH in order to make that work, but it would take a lot of convincing at this point for me to back off of the stance that a whitelist is the right way to be handling this.", "created": "2015-01-29T12:43:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "https://testrail.ops.puppetlabs.net/index.php?/cases/view/62455", "created": "2015-01-29T16:17:00.000000"}], "components": ["Puppet Server"], "created": "2014-12-16T14:17:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@51746adf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp90f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_766023214_*|*_1_*:*_1_*:*_250114296_*|*_10007_*:*_1_*:*_1466422747_*|*_3_*:*_1_*:*_7888567_*|*_10009_*:*_1_*:*_1229332974_*|*_5_*:*_3_*:*_52447444343_*|*_6_*:*_1_*:*_0_*|*_10017_*:*_1_*:*_62085956"}], "description": "Working with puppet server 1.0.0 from packages on EL 7 I noticed the following error:\n\n{code}\n[vagrant@localhost ~]$ puppetserver gem env\nERROR:  While executing gem ... (NoMethodError)\n    undefined method `split' for nil:NilClass\n{code}\n\nThis error also happens in my local development environment where:\n\n{code}\nlein gem --config ~/.puppet-server/puppet-server.conf env\nERROR:  While executing gem ... (NoMethodError)\n    undefined method `split' for nil:NilClass\nlein gem --config ~/.puppet-server/puppet-server.conf env  18.59s user 0.78s system 174% cpu 11.132 total\n{code}\n\nThe use case is that I'm trying to debug some behaviors in server/master.rb and as part of that effort I'd like to insert a pry debugger into the first line.  For pry to work, I need to make sure the gem is installed in a location available to puppet server, which led me to use {{puppetserver gem ...}} and the dev equivalent of {{lein gem --config ~/.puppet-server/puppet-server.conf ...}}.\n\nThe gem command is a very helpful troubleshooting and debugging tool from an end-user perspective because it provides authoritative and comprehensive information about PATH, LOAD_PATH, GEM_PATH, GEM_HOME, etc...\n\nFor example, I'd expect something like this output:\n\n{code}\ngem env\nRubyGems Environment:\n  - RUBYGEMS VERSION: 2.2.2\n  - RUBY VERSION: 2.1.4 (2014-10-27 patchlevel 265) [x86_64-darwin13.0]\n  - INSTALLATION DIRECTORY: /opt/crossfader/versions/ruby/2.1.4/gemsets/clojure/ruby/2.1.0\n  - RUBY EXECUTABLE: /opt/crossfader/versions/ruby/2.1.4/bin/ruby\n  - EXECUTABLE DIRECTORY: /opt/crossfader/versions/ruby/2.1.4/gemsets/clojure/ruby/2.1.0/bin\n  - SPEC CACHE DIRECTORY: /Users/jeff/.gem/specs\n  - RUBYGEMS PLATFORMS:\n    - ruby\n    - x86_64-darwin-13\n  - GEM PATHS:\n     - /opt/crossfader/versions/ruby/2.1.4/gemsets/clojure/ruby/2.1.0\n     - /opt/crossfader/versions/ruby/2.1.4/gemsets/global/ruby/2.1.0\n     - /opt/crossfader/versions/ruby/2.1.4/lib/ruby/gems/2.1.0\n     - /Users/jeff/.gem/ruby/2.1.0\n  - GEM CONFIGURATION:\n     - :update_sources => true\n     - :verbose => true\n     - :backtrace => false\n     - :bulk_threshold => 1000\n  - REMOTE SOURCES:\n     - https://rubygems.org/\n  - SHELL PATH:\n     - /opt/crossfader/bin\n     - /opt/crossfader/versions/ruby/2.1.4/gemsets/clojure/ruby/2.1.0/bin\n     - /opt/crossfader/versions/ruby/2.1.4/gemsets/global/ruby/2.1.0/bin\n     - /opt/crossfader/versions/ruby/2.1.4/bin\n     - /opt/crossfader/versions/lein/2.5.0/bin\n     - /opt/crossfader/versions/jdk/1.7.0_71/bin\n     - /usr/local/bin\n     - /usr/bin\n     - /bin\n     - /usr/sbin\n     - /sbin\n{code}\n\n---\n\nUPDATE: A fix for this was implemented for SERVER 1.0.2.  The fix introduced a new behavior around the handling of the GEM_PATH environment variable which led to a separate PR being done - covered by SERVER-522 - to revert this fix as part of the SERVER 1.0.3 release.  In short, the GEM_PATH environment variable had started allowing an external environment value to flow through to the JRuby environment in the \"puppetserver gem\" process.  Concerns by some about the user experience with this led to the later revert.  Work to restore the \"puppetserver gem env\" command to working order and clarifying the overall behavior with respect to environment variable handling should be done as part of SERVER-297.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15032", "fixedVersions": ["SERVER 1.0.2"], "id": "15032", "issueType": "Bug", "key": "SERVER-262", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-29T10:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "`puppetserver gem env` does not work, useful for troubleshooting", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] do you want us to poke at this prior to 3.7.2?", "created": "2014-12-16T14:28:00.000000"}, {"author": "557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] no", "created": "2014-12-16T15:00:00.000000"}], "components": [], "created": "2014-12-16T13:49:00.000000", "creator": "557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6bad78b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxk2v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1730257152_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_60831781035"}], "description": "The error message when calling certain invalid functions on String objects in ERB goes into org/jruby/RubyString.java instead of showing the user where in the ERB file something went wrong. In MRI puppet, the error message is clear.\n\nThe error I want:\n\n{code}\nError: Failed to parse template testmod/testmodfile.txt.erb:\n  Filepath: /etc/puppetlabs/puppet/environments/production/modules/testmod/templates/testmodfile.txt.erb\n  Line: 1\n  Detail: wrong number of arguments (at least 1)\n at /etc/puppetlabs/puppet/environments/production/modules/testmod/manifests/init.pp:5 on node master\n{code}\n\nThe error I get:\n{code}\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template testmod/testmodfile.txt.erb:\n  Filepath: org/jruby/RubyString.java\n  Line: 6119\n  Detail: wrong number of arguments\n at /etc/puppetlabs/puppet/environments/production/modules/testmod/manifests/init.pp:5 on node master\n{code}\n\nNote that some other invalid methods (such as each_with_instances) seem to error as expected.\n\nExample:\n\n{code}\n[root@master production]# cat modules/testmod/manifests/init.pp\nclass testmod(\n  $param1 = [],\n){\n  file { '/tmp/testmodfile.txt':\n    content => template('testmod/testmodfile.txt.erb'),\n  }\n}\n[root@master production]# cat modules/testmod/templates/testmodfile.txt.erb\nCount: <%= @param1.count %>\n[root@master production]# puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template testmod/testmodfile.txt.erb:\n  Filepath: org/jruby/RubyString.java\n  Line: 6119\n  Detail: wrong number of arguments\n at /etc/puppetlabs/puppet/environments/production/modules/testmod/manifests/init.pp:5 on node master\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n[root@master production]# puppet apply -e 'class {'testmod': param1 => \"I am a String\", }'\nError: Failed to parse template testmod/testmodfile.txt.erb:\n  Filepath: /etc/puppetlabs/puppet/environments/production/modules/testmod/templates/testmodfile.txt.erb\n  Line: 1\n  Detail: wrong number of arguments (at least 1)\n at /etc/puppetlabs/puppet/environments/production/modules/testmod/manifests/init.pp:5 on node master\nError: Failed to parse template testmod/testmodfile.txt.erb:\n  Filepath: /etc/puppetlabs/puppet/environments/production/modules/testmod/templates/testmodfile.txt.erb\n  Line: 1\n  Detail: wrong number of arguments (at least 1)\n at /etc/puppetlabs/puppet/environments/production/modules/testmod/manifests/init.pp:5 on node master\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16413", "fixedVersions": [], "id": "16413", "issueType": "Bug", "key": "SERVER-261", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Calling count on a string in ERB gives an unclear error message", "timeSpent": "PT0S", "updated": "2016-12-09T16:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "this is blocked until we have the URL stuff on the Puppet Server side fixed up to match the new URLs on the Puppet side.", "created": "2015-01-06T09:02:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:623e7507866b810069e57527] I know you worked on this previously and have some closed PRs up... it looks like you were changing around the facter commit used? Do you know if a decision was reached on what commit of facter to update to?", "created": "2015-01-22T11:44:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091] A decision hadn't been reached last time I worked on this, as I think there was still some discussion going on with the platform team about what version of Facter is going to be used in Puppet 4. I think [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] might have some insight on that.", "created": "2015-01-22T11:49:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Thanks for the ping: puppet-agent 1.0.0 (initial release of AIO, including puppet 4) will include facter 2.4.0 (just tagged today) so I'd probably update the submodule to point there.\n", "created": "2015-01-22T12:10:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed with Ruth", "created": "2015-03-11T15:18:00.000000"}], "components": [], "created": "2014-12-16T12:29:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b339da"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3en:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3983180972_*|*_1_*:*_1_*:*_180076800_*|*_10007_*:*_2_*:*_1680127604_*|*_3_*:*_2_*:*_7161870_*|*_5_*:*_1_*:*_48877605432_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_8307597_*|*_10004_*:*_1_*:*_1499267491"}], "description": "Ping [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] to make sure we get everything covered, may need to create a few additional tickets.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16018", "fixedVersions": ["SERVER 2.0.0"], "id": "16018", "issueType": "Task", "key": "SERVER-260", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-03-11T17:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update submodules (and testing stuff?) to Puppet 4.0", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Pull request ready for review: https://github.com/puppetlabs/puppet-server/pull/337", "created": "2014-12-18T09:08:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Looks like this passed CI, but could probably use some manual review.", "created": "2014-12-30T12:01:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Not verified. In the latest {{puppetserver}} package, it still displays the older message:\n{code}\n# puppetserver --version\npuppetserver version: 1.0.1.SNAPSHOT.2015.01.13T0950\n# puppetserver foreground\n2015-01-13 11:32:33,145 INFO  [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2015-01-13 11:32:33,153 INFO  [p.t.s.w.jetty9-service] Initializing web server(s).\n2015-01-13 11:32:41,883 INFO  [puppet-server] Puppet Puppet settings initialized", "created": "2015-01-13T12:35:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:5f73e620-a5f5-44a8-a863-f1e0061b987a] This change didn't go into stable, only master.  Based on the 1.0.1.SNAPSHOT.2015.01.13T0950 version, it looks like you're running a stable build and not a build from master, which I'd expect to be 2.0.0.SNAPSHOT.\n\n", "created": "2015-01-13T12:45:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Thanks Jeff. With the right bits, I see the new error message ( from a 2.0 snapshot ", "created": "2015-01-13T15:07:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Resolved per previous comment.", "created": "2015-01-13T15:07:00.000000"}], "components": [], "created": "2014-12-16T12:13:00.000000", "creator": "623c12b6ee1b5a0070293582", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f972c41"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypc8f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_72521567_*|*_1_*:*_1_*:*_161654481_*|*_10007_*:*_1_*:*_974496197_*|*_10009_*:*_2_*:*_1221001601_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_19427"}], "description": "Running puppet-server 1.0.0 on a 2GB Vagrant EL-7 VM, I get the following error message and the server fails to start:\n\n{code}\n2014-12-16 09:30:41,907 ERROR [p.t.internal] Error during service init!!!\njava.lang.Error: Not enough RAM. Puppet Server requires at least 2181MB of RAM.\n\tat puppetlabs.services.master.master_core$validate_memory_requirements_BANG_.invoke(master_core.clj:89) ~[na:na]\n{code}\n\nThis error could be improved by qualifying the statement with the context that 2181MB is not absolutely required.  It is required only because the RAM is not at least 1.1 times greater than the user-configurable heap size.  The error message should qualify this requirement with the heap size context and provide the user an affordance for how to adjust the heap size in an effort to start the service.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17592", "fixedVersions": ["SERVER 2.0.0"], "id": "17592", "issueType": "Improvement", "key": "SERVER-259", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c12b6ee1b5a0070293582", "resolution": "Fixed", "resolutionDate": "2015-01-13T15:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve required memory error message", "timeSpent": "PT0S", "updated": "2015-04-07T14:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "No QA work is needed on this housekeeping Task.  Removing QA Contact.", "created": "2015-01-06T12:41:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - Not sure what to do with this one exactly.  WDYT?", "created": "2015-05-22T14:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Changed the title.  Mostly what I want to blog about is the improved metrics that will be in the PE status endpoint once it lands, but it won't be there for 1.1.", "created": "2015-05-25T06:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "No, I forgot this was here and created a different ticket about a metrics blog post.  PE-13236", "created": "2016-01-19T06:55:00.000000"}], "components": [], "created": "2014-12-16T07:59:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11542b87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z5z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1750403808_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_32719425125"}], "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "16720", "fixedVersions": [], "id": "16720", "issueType": "Task", "key": "SERVER-257", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2016-01-19T06:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 1.2.0 Announcement Blog Post", "timeSpent": "PT0S", "updated": "2016-01-19T06:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "puppet-server PR326 is a temporary workaround until the work for QENG-1600 becomes available to puppet-server. That ticket describes why it may take a while for this to happen. Specifically, there are incompatibilities with Beaker 2.0.0 in the acceptance tests found in the version of puppet pinned in puppet-server's git repo.\n\nThis fix should at least get the puppet-server upgrade smoke tests consistently green while we are stuck pinned to the Beaker <2.0.X in which QENG-1600 is likely to be fixed.", "created": "2014-12-12T23:04:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] - given that https://github.com/puppetlabs/puppet-server/pull/326 has been merged and the upgrade smoke test seems to be passing now, do you think it would make sense to close this ticket out?\n\nAlso, I noticed that the 'integration upgrade smoke test' job is disabled on the stable branch.  Perhaps your patch needs to be applied there as well?", "created": "2014-12-22T12:13:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "Yeah the stable branch upgrade smoke test is disabled because the patch was not merged in before the release of v1.0.0.\n\nI suppose we can close this out, though I consider QENG-1600 to be the most desirable solution...", "created": "2014-12-22T12:26:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] - I understand that the PR above is just a workaround until QENG-1600 is resolved.  I think it's best to close this ticket, since the issue has been resolved for the time being, and we can open a new ticket if needed once there is a beaker version for us to upgrade to and remove the workaround.", "created": "2014-12-22T14:26:00.000000"}], "components": [], "created": "2014-12-12T21:53:00.000000", "creator": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e0a4096"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypq67:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_837164583_*|*_5_*:*_1_*:*_55710349000_*|*_6_*:*_1_*:*_0"}], "description": "Upgrade smoke tests are failing due to changes made to /etc/puppetserver/conf.d/puppetserver.conf between the time the release package is installed and the development package is installed.\n\nThese changes are made by Beaker::DSL::Helpers.with_puppet_running_on to ensure that puppet-server is configured with the same confdir and vardir. However, this implementation is severely broken in that it neglects to preserve the configuration file prior to running puppet-server and restoring it later.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15775", "fixedVersions": ["SERVER 1.0.2"], "id": "15775", "issueType": "Bug", "key": "SERVER-256", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "resolution": "Fixed", "resolutionDate": "2014-12-22T14:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "FOSS Upgrade Smoke Tests failing", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "It might be good to discuss a generic approach to handling command line options for subcommands that are generic to all TK/ezbake projects.  Alternatively, a subset of the 12-factor approach might be sufficient where this is handled with an environment variable but not a command line argument.", "created": "2015-01-12T17:12:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Furthermore, it might be best for {{puppetserver foreground}} to *default* to a single JRuby.", "created": "2015-01-16T13:17:00.000000"}], "components": [], "created": "2014-12-12T13:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32faccd2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypj9j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2691729110_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_60217246786"}], "description": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] had a really good idea; it would be nice to have a way to tell 'puppetserver foreground' to run with only a single jruby instance.  Most of the time when people are debugging, this is going to be what they want to do.\n\nIt might be a bit tricky since our current implementation of 'foreground' is generic to all TK/ezbake projects, but we should explore options.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15221", "fixedVersions": [], "id": "15221", "issueType": "Improvement", "key": "SERVER-255", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow cli override for # of jrubies when running via 'foreground'?", "timeSpent": "PT0S", "updated": "2016-12-09T16:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "It looks like there may have been some work done here:\n\n  - https://github.com/banister/binding_of_caller/issues/12\n\n  - https://github.com/banister/binding_of_caller/issues/47\n\nI'll take a look at the 0.7.3pre1 release and see if it works.", "created": "2014-12-12T14:26:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The first hurdle appears to be that our {{PATH}} isn't set correctly for building gems with extensions under Puppet Server.\n\nFor example, installing {{binding_of_caller}} 0.7.3pre1 using Rbenv and JRuby 1.7.16.1 succeeds:\n\n{noformat}\ngem install --no-rdoc --no-ri --pre binding_of_caller\nFetching: debug_inspector-0.0.2.gem (100%)\nBuilding native extensions.  This could take a while...\n/usr/local/var/rbenv/versions/jruby-1.7.16.1/lib/ruby/shared/rubygems/ext/ext_conf_builder.rb:43 warning: Tempfile#unlink or delete called on open file", "created": "2014-12-18T12:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hacked on this a bit over the break.  I thought I'd start by playing with stack explorer in JRuby itself, rather than Puppet Server, just to see what the current ceiling would be.  It was missing some reasonably important stuff, so I played around for a while and ended up with this:\n\nhttps://github.com/banister/binding_of_caller/pull/54\n\nI stumbled across a few other thing that I think are annoying and we should maybe try to help fix:\n\nhttps://github.com/pry/pry/issues/1205\nhttps://github.com/pry/pry-stack_explorer/issues/20\n\nBut those aren't necessarily show-stoppers.\n\nI would also like to play around with putting together a 'pry-ruby-debug', similar to 'pry-debugger' but compatible with 'ruby-debug' instead of 'debugger', because 'ruby-debug' works with jruby.\n\n", "created": "2014-12-26T12:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] it's possible that the PATH issue you reported is resolved by [~accountid:623c12b6ee1b5a0070293582]'s work on SERVER-262.", "created": "2015-01-05T10:27:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "For the gem subcommand, we were not passing through the value of the PATH environment variable to the JRuby ScriptingContainer and so the PATH variable would be undefined in the JRuby context.  The work for SERVER-262 did address this.  Some follow-up work for this will likely be pursued for SERVER-297 with respect to making the environment variable override behaviors more consistent between production and subcommand code.  It does sound like the error [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] encountered may have been related to this.", "created": "2015-01-12T17:26:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] This still is an issue in `stable` and `master` with SERVER-262 merged in.\n\nHere's what I'm seeing:\n\n{code}\n$ lein gem -c ~/.puppet-server/puppet-server.conf -- install pry-stack_explorer --no-ri --no-rdoc\nBuilding native extensions.  This could take a while...\nERROR:  Error installing pry-stack_explorer:\n        ERROR: Failed to build gem native extension.\n\n    java -jar /Users/jeff/.m2/repository/org/jruby/jruby-stdlib/1.7.18/jruby-stdlib-1.7.18.jar extconf.rb\nno main manifest attribute, in /Users/jeff/.m2/repository/org/jruby/jruby-stdlib/1.7.18/jruby-stdlib-1.7.18.jar\n\n\nGem files will remain installed in /workspace/serious/src/stable/puppet-server/target/jruby-gems/gems/debug_inspector-0.0.2 for inspection.\nResults logged to /workspace/serious/src/stable/puppet-server/target/jruby-gems/gems/debug_inspector-0.0.2/ext/debug_inspector/gem_make.out\nlein gem -c ~/.puppet-server/puppet-server.conf -- install pry-stack_explorer  30.04s user 1.30s system 169% cpu 18.537 total\n{code}\n\nThis happens even when trying to install the pre-release version of binding_of_caller.", "created": "2015-01-20T13:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "@jeff I think that's different from the error [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] reported.  pry-stack_explorer has a dep on binding_of_caller, and the newest official release version of that one does have some native extensions which won't build on jruby.  You have to install the `0.7.3pre1` to get a version of that gem that is compatible with jruby.  I think if you install that first and then try pry-stack_explorer, that's how we'd get to the point where we were able to see if we fixed [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]'s issue.", "created": "2015-01-20T13:59:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Looks like this is still happening in Puppet Server 1.0.8 and 2.0.0 since the changes made in SERVER-262 were reverted. Marking as blocked on SERVER-297.", "created": "2015-05-05T10:22:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Also, when using FOSS Puppet Server 2.0 (which can find Java on the system path), I'm seeing:\n\n{noformat}\nBuilding native extensions.  This could take a while...\nERROR:  Error installing pry-stack_explorer:\n\tERROR: Failed to build gem native extension.\n\n    java -jar /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar extconf.rb\nException in thread \"main\" java.lang.IllegalStateException: Unable to find bootstrap.cfg file via --bootstrap-config command line argument, current working directory, or on classpath\n\tat puppetlabs.trapperkeeper.bootstrap$find_bootstrap_config.invoke(bootstrap.clj:141)\n\tat puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:113)\n\tat puppetlabs.trapperkeeper.core$run.invoke(core.clj:144)\n\tat puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159)\n\tat clojure.lang.RestFn.invoke(RestFn.java:408)\n\tat clojure.lang.Var.invoke(Var.java:379)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154)\n\tat clojure.lang.Var.applyTo(Var.java:700)\n\tat clojure.core$apply.invoke(core.clj:624)\n\tat puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:137)\n\tat puppetlabs.trapperkeeper.main.main(Unknown Source)\n{noformat}\n\nThe Ruby extension builder is trying to invoke JRuby on {{extconf.rb}} in order to build an extension. However, {{java -jar /opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar}} is not a JRuby interpreter. We might need to tweak some config settings so that extension building happens with something like {{/opt/puppetlabs/bin/puppetserver ruby}}.\n\nPuppet Server 1.0.8 in PE 3.8 is also attempting the same invocation, but failing earlier due to {{PATH}} issues.", "created": "2015-05-05T10:27:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Closing due to inactivity. Please reopen with up-to-date information if this is still needed.", "created": "2019-03-26T10:32:00.000000"}], "components": ["Puppet Server"], "created": "2014-12-12T13:24:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@44498f62"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1313"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz08fz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3361560027_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_107154697851_*|*_10005_*:*_1_*:*_24685864491"}], "description": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] has indicated that this would be very useful for debugging.  Sounds like it might require working up some JRuby support for http://rubygems.org/gems/binding_of_caller .", "epicLinkSummary": "Improved JRuby Debugging UX", "estimate": "PT0S", "externalId": "14964", "fixedVersions": ["SERVER 5.y"], "id": "14964", "issueType": "Improvement", "key": "SERVER-254", "labels": [], "originalEstimate": "PT0S", "parent": "14734", "parentSummary": "Improved JRuby Debugging UX", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2019-03-26T10:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "support for pry-stack_explorer", "timeSpent": "PT0S", "updated": "2019-03-26T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Merged into master as cda41d54f43f6b768d7f74c77fad2f479794a187\n\nI went ahead and addressed [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]'s comments, and my own minor one by amending Nate's commit.", "created": "2014-12-31T10:02:00.000000"}], "components": [], "created": "2014-12-12T12:54:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@651d43c9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypdlr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_624153666_*|*_10007_*:*_1_*:*_1007127012_*|*_5_*:*_1_*:*_54948561796_*|*_6_*:*_1_*:*_0"}], "description": "Write documentation for the 'ruby' and 'irb' subcommands, as well as a general 'subcommands' page to capture them all.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16719", "fixedVersions": ["SERVER 1.0.2", "SERVER 2.0.0"], "id": "16719", "issueType": "Task", "key": "SERVER-253", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2014-12-31T10:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Documentation for subcommands, irb, and ruby", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We don't seem to have any tests anywhere that test installing a gem into puppet server (eg. hiera-eyaml).  That sucks and it just broke and we had to find out from a customer.  Perhaps we should address that issue as a part of this ticket.\n\n/cc [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241]", "created": "2014-12-19T18:36:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. We don't seem to have any tests anywhere that test installing a gem into puppet server (eg. hiera-eyaml)\n\n[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] We do have an acceptance test for 'gem': https://github.com/puppetlabs/puppet-server/blob/master/acceptance/suites/tests/010-puppetserver-cli/subcommand/gem.rb\n\nIt does not install hiera-eyaml though.", "created": "2014-12-19T18:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5], did you say this being broken had something to do with the recent reissue of certificates on rubygems.org?  Maybe we didn't see this, then, because our tests had moved over to using an internal mirror of rubygems?", "created": "2014-12-19T18:42:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I think hitting the mirror for our real world use tests in acceptance is not good practice. Our mirror will never be configured identically to rubygems.org. In this case it was SSL, but it could easily be redirects, or something else.", "created": "2014-12-22T11:08:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - yes, you are most likely correct that we did not see this show up in testing because our tests use the internal rubygems mirror which, I believe, just plain HTTP instead of HTTPS.  I actually think this has most likely always been broken ([~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] says probably on all debian/ubuntu systems) and does not have anything to do with rubygems changing its cert recently.", "created": "2014-12-22T11:37:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}I think hitting the mirror for our real world use tests in acceptance is not good practice.{quote}\n\nHitting the mirror is definitely better practice than running tests dependent on rubygems.org behaving as expected.\n\nWe're not trying to test that rubygems.org behaves as it's supposed to, we're trying to test if puppetserver's gem system behaves as it should.  With this in mind, are there alternatives to the mirror that won't generate false positive results all the time?\n\nWould it be best practice to just install a gem from the local filesystem?", "created": "2014-12-29T15:30:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Stable only pull request link added.", "created": "2015-01-12T14:10:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "CI failed, working on a fix:  https://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/job/platform_puppet-server_integration-system_smoke-stable/lastCompletedBuild/testReport/", "created": "2015-01-13T17:08:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Fix merged into stable as 904fee3", "created": "2015-01-13T17:32:00.000000"}], "components": [], "created": "2014-12-12T12:52:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b6f76b9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypc9b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_64691408_*|*_10019_*:*_1_*:*_1126213_*|*_1_*:*_1_*:*_2078889851_*|*_10007_*:*_2_*:*_529806423_*|*_3_*:*_1_*:*_66462_*|*_5_*:*_1_*:*_53738857123_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_166539663"}], "description": "Write acceptance tests for the 'ruby' and 'irb' subcommands. We can use the existing 'gem' subcommand to fetch some gems and then try requiring them to make sure that they're all hooked up properly with the LOAD_PATH and GEM_HOME.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16017", "fixedVersions": ["SERVER 1.0.2"], "id": "16017", "issueType": "Task", "key": "SERVER-252", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-01-14T10:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Acceptance tests for 'ruby' and 'irb' subcommands", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "See discussion on https://github.com/puppetlabs/puppet-server/pull/313#discussion-diff-21767692 if more context is needed.", "created": "2014-12-12T12:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I thought of another test we should try that I have not done yet.\n\nPer the work on SERVER-38, we discovered that if a .terminate call is made on a ScriptingContainer while a client of the container had a file open in Ruby Puppet code, a \"bad file descriptor\" exception would be thrown - an assert due to the underlying JRuby ChannelDescriptor being closed out from underneath the client during .terminate processing.  I know that the map of ChannelDescriptors that JRuby holds is static and not JRuby instance-specific.  I'm not sure if the terminate is smart enough to just close the descriptors for one ScriptingContainer without closing all of them.  I think we should test this out to be sure.\n\nIf the close would wipe out descriptors across containers, we might need to redesign this feature to ensure that no destruction occurs while any clients might be using any containers.  Hope that's not the case...\n", "created": "2015-01-05T11:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This was merged, but then I noticed that it increases the test runtime from 6m to 12m.  I'm not sure that I believe the additional coverage is worth that cost, would like to discuss options before closing the ticket out.", "created": "2015-07-06T05:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I had also added this comment to the PR also but figured I'd duplicate that here for visibility...\n\nI suspect that the {{admin-api-multiple-flush-jruby-pool-test}} test is the one that takes most of the time since it has to wait for 4 flushes of 4 pool instances to complete. I'd thought about maybe mocking out some of the loading of Puppet code into instances in order to speed them up, but this would probably reduce the value of this test even further. I'm not sure it adds enough value overall so I guess we could just delete it.\n\nI think the {{hold-file-handle-on-instance-while-pool-flush-in-progress-test}} is potentially more useful since it is related to functionality that bit us in the past - the 'bad file descriptor' problem when a file was held open around a {{ScriptingContainer.terminate}}. I could drop the number of JRuby instances it uses from 4 to 2 since that would probably be enough for what it would need to do.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - Unless you say otherwise, I'll assume you're okay with this approach and will put up a follow on PR with those changes when we pick this back up - sometime this sprint.", "created": "2015-07-09T10:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I'm ok with whatever you think is the best way to handle the situation.  The proposal above sounds fine.", "created": "2015-07-09T23:46:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Follow-up PR merged to stable at [719f95|https://github.com/puppetlabs/puppet-server/commit/719f9551b32d4a46109f99e425496b6dbca66b00].", "created": "2015-07-14T11:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Full Jenkins job passed in CI:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/puppet-server/view/all/job/enterprise_puppet-server_integration-system_no-conditional_full-stable/57/\n\nMoving to Testing column.\n\n[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], not sure if you want to review anything further here or just move to 'done'?  This ticket was just about adding some unit test coverage, no production code changes.", "created": "2015-07-14T11:47:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing.", "created": "2015-07-14T11:50:00.000000"}], "components": [], "created": "2014-12-12T12:43:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45f2b83e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyonev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2079360739_*|*_10007_*:*_2_*:*_967834350_*|*_3_*:*_4_*:*_4524451011_*|*_6_*:*_2_*:*_7968951185_*|*_10011_*:*_1_*:*_177313_*|*_10006_*:*_3_*:*_10910992811"}], "description": "We should add another test to the jruby flush code, to validate that if the flush function is called multiple times before the first one is completed, that the behavior of the system will be stable and predictable.\n\nh3.QA:\nRisk Assessment: N/A  Ticket discusses a test.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15286", "fixedVersions": ["SERVER 1.1.2", "SERVER 2.1.2"], "id": "15286", "issueType": "Improvement", "key": "SERVER-251", "labels": ["PE-8251"], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-07-14T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add test to validate behavior if multiple jruby flush requests are queued", "timeSpent": "PT0S", "updated": "2015-10-14T17:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-12-12T11:39:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5566f984"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxagf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33212_*|*_10007_*:*_1_*:*_451021531_*|*_3_*:*_1_*:*_1192189_*|*_5_*:*_1_*:*_56131813289_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_90075"}], "description": "In SERVER-151, a jruby-pool HTTP endpoint was added to the admin API. This endpoint allows you to make a DELETE request to flush the jruby pool. Docs need to be added for this endpoint.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16861", "fixedVersions": ["SERVER 1.0.2"], "id": "16861", "issueType": "Task", "key": "SERVER-250", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Done", "resolutionDate": "2014-12-17T17:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add docs for jruby-pool HTTP endpoint", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e797fd32a94006a65d711] it would probably work for now, but we consider that feature to be experimental, and wanted to do some more testing and design work before we promote it as an officially supported feature.", "created": "2014-12-12T13:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "@aaron I think we agreed that we need to set up a stakeholder meeting soon to discuss this as well.", "created": "2014-12-15T18:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] [~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584] this is something that would be good to get prioritized relative to our other epics.  It's probably pretty actionable w/o any other dependencies (though will require some design discussion w/other Clojure teams).", "created": "2015-07-13T23:37:00.000000"}, {"author": "557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4", "body": "assigned to [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] to prioritize.", "created": "2015-07-14T11:07:00.000000"}, {"author": "623c133ed32a94006a649947", "body": "Any updates about this issue ?\n\nFor the record, with the systemd service for puppetserver, the new workaround is to edit the \"/opt/puppetlabs/server/apps/puppetserver/cli/apps/start\" to append a classpath\n\n{code:bash}\n${JAVA_BIN} ${JAVA_ARGS} -Djava.security.egd=/dev/urandom \\\n  -XX:OnOutOfMemoryError=\"kill -9 %p\" \\\n  -cp ${INSTALL_DIR}/puppet-server-release.jar${EXTRA_JAR} \\\n  clojure.main \\\n  -m puppetlabs.trapperkeeper.main \\\n  --config \"${CONFIG}\" \\\n  --bootstrap-config \"${BOOTSTRAP_CONFIG}\" \\\n  --restart-file \"${restartfile}\" &\n{code}\n\nEXTRA_JAR is defined in /etc/default/puppetserver\n\n{code:bash}\nEXTRA_JAR=\":/opt/puppetlabs/server/data/puppetserver/jruby-gems/gems/jdbc-mysql-5.1.39/lib/mysql-connector-java-5.1.39-bin.jar\"\n{code}\n", "created": "2017-01-26T03:25:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c133ed32a94006a649947], I think something like your suggestion might be a reasonable step forward to meet this need.  I'll raise this in our next ticket review meeting for visibility.\n\nIn the meantime, if you'd like to take a stab at making this change yourself, our packaging repo for these scripts is now open source.  I've listed a few links below for reference.\n\nhttps://github.com/puppetlabs/ezbake/blob/1.1.6/resources/puppetlabs/lein-ezbake/template/foss/ext/default.erb\n\nhttps://github.com/puppetlabs/ezbake/blob/1.1.6/resources/puppetlabs/lein-ezbake/template/pe/ext/default.erb\n\nhttps://github.com/puppetlabs/ezbake/blob/1.1.6/resources/puppetlabs/lein-ezbake/template/global/ext/cli/start.erb#L52\n\nhttps://github.com/puppetlabs/ezbake/blob/1.1.6/resources/puppetlabs/lein-ezbake/template/global/ext/cli/foreground.erb#L20", "created": "2017-01-26T09:08:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Are we only concerned about the case of Java gem extensions? Or do we want this be more a general solution, allowing adding arbitrary JARs of all kinds?\n\nIf it's only gems, I'm thinking of modifying puppetserver's gem command to edit the classpath as shown in the above example, to point to the {{lib}} directories of newly installed gems, regardless of whether or not they have native extensions. Java's {{-classpath}} option does not do recursive directory searching, so unfortunately I can't just point to the toplevel gem dir itself...\n\nDoes that seem like a bad idea?", "created": "2017-08-07T15:35:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I am fairly unfamiliar with the upgrade implications, do we have a description anywhere of what gets preserved vs what gets blown away when you upgrade?\n\n*Update*: Confirmed that the areas I intend to make use of for this approach (the various config files and the gem install directory) will not be affected by the upgrade process.", "created": "2017-08-07T15:40:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "After talking with [~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] it sounds like the real use case is in fact the opposite: we need to be able to load JARs that are not already bundled as gem extensions. Therefore, it seems straightforward to have EZBake create a directory for jars, and include this path in the classpath here: https://github.com/puppetlabs/puppetserver/blob/master/resources/ext/cli_defaults/cli-defaults.sh.erb#L10", "created": "2017-08-10T10:12:00.000000"}, {"author": "557058:b6aac013-0e75-4302-8d39-b92015fe3da2", "body": "Maggie,\n\nI was the person whose support ticket prompted this request, or at least one of them. In my specific case I have a custom function that does a lookup in an oracle database. In pre-3.7 versions of puppet I would have compiled the oci8 gem. However, that requires native extensions to be compiled, so could not be used with jruby-based modern puppetservers. I ended up creating a ruby gem that uses JDBC, and needed a place to put the ojdbc6.jar file.\n\nThanks\n\nBill\n", "created": "2017-08-10T11:12:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "Merged, when we promote this into PE we'll need to make the same changes in pe-puppet-server-extensions/pe-puppetserver.", "created": "2017-08-28T11:56:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "pe-puppet-server-extensions change has been made, I _think_ that we need to make the jar-dir change in pe-puppetserver as well", "created": "2017-08-30T11:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "PR with the pe-puppetserver change: https://github.com/puppetlabs/pe-puppetserver/pull/224", "created": "2017-08-30T12:32:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "merged to pe-puppetserver at https://github.com/puppetlabs/pe-puppetserver/commit/80a42aa604514597a72defba46d3ee3d4f1ca894", "created": "2017-08-30T14:03:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Tested an upgrade from PS 5.0.0 to a snapshot with this feature in it on cent7 and debian 8. The jars directory is created successfully ", "created": "2017-09-01T12:02:00.000000"}], "components": ["Puppet Server"], "created": "2014-12-09T14:45:00.000000", "creator": "623e797fd32a94006a65d711", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fb0e148"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-1313"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyll7j:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppetserver now has a directory at `/opt/puppetlabs/server/data/puppetserver/jars` where users can place jars that they wish to be loaded on the classpath when Puppetserver starts. Jars placed here will be left alone when upgrading."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_227883051_*|*_1_*:*_3_*:*_4086947641_*|*_10007_*:*_2_*:*_1200804283_*|*_3_*:*_2_*:*_891775031_*|*_5_*:*_1_*:*_1121868989_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_107562568_*|*_10004_*:*_2_*:*_63659466256_*|*_10006_*:*_1_*:*_60618631_*|*_10005_*:*_1_*:*_15892305887"}], "description": "Sometimes gems that might otherwise need native extensions will need jars. This is mostly in the case where no gem with java extensions already exists.\n\nThese gems and other jars may be needed for custom facts or for hiera backends etc.\n\nAt present, there is no good way to add these jars in a way that is known to be at a minimum upgrade safe, and ideally supportable (in the case of PE).\n\nThere should be some way to either specify additional directories to be part of the classpath or a known, fixed location where jars can be safely added to.\n\n", "epicLinkSummary": "Improved JRuby Debugging UX", "estimate": "PT0S", "externalId": "14962", "fixedVersions": ["SERVER 5.1.0"], "id": "14962", "issueType": "New Feature", "key": "SERVER-249", "labels": ["customer", "support", "the-goods"], "originalEstimate": "PT0S", "parent": "14734", "parentSummary": "Improved JRuby Debugging UX", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e797fd32a94006a65d711", "resolution": "Fixed", "resolutionDate": "2017-09-14T11:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add ability to add java/jars to puppet server", "timeSpent": "PT0S", "updated": "2018-03-30T14:53:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Wow, that's interesting (and unfortunate).  We'll try to look into this soon.  Thanks for the report.", "created": "2014-12-12T13:43:00.000000"}, {"author": "557058:22d0f8be-5a48-45ef-8078-6e91e5c34720", "body": "I haven't dug in enough to figure out how to get it listening on both, but in case it's helpful to anyone you can get it listening on ipv4 only by specifying the java arg\n\n{code}\n-Djava.net.preferIPv4Stack=true\n{code}", "created": "2016-10-10T11:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Closing this for now as the workaround from [~accountid:557058:22d0f8be-5a48-45ef-8078-6e91e5c34720] seems like it may be sufficient.", "created": "2016-12-09T16:05:00.000000"}, {"author": "557058:7bdae10b-73f2-4aa7-b72c-9998a4526110", "body": "For anyone trying to work this out on a PE server\n\n{code}\n---\npuppet_enterprise::profile::master::java_args:\n  'Djava.net.preferIPv4Stack=': 'true'\n{code}\n\n", "created": "2017-05-17T15:52:00.000000"}], "components": ["Puppet Server"], "created": "2014-12-09T06:44:00.000000", "creator": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6af07534"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxhaf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_558454157_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_62633607398"}], "description": "When starting puppetserver on a CentOS 7 machine with ipv6 loaded, puppetserver binds only to the ipv6 interface, even when the webserver.conf is configured for the IPV4 unspecified address.\n\nIPV4 unspecified address: 0.0.0.0\nIPV6 unspecified address: 0:0:0:0:0:0:0:0 or ::\n\nwebserver.conf\n\n{code: }\nwebserver: {\n    client-auth = want\n    ssl-host = 0.0.0.0\n    ssl-port = 8140\n}\n{code}\n\nIt would be best if webserver.conf supported opening ports on both IPV4 and IPV6 addresses to support migrating services from IPV4 to IPV6.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15285", "fixedVersions": [], "id": "15285", "issueType": "Bug", "key": "SERVER-248", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet-Server binds to ipv6 only ", "timeSpent": "PT0S", "updated": "2018-08-23T10:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "This was really small and I ran into it creating the 1.0.1 tickets so I filed a pull request at: https://github.com/puppetlabs/puppet-server/pull/353", "created": "2015-01-06T15:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "we already merged and reverted this change because of some kind of internal rubygems mirror issue or something... [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241]?", "created": "2015-01-06T17:26:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "IIRC the issue was the internal mirror doesn't host jira-ruby which caused failures.  If so, the solution is to add jira-ruby to the internal mirror.\n\n[Adding gems to the mirror is documented|https://confluence.puppetlabs.com/display/DEL/RubyGems+Mirror], so I've gone ahead and synchronized the updated Gemfile.lock with jira-ruby against the mirror following those steps.\n", "created": "2015-01-07T09:57:00.000000"}], "components": [], "created": "2014-12-08T18:19:00.000000", "creator": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1de4b3d5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynqmn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_602349000_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_7562360274"}], "description": "This gem is necessary to be able to push tickets generated by the packaging repository up to JIRA.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16016", "fixedVersions": ["SERVER 2.0.0"], "id": "16016", "issueType": "Improvement", "key": "SERVER-247", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "resolution": "Fixed", "resolutionDate": "2015-03-13T07:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add jira-ruby gem to Gemfile", "timeSpent": "PT0S", "updated": "2016-01-19T07:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "On thinking about this further, the default that we chose for borrowing, 60 seconds, seems too low for real-world, production scenarios.  For example, all of the JRuby pool instances could be checked out and handling catalog compilations.  Catalog compilations definitely can take longer than 60 seconds.  I filed SERVER-389 to cover adjusting this default to something more realistic for production use cases.", "created": "2015-02-25T12:22:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c08e1562ab90069f8aed4] - This is fixed in puppetlabs/master. It has not shipped in a release yet. The version in project.clj on master is 2.0.0, so I changed the fix version on this ticket to match that.\n\nAlso, note that there is a new configuration value added - it's in the docs in that PR.", "created": "2015-03-03T13:32:00.000000"}], "components": [], "created": "2014-12-08T14:21:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e6b4a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypdmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1102980882_*|*_1_*:*_1_*:*_338830040_*|*_10007_*:*_1_*:*_192071572_*|*_3_*:*_1_*:*_258408616_*|*_5_*:*_1_*:*_55027750981_*|*_6_*:*_1_*:*_0"}], "description": "We realized during the implementation for SERVER-150 (refreshing JRuby instances programmatically) that all of our current borrowers of JRuby pool instances were making the borrow request with no timeout - infinite.  Talking through some of these scenarios, we were concerned that under some circumstances - e.g., all of the pool instances checked out for a really long time, possibly due to an error state not being handled properly or just really slow running operations - the infinite timeout could get us into a state where the master appears to be hung.  This ticket would cover imposing a timeout for borrow operations.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16015", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "16015", "issueType": "Task", "key": "SERVER-246", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-12-30T11:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "change macro 'borrow's to 'borrow-with-timeout' in jruby service", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Seems like a sane move to me.", "created": "2014-12-08T13:33:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "For functional review I ran \"rpm -q --requires puppetserver\" on a RHEL 7 box and got this output \n{code}\npuppet >= 3.7.3\npuppet < 4.0.0\n{code}\n\nAnd on an Ubuntu Trusty box I ran \"apt-cache show puppetserver\" and received this output:\n{code}\nDepends: java7-runtime-headless, adduser, puppet-common (>= 3.7.3-1puppetlabs1), puppet-common (<= 4.0.0-1puppetlabs1), puppet (>= 3.7.3-1puppetlabs1), puppet (<= 4.0.0-1puppetlabs1), openjdk-7-jre-headless\n{code}\n\nSo everything looks good.", "created": "2014-12-15T12:36:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Release tickets do not need to be testrailed.", "created": "2015-01-30T06:46:00.000000"}], "components": ["Puppet Server"], "created": "2014-12-08T13:07:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3505144f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypq5z:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_240072409_*|*_1_*:*_1_*:*_340336760_*|*_10007_*:*_1_*:*_1291565_*|*_3_*:*_1_*:*_16069317_*|*_10009_*:*_1_*:*_5181553_*|*_5_*:*_1_*:*_211256543_*|*_6_*:*_1_*:*_0"}], "description": "Since we know that Puppet Server 1.x will not be compatible with Puppet 4, should we be setting an upper bound in our package dependencies on Puppet?  >= 3.7.3, but < 4.0?\n\n[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] ping!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15284", "fixedVersions": ["SERVER 1.0.0"], "id": "15284", "issueType": "Task", "key": "SERVER-245", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-15T12:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Change max value of puppet dependency prior to 1.0 release", "timeSpent": "PT0S", "updated": "2015-01-30T06:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-12-08T11:27:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@551f4bd2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypg9j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_251372299_*|*_1_*:*_1_*:*_38152941_*|*_10007_*:*_1_*:*_314051849_*|*_3_*:*_1_*:*_2428_*|*_5_*:*_1_*:*_56327084473_*|*_6_*:*_1_*:*_0"}], "description": "There is a bit of mutable state in the context for the JRuby service that sets a boolean flag called `:initialized?` to `true` after the first JRuby instance comes online.\n\nI'm not seeing any spots where this is used or necessary, though I haven't spent much time looking.\n\nMy gut is that it may be a relic of an earlier attempt that we made to try to allow us to block until the pool was ready, and that it may have been superseded by the PoisonPill stuff that we added later (a caller can successfully block by simply calling 'borrow' now, and an exception will be thrown if there was an error initializing the pool.)\n\nIf this is the case, we should just remove this code and the extra state that it's managing.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16014", "fixedVersions": [], "id": "16014", "issueType": "Task", "key": "SERVER-244", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-15T11:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "get rid of `:initialized?` code in jruby service", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-12-08T10:23:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a757d93"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgbj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_31943_*|*_10007_*:*_1_*:*_368018038_*|*_5_*:*_1_*:*_56566482956_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15283", "fixedVersions": [], "id": "15283", "issueType": "Task", "key": "SERVER-243", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-12T16:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "----- 1.0 divider", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] plz check to see if this is a dupe", "created": "2014-12-15T17:38:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "This ticket has been duplicated by SERVER-256, which actually has more useful information.", "created": "2014-12-15T17:41:00.000000"}], "components": [], "created": "2014-12-04T17:28:00.000000", "creator": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13495c6c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxffj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_950994582_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_179431"}], "description": "The problem is that VersionA config is changed during beaker runs (the reason is complicated, suffice it to say that this change is not optional or something that can be easily fixed) then when the pre_suite upgrades the puppetserver package to VersionB 'yum' hangs indefinitely waiting for the user to tell it how to handle the config file version conflict.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17589", "fixedVersions": [], "id": "17589", "issueType": "Task", "key": "SERVER-242", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "resolution": "Duplicate", "resolutionDate": "2014-12-15T17:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppet-server upgrade smoke tests always aborted", "timeSpent": "PT0S", "updated": "2015-11-30T12:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Completed bulk close.", "created": "2014-12-17T23:18:00.000000"}], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6de9706a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfcv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1037531459_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_110820700"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%221.0.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16860", "fixedVersions": [], "id": "16860", "issueType": "Sub-task", "key": "SERVER-240", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-17T23:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2014-12-17T23:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@642342ec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfcn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1035465098_*|*_5_*:*_1_*:*_55731165614_*|*_6_*:*_1_*:*_0"}], "description": "Update dujour to notify users to use 1.0.0.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16718", "fixedVersions": [], "id": "16718", "issueType": "Sub-task", "key": "SERVER-239", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-16T15:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 1.0.0", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Done, sent the following:\n\nWe're pleased to announce that Puppet Server 1.0.0 is now available.\n\nThis release is the official \"one point oh\" version of Puppet Server. In\naccordance with the [Semantic Versioning](http://semver.org) specification,\nwe're declaring the existing public API of this version to be the\nbaseline for backwards-incompatible changes, which will trigger another\nmajor version number. (No backwards-incompatible changes were introduced\nbetween 0.4.0 and this version.)\n\nIn addition, the following features were added:\n\n * (SERVER-151, SERVER-150) Created a HTTP endpoint to trigger a complete\n   refresh of the entire JRuby pool.\n * (SERVER-204) Added CLI tools to execute the `ruby` and `irb` commands using\n   Puppet server's JRuby environment.\n * (SERVER-221) Initialize run_mode earlier\n * (SERVER-114, SERVER-112) Added a HTTP endpoint to trigger a flush of the\n   Puppet environment cache.\n\nThis is also the first release where the Puppet Server documentation\nis available on the main docs.puppetlabs.com site.\n\nSee the complete release notes for details about these features:\nhttps://docs.puppetlabs.com/puppetserver/1.0/release_notes.html\n\nFor a list of all changes in this release, check out the JIRA page:\nhttps://puppet.atlassian.net/browse/SERVER/fixforversion/12023/\n\nTo install and start using Puppet Server instead of Apache+Passenger or\nWebrick, follow this guide:\nhttps://docs.puppetlabs.com/puppetserver/1.0/install_from_packages.html\n\nEric Sorenson - eric.sorenson@puppetlabs.com - freenode #puppet: eric0\npuppet platform // coffee // techno // bicycles\n", "created": "2014-12-17T22:57:00.000000"}], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e7fdb8e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfcf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1037552891_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_109534527"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n    * If this release has security implications, also send the release announcement to puppet-security-announce\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16412", "fixedVersions": [], "id": "16412", "issueType": "Sub-task", "key": "SERVER-238", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-17T22:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2014-12-17T22:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "Pushed, although some functionality is delayed pending OPS-5046 and we'll have a few broken links until then. ", "created": "2014-12-16T16:21:00.000000"}], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c3a6d44"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfc7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1036946550_*|*_5_*:*_1_*:*_55729700035_*|*_6_*:*_1_*:*_0"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16013", "fixedVersions": [], "id": "16013", "issueType": "Sub-task", "key": "SERVER-237", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-16T16:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a050846"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfbz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1034429390_*|*_3_*:*_1_*:*_1910423_*|*_5_*:*_1_*:*_55730299237_*|*_6_*:*_1_*:*_0"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15774", "fixedVersions": [], "id": "15774", "issueType": "Sub-task", "key": "SERVER-236", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-16T16:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60a6e960"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfbr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1035200868_*|*_5_*:*_1_*:*_55731455285_*|*_6_*:*_1_*:*_0"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15537", "fixedVersions": [], "id": "15537", "issueType": "Sub-task", "key": "SERVER-235", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-16T15:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "(thumbsup) from [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241], [~accountid:623c08e1562ab90069f8aed4], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], and [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]", "created": "2014-12-16T15:39:00.000000"}], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18c64379"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfbj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1035226102_*|*_5_*:*_1_*:*_55731423086_*|*_6_*:*_1_*:*_0"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15282", "fixedVersions": [], "id": "15282", "issueType": "Sub-task", "key": "SERVER-234", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-16T15:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "On Centos 7:\n\nDid a clean install of Puppet server 1.0.0: successfully started/restarted/stopped the service and made an agent run. Then write up a short manifest with a notify message and successfully received the notification.\n\nUpgraded from Puppet server 0.4.0 to 1.0.0 and exercised it in the same manner, all things looked good.", "created": "2014-12-16T14:06:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Verified Cent 6:\n* Clean install of 0.4.0 + service stop/start/restart + agent run\n* Upgrade to 1.0.0 + service stop/start/restart + agent run + foreground/ruby/irb/gem", "created": "2014-12-16T14:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "working on trusty now", "created": "2014-12-16T14:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Upgrade went fine on trusty, trying clean install now.", "created": "2014-12-16T14:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Clean install on trusty went fine, tested agent runs and new cli commands.", "created": "2014-12-16T15:20:00.000000"}], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30b68389"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfbb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1033503174_*|*_5_*:*_1_*:*_55733162199_*|*_6_*:*_1_*:*_0"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14960", "fixedVersions": [], "id": "14960", "issueType": "Sub-task", "key": "SERVER-233", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-16T15:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Because of ezbake, this task is a little different than normal. Jenkins takes care of what needs to happen with this task, and is kicked off by the change that happens in SERVER-228. When the version defined in project.clj is changed to \"1.0.0\", this will automatically kick off the jenkins build pipeline (https://jenkins.puppetlabs.com/view/Puppet%20Server/view/All/). The packages produced here will be the ones tested in the smoke testing phase, and will be the packages that are shipped if no issues are found.\n\nSince this step automatically happens, I am closing this ticket as \"closed, won't fix.\" Jenkins does this work, so I'll be checking in to make sure everything happens as it should, and step in if needed.", "created": "2014-12-15T12:25:00.000000"}], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@517f7ccd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfb3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_936354860_*|*_6_*:*_1_*:*_0"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17491", "fixedVersions": [], "id": "17491", "issueType": "Sub-task", "key": "SERVER-232", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Won't Fix", "resolutionDate": "2014-12-15T12:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2014-12-15T12:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40c753dd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfav:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_948799711_*|*_5_*:*_1_*:*_55817867782_*|*_6_*:*_1_*:*_0"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17226", "fixedVersions": ["SERVER 1.0.2"], "id": "17226", "issueType": "Sub-task", "key": "SERVER-231", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-15T15:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:5c808afb-dce6-44a1-922d-296dc2c81fe8", "attachments": [], "comments": [{"author": "557058:5c808afb-dce6-44a1-922d-296dc2c81fe8", "body": "Released Version 1.0.0 in JIRA. We already have new versions created for backlog after 1.0.0. If anything else is required - let me know", "created": "2014-12-15T18:13:00.000000"}], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d12b96d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfan:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_957288261_*|*_5_*:*_1_*:*_55809369814_*|*_6_*:*_1_*:*_0"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16859", "fixedVersions": [], "id": "16859", "issueType": "Sub-task", "key": "SERVER-230", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-15T18:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2014-12-04T16:19:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@226c8808"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfaf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_942829665_*|*_5_*:*_1_*:*_55823842931_*|*_6_*:*_1_*:*_0"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16717", "fixedVersions": [], "id": "16717", "issueType": "Sub-task", "key": "SERVER-229", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-15T14:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Wait, this isn't done yet, unless I'm missing something.\n\nhttps://github.com/puppetlabs/puppet-server/blob/master/project.clj#L12 needs to be updated to remove the \"-SNAPSHOT\", if I'm remembering correctly. Also, this change will kick off the packaging pipeline, so only do this when the code is totally ready, and you are ready to start smoke testing. Once the jenkins job for building packages has been kicked off, that can be changed to \"1.0.1-SNAPSHOT\", or whatever version you think the next release is going to be.", "created": "2014-12-15T12:20:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Hmm I was thinking we would merge master into stable then bump stable to 1.0.0 and release from that? Is that not the correct procedure?", "created": "2014-12-15T13:30:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Yeah, that sounds like a fine thing to do", "created": "2014-12-15T15:04:00.000000"}], "components": [], "created": "2014-12-04T16:18:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@350ef5ae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxfa7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_935152320_*|*_5_*:*_1_*:*_55831507787_*|*_6_*:*_1_*:*_0"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16351", "fixedVersions": [], "id": "16351", "issueType": "Sub-task", "key": "SERVER-228", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-15T12:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2014-12-04T16:18:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d234e7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxf9z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_934306753_*|*_5_*:*_1_*:*_55832363699_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release) There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16012", "fixedVersions": [], "id": "16012", "issueType": "Sub-task", "key": "SERVER-227", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-15T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2014-12-04T16:18:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d9df37f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxf9r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_934299111_*|*_5_*:*_1_*:*_55832388281_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release). There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15773", "fixedVersions": [], "id": "15773", "issueType": "Sub-task", "key": "SERVER-226", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-15T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "attachments": [], "comments": [], "components": [], "created": "2014-12-04T16:18:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@115d8484"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxf9j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_934289506_*|*_5_*:*_1_*:*_55832396640_*|*_6_*:*_1_*:*_0"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%221.0.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15536", "fixedVersions": [], "id": "15536", "issueType": "Sub-task", "key": "SERVER-225", "labels": [], "originalEstimate": "PT0S", "parent": "15281", "parentSummary": "Puppet Server 1.0.0 2014-12-15 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-15T11:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0cbf1c7f6a007049e5b9", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "All sub-tasks for release complete.", "created": "2014-12-17T23:19:00.000000"}], "components": [], "created": "2014-12-04T16:18:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7efc2256"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywvtj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1148425478_*|*_6_*:*_1_*:*_0"}], "description": "Puppet Server 1.0.0 2014-12-15 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15281", "fixedVersions": ["SERVER 1.0.0"], "id": "15281", "issueType": "Task", "key": "SERVER-224", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-17T23:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 1.0.0 2014-12-15 Release", "timeSpent": "PT0S", "updated": "2015-01-29T16:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We should ping someone in support and make sure that they would actually view this as valuable.", "created": "2014-12-15T17:31:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Totally valuable and worth the investment. Besides allowing access to the [ruby code|https://github.com/puppetlabs/puppet-server/tree/puppet-server-0.4.1/src/ruby/puppet-server-lib/puppet], it seems this would also let us mess with the [clojure code|https://github.com/puppetlabs/puppet-server/tree/puppet-server-0.4.1/src/clj/puppetlabs] while the system is under test. Lots of problems get solved by wiring Puppet up with a debugger and breakpoints.", "created": "2014-12-15T17:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] awesome, thanks for the input.  Will try to work this into some sprint in the not-too-distant future.", "created": "2014-12-16T13:31:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "So, the naive attempt do this, running {{jar xf}} on {{puppet-server-release.jar}} and pointing the init scripts at the resulting folder works up until the point where JRuby starts up. Then everything goes pear shaped:\n\n{noformat}\n# /opt/puppet/bin/puppetserver foreground\n\n2014-12-19 18:46:07,735 DEBUG [p.t.logging] Debug logging enabled\n2014-12-19 18:46:07,744 DEBUG [p.t.bootstrap] Loading bootstrap config from specified path: '/etc/puppetlabs/puppetserver/bootstrap.cfg'\n2014-12-19 18:46:17,647 INFO  [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2014-12-19 18:46:17,669 INFO  [p.t.s.w.jetty9-service] Initializing web server(s).\n2014-12-19 18:46:17,745 INFO  [p.s.p.puppet-admin-service] Starting Puppet Admin web app\n2014-12-19 18:46:17,819 DEBUG [p.s.j.jruby-puppet-core] Initializing JRubyPuppet instances with the following settings:\n{:http-client-cipher-suites nil,\n :http-client-ssl-protocols nil,\n :ruby-load-path [\"/opt/puppet/lib/ruby/site_ruby/1.9.1\"],\n :gem-home \"/var/opt/lib/pe-puppet-server/jruby-gems\",\n :master-var-dir \"/var/opt/lib/pe-puppet\",\n :master-conf-dir \"/etc/puppetlabs/puppet\",\n :max-active-instances 1}\n\n2014-12-19 18:46:17,821 DEBUG [p.s.j.jruby-puppet-core] Priming JRubyPuppet instance 1 of 1\nGem::LoadError: Could not find 'ffi' (>= 0) among 5 total gem(s)\n               to_specs at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/dependency.rb:298\n  activate_dependencies at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1271\n                   each at org/jruby/RubyArray.java:1613\n  activate_dependencies at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1260\n               activate at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1242\n  activate_dependencies at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1274\n                   each at org/jruby/RubyArray.java:1613\n  activate_dependencies at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1260\n               activate at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1242\n           try_activate at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems.rb:194\n                require at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:132\n                 (root) at /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/file_bucket/file.rb:7\n                require at org/jruby/RubyKernel.java:1065\n                 (root) at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n                require at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135\n                require at org/jruby/RubyKernel.java:1065\n                 (root) at /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:277\n                 (root) at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n                require at org/jruby/RubyKernel.java:1065\n                require at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135\n                 (root) at /opt/puppet/share/puppetserver/puppet-server-release/puppet-server-lib/puppet/server.rb:1\n                require at org/jruby/RubyKernel.java:1065\n                 (root) at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n                require at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135\n                 invoke at jruby_puppet_core.clj:143\n                 invoke at jruby_puppet_core.clj:157\n                 invoke at jruby_puppet_core.clj:146\n                 invoke at jruby_puppet_core.clj:273\n                 invoke at jruby_puppet_core.clj:260\n                 invoke at jruby_puppet_service.clj:33\n                 invoke at internal.clj:246\n                 invoke at internal.clj:230\n      shutdown_on_error at internal.clj:285\n                 invoke at internal.clj:254\n                 invoke at internal.clj:254\n                 invoke at core.clj:619\n               doInvoke at core.clj:2396\n                 invoke at jruby_puppet_service.clj:32\n                 invoke at core.clj:1836\n2014-12-19 18:46:33,771 ERROR [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491$fn__12492.invoke(jruby_puppet_core.clj:279) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491.invoke(jruby_puppet_core.clj:260) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704$fn__12705.invoke(jruby_puppet_service.clj:33) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254) [na:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:167) [puppet-server-release/:na]\n\tat clojure.lang.AFn.applyTo(AFn.java:151) [puppet-server-release/:na]\n\tat clojure.core$apply.invoke(core.clj:619) [puppet-server-release/:na]\n\tat clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release/:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:421) [puppet-server-release/:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704.invoke(jruby_puppet_service.clj:32) [na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836) [puppet-server-release/:na]\n\tat clojure.lang.AFn.call(AFn.java:18) [puppet-server-release/:na]\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_71-icedtea]\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_71-icedtea]\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_71-icedtea]\n\tat java.lang.Thread.run(Thread.java:745) [na:1.7.0_71-icedtea]\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) Could not find 'ffi' (>= 0) among 5 total gem(s)\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133) ~[puppet-server-release/:na]\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1317) ~[puppet-server-release/:na]\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1310) ~[puppet-server-release/:na]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_71-icedtea]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_71-icedtea]\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_71-icedtea]\n\tat java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71-icedtea]\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) ~[puppet-server-release/:na]\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) ~[puppet-server-release/:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:143) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348$fn__12349.invoke(jruby_puppet_core.clj:157) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348.invoke(jruby_puppet_core.clj:146) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491$fn__12492.invoke(jruby_puppet_core.clj:273) ~[na:na]\n\t... 19 common frames omitted\nCaused by: org.jruby.exceptions.RaiseException: (LoadError) Could not find 'ffi' (>= 0) among 5 total gem(s)\n\tat RUBY.to_specs(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/dependency.rb:298) ~[na:na]\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1271) ~[na:na]\n\tat org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613) ~[puppet-server-release/:na]\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1260) ~[na:na]\n\tat RUBY.activate(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1242) ~[na:na]\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1274) ~[na:na]\n\tat org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613) ~[puppet-server-release/:na]\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1260) ~[na:na]\n\tat RUBY.activate(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1242) ~[na:na]\n\tat RUBY.try_activate(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems.rb:194) ~[na:na]\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:132) ~[na:na]\n\tat RUBY.(root)(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/file_bucket/file.rb:7) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release/:na]\n\tat RUBY.(root)(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release/:na]\n\tat RUBY.(root)(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:277) ~[na:na]\n\tat RUBY.(root)(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release/:na]\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135) ~[na:na]\n\tat RUBY.(root)(/opt/puppet/share/puppetserver/puppet-server-release/puppet-server-lib/puppet/server.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release/:na]\n\tat RUBY.(root)(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:143) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348$fn__12349.invoke(jruby_puppet_core.clj:157) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348.invoke(jruby_puppet_core.clj:146) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491$fn__12492.invoke(jruby_puppet_core.clj:273) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491.invoke(jruby_puppet_core.clj:260) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704$fn__12705.invoke(jruby_puppet_service.clj:33) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254) [na:na]\n\tat clojure.core$apply.invoke(core.clj:619) [puppet-server-release/:na]\n\tat clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release/:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704.invoke(jruby_puppet_service.clj:32) [na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836) [puppet-server-release/:na]\n2014-12-19 18:46:33,775 ERROR [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Unable to borrow JRuby instance from pool\n\tat puppetlabs.services.jruby.jruby_puppet_core$validate_instance_from_pool_BANG_.invoke(jruby_puppet_core.clj:237) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12554$borrow_from_pool__12555$fn__12556.invoke(jruby_puppet_core.clj:304) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12554$borrow_from_pool__12555.invoke(jruby_puppet_core.clj:297) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703.borrow_instance(jruby_puppet_service.clj:40) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_core$eval13669$get_puppet_config__13670$fn__13671.invoke(puppet_server_config_core.clj:99) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_core$eval13669$get_puppet_config__13670.invoke(puppet_server_config_core.clj:94) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_service$reify__13696$service_fnk__5254__auto___positional$reify__13707.init(puppet_server_config_service.clj:24) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval5090$fn__5117$G__5082__5120.invoke(services.clj:12) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval5090$fn__5117$G__5081__5124.invoke(services.clj:12) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$run_lifecycle_fn_BANG_.invoke(internal.clj:144) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$run_lifecycle_fns.invoke(internal.clj:172) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$build_app_STAR_$reify__5945.init(internal.clj:436) [na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_$fn__5957.invoke(internal.clj:462) [na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_.invoke(internal.clj:461) [na:na]\n\tat puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:113) [na:na]\n\tat puppetlabs.trapperkeeper.core$run.invoke(core.clj:144) [na:na]\n\tat puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159) [na:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:512) [puppet-server-release/:na]\n\tat clojure.lang.Var.invoke(Var.java:435) [puppet-server-release/:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:185) [puppet-server-release/:na]\n\tat clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release/:na]\n\tat clojure.core$apply.invoke(core.clj:617) [puppet-server-release/:na]\n\tat puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7) [puppet-server-release/:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:512) [puppet-server-release/:na]\n\tat clojure.lang.Var.invoke(Var.java:435) [puppet-server-release/:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:185) [puppet-server-release/:na]\n\tat clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release/:na]\n\tat clojure.core$apply.invoke(core.clj:617) [puppet-server-release/:na]\n\tat clojure.main$main_opt.invoke(main.clj:335) [puppet-server-release/:na]\n\tat clojure.main$main.doInvoke(main.clj:440) [puppet-server-release/:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:619) [puppet-server-release/:na]\n\tat clojure.lang.Var.invoke(Var.java:445) [puppet-server-release/:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:202) [puppet-server-release/:na]\n\tat clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release/:na]\n\tat clojure.main.main(main.java:37) [puppet-server-release/:na]\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) Could not find 'ffi' (>= 0) among 5 total gem(s)\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133) ~[puppet-server-release/:na]\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1317) ~[puppet-server-release/:na]\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1310) ~[puppet-server-release/:na]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_71-icedtea]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_71-icedtea]\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_71-icedtea]\n\tat java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71-icedtea]\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) ~[puppet-server-release/:na]\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) ~[puppet-server-release/:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:143) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348$fn__12349.invoke(jruby_puppet_core.clj:157) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348.invoke(jruby_puppet_core.clj:146) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491$fn__12492.invoke(jruby_puppet_core.clj:273) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491.invoke(jruby_puppet_core.clj:260) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704$fn__12705.invoke(jruby_puppet_service.clj:33) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254) ~[na:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:167) [puppet-server-release/:na]\n\tat clojure.lang.AFn.applyTo(AFn.java:151) [puppet-server-release/:na]\n\tat clojure.core$apply.invoke(core.clj:619) [puppet-server-release/:na]\n\tat clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release/:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:421) [puppet-server-release/:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704.invoke(jruby_puppet_service.clj:32) ~[na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836) ~[puppet-server-release/:na]\n\tat clojure.lang.AFn.call(AFn.java:18) [puppet-server-release/:na]\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_71-icedtea]\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_71-icedtea]\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_71-icedtea]\n\tat java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_71-icedtea]\nCaused by: org.jruby.exceptions.RaiseException: (LoadError) Could not find 'ffi' (>= 0) among 5 total gem(s)\n\tat RUBY.to_specs(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/dependency.rb:298) ~[na:na]\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1271) ~[na:na]\n\tat org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613) ~[puppet-server-release/:na]\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1260) ~[na:na]\n\tat RUBY.activate(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1242) ~[na:na]\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1274) ~[na:na]\n\tat org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613) ~[puppet-server-release/:na]\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1260) ~[na:na]\n\tat RUBY.activate(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1242) ~[na:na]\n\tat RUBY.try_activate(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems.rb:194) ~[na:na]\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:132) ~[na:na]\n\tat RUBY.(root)(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/file_bucket/file.rb:7) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release/:na]\n\tat RUBY.(root)(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release/:na]\n\tat RUBY.(root)(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:277) ~[na:na]\n\tat RUBY.(root)(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release/:na]\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135) ~[na:na]\n\tat RUBY.(root)(/opt/puppet/share/puppetserver/puppet-server-release/puppet-server-lib/puppet/server.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release/:na]\n\tat RUBY.(root)(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:143) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348$fn__12349.invoke(jruby_puppet_core.clj:157) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348.invoke(jruby_puppet_core.clj:146) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491$fn__12492.invoke(jruby_puppet_core.clj:273) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491.invoke(jruby_puppet_core.clj:260) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704$fn__12705.invoke(jruby_puppet_service.clj:33) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254) ~[na:na]\n\tat clojure.core$apply.invoke(core.clj:619) [puppet-server-release/:na]\n\tat clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release/:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704.invoke(jruby_puppet_service.clj:32) ~[na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836) ~[puppet-server-release/:na]\n2014-12-19 18:46:33,780 INFO  [p.t.internal] Beginning shutdown sequence\n2014-12-19 18:46:33,784 INFO  [p.t.s.w.jetty9-service] Shutting down web server(s).\n2014-12-19 18:46:33,795 INFO  [p.t.internal] Finished shutdown sequence\nException in thread \"main\" java.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491$fn__12492.invoke(jruby_puppet_core.clj:279)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491.invoke(jruby_puppet_core.clj:260)\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704$fn__12705.invoke(jruby_puppet_service.clj:33)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230)\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285)\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254)\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254)\n\tat clojure.lang.AFn.applyToHelper(AFn.java:167)\n\tat clojure.lang.AFn.applyTo(AFn.java:151)\n\tat clojure.core$apply.invoke(core.clj:619)\n\tat clojure.core$partial$fn__4190.doInvoke(core.clj:2396)\n\tat clojure.lang.RestFn.invoke(RestFn.java:421)\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704.invoke(jruby_puppet_service.clj:32)\n\tat clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836)\n\tat clojure.lang.AFn.call(AFn.java:18)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:262)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)\n\tat java.lang.Thread.run(Thread.java:745)\nCaused by: org.jruby.embed.EvalFailedException: (LoadError) Could not find 'ffi' (>= 0) among 5 total gem(s)\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133)\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1317)\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1310)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:606)\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n\tat puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:143)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348$fn__12349.invoke(jruby_puppet_core.clj:157)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348.invoke(jruby_puppet_core.clj:146)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491$fn__12492.invoke(jruby_puppet_core.clj:273)\n\t... 19 more\nCaused by: org.jruby.exceptions.RaiseException: (LoadError) Could not find 'ffi' (>= 0) among 5 total gem(s)\n\tat RUBY.to_specs(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/dependency.rb:298)\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1271)\n\tat org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613)\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1260)\n\tat RUBY.activate(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1242)\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1274)\n\tat org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613)\n\tat RUBY.activate_dependencies(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1260)\n\tat RUBY.activate(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/specification.rb:1242)\n\tat RUBY.try_activate(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems.rb:194)\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:132)\n\tat RUBY.(root)(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/file_bucket/file.rb:7)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n\tat RUBY.(root)(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n\tat RUBY.(root)(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:277)\n\tat RUBY.(root)(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135)\n\tat RUBY.(root)(/opt/puppet/share/puppetserver/puppet-server-release/puppet-server-lib/puppet/server.rb:1)\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n\tat RUBY.(root)(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n\tat RUBY.require(classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:135)\n\tat puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:143)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348$fn__12349.invoke(jruby_puppet_core.clj:157)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12347$create_pool_instance__12348.invoke(jruby_puppet_core.clj:146)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491$fn__12492.invoke(jruby_puppet_core.clj:273)\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval12490$prime_pools_BANG___12491.invoke(jruby_puppet_core.clj:260)\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704$fn__12705.invoke(jruby_puppet_service.clj:33)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246)\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230)\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285)\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254)\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254)\n\tat clojure.core$apply.invoke(core.clj:619)\n\tat clojure.core$partial$fn__4190.doInvoke(core.clj:2396)\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__12692$service_fnk__5254__auto___positional$reify__12703$fn__12704.invoke(jruby_puppet_service.clj:32)\n\tat clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836)\n{noformat}", "created": "2014-12-19T11:52:00.000000"}], "components": [], "created": "2014-12-04T13:09:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6efd731"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-792"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xvb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_966128502_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_62634662371"}], "description": "Sometimes users (or, at least, our support team) want to do things that require that they have access to the Puppet Server source code on a system that was installed from packages.  e.g., add a breakpoint to the ruby code for debugging, or maybe tweak the clojure code a bit.\n\nIt's not too hard to explode the jar and run from source if you know how, but we need to make this easier for people.  This might just be docs, or it might be another cli subcommand that would explode the jar and then run the appropriate java command; not sure.\n\nAt the very least we need to write up docs for this, though.", "epicLinkSummary": "Metrics improvements", "estimate": "PT0S", "externalId": "15772", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "15772", "issueType": "Improvement", "key": "SERVER-223", "labels": [], "originalEstimate": "PT0S", "parent": "15326", "parentSummary": "Metrics improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "make it easier to run from an exploded jar", "timeSpent": "PT0S", "updated": "2016-12-09T16:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This looks like it might not be possible at the moment.\n\nI *believe* (not 100% sure about this) that the way to do this would be:\n{code}\njava -cp /path/to/puppet-server.jar org.jruby.Main -S irb\n{code}\n\nHowever, when I test that command, nothing happens ... the process produces no output before terminating.  That looks like it might be caused by this JRuby bug: https://github.com/jruby/jruby/issues/1983\n\nIn the discussion on that issue, it sounds like this has been broken for several versions, but will be fixed in 1.7.17.", "created": "2014-12-04T13:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I believe that whenever you do \"-S\" it tells it to look for executable scripts on the file system and then run them under the jruby from the jar.  That's bad, because it relies on people having ruby installed elsewhere, plus compatibility issues.\n\nThere should be a copy of irb inside of the META-INF in the jar, and that's what we really need to be trying to call.  I think it might end up being similar to what I did for bundler stuff in the spec tests code (rakefile), but it's been a while.", "created": "2014-12-04T13:37:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "On an Ubuntu Trusty box I ran \"puppetserver irb --version and got back \n\n{code}irb 0.9.6(09/06/30){code}\n\nOnce I opened irb I ran the following series of commands and they all look good\n\n{code}\n$ puppetserver irb\nirb(main):001:0> puts \"testing 1 2 3\"\ntesting 1 2 3\n=> nil\nirb(main):002:0> require 'puppet'\n=> true\nirb(main):003:0> exit\n{code}", "created": "2014-12-15T12:53:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Ran the following command on centos7 and everything looks good:\n\n{code}\n$ puppetserver irb --version\nirb 0.9.6(09/06/30)\n{code}\n\n{code}\n$ puppetserver irb\nirb(main):001:0> require 'puppet'\n=> true\nirb(main):002:0> puts 'testing'\ntesting\n=> nil\n{code}", "created": "2014-12-15T13:45:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "On centos6 I ran the following commands and everything looks good:\n\n{code}\n$ puppetserver irb --version\nirb 0.9.6(09/06/30)\n{code}\n\n{code}\n$ puppetserver irb\nirb(main):001:0> require 'puppet'\n=> true\nirb(main):002:0> puts 'testing 123'\ntesting 123\n=> nil\nirb(main):003:0> puts Puppet::PUPPETVERSION\n3.7.3\n{code}", "created": "2014-12-15T13:57:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}], "components": [], "created": "2014-12-04T13:05:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@55727ffe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgan:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_241140462_*|*_1_*:*_4_*:*_3025866_*|*_10007_*:*_1_*:*_12762220_*|*_3_*:*_1_*:*_686437843_*|*_10009_*:*_2_*:*_10735485_*|*_5_*:*_1_*:*_205813344_*|*_6_*:*_1_*:*_0_*|*_10017_*:*_1_*:*_11958_*|*_10016_*:*_3_*:*_22233"}], "description": "We should add an 'irb' command while we're adding a 'ruby' command.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15280", "fixedVersions": ["SERVER 1.0.0"], "id": "15280", "issueType": "New Feature", "key": "SERVER-222", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-15T14:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add 'puppetserver irb' cli command", "timeSpent": "PT0S", "updated": "2015-01-29T16:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}], "components": [], "created": "2014-12-04T12:59:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3dfdc674"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypg9r:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_600748294_*|*_1_*:*_1_*:*_68987_*|*_10007_*:*_1_*:*_341778946_*|*_3_*:*_1_*:*_1095970_*|*_5_*:*_1_*:*_216618033_*|*_6_*:*_1_*:*_0"}], "description": "In PE-6901 we discovered a change in behavior that causes Puppet Server to initialize some settings with `run_mode` set to `main` at startup.  We should be (and previously were) using a `run_mode` of `master`.\n\nThis should be very low impact; the only place where we've noticed it causing an issue is if you define the same setting in both `main` and `master`, then you'll get the value from `main` initially.  Later on if an environment cache is flushed, you'll get `master`, which is the expected behavior.\n\nThe workaround for now is to just make sure you don't define a setting in both places, but we need to go ahead and get a fix in.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16858", "fixedVersions": ["SERVER 1.0.0"], "id": "16858", "issueType": "Bug", "key": "SERVER-221", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-15T11:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Run mode not initialized properly", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c0da2d32a94006a64964f", "body": "PR: https://github.com/puppetlabs/puppet-server/pull/306", "created": "2014-12-04T11:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Because of the way we do our packaging, I don't think we want to move jetty to be a top-level dependency here.\n\nHowever, it would be nice to provide and document a way for users to build an uberjar that includes Jetty", "created": "2014-12-04T14:00:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c0da2d32a94006a64964f] - It just occurred to me that you might be able to build uberjar currently by simply enabling the dev profile when doing so: {{lein with-profile dev uberjar}}\n\nCan you give that shot and see if it works for you?", "created": "2014-12-15T18:22:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] [~accountid:623c0da2d32a94006a64964f] Unfortunately the {{dev}} profile is a bit of a snowflake and doesn't behave the same way as most profiles. It appears to be turned off during {{lein uberjar}} regardless, so we'll likely have to create another profile, or perhaps it's okay to use the existing {{uberjar}} profile.", "created": "2015-01-06T17:18:00.000000"}], "components": ["Puppet Server"], "created": "2014-12-04T11:25:00.000000", "creator": "623c0da2d32a94006a64964f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3cda6283"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp907:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_515548213_*|*_1_*:*_1_*:*_972082492_*|*_10007_*:*_1_*:*_241804740_*|*_10009_*:*_1_*:*_1735465058_*|*_5_*:*_1_*:*_51906221960_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1905274308"}], "description": "After building an uberjar from the puppet-server repository I ran into:\n\njava.lang.IllegalArgumentException: Unable to load service: puppetlabs.trapperkeeper.services.webserver.jetty9-service/jetty9-service\n\nAs suggested by Chris Price I moved jetty into the list of regular dependencies. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17281", "fixedVersions": ["SERVER 2.0.0"], "id": "17281", "issueType": "Bug", "key": "SERVER-220", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0da2d32a94006a64964f", "resolution": "Fixed", "resolutionDate": "2015-02-04T15:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Move jetty to regular dependencies to prevent java.lang.IllegalArgumentException: Unable to load service", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I found one memory leak around some ChannelDescriptor objects that don't get freed up after terminate is called on a ScriptingContainer.  I filed an issue to the JRuby project to cover this - https://github.com/jruby/jruby/issues/2333.", "created": "2014-12-17T17:26:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Created SERVER-273 to track follow-on work for the ChannelDescriptor memory leak.", "created": "2014-12-23T17:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Beyond the ChannelDescriptor memory leak, I did not find any other leakage of org.jruby.* objects related to flushing of ScriptingContainers.  I tested this by adding the catalog-zero test-catalog to a Puppet Server master, registering PuppetDB with the master, and interleaving agent runs against the master with calls to the \"flush-jruby-pool\" API and captures of YourKit snapshots.", "created": "2014-12-23T17:20:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c08e1562ab90069f8aed4] - Do you need a more specific fix version for this ticket?  There were no code changes for this ticket ... perhaps we should just remove the 'fix version'?", "created": "2015-03-03T13:29:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] That might be the thing to do... as well as for the other ones that didn't result in anything going into a release. [~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c]? ", "created": "2015-03-03T16:34:00.000000"}], "components": [], "created": "2014-12-03T11:54:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@205016ff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypdn3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1032238866_*|*_3_*:*_1_*:*_715349540_*|*_5_*:*_1_*:*_55613489501_*|*_6_*:*_1_*:*_0"}], "description": "For SERVER-150, we're looking to add some logic which would call {{.terminate}} on {{ScriptingContainer}} instances in order to free up all of the associated memory that JRuby had allocated on behalf of the container.  Hopefully, this is all we need to do to free up this memory, but it would be good to do some specific measurement to see what the effect of this is, i.e., to ensure that there's nothing else we need to do to free up memory and/or that JRuby isn't internally leaking memory.\n\nFor this effort, I was thinking of doing something like the following:\n\n1) Using YourKit, take a memory snapshot of the running Java Puppet Master process.\n\n2) New up a ScriptingContainer and JRubyPuppet instance within the container.\n\n2) Simulate an agent catalog request through the instance.\n\n3) Call terminate on the ScriptingContainer.\n\n4) Repeat steps 1-3 some number of times.\n\n5) Use YourKit generations feature to look for JRuby-related objects that survive across generations, e.g., memory created each generation which is never apparently freed, a sign that leaks may be present.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17490", "fixedVersions": ["SERVER 1.y"], "id": "17490", "issueType": "Task", "key": "SERVER-219", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2014-12-23T17:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Test ScriptingContainer terminate for possible memory leaks", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Marking this documentation issue as QA Reviewed.  We do not need a test case for this.", "created": "2015-01-29T16:29:00.000000"}], "components": [], "created": "2014-12-02T11:30:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@693970ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgav:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_173433170_*|*_10007_*:*_1_*:*_703556807_*|*_3_*:*_1_*:*_7902650_*|*_5_*:*_1_*:*_56563829408_*|*_6_*:*_1_*:*_0"}], "description": "This ticket was spun off from SERVER-207.  The intention of the ticket is just to create some documentation in the Puppet Server project about the issues discovered with trying to have Puppet Server send reports to a virtual ip address which is load balanced to multiple backend servers having different certificates.  One of the comments from the ticket was cut/pasted below and could provide a lot of the raw material for the new documentation.\n\n--- \n\nOne difference between Puppet Server and the Ruby Puppet master is that Puppet Server's SSL client connections will attempt to resume an SSL session, using the session id provided from the server (PuppetDB, in this case), whereas a Ruby Puppet master will not.\n\nFor the case that a load balancer is sitting between the Puppet master and PuppetDB instances, a client connection directed to a server which has no registered session id for the session that the client is trying to resume, the SSL handshake would need to be renegotiated. My understanding is that the JDK, which underlies the Puppet Server master, added a check for uniqueness of the server certificate during a re-negotation following a session resumption. This check is done as a way to help mitigate the TLS triple handshake attack \u2013 see https://secure-resumption.com. The client connection is aborted if the check fails.\n\nThere appear to be a few options:\n\n1) In order to avoid having the certificate check fail, all end servers could present the same certificate, as suggested in the original description for this ticket.\n\nAs it turns out, it appears to be possible for the server certificates to use certificates which are different but have some matching attributes \u2013 i.e., the ipAddress in the SubjectAltName extension on the certificates, the dNSName in the SubjectAltName extension on the certificates, and/or the subject and issuer on the certificates. See http://hg.openjdk.java.net/bsd-port/bsd-port/jdk/rev/eabde5c42157#l1.186. The approach of having certificates with selectively matched attributes may not be foolproof, though, in that the JDK implementation may strengthen the comparison in a later version to only accept an exact match for the full data in the certificate.\n\n2) To the JAVA_ARGS variable value in the /etc/sysconfig/puppetserver configuration file, add -Djdk.tls.allowUnsafeServerCertChange=true.\n\nThe use of this property is also documented in http://hg.openjdk.java.net/bsd-port/bsd-port/jdk/rev/eabde5c42157#l1.50. While this would appear to allow for the certificate equivalence check to be bypassed entirely, this would also open up the Puppet master more fully to the TLS triple handshake attack. For this reason, this is probably not the best solution.\n\n3) Add the ability via configuration to turn off SSL session caching to the Puppet master client and/or web server running PuppetDB (Jetty).\n\nThis last option would involve new implementation work, nothing that an end user could do without code changes.  Separate tickets have been filed to enable this work:\n\n* TK-124 - Disable SSL session caching in the Jetty server\n* TK-125 - Disable SSL session caching in the clj-http-client library that Puppet Server uses to make its client requests\n* SERVER-216 - Utilize work in TK-125 to allow SSL session caching to be disabled for Puppet Server client requests\n\nWhile this approach would provide mitigation against the triple handshake attack, allow different certificates to be used on each PuppetDB server, and would provide for more backward compatible behavior with the Ruby Puppet master, this approach would have performance tradeoffs. Not having the ability to use session resumption would force a full SSL handshake to occur on each connection for master requests. If the load balancer were aggressively redirecting every request to a different PuppetDB server, a full handshake would inevitably be occurring anyway. If the load balancer were to redirect at least some requests for different connections back to the same server, however, session resumption would otherwise have a performance benefit.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16350", "fixedVersions": ["SERVER 1.0.0"], "id": "16350", "issueType": "Improvement", "key": "SERVER-218", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2014-12-12T17:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document options for SSL renegotiation w/ virtual ips", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "607d67fd7495ff006ad4ade5", "body": "As a workaround it is possible with nginx. At first we need to compile it with \"HttpSetMiscModule\" (http://wiki.nginx.org/HttpSetMiscModule) and use its \"set_escape_uri\" based on $ssl_client_raw_cert. For example it may looks like that:\n{code}\nset_escape_uri $ssl_client_cert_for_puppetserver $ssl_client_raw_cert", "created": "2015-08-14T10:31:00.000000"}, {"author": "557058:b716da7f-f193-47cd-8a12-a09f215fbfe6", "body": "In case it helps someone, a workaround on HAProxy could be something like:\n\n{code}\nhttp-request  set-header X-Client-Cert -----BEGIN\\ CERTIFICATE-----%%0A%[ssl_c_der,base64]%%0A-----END\\ CERTIFICATE-----\\ #\n{code}\n\nTo be added in the frontend section.", "created": "2016-06-09T01:28:00.000000"}, {"author": "557058:02b58dc4-47f4-433d-b80b-c38bc3af9726", "body": "If you really want to use apache, this workaround works for me. It's not pretty, so I don't recommend it if you have the option of using i.e. nginx or haproxy as commented earlier.\n{noformat}\nRequestHeader unset X-Client-Cert\nRequestHeader set X-Client-Cert %{SSL_CLIENT_CERT}s \"expr=%{SSL_CLIENT_CERT} != ''\"\nRequestHeader edit* X-Client-Cert \"BEGIN CERTIFICATE\" \"-begin-\"\nRequestHeader edit* X-Client-Cert \"END CERTIFICATE\" \"-end-\"\nRequestHeader edit* X-Client-Cert \" \" \"%%0A\"\nRequestHeader edit* X-Client-Cert \"-end-\" \"END%%20CERTIFICATE\"\nRequestHeader edit* X-Client-Cert \"-begin-\" \"BEGIN%%20CERTIFICATE\"\n{noformat}\n\nEdit 2016/08/18 to incorporate a different fix for the problem Alan Schwarzenberger identified below (to be able to keep it in puppetlabs-apache apache::vhosts request_headers param)", "created": "2016-06-23T07:03:00.000000"}, {"author": "623c0ef5a1d81f0069d8dfb9", "body": "It appears in my use case (apache 2.4.16 with Puppet Server 2.2.0) that the workaround from [~accountid:557058:02b58dc4-47f4-433d-b80b-c38bc3af9726] is not quite complete. It works once an agent has a certificate, but on an initial connection from a puppet agent sending a CSR, there is of course no certificate yet. It appears that environment variable SSL_CLIENT_CERT is then set to an empty string rather than not being set at all, which results in the X-Client-Cert header being set but empty, rather than not being set at all. This then results in Puppet server giving the error \"No certs found in PEM read from x-client-cert\"\nI wrapped this in an IF statement to get it working\n{code}\n<If \"-n '%{SSL_CLIENT_CERT}'\">\n  RequestHeader unset X-Client-Cert\n  RequestHeader set X-Client-Cert %{SSL_CLIENT_CERT}s\n  RequestHeader edit* X-Client-Cert \"BEGIN CERTIFICATE\" \"-begin-\"\n  RequestHeader edit* X-Client-Cert \"END CERTIFICATE\" \"-end-\"\n  RequestHeader edit* X-Client-Cert \" \" \"%%0A\"\n  RequestHeader edit* X-Client-Cert \"-end-\" \"END%%20CERTIFICATE\"\n  RequestHeader edit* X-Client-Cert \"-begin-\" \"BEGIN%%20CERTIFICATE\"\n</If>\n{code}", "created": "2016-08-17T01:54:00.000000"}], "components": [], "created": "2014-12-02T10:58:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ba53126"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxd8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1146216226_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_62635018280"}], "description": "*Docs impact:* This issue is referenced in the documentation/external_ssl_termination.markdown file. Once resolved, it'll need an update.\n\nPuppet Server is intended to support the ability for the client certificate to be passed into a request to the master via an X- header -- X-Client-Cert -- when {{allow-header-cert-info}} is set to {{true}}.  Puppet Server expects the content in the X-Client-Cert to be a URI-encoded form of the original Base-64 PEM certificate, i.e., with the newline characters from the original certificate replaced with %0A characters.\n\nA VirtualHost configuration in an Apache server, where mod_proxy is used to proxy client requests on to a Puppet master, might inject this header with the following:\n\n{code}\nRequestHeader set X-Client-Cert %{SSL_CLIENT_S_DN}s\n{code}\n\nThis results in the full content of the client certificate being included in the X-Client-Cert header in the request.  Apache, however, does not URI-encode the original content of the certificate.  Instead, the spaces inside of the...\n\n{noformat}-----BEGIN CERTIFICATE-----{noformat}\nand\n{noformat}-----END CERTIFICATE-----{noformat}\n\n... PEM tags are preserved and newline characters are replaced with spaces as well.\n\nPuppet Server uses functionality from the puppetlabs/certificate-authority library to load the certificate into an {{X509Certificate}} object in memory.  This library uses BouncyCastle classes to do the loading work.  The BouncyCastle classes apparently do not understand spaces in the body of the PEM as being equivalent to newline characters.  Any requests routed through Apache which have the X-Client-Cert header appended in the above way will result in the request failing, with the following error being written to the log and returned from the agent request:\n\n{noformat}\nError 400 on SERVER: Unable to parse x-client-cert into certificate: -----END CERTIFICATE not found\n{noformat}\n\nIn order to overcome this problem and not require further changes to be made in the upstream Apache configuration, Puppet Server could be enhanced to handle decoding the Apache spaces format back to a proper PEM format.  This would need to be done in such a way that the URI-encoding method would still be supported, e.g., for non-Apache proxies.  This would arguably be a \"new feature\" for Puppet Server, though, in that if the X-Client-Cert were sent from Apache mod_proxy to a Ruby Puppet master running under Apache/Passenger where no special decoding of the header were provided at the Apache/Passenger layer, the Ruby Puppet master would similarly be unable to handle decoding the certificate and would, therefore, fail the request.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16857", "fixedVersions": [], "id": "16857", "issueType": "New Feature", "key": "SERVER-217", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Cannot decode Apache-formatted X-Client-Cert header", "timeSpent": "PT0S", "updated": "2016-12-09T15:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:caffdbd6-f73d-4ae9-9c82-c4badf061584", "attachments": [], "comments": [{"author": "557058:091495e8-9cec-4527-9fa6-d220c3a9fcb8", "body": "Do we have any plans to move forward with this, or any other solution to the PuppetDB load balancing problem? [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24]?", "created": "2015-04-14T16:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Don't think we have any plans to pull this into a sprint anytime soon.  The only workarounds we have are what are documented in http://docs.puppetlabs.com/puppetserver/1.0/ssl_server_certificate_change_and_virtual_ips.html.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] may have more thoughts on this.", "created": "2015-04-14T16:07:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "Former user I'm not the PO for Puppet Server. Check with [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0].", "created": "2015-04-14T16:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Last I heard, the workarounds had been deemed sufficient... but we can pick this back up if it is escalated / prioritized by CS and product.", "created": "2015-04-15T02:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79] [~accountid:557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213] if we were to implement the proposed fix, how hard would it be to set up an environment that we could use to validate it?\n\ne.g. if we set up a puppet server and an haproxy with two puppetdbs behind it, with the current code, and just ran a load test against that, would we be likely to encounter this error quickly?", "created": "2016-03-09T07:07:00.000000"}, {"author": "557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], It would be pretty easy to create a Vagrant environment for reproduction/validation, but I don't know how hard it would be to reproduce.", "created": "2016-03-09T07:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hmm.  Well, the changes proposed in the tickets related to this are relatively easy to implement and seem like they would be generally valuable, but I'm not sure how we'll know if we've actually fixed the original issue unless we have a way to repro.\n\nWould the vagrant env that you are proposing look basically like what I described?  Is haproxy sufficient for the LB layer or do we have to do something with virtual IPs?", "created": "2016-03-09T07:19:00.000000"}, {"author": "557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213", "body": "I don't see any reason why HAProxy wouldn't work, but [~accountid:557058:8527c9e8-8e3f-451c-b529-f6fe014233ed] or [~accountid:557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79] might know better. By default, we configure HAProxy as a simple TCP load balancer, so the behavior should be close enough to any commercial load balancer we typically encounter.\n\nFor what it's worth, I've had trouble reproducing the issue in the past, but I don't know enough about how puppetserver makes SSL connections to understand why, and I could've just been doing something wrong.", "created": "2016-03-09T07:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "It would be pretty easy to manually reproduce just the behavior of seeing whether or not the server is reusing SSL session ids between requests in order to conditionally bypass session renegotiation.  To do that, we could just have a client make multiple requests to the same server - across different socket connections - while capturing a network trace (.pcap file).  We could see from the packets that with session reuse intended to be \"enabled\" - as it is today - that renegotiation is skipped for the second request whereas with session reuse intended to be \"disabled\" - new feature for this work - that renegotiation for the second request is not skipped.\n\nI agree with where [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] is going, however, that doing this with a more full blown load balancing use case would be more convincing - although with such a setup we could also do some network traces to confirm when / whether session reuse is occurring as requests are load balanced.", "created": "2016-03-09T08:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "As it seems like there is renewed interest for implementing a way to disable session reuse from the client side (this ticket), I wonder if we should also - in the same timeframe - consider doing the work to allow for a configurable way to disable session reuse from the server side.  TK-124 covers the server-side work.\n\nFor setups where just the PuppetDB server were behind a load balancer, disabling session reuse on the PuppetDB Jetty servers would allow for any clients - Puppet Server masters, NC services, etc. - of the PuppetDB servers to not unintentionally encounter the renegotiation exceptions that led to these tickets being filed.", "created": "2016-03-09T08:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] good point", "created": "2016-03-09T09:23:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "TK-124 is resolved and we hope that it fixes this issue as well.", "created": "2016-04-08T11:23:00.000000"}], "components": [], "created": "2014-12-02T10:26:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@554d8da2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5ha7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1148086608_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_58668981891_*|*_10006_*:*_1_*:*_2656054045_*|*_10005_*:*_1_*:*_38790880949"}], "description": "By default, any SSL handshake completed by an Puppet Server HTTP client request where the server returns an SSL session id results in the client attempting to resume the SSL session for a request made on a new connection.  In some scenarios it may be desirable to not have the client try to resume SSL sessions, e.g., to protect the client from an SSL renegotation attack until a proper remediation path can be found or when multiple servers having different certificates are hidden behind a load balanced virtual ip address and session reuse is not desirable / practical. See SERVER-207 for some discussion on the issues session caching presents around load-balanced virtual ip addresses.\n\nIn order to disable session caching, a new \"allow session creation\" http-client option could be exposed alongside the other SSL-related options that Puppet Server uses, ssl-protocols and cipher-suites. For compatibility, it would probably be best to allow SSL sessions to be created/resumed by default so that clients can take advantage of the performance benefits of renegotiation.\n\nThe new option would need to be read by the Ruby layer http_client.rb code in Puppet Server in the process of setting up a request and passed through to the underlying clj-http-client library.  This work would be dependent upon a new feature in the clj-http-client library which would expose the setting.  The clj-http-client work is documented in TK-125.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16716", "fixedVersions": [], "id": "16716", "issueType": "New Feature", "key": "SERVER-216", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Fix", "resolutionDate": "2018-02-16T11:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow SSL session use to be disabled for client connections", "timeSpent": "PT0S", "updated": "2018-02-16T11:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Puppet Server could use the {{hostcrl}} or {{cacrl}} setting to derive the location of the crl.  Might make most sense for it to use {{hostcrl}} as that's what an agent would use when it makes HTTP client requests.  {{hostcrl}} doesn't get initialized by default in Puppet Server.  The work in SERVER-85 would ensure that the {{hostcrl}} is synched up from {{cacrl}} on each bootup.  For this reason, it may make sense to wait on SERVER-85 to go in before this one.", "created": "2014-12-01T14:00:00.000000"}], "components": [], "created": "2014-12-01T13:36:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@270b21e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2124"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z3r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_89759_*|*_3_*:*_1_*:*_19680851201_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_116403849791"}], "description": "Puppet Server does not currently honor the CRL for any HTTP client requests that it makes, e.g, when sending reports to a report processor over HTTPS.  With the work associated with TK-121, it could be enhanced to honor the CRL.", "epicLinkSummary": "Handful or two of improvements to clj-http-client", "estimate": "PT0S", "externalId": "15535", "fixedVersions": [], "id": "15535", "issueType": "New Feature", "key": "SERVER-215", "labels": ["http", "ssl"], "originalEstimate": "PT0S", "parent": "16513", "parentSummary": "Handful or two of improvements to clj-http-client", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2019-03-25T15:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Honor CRL for http-client requests", "timeSpent": "PT0S", "updated": "2019-03-25T15:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623a4a827910a200718ac35d], I'd appreciate your take on this if you have a chance.\n\nLooking back at SERVER-18, I noticed that you included the following in your F5 code example:\n\n{noformat}\nset subject \"/[X509::subject [SSL::cert 0]]\"\n...\nHTTP::header insert \"X-Client-DN\" \"$subject\"\n{noformat}\n\nSince our original implementation in SERVER-18, we discovered that only X-Client-DN header values formatted per RFC 2253 (comma-delimited) could be interpreted by Puppet Server correctly but that X-Client-DN headers values formatted per the OpenSSL format (leading forward slash with forward slash delimiters) would fail to be parsed correctly.\n\nYour code example seems to indicate that you may have been injecting a forward slash to make the value look OpenSSL-like.  Have you been able to get external SSL termination to work with our current Puppet Server implementation for PE 3.7?  If so, you've presumably been able to work around the DN formatting issue?", "created": "2014-12-08T09:49:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Just wanted to add that a user on the Puppet Users mailing list found that NGNX also formats the DN with slashes.", "created": "2014-12-29T12:46:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This is the thread Justin was referring to: https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/puppet-users/-13-AADVhOo/lzm8aMrCKp4J", "created": "2014-12-29T13:12:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "From the aforementioned thread, Kevin DeGraaf was able to work around this with the following NGNX hack:\n\n{quote}\nThanks!  I have successfully worked around SERVER-213 with the following nginx hack:\n{code}\n  if ($ssl_client_s_dn ~* \"^/(CN=.+)$\") {\n    set $ssl_client_s_dn $1", "created": "2015-01-05T12:31:00.000000"}, {"author": "557058:ecdbe9d7-fd31-4136-80ae-15ac851f87fc", "body": "Ran into this while trying to cache file metadata/content with nginx (like I used to do with 3.8, similar to http://puppet-a-day.com/blog/2014/05/20/puppet-caching/ )", "created": "2015-07-28T14:37:00.000000"}, {"author": "623c0ef5a1d81f0069d8dfb9", "body": "For our use case (Puppet server 2.2.0 and Apache 2.4.16) we extracted just the CN part from the Apache environment variable and set that explicitly. However, you must not send an empty CN to Puppet server or you get errors in puppetserver log for every connection that does not present a client certificate (eg unauthenticated endpoints):\n{code}\nRequestHeader set X-Client-DN \"CN=%{SSL_CLIENT_S_DN_CN}e\" env=SSL_CLIENT_S_DN\n{code}\n\nNote also that https://httpd.apache.org/docs/current/mod/mod_ssl.html#ssloptions says:\n{quote}\nLegacyDNStringFormat\nThis option influences how values of the SSL_\\{CLIENT,SERVER}_\\{I,S}_DN variables are formatted. Since version 2.3.11, Apache HTTPD uses a RFC 2253 compatible format by default. This uses commas as delimiters between the attributes, allows the use of non-ASCII characters (which are converted to UTF8), escapes various special characters with backslashes, and sorts the attributes with the \"C\" attribute last.\n\nIf LegacyDNStringFormat is set, the old format will be used which sorts the \"C\" attribute first, uses slashes as separators, and does not handle non-ASCII and special characters in any consistent way.\n{quote}", "created": "2016-08-18T02:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0ef5a1d81f0069d8dfb9] thanks for the extra info!", "created": "2016-08-18T09:15:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] is this completed somehow? You closed it without commentary and we got pings on IRC about it...", "created": "2016-12-09T18:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], sorry about that.  No, the behavior in the issue description has not been addressed, although it does appear from other comments on this ticket that some have found workarounds for at least some environments.  I'll go ahead and re-open this one.  Please let me know if you would like for us to raise the priority of this ticket relative to other work.", "created": "2016-12-12T09:21:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful change, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this change to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T09:45:00.000000"}], "components": [], "created": "2014-12-01T10:09:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2aeba6f3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxcav:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26436203_*|*_4_*:*_1_*:*_9323_*|*_6_*:*_2_*:*_235443126_*|*_10004_*:*_1_*:*_127587839349_*|*_10005_*:*_2_*:*_101454375914"}], "description": "*Docs impact:* This issue is referenced in the documentation/external_ssl_termination.markdown file. Once resolved, it'll need an update.\n\nPuppet Server is intended to support the ability for the client DN to be passed into a request to the master via an X- header, e.g., X-Client-DN, when {{allow-header-cert-info}} is set to {{true}}.\n\nVia the puppetlabs/certificate-authority library, Puppet Server is using a BouncyCastle-based routine to pull the CN value from the DN string.  This BouncyCastle routine works fine so long as the string to decode is compatible with DN formats from RFC 2253, e.g., the value \"myhost\" would be pulled from an original DN of {{CN=myhost, OU=blah}}.  If the DN format follows the custom \"OpenSSL\" style, e.g., {{/CN=myhost/OU=blah}}, however, the BouncyCastle routine will fail to decode the CN.  Puppet Server will then treat the corresponding request as \"unauthenticated\", leading any functionality that the request tries to perform which requires authentication to fail.\n\nWhen a request is routed through an Apache web server mod_proxy, the web server's VirtualHost may inject an {{X-Client-DN}} header like this....\n\n{code}\nRequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e\n{code}\n\nWith this approach, the {{X-Client-DN}} header value sent to Puppet Server master will use the OpenSSL DN style, which leads to the failure above.  The same failure would not occur with a Ruby master being hosted by Apache/Passenger as the Ruby master implementation supports decoding DNs either from RFC 2253 or OpenSSL style formats.\n\nFor backward compatibility with Apache Passenger mod_proxy being able to forward \"authenticated\" requests to a Ruby master, Puppet Server should be enhanced to support decoding the OpenSSL-style DN.\n ", "epicLinkSummary": "Future CA Improvements", "estimate": "PT0S", "externalId": "17277", "fixedVersions": [], "id": "17277", "issueType": "Bug", "key": "SERVER-213", "labels": ["ssl"], "originalEstimate": "PT0S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2022-03-08T09:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Cannot decode OpenSSL-formatted X-Client-DN header", "timeSpent": "PT0S", "updated": "2022-03-08T09:45:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "body": "Ignore my nonsense - I was on an older version than 0.4.0 initially, and then I upgraded and tried again. I thought it was still broken but it had actually changed to a different, unrelated problem which I've fixed, and now everything's fine.\n\nDon't know what workflow you've got going on here so I'll let somebody else resolve this as obsolete or something.", "created": "2014-11-28T10:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ah, ok, so you've got everything working again?  Thanks for letting us know.  I'll close this out, feel free to re-open if there's anything we still need to look into.\n\nThanks!", "created": "2014-12-01T14:05:00.000000"}], "components": [], "created": "2014-11-28T10:37:00.000000", "creator": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4bf649d1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxc2v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_3_*:*_271694123_*|*_6_*:*_1_*:*_0_*|*_10016_*:*_1_*:*_21915"}], "description": "I am currently having issues with anything that uses augeas. I'm sure it used to work so I'm open to it being a mis-setup on my part, but it is fine when run by the old puppet master or by apply.\n\nDebug logs show this a bunch of times\n\n{noformat}\nDebug: Failed to load library 'augeas' for feature 'augeas'\nDebug: Puppet::Type::Augeas::ProviderAugeas: feature augeas is missing\n{noformat}\n\nFollowed by any use of the augeas resource failing.\n\n{noformat}\nNotice: /Stage[main]/Postgresql::Server::Service/Service[postgresqld]: Dependency Augeas[override PGPORT in /etc/sysconfig/pgsql/postgresql] has failures: true\n{noformat}\n\nIs there any way I can dig into why it's failing to load the 'augeas' library? Where's it looking?", "environment": "CentOS 6.6", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16856", "fixedVersions": [], "id": "16856", "issueType": "Bug", "key": "SERVER-212", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "resolution": "Cannot Reproduce", "resolutionDate": "2014-12-01T14:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Augeas feature won't load", "timeSpent": "PT0S", "updated": "2015-01-22T16:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:924371ef-0e52-4449-9aaa-e986910ef8ab", "body": "From the jruby source code:\n\n{quote}\n  \\# Note: MRI's documentation just says that the C stdlib function crypt() is\n  \\# called.\n  \\#\n  \\# I'm not sure if crypt() is guaranteed to produce the same result across\n  \\# different platforms. It seems that there is one standard UNIX implementation\n  \\# of crypt(), but that alternative implementations are possible. See\n  \\# http://www.unix.org.ua/orelly/networking/puis/ch08_06.htm\n{quote}\n\nIt means that the jruby developers have decided to only implement a platform independent \"crypt\" implementing the historical crypt function (which uses DES).", "created": "2014-11-28T00:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "According to the jruby github issue, it looks like they are targeting a fix for this at JRuby 1.7.17.", "created": "2014-12-01T14:11:00.000000"}, {"author": "557058:5001f591-7f1b-4c93-a97a-9e71b49ceb5d", "body": "[JRuby 1.7.17 hit today|http://jruby.org/2014/12/09/jruby-1-7-17.html] and uses the native implementation of crypt(3), like MRI does.", "created": "2014-12-09T12:27:00.000000"}, {"author": "557058:5001f591-7f1b-4c93-a97a-9e71b49ceb5d", "body": "Any chance of this getting into the 1.0 release?  The fix is to update the bundled version of JRuby from 1.7.15 to 1.7.17.", "created": "2014-12-15T13:20:00.000000"}, {"author": "557058:5001f591-7f1b-4c93-a97a-9e71b49ceb5d", "body": "I've written [a pull request|https://github.com/puppetlabs/puppet-server/pull/330] that fixes this.", "created": "2014-12-15T15:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5001f591-7f1b-4c93-a97a-9e71b49ceb5d] thanks for the heads up, and for the PR!  We plan on updating to 1.7.17 very soon, but not for 1.0.  We have to do a lot of memory testing whenever we bump to a new version of JRuby, so it's a pretty risky change to do this late.\n\nWe'll get it in the next point release, though, assuming the memory tests go OK.", "created": "2014-12-15T16:00:00.000000"}, {"author": "557058:5001f591-7f1b-4c93-a97a-9e71b49ceb5d", "body": "Sounds good.  Thanks for the update.", "created": "2014-12-15T16:34:00.000000"}, {"author": "5b9a935aec5ac176314382e2", "body": "I just ran into this myself, looking forward to when this is made in a public release. Will it be coming in 1.0.3?\n\nThank you!", "created": "2015-02-23T17:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The next release in the 1.x series will probably be 1.1, but yes I think we are now leaning towards upgrading the JRuby version in that release.", "created": "2015-02-23T17:53:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Fixed in: 292b8f6: Update JRuby to 1.7.17 and fix String::crypt", "created": "2015-04-07T14:37:00.000000"}], "components": ["Puppet Server"], "created": "2014-11-27T02:18:00.000000", "creator": "557058:924371ef-0e52-4449-9aaa-e986910ef8ab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a22af7b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxc0n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_399636119_*|*_5_*:*_1_*:*_46554886202_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_10959510022"}], "description": "String::crypt permits to calculate the hash of a given password and salt (http://www.ruby-doc.org/core-2.1.5/String.html#method-i-crypt). \nIt's very useful and probably very common when creating users with their password in puppet (usage example: https://gist.github.com/pschyska/26002d5f8ee0da2a9ea0).\n\nHowever  String::crypt is broken in jruby (https://github.com/jruby/jruby/issues/1035), and, consequently, in puppetserver. \n\nA possible work around is to call the equivalent function in java as shown in https://gist.github.com/kakwa/6244f3336b8d65cdbb91", "environment": "* CentOS 7 x86_64\n* puppetserver-0.4.0-1.el7.noarch", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15771", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "15771", "issueType": "Bug", "key": "SERVER-211", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:924371ef-0e52-4449-9aaa-e986910ef8ab", "resolution": "Fixed", "resolutionDate": "2015-04-07T14:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "jruby String::crypt gives the wrong hash ", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "What kind of files are you referring to?  Can you provide some additional repro steps or log messages?", "created": "2014-11-26T14:08:00.000000"}, {"author": "623e797fd32a94006a65d711", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Still investigating it, but it looks like a simpler reproduction case has been found, will update this shortly.", "created": "2014-11-26T19:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e797fd32a94006a65d711] any news?", "created": "2014-12-01T17:15:00.000000"}, {"author": "623e797fd32a94006a65d711", "body": "We now have 2 different ways to reproduce this.\n\nThe first, is when a file that doesn't exist is referenced.\n\n[~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49] was able to find a repro case for this, but we are still waiting on some information from the customer.\n\n{quote}\nI was able to reproduce the given error messages with the following Puppet code.\n{code}\nclass test {\n  file { '/tmp/pe_mcollective':\n    ensure  => directory,\n    source  => 'puppet:///modules/pe_mcollective/plugins',\n    recurse => true,\n  }\n}\n{code}\nApplying the test class to a node generated this error message on the node:\n{noformat}\nError: /Stage[main]/Test/File[/tmp/pe_mcollective]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/pe_mcollective/plugins\n...and these error messages on the master, in puppetserver.log:\n2014-11-26 20:48:35,398 INFO  [puppet-server] Puppet Could not find filesystem info for file 'modules/pe_mcollective/plugins' in environment production\n2014-11-26 20:48:35,399 INFO  [puppet-server] Puppet Not Found: Could not find instances in file_metadata with 'modules/pe_mcollective/plugins'\n2014-11-26 20:48:35,419 INFO  [puppet-server] Puppet Not Found: Could not find file_metadata modules/pe_mcollective/plugins\n{noformat}\nIn short, the error might not be at all related to the presence or absence of the pe_mcollective module, it could be from an unrelated resource in a different class. There should be agent-side errors that correspond to these server-side logs, and seeing them could help identify the problem.\n{quote}\n\nThe other cause we have now seen was reported by [~accountid:557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664].\n\nIn this other ticket, the customer was hitting an open file limit, which then caused files to not be able to be opened and spawned the same sort of gig/minute log output.", "created": "2014-12-04T10:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The open file descriptor limit might be related to TK-101, which is fixed in PE 3.7.1.\n\nIf you're still waiting for some additional info from the customer, we'll wait to hear about that and then try to repro.", "created": "2014-12-04T14:07:00.000000"}, {"author": "623e797fd32a94006a65d711", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] It turns out that this was caused by agents checking in at a rate of 1 every 3 seconds.  Because the console was down ( not yet upgraded) the agents were using a cached catalog and then trying to pluginsync a file that didn't exist.  this was exasperated by each of these requests generating a massive stack trace.\n\nAfter the console was brought up and the classes imported, the stack races stopped, though the logs kept growing at a more reasonable rate.\n\nSo it looks like this issue can be closed, as the actual problem was something different than what I suspected when I opened this. TK-101 was likely coming into play.\n", "created": "2014-12-05T15:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e797fd32a94006a65d711] thanks.  We talked to [~accountid:63d4062f69c7ae3958d276ed] a bit about this", "created": "2014-12-05T17:22:00.000000"}], "components": [], "created": "2014-11-26T13:55:00.000000", "creator": "623e797fd32a94006a65d711", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@316cdd05"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyxbuv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_790538322_*|*_6_*:*_1_*:*_0"}], "description": "The puppet server doesn't seem to have a timeout or retry limit when trying to load a file that doesn't exist.\n\nIn one example, this resulted in the puppetserver trying to load a file nearly once a second (3 different files, a combined total of 49 times in one minute and ten seconds).\n\nThis results in a disk filling up quickly ( was seeing log output of nearly a gig per minute) and the JVM eating up all it's available heap space as the files are repeatedly attempted to be loaded.\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16715", "fixedVersions": [], "id": "16715", "issueType": "Bug", "key": "SERVER-210", "labels": ["support"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e797fd32a94006a65d711", "resolution": "Fixed", "resolutionDate": "2014-12-05T17:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver doesn't have a timeout or limit for loading missing files", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5b61153325ea8f2ca147bd04", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5b61153325ea8f2ca147bd04] can you provide a bit more info about what information you're losing and what kinds of problems that is causing for you?  I believe that our logging setup should be writing stdout/stderr to the puppetserver-daemon.log file, is that not sufficient?  Do you just need a way to be able to run the server in the foreground?", "created": "2014-11-24T17:29:00.000000"}, {"author": "5b61153325ea8f2ca147bd04", "body": "Sorry about not giving more details up-front.\n\nWhat prompted me to create this ticket was that (on Debian Wheezy) I installed puppetserver, ran a \"service puppetserver start\":\n{code}\nroot@debian7:~# service puppetserver start\nroot@debian7:~# echo $?\n0\nroot@debian7:~# service puppetserver status\n[FAIL] puppetserver is not running ... failed!\nroot@debian7:~# service puppetserver stop\nroot@debian7:~# echo $?\n0\n{code}\n\nBy contrast, consider a bad configuration for the traditional puppet master:\n{code}\nroot@debian7:~# service puppetmaster start\n[FAIL] Starting puppet master failed!\nroot@debian7:~# echo $?\n1\n{code}\n\nNo output, exit code 0, indicating success. I eventually looked in the log file and found that the issue was trivial (insufficient memory) but the way all other services I use behave is that the sorts of errors that prevent during a failed attempt go to the console and the service fails with a non-zero exit code.\n\nOne use case where this comes in is when I need to test a change that requires the service to be restarted. I'll test by running something like \"service puppetserver restart && puppet agent --test\". With a non-zero exit code and non-redirected stderr, I immediately get the appropriate feedback.\n\nStarting and stopping the service provides no usable feedback, because the textual and exit code output is the same whether the service successfully starts/stops. Every time I start or stop the puppetserver process, I have to take some additional action to check whether it actually happened.\n\nNot having correct init script exit codes has downstream effects when I manage the process using puppet, because the puppet run finishes successfully whether the puppetserver service actually restarted or not.\n\nI should have written the initial issue report more from the perspective of what problems I was having, rather than describing a solution. I'm sure there are many ways to solve it, and the question of running puppetmaster foregrounded is a separate topic.\n\nI hope you don't mind - I've renamed the issue to reflect the actual problems rather than my suggested solution. Please let me know if this is unclear or if I can provide more information.", "created": "2014-12-01T22:48:00.000000"}, {"author": "5b61153325ea8f2ca147bd04", "body": "it looks like the linked ezbake issue will probably resolve the exit code issue, and possibly the general stdout status messages, but won't provide information about what actually failed. One (really terrible) hack I've played with for this is to start a \"tail -f -n0 /var/log/puppetserver/* &\", at the beginning of the start function in the init script, capture the pid of the tail into a variable from $!, then kill the tail process after the netstat check determines that the service is up and running. If it was restricted to just tailing puppetserver-daemon.log it'd at least report basic java errors like insufficient memory.\n\nSomething like:\n{code}\ndo_start()\n{\n    tail -f -n0 /var/log/puppetserver/* &\n    tailpid=$!\n\n    start-stop-daemon --start $EXTRA_ARGS --quiet --pidfile $PIDFILE --chdir $INSTALL_DIR --exec $JAVA_BIN \\\n        --startas /bin/bash -- -c \"exec $EXEC >> /var/log/puppetserver/puppetserver-daemon.log 2>&1\"\n    retval=$?\n\n    if [ \"$retval\" -ne 0 ] \\\n        || ! wait_for_pidfile $PIDFILE 5 \\\n        || ! wait_for_app $(cat $PIDFILE) $START_TIMEOUT ", "created": "2014-12-01T23:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5b61153325ea8f2ca147bd04] What version are you running?  OSS 0.4.0?  We did make some changes in TK-78 that should be at least a slight improvement, and those are available in our current SNAPSHOT builds, PE 3.7.1, and will be in the next OSS release.  Would be interested to hear how close that would come to addressing your use case, though we are definitely considering additional changes/improvements on this front.\n\n[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] you may be interested in that example code ^^", "created": "2014-12-02T10:11:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:5b61153325ea8f2ca147bd04] In the example of MRI puppet master you showed there is no verbose error output and I'm not sure I've ever noticed the kind of verbose error output on service start that we'd get from the tail command in your example script. Many init scripts will include a useful one-line error/warning message after doing some kind of pre/post check to validate service health.\n\nAfter looking around at some other Debian init scripts on my local machine, I think one suitable health check might look something like the following psuedocode:\n{code}\n# pre service start\nDAEMON_LOG_SIZE=$(stat --printf=\"%s\" /var/log/<project-name>/<project-name>-daemon.log)\n# do service start stuff, check for pidfile, wait for app to listen on some tcp ports\nNEW_DAEMON_LOG_SIZE=$(stat --printf=\"%s\" /var/log/<project-name>/<project-name>-daemon.log)\nif [ $(($NEW_DAEMON_LOG_SIZE>$DAEMON_LOG_SIZE)) -eq 1] ", "created": "2014-12-02T11:14:00.000000"}, {"author": "5b61153325ea8f2ca147bd04", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I am indeed running OSS 0.4.0. TK-78's changes look interesting. I'll have to see how it works out in the OSS release - what's driving my interest in this is trying to add puppetserver support to [puppet-puppet|https://github.com/puppetlabs-operations/puppet-puppet].\n\nAs a side note, elasticsearch is an example of another jruby app that basically has this worked out. I'm just mentioning it because this exact issue is relatively common in java apps altogether.\n\nI'll make a PR against TK if I come up with a better option in the meantime. I really appreciate your effort on improving init script user experience.", "created": "2014-12-02T11:23:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:5b61153325ea8f2ca147bd04] Hey, thanks for the elasticsearch heads up! I am taking a look at their init script now and think following their example may be quite helpful.", "created": "2014-12-02T11:28:00.000000"}, {"author": "5b61153325ea8f2ca147bd04", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] I agree that the tail example is more verbose than would be expected", "created": "2014-12-02T13:11:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "I think the important thing about elasticsearch isn't necessarily whether or not it's JRuby, but the fact that it runs as a java process. I filed EZ-24 to indicate that someone in the future should probably research elasticsearch and other java daemons to come up with a list of improvements and best practices for how to proceed with ezbake apps in the future.", "created": "2014-12-02T13:36:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "I couldn't find a similar bug for EL, but the EL scripts exit 0 when the thing fails, which is also pretty terrible:\n\n{quote}\n    [root@acceptancepuppetserverdev puppetserver]# service puppetserver start\n    Starting puppetserver:                                     [  OK  ]\n    [root@acceptancepuppetserverdev puppetserver]# echo $?     [FAILED]\n    0\n{quote}\n\nThere's some shell formatting gone awry there too", "created": "2015-06-05T07:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4] any thoughts?", "created": "2015-06-05T11:27:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:5b1e529cba383e0814003fb3] What version of puppetserver is that from?", "created": "2015-06-05T14:23:00.000000"}, {"author": "5b1e529cba383e0814003fb3", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] 1.0.8 and 2.1.0 (just for fun I tried it on a later version)\n\n[root@acceptancebuildserver puppet]# service puppetserver restart\nStopping puppetserver:                                     [  OK  ]\nStarting puppetserver:                                     [  OK  ]\n[root@acceptancebuildserver puppet]# echo $?               [FAILED]\n0\n[root@acceptancebuildserver puppet]# rpm -qa | grep puppet\npuppet-agent-1.1.0-1.el6.x86_64\npuppetserver-2.1.0-1.el6.noarch\n", "created": "2015-06-08T02:48:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Service scripts have been significantly reworked since the time we last discussed this issue.  There certainly may still be some issues with them at this point, but it would seem best to submit new tickets describing the current behavior.  Closing this ticket out for now...", "created": "2016-12-09T15:56:00.000000"}], "components": ["Puppet Server"], "created": "2014-11-23T16:22:00.000000", "creator": "5b61153325ea8f2ca147bd04", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@106c11da"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypj9z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1286169139_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_62635697116_*|*_10006_*:*_1_*:*_617376244"}], "description": "The current ezbake init script for Debian has to use the --background flag on start-stop-daemon because the puppetserver can't natively daemonize and run backgrounded. Consequently, the start-stop-daemon --background flag gets used to fork it into background, but that causes return codes and error messages to be lost / hidden from stdout/stderr.\n\nI also created https://puppet.atlassian.net/browse/EZ-22 to track this in ezbake because I'm not sure where would be the right place to fix it.\n\nThe behavior I'd expect would be something akin to the current puppet master command, ideally with options like the --no-daemonize option puppet master currently has.\n\nI realize that this isn't a straightforward problem to fix and is common to many (most?) java applications.", "environment": "Debian Wheezy", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15770", "fixedVersions": [], "id": "15770", "issueType": "Improvement", "key": "SERVER-209", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b61153325ea8f2ca147bd04", "resolution": "Incomplete", "resolutionDate": "2016-12-09T15:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver init scripts lack error messages and non-zero exit codes", "timeSpent": "PT0S", "updated": "2016-12-09T15:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "fine w/me", "created": "2014-11-21T10:26:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I have no objection except that I have more to validate than I have time and resources.  So long as I have help validating, I'm good with including this in PE 3.7.1/Server 1.0.0", "created": "2014-11-21T10:36:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "I removed the puppet-admin section from pe-puppet-server.conf and got the following error in the log:\n\n{code}java.lang.IllegalArgumentException: 'puppet admin' section required but not found in configuration settings{code}\n\nLooks good.", "created": "2014-12-01T16:21:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}], "components": [], "created": "2014-11-21T10:21:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d8bb699"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyphav:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1369141_*|*_3_*:*_1_*:*_4775296_*|*_10009_*:*_1_*:*_879441004_*|*_5_*:*_1_*:*_1407370055_*|*_6_*:*_1_*:*_0"}], "description": "If the {{puppet-admin}} section is missing from the Trapperkeeper-level service configuration at startup, the service fails to start and the master log displays an ugly-looking error message:\n\n{noformat}\n2014-11-20 16:42:59,833 INFO  [p.s.p.puppet-admin-service] Starting Puppet Admin web app\n2014-11-20 16:42:59,842 ERROR [p.t.internal] Error during service init!!!\nclojure.lang.ExceptionInfo: Output of config->puppet-admin-settings does not match schema: (not (map? nil))\n    at puppetlabs.services.puppet_admin.puppet_admin_core$eval13223$config__GT_puppet_admin_settings__13224.invoke(puppet_admin_core.clj:58) ~[na:na]\n{noformat}\n\nI think the error message should at least be improved so that the user has a better indication about what they would need to do to correct this situation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15279", "fixedVersions": ["SERVER 1.0.0"], "id": "15279", "issueType": "Improvement", "key": "SERVER-208", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2014-12-01T16:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Improve error message when puppet-admin section missing from TK configuration", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This somewhat recently introduced JDK system property -- {{jdk.tls.allowUnsafeServerCertChange}} -- looks like it might offer a way for users who see this to overcome the problem.  See http://hg.openjdk.java.net/bsd-port/bsd-port/jdk/rev/eabde5c42157.  We could try setting this property to false in puppet-server's {{JAVA_ARGS}} at daemon startup and see if that helps.  If that works, we could then consider documenting that for other users.", "created": "2014-11-21T09:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:63d40628f6e1b543161789a7] have you seen anything like this before?  Or would you have a couple of minutes to chat about it sometime soon?\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] let's try to remember to chat about this in standup this week.", "created": "2014-11-24T17:22:00.000000"}, {"author": "557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79", "body": "This is also causing issues for scaling/HA with more than one PuppetDB behind a load balancer.\n\nI am at a customer that would like this, but we are reverting to active/passive until this is fixed.  Having said that we did put the extra argument of {{-Djdk.tls.allowUnsafeServerCertChange=true}} in /etc/sysconfig/pe-puppetserver and we have not experienced the issue since then (although it has not been a large amount of time).\n\nWe will give further info if we find it does fail\n", "created": "2014-11-26T21:27:00.000000"}, {"author": "557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79", "body": "[~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] This ^^ will cause issues with scaling PE3.7\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Could you please explain to me/us what is actually causing this and how it actually occurs as it appears random and I am confused at what point this is happened.", "created": "2014-11-27T01:25:00.000000"}, {"author": "557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79", "body": "We decided to remove the JAVA_ARG and do something different.  We created a certificate for pe-internal-puppetdb with dns alt names of the VIP.\n{{puppet certificate generate --ca-location local --dns-alt-names puppet,puppet.puppetlabs.vm pe-internal-puppetdb}}\n\nWe then put the certs/keys on the PuppetDB servers (via a module) and then change the {{$certname}} to {{pe-internal-puppetdb}}\n\nThis has appeared to work well.  Our PuppetDBs still have a separate cert for the agent.", "created": "2014-11-27T21:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79] So, the change that probably introduced this is simply moving from Passenger to Puppet Server.  Puppet Server uses a different (java-based) HTTP client to connect to PuppetDB, as opposed to the MRI Ruby http client that would have been used under Passenger.\n\nMy guess is that the \"unsafe server cert change\" that is happening behind the scenes would have been happening just as frequently before the switch from Passenger to Puppet Server, but that the Java HTTP client is being more strict about it than the Ruby client was.\n\nMy guess at the moment is that this is going to be something we end up having to solve with documentation, one way or the other... either by documenting the JVM arg or by documenting the certificate solution that you came up with.  It's possible that we could work either of those things into the PE installer modules if we decided one of them was the right way to go.\n\nI believe that [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] may have some additional ideas on this?", "created": "2014-12-01T14:16:00.000000"}, {"author": "557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79", "body": "Thanks [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]\n\nI don't mind the workaround we used at the customer by having a common cert for PuppetDB instances (the agents have unique certs still).  We do this for some MCollective certs already.", "created": "2014-12-01T14:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "One difference between Puppet Server and the Ruby Puppet master is that Puppet Server's SSL client connections will attempt to resume an SSL session, using the session id provided from the server (PuppetDB, in this case), whereas a Ruby Puppet master will not.\n\nFor the case that a load balancer is sitting between the Puppet master and PuppetDB instances, a client connection directed to a server which has no registered session id for the session that the client is trying to resume, the SSL handshake would need to be renegotiated.  My understanding is that the JDK, which underlies the Puppet Server master, added a check for uniqueness of the server certificate during a re-negotation following a session resumption.  This check is done as a way to help mitigate the TLS triple handshake attack -- see https://secure-resumption.com.  The client connection is aborted if the check fails.\n\nThere appear to be a few options:\n\n1) In order to avoid having the certificate check fail, all end servers could present the same certificate, as suggested in the original description for this ticket.\n\nAs it turns out, it appears to be possible for the server certificates to use certificates which are different but have some matching attributes -- i.e., the ipAddress in the SubjectAltName extension on the certificates, the dNSName in the SubjectAltName extension on the certificates, and/or the subject and issuer on the certificates.  See http://hg.openjdk.java.net/bsd-port/bsd-port/jdk/rev/eabde5c42157#l1.186.  The approach of having certificates with selectively matched attributes may not be foolproof, though, in that the JDK implementation may strengthen the comparison in a later version to only accept an exact match for the full data in the certificate.\n\n2) To the {{JAVA_ARGS}} variable value in the {{/etc/sysconfig/puppetserver}} configuration file, add {{-Djdk.tls.allowUnsafeServerCertChange=true}}.\n\nThe use of this property is also documented in http://hg.openjdk.java.net/bsd-port/bsd-port/jdk/rev/eabde5c42157#l1.50.  While this would appear to allow for the certificate equivalence check to be bypassed entirely, this would also open up the Puppet master more fully to the TLS triple handshake attack.  For this reason, this is probably not the best solution.\n\n3) Add the ability via configuration to turn off SSL session caching to the Puppet master client and/or web server running PuppetDB (Jetty).\n\nThis last option would involve new implementation work, nothing that an end user could do without code changes.  I'll be filing new JIRA tickets to document these and will attach those numbers here.  While this approach would provide mitigation against the triple handshake attack, allow different certificates to be used on each PuppetDB server, and would provide for more backward compatible behavior with the Ruby Puppet master, this approach would have performance tradeoffs.  Not having the ability to use session resumption would force a full SSL handshake to occur on each connection for master requests.  If the load balancer were aggressively redirecting every request to a different PuppetDB server, a full handshake would inevitably be occurring anyway.  If the load balancer were to redirect at least some requests for different connections back to the same server, however, session resumption would otherwise have a performance benefit.\n\nPlease respond with any additional questions or comments you may have on this one.\n", "created": "2014-12-01T18:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Separate tickets have been filed to allow for SSL session caching to be disabled by configuration:\n\n* TK-124 - Disable SSL session caching in the Jetty server\n* TK-125 - Disable SSL session caching in the clj-http-client library that Puppet Server uses to make its client requests\n* SERVER-216 - Utilize work in TK-125 to allow SSL session caching to be disabled for Puppet Server client requests\n\nAlso, SERVER-218 was filed to cover adding some documentation to the Puppet Server project about the available options for users to handle this issue.", "created": "2014-12-02T11:32:00.000000"}, {"author": "557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] yes, happy", "created": "2014-12-02T12:57:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] [~accountid:557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79] so the current recommended solution is to use the same cert for all puppetdbs behind a load balancer correct?  \n\n1. On the master, generate pe-internal-puppetdb certificate with appropriate dns_alt_names for your puppetdb nodes \n2.  Make sure to sign the above cert\n3.  Copy the private key and cert for pe-internal-puppetdb to each puppetdb node into $confdir/ssl/{private_keys, certs}\n4. /opt/puppet/sbin/puppetdb-ssl-setup on each puppetdb node\n\nDo I have that right?", "created": "2014-12-04T17:04:00.000000"}, {"author": "557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] That is the method I used for the last consulting job.  The customer was happy with this result as it did not present a security concern in their environment", "created": "2014-12-04T17:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], I would agree with [~accountid:557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79] on this one.  Having the PuppetDB servers all use the same private key and cert seems preferrable to the option of enabling the \"allowUnsafeServerCertChange\" system property because the latter seems to carry greater security risk.", "created": "2014-12-04T17:12:00.000000"}, {"author": "623c12047910a200718b9434", "body": "Just need to remember that if you use a nice name like \"pe-internal-puppetdb\", that you add your load balancer address(s) as a DNS alt name(s).", "created": "2014-12-05T15:15:00.000000"}, {"author": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100], [~accountid:557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79] for this step \"On the master, generate pe-internal-puppetdb certificate with appropriate dns_alt_names for your puppetdb nodes\" they're just generating a new cert? is there a specific command they need to run? Thanks. ", "created": "2014-12-15T10:33:00.000000"}, {"author": "557058:091495e8-9cec-4527-9fa6-d220c3a9fcb8", "body": "Not sure if this is useful to people or not, but I wrote a small module to manage the shared cert generation while this remains an issue: https://github.com/pizzaops/pizzaops-puppetdb_shared_cert", "created": "2015-01-12T20:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] I'm pretty sure this is effectively a docs change... [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]?", "created": "2015-01-14T17:32:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "[~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b]\u00a0Reading more into this,\u00a0[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\u00a0pointed something out but which didn't seem to ever be followed up on but might be an\u00a0_actual_ solution for load balancing PuppetDB (I assert that a shared certificate is a workaround, not a solution).\n\nThe [{{isIdentityEquivalent()}}|http://hg.openjdk.java.net/bsd-port/bsd-port/jdk/rev/eabde5c42157#l1.175] check, on the face of it, seems to equate subject alternative name (dns alt name) equivalence as acceptable certificate equivalence. If that's right, the answer to load balancing PuppetDB might be as simple as:\n{quote}Make sure the PuppetDB certs all have the same dns-alt-name(s). The load balanced name should be one of (or perhaps the only) subject alternative name.\n{quote}\n\u00a0Am I reading that right?\n\nThe docs mention this as a side note but seem to discourage it. [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], what makes us think subjectAlternativeName may be at some future point eliminated as acceptable equivalence?\u00a0", "created": "2018-02-16T10:14:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "If having separate certs that share the same alt names works then that seems like the preferred solution to me.  I was under the impression that it didn't work.  ", "created": "2018-02-16T11:07:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Seems like having a shared alt name would already be a requirement for a load balancer, no?", "created": "2018-02-20T10:01:00.000000"}], "components": ["Puppet Server"], "created": "2014-11-21T06:49:00.000000", "creator": "623c0c4ba2f6400069eb781b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50eb4d9b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypj9b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_1505431336_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_605185217"}], "description": "I have two puppetdb servers behind a VIP.  Puppetserver currently requires them to have the \"same\" ssl cert in order to not get this error.\n\n2014-11-20 22:04:03,392 ERROR [c.p.h.c.SyncHttpClient] Error executing http request\njavax.net.ssl.SSLHandshakeException: server certificate change is restrictedduring renegotiation\n        at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1300) ~[na:1.7.0_71]\n        at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:513) ~[na:1.7.0_71]\n        at sun.security.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1180) ~[na:1.7.0_71]\n        at sun.security.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1152) ~[na:1.7.0_71]\n        at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:469) ~[na:1.7.0_71]\n        at org.apache.http.nio.reactor.ssl.SSLIOSession.doWrap(SSLIOSession.java:220) ~[puppet-server-release.jar:na]\n        at org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:254) ~[puppet-server-release.jar:na]\n        at org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSession.java:391) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:119) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:159) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:338) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105) ~[puppet-server-release.jar:na]\n        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:584) ~[puppet-server-release.jar:na]\n        at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_71]", "environment": "RHEL 7, RHEL 6", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17489", "fixedVersions": [], "id": "17489", "issueType": "Bug", "key": "SERVER-207", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0c4ba2f6400069eb781b", "resolution": "Fixed", "resolutionDate": "2014-12-15T17:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver does not handle ssl renegotiation to different puppetdb servers behind a vip", "timeSpent": "PT0S", "updated": "2018-02-20T10:01:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "Is there any information about why we need to clean up a client after the scripting container is terminated?  Is this something specific to the puppetserver architecture?\n\nI ask because in the previous PE architecture, and many common HTTP application architectures, this isn't necessary in many cases.  For example, an HTTP client establishes a pipelined connection to an HTTP server layer, that layer pulls a request, stores it in memory, issues the request to a back-end application container, and then buffers the response.\n\nGiven the above architecture, if there are any problems with the back end application container, e.g. it's restarted or killed, then the HTTP server layer simply re-issues the buffered request to another application container.\n\nGiven also that we're looking into setting a maximum time to live for each application container, is our architecture so different that we couldn't do something similar on the robustness of the request / response?  That is, wall off \"clients\" from application containers so that when containers die clients aren't affected and do not need to be cleaned up?", "created": "2015-01-29T14:41:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:623c12b6ee1b5a0070293582] I've talked to [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] about this, and it looks like the Apache HTTP client libraries that we're using don't maintain an internal connection pool, and thus don't handle the lifetime management for us like a lot of other libraries do. As a result, we have to clean the memory up ourselves.", "created": "2015-01-29T14:51:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Talking with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] in person, I learned I didn't understand \"client\" properly.  I thought \"client\" was referring to a client of puppetserver, e.g. puppet agent.\n\nHowever, this ticket refers to the clj-http-client objects that are instantiated and associated with a scripting container.  These objects are used concurrently by a container, but are not cleaned up when the container is terminated.  This is a known memory leak in the master branch, but not in the stable branch.\n\nHope this helps provide a bit more context as to avoid confusion over \"client.\"", "created": "2015-01-29T15:10:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:623c12b6ee1b5a0070293582] and I also talked about the fact that the current implementation on master would allow for a single HTTPClient object to be created and reused within each ScriptingContainer.  It could also be workable to create a single HTTPClient object at Puppet Server service startup and pass a reference to that down into the JRubyPuppet Ruby code, e.g., during master initialization for each container.  The client could then be destroyed at Puppet Server service termination.  If we did that, we wouldn't incur any extra overhead around creating and destroying HTTPClient objects on a per-ScriptingContainer basis and could reduce the amount of overhead - memory, threads, etc. - kept for clients.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I can't remember if we talked about doing this at one point and decided against it.  What do you think?", "created": "2015-01-29T15:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "To do that we would need to feel pretty confident about the thread safety of the client objects.  I don't think it's worth it unless the other solution is going to be difficult to implement.", "created": "2015-01-29T15:31:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] The solution [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and I discussed earlier and that I've started implementing is to convert the @client object (the underlying Java client) in the Client class into a class variable, and expose a method on the Master that calls through to a method in config.rb that calls through to a method on the client that closes the @client object, and we will then clean up that client around the time the ScriptingContainer is going to be terminated.", "created": "2015-01-29T15:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The underlying _CloseableHttpAsyncClient_ objects in the HTTP Apache client library are supposedly thread-safe but I don't think we have any evidence to back that up.  So, yeah, probably best to just go with creating instances per ScriptingContainer for now and ensuring those get cleaned up as the corresponding container is terminated.", "created": "2015-01-29T15:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I mentioned this in the chat room but I don't think the allocations of our HTTP clients in the current code match up with what you guys seem to be describing here.  I suggested that [~accountid:623e7507866b810069e57527] start off by putting a log statement in the constructor of our ruby http client class, wire Puppet Server up to a PuppetDB instance, and see what happens.  I'm pretty sure that our ruby client constructor is being called once per PuppetDB request.  So if we're wanting to optimize the allocations I think we need to make sure we understand that sort of thing first.\n\nThinking about it, It may still be that the best solution is to instantiate a class variable on the ruby http_client class as you're suggesting, and I agree about the part about exposing some sort of \"cleanup\" or \"teardown\" method on the master.\n\nIf our ruby http_client constructor is being called on every PuppetDB request, then we should just keep that in mind in terms of where we are initializing the various state that I see floating around in that class.", "created": "2015-01-29T15:59:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I have confirmed that PuppetDB is making a new client for every request. I did an agent run that made two requests to PuppetDB, and two clients were initialized.", "created": "2015-01-30T12:30:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:623c12b6ee1b5a0070293582]  Please help me get an idea of what the risk level is here, and how I should perform Functional Review.\n", "created": "2015-03-11T16:18:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping [~accountid:623c12b6ee1b5a0070293582]  I need help with this.  I know you are busy.  I can assign risk.  I need to know how to perform Functional Review against this.", "created": "2015-03-12T14:04:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I'm not entirely sure how to functionally review this ticket. The PR did two things: it made all instances of our ruby HttpClient class use the same back-end client, and it cleans up that client when the JRuby pool is flushed and the JRuby instance is cleaned up by calling into a new terminate method.\n\nUnfortunately, there's not really a way into this code from the outside from what I can tell. I think the best way to FR this would be to make some HTTP requests and ensure they're using the same client, and ensuring that client no longer exists once the pool is flushed, but I'm not entirely sure how to do that. Perhaps [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] or [~accountid:623c12b6ee1b5a0070293582] have some ideas?", "created": "2015-03-16T12:55:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Ping @Jeff McCune and @Jeremy Barlow.  Would one of you please comment on this ticket?  What is the severity of the thing we are fixing here?  Should QA perform Functional Review?  If so, how?", "created": "2015-03-25T16:05:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Ooof.  I'm struggling with this one.  It'd be great to have functional review, but I struggle with how to accomplish that goal.\n\nIIRC this is a relatively severe issue in that it could be a memory leak, but I'm not 100% clear on that point.", "created": "2015-03-25T17:02:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Yeah, that's basically the behavior you would see without this work - significant resource leaks.\n\nWithout the fix, if you were to hit the jruby pool flush endpoint repeatedly with curl - https://github.com/puppetlabs/puppet-server/blob/puppet-server-1.0.3/documentation/admin-api/v1/jruby-pool.markdown - you'd probably end up eventually causing puppetserver to blow up with a Java OutOfMemoryError and/or the web server might start failing incoming requests because it has run out of file descriptors to handle them.  I don't really know how many times it would take to cause that.\n\nYou could spot check this by capturing memory snapshots with a tool like JVisualVM or YourKit, thread usage with jstack, and/or file descriptor usage with lsof.  Much of this would likely be redundant with some of the work I did to test this myself but may not hurt to have that checked by someone outside of the engineering team.", "created": "2015-03-25T17:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I should note, too, that the original problem that this ticket addressed has not appeared in any released version of Puppet Server.  The issue was temporarily introduced on the Puppet Server master branch after the work in SERVER-116 had first landed.  I suppose if you were looking for a reference point on how Puppet Server would fail without this fix, you could run Puppet Server from a commit around the time that the PR for SERVER-116 had landed.  Not sure how worthwhile it would be to spend time on that, though.", "created": "2015-03-25T17:22:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "In trying to review this, I followed the process [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] outlined above, but I wasn't able to produce an OutOfMemoryError or see any real differences with and without this fix.\n\nI brought up two identical Ubuntu 12.04 x64 boxes, each with 2G of memory. On one of them, I installed puppetserver 2.0.0-rc4 (which includes this fix). On the other, I installed a package I had built off of stable of puppetserver but with this PR reverted. Once it was installed, I looked at some of the files to make sure that it did indeed not have this fix. I set the heap size for puppet server on each box to 512M. I did not set {{max-active-instances}}, and each of these boxes had 1 CPU, so each used 3 jrubies. On each box, I hit the jruby pool flush endpoint at least 200 times. On the box without the fix, I did not see any OOMEs nor did the web server start failing incoming requests. Using lsof, I did not see any significant differences in file descriptor usage.\n\nIt's entirely possible that I'm not doing something right in trying to review this. However, since we are doing long running memory tests on puppet server with this fix in, since it sounds like Jeremy did some amount of testing like this when reviewing the PR, and since we never actually released any code with this potential bug in it, I'm not sure it's worth it for me to spend much more time trying to functionally review this. [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] does that sound okay with you?\n\n*Update*: I installed PuppetDB on both boxes and enabled report storage. After running Puppet ~300 times I saw the following error on the box without this fix:\n\n{code}\n2015-04-06 14:42:52,668 ERROR [puppet-server] Puppet Report processor failed:\nFailed to submit 'store report' command for precise64-0.localdomain to PuppetDB at precise64-0.localdomain:8081:\norg.apache.http.nio.reactor.IOReactorException: Failure opening selector\n{code}\n\nI did not see any such error on the box with the fix. While Puppet was running on the box without the fix, Puppet Server's memory usage slowly crept up, but it remained completely stable on the box with the fix.", "created": "2015-04-06T14:59:00.000000"}], "components": [], "created": "2014-11-20T17:53:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26add3c9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0pr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2600144824_*|*_1_*:*_1_*:*_343376627_*|*_10007_*:*_1_*:*_586443647_*|*_3_*:*_1_*:*_448838216_*|*_5_*:*_1_*:*_46636996455_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_2248888975_*|*_10004_*:*_1_*:*_12094_*|*_10006_*:*_1_*:*_5597988706"}], "description": "There should be a way to clean up a client after the scripting container with which it is associated is terminated.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15278", "fixedVersions": ["SERVER 2.0.0"], "id": "15278", "issueType": "New Feature", "key": "SERVER-206", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Fixed", "resolutionDate": "2015-04-06T15:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Expose a way to close a client when its scripting container is terminated", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241], [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] - I think we should fix this for PE 3.7.1\n\nAlso, [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - this seems like something you might care about.", "created": "2014-11-19T11:46:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "I agree, this should be fixed for PE 3.7.1", "created": "2014-11-19T11:50:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "!http://upload.wikimedia.org/wikipedia/en/thumb/5/54/Whocalcover.jpg/220px-Whocalcover.jpg!", "created": "2014-11-19T11:53:00.000000"}, {"author": "557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4", "body": "+1 on inclusion in PE 3.7.1 - CC [~accountid:623e7ac51c7f6a00704b2aab] [~accountid:557058:1d244b27-1afc-481c-a463-e4c0cefad02f] [~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c]", "created": "2014-11-19T11:59:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "+1.", "created": "2014-11-19T12:00:00.000000"}, {"author": "557058:1d244b27-1afc-481c-a463-e4c0cefad02f", "body": "+1 for PE 3.7.1. Do we cherry-picking?", "created": "2014-11-19T12:02:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:1d244b27-1afc-481c-a463-e4c0cefad02f] This would be a fix that would land in ezbake, so it would be independent of the server code and not require a change there.", "created": "2014-11-19T12:04:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The description of the --make-pidfile flag is sort of confusing, notably \"place the pid into it just  before executing  the  process\". That doesn't make much sense, so it's unclear at which point in the process this would happen. [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241], it might be worth doing a small amount of polling on `! [ -s $PIDFILE ]` in the debian init script, to ensure it is not empty before reading.\n\n -m, --make-pidfile\n              Used when starting a program that does not create  its  own  pid\n              file.  This  option  will make start-stop-daemon create the file\n              referenced with --pidfile and place the pid into it just  before\n              executing  the  process. Note, the file will not be removed when\n              stopping the program.  NOTE: This feature may not  work  in  all\n              cases.  Most  notably when the program being executed forks from\n              its main process. Because of this, it  is  usually  only  useful\n              when combined with the --background option.", "created": "2014-11-19T12:07:00.000000"}, {"author": "6361cbfc59c794184bcbd33a", "body": "I think it does an exec with a fork, so I think it makes sense to write the pidfile before that. We also pass {{--background}} though, which causes it to fork (and presumably the parent to exit, which is the source of our race condition) then write the pidfile then exec.", "created": "2014-11-19T12:11:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "Implemented a patch that adds a `wait_for_pidfile` function to the ezbake-functions.sh file and calls it from both debian and redhat init scripts.\n\nI included this behavior in the redhat init scripts also because I didn't see any harm and it's not clear to me that the daemon forker in redhat is any more safe against the race condition described in this ticket than debian daemon forker.", "created": "2014-11-19T15:55:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "The linked PR was merged 6 days ago. Is ready for review still the correct state for this issue?", "created": "2014-11-26T09:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] We've been using the \"Functional Review\" column with QA, [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] and others, to track issues that we wanted to do a final functional review on against the PE code complete builds which include the changes.  From that perspective, yeah, I think this one is still in the right state.", "created": "2014-11-26T09:52:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Great, thanks. Do you know who this should this be assigned to for review?", "created": "2014-11-26T09:56:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] Our plan is, for the ones QA hasn't already assigned out to the themselves, to assign our Functional Review ones out within the Green team to validate.  I was thinking we'd do that after the formal PE \"code complete\" has been announced.", "created": "2014-11-26T10:11:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Ah, ok. thanks for the info. I wanted to make sure this issue was in a state that wasn't blocking CC.", "created": "2014-11-26T10:30:00.000000"}, {"author": "557058:1d244b27-1afc-481c-a463-e4c0cefad02f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] This is going into PE 3.7.1. ", "created": "2014-11-26T13:10:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Yes, it is on the list.", "created": "2014-11-26T13:44:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I need assistance with the Functional Review of this ticket.  Please let me know how to go about testing this change.", "created": "2014-12-01T09:46:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] My approach would be to watch the output of \"journalctl -f -u pe-puppetserver\" in one terminal window while restarting the service multiple times in another on the affected platform.\n\n[~accountid:63d4062f69c7ae3958d276ed] Can you let Erik know which platform(s) you observed this failure and how many restarts you think would be sufficient to confirm that the patch which mitigates this behavior is included in PE and actually addresses the problem?", "created": "2014-12-01T11:31:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Reproduced on 3.7.1-rc1-9-gb19f03a on Debian 7.4 by setting pe-puppetserver init file back to previous code:\nBefore above PR:\nif [ \"$retval\" -eq 0 ] && ! wait_for_app $(cat $PIDFILE) $START_TIMEOUT ", "created": "2014-12-03T15:54:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated fix on 3.7.1-rc1-9-gb19f03a on Debian 7.4.  Above reproduced after 5 loops, so I watched the loop run 50 times with out reproduction with the change set the the above PR.\n\nFix Validated.  Closing.", "created": "2014-12-03T16:17:00.000000"}], "components": [], "created": "2014-11-19T11:43:00.000000", "creator": "6361cbfc59c794184bcbd33a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10f13d52"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgbr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_12750221_*|*_1_*:*_1_*:*_22153866_*|*_10007_*:*_1_*:*_67701749_*|*_10009_*:*_1_*:*_1123429540_*|*_6_*:*_1_*:*_0"}], "description": "The init script for puppetserver calls {{wait_for_app $(cat $PIDFILE) $START_TIMEOUT}} to wait until the service is ready before returning.\n\nIt seems that {{start-stop-daemon}} returns before creating the pidfile, which means it's possible that the pidfile will be missed, in which case {{wait_for_app}} will be called with pidfile = timeout, and no timeout. That causes it to wait indefinitely for the wrong process to be ready, which causes the init script to hang.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15534", "fixedVersions": ["SERVER 1.0.0"], "id": "15534", "issueType": "Bug", "key": "SERVER-205", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "6361cbfc59c794184bcbd33a", "resolution": "Fixed", "resolutionDate": "2014-12-03T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "wait_for_app functions occasionally fails to read pidfile on debian and hangs indefinitely", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "On Ubuntu Trusty I ran the following commands and everything looks good\n\n{code}\n$ puppetserver ruby --version\njruby 1.7.15 (1.9.3p392) 2014-09-03 82b5cc3 on OpenJDK 64-Bit Server VM 1.7.0_65-b32 +jit [linux-amd64]\n{code}\n\n{code}\n$ puppetserver ruby\nrequire 'puppet'\nputs \"testing\"\n^D\ntesting\n{code}", "created": "2014-12-15T12:59:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "On Centos6 I ran the following commands and everything's looking good:\n\n{code}\n$ puppetserver ruby --version\njruby 1.7.15 (1.9.3p392) 2014-09-03 82b5cc3 on OpenJDK 64-Bit Server VM 1.7.0_71-mockbuild_2014_10_17_22_23-b00 +jit [linux-amd64]\n{code}\n\n{code}\n$ puppetserver ruby\nrequire 'puppet'\nputs Puppet::PUPPETVERSION\n^D\n3.7.3\n{code}\n", "created": "2014-12-15T14:03:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "On Cent7 I ran the following commands and everything looks good:\n\n{code}\n$ puppetserver ruby --version\njruby 1.7.15 (1.9.3p392) 2014-09-03 82b5cc3 on OpenJDK 64-Bit Server VM 1.7.0_71-mockbuild_2014_10_15_10_02-b00 +jit [linux-amd64]\n{code}\n\n{code}\n$ puppetserver ruby\nrequire 'puppet'\nputs Puppet::PUPPETVERSION\n^D\n3.7.3\n{code}\n", "created": "2014-12-15T14:05:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}], "components": [], "created": "2014-11-18T15:49:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@547d7119"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgaf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_241139691_*|*_1_*:*_2_*:*_35994_*|*_10007_*:*_1_*:*_12756339_*|*_3_*:*_1_*:*_694145722_*|*_10009_*:*_1_*:*_10784257_*|*_5_*:*_1_*:*_205823323_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1367793621"}], "description": "This is split off from SERVER-159, which is just about general-purpose cli tools that might be nice to add... there is some discussion to be had to narrow that down.  But regardless of how that shakes out, we're going to need a 'ruby' subcommand so that people can interact with the embedded jruby interpreter.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15769", "fixedVersions": ["SERVER 1.0.0"], "id": "15769", "issueType": "Task", "key": "SERVER-204", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-15T14:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "'puppetserver ruby' cli tool", "timeSpent": "PT0S", "updated": "2015-01-29T16:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA doesn\u2019t suggest this bug for PE 3.7.1, pending additional conversation.", "created": "2014-11-18T19:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "IMO it would be ill-advised not to include this fix", "created": "2014-11-18T22:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This ticket was about upgrading puppet-server's dependency on clj-http-client from 0.3.1 to 0.4.0.  The clj-http-client 0.4.0 introduces some new functionality, but we're not using that functionality at present.  The work in SERVER-116 would use the new functionality, but that's not in scope for SERVER 1.0.0.\n\nWe did some work for clj-http-client 0.2.8, the version included in PE 3.7.0, to close off a memory leak we were seeing for failed connections.  An ugly implication of the approach used for that fix, though, is that there would be a possibility under heavy server load of memory not being cleaned up fast enough to avoid memory outs.  We don't have an actual test case which proves that out, but the possibility is a bit scary nonetheless.\n\nclj-http-client 0.4.0 reworks that original fix for the memory leak in a much more robust and straightforward way which avoids the possibility of the memory out under heavy load.\n\nIf there is a concern around bandwidth for leak testing around this fix, we could help out with that.  I've already done a ton of that manually with the library.", "created": "2014-11-19T10:46:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Does this change need specific testing my QA?  If so, what is the recommended testing?", "created": "2014-12-01T09:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Since I did the original work for this, I'm thinking it's probably best for someone else to do the review of the work.  \n\nThe primary thing I'd be looking for, though, is to see that we haven't regressed in functionality for cases in which the Puppet Server master is making client connections.  I'd suggest hooking up PuppetDB as a report processor for a master and doing some agent runs against the master.  I'd do some runs where the master is able to successfully connect to PuppetDB and some others where the master fails to connect to PuppetDB, e.g., because PuppetDB is down.  Across these runs, I would look for whether or not any file descriptors have been leaked by the master process, e.g., by running {{lsof -p <pid_of_master_process> | wc -l}} across agent runs and ensuring that the value isn't consistently going up.\n\nI'm comfortable either having QA do the above or leaving this to one of the other engineers on our team if QA doesn't have sufficient bandwidth.", "created": "2014-12-01T09:46:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated on 3.7.1-rc2-1-g49c6a6e with rhel 7.  The value does not consistently go up.  Used suites/pe/tests/023_pe_reports_processor/built-in_report_processors/http_report_processor.rb to setup.  ", "created": "2014-12-04T12:23:00.000000"}], "components": [], "created": "2014-11-17T22:59:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a2389f5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgcn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_68062093_*|*_1_*:*_1_*:*_27887_*|*_10007_*:*_1_*:*_58496742_*|*_3_*:*_1_*:*_1444436_*|*_10009_*:*_1_*:*_269057336_*|*_5_*:*_1_*:*_1033541830_*|*_6_*:*_1_*:*_0"}], "description": "Update Puppet Server to puppetlabs/clj-http-client 0.4.0.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15277", "fixedVersions": ["SERVER 1.0.0"], "id": "15277", "issueType": "Task", "key": "SERVER-203", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2014-12-04T12:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update to clj-http-client 0.4.0", "timeSpent": "PT0S", "updated": "2015-12-31T17:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:29:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9e569ab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx77z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150699152_*|*_6_*:*_1_*:*_0"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%229.9.9%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17488", "fixedVersions": [], "id": "17488", "issueType": "Sub-task", "key": "SERVER-202", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:20:00.000000"}], "components": [], "created": "2014-11-17T18:29:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@275ce2f3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx77r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150699415_*|*_6_*:*_1_*:*_0"}], "description": "Update dujour to notify users to use 9.9.9.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17275", "fixedVersions": [], "id": "17275", "issueType": "Sub-task", "key": "SERVER-201", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update dujour to notify users to use 9.9.9", "timeSpent": "PT0S", "updated": "2014-11-19T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:29:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1466814f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx77j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150707252_*|*_6_*:*_1_*:*_0"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16855", "fixedVersions": [], "id": "16855", "issueType": "Sub-task", "key": "SERVER-200", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:29:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@145f725f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx77b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150705712_*|*_6_*:*_1_*:*_0"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16714", "fixedVersions": [], "id": "16714", "issueType": "Sub-task", "key": "SERVER-199", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:29:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e5c1b7e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx773:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150709550_*|*_6_*:*_1_*:*_0"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16349", "fixedVersions": [], "id": "16349", "issueType": "Sub-task", "key": "SERVER-198", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:20:00.000000"}], "components": [], "created": "2014-11-17T18:29:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ff4dde4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx76v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150708399_*|*_6_*:*_1_*:*_0"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16011", "fixedVersions": [], "id": "16011", "issueType": "Sub-task", "key": "SERVER-197", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2014-11-19T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:29:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1751b90b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx76n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150712972_*|*_6_*:*_1_*:*_0"}], "description": "This should happen Monday-Thursday, before 4pm. We should not be shipping anything after 4:00 PM or on a Friday both for our users, and because shipping takes time.\n\nGet a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15768", "fixedVersions": [], "id": "15768", "issueType": "Sub-task", "key": "SERVER-196", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting (before 4pm)", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:20:00.000000"}], "components": [], "created": "2014-11-17T18:29:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6cddbe8a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx76f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150714831_*|*_6_*:*_1_*:*_0"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15533", "fixedVersions": [], "id": "15533", "issueType": "Sub-task", "key": "SERVER-195", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2014-11-19T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:29:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@321386ed"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx767:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150720809_*|*_6_*:*_1_*:*_0"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15276", "fixedVersions": [], "id": "15276", "issueType": "Sub-task", "key": "SERVER-194", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:20:00.000000"}], "components": [], "created": "2014-11-17T18:28:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d117108"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx75z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150721013_*|*_6_*:*_1_*:*_0"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14958", "fixedVersions": [], "id": "14958", "issueType": "Sub-task", "key": "SERVER-193", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2014-11-19T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:28:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3dd8c5e7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx75r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150728796_*|*_6_*:*_1_*:*_0"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17487", "fixedVersions": [], "id": "17487", "issueType": "Sub-task", "key": "SERVER-192", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:20:00.000000"}], "components": [], "created": "2014-11-17T18:28:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@342f0c0e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx75j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150725052_*|*_6_*:*_1_*:*_0"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17273", "fixedVersions": [], "id": "17273", "issueType": "Sub-task", "key": "SERVER-191", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2014-11-19T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:28:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@297e060d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx75b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150733432_*|*_6_*:*_1_*:*_0"}], "description": "Bump VERSION in lib/SERVER/version.rb or project.clj to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16854", "fixedVersions": [], "id": "16854", "issueType": "Sub-task", "key": "SERVER-190", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:20:00.000000"}], "components": [], "created": "2014-11-17T18:28:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ae0bdaa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx753:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150729597_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release) There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16713", "fixedVersions": [], "id": "16713", "issueType": "Sub-task", "key": "SERVER-189", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2014-11-19T12:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:28:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1ebf447c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx74v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150737901_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release). There is also the [release-inquisition|https://github.com/adrienthebo/release-inquisition], which also helps a lot with this task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16348", "fixedVersions": [], "id": "16348", "issueType": "Sub-task", "key": "SERVER-188", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes.", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:28:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39fef91e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx74n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150740787_*|*_6_*:*_1_*:*_0"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. For Puppet, make sure the shas used to build the MSI are correct. For Puppet-Server, make sure all references to the puppet version are correct.\n\nAll tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%229.9.9%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16010", "fixedVersions": [], "id": "16010", "issueType": "Sub-task", "key": "SERVER-187", "labels": [], "originalEstimate": "PT0S", "parent": "15767", "parentSummary": "Puppet Server 9.9.9 2099-01-01 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2014-11-19T12:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "originally created for testing purposes", "created": "2014-11-19T12:21:00.000000"}], "components": [], "created": "2014-11-17T18:28:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6caa5ea5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx74f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_150784550_*|*_6_*:*_1_*:*_0"}], "description": "Puppet Server 9.9.9 2099-01-01 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15767", "fixedVersions": [], "id": "15767", "issueType": "Task", "key": "SERVER-186", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Fix", "resolutionDate": "2014-11-19T12:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 9.9.9 2099-01-01 Release", "timeSpent": "PT0S", "updated": "2015-12-30T18:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Nothing for test rail here.", "created": "2015-02-12T16:43:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c08e1562ab90069f8aed4] - Do you need a version # for this one?  It was just a reminder for us to create jenkins jobs.", "created": "2015-03-03T13:27:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Nope, all good here. ", "created": "2015-03-03T16:12:00.000000"}], "components": [], "created": "2014-11-17T12:58:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@57f14627"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypq4v:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_17685842_*|*_3_*:*_1_*:*_1249490_*|*_10009_*:*_1_*:*_942173703_*|*_5_*:*_1_*:*_57527074221_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_251415155"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15532", "fixedVersions": ["SERVER 1.y"], "id": "15532", "issueType": "Task", "key": "SERVER-168", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-01T13:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "create jenkins jobs for 'future' branch", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Documentation tickets don't require QA review", "created": "2015-02-12T16:57:00.000000"}], "components": [], "created": "2014-11-17T10:29:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2a2a7de5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyphbb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_49194_*|*_10007_*:*_1_*:*_166691539_*|*_3_*:*_1_*:*_23353920_*|*_5_*:*_1_*:*_2448001158_*|*_6_*:*_1_*:*_0"}], "description": "Document the tracing approach used for investigating PUP-3522 so that others could benefit from a similar approach.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16712", "fixedVersions": ["SERVER 1.0.0"], "id": "16712", "issueType": "Task", "key": "SERVER-167", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2014-11-19T15:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document use of set_trace_func & -Djruby.debug.fullTrace for tracing", "timeSpent": "PT0S", "updated": "2015-02-12T16:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] this is the ticket I was asking about.  If it's done, do you mind closing it out?\n\nthx", "created": "2014-11-14T17:31:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "I've seen this go through CI and I have verified that START_TIMEOUT gets set in the packaged defaults file.", "created": "2014-11-14T17:36:00.000000"}, {"author": "6243977a4fe01d006ba5afc5", "body": "For systemd, the directive 'EnvironmentFile=/etc/sysconfig/puppetserver' pulls in environment variables. The problem is that the variable START_TIMEOUT=\"120\" is not utilized in the unit file. In other words, this environment variable does not effect puppetserver initialization when handled through systemd.\n\nDid we forget to pass this environment variable's value into the TimeoutStartSec directive in the unit file?", "created": "2014-12-17T11:48:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "Looking at the puppetserver.service shipped for RHEL7 it looks like TimeoutStartSec=${START_TIMEOUT} is missing.  I don't see this script in the puppet-server repo, if someone can point me to the repo it's at I'll submit a PR.", "created": "2014-12-27T08:59:00.000000"}, {"author": "557058:f8fa2bbd-948b-435b-bdaf-5c61ec3d476c", "body": "On Centos 7, m3.medium instance startup time is frequently close to (or over) 120s - don't know if updating the default would be a good idea to increase \"just works\".", "created": "2014-12-28T14:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] ping!", "created": "2014-12-31T12:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "IIRC, there were some issues with variable interpolation not working as expected on some OS distributions, so we had gone with hardcoding the value for {{TimeoutStopSec}} in the \"puppetserver.service\" file rather than trying to source it from the {{START_TIMEOUT}} environment variable defined in /etc/sysconfig/puppetserver.\n\nIt appears in the Puppet Server 1.0 release that {{TimeoutStopSec}} is still being hardcoded to 60 rather than 120.  For parity with other distributions, I think bumping it up to 120 would still make sense.  Will defer to [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] and [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241].", "created": "2015-01-05T10:43:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] I think the issue is that we're not setting {{TimeoutStartSec}}, which is the systemd variable that would correspond to the {{START_TIMEOUT}} environment variable. I believe {{TimeoutStopSec}} corresponds to the {{SERVICE_STOP_RETRIES}} environment variable, which is also set to 60.", "created": "2015-01-07T13:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Ah, yes, [~accountid:623e7507866b810069e57527], I think you're right, thanks!  Got my starts and stops mixed up.  ", "created": "2015-01-07T13:55:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Merged into puppetserver/stable as 1907d99b4a34688514c695221a0645b6505fdc5f", "created": "2015-01-13T12:18:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Tested many different failure scenarios.  In most cases puppetserver assumes some defaults and successfully starts.  In each of the below error cases system properly returns a FAIL message and error code. \n\n- out of diskspace \n- missing /etc/puppet/puppetserver/conf.d\n- kill -9 on puppetservers pid before service pe-puppetserver start finishes\n- setting the timeout to 1, systemctl daemon-reload, service pe-puppetserver start.\n\nMarking resolved.\n\n\n", "created": "2015-01-26T14:47:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA Reviewed: Added test case: https://testrail.ops.puppetlabs.net/index.php?/cases/view/62414", "created": "2015-01-26T14:51:00.000000"}], "components": [], "created": "2014-11-13T15:26:00.000000", "creator": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ce25e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp913:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_602600592_*|*_1_*:*_2_*:*_1744938851_*|*_10007_*:*_1_*:*_508162388_*|*_3_*:*_1_*:*_78738888_*|*_10009_*:*_1_*:*_529575664_*|*_5_*:*_2_*:*_55515233685_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_97087075"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16347", "fixedVersions": ["SERVER 1.0.2"], "id": "16347", "issueType": "Improvement", "key": "SERVER-166", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "resolution": "Fixed", "resolutionDate": "2015-01-26T14:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Set START_TIMEOUT to 120 seconds for sysv init scripts and systemd", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "(y) on the overall idea.  Maybe the only thing to consider is whether for the cases that the first request in would need to block on an open network request for the first JRubyPuppet pool instance to be initialized that the initialization wouldn't take so long that the client connection would timeout.  Not sure what the typical client timeouts are - 30s, 60s?", "created": "2014-11-14T10:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I still think a timeout would be better than just a failed connection.", "created": "2014-11-14T10:49:00.000000"}], "components": [], "created": "2014-11-13T12:57:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@544c75d0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3640"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xsv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_360971502_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_65054460583"}], "description": "There should be a way to tweak the code so that we don't need to wait for any JRuby instances to be initialized before we open the Jetty port.\n\nMy belief is that the only reason we have to do this today is because we need to read certain settings from puppet.conf before we can initialize the web server, so if we can just identify exactly what that list of settings is, we should decide whether it would be worthwhile to simply stop supporting those in puppet.conf.\n\nIf we can do that, then Jetty could go ahead and start up and requests could start coming in.  The requests might block on the 'borrow' function when they need a JRuby instance to handle them, but that seems like it'd still be a much, much better UX than having connections just fail.  We could reduce our perceived startup time from 30 seconds plus to something more like 5 seconds, potentially.\n\nMy expectation is that the only settings we're really relying on right now are SSL/CA-related ones, and we've already got it on the roadmap that we are going to stop supporting those from puppet.conf, so hopefully this should be doable.", "epicLinkSummary": "Puppet 5.0 Changes", "estimate": "PT0S", "externalId": "17486", "fixedVersions": ["SERVER 2.y"], "id": "17486", "issueType": "Task", "key": "SERVER-164", "labels": ["startup-time"], "originalEstimate": "PT0S", "parent": "29919", "parentSummary": "Puppet 5.0 Changes", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "don't block Jetty startup on Jruby initialization", "timeSpent": "PT0S", "updated": "2016-12-09T15:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Validated!\n\nI walked through the customer's repro case on 0.3.0 and saw the behavior he/she described.  On 0.4.0, the agent run is successful.\n\n[~accountid:623e797fd32a94006a65d711] - I also walked through your zany lorem-ipsum example - it also works just fine on 0.4.0.", "created": "2014-11-13T16:13:00.000000"}], "components": [], "created": "2014-11-13T10:04:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ea2708f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypq5j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20720_*|*_3_*:*_1_*:*_9688885_*|*_5_*:*_1_*:*_59073269295_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_12508826"}], "description": "There was a support issue raised by a customer in PE-6753.  The issue has to do with the user triggering a call to an external shell command, which in their case returns more than 64k of data.  Linux pipes have a buffer size of 64k of data, so the external process will block waiting for the buffer to clear out if it has more than 64k of output.\n\nWe had a bug in Puppet Server 0.3.0 where we wouldn't start consuming that buffer until the external process exited.  This should be fixed as part of the work done on SERVER-61 which is included in Puppet Server 0.4.0 and will soon be in the PE builds for release in PE 3.7.1.\n\nHowever, we should take the exact repro case described in that support ticket:\n\nhttps://puppet.atlassian.net/browse/PE-6753?focusedCommentId=114224&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-114224\n\nAnd do some manual testing of it against both 0.3.0 and 0.4.0, just to make sure that the fix works properly.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14955", "fixedVersions": [], "id": "14955", "issueType": "Task", "key": "SERVER-162", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-11-13T16:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Validate fix for consuming output of external processes", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "(facepalm) Thanks for the spellcheck, Eric, I'm a dummy :)", "created": "2014-11-13T09:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Should be able to close this now, right?", "created": "2015-05-01T00:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Decided we don't care about the Wolfe \"Principal\" (sic) anymore.  /CC [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0],", "created": "2016-12-09T15:53:00.000000"}], "components": [], "created": "2014-11-12T15:42:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a2e4c4b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywirr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_439649262_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_65052202722"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14953", "fixedVersions": ["SERVER 1.y"], "id": "14953", "issueType": "Task", "key": "SERVER-161", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Apply the Wolfe Principle to puppet-server tests", "timeSpent": "PT0S", "updated": "2016-12-09T15:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "created": "2015-03-31T10:32:00.000000", "name": "31-03-15-pe-puppetserver-daemon.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10790"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The user also suggested that we might want to consider setting this tempdir ourselves as part of our packaging.  Not 100% sure whether that's a good thing to do since there are other things that will get written there, but we should probably at least discuss with [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] et al.", "created": "2014-11-12T14:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f] this has come up several times in the last few days.  What steps would we need to go through to get this documented?\n\n[~accountid:557058:8b2ff34f-4387-4cf0-bf53-9fc1e20bbc79] [~accountid:557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664] this may be the issue that was affecting the customer you brought up today.\n\n[~accountid:557058:92398ea5-3cc0-4fd4-a82c-4f2e77a1440e] [~accountid:557058:ec037472-097e-4a49-8e0a-21f7e497fcb7] this would probably be something worth socializing amongst the support team.", "created": "2014-11-17T18:13:00.000000"}, {"author": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Is this the command you run? `-Djava.io.tmpdir=/etc/puppet/tmp`\n\nAlso is this after installation or during installation? Thanks.", "created": "2014-11-18T08:32:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f] so, it's not a command, it's an argument that we could add to the JVM args list in our packaging.  I don't really think that's a good idea, though, because it'll override the temp dir for the whole process and Puppet writes lots of other temp files too.  [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:63d4062f69c7ae3958d276ed] do you guys have opinions?  [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]?\n\n[~accountid:557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f] I think that the best thing to do is probably just to document it as a known issue, and describe the options that a user can use to workaround it.  Something to the effect of:\n\n{quote}\nIf you see the following error message in the puppet server log:\n\n{code}\nNov 12 17:46:12 fqdn.com java[56495]: Failed to load feature test for posix: can't find user for 0\nNov 12 17:46:12 fqdn.com java[56495]: Cannot run on Microsoft Windows without the win32-process, win32-dir and win32-service gems: Win32API only supported on win32\nNov 12 17:46:12 fqdn.com java[56495]: Puppet::Error: Cannot determine basic system flavour\n{code}\n\nyou should check to see if your temp directory is mounted as 'noexec'.  (This is somewhat common on RHEL7 installations.)  To work around this issue, you can either mount the temp dir without 'noexec', or you can choose a different directory to use as the temp dir for the puppet server process.  If you wish to do the latter, you can add an extra argument to the `$java_args` parameter of the `puppet_enterprise::profile::master` class in the node classifier.  The extra arg would look like this:\n\n{code}\n-Djava.io.tmpdir=/etc/puppet/tmp\n{code}\n\n{quote}", "created": "2014-11-18T10:44:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "That suggestion for the documentation sounds reasonable to me.  For FOSS users, we may also want to document how the {{-Djava.io.tmpdir}} argument can be added to the end of the {{JAVA_ARGS}} setting in the {{/etc/sysconfig/puppetserver}} or {{/etc/default/puppetserver}} file, depending upon their OS distribution.", "created": "2014-11-18T10:59:00.000000"}, {"author": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "body": "Added to the PE 3.7 known issues.", "created": "2014-11-18T11:31:00.000000"}, {"author": "70121:b5fca8eb-4e74-48e7-853d-85a3ce86dbe6", "body": "the PE 3.7 known issues is a bit lacking on documentation for those unfamiliar with puppet-dashboard's JSON syntax, or adding in the parameters.\nAfter much bumbling about and plenty of help from the #puppet irc channel, and successfully breaking my PE server, here is the solution:\n\n1) in dashboard, go to the classification tab\n2) add a new class:  pick \"puppet_enterprise::profile::master\"\n3) After adding the class, add the parameter \"java_args\" from the pulldown list and enter this EXACT VALUE:\n   [ \"Djava.io.tmpdir=/var/tmp\" ]\n4) commit changes\n5) run puppet agent twice\n\nPlease note that if someone foolishly enters \"-Djava.io.tmpdir\" in step3, they'll mess up the contents of /etc/sysconfig/pe-puppetserver, since another dash will ge prepended to that value.\n\nsetting noexec on /tmp has been a recommendation in the DISA-STIG for some time, for what it's worth.  This is probably a more common issue than one would expect.", "created": "2014-12-02T12:25:00.000000"}, {"author": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "body": "Thanks [~accountid:70121:b5fca8eb-4e74-48e7-853d-85a3ce86dbe6]. I will update the known issue with the correct value.", "created": "2014-12-02T12:34:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Marking as QA Reviewed because this is a documentation issue.  Not testing.", "created": "2015-01-29T16:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "In reviewing the notes about this for PE, [~accountid:557058:92398ea5-3cc0-4fd4-a82c-4f2e77a1440e] noted that if the pe-puppetserver service is stopped that the agent run needed to update the {{/etc/sysconfig/pe-puppetserver}} (RedHat-based) or {{/etc/default/pe-puppetserver}} (Debian/Ubuntu-based) with the \"-Djavaio.tmpdir\" argument would not succeed - because the master would not be running for the agent to receive its catalog.\n\nTo work around this in PE, I found that I could just apply the \"-Djava.io.tmpdir\" argument to the file manually in order to get the pe-puppetserver service up and running.  To reproduce this, I did the following on a Debian 7 master:\n\n1) Stopped the pe-puppetserver service and mounted my /tmp directory as noexec.\n\n2) Started the pe-puppetserver service.  The service failed to start and messages like the following appeared in the {{/var/log/pe-puppetserver/puppetserver.log}} file:\n\n{noformat}\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\nCaused by: org.jruby.embed.EvalFailedException: (Error) Cannot determine basic system flavour\n{noformat}\n\n3) Added the \"-Djava.io.tmpdir=/var/tmp\" argument to the end of the {{JAVA_ARGS}} in {{/etc/default/pe-puppetserver}}.  The complete line then looked like:\n\n{noformat}\nJAVA_ARGS=\"-Xms2048m -Xmx2048m -XX:MaxPermSize=256m -Djava.io.tmpdir=/var/tmp\"\n{noformat}\n\nNote that the values for the -Xms, -Xms, and -XX:MaxPermSize setting were preserved from what was originally installed.\n\n4) Via PE console classification, added the same \"java.io.tmpdir\" arg to {{JAVA_ARGS}}.  This was not necessary in order to get the pe-puppetserver service initially running, but I think it is a good idea to do this anyway so that the setting is retained across future updates to the {{/etc/sysconfig|default/pe-puppetserver}} file which are performed via an agent run on the master.  In my case, I did:\n\n4a) Logged into the PE console.\n\n4b) Navigated to Classification -> PE Master -> Classes.\n\n4c) Under \"Class: puppet_enterprise::profile::master\", selected \"java_args\" as the parameter and set the value to:\n\n{noformat}\n[\"Djava.io.tmpdir=/var/tmp\"]\n{noformat}\n\nNote that the brackets and double-quotes here are intentional.\n\n4d) Pressed \"Add parameter\" and  \"Commit 1 change\" buttons.\n\n5) Ran \"service pe-puppetserver start\" from a command shell on the master.\n\npe-puppetserver service started correctly.\n\n6) Ran \"puppet agent -t\" from a command shell on the master.\n\nAgent run succeeded and the {{JAVA_ARGS}} in {{/etc/default/pe-puppetserver}} had the same value as before.\n\n---\n\nAssuming the steps above are necessary / sane, I think it would be good to cover this in the official documentation for PE.  Ping [~accountid:557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f], fyi.\n\n\n\n", "created": "2015-03-02T16:32:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "It's actually a little worse than this. I just debugged an issue in which I discovered that the permissions of {{/tmp}} had to be *exactly* {{1777}}.\n\nWhen the permissions were inadvertently changed to {{755}}, puppetserver blew up hard. But even after reading this ticket and the docs, I didn't catch it, because other scripts in {{/tmp}} executed just fine.\n\nAnd this was a particularly useless stack trace when debugging.", "created": "2015-03-25T13:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] I wonder if what [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] said is what was hitting you the other day?", "created": "2015-03-25T13:32:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Hmmm, yeah, I think whatever Java is using as its tmpdir would need to be writable by the puppet/pe-puppet user in order for JRuby running under puppetserver to do its shared library deployment, so that seems to make sense.", "created": "2015-03-25T13:45:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I don't think so? my /tmp was 777:\n\n{code}\nroot@trusty:~# ls -la / | grep tmp\ndrwxrwxrwt  11 root root  4096 Mar 20 13:28 tmp\nroot@trusty:~#\n{code}", "created": "2015-03-25T13:53:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "I can reproduce the issue still at will if you have ideas for further debugging", "created": "2015-03-25T13:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] can you check and see if you have the package `ruby-ffi` installed?  And if so, try removing it?", "created": "2015-03-31T09:31:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] it isn't installed.\n\nTried again this morning, same failure and errors in logs. I attached the pe-puppetserver-daemon.log file to this ticket if its of any use.\n\n{code}\nroot@trusty:~# apt-cache policy ruby-ffi\nruby-ffi:\n  Installed: (none)\n  Candidate: 1.9.3debian-1ubuntu2\n  Version table:\n     1.9.3debian-1ubuntu2 0\n        500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages\n{code}", "created": "2015-03-31T10:31:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I filed PE-8932 to track my issue specifically.", "created": "2015-03-31T10:40:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "ping [~accountid:557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f] - I think it would be good to include the comment about the need for permissions on the {{/tmp}} directory to be set to 1777 - as [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] mentioned above - in the PE 3.7 release notes.  Maybe somewhere around this section - https://docs.puppetlabs.com/pe/latest/release_notes_known_issues.html#puppet-server-run-issue-when-tmp-directory-mounted-noexec?\n\nfyi, [~accountid:557058:97578a32-3955-4c5c-939e-58a878437b49] had indicated that another customer had run into the same issue, where the directory was not mounted noexec but permissions on the {{/tmp}} directory were insufficient for JRuby to initialize properly.", "created": "2015-04-10T11:36:00.000000"}, {"author": "557058:5e2d4e96-5ea8-42e3-9179-a3afcdccef2f", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] thanks, will do. I meant to do that before, but it looks like it only got added to the open source docs. ", "created": "2015-04-10T12:25:00.000000"}, {"author": "557058:99353691-c8f3-4c51-89d9-230d3b76590e", "body": "So, no plans to fix this?", "created": "2016-10-20T10:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:99353691-c8f3-4c51-89d9-230d3b76590e] we have some other tickets about the possibility of setting up the temp directory for our JVM processes to point to a directory that our packages control.  I know we've been exploring that as an option but am not 100% sure where we left off on it - [~accountid:557058:6fc1f430-f771-4686-a97e-21c5e35f9100] are there some other tickets we should link in to this one?", "created": "2016-10-20T10:29:00.000000"}, {"author": "557058:99353691-c8f3-4c51-89d9-230d3b76590e", "body": "Yeah, I've been looking through all the other tickets as well.\n\nAt the very least, I think the installer should check the mount status of the temp dir (and perms) and blow up with a clear error message.", "created": "2016-10-20T10:33:00.000000"}, {"author": "557058:99353691-c8f3-4c51-89d9-230d3b76590e", "body": "The same applies to the umask issue (eg. https://puppet.atlassian.net/browse/ENTERPRISE-552)", "created": "2016-10-20T10:34:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:99353691-c8f3-4c51-89d9-230d3b76590e] that's a great suggestion re: improving the error message.  Perhaps it would be best for us to track any new comments to that effect on the other ticket (SERVER-1477) since it's still open, and since this ticket is specifically about the documentation aspect.", "created": "2016-10-20T10:36:00.000000"}], "components": ["Puppet Server"], "created": "2014-11-12T14:10:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fa52e34"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypg9z:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_306922_*|*_1_*:*_1_*:*_445164967_*|*_10007_*:*_1_*:*_682585883_*|*_3_*:*_1_*:*_12605158_*|*_5_*:*_1_*:*_56577964041_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1448516171"}], "description": "User couldn't run the Server on RHEL 7.  See their output here: https://gist.github.com/csschwe/cbdd36e27ee708aba441\n\nMessages like the following can be written to the puppetserver-daemon.log file or journal:\n\n{noformat}\nNov 12 17:46:12 fqdn.com java[56495]: Failed to load feature test for posix: can't find user for 0\nNov 12 17:46:12 fqdn.com java[56495]: Cannot run on Microsoft Windows without the win32-process, win32-dir and win32-service gems: Win32API only supported on win32\nNov 12 17:46:12 fqdn.com java[56495]: Puppet::Error: Cannot determine basic system flavour\n{noformat}\n\nTurns out JRuby copies some files into /tmp and then executes from there, but the user had the tmpdir mounted noexec.  The user was able to make the tmpdir exec and things worked.  Also changing the TMPDIR worked, like {{-Djava.io.tmpdir=/etc/puppet/tmp}}.\n\nWe should document this as a known issue.\n\nWe filed a bug against JRuby to improve the message: https://github.com/jruby/jruby/issues/2186\n\n---\n\nUPDATE (May 4, 2015): The \"can't find user for 0\" and related error messages has been found to occur in another case besides that of insufficient permissions being granted to the tmp dir.  In the new case, the failure has been seen specifically on some configurations of Ubuntu and is due to newer versions of JRuby and its underlying dependencies being unable to load the \"libcrypt.so\" library.  This new problem affects Puppet Server 1.0.8 and Puppet Server in PE 3.8.  For more information on the new failure, see SERVER-592. \n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14951", "fixedVersions": ["SERVER 1.0.0"], "id": "14951", "issueType": "Improvement", "key": "SERVER-160", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Done", "resolutionDate": "2014-12-12T13:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Document known issue of \"tmp dir mounted noexec\"", "timeSpent": "PT0S", "updated": "2016-10-20T10:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] - [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and I were discussing this issue this morning and he asked me to ping you on this.\n\nWe were discussing the possibility of adding some additional CLI tools to Puppet Server.  It seems like there is, perhaps, a conversation to be had here ...\n* Do we need and/or want to do this?\n* Are there other tools that we should write, beyond the two that are mentioned in the description?\n* Do we want/need to write them in some uniform way?\n* Are there (additional) API considerations need to taken into account?\n* If we do this, are we signing ourselves up for another maintenance headache, like puppet's existing CLI tools?", "created": "2014-11-12T13:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] thanks for creating this.\n\nThe 'ruby' one seems like a no-brainer, and I think we should just pull it out as a separate ticket and bring it into a sprint before our 1.0.0 release.", "created": "2014-11-12T15:25:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "Yup, this is definitely a conversation I want to have. We need a decent story for adding new CLI functionality (that's not probably Faces, or written in Ruby)", "created": "2014-11-17T10:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "FWIW we already have some existing clojure ones in PuppetDB, and one in Puppet Server.  EZbake now contains scaffolding to make it easy to add additional subcommands to any of our clojure-based server projects.", "created": "2014-11-17T11:03:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Reminder that Andy did a bunch of work on this --\n\nHere's the doc:\n\nhttps://docs.google.com/a/puppetlabs.com/document/d/1ipnIchBsFmISEKlyS_oGXslutnC9m4JJ84zXMgaoqSI/edit\n\nHere's the discussion on puppet-dev:\n\nhttps://groups.google.com/d/topic/puppet-dev/cieBa2yifLs/discussion", "created": "2014-11-17T12:27:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "To Kevin's original points:\n\n1. Yes, we want to do this.\n2. Not sure. The CA stuff is obvious, but not really sure beyond that.\n3. Yes, absolutely. I think the [Subcommand Protocol|https://docs.google.com/a/puppetlabs.com/document/d/1ipnIchBsFmISEKlyS_oGXslutnC9m4JJ84zXMgaoqSI/edit#heading=h.ki5m5ocj8inm] bit from Andy's doc is a great start.\n4. Not sure I understand this one. Which API are you talking about?\n5. Not if we do it right, I don't think.", "created": "2015-01-09T14:03:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "Any idea when you'd need UX input on this?", "created": "2015-01-27T10:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Outside of the design for the CA cli tools, and the recent ruby/irb/gem tools that we added, we don't have any other subcommands on the horizon that I'm aware of.\n\nIf this ticket is to discuss a more general approach for combining various cli commands into a single wrapper, then it'll be up to product to decide where that fits on the roadmap, but nothing like that is scheduled so far, AFAIK.", "created": "2015-01-27T13:42:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "Understood. Might as well turn it into the latter. I'll do so.", "created": "2015-01-27T21:48:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "Ping. This still a thing?", "created": "2015-06-19T00:49:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] Looks like not, I'll close this in favor of PE-8048 and SERVER-349.", "created": "2015-06-19T00:56:00.000000"}], "components": [], "created": "2014-11-12T13:48:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37c06f1e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp6i7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "UX Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623cfc5b01f8660070b787cf"}, {"fieldName": "UX Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Critical"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_455392_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_18871199530"}], "description": "Create additional CLI tools to do the following:\n\n* run the JRuby interpreter that we ship - i.e., an alias for {{java -cp puppet-server-release.jar org.jruby.Main}}\n* flush the environment cache (a more convenient replacement for {{curl}} ing the endpoint added in SERVER-114)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17271", "fixedVersions": ["SERVER 1.y"], "id": "17271", "issueType": "Story", "key": "SERVER-159", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Done", "resolutionDate": "2015-06-19T00:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "additional CLI tools", "timeSpent": "PT0S", "updated": "2015-07-29T16:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "We already have the plumbing in place so this should be really easy to implement.\n\nThe hardest part here would be what to do when an illegal (i.e. too small, too big) value is specified.  We'll certainly get a low-level exception, which may or may not be meaningful to the end-user, so we might consider improving that message in some way.\n\nFor comparison, the Ruby Master doesn't handle this scenario gracefully.  The Master fails to initialize and this is printed: \"Error: Could not prepare for execution: EVP lib\".", "created": "2014-11-11T17:50:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "I've published a PR that aims to fix this ticket:\nhttps://github.com/puppetlabs/puppet-server/pull/388\n\nPlease review and comment,\nBrice", "created": "2015-02-04T08:46:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "We had a long-outstanding PR submitted by the community that was finally updated and mergeable.  We merged it in.\n\nLittle to no engineering time was spent on this ticket during this sprint.", "created": "2015-04-15T13:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c] - just stumbled across this one when looking at our backlog.  Did this one intentionally not carry forward to the current Emerald sprint?  This work has been merged in already so it seems like this should be in the \"Testing\" column in the current Emerald sprint - so that [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] can take a look at it.", "created": "2015-04-29T10:59:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] It was not intentional from my side. Not sure why it did not roll forward. Your suggestion makes sense to me.", "created": "2015-04-29T11:18:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This one's actually been in the stable and master branches of Puppet Server for a while now, with no Jenkins CI test failures resulting from it.  Moving to \"testing\".", "created": "2015-04-29T16:34:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. If we configure an incorrect or out of bound key size, expected behavior is undefined and unknown.\n\n[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Is there not an exception that is thrown saying something about an invalid key size? Granted it's not one we throw, but a much lower-level one.", "created": "2015-05-07T12:11:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] Beats me.  I'll test it and find out.  If I get a sane error message, we're golden.", "created": "2015-05-07T12:31:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "Yes there's a low-level exception that is thrown and to my knowledge it ends up in the log. I'm not sure though that it halts the server startup.", "created": "2015-05-07T12:43:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] From my testing it looks like error messages are being logged and the server is failing to startup when an invalid keylength is used.\n\nIf the keylength is negative, a schema error is thrown complaining that the setting is not an integer. If the keylength is positive and out of range, reasonable errors are thrown. If the value is too low, a message is logged about how the keylength must be at least 512. If the keylength is too large, a message is logged stating so. \n", "created": "2015-05-12T11:35:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] I tested this on CentOS 7 and Debian 7 with Puppet Server 1.9.0-SNAPSHOT and Puppet Server 2.1.0-SNAPSHOT packages that I built from the stable and master branches of Puppet Server, respectively, and have verified that this works.", "created": "2015-05-12T17:11:00.000000"}, {"author": "623e7507866b810069e57527", "body": "Closing this out as it passed FR.", "created": "2015-05-12T17:19:00.000000"}], "components": [], "created": "2014-11-11T17:15:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@253003c8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Most customers will go with the defaults."}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "If we configure an incorrect or out of bound key size, expected behavior is undefined and unknown."}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyov93:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Community did the work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1221936430_*|*_1_*:*_1_*:*_520275376_*|*_5_*:*_1_*:*_1897321787_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1125860185_*|*_10005_*:*_1_*:*_12853360407"}], "description": "The puppet.conf file supports a setting called {{keylength}} which controls the bit length for keys generated for use with SSL certificates:\n\nhttps://docs.puppetlabs.com/references/latest/configuration.html#keylength\n\nWhen generating keys for SSL certificates, the Puppet Server CA always uses 4096 bits, which is the default for the {{keylength}} setting.  For backward compatibility, the Puppet Server CA should make use of the {{keylength}} setting to control the bit length of the keys it generates.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14950", "fixedVersions": ["SERVER 1.1.0", "SERVER 2.1.0"], "id": "14950", "issueType": "Bug", "key": "SERVER-157", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2015-05-12T17:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Utilize keylength puppet conf value for generating SSL cert keys", "timeSpent": "PT0S", "updated": "2015-06-03T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "FWIW the only time this would ever come up is if someone writes a report processor or custom function that chooses to use *Puppet's* HTTP client API in its implementation.  This should generally be considered a worst practice except in the very rare case where you need to use Puppet's certs as part of your HTTPS authentication", "created": "2014-11-11T13:22:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Good point on potentially affected uses.  I had confirmed that these settings were functional in the context of the HTTP report processor.  It appears that some other areas of Puppet code may be honoring these settings outside of this client API, e.g., the package type, although I didn't look very deep into that.  In the latter case, I think Puppet Server may still end up honoring the settings since the HTTP client API back through Puppet Server wouldn't have been used.", "created": "2014-11-11T13:28:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:63d40628f6e1b543161789a7] pointed out that there is a significant possibility that the {{configtimeout}} setting will be broken up into different settings with clearer meanings - e.g., a connection vs. a read timeout.  See PUP-3666.  If we decide we need to preserve this capability in Puppet Server, we may want to split the timeout settings off into a new Puppet Server ticket that tracks the core Ruby Puppet one.", "created": "2014-11-12T16:34:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The https://docs.puppetlabs.com/references/latest/configuration.html documents a couple of other proxy settings -- {{http_proxy_user}} and {{http_proxy_password}}.  With a 3.7.3-based Ruby Puppet master, I tried hooking up an HTTP report processor, entering values for the {{http_proxy_user}} and {{http_proxy_password}} settings in the master's {{puppet.conf}} file, and having the target host return a 407 proxy authentication challenge.  The master failed the connection without providing a {{Proxy-Authorization}} header in either the initial request or in response to the challenge from the \"proxy\".  Also, it appears that the code in https://github.com/puppetlabs/puppet/blob/master/lib/puppet/network/http/factory.rb doesn't specifically look at these settings.\n\nI believe, then, that the Ruby Puppet master does not support these settings in the context of an {{Puppet::Network::HttpPool}} request.  It may still make sense to support these for Puppet Server but it isn't clear that there is a backward compatibility requirement to do so.", "created": "2014-11-14T10:03:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] If we end up plumbing through new settings to the {{http_client}} TK section and using those to back puppetserver CLI subcommands, e.g., gem per SERVER-377, I think it might make sense to do this in the production code at the same time - meaning we could pull this into the Server 1.1/2.2 epic as well?", "created": "2015-04-14T18:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I agree - whenever we tackle anything related to proxy settings for the CLI subcommands we should make sure it works for the server process as well.", "created": "2015-04-15T01:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This ticket originally referred to the {{configtimeout}} setting as not being configurable.  We ended up addressing that in SERVER-449.  So the remaining work on this ticket would be about the proxy settings only.", "created": "2015-04-16T13:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "In SERVER-377, we're discussing a possible addition to the {{http-client}} section of the Puppet Server Trapperkeeper configuration to allow for user specification of a proxy.  That configuration might look like:\n\n{noformat}\nhttp-client: {\n\u2026\n  proxy: {\n    host: my-proxy-host\n    port: 8088\n    credentials: {\n      user: proxyuser\n      password: proxypassword\n    }\n    no-proxy-hosts: { \u201c*.mydomain.com\u201d, \u201c*.myotherdomain.com\u201d }\n  }\n}\n{noformat}\n\nI spent some time looking at the {{clj-http-client}} interaction with the Apache HTTP client library and how we might be able to map such a proxy configuration into the client setup.  The code snippets below could all be applied to the {{JavaClient.createClient()}} method in that library.\n\nEnabling the selection of a specific proxy is fairly trivial.  For example, the following line would allow for a proxy server with hostname of \"127.0.0.1\" and port of \"8088\" to be used:\n\n{code:java}\nclientBuilder.setProxy(new HttpHost(\"my-proxy-host\", 8088))", "created": "2015-07-16T17:08:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "With respect to {{clj-http-client}} one question which has come up is why do the Java proxy properties -- e.g., ones you'd set on the Java command line like with {{-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 -Dhttp.nonProxyHosts=*.myserver.com}} -- not appear to honored with the implementation in {{clj-http-client}} as it exists today.  As it turns out, there would be a way to enable the use of these.  This could be done by just adding the following line to the {{Java.createClient()}} call:\n\n{code}\nclientBuilder.useSystemProperties()", "created": "2015-07-16T18:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Along the lines of SERVER-377, I'm inclined to go with a priority order (highest at the top, lowest at the bottom) of the following around the possible sources in which each proxy setting is derived:\n\n* Environment variable\n* Trapperkeeper {{http-client}} configuration\n* Java system property\n\nAssuming this is the approach we'd want to go with, we'd also need to think about where the priority determination is done.  For most general reuse, this could just be done all within the {{clj-http-client}} library so it could be generically reused by any clients - substituting \"HTTP client option\" for \"Trapperkeeper {{http-client}} configuration\".  There may be some consternation about that, though, if it is perceived that the \"environment variable first\" approach, while it may be suitable for Puppet Server, isn't as intuitive from the perspective of HTTP clients in general.\n\nA more flexible (and possibly more intuitive) approach might involve having Puppet Server handle massaging the \"Environment variable\" vs. \"Trapperkeeper http-client configuration\" part into an \"HTTP client option\" that it passes into the {{clj-http-client}} library and then have the http-client library prioritize an \"HTTP client option\" ahead of a \"Java system property\".  That's probably the way I'd lean at this point.  Would appreciate feedback from others on that part, though.\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - WDYT?", "created": "2015-07-16T18:55:00.000000"}], "components": [], "created": "2014-11-11T12:59:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ba4b110"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2124"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynsu7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_535609415_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_121560447247_*|*_10005_*:*_2_*:*_15718976217"}], "description": "On a Ruby master, the \"puppet.conf\" settings for _http_proxy_host_, _http_proxy_port_, and _configtimeout_ were honored for cases where the master made outgoing client requests, e.g., when submitting a report to an external server.  See https://github.com/puppetlabs/puppet/blob/master/lib/puppet/network/http/factory.rb.\n\nThe Puppet Server master does not honor any of these settings for client connections that it makes.  We should consider whether or not it is valuable to restore this capability.", "epicLinkSummary": "Handful or two of improvements to clj-http-client", "estimate": "PT0S", "externalId": "16681", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "16681", "issueType": "Bug", "key": "SERVER-156", "labels": ["http"], "originalEstimate": "PT0S", "parent": "16513", "parentSummary": "Handful or two of improvements to clj-http-client", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2019-03-25T15:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "No http client support for http_proxy_host, http_proxy_port, and configtimeout", "timeSpent": "PT0S", "updated": "2019-03-25T15:56:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623e7507866b810069e57527", "body": "I'm kicking this back into \"To Do\" because it relies on the changes in SERVER-260, which we're dropping until the relevant commits are in Puppet and Facter.", "created": "2015-01-06T12:08:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed with Ruth", "created": "2015-03-11T15:17:00.000000"}], "components": [], "created": "2014-11-10T15:32:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38355afa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3f3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3642707151_*|*_1_*:*_1_*:*_612757395_*|*_10007_*:*_2_*:*_1693166650_*|*_3_*:*_2_*:*_4573800_*|*_5_*:*_1_*:*_48877601543_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_8331545_*|*_10004_*:*_1_*:*_1808255495_*|*_10006_*:*_2_*:*_2687766114"}], "description": "The contents of the {{reset_environment_context}} and {{configure_indirector_routes}} methods in puppet_config.rb are copied out of puppet.  In PUP-3511, new methods were introduced that do the same things, but can be used by both Puppet and Puppet Server.  These methods should be deleted, and usages of them replaced with calls into the new methods in {{Puppet::Application}}", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "16009", "fixedVersions": ["SERVER 2.0.0"], "id": "16009", "issueType": "Improvement", "key": "SERVER-155", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2015-03-11T17:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "utilize new methods in Puppet::Application to eliminate duplicated code", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "This change has been implemented here: https://github.com/puppetlabs/ci-job-configs/blob/master/resources/scripts/unit-clj.sh#L20\n\nThe first run where this change can be seen to be effective: https://jenkins.puppetlabs.com/job/platform_puppet-server_unit-clj_master/48/console", "created": "2014-11-10T16:34:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] would you happen to have a link to the PR this was a part of? Or was it in one?", "created": "2014-12-12T13:14:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] You can see it in the unit test job configuration: https://jenkins.puppetlabs.com/job/platform_puppet-server_unit-clj_master/configure\n\nIt wasn't actually part of a PR on the ci-job-configs repo because at the time I was still developing the layout of that repo and no one else was committing. But here you can see the actual ci-job-configs commit where it was added: https://github.com/puppetlabs/ci-job-configs/commit/147215dac2c5dd75dbe051ccc6fd2c3189389d07\n\nAnd that commit is on the master branch of ci-job-configs.", "created": "2014-12-12T13:19:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] You can also see it in use for the travis-ci jobs: https://github.com/puppetlabs/puppet-server/blob/master/ext/travisci/test.sh#L3", "created": "2014-12-12T13:20:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Ahh ok,  cool man no problem. Was just wondering if one existed.", "created": "2014-12-12T16:29:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Nothing for TestRail", "created": "2015-02-12T16:43:00.000000"}], "components": [], "created": "2014-11-10T14:18:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a0afa5f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywu8f:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_53388_*|*_10009_*:*_1_*:*_344917641_*|*_5_*:*_1_*:*_2876061963_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_8140423"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14948", "fixedVersions": ["SERVER 1.0.0"], "id": "14948", "issueType": "Task", "key": "SERVER-154", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-14T16:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "update jenkins clojure test jobs to use `:all` test selector", "timeSpent": "PT0S", "updated": "2015-02-12T16:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}], "components": [], "created": "2014-11-10T09:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@67048ad5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx40n:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_352421781_*|*_1_*:*_1_*:*_11348_*|*_10007_*:*_1_*:*_6825220_*|*_3_*:*_1_*:*_10643056_*|*_10009_*:*_1_*:*_274391641_*|*_5_*:*_1_*:*_2601173381_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15811", "fixedVersions": ["SERVER 1.0.0"], "id": "15811", "issueType": "Sub-task", "key": "SERVER-153", "labels": [], "originalEstimate": "PT0S", "parent": "15208", "parentSummary": "create environment cache entry factory implementation that allows flushing all environments", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-17T20:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Separate unit tests from integration tests", "timeSpent": "PT0S", "updated": "2014-12-17T23:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "After reading up on OCSP a bit, I think this is a good idea to explore further, but I think it could be introduced in a Y release without it being too much of a breaking change, so I'm inclined to push it back to SERVER 3.x.", "created": "2014-11-08T06:25:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "The current implementation of certificate status checking uses CRLs to determine if a given certificate has been revoked, but there's very little tooling around the distribution of CRLs.\n\nh2. Issues with CRLs\n\nh3. Current CRL sync behavior\n\nRight now the distribution of CRLs to agents is practically by accident. Inside of Puppet::SSL::Host we set up the RevocationList terminus to :rest and use the :file indirection cache", "created": "2014-11-10T12:02:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "[~accountid:63d40628f6e1b543161789a7] I haven't bugged you about SSL in at least five minutes, so heads up with respect to the above document.", "created": "2014-11-10T14:30:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "I spoke with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] at PuppetConf about this and he asked me to add my thoughts / use-case here.\n\nIn our environment we run all Puppet communications via our F5 LTM load balancers and currently terminate and authenticate the incoming SSL connections on them (the F5's then pass the certificate information along to the Puppetmasters as HTTP headers). As a result, this means that we do need access to the CRL in some fashion to ensure we are correctly only authenticating still-valid certificates at the F5.\n\nThe solution which I have running in our PE 3.3 environment currently is to run OpenCA's OCSP Responder: [https://pki.openca.org/projects/ocspd/downloads.shtml] which I have pointed at the current on-disk copies of the Puppet CA files.\n\nThe upside is that I have near instant visibility on the load balancer to CRL updates and so certificate revokes are nearly immediately seen. The downsides are: ocspd isn't super well packaged for the RHEL-family (I haven't investigated others), I have no vendor support for it, and the version we deployed leaks memory rather quickly and has to be restarted regularly by a watchdog script. I did some hunting but was unable to find any other open source projects to perform OCSP functions. That said, once we worked through those issues it has been doing the job for us and with the addition of the watchdog script we have had no interruptions of service (the F5 will fail hard to connection rejects if it can't validate against the OCSP service, though I believe that may be configurable).\n\nI would like to see OCSP support natively in Puppet. However, if that doesn't make it then I'd at least like to see the CA files still written to disk as normal (even if the canonical copy is kept inside Puppet somewhere in some other format) so that I can continue to use the OCSP add-on as I have been until such time as Puppet DOES support it natively.\n\nThere are other F5 supported options, including CRLDP (which I believe is a basic feature set option). I briefly looked into CRLDP when configuring our setup but at the time I believe the version of LTM we were running only supported LDAP-based CRLDP sources, not HTTP.\n\nAnother (arguably simplest) option on the F5s is to set up some sort of cronjob that will fetch the CRL and save it onto the F5 system itself (or copy it in via scp or the like). However, that presumes that you are willing / able to work at that low level on the F5 and that your Puppet infrastructure/administrator has access. That isn't true in our environment due to different teams administering each (I'd guess something similar is true in other organizations who would be candidates for this).\n\nHere are some links I found that may give you an idea of the F5's capabilities/requirements:\n[https://support.f5.com/kb/en-us/solutions/public/12000/900/sol12975]\n[https://support.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/ltm-implementations-11-4-0/37.html]\n\nI suspect other load balancers supporting SSL termination and authentication would have similar requirements.\n\nHope that helps. Thanks!", "created": "2015-10-14T06:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for the info, [~accountid:623a4a827910a200718ac35d].  Just to clarify, when you say \"I'd at least like to see the CA files still written to disk as normal\", are you referring to just the CRL pem?  Or also the CA cert/keys?  And I presume you're *not* including all of the agent certs in that statement?\n\nNot 100% sure how all this will shake out yet, but just trying to verify what you're saying would be the minimum set of files that you need.", "created": "2015-10-14T09:59:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "For the agent side, it would be nice to support OCSP with stapling (so that the compiler could respond with revocation status). However, for that to work ruby or puppet would need to call {{SSL_CTX_set_tlsext_status_cb}} to register a callback. The callback is invoked during the handshake and is provided the SSL connection, so the callback can retrieve the OCSP response and decide what to do:\n\n{code:c}\nint tlsext_status_cb_invoke(SSL *ssl, void *arg)\n{\n    const unsigned char *p = NULL", "created": "2021-04-13T17:48:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Closing ticket due to age/priority\n\nWe can re-consider & re-open if there is enough interest from the community", "created": "2021-12-22T11:17:00.000000"}], "components": ["Puppet Server"], "created": "2014-11-07T18:58:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20b14659"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynczj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_858452723_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_112661457206_*|*_10005_*:*_1_*:*_111265256648"}], "description": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] and others have suggested that we consider using OCSP for cert revocation, as opposed to the struggles we know we'll have to go through in order to get things working the way we'd like via CRLs.  We should spend some time investigating this before we try to tackle CRL-related tickets such as PE-3915.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16008", "fixedVersions": [], "id": "16008", "issueType": "Story", "key": "SERVER-975", "labels": ["final_triage"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2021-12-22T11:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Look into using OCSP for cert revocation, instead of CRL", "timeSpent": "PT0S", "updated": "2022-07-07T16:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] heads up--we're going to need to do some design work on what the UX for this should look like, and what is the minimum set of functionality that we need to provide in order to be able to delete the old tools.  We're a ways out from this but would definitely like to have some UX involvement as we get closer!", "created": "2014-11-07T18:03:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "Happy to help!", "created": "2014-11-10T10:52:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "Is there a repo for this yet? I'd like to use that to start documenting the CLI UX (commands, args, etc etc)", "created": "2015-02-10T11:49:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "Note that implementing these as clojure subcommands that call straight into the CA library code will make it difficult to replace some of the deprecated faces", "created": "2017-03-12T20:14:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I think we want to separate the CLI requirements for interacting with the CA, e.g. signing, revoking, and requirements for managing certs and CRLs from an SSL client perspective. For example, in the multiple master scenario, the non-CA master is an SSL client to the CA, and there should be a different CLI for downloading the CRL, which puppet agents would also want to use.", "created": "2018-02-15T15:43:00.000000"}, {"author": "62438a418678e9007059bcca", "body": "What I wound up doing is writing a script that uses the {{/puppet-ca/v1/certificate_revocation_list}} API to fetch the CRL, and updates the non-CA master's CRL if it differs. Each of our non-CA masters runs it hourly.\n\nThat's not the most elegant solution, so I agree it would be nice to have a specific CLI for downloading the CRL. But as long as the {{/puppet-ca/v1/certificate_revocation_list}} API doesn't go away, it's good enough for now.\n\nIn case it would be useful to others, here's the script.\n\n{code}\n#! /bin/sh\n#\n# This script is intended to be run out of cron, on Puppet non-CA masters.\n#\n# This script fetches the current CA CRL from the Puppet CA master.  If it is\n# different from the copy of the CA CRL that currently is cached on the non-CA\n# master, then the cached copy of the CA CRL on the non-CA master is\n# overwritten with the copy retrieved from the CA master.\n#\n# The reason why this is necessary is because a non-CA Puppet master does not\n# automatically retrieve the CA CRL from the CA master (even though it would be\n# trivial to do so).  So, essentially, this script is a poor man's CA CRL\n# distribution service.\n#\n\n# Die on any errors.\nset -e\n\n# Ensure the umask is sane.\numask 022\n\n# Set the PATH appropriately.\n[ -f /etc/profile.d/puppet-agent.sh ] && . /etc/profile.d/puppet-agent.sh\n\n# Where is the cacrl file?  (FIXME: remove stderr redirect to /dev/null after\n# https://puppet.atlassian.net/browse/PUP-8566 is addressed.)\nCACRL_FILE=$(puppet config print --section master cacrl 2>/dev/null)\n\n# Exit if cacrl isn't set.\n[ \"x${CACRL_FILE}\" = x ] && exit 1\n\n# Sanity check: if the cacrl file contains \"ssl-ca\" in it, then we're\n# accidentally running on the CA master.  We *must not* attempt to update the\n# CA CRL in that case, because we'll overwrite the CA's CRL!\ncase \"x${CACRL_FILE}\" in\nx*/ssl-ca/*)\n  exit 1\n  ", "created": "2018-04-03T12:56:00.000000"}], "components": [], "created": "2014-11-07T18:01:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b475ad8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl21j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "UX Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "70121:690f8c77-a5af-4d4c-96f0-c3c253283fd2"}, {"fieldName": "UX Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Critical"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_547381646_*|*_1_*:*_2_*:*_27360377521_*|*_10007_*:*_1_*:*_317492231_*|*_3_*:*_1_*:*_1538554123_*|*_5_*:*_1_*:*_159886547_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_3214290921_*|*_10005_*:*_1_*:*_86422369953"}], "description": "In Puppet 6.0 we're going to be getting rid of all of the old ruby CLI tools for interacting with the CA.\n\nWe can't do that without having solid replacements for them as part of Puppet Server's new CA service.\n\nI've discussed this with [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and he's not too concerned about JVM startup time, so I think we should *probably* just implement these as clojure subcommands like we did with 'gem', and have them call straight into the CA library code.  Another option would be to implement them as HTTP requests to the CA, but then we'd need to deal with certs for authentication and could potentially end up in a state where a user didn't have any valid certs to use to connect and thus could not run the commands.\n\n**Note**: the initial pass of these should use the {{puppet.conf}} settings (implementation for accessing them is https://github.com/puppetlabs/puppetserver-ca-cli/blob/master/lib/puppetserver/ca/puppet_config.rb), but be able to easily accommodate switching this out for using puppetserver's settings later, as will be necessary post SERVER-2225. ", "epicLinkSummary": "Server CA CLI", "estimate": "PT0S", "externalId": "17269", "fixedVersions": ["SERVER 5.3.5", "SERVER 6.0.0"], "id": "17269", "issueType": "Story", "key": "SERVER-1747", "labels": [], "originalEstimate": "PT0S", "parent": "14822", "parentSummary": "Server CA CLI", "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2018-08-22T14:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "New CLI tools for interacting with CA", "timeSpent": "PT0S", "updated": "2018-08-22T14:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] would you mind finding some of the tickets related to that cert_status slowness and linking them here?\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] I know you also pointed me at some about race conditions, having the public keys for the agents so that we could encrypt things, and maybe a few other things, so if you don't mind linking some of those tickets that would be great too.", "created": "2014-11-07T18:14:00.000000"}, {"author": "623a4a9e01f8660070b630a8", "body": "I think we may store Puppet CA files in s3 (or another object storage backend like scality or ceph) ?\n\nThis should provide some easy HA solution for shared storage.\n\n\u00a0", "created": "2018-05-04T15:07:00.000000"}], "components": ["Puppet Server"], "created": "2014-11-07T17:27:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c614a5c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl2nj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_863845527_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_117506203206_*|*_10005_*:*_2_*:*_104598959824"}], "description": "The current mechanism that the CA service uses for creating / modifying / retrieving keys, CSRs, and certs is based on storing everything in PEM files on disk, in a very particular directory structure.  This is problematic for several reasons:\n\n1. It'll be a giant pain to try to make it HA and keep all of the files in sync,\n2. We get a lot of bug reports that have to do with users creating or moving these files around improperly\n3. There are race conditions where if two actions attempt to modify something (e.g. the CRL) at the same time, the data will be corrupted.\n4. Puppet likes to keep two copies of many of these things around, and has two settings to specify their locations (e.g. 'cacert' vs. 'localcacert').  It's often hard to predict which one of the two is used by certain code paths, and we've had several bugs around that.\n5. The 'cert_status' endpoint needs to be able to do things like query for the count of valid certs, etc.  Current implementations of this require walking the directories and reading all of the pem files into objects in memory serially.  This is expensive and we've had bug reports of it causing timeouts for PE users.\n\nWe need to move the data to a different persistence store.  We need to put some thought into what the backend should be, but my initial leaning is to just put them into postgres.  The data maps very well to an RDBMS with a very simple schema.\n\nWe might need to go the route that PuppetDB went and also support HSQL for this functionality, to avoid introducing a large new dependency for OSS users.\n\nEventually when we want to add HA, we can probably do it as a PE-only feature and implement it via postgres clustering, hazelcast laid over the pg data, or similar.  There's a good chance we can re-use some of whatever the classifier uses to solve their HA issues.\n\nThis ticket is just to capture that there is work to be done.  We need to scope it in much greater detail before getting started.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16346", "fixedVersions": [], "id": "16346", "issueType": "Improvement", "key": "SERVER-2125", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Declined", "resolutionDate": "2021-12-01T09:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SPIKE: Investigate storing CA files in postgres as a means to provide HA", "timeSpent": "PT0S", "updated": "2021-12-01T09:17:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Is this something we still want to do? If so, is it in scope for the Server 6 work? It doesn't seem like something that would need to be done on a major version boundary necessarily, since it would probably be transparent to the user.", "created": "2018-06-06T09:35:00.000000"}], "components": [], "created": "2014-11-07T17:03:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3113582c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyncyf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jun/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_865273224_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_112661219940_*|*_10005_*:*_1_*:*_11994993190"}], "description": "Since the CA service should no longer have any dependencies on jruby or puppet.conf, let's move it out to its own repo.  This will help ensure that we've fully decoupled it and don't have any code-level dependencies.", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "15275", "fixedVersions": ["SERVER 6.y"], "id": "15275", "issueType": "New Feature", "key": "SERVER-2220", "labels": [], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2018-10-30T13:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "move CA service to separate repo", "timeSpent": "PT0S", "updated": "2018-10-30T13:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-11-07T16:24:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14e2fe02"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx3tr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_868819848_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_65052427583"}], "description": "On Ubuntu 12, after {{apt-get install puppetserver}} ...\n{code}\npuppet@precise64:~$ ls -ld $HOME\ndrwxr-xr-x 3 root root 4096 Nov  7 22:41 /usr/share/puppetserver\n{code}\n\nAs you can see, the {{puppet}} user does not own its {{$HOME}} directory, or even have write access to it.\n\n[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] made me do this.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15274", "fixedVersions": [], "id": "15274", "issueType": "Improvement", "key": "SERVER-152", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Done", "resolutionDate": "2016-12-09T15:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "'puppet' user should own its $HOME directory", "timeSpent": "PT0S", "updated": "2016-12-09T15:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Verified this on a pre-release package on Ubuntu 12.04.  Verified that hitting the new endpoint without changing any of the default configuration returns {{HTTP/1.1 401 Unauthorized}}.  Verified that disabling authorization (via {{authorization-required: false}} and then hitting the new endpoint results in logging on the server indicating that the pool has been flushed and a new interpreter has been initialized and returns {{HTTP/1.1 204 No Content}}.  After that, verified that an agent run completes successfully.\n", "created": "2014-12-15T13:18:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}], "components": [], "created": "2014-11-07T16:18:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49ef7c58"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypga7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_239808072_*|*_1_*:*_1_*:*_866930406_*|*_10007_*:*_1_*:*_343689359_*|*_3_*:*_1_*:*_347156578_*|*_10009_*:*_1_*:*_7896360_*|*_5_*:*_1_*:*_208775783_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1466916368"}], "description": "In SERVER-150 we created a function that will flush the jruby instances out of the pool and start fresh.\n\nIn SERVER-113 we created an admin HTTP API.\n\nFor this ticket, we want to create some kind of 'flush_jruby_pool' in that admin endpoint.  Should just need to call the function defined in SERVER-150.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14947", "fixedVersions": ["SERVER 1.0.0"], "id": "14947", "issueType": "New Feature", "key": "SERVER-151", "labels": ["startup-time"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-15T13:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add an HTTP endpoint to call flush jruby pool function", "timeSpent": "PT0S", "updated": "2016-01-20T11:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "attachments": [], "comments": [{"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "Not ready to be merged yet because blocked by PUP-3526 getting in, but PR is up for review.", "created": "2015-01-22T11:29:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Erik Dasher to dig through the above tickets and associated PRs looking for documentation about URLs.\n\nWe are considering this high risk because if these APIs fail to work, the severity is very high.  These APIs are frequently used, both internally and externally.\n\n QA to get list of URLs.  QA to hit each URL with a simple curl request and look for an HTTP 200/OK. (Add complexity if needed.)  QA to find out how are users going to discover this new information?  ", "created": "2015-03-11T16:25:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Documentation is here:\nhttps://github.com/puppetlabs/puppet/tree/master/api/docs\n\n\n", "created": "2015-03-11T17:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] the main consumer of these URLs is the Puppet agent", "created": "2015-03-30T15:40:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "The existing acceptance tests (in https://github.com/puppetlabs/puppet/tree/master/acceptance/tests) validate the following endpoints:\n\n{code}\n/puppet/v3/catalog (GET)\n/puppet/v3/node (GET)\n/puppet/v3/report (PUT)\n/puppet/v3/resource_type (GET)\n/puppet/v3/environments (GET)\n{code}\n\n(The test for `resource_type` may not actually fail if this endpoint isn't correct though...)\n\nRunning the agent (using {{puppet agent -t --certname=foo}} to generate a new cert if necessary) through a proxy, I validated that it hit the following successfully (no modules installed):\n\n{code}\n/puppet/v3/catalog (POST)\n/puppet-ca/v1/certificate (GET)\n/puppet-ca/v1/certificate_request (GET)\n/puppet-ca/v1/certificate_status (PUT)\n/puppet/v3/file_metadata (GET search)\n/puppet/v3/file_bucket_file (GET", "created": "2015-04-10T11:59:00.000000"}], "components": [], "created": "2014-11-07T14:59:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18dae57d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp0pz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3983220799_*|*_1_*:*_1_*:*_871720237_*|*_10007_*:*_1_*:*_61234790_*|*_3_*:*_1_*:*_974922248_*|*_5_*:*_1_*:*_46298149617_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_2587767359_*|*_10006_*:*_1_*:*_4819323135"}], "description": "See PUP-3641 for information about proposed URL changes for Puppet 4.  This ticket covers the work of updating the Puppet Server web code to be compatible with the new URL hierarchy.  This should include migrating to the new TK webrouting service if we have not already done so.\n___\nRisk assessment: High (QA will perform functional review and automated tests)\nProbability: High (These APIs are frequently used)\nSeverity: High (If these APIs fail, the failure will be very obvious to the end user.)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15810", "fixedVersions": ["SERVER 2.0.0"], "id": "15810", "issueType": "Task", "key": "SERVER-149", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-04-10T13:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update URLs for Puppet4 compatibility", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "QA to look for two different kinds of 404 messages:\n1. You made a valid API request, but it wasn't found.  Simple 404\n2.  You made a request to the old API, in this case you get the message to use the new API. ", "created": "2015-03-11T16:30:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I'm closing this down as a duplicate of SERVER-300.\n\nThis isn't exactly a duplicate.  It points to SERVER-300 and SERVER-299.  SERVER-299 was for rack/webrick.  SERVER-300 was for the new jvm puppetserver.  If this isn't a duplicate, it's resolved. ", "created": "2015-03-12T18:52:00.000000"}], "components": [], "created": "2014-11-07T14:51:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1fe67100"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3kn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3033344575_*|*_1_*:*_1_*:*_872218250_*|*_10007_*:*_1_*:*_602594034_*|*_3_*:*_3_*:*_74914354_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_99913557_*|*_10006_*:*_3_*:*_6127887398"}], "description": "There have been ongoing conversations about making URL changes in Puppet 4 that are not backwards compatible with Puppet 3.x agents.  There have been various conversations about what this would mean in terms of user upgrade experience.\n\nSo far the leading proposal that has been discussed in architecture meetins is to propose a \"migrate, not upgrade\" strategy, where users would stand up a new Puppet 4 server alongsid their existing Puppet 3 server, and we'd provide some modules or documentation that suggested mechanisms for having the agents upgrade themselves and simultaneously switch their 'server' config setting to point at the new Puppet 4 server at the same time.\n\nIn this world, if a Puppet 3 agent attempted to connect to a Puppet 4 master, it would get errors because the URLs were invalid.  What we'd like to do for Puppet Server is have a custom 404 error message that includes a hint about this situation.  The goal would be that the error output on the agent would at least provide some indicator that the problem was that the agent needed to be upgraded to Puppet 4.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "15273", "fixedVersions": ["SERVER 2.0.0"], "id": "15273", "issueType": "Task", "key": "SERVER-148", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2015-03-12T18:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Craft 404 error message that includes verbiage about Puppet 4 URL changes", "timeSpent": "PT0S", "updated": "2015-03-12T18:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] I'm definitely +1 on this, but, a few questions:\n\n1. Does puppet do this today?  Are the docs shipped in HTML or markdown or...?\n2. If we start doing the auto-generation of the pl.com HTML docs from our markdown docs, like PuppetDB is doing, then there will be some special formatting in the .md files that I don't think is part of standard markdown, so it might be a little weird to include those directly in the packages?\n\nWe should definitely do this, just want to make sure we know what the tech constraints are.", "created": "2014-11-07T10:35:00.000000"}], "components": ["Puppet Server"], "created": "2014-11-06T14:41:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fded1f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx3d3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_960904034_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_65052894280"}], "description": "Until (and probably even after) we get published docs about puppet-server, it'd be very helpful to include some of the doc files in the packages. I imagine these would go in the equivalent of RH's /usr/share/doc/puppet-server-${VERSION}/ \n\nI'd like to see included:\n\n{noformat}\nREADME.md\nCHANGELOG.md\ndev/*\ndocumentation/*\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15809", "fixedVersions": ["SERVER 1.y"], "id": "15809", "issueType": "Bug", "key": "SERVER-145", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Please include docs in packaging", "timeSpent": "PT0S", "updated": "2016-12-09T15:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [], "components": [], "created": "2014-11-06T11:34:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f593eb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypiuf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_15430858_*|*_5_*:*_1_*:*_59187479642_*|*_6_*:*_1_*:*_0"}], "description": "The version of Puppet that we depend on has been updated in all the places.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16853", "fixedVersions": [], "id": "16853", "issueType": "Sub-task", "key": "SERVER-144", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2014-11-06T15:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update Puppet dependency", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Don't worry, I know what needs to happen :)", "created": "2014-11-06T11:35:00.000000"}], "components": [], "created": "2014-11-06T11:30:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3460418b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx37j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_346978638_*|*_5_*:*_1_*:*_58856198291_*|*_6_*:*_1_*:*_0"}], "description": "Dujour has been updated in preparation for the new release.\n\n[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] Not sure what exactly needs to be done here, but hopefully you do :D", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16680", "fixedVersions": [], "id": "16680", "issueType": "Sub-task", "key": "SERVER-143", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2014-11-10T11:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update Dujour", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Thanks for the submission [~accountid:5b73e67de6230705b624dd4f].  I think you might be running into one of the current shortcomings of Puppet Server - it doesn't automatically pick up configuration changes (like to puppet.conf) without restarting the service.  Furthermore, it would actually look like the master in fact did get your config changes when you do {{puppet master --configprint ssldir}}.\n\nDid you by chance change the ssldir setting after the Server had been started? That would explain why the error message is looking in the default location of {{/var/lib/puppet/ssl}}, but the agent --configprint shows {{/etc/puppet/ssl}}.\n\nIf this is what is going on, then restarting the Server service would help.  At that point you might need to do some SSL cleanup as things could be spread over the two locations.\n\n", "created": "2014-11-07T17:09:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Your theory sounds reasonable to me, [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049].\n\nIt would also be interesting to know if the {{/var/lib/puppet/ssl/ca/requests/}} directory was deleted sometime after the Puppet Server master had started up since the master presumably would have created it if it didn't already exist when it first started up.  That is the only scenario under which I could reproduce the ERROR 500 response for a {{certificate_request}} PUT.  It does seem like the error handling on the master should be a bit more precise here - e.g., check for the existence of the certificate request directory before attempting to save the request to it and, if it doesn't exist, fail with a message indicating that the request could not be stored because the requestdir does not exist.\n\nWhen I do this with the Ruby CA, for example, I get this error in the agent instead:\n\n{quote}\nError: Could not request certificate: Error 400 on SERVER: Cannot save agent", "created": "2014-11-07T18:17:00.000000"}, {"author": "5b73e67de6230705b624dd4f", "body": "Thank you for the reply [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049]. \nSo, I did the necessary SSL cleanup and restarted  puppetserver. That seemed to have solved the issue. \n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]: Yes, that directory was deleted because I was under the impression that that directory's existence made the server ignore the ssldir config. \n\nAlso, it took a while to figure out that once the CA was setup, the server needed to be restarted. \nThanks [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n\nEdit: I'm editing this comment because the one made earlier was inaccurate. ", "created": "2014-11-12T10:08:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Glad you got it working [~accountid:5b73e67de6230705b624dd4f]! \n\nbq. Yes, that directory was deleted because I was under the impression that that directory's existence made the server ignore the ssldir config.\n\nThe Puppet Server will not tolerate missing files/directories as nicely as the Ruby Master, so if deleting the directory used to work, it probably won't anymore.  What were you trying to achieve by deleting the directory?  There might be a different way to get the same effect now.\n\n", "created": "2014-11-12T16:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think [~accountid:5b73e67de6230705b624dd4f] thought that by deleting the {{/var/lib/puppet/ssl}} directory -- the originally generated SSL directory that would no longer need to be used -- that the master would automatically start using the newly configured {{/etc/puppet/ssl}} directory.  As you mentioned though, [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], a puppetserver restart is what would be needed in order for the {{/etc/puppet/ssl}} directory to start being used because the settings in the {{puppet.conf}} file are only read by the puppetserver service at startup.", "created": "2014-11-12T16:17:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:5b73e67de6230705b624dd4f] Glad you're past this issue - we're going to mark this as Resolved. Please feel free to reopen the ticket if there are further issues!", "created": "2014-11-14T15:21:00.000000"}, {"author": "5b73e67de6230705b624dd4f", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]: That's exactly what I thought. Thank you for your assistance.\n[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049]:  Yes, this has been resolved. Thanks for helping out! ", "created": "2014-11-18T14:04:00.000000"}], "components": ["Puppet Server"], "created": "2014-11-05T19:30:00.000000", "creator": "5b73e67de6230705b624dd4f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e2ecf93"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx34n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_164360580_*|*_5_*:*_1_*:*_58990253715_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_598267006"}], "description": "There's a discrepancy between what --configprint (and the config file)  shows and where puppet is looking for certificate requests. \n\nsheela@rugnor:~$ sudo puppet agent -t \nInfo: csr_attributes file loading from /etc/puppet/csr_attributes.yaml\nInfo: Creating a new SSL certificate request for instance1\nInfo: Certificate Request fingerprint (SHA256): 10:2E:B9:74:92:0D:A5:FC:74:AB:E0:78:CC:06:29:F2:9D:29:D2:08:B8:0C:6B:0F:B8:C9:49:C5:D4:B1:D6:43\nError: Could not request certificate: Error 500 on SERVER: <html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\"/>\n<title>Error 500 </title>\n</head>\n<body>\n<h2>HTTP ERROR: 500</h2>\n<p>Problem accessing /production/certificate_request/instance1. Reason:\n{color:red}\n<pre>    /var/lib/puppet/ssl/ca/requests/instance1.pem (No such file or directory)</pre></p>\n{color}\n<hr /><i><small>Powered by Jetty://</small></i>\n</body>\n</html>\nExiting; failed to retrieve certificate and waitforcert is disabled\n\n*This what configprint shows*\nsheela@rugnor:~$ sudo puppet agent --configprint ssldir\n/etc/puppet/ssl\n\n*This is the /etc/puppet/puppet.conf*\n[main]\nlogdir = /var/log/puppet\nssldir = /etc/puppet/ssl\nrundir = /var/run/puppet\npluginsync = true\nparser = future \n\n[agent]\nreport = true\ncertname = instance1\n", "environment": "\"distdescription\"=>\"Debian GNU/Linux 7.7 (wheezy)\"\n\npuppetserver version:  0.3.0-1puppetlabs1\n\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15272", "fixedVersions": [], "id": "15272", "issueType": "Bug", "key": "SERVER-142", "labels": ["ssl"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b73e67de6230705b624dd4f", "resolution": "Fixed", "resolutionDate": "2014-11-14T15:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "ssldir in puppet.conf is not being honoured", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "623c12b6ee1b5a0070293582", "body": "This would be a very useful feature for those users who have traditionally run puppet master in the foreground with pry to get access to a REPL inside of a puppet master.  With this feature users will be able to apply their existing knowledge of pry to puppet-server.  Without this feature the user could discover that they can run the init script, find the exact command the init script executes, figure out how to modify that command in the smallest way possible to get java running in the foreground, then copy-pasta into their terminal.  Even very experienced power users tend not to discover this work-around and conclude they can't easily debug puppet-server using their previous techniques.", "created": "2014-12-12T17:18:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "I tested this with the package from pl-puppetserver-0.4.2.SNAPSHOT.2014.12.15T0145-el-6-x86_64.repo\n\nIt worked as I expected", "created": "2014-12-15T12:35:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}], "components": [], "created": "2014-11-05T11:34:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29ed8bbf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgbb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_586195865_*|*_1_*:*_1_*:*_1058173108_*|*_10007_*:*_1_*:*_346094489_*|*_3_*:*_1_*:*_11899721_*|*_10009_*:*_1_*:*_5317868_*|*_5_*:*_1_*:*_211265742_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1452033531"}], "description": "We recently got a request to add a 'foreground' cli subcommand for Puppet Server, similar to the one that PuppetDB provides today.  (The command simply launches the server in the foreground with an elevated logging level, usually for debugging purposes.)\n\nThis seems like a no-brainer, we should definitely do it.  It might make sense to just build this in to ezbake so that all apps ship with this capability; see TK-112.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17485", "fixedVersions": ["SERVER 1.0.0"], "id": "17485", "issueType": "New Feature", "key": "SERVER-141", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-15T12:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add 'foreground' subcommand", "timeSpent": "PT0S", "updated": "2015-01-29T16:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-11-03T11:19:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@953402"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywzlr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_23914310_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_66261099248"}], "description": "puppet-decrypt (https://github.com/maxlinc/puppet-decrypt) is a gem/module for storing/reading encrypted data via puppet.  It's usage is fairly similar to hiera-eyaml, although it provides/requires an extra call to a {{decrypt}} function ...\n{code}\ndecrypt(hiera('database_password'))\n{code}\n\nBased on a glance at the github repo, it looks like a significantly older and less-popular tool than hiera-eyaml.  However, it came up on puppet-users recently, so clearly people are still using it.\n\nGiven that it uses OpenSSL, we should test it out on Puppet Server and see if it works.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16679", "fixedVersions": [], "id": "16679", "issueType": "Task", "key": "SERVER-139", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "will puppet-decrypt work on puppet-server?", "timeSpent": "PT0S", "updated": "2016-12-09T15:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-10-31T14:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50af99eb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypjcv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_274173616_*|*_10007_*:*_1_*:*_65568413002_*|*_3_*:*_1_*:*_113508125_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_579270079"}], "description": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] is working on Puppet Server docs, and the question arose as to what exactly is the list of settings from puppet.conf that we override, ignore, or don't support.  She has a workaround for now, but we need to do an audit and come up with a list.\n\nI believe these should be mostly limited to things related to webserver config and external CA, but there might be others that are slipping my mind right now.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15531", "fixedVersions": [], "id": "15531", "issueType": "Task", "key": "SERVER-138", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2016-12-09T15:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "determine list of puppet settings that are not used/supported by Puppet Server", "timeSpent": "PT0S", "updated": "2016-12-09T15:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] did you have any opinions on the timing of when this should land?", "created": "2014-10-31T12:38:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - I'm not exactly sure what you mean by \"land\", but ...\n\nAs far as versions go, it's certainly nothing to hold up a release for, as far as I'm concerned.  I'm not exactly sure where we're at with 0.4.0 so I'm not sure whether to recommend it for that version or whatever comes next.\n\nThe only other thing that comes to mind is that, if it turns out to be a big performance win, we might make some particular customers happy if we can get it out in a PE 3.7.x release.\n\nHappy to discuss further if necessary.", "created": "2014-10-31T12:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm +1 for PE3.7.1.  I think I'd prefer to hold it out of SERVER 0.4.0 though.  Which would mean that we should not merge this into the current master branch yet.", "created": "2014-10-31T13:16:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Accepted for PE 3.7.1. QA plans to validate.", "created": "2014-11-18T19:31:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated by Tony Vu.", "created": "2014-12-03T15:09:00.000000"}], "components": [], "created": "2014-10-31T09:46:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48c549d2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgcv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_371951087_*|*_1_*:*_1_*:*_8565837_*|*_10007_*:*_1_*:*_855347410_*|*_3_*:*_1_*:*_1639803_*|*_10009_*:*_2_*:*_192758650_*|*_5_*:*_1_*:*_1443935334_*|*_6_*:*_1_*:*_0"}], "description": "The current implementation of {{certificate-state}} in {{certificate_authority.clj}} converts the CRL file on disk into an {{X509CRL}} each time it is called:\n\nhttps://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L921\n\n{{get-certificate-statuses}} will call through to {{certificate-state}} once per CSR and signed certificate found on disk.  This would result in the CRL file to {{X509CRL}} object conversion happening once per CSR and signed certificate.\n\nThis could be made more efficient by just having the {{X509CRL}} object created one time and reusing that object across checks to see if the CSR or certificate was revoked.  One way to do this would be to have the {{X509CRL}} created by the callers of and passed through as an argument to {{get-certificate-status}}.  {{get-certificate-status}} could then accept the {{X509CRL}} as an argument and use that in its revocation check.\n\nSimilar work has been pursued to optimize the certificate status check in core Ruby Puppet, per PUP-3535", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15211", "fixedVersions": ["SERVER 1.0.0"], "id": "15211", "issueType": "Improvement", "key": "SERVER-137", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2014-12-03T15:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Compose X509CRL once and reuse for get-certificate-statuses", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}], "components": [], "created": "2014-10-30T08:23:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b47e15e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypjbj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25244_*|*_10007_*:*_1_*:*_734852033_*|*_3_*:*_2_*:*_1302111_*|*_5_*:*_1_*:*_3429155474_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_39107661"}], "description": "In SERVER-71 we added support for configuring the SSL protocols / ciphers used in http client connections, but we did not add this to the documentation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16852", "fixedVersions": ["SERVER 1.0.0"], "id": "16852", "issueType": "Task", "key": "SERVER-136", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-08T06:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "docs for new client ssl configuration", "timeSpent": "PT0S", "updated": "2015-01-29T17:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:15:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12f9184e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyin:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1035312123_*|*_5_*:*_1_*:*_58849203508_*|*_6_*:*_1_*:*_0"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%220.4.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15808", "fixedVersions": [], "id": "15808", "issueType": "Sub-task", "key": "SERVER-135", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-10T13:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:15:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14edaef8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyif:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1035275881_*|*_5_*:*_1_*:*_58849221505_*|*_6_*:*_1_*:*_0"}], "description": "  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15530", "fixedVersions": [], "id": "15530", "issueType": "Sub-task", "key": "SERVER-134", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-10T13:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c1cdf8e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyi7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1028010357_*|*_5_*:*_1_*:*_58856499027_*|*_6_*:*_1_*:*_0"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15210", "fixedVersions": [], "id": "15210", "issueType": "Sub-task", "key": "SERVER-133", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-10T11:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14e24e0d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyhz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1027983412_*|*_3_*:*_1_*:*_2937434_*|*_5_*:*_1_*:*_58853581893_*|*_6_*:*_1_*:*_0"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14946", "fixedVersions": [], "id": "14946", "issueType": "Sub-task", "key": "SERVER-132", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-10T12:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@727edd8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyhr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1028555250_*|*_5_*:*_1_*:*_58855948442_*|*_6_*:*_1_*:*_0"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17484", "fixedVersions": [], "id": "17484", "issueType": "Sub-task", "key": "SERVER-131", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-10T11:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e0482af"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyhj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1027941425_*|*_5_*:*_1_*:*_58856563707_*|*_6_*:*_1_*:*_0"}], "description": "Get a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17267", "fixedVersions": [], "id": "17267", "issueType": "Sub-task", "key": "SERVER-130", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-10T11:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting", "timeSpent": "PT0S", "updated": "2016-09-21T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Started/stopped/restarted the puppetserver and did agent runs with a notify manifest on Cent 6 (64), Fedora 19 (64), and Ubuntu 12 (64).", "created": "2014-11-06T18:34:00.000000"}], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b000c33"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyhb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_706776963_*|*_5_*:*_1_*:*_59177734094_*|*_6_*:*_1_*:*_0"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16851", "fixedVersions": [], "id": "16851", "issueType": "Sub-task", "key": "SERVER-129", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-06T18:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "This was done by EZBake. Packages are available http://builds.puppetlabs.lan/puppetserver/0.4.0/. I'll do the \"real\" tag (aka puppet-server-0.4.0) that is going to get into the repo after the go/no-go", "created": "2014-11-06T16:48:00.000000"}], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@287db4dd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyh3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_700401946_*|*_5_*:*_1_*:*_59184122044_*|*_6_*:*_1_*:*_0"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16678", "fixedVersions": [], "id": "16678", "issueType": "Sub-task", "key": "SERVER-128", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-06T16:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Done, PR up at: https://github.com/puppetlabs/puppet-server/pull/264\n\n(This is both the 'long form' release note and short form story, for the time being)", "created": "2014-11-06T14:46:00.000000"}], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@15a6ce02"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywygv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_693121557_*|*_6_*:*_1_*:*_0"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16345", "fixedVersions": [], "id": "16345", "issueType": "Sub-task", "key": "SERVER-127", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-06T14:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2014-11-06T14:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:5c808afb-dce6-44a1-922d-296dc2c81fe8", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1008e043"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywygn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_767915778_*|*_5_*:*_1_*:*_59116624294_*|*_6_*:*_1_*:*_0"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16126", "fixedVersions": [], "id": "16126", "issueType": "Sub-task", "key": "SERVER-126", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-07T11:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "It sounds like this is going to be done after the release, and the release will be cut from the master branch. Is that correct, [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]?", "created": "2014-11-06T16:40:00.000000"}], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ee291cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywygf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_715040971_*|*_5_*:*_1_*:*_59169487566_*|*_6_*:*_1_*:*_0"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15807", "fixedVersions": [], "id": "15807", "issueType": "Sub-task", "key": "SERVER-125", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-06T20:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20a78ddb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyg7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_699399451_*|*_5_*:*_1_*:*_59185135932_*|*_6_*:*_1_*:*_0"}], "description": "Bump VERSION in lib/{#project}/version.rb to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15529", "fixedVersions": [], "id": "15529", "issueType": "Sub-task", "key": "SERVER-124", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-06T16:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@433b4b33"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyfz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_699375777_*|*_5_*:*_1_*:*_59185152442_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15209", "fixedVersions": [], "id": "15209", "issueType": "Sub-task", "key": "SERVER-123", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-06T16:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4355aa38"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyfr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_699368359_*|*_5_*:*_1_*:*_59185179085_*|*_6_*:*_1_*:*_0"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14945", "fixedVersions": [], "id": "14945", "issueType": "Sub-task", "key": "SERVER-122", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-06T16:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "CI results: https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/34/", "created": "2014-11-06T13:32:00.000000"}], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62c78b81"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywyfj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_699343277_*|*_5_*:*_1_*:*_59185184949_*|*_6_*:*_1_*:*_0"}], "description": "All tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%220.4.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17482", "fixedVersions": [], "id": "17482", "issueType": "Sub-task", "key": "SERVER-121", "labels": [], "originalEstimate": "PT0S", "parent": "17265", "parentSummary": "Puppet Server 0.4.0 2014-11-06 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-06T16:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c0cbf1c7f6a007049e5b9", "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Release tickets do not need to be testrailed.", "created": "2015-01-30T06:47:00.000000"}], "components": [], "created": "2014-10-29T15:14:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29553766"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypjbr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_445225261_*|*_5_*:*_1_*:*_88970_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_590103700"}], "description": "Puppet Server 0.4.0 2014-11-06 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17265", "fixedVersions": [], "id": "17265", "issueType": "Task", "key": "SERVER-120", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-11-10T13:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 0.4.0 2014-11-06 Release", "timeSpent": "PT0S", "updated": "2015-01-30T06:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "After this issue is resolved, we can apply this patch to jvm-certificate-authority, which removes some usages of deprecated Bouncy Castle code:\n\nhttps://github.com/KevinCorcoran/jvm-certificate-authority/commit/df9a0a1474fe437c4ad534ba87a8fe370669bb03", "created": "2014-10-29T12:17:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Merged into master as 134968c", "created": "2015-02-04T10:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "This one's been in Puppet Server master for a while now and I don't believe any of the extensions-related tests are failing in Puppet Server CI for master on EL7 anymore.  See https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/197/.\n\nOk to close this one?", "created": "2015-03-03T17:38:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Moving this to \"Testing\" since I think we're good with this from a CI perspective now but still may need some QA-level testing around the certificate extension changes.", "created": "2015-03-04T13:30:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "In the sprint planning meeting today we said we would close this ticket because puppet-server 2.0 has been released (so there is no point in testing this at this point), and because the development team performed functional review against this issue.\n\nCould I please have some documentation in this ticket about who performed Functional Review, approximately what the FR was, and we QA should consider running regression testing against this issue in the future?  Ping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] ", "created": "2015-04-15T16:57:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "ping [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]?  ", "created": "2015-04-17T15:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I don't believe anything was formally captured about the nature of the functional review that was performed.  I'll spend some time doing that - probably won't get to it until next week sometime.", "created": "2015-04-17T15:34:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] If you can give me enough information to reproduce the issue, I can take it on.", "created": "2015-04-17T16:06:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Here's the nature of the functional testing that I did against Puppet Server 2.0 for these changes:\n\n1) In the {{csr_attributes.yaml}} file under the master's {{confdir}}, set the following content:\n\n{noformat}\n---\ncustom_attributes:\n  1.2.840.113549.1.9.7: 342thbjkt82094y0uthhor289jnqthpc2290\nextension_requests:\n  pp_uuid: ED803750-E3C7-44F5-BB08-41A04433FE2E\n{noformat}\n\n2) Ensured that the master's {{ssldir}} was empty and booted up Puppet Server.\n\n3) On the master certificate that Puppet Server generated for itself during startup, ran {{openssl asn1parse -in localhost.pem}}.  Output included the following:\n\n{noformat}\n836:d=5  hl=2 l=  11 prim: OBJECT            :1.3.6.1.4.1.34380.1.1.1\n849:d=5  hl=2 l=  38 prim: OCTET STRING      [HEX DUMP]:0C2445443830333735302D453343372D343446352D424230382D343141303434333346453245\n{noformat}\n\nThis confirmed that the raw value of the extension generated into the master certificate was an OctetString.\n\n4) Used the ASN.1 decoder at https://lapo.it/asn1js/ to decode the hex string \"OC244...\".  Result was:\n\n{noformat}\nUTF8String  ED803750-E3C7-44F5-BB08-41A04433FE2E\n{noformat}\n\nThis confirmed that the extension value for the master certificate was wrapped as a UTF8String.\n\n5) In the {{csr_attributes.yaml}} file under the agent's {{confdir}}, set the following content:\n\n{noformat}\n---\ncustom_attributes:\n  1.2.840.113549.1.9.7: 342thbjkt82094y0uthhor289jnqthpc2290\nextension_requests:\n  pp_image_name: my_ami_image\n{noformat}\n\n6) Modify the master's {{puppet.conf}} to have the following:\n\n{noformat}\n[main]\nautosign=true\ntrusted_node_data = true\n{noformat}\n\n7) Set the content in the {{.../environments/production/manifests/site.pp}} to:\n\n{code:puppet}\nnotify { 'trusty_info':\n  message  => $trusted[extensions][pp_image_name]\n}\n{code}\n\n8) Restart the puppetserver.\n\n9) Do an agent run against the master.  In the output of the agent run, saw:\n\n{noformat}\nNotice: my_ami_image\nNotice: /Stage[main]/Main/Notify[trusty_info]/message: defined 'message' as 'my_ami_image'\n{noformat}\n\nThis confirmed that the extension value for the agent certificate was properly decoded from the certificate when referenced as a trusted fact from a manifest.\n\n10) On the agent certificate that was generated during the agent run, ran {{openssl asn1parse -in agentcert.pem}}.  Output included the following:\n\n{noformat}\n880:d=5  hl=2 l=  11 prim: OBJECT            :1.3.6.1.4.1.34380.1.1.3\n893:d=5  hl=2 l=  14 prim: OCTET STRING      [HEX DUMP]:0C0C6D795F616D695F696D616765\n{noformat}\n\nThis confirmed that the raw value of the extension generated into the agent certificate was an OctetString.\n\n11) Used the ASN.1 decoder at https://lapo.it/asn1js/ to decode the hex string \"0C0C6...\".  Result was:\n\n{noformat}\nUTF8String  my_ami_image\n{noformat}\n\nThis confirmed that the extension value for the agent certificate was wrapped as a UTF8String.\n\n12) Cleared out the master's {{ssl-dir}} and re-started a 1.0.2 version of Puppet Server to regenerate the master certificate.\n\nThis was done in order to reinitialize the master with a certificate that did not have the new extension wrapping.  I originally tried to do the following steps with version 1.0.8 of Puppet Server but found that it was unexpectedly using the new extension wrapping behavior where this behavior was only expected to take effect for Puppet Server 2.x.  This led to filing SERVER-558.\n\n13) Cleared out the agent's {{ssl-dir}} and re-ran the agent against the Puppet Server 1.0.2 master.\n\n14) Using the same certificates generated for the Puppet Server 1.0.2 master, started a Puppet Server 1.0.8 master.  (This could be done via upgrading the Puppet Server 1.0.2 master package to Puppet Server 2.0.  As I was running from source, I just changed from the puppet-server-1.0.2 tag to the puppet-server-2.0.0 tag in my git repository).\n\n15) Did another agent run.  In the output of the agent run, saw:\n\n{noformat}\nNotice: my_ami_image\nNotice: /Stage[main]/Main/Notify[trusty_info]/message: defined 'message' as 'my_ami_image'\n{noformat}\n\nThis confirmed that the raw value of the extension generated into the agent certificate from an \"old\" version of the CA was still properly retrieved as a trusted fact when referenced from a manifest on the \"new\" Puppet Server.\n", "created": "2015-04-28T14:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Out of the functional testing that I did for this ticket, I filed two new tickets:\n\n* PUP-4467 - Netscape certificate extension uses wrong encoding.  This is a behavior that you'd only see with the Ruby Puppet CA running under Puppet 4.\n\n* SERVER-558 - Custom certificate extension values wrapped in Puppet Server 1.0.8.  This behavior was unexpected since we only had intended to apply the new encoding approach to Puppet Server 2.x and not Puppet Server 1.x as, strictly speaking, the new encoding approach is a \"breaking change\" - albeit one done to fix a defect.", "created": "2015-04-28T14:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] - anything else you want to cover on this before we close it out?", "created": "2015-04-28T14:35:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Moving this to resolved - will let [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] decide if he wants to do anything else with this.", "created": "2015-04-28T17:42:00.000000"}], "components": [], "created": "2014-10-28T17:40:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48919e0c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyowvj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2429973107_*|*_1_*:*_1_*:*_522800234_*|*_10007_*:*_1_*:*_752196182_*|*_3_*:*_1_*:*_289262651_*|*_5_*:*_1_*:*_44729403501_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_4763574170_*|*_10006_*:*_1_*:*_6967064679"}], "description": "Currently, the CA service signs all trusted facts as binary data wrapped in a DER Octet String, which is the same way the Ruby Puppet Master does it. According to RFC 5280, the values of all X.509 extensions must be a valid DER encoded structure contained within a DER Octet String, so the current method is technically incorrect. \n\nThe Bouncy Castle library assumes adherence to this standard, so trying to exactly mimic the way MRI Puppet signs trusted facts has proven to be very unwieldy and brittle.  \n\nOther extensions which contain a simple string as a value will use an IA5String type and then wrap it inside of a DER Octet String and we should probably start doing this before trusted facts become a widespread feature.\n\nI've attached a link to the section of RFC 5280 which explains this.\n\n----\nRisk assessment: Medium (manual acceptance test needed)\nProbability: Medium (impacts users using trusted facts)\nSeverity: High (security risk)", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "14944", "fixedVersions": ["SERVER 2.0.0"], "id": "14944", "issueType": "Bug", "key": "SERVER-119", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2015-04-28T17:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Not signing trusted facts properly according to RFC", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2014-10-28T16:01:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@573e905f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywxlz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_528713065_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_66261317747"}], "description": "This is a followup to SERVER-89.\n\nThe master certificate should have some DNS alt names automatically added to it unless the dns_alt_names is defined by the user.  The Ruby Puppet Master adds the following:\n* \"puppet\" (done in SERVER-89)\n* \"<fqdn>\"\n* \"puppet.<domain>\"\n\nIn order to determine the <fqdn> and <domain> we'll need to call in to Facter, which probably means just shelling out to it (rather than loading it up via JRuby).\n\nThe corresponding Ruby code for doing this is here: https://github.com/puppetlabs/puppet/blob/stable/lib/puppet/ssl/host.rb#L173-L180", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17263", "fixedVersions": [], "id": "17263", "issueType": "Task", "key": "SERVER-118", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Automatically add default DNS alt names to master certificate", "timeSpent": "PT0S", "updated": "2016-12-09T15:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Note this is code in jvm-certificate-authority, not puppet-server", "created": "2014-10-28T15:44:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "This is almost certainly a bug in Bouncy Castle. If you take the output of `sign-certificate`, extract its binary representation, and generate a native Java certificate from it, you can extract the Public key fine:\n\n{code}\n(require '[puppetlabs.certificate-authority.core :refer :all])\n=> nil\n(import (org.joda.time Period DateTime)\n        (java.security.cert CertificateFactory)\n        (java.io ByteArrayInputStream))\n=> java.io.ByteArrayInputStream\n(let [pk        (get-public-key (generate-key-pair))\n      bc-cert   (sign-certificate\n                  (cn \"myca\")\n                  (get-private-key (generate-key-pair))\n                  42\n                  (-> (DateTime/now) (.minus (Period/days 1)) (.toDate))\n                  (-> (DateTime/now) (.plus (Period/years 5)) (.toDate))\n                  (cn \"mysubject\")\n                  pk)\n      bytes     (.getEncoded bc-cert)\n      cert-fac  (CertificateFactory/getInstance \"X.509\")\n      java-cert (.generateCertificate cert-fac (ByteArrayInputStream. bytes))\n      java-pk   (.getPublicKey java-cert)]\n  (if (= (vec (.getEncoded java-pk))\n         (vec (.getEncoded pk)))\n    (println \"Keys are equal\")\n    (println \"Keys are different\")))\nKeys are equal\n=> nil\n{code}\n\nSo we should probably put together a nice Java-based repro case for the Bouncy Castle team. ", "created": "2014-10-28T16:25:00.000000"}], "components": [], "created": "2014-10-28T15:42:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46f2ce05"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywxkf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_529762077_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_66261388337"}], "description": "This REPL code demonstrates the issue:\n{code}\n(require '[puppetlabs.certificate-authority.core :refer :all])\n=> nil\n \n(def mycert\n  (sign-certificate \n    (cn \"myca\")\n    (get-private-key (generate-key-pair))\n    42\n    (-> (DateTime/now) (.minus (Period/days 1)) (.toDate))\n    (-> (DateTime/now) (.plus (Period/years 5)) (.toDate))\n    (cn \"mysubject\")\n    (get-public-key (generate-key-pair))))\n=> (var user/mycert)\n \n(.getPublicKey mycert)\n=> nil\n{code}\n\nThis seems like a bug, although based on a discussion myself, [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314], [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], we are not 100% convinced it is a bug.  If there is a bug here, it may well be inside BouncyCastle.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14942", "fixedVersions": [], "id": "14942", "issueType": "Bug", "key": "SERVER-117", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "calling .getPublicKey on a generated certificate returns null", "timeSpent": "PT0S", "updated": "2016-12-09T15:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Agree", "created": "2014-10-28T09:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Even though we want to have the underlying Apache {{CloseableHttpAsyncClient}} instance to be reused across client requests from Puppet Server as part of this work, we don't want to have `Keep-Alive` implicitly enabled such that multiple client requests could be performed on the same underlying network connection.  Doing so could have some negative security implications.  For example, if the HTTP authentication credentials were to change between requests but the same network connection were used to perform those requests, a server that does not re-authenticate the client could be inappropriately granting trust to the new user.\n\nThe client API created in TK-108 does not provide an explicit option for controlling \"keep-alive\" behavior on a connection.  Instead, the client can only control this by including an HTTP {{Connection}} header.  For any requests that the Puppet Server Ruby `http_client.rb` code makes, a {{Connection}} header with a value of {{close}} should be included.", "created": "2014-11-14T10:14:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Merged into {{future}} branch: https://github.com/puppetlabs/puppet-server/commit/f6f266314da601a3c932359ae814f0a17c9a90d6", "created": "2014-11-20T16:02:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "My understanding is that this is *not* going out in Puppet Server 1.0.  Also, I don't think this needs any manual review.  [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] -  feel free to correct me I'm wrong.", "created": "2014-12-08T15:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yep, it's out for Puppet Server 1.0.  Wouldn't hurt to do some functional review of it for later though, e.g., validating that clients are being reused with no extra leaking or errant behaviors introduced.", "created": "2014-12-08T15:46:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c08e1562ab90069f8aed4] -  - This is fixed in puppetlabs/master. It has not shipped in a release yet. The version in project.clj on master is 2.0.0, so I changed the fix version on this ticket to match that.", "created": "2015-03-03T13:27:00.000000"}], "components": [], "created": "2014-10-28T09:31:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e3e319e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgcf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_7844392_*|*_1_*:*_1_*:*_551688383_*|*_10007_*:*_1_*:*_174572831_*|*_3_*:*_1_*:*_346842491_*|*_10009_*:*_1_*:*_1546397218_*|*_5_*:*_1_*:*_56915182104_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_941091302"}], "description": "Each Puppet Server HTTP client request currently involves having a new HTTP client object created -- by virtue of using the {{SyncHttpClient.get}} and {{SyncHttpClient.post}} APIs.  To make these requests more efficient / performant, it would be better for a single client to be created and reused for each request made.  This would require a corresponding API to be added to the {{clj-http-client}} library.  TK-108 covers the addition to the {{clj-http-client}} library.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16850", "fixedVersions": ["SERVER 2.0.0"], "id": "16850", "issueType": "Improvement", "key": "SERVER-116", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2014-12-08T15:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reuse HTTP Client Instance Across Requests", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Agreed, thanks for the bug report.  Hopefully we'll be addressing this in a more robust way soon.", "created": "2014-10-28T09:42:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Accepted for PE 3.7.1. QA plans to validate.", "created": "2014-11-18T19:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] this is not scheduled for PE 3.7.1.", "created": "2014-11-18T22:04:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Removed from my list/ not in PE3.7.1", "created": "2014-11-19T10:09:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Moving this out of the hopper, if there is some concrete work to be done (sounds like there is a suggestion in the last comment on PUP-2189), that should be ticketed separately by something that actually lays out the task.", "created": "2017-11-10T11:18:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "Is there any update on this? I'm seeing occasional failures on new agents with errors like this:\n\n{noformat}\npuppet-agent[2318]: Could not request certificate: Could not intern from text/plain: header too long\n{noformat}\n\nIf you google that error, it's nearly always (supposedly) related to lack of disk space on the Puppetmaster causing zero byte files to be written out however my Puppetmaster doesn't have disk space issues.\n\nWe do have a separate process that is cleaning/revoking old certificates when hosts are decomissioned so it looks like there's a race condition that when this is happening, the CRL is often in an inconsistent state which causes failures when new hosts are created.\n\nIf I run something like `inotifywait -mr /etc/puppetlabs/puppet/ssl --timefmt '%T' --format '%T %:e %w %f'` I can see lots of sporadic access to this directory. Often if I run `ls -l /etc/puppetlabs/puppet/ssl/crl.pem` I can see for noticeable periods of time that the CRL is zero bytes in length, then is restored to its normal size, and then is truncated to zero bytes again, and then back to its normal size, and so on.\n\nAt the very least the new CRL should be written out to a temporary file and moved into place so the target file doesn't sit there truncated long enough for another host to try and read it.\n\n", "created": "2017-12-18T09:32:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "I've done some more investigating on this as I have upgraded my Puppetmaster from 2.8.0 to 5.1.4 today along with the relevant PuppetDB packages and I've found this CRL issue becomes far more prevalent, possibly because of SERVER-1933.\n\nWe have some hosts that are used for testing and get Puppet certificates generated and revoked on each test cycle. They are revoked with the following commands in sequence:\n{noformat}\npuppet node deactivate\npuppet node clean\npuppet cert clean\n{noformat}\nNow, I think that {{puppet cert clean}} is possibly a subset of {{puppet node clean}}, and what happens is that the current certificate is cleaned (the one that exists on the filesystem) with {{puppet node clean}} and thanks to PUP-2569 {{puppet cert clean}} then goes through {{inventory.txt}} and (for whatever reason) it contains ~ 500 previous certificates issued to this host and so starts trying to revoke each of them in sequence. Rather than revoke them all and write out the CRL once, it does them one by one. This is what is causing the CRL to constantly be deleted and regenerated as I noted above. While this is happening, because there is no locking around the CRL, any other type of Puppet host access breaks as the CRL is never in a usable state for long enough.\n\nI've alleviated the situation somewhat by running {{puppet cert reinventory}} which has helpfully reduced the size of {{inventory.txt}} from 27,000 entries down to 300 so there shouldn't be any trawling of {{inventory.txt}} for now however if I decommission a host at the same time as another host is accessing the Puppetmaster then it's still all too easy to get breakages, usually manifesting itself with {{SSL_connect returned=1 errno=0 state=unknown state: sslv3 alert certificate unknown}} errors.", "created": "2017-12-19T09:38:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "bq. Is there any update on this?\n\nThis is part of a web of CA improvments/fixes that we know we need to make soon and are hoping to tackle this work after we finish two other projects (JRuby9k performance improvements and file serving in clojure). I can't say for sure but I'm hopeful that the two improvements I listed as well as a refresh of our CA including this fix are the big ticket items to be released as opt-in in the Puppet 5.x series and default to on in Puppet 6 some time in 2018.", "created": "2017-12-20T10:44:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "We're still hoping to get this done for Puppet 6. Prior to that we've moved from doing 5.x releases to doing 6.0 pre-release builds. I think we're hoping for the mid-July milestone for general server improvements to Server CA (once we've removed the Ruby CA). I think we will be pushing those milestone builds in the community and through our PE beta program.", "created": "2018-05-18T12:49:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "The recent work shouldn't have totally resolved this issue, but, hopefully, greatly reduced it.", "created": "2018-09-19T09:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We have removed all entry points for interacting with the CA files outside of the Puppet Server CA API in Puppet 6, per the discussion in PUP-2189. Closing this. If anyone still has issues with it in Puppet 6, please reopen.", "created": "2018-09-19T09:46:00.000000"}, {"author": "59f91f3e34edd66a56c83302", "body": "When I first encountered this it was through two concurrent API requests though, not through concurrent use of the CLI tools. So unless the API has added locking to those requests (or you run the CA master with a single worker) this could still happen.", "created": "2018-09-19T11:47:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Yeah talking to some other folks I think my comment was premature. I'm going to reopen this. Sorry about that.", "created": "2018-09-19T11:50:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This might be trivial to fix in a clunky way ([~accountid:70121:4c2994e4-73a9-4e99-971a-6d93d39be223] has an idea we might want to look into), but otherwise this feels like a medium amount of work that might be better solved by moving away from either CRLs (to something like OCSP) or from storing CA artifacts on the filesystem (as opposed to postgres). It's not immediately on our roadmap unless a trivial fix works.", "created": "2019-02-26T14:56:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Since all interactions with the CRL are going through the API these days, it feels like we could use a Clojure agent to serialize the requests so that only one writes changes to that file at a time.", "created": "2019-02-26T16:10:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "A clunky fix would be better than nothing as this still happens all too regularly.\n\nWhat really needs to change is to build the new CRL as a temporary file somewhere and move it into place once it's built rather than what happens currently which is to nuke the original file and then rebuild it from scratch, because it's just not very quick at doing that and that's when we get the breakage.", "created": "2019-02-27T03:57:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] did you have thoughts on the proposed fix in the PR?", "created": "2019-07-18T17:31:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We merged the proposed naive fix, put this in Ready for Review, please let us know if this helps at least some of the cases.", "created": "2019-09-24T14:05:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "Do we have suggested steps for manually testing this change?\u00a0\u00a0", "created": "2019-09-24T14:14:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Could try signing a bunch of certs and them spamming revoke requests on them. I think that's the kind of behavior that caused this issue: overlapping revokes. But I'm not sure if there's a threshold beyond which this starts to be an issue (e.g. if the CRL has to be a certain length before it becomes a problem).", "created": "2019-09-24T15:10:00.000000"}, {"author": "557058:6fc1f430-f771-4686-a97e-21c5e35f9100", "body": "I think a lengthy CRL makes the issue significantly easier to reproduce.\u00a0 As it gets read and rewritten for each request if I remember correctly.\u00a0\u00a0", "created": "2019-09-24T15:35:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Puppet doesn't prevent the same serial number from being revoked multiple times (which is a different issue), but you can use that to your advantage to create a large CRL.", "created": "2019-09-24T16:27:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "FYI in our environment where we see this issue frequently:\n{noformat}\n# ls -lh /etc/puppetlabs/puppet/ssl/crl.pem\n-rw-r--r--. 1 puppet puppet 12M Sep 25 10:09 /etc/puppetlabs/puppet/ssl/crl.pem\n# openssl crl -in /etc/puppetlabs/puppet/ssl/crl.pem -noout -text | grep -c Serial\n245874{noformat}\n\u00a0", "created": "2019-09-25T03:14:00.000000"}, {"author": "557058:97578a32-3955-4c5c-939e-58a878437b49", "body": "Will this fix make it into the LTS?", "created": "2019-09-30T15:57:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "It hasn't yet, but it's simple enough that I don't mind backporting it if it ends up solving this for some folks. I'd like to see it in action though first, considering it does serialize pretty aggressively, and we want to make sure that doesn't cause any problems (like bottlenecking).", "created": "2019-09-30T16:05:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "So with this fix it seems like it's stopping concurrent write access to the CRL, but from what I can see it's not doing anything to prevent reads at the same time as the CRL is being written so it's still not going to fix the issue I keep seeing.\n\nEdit: I'm not sure this should be marked as resolved really.", "created": "2019-10-02T02:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This ticket deals specifically with permanent CRL corruption due to concurrent writes. I think the ticket that addresses your issue is https://puppet.atlassian.net/browse/SERVER-2565, which addresses reading while partially written, in addition to accidental truncation due to an aborted write.", "created": "2019-10-02T09:23:00.000000"}, {"author": "557058:e0389099-cc54-4f97-bd2a-7fa4735554bd", "body": "Sure, but that ticket didn't exist ~ 2 years ago when I first commented on this issue. I'll keep an eye on the other ticket.", "created": "2019-10-02T10:28:00.000000"}, {"author": "557058:adac4e58-01ac-4fce-8be9-94131c26c73d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] can you put the pe fix version on this? is it going to be the next zs?", "created": "2019-10-31T12:23:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We don't have PE fix versions for the SERVER project. But it's going out in all of the upcoming Zs, yes.", "created": "2019-10-31T12:33:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:adac4e58-01ac-4fce-8be9-94131c26c73d] sometimes, if we want that type of visibility on non-PE projects (open source projects), we can block the PE release ticket on this ticket, for instance.", "created": "2019-10-31T12:51:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-28T04:48:00.000000", "creator": "59f91f3e34edd66a56c83302", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48bb1361"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - $$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - 25-50% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The CRL process does not seem to lock the file as it should, this can lead to duplicate indexes or corruption. As we have more customers with more dynamic workloads that add or remove nodes automatically this will become more and more of an issue."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Major"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - Major"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2221"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvo2f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "We have synchronized write access to the CRL, so that each revoked certificate will write the CRL in serial, preventing corruption from competing requests writing to the file."}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "33162,34556"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_568481731_*|*_10009_*:*_1_*:*_613688920_*|*_4_*:*_1_*:*_16435489180_*|*_5_*:*_1_*:*_0_*|*_6_*:*_1_*:*_7421181_*|*_10006_*:*_2_*:*_12701539647_*|*_10005_*:*_3_*:*_125149244838"}], "description": "It seems like there is no locking when the server is revoking a cert and updating the CRL file. This should have similar locking as when it issues new certs and updates the inventory and serial files.\n\nThe code in question is here: https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L977-L989\n\nThis is the same issue as PUP-2189 really, except for the clojure code.", "epicLinkSummary": "Improve Certificate Revocation", "estimate": "PT0S", "externalId": "16125", "fixedVersions": ["SERVER 5.3.10", "SERVER 6.7.0"], "id": "16125", "issueType": "Bug", "key": "SERVER-115", "labels": ["AWS1", "cstop10"], "originalEstimate": "PT0S", "parent": "15766", "parentSummary": "Improve Certificate Revocation", "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "59f91f3e34edd66a56c83302", "resolution": "Fixed", "resolutionDate": "2019-10-01T16:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Concurrent access to the CRL can corrupt it", "timeSpent": "PT0S", "updated": "2021-06-23T08:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] - \n\nWe need to decide on the API for this new endpoint - continuing this discussion from SERVER-92 ... \n\nIn SERVER-92, you advocated for {{/puppet-admin}} as the initial path element for this new endpoint.  If we combine that with the rest of [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]'s suggestion, that would make the entire path {{/puppet-admin/v1/flush_environment_cache}}.  That sounds like plan to me - anybody else have an opinion?\n\nAs far as HTTP verb - seems like this should obviously be a {{POST}}.\n\nIs there anything else that needs to be ironed-out on this issue?", "created": "2014-11-18T16:37:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Those paths sound quite reasonable to me FWIW", "created": "2014-11-18T19:21:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Accepted for PE 3.7.1. QA plans to validate.", "created": "2014-11-18T19:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The pe-console-services web apps all use the '-api' suffix on the endpoints that expose HTTP APIs (classifier-api, rbac-api).  That's why I suggested 'puppet-admin-api'.  I don't care that much but it seems like consistency is desirable.", "created": "2014-11-18T22:03:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "+1 for consistency w/ classifier and RBAC.\n\nAlso, it just occurred to me that my previous suggestion for the path is horrible because it uses both dashes and underscores.  It seems like the master's existing API uses underscores (eg, {{file_metadata}}, {{resource_type}}, etc.) ... but it also sounds like our newer APIs use dashes?\n\nIt seems like we can't achieve universal consistency, so it would be best to stay internally-consistent and go with underscores.  Although ... perhaps we want to say that our new APIs like this are just going to follow our new best practices ... and go with dashes instead.  Long story short, as long as we pick just one, I'll be happy.", "created": "2014-11-19T10:20:00.000000"}, {"author": "557058:1381f112-1c4e-4869-ba34-30602d945124", "body": "I agree that the underscores vs dashes discussion was regarding keys in JSON payloads, not URLs. The main reason that underscores were chosen was because they are valid in identifiers in more languages than dashes, thus simplifying use of the JSON payload in such languages (e.g. javascript). This is not a concern for URLs.", "created": "2014-11-19T14:45:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "It occurs to me that a more RESTful design for this endpoint might be: {{DELETE /environment-cache}}.  AFAIK it's something of an anti-pattern to have a verb (eg, {{flush}}) in the URL path.\n\nFor the time being, I'm implementing this based on the conversation above, ie, {{POST /puppet-admin-api/v1/flush-environment-cache}}.  But, I'm interested to keep discussing if anybody else has any more thoughts.", "created": "2014-11-20T10:00:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I agree with [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] that putting a verb in the URI doesn't seem REST-ful.  {{DELETE /puppet-admin-api/v1/environment-cache}} sounds like an improvement to me.", "created": "2014-11-20T12:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I personally think that \"REST-ful\" is an almost un-attainable, indefinable concept... and that even if we were going to try to achieve it, that the spirit of it is that a DELETE operation is intended to delete an individual resource by id.  In general I don't think that REST maps very well to the core functionality this new endpoint will be exposing, and my inclination would be to focus on the common use case of our users as our top priority.  That, in my mind, is \"I wish to issue a curl command that will flush the cache, and I'd prefer to do so without giving a moment's thought to what would be the most REST-ful way to express my request\".  So my vote is that if you do *either* a GET or a POST to /flush-environment-cache, then it just works.  The more I think about it, the less willing I am to even have it be forced to be a POST request, since GET is what curl is going to do by default, and I expect that over 50% of the consumption of this endpoint will be via curl as opposed to via code written by someone who is interested in adhering to REST principles.\n\nThat's my 2 cents, but UX should probably be making the call on this, not me.  [~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df]?", "created": "2014-11-20T19:22:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I'm fine if we go with {{/flush-environment-cache}} and avoid {{DELETE}} requests.  I'll grant that what we're doing with this endpoint isn't technically 'deleting' anything anyway, and doesn't map directly to the normal CRUD paradigm.\n\nHowever, I think it's wrong, according to the HTTP spec, to use {{GET}} for this endpoint, since it is very specifically for *retrieving information* and there is nothing to retrieve in this case. \n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - I understand your concerns about the user impact of this.  In short, I disagree - I think that {{-X POST}} is unlikely to scare any of our users bold enough to interact with this endpoint (outside of the console), especially given that the rest of our API already uses HTTP verbs in a somewhat sane manner.\n\n[~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] - is there any chance we can get an Executive Decision from UX on this ASAP?  We need to get this finished by tomorrow (Friday) for PE 3.7.1.", "created": "2014-11-20T20:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "\"The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.\"\n\nWe're very specifically not conforming to that either.  So why make it harder on the user when we're just making up the semantics anyway?  If we make it only accept POST, then the 90% case for command line users is that they're going to run curl w/o specifying a verb, get a cryptic error because the request was a GET, waste some time figuring out why, and then add the \"-X POST\" while muttering under their breath that it's stupid.\n\nOr we could make a GET request return a useful error message that tells them they needed to make a POST instead, in which case, if we knew what they wanted us to do, why didn't we just do it?\n\nThere's never going to be anything to \"retrieve\" from this endpoint other than an ACK that the request to flush has been received, so it's not like supporting GET right now would block us from using it for something more REST-y in the future...", "created": "2014-11-21T05:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Also this shouldn't block us from getting a voom build out today if [~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] or [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] haven't made a call.  Get something merged and get a build out and let QA start testing.  If we change the supported verbs early next week that won't have a huge impact on test coverage.", "created": "2014-11-21T05:43:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "If you do make it a GET (GET is supposed to be idempotent, but ignoring that), make sure you specify no-cache headers in the response.  Otherwise your GET might be eaten by an aggressive caching-proxy (if it happens to be between you and the service).  I have examples of the appropriate headers if it would be helpful.", "created": "2014-11-21T08:51:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "FWIW, I still believe that from a REST-ful standpoint that {{DELETE}} is the best fit for this use case.  {{DELETE}} does not have to refer to an individual resource by id.  The result of this operation on the server is that the cached objects are deleted, so this semantically seems like a better fit than {{POST}} or {{GET}}.\n\n[~accountid:557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8] raises an excellent point on caching behavior.  Per the HTTP 1.1 RFC -- http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html -- {{DELETE}} and {{POST}} requests would not be considered cacheable unless specific HTTP headers were included to indicate otherwise whereas {{GET}} requests by default could be cached.  So long these requests are being routed over SSL, I wouldn't expect a proxy to cache even the {{GET}} requests without the extra cache-control headers (since the content of the request would be completely opaque to the proxy).  If, however, the master were being hosted under a plaintext HTTP binding -- where the requests over SSL are terminated externally to the master -- any direct {{GET}} requests made to the master over plaintext via a proxy could be susceptible to caching.\n\nHaving these requests be cached by an intermediate proxy -- or the client itself -- would be bad for these requests since the user could be fooled into believing that a successful response to the request would indicate that the cache was flushed when in reality the request was never processed by the master.\n\nIf we were to go with a {{GET}} request, I think we should include an HTTP {{Cache-Control: no-cache}} header in the response.  I think it's simpler, however, to not have to worry about the caching semantics and go with {{POST}} -- or preferably {{DELETE}} -- instead.\n\nAs the work stands on the associated PR right now, a {{DELETE}} with an endpoint of {{/puppet-admin-api/v1/environment-cache}} is being used.  Unless we get feedback from [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and/or [~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] otherwise, I'd propose that we merge it like that for our voom build today and rework later when a decision is reached.\n\n\n", "created": "2014-11-21T09:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "To be clear: I'm not trying to make an argument about one thing being more REST-ful than another", "created": "2014-11-21T09:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}\nTo be clear: I'm not trying to make an argument about one thing being more REST-ful than another ... and if I have to make a choice between academic semi-adherence to whatever definition of \"REST-ful\" that we come up with vs. providing the most intuitive user experience for our end users, I'd probably choose the latter.\n{quote}\n\nThat came through perfectly clear to me from your previous comments.  :)\n\nI'll cede on going with {{GET /puppet-admin-api/v1/flush-environment-cache}} in combination with the {{Cache-Control: no-cache}} header in the response, assuming [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5]'s onboard.  And this would all be pending additional comments from [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and/or [~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df], of course.", "created": "2014-11-21T09:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "cool", "created": "2014-11-21T10:28:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "sounds like a plan.", "created": "2014-11-21T10:33:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "Commented on the PR as well, but {{DELETE /puppet-admin-api/v1/environment-cache}} seems more semantic and the result more obvious than {{GET /puppet-admin-api/v1/flush-environment-cache}}. UX recommends the DELETE construction.", "created": "2014-11-21T11:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] [~accountid:557058:1381f112-1c4e-4869-ba34-30602d945124] [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] [~accountid:557058:8db25e7a-4bdb-4fe2-af6b-f0a9bc714e12] this feature should be available in the latest PE builds.  Not sure if the downstream stuff has been tackled yet but I believe the NC service was going to be updated to call this flush endpoint before updating its cache in the case where \"the button\" had been pressed, and then [~accountid:557058:8db25e7a-4bdb-4fe2-af6b-f0a9bc714e12] and co. just need to turn the button back on?", "created": "2014-11-26T09:11:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] The button was turned back on with PE-6102, which is in the current build.", "created": "2014-11-26T09:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "And the button just hits the NC like it did before, and the NC has already been updated to hit the new Puppet Server cache flush endpoint?", "created": "2014-11-26T10:29:00.000000"}, {"author": "557058:dbc53efe-57a8-4acd-b329-21bc29e30ce8", "body": "The code POSTS to classifier > /v1/update-classes.  I haven't seen any update to the classifier code to use the flush endpoint. Ping  [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9]  [~accountid:557058:1381f112-1c4e-4869-ba34-30602d945124]\n", "created": "2014-11-26T13:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e484fb55-2ddc-43a0-968e-11d70ae3153c] [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] ^^ that seems like it would be a blocker if it's true.", "created": "2014-11-26T13:43:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Per conversation with [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9], we do not believe the NC has been updated to use the new endpoint. [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] will be attempting to introduce a fix today.", "created": "2014-11-26T13:56:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Ping [~accountid:557058:1d244b27-1afc-481c-a463-e4c0cefad02f] [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] [~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578]. Until we have updated NC, it appears we are not CC.", "created": "2014-11-26T13:56:00.000000"}, {"author": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "body": "NC is updated and the changes have been promoted into PE.", "created": "2014-11-26T20:00:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "Thanks [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9]. Fix should be present in 3.7.1-rc1-4-g564c46f.", "created": "2014-11-26T20:28:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I will validate this for PE 3.7.1", "created": "2014-12-01T09:38:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated:\n# Only works on a master.\n# Add master hostname to whitelist in ca.conf and pe-puppet-server.conf\nexport cacert=\"/etc/puppetlabs/puppet/ssl/ca/ca_crt.pem\"\nexport key=\"/etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem\"\nexport hostcert=\"/etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem\"\nexport authString=\"--cacert $cacert --key $key --cert $hostcert\"\ncurl -X DELETE $authString https://$(hostname -f):8140/puppet-admin-api/v1/environment-cache\n\nVerified \"2014-12-01 16:41:55,836 INFO  [p.s.j.puppet-environments] Marking all registered environments as expired.\" message is put into log file and that the cache is functionally dumped.\n\n", "created": "2014-12-01T17:47:00.000000"}], "components": [], "created": "2014-10-27T16:52:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7a504c90"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-92"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypq5b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_336871627_*|*_1_*:*_1_*:*_161892649_*|*_10007_*:*_1_*:*_80978477_*|*_3_*:*_1_*:*_91646921_*|*_10009_*:*_1_*:*_539524786_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1820011101"}], "description": "This ticket is a follow-on to SERVER-112 and SERVER-113.  Once we have an environment cache entry factory that gives us a function to use to expire all of the environment cache data, and an admin HTTP web service, we need to add an endpoint to the admin webservice that calls the flush function on the cache entry object.", "epicLinkSummary": "Environment Caching", "estimate": "PT0S", "externalId": "17480", "fixedVersions": ["SERVER 1.0.0"], "id": "17480", "issueType": "New Feature", "key": "SERVER-114", "labels": [], "originalEstimate": "PT0S", "parent": "15207", "parentSummary": "Environment Caching", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-01T17:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add 'flush_environment_cache' admin endpoint", "timeSpent": "PT0S", "updated": "2016-01-20T11:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:da659199-c749-426a-b5d9-6563e2c1710a", "body": "What do you mean, here? \"Until we have a general-purpose solution for authorization\"", "created": "2014-11-17T14:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Basically I mean \"until we implement a replacement for auth.conf for puppet server\"", "created": "2014-11-17T15:02:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Accepted for PE 3.7.1. QA plans to validate.", "created": "2014-11-18T19:30:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated with cmd line and GUI methods.  Closing as fixed & Validated.\n", "created": "2014-12-01T17:45:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated.", "created": "2014-12-01T17:48:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Reopening to specifically test positive and negative white list behavior.", "created": "2014-12-01T17:49:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] or [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I need to know what the expected white list behavior is here.  For most HTTP CA end point operations, we update ca.conf.\n\nWhat files must be modified to enable the puppet-admin-api/v1/environment-cache endpoint?", "created": "2014-12-01T18:42:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] In the standard puppet-server package, this would go into the {{puppet-admin.client-whitelist}} section of the {{puppetserver.conf}} file.  See: https://github.com/puppetlabs/puppet-server/blob/master/documentation/configuration.markdown#puppetserverconf.  You should also be able to do this via PE classification as you would do for other master-managed variables in the console.\n\n", "created": "2014-12-01T18:59:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated that we can't curl the flush end point unless the host name is added to the pe-puppetserver.conf file and the service restarted.", "created": "2014-12-02T11:14:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "https://testrail.ops.puppetlabs.net/index.php?/cases/view/62458&group_by=cases:section_id&group_order=asc&group_id=12946", "created": "2015-01-29T16:22:00.000000"}], "components": [], "created": "2014-10-27T16:46:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7625cdea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-92"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyphb3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_22298239_*|*_1_*:*_1_*:*_162257164_*|*_10007_*:*_1_*:*_140465340_*|*_3_*:*_1_*:*_349001334_*|*_10009_*:*_2_*:*_1099078380_*|*_5_*:*_1_*:*_1339393011_*|*_6_*:*_2_*:*_73536_*|*_10006_*:*_1_*:*_1320932132"}], "description": "Introduce a web service that will provide an HTTP-based admin API for Puppet Server.  Until we have a general-purpose solution for authorization, it will need a config setting for whitelisting certs.  This ticket is just about getting the skeleton in place; subsequent tests will cover functional endpoints.", "epicLinkSummary": "Environment Caching", "estimate": "PT0S", "externalId": "16344", "fixedVersions": ["SERVER 1.0.0"], "id": "16344", "issueType": "New Feature", "key": "SERVER-113", "labels": [], "originalEstimate": "PT0S", "parent": "15207", "parentSummary": "Environment Caching", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-02T11:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "create admin HTTP api, with configurable authorization via cert whitelist", "timeSpent": "PT0S", "updated": "2015-01-29T16:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I will validate this for PE 3.7.1", "created": "2014-12-01T09:36:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated.", "created": "2014-12-01T17:48:00.000000"}], "components": [], "created": "2014-10-27T16:18:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b5d183"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-92"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypjan:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_150650_*|*_1_*:*_1_*:*_163888419_*|*_10007_*:*_1_*:*_260371777_*|*_3_*:*_1_*:*_987640163_*|*_10009_*:*_2_*:*_30058716_*|*_5_*:*_1_*:*_1442973117_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_147895544"}], "description": "This is a follow-up to PUP-3555.  Once we have a way in Puppet to provide an alternate implementation of the factory that constructs environment cache entry objects, we need to implement one in Puppet Server.  The implementation should expose a function that can be called to request a flush for all cached environments.", "epicLinkSummary": "Environment Caching", "estimate": "PT0S", "externalId": "15208", "fixedVersions": ["SERVER 1.0.0"], "id": "15208", "issueType": "New Feature", "key": "SERVER-112", "labels": [], "originalEstimate": "PT0S", "parent": "15207", "parentSummary": "Environment Caching", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-01T17:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "create environment cache entry factory implementation that allows flushing all environments", "timeSpent": "PT0S", "updated": "2016-01-20T11:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c15ada1d81f0069d8e3ba] -  This is the ticket about auth.conf that I mentioned.", "created": "2015-02-04T05:04:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:6323b259d1b3f6489b9466a7] - here ya go", "created": "2015-02-04T05:34:00.000000"}, {"author": "6323b259d1b3f6489b9466a7", "body": "Discussed at contributors' summit w/[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], [~accountid:623c15ada1d81f0069d8e3ba], and [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] :\n\n* current auth.conf is a superset of cert-whitelist functionality in other services\n* we could port, then augment existing auth.conf functionality\n** take a directory of auth.conf snippets instead of a single file, perhaps\n** include in HTTP reply the rule (maybe with file/line #) that caused the denial", "created": "2015-02-04T05:36:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "There's a big mailing list thread here: https://groups.google.com/d/topic/puppet-dev/P6vas3tvUzM/discussion\n\nAnd Brice's repository: https://github.com/masterzen/trapperkeeper-authorization\n\nI'm going to take a swing at summarizing the requirements from that thread so we can talk about the state of the implementation w/r/t feature completeness and pull it in.", "created": "2015-06-16T14:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Great, thanks [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0]!", "created": "2015-06-17T01:46:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:623c15ada1d81f0069d8e3ba] Just as an FYI, I've started the process of migrating your repository into the puppetlabs namespace on Github.  I'm taking this as a pretty light and ad-hoc process, so if you have any preferences for how or what you'd like to see come out of the migration, please let me know and I'll do my best to make it happen.\n\nThe plan is basically:\n\n 1. Create a new repo, [puppetlabs/trapperkeeper-authorization|https://github.com/puppetlabs/trapperkeeper-authorization] which has master at your current master of 1ac7445 (done)\n 2. Update the README with what we know or have decided to do so far, credits to you, etc... (Up in [PR 1|https://github.com/puppetlabs/trapperkeeper-authorization/pull/1]).\n 3. Configure Travis, Jenkins, Nexus releases, Clojars releases as we do with other TK services. (done, but needs to be verified and exercised).\n\nOnce we have this established, [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] will be re-working the library into a TK service which will likely involve removing some of the IP and DNS based authorizations and other tidying-up things.\n\nPlease let me know if you have any suggestions or anything.  I'm hoping you'll be able to keep your repository, but maybe rename it and then fork puppetlabs/trapperkeeper-authorization if you have any outstanding topic branches or anything you'd like to contribute.\n\nThanks again for all of your hard work on this, I'm really excited to see a more robust authorization system used in puppet-server.", "created": "2015-08-07T16:39:00.000000"}, {"author": "623c15ada1d81f0069d8e3ba", "body": "Hi [~accountid:623c12b6ee1b5a0070293582],\n\nI'm fine with the overall plan.\nI still have an almost ready version of the report system (ie SERVER-804). When it'll be ready I'll send a PR to the Puppetlabs version of the library, thus you'll be able to review the code.\nI know my time-scale is not Puppetlabs one, but I'd like to keep contributing to this codebase whenever I can, so feel free to add me as watcher on upcoming tickets. That way, if I find something I can do, I'll be able to send a PR.\n\nThanks!", "created": "2015-08-08T04:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] it is theoretically possible that we could do an OSS release that contains this prior to PE ship.  I expect that we will strive for that, though it obviously won't be as far in advance as we'd all prefer.", "created": "2015-09-03T03:04:00.000000"}, {"author": "557058:8527c9e8-8e3f-451c-b529-f6fe014233ed", "body": "To add a quick story form the field. Customer needed their master of masters to copy the encryption keys ( think eyaml/r10k private ) to their complication masters. This process can't easily be done with a file() function always as it seems to fail on things that are not owner by pe-puppet. Sourcing root owned files works,however putting this encryption key into the modulepath meant putting the key in the git repository (control repo) and thus negating its usefulness as its meant to keep entries in that repo secure. \n\nThe best solution we could come up with was a custom fileserver mount point, however the authorization layer of fileserver.conf is deprecated and its recommended to use auth.conf. Making Automated  modifications to auth.conf in PE is extremely elaborate, as the current module (erb) code conditionally manages the contents of the file based on a md5 hash. This hash is generated each release and the puppetrun only continues to manage the contents of this file if its still its default.\n\nWhile augeas does have a lens for auth.conf , and a type and provider , this whole fact conditional makes it impossible  to modify auth.conf in the same run as the facts are collected (showing a default auth.conf), the file is then modified via the type and provider, but the puppet_enterprise code then manages the contents again, effectively reverting the changes. This could be fixed with some resource ordering or exporting FACTER_custom_auth_conf= fact overrides but neither is considered sane.\n\nMy hope would be this replacement would allow for easy replication of the same problem with results that don't require as much elaborate code. The real gist of the story is the ability to easily make changes to this file.", "created": "2015-10-16T12:25:00.000000"}], "components": [], "created": "2014-10-27T15:23:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Integration"}, {"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Release Engineering"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald", "Jade"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Organizational Scale"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@169499b2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Green: auth.conf replacement"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoytj:"}, {"fieldName": "UX Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623cfc5b01f8660070b787cf"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9839666431_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_23695987841_*|*_10014_*:*_1_*:*_67551498"}], "description": "For endpoints that live directly on the clojure side of the fence, we don't run them through the existing auth.conf ruby code to handle authorization.  This means that any endpoints that do require authorization need to have their own special settings created for them, which is not a good long-term solution.  Instead, we should come up with a general solution that can be used across all of the future endpoints.  Hopefully this ends up being some ring middleware that can be re-used in many places and reads from a well-known config file/format.\n\nWe should also probably discuss whether or not it would make sense to look into integrating with the RBAC service.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15806", "fixedVersions": ["SERVER 2.2.0"], "id": "15806", "issueType": "Epic", "key": "SERVER-111", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2015-11-20T12:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "auth.conf replacement", "timeSpent": "PT0S", "updated": "2016-09-23T08:01:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think it might be better to defer the work on this one until after the implementation work is done and committed for SERVER-150 since that work will have some significant implications on the threading model around how pool instances are created and flushed.  Hopefully some of the new plumbing laid down by SERVER-150 will be directly reusable for the work on this ticket.", "created": "2014-12-02T13:07:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This may be fixed once the SERVER-150 PR is merged, since we switched over to using agents.", "created": "2014-12-09T12:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm still seeing this on 1.0.0.  An easy way to repro it is to set the heap size too large so that we hit the error when checking available RAM during startup.  The JRuby instances appear to go on attempting to initialize even after the error has been thrown.", "created": "2015-01-01T12:49:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "{quote}I'm still seeing this on 1.0.0. An easy way to repro it is to set the heap size too large so that we hit the error when checking available RAM during startup.{quote}\n\nJust as an FYI if you're running from source on a Mac the memory check will be skipped unless /proc/meminfo is created.  All it needs is a line {{MemTotal:        1878212 kB}} to work from source on a Mac.", "created": "2015-01-02T11:17:00.000000"}], "components": [], "created": "2014-10-26T07:26:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71cfa6d8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-447"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3z3j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_731738266_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_66261912234"}], "description": "If an error occurs during initialization of the JRuby pool (e.g. just make a typo in the ruby code that gets loaded into the interpreter), `shutdown-on-error` is called and the TK shutdown logging appears as expected, but the background threads that are initializing the remaining JRuby instances keep running, and the app does not exit.", "epicLinkSummary": "Non PE- Puppet Server tickets to be scoped", "estimate": "PT0S", "externalId": "15528", "fixedVersions": ["SERVER 1.y", "SERVER 2.y"], "id": "15528", "issueType": "Bug", "key": "SERVER-110", "labels": [], "originalEstimate": "PT0S", "parent": "16693", "parentSummary": "Non PE- Puppet Server tickets to be scoped", "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:47:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "shutdown-on-error doesn't terminate app if error occurs during jruby startup", "timeSpent": "PT0S", "updated": "2016-12-09T15:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] ping... we'll triage this for next sprint.", "created": "2014-10-24T13:08:00.000000"}], "components": [], "created": "2014-10-24T13:08:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e58e47a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywiuf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_882252109_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_66263910698"}], "description": "We moved pe-puppet-server-extensions over to use the built-in lein release task, rather than the older lein plugin.  The job is here:\n\nhttp://jenkins-enterprise.delivery.puppetlabs.net/view/trapperkeeper/job/pe-puppet-server-extensions_release/\n\ntwo possible issues with this job:\n\n1. it tried to sign the git tag that it was creating, and it doesn't have any gpg keys available, so it failed to tag (even though the job succeeded afterwards).  So we need to either a) figure out how to securely give it access to signing keys, or b) temporarily tell it not to try to sign the tag.\n\n2. we don't know 100% for sure whether the release plugin would tag the git repo with a prefix or not, by default... e.g. would the tag have been \"0.3.0\" or \"pe-puppet-server-extensions-0.3.0\".  I think we'd all prefer no prefix, and a brief peek at the source code made it look like it wouldn't put a prefix on there by default... so Haus manually tagged this commit as 0.3.0 for now... but we need to validate that that is actually the behavior of the release task.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15805", "fixedVersions": [], "id": "15805", "issueType": "Bug", "key": "SERVER-140", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "figure out how to tag w/gpg, or disable gpg, on lein release task jobs", "timeSpent": "PT0S", "updated": "2016-12-09T15:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-10-24T10:11:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54c4d22a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypkuv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_113941_*|*_10007_*:*_1_*:*_20719067_*|*_3_*:*_1_*:*_2348548_*|*_5_*:*_1_*:*_1128040381_*|*_6_*:*_1_*:*_0"}], "description": "This issue covers a few follow-up items from the documentation work done in SERVER-104:\n\n* Could clarify the certificate header vs. SSL client certificate usage in the External SSL Termination doc a little more.\n\n* Could include a link in the main README to the new External SSL Termination doc.\n\n* Should remove the note about SERVER-18 being a known issue from known_issues.markdown.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16677", "fixedVersions": ["SERVER 0.4.0"], "id": "16677", "issueType": "Improvement", "key": "SERVER-108", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Followup External SSL Termination comments from SERVER-104", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] any of you care to weigh in on the severity of this?", "created": "2014-10-23T16:00:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] is this a common deployment pattern? Is it to get around the difference between the hiera command-line util's expectation of /etc/hiera.yaml and puppet's expectation of /etc/(puppetlabs/)puppet/hiera.yaml?", "created": "2014-10-23T16:13:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "I don't think I'd call it common, but enough that people are going to run into it in the field and have no idea why.\n\nIf you know which log files to look at, it's pretty trivial to debug.", "created": "2014-10-23T17:08:00.000000"}, {"author": "557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - any estimate on a fix?", "created": "2014-10-23T17:13:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "By the way, the workflow we're using in the classroom is how I discovered this. We symlink live paths into student's git repositories for convenience.\n\nI suspect that is relatively common for dev workstations in the field too.\n", "created": "2014-10-23T17:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] no, it would take some hands-on poking to come up with an estimate.\n\nBut even if we are able to find a fix, we will have to roll a new build of Puppet Server that contains the fix, and either do an OSS release or ship PE with a version that is not released in OSS land.  Not impossible, but involves release shenanigans that we haven't defined a process for yet and were hoping to avoid.\n\nI can budget some time tomorrow to explore if we think it's worrisome enough.", "created": "2014-10-23T18:41:00.000000"}, {"author": "557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - I don't think this is a blocking issue for PE 3.7 so I don't think this needs to be dealt with tomorrow.  We can consider it for 3.7.1. -- CC [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] & [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] for PO confirmation", "created": "2014-10-23T18:51:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Not a blocker IMO.", "created": "2014-10-23T18:56:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "+1", "created": "2014-10-23T21:49:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "That said, should priority on this be raised above normal?", "created": "2014-10-23T21:50:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I've started looking into this.  Here are my initial findings:\n* could not reproduce on OSX, running from source, latest commit in master\n* could reproduce on ubuntu 12, running 0.3.0, installed from packages.\n** contents of hiera.yaml seem to have no affect on the problem (it can be empty)\n** permissions of both the symlink and the actual file seem to have no affect on the behavior", "created": "2014-11-07T12:01:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] - I've only been able to reproduce it when the target of the symlink is contained in a directory that the 'puppet' user does not have read access to", "created": "2014-11-07T16:15:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Also, it just occurred to me that this may be a change in behavior b/w the MRI master and puppet server.  Since the MRI master typically starts as root and then changes its uid, this situation probably would have been tolerated in the past.  Puppet Server, on the other hand, starts with uid 'puppet', which could be the change that causes this error to surface.\n\nSee also TK-115.", "created": "2014-11-07T16:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] ping!  Can we close this out?  Do you know whether your use case could have been a perms issue?", "created": "2014-11-14T16:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Closing this for now.  [~accountid:557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b] if you determine that there was something other than a permissions error and we need to investigate further, feel free to re-open.", "created": "2014-11-17T21:19:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "Yes, [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] has nailed it. Also, the suggested privilege dropping is probably exactly why this didn't surface before.", "created": "2014-11-18T16:38:00.000000"}], "components": [], "created": "2014-10-23T15:38:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5aac7ed3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypjcf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_961421974_*|*_3_*:*_1_*:*_86265966_*|*_5_*:*_1_*:*_58709746707_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_882057588_*|*_10006_*:*_1_*:*_254291411"}], "description": "Puppetserver crashes on startup when {{hiera.yaml}} is a symlink to an existing file.\n\n{code}\n2014-10-23 21:32:38,433 ERROR [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Unable to borrow JRuby instance from pool\n\tat puppetlabs.services.jruby.jruby_puppet_core$validate_instance_from_pool_BANG_.invoke(jruby_puppet_core.clj:192) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval8147$borrow_from_pool__8148$fn__8149.invoke(jruby_puppet_core.clj:250) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval8147$borrow_from_pool__8148.invoke(jruby_puppet_core.clj:243) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__8272$service_fnk__5254__auto___positional$reify__8283.borrow_instance(jruby_puppet_service.clj:36) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_core$eval10905$get_puppet_config__10906$fn__10907.invoke(puppet_server_config_core.clj:99) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_core$eval10905$get_puppet_config__10906.invoke(puppet_server_config_core.clj:94) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_service$reify__10931$service_fnk__5254__auto___positional$reify__10942.init(puppet_server_config_service.clj:24) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval5090$fn__5117$G__5082__5120.invoke(services.clj:12) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval5090$fn__5117$G__5081__5124.invoke(services.clj:12) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$run_lifecycle_fn_BANG_.invoke(internal.clj:144) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$run_lifecycle_fns.invoke(internal.clj:172) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$build_app_STAR_$reify__5945.init(internal.clj:436) [na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_$fn__5957.invoke(internal.clj:462) [na:na]\n\tat puppetlabs.trapperkeeper.internal$boot_services_STAR_.invoke(internal.clj:461) [na:na]\n\tat puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:113) [na:na]\n\tat puppetlabs.trapperkeeper.core$run.invoke(core.clj:144) [na:na]\n\tat puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159) [na:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:457) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.invoke(Var.java:427) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:172) [puppet-server-release.jar:na]\n\tat clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:617) [puppet-server-release.jar:na]\n\tat puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.applyTo(RestFn.java:137) [puppet-server-release.jar:na]\n\tat puppetlabs.trapperkeeper.main.main(Unknown Source) [puppet-server-release.jar:na]\nCaused by: org.jruby.embed.InvokeFailedException: (RuntimeError) Got 1 failure(s) while initializing: File[/etc/puppetlabs/puppet/hiera.yaml]: change from absent to file failed: Could not set 'file' on ensure: No such file or directory - /etc/puppetlabs/puppet/hiera.yaml\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(EmbedRubyObjectAdapterImpl.java:317) ~[puppet-server-release.jar:na]\n\tat org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(EmbedRubyObjectAdapterImpl.java:169) ~[puppet-server-release.jar:na]\n\tat org.jruby.embed.ScriptingContainer.callMethod(ScriptingContainer.java:1485) ~[puppet-server-release.jar:na]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_71-icedtea]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_71-icedtea]\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_71-icedtea]\n\tat java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71-icedtea]\n\tat clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) ~[puppet-server-release.jar:na]\n\tat clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) ~[puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval7982$create_jruby_instance__7983$fn__7984.invoke(jruby_puppet_core.clj:145) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval7982$create_jruby_instance__7983.invoke(jruby_puppet_core.clj:126) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval8107$prime_pools_BANG___8108$fn__8109.invoke(jruby_puppet_core.clj:227) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval8107$prime_pools_BANG___8108.invoke(jruby_puppet_core.clj:215) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__8272$service_fnk__5254__auto___positional$reify__8283$fn__8284$fn__8285.invoke(jruby_puppet_service.clj:29) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254) ~[na:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:167) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyTo(AFn.java:151) [puppet-server-release.jar:na]\n\tat clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.invoke(RestFn.java:421) [puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__8272$service_fnk__5254__auto___positional$reify__8283$fn__8284.invoke(jruby_puppet_service.clj:28) ~[na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836) ~[puppet-server-release.jar:na]\n\tat clojure.lang.AFn.call(AFn.java:18) [puppet-server-release.jar:na]\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_71-icedtea]\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_71-icedtea]\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_71-icedtea]\n\tat java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_71-icedtea]\nCaused by: org.jruby.exceptions.RaiseException: (RuntimeError) Got 1 failure(s) while initializing: File[/etc/puppetlabs/puppet/hiera.yaml]: change from absent to file failed: Could not set 'file' on ensure: No such file or directory - /etc/puppetlabs/puppet/hiera.yaml\n\tat RUBY.use(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/settings.rb:993) ~[na:na]\n\tat RUBY.apply(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/resource/catalog.rb:181) ~[na:na]\n\tat RUBY.use(/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/settings.rb:983) ~[na:na]\n\tat RUBY.initialize(file:/opt/puppet/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:69) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval7982$create_jruby_instance__7983$fn__7984.invoke(jruby_puppet_core.clj:145) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval7982$create_jruby_instance__7983.invoke(jruby_puppet_core.clj:126) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval8107$prime_pools_BANG___8108$fn__8109.invoke(jruby_puppet_core.clj:227) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval8107$prime_pools_BANG___8108.invoke(jruby_puppet_core.clj:215) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__8272$service_fnk__5254__auto___positional$reify__8283$fn__8284$fn__8285.invoke(jruby_puppet_service.clj:29) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254) ~[na:na]\n\tat clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__8272$service_fnk__5254__auto___positional$reify__8283$fn__8284.invoke(jruby_puppet_service.clj:28) ~[na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836) ~[puppet-server-release.jar:na]\n2014-10-23 21:32:38,435 INFO  [p.t.internal] Beginning shutdown sequence\n2014-10-23 21:32:38,436 INFO  [p.t.s.w.jetty9-service] Shutting down web server(s).\n2014-10-23 21:32:38,439 INFO  [p.t.internal] Finished shutdown sequence\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15804", "fixedVersions": ["SERVER 1.0.0"], "id": "15804", "issueType": "Bug", "key": "SERVER-105", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "resolution": "Won't Fix", "resolutionDate": "2014-11-17T21:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver crashes when hiera.yaml is a symlink", "timeSpent": "PT0S", "updated": "2016-09-27T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-10-23T08:31:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b4ceb53"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypktr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_4411027_*|*_1_*:*_1_*:*_7811158_*|*_10007_*:*_2_*:*_61658146_*|*_3_*:*_2_*:*_21783772_*|*_5_*:*_1_*:*_1147977314_*|*_6_*:*_1_*:*_0"}], "description": "We need to add some docs on how to pass certificate information using X-headers (presumably after SSL termination) with Puppet Server, and how this differs from the Apache/Passenger methodology.\n\nThis should be targeted at the stable branch.  It should probably be in a new markdown file and just linked from the main README.  It should be kept very, very minimal--just describe the settings that differ between Apache/Passenger and Puppet Server--as the docs team is actively working on polishing the rest of our docs for public consumption and will have a much better idea than we do about how much detail is warranted.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17478", "fixedVersions": ["SERVER 0.4.0"], "id": "17478", "issueType": "Task", "key": "SERVER-104", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "docs for passing cert data in X-headers", "timeSpent": "PT0S", "updated": "2015-11-30T12:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-10-23T08:27:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1bfae33b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypktj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_8237737_*|*_10007_*:*_1_*:*_93040802_*|*_3_*:*_1_*:*_14557741_*|*_5_*:*_1_*:*_1128048967_*|*_6_*:*_1_*:*_0"}], "description": "We need to add some docs on how to set up an external CA with Puppet Server, and how this differs from the Apache/Passenger methodology.\n\nThis should be targeted at the stable branch.  It should probably be in a new markdown file and just linked from the main README.  It should be kept very, very minimal, as the docs team is actively working on polishing the rest of our docs for public consumption and will have a much better idea than we do about how much detail is warranted.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17261", "fixedVersions": ["SERVER 0.4.0"], "id": "17261", "issueType": "Task", "key": "SERVER-103", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "docs for external CA", "timeSpent": "PT0S", "updated": "2015-01-22T16:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-10-22T14:38:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f89644"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywvuf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1051066256_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_66262209744"}], "description": "The execution stub in puppet server does not handle the options passed in by {{P::Util::Execution.execute}} (see SERVER-74).\n\nA consequence of this is that the implementation never throws a {{Puppet::ExecutionFailure}}, since the implementation ignores the {{:failonfail}} option.  However, this option defaults to {{true}} ... and this behavior is depended upon by the {{validate_cmd}} function in the {{stdlib}} module: https://github.com/puppetlabs/puppetlabs-stdlib/blob/master/lib/puppet/parser/functions/validate_cmd.rb#L37\n\nThis also brings the {{:combine}} option (which combines STDOUT and STDERR into the output string) into play - this option also defaults to {{true}}, and the default implementation of the {{execute}} method includes the process's output in the {{Puppet::ExecutionFailure}} error ... this means that {{validate_cmd}} is also relying on STDERR to be included in the error message it returns when the command fails validation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17476", "fixedVersions": [], "id": "17476", "issueType": "Bug", "key": "SERVER-99", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Duplicate", "resolutionDate": "2016-12-09T15:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "execution stub implementation breaks 'validate_cmd' function from stdlib", "timeSpent": "PT0S", "updated": "2016-12-09T15:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I tested this on CentOS-7 and found no problems.  With {{TimeoutStopSec}} at the default of {{60}}, the error message no longer appeared in the journal.  Also, I validated that the 60 second timeout was honored by bumping the webserver.conf's `shutdown-timeout-seconds` setting up to 120 seconds, introduced a delay in a response handler with an artificial sleep in server side Ruby Puppet code, made a curl request, and shutdown the service while the curl request was still in process.  After 60 seconds, systemd killed the puppetserver process.  If I reduce those the webserver.conf {{shutdown-timeout-seconds}} and the response delay back under 60 seconds, the request remains open after the service stop is initiated and provides a response to the curl command successfully before the process shuts down.", "created": "2014-10-23T17:41:00.000000"}, {"author": "6243977a4fe01d006ba5afc5", "body": "I believe the problem lies in the fact that the environment variable ${SERVICE_STOP_RETRIES} cannot be interpolated outside the ExecStart systemd parameter. We are trying to interpolate ${SERVICE_STOP_RETRIES} for TimeoutStopSec which is what is causing the error.\n\nIn summary, I do not see how we can correctly pull in the ${SERVICE_STOP_RETRIES} out of /etc/sysconfig/puppetserver and into a systemd setting.", "created": "2014-11-10T10:00:00.000000"}], "components": [], "created": "2014-10-22T11:54:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f7825fb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypksf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_57664620_*|*_1_*:*_1_*:*_228761_*|*_10007_*:*_1_*:*_11524424_*|*_3_*:*_1_*:*_7703141_*|*_10009_*:*_1_*:*_30240994_*|*_5_*:*_1_*:*_1210467984_*|*_6_*:*_1_*:*_0"}], "description": "When puppetserver is installed or started on a distro running systemd, the following error is logged:\n\n{code}\nSep 07 08:58:39 localhost.localdomain systemd[1]: [/usr/lib/systemd/system/puppetserver.service:9] Failed to parse usec_t value, ignoring: ${SERVICE_STOP_RETRIES}\n{code}\n\nThis failure needs to be eliminated.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17259", "fixedVersions": ["SERVER 0.4.0"], "id": "17259", "issueType": "Bug", "key": "SERVER-98", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "systemd logs failure on puppetserver install/startup", "timeSpent": "PT0S", "updated": "2015-01-22T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["Puppet Server"], "created": "2014-10-22T11:47:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1923fef6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywvu7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1061300577_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_66262231919"}], "description": "While doing functional review for SERVER-39, I needed to URI-encode a certificate from the command line. I found a simple Python one-liner to do it, but instead of using %20 for spaces it used a plus. The Server wasn't able to successfully decode this cert, but url-decode function didn't throw an exception and instead I see an error about the PEM not containing any certificates.\n\nWe should consider supporting this character, which would mean that we'd need to use a different url-decode function that supports it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16676", "fixedVersions": [], "id": "16676", "issueType": "Task", "key": "SERVER-97", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider improving X-Client-Cert URI decoding to support '+' for spaces", "timeSpent": "PT0S", "updated": "2016-12-09T15:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-10-21T21:42:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@760fe397"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "HUP support"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo6dr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10335334697_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_31013810395_*|*_10013_*:*_1_*:*_4678516656"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16343", "fixedVersions": [], "id": "16343", "issueType": "Epic", "key": "SERVER-96", "labels": ["Burnside", "startup-time"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-04-06T15:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support HUP for faster restart", "timeSpent": "PT0S", "updated": "2016-10-18T11:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [{"attacher": "557058:1577af4b-80df-445b-a17c-f09b2ef915d2", "created": "2016-12-16T06:26:00.000000", "name": "foreman_smartproxy.pp", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10808"}], "comments": [{"author": "557058:db6ac850-d953-4af6-bda9-9624b14c0912", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] Please add a description to this ticket. ", "created": "2015-06-06T11:38:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Talking with [~accountid:623a4bced32a94006a63ca40] about this - it's a big issue for the customers he's working with and is limiting their ability to implement puppetserver and modern PE versions. He'd be willing to sacrifice startup/instantiation time for a new jruby per environment, if that simplified pool management. Because they do a lot of ruby extensions, the puppet-server code starts to need testing, like reports, functions, and libraries that call into the underlying jruby, because there were implementation differences between MRI and JRuby.", "created": "2015-10-07T12:31:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Original bug w/history of the problem", "created": "2016-01-08T13:27:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Breaking this down a little, there are a couple of areas of work needed. First, some mapping of incoming requests to available jruby instances, and second a mapping of a given jruby to the underlying filesystem state which it uses to compile catalogs from.\n\nSome spitball solution constraints, open for debate:\n\n* the solution *must* work for existing content on the Forge and in the world (that is, *must not* require a new type API)\n* the end user *must not* need to write a new configuration file to describe the jruby->environment mappings\n* the solution *may* require the user to enable a global runtime option, effectively running puppet-server in a different non-production mode\n* the end user *may* be required to hit a HTTP endpoint or run a command to signal the underlying environments have changed\n\n", "created": "2016-01-12T12:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] can you elaborate on the 'new config file' part?  Is it acceptable for there to be new (presumably optional) settings exposed in an existing configuration file that would be used for performance tuning related to different environments?  (e.g. for a user to indicate that 'production' was an important environment that needs to be as fast as possible, while other for environments it is acceptable for there to be some startup costs to get a new JRuby running on-demand when a request comes in for that environment?)\n\nAlso, the last time I discussed this whole thing in the presence of [~accountid:63d40628f6e1b543161789a7], he suggested that we were going to have to solve the \"master adds agent libdir to ruby load path\" problem before this was going to be tractable, so we need to sort that out and determine whether the user-facing implications of that are going to violate any of your constraints.", "created": "2016-01-12T12:33:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "If we analyze each environment we can detect if they have \"the same ruby content\" - if so, they can share one JRuby instance. I imagine that the \"no configuration file should be required\" requirement would be met by that. Ideally this would be triggered as an environment is changed, comparing SHAs etc. but a simple HTTP endpoint would perhaps be enough for a first release", "created": "2016-01-13T15:19:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "warning: outsider PoV\n\nIn general I like the idea that [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] proposed.\n\n{quote}The fingerprint itself can go into environment.conf. Until there is a tool that generates the fingerprint, you can hobble along by manually changing it.{quote}\n\nMay I suggest a slight variation?\n* The fingerprint itself can go into *a file location specified in* environment.conf. Until there is a tool that generates the fingerprint, you can hobble along by manually changing it.\n\nIt would be trivial to add automation that populated a new file with this SHA. None of the companies I work with today regenerate environment.conf dynamically with each code push, and that would require some extra auditing and authorization hooks in several of those firms.", "created": "2016-01-13T15:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\nEric Sorenson Would it be ok for users to have one file per environment that contains a \"ruby code fingerprint\" ? You run a tool to update it. The server runs everything with the same fingerprint in one JRuby instance.\n{quote}\n\nWhy would that need to go into a file at all?  Couldn't the server just compute it and keep it in memory?\n\nAlso, we can't run everything with the same fingerprint in one JRuby instance because that would be a big bottleneck for environments like production that will have multiple requests in flight simultaneously.\n\nAnd... I think we need to run down the story on this agent libdir issue before we get into the weeds of the implementation details for the JRuby instance management :/", "created": "2016-01-13T16:12:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] It could certainly be kept in memory when the server can compute the fingerprint. I was describing what I thought would be the absolute least to implement but still offer the key features (i.e. manually poking a fingerprint number into a file).\n\nAlso naturally", "created": "2016-01-14T12:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "A handful of folks have pinged me lately asking for notes about the implementation details of how we might do the JRuby pooling.  We've put a decent amount of thought into it and I have a few ideas/proposals that I just need to put into writing.  I think they are simpler than some of the things that have been batted around in the past, in this ticket and elsewhere.\n\nI've been hoping to hold off until we have more of a concrete plan on PUP-4885 before spending the time to write up other proposals, because they may be impacted by it.  That said, it's obvious that people are interested in more detail on this so I'll make sure it happens sometime soon.", "created": "2016-02-29T12:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I ran into a different kind of reproducer for this yesterday.  I'm sure that others on this ticket already knew this, but it was new to me, so I'm capturing it for posterity because it will make a good acceptance test.\n\nDiscussion can be found here: https://github.com/voxpupuli/puppet-archive/issues/105\n\nBut basically, if you install the voxpupuli puppet-archive module into a non-production environment, and then try to do agent runs against that environment *without ever having installed the module into the production environment*, you will get errors like this:\n\n{code}\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Resource Statement, Could not autoload puppet/type/archive: Could not autoload puppet/provider/archive/curl: Could not find parent provider ruby of curl at /etc/puppetlabs/code/environments/develop/modules/archive/manifests/nexus.pp:53:3 at /etc/puppetlabs/code/environments/develop/modules/ui_broker/manifests/init.pp:33 on node rnode01.test.com\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog", "created": "2016-05-20T08:30:00.000000"}, {"author": "5a8eeac09632fa3592797571", "body": "Also ran into this with two environments using versions 4.6.0 and 4.7.0 of the puppetlabs/postgresql module. (We have Puppet environments corresponding to different versions of the software we provide to our clients.) The error message wasn't immediately obvious...\n\n{panel}\n{{Error: Could not retrieve catalog from remote server: Error 400 on SERVER: no parameter named 'connect_settings' at /etc/puppetlabs/code/environments/env_with_4_7_0/modules/postgresql/manifests/server/role.pp:66 on Postgresql_psql\\[CREATE ROLE repl ENCRYPTED PASSWORD ****\\] at /etc/puppetlabs/code/environments/env_with_4_7_0/modules/postgresql/manifests/server/role.pp:66 on node hostname.domain.xyz}}\n{panel}\n\n... but after some digging I was able to figure out that {{postgresql::server::role}} _has_ a {{connect_settings}} parameter in 4.7.0 which didn't exist in 4.6.0, and it looked like part of the 4.7.0 module was calling code from the 4.6.0 module, even though they're not in the same environment.\n\nI opened support ticket 19208 with Puppetlabs (using the same name for the product and the company is already causing confusion, grrr...) who identified the problem as this issue, and offered two possible work-arounds:\n\n* Set up a separate compile master for the environments using the older version\n* Upgrade all of our environments to use the same version\n\nI'm already planning to look into using newer versions of the forge modules anyway, so I suspect we'll end up using 4.7.1 in all environments.", "created": "2016-06-03T15:05:00.000000"}, {"author": "557058:357f8817-9d18-4552-bda8-e41f3f2be262", "body": "Referring to the last comment of [~accountid:5a8eeac09632fa3592797571]. Maybe this helps anyone facing same issue.\nI've upgraded my puppet dev environment hosted in a local vagrant box. It uses {{puppetlabs-postgresql}} 4.7.1. The puppetserver box only serves one environment (dev). Agent run on a second vagrant box run without problems.\nWhen putting my changes to test environment, I also run into problems with {{connect_settings}}, as mentioned above. \n\nThe confusing thing is, that my puppet test server is a separate machine also with only one environment (test). (There is a production folder within environmentspath, but it is only the skeleton). I've upgraded libraries to be on 4.7.1, too. (I'm always using librarian-puppet). \n\nOnly after *restarting puppetserver service* on test node, my (dedicated) test client machine was able to get and apply the catalogue without problems. ", "created": "2016-06-07T06:40:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] and [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] I'm following up on this based on some recently bygone conversations on the chat room.\n\nWe're seeing this crop up more and more as an issue and I was wondering how quickly a solution could be dropped that just spins up an isolated JRuby instance per environment and serves the appropriate hosts from there.\n\nI get that this isn't a \"good\" solution due to system resources but it should be relatively quick and easy to test and FAR better than spinning up tons of compile masters.", "created": "2016-07-25T11:25:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Note for the watchers of this ticket -\n\nWhile we are continuing to investigate the solution described in this ticket (isolating environments by restricting a given jruby to only compile catalogs for one environment), the immediate solution for custom Types is taking a different approach. We're going to prevent the compiler from loading the Ruby types at all, by modifying its loader to look for environment-safe representations of the types first, and only fall back to loading Ruby if that description is not found. You can follow this work at [PUP-5946].\n\nA plea for your data: it would be extremely helpful for the continued jruby investigation to understand your usage of environments, and specifically: how many **active** environments do you have (agents checking in at least once an hour or so), and what is the distribution of agents across those environments? Chris made a little script to trawl the access logs for this info: https://gist.github.com/cprice404/e97c260c70ff3088a73dcfdfad0bfe7a\n\nFeel free to anonymize your environment names before posting, or just email me at eric0@puppet.com -- thanks!", "created": "2016-07-27T15:45:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] Thanks for the update Eric. I would like to note that a lot of the issue is with custom functions as well. I understand that there are now functions in Puppet 4 but it will take a LONG time to port existing work to pure Puppet functions across the board and may never happen completely due to needing new features.\n\nThis is particularly critical since a lot of new users will jump into using functions prior to touching a custom type and, of course, will have your standard dev/test/prod/feature_branch in place according to currently advertised best practice.\n\nWill functions be handled during this update as well, or just Types at this point?", "created": "2016-07-27T16:34:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Trevor, we're just handling types since there is an existing environment-safe Function API.\n\nIf there are functions in Forge modules that fall into this category, can you let me know which ones? We'd be willing to devote development energy to getting them moved over to the new API and sending PRs to the module maintainers, both to help build some reference implementations of them as well as help the downstream users of the modules.", "created": "2016-07-27T16:38:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] Hey Eric....I would start with these https://github.com/puppetlabs/puppetlabs-stdlib/tree/master/lib/puppet/parser/functions\n\nIf you pin two different environments to two different versions, very unexpected results could occur at runtime.", "created": "2016-07-27T16:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] I could have sworn that we reworked the underlying implementation of parser functions, even for the old API, to where they were stored in environment-specific maps and no longer suffered from this problem.  Is that wrong?", "created": "2016-07-27T18:10:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] It's certainly possible. But, I haven't been able to find it authoritatively closed in any ticket and haven't been able to grok the code enough to pin it down solidly and we've seen things that are indicative of this in the field. However, it's possible that the code in use in various customer environments isn't...um...quite as up to speed with the Puppet 4 new car smell as they should be.\n\nIf nothing else, can we get a document that specifically calls out what does, and does not, work in the official Puppetserver docs.", "created": "2016-07-27T18:34:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] So, if you're using the new (non-backward compatible) function code, this *almost* works.\n\nPer Henrik's post http://puppet-on-the-edge.blogspot.com/2015/01/the-puppet-4x-function-api.html\n\n{noformat}\nHelper Logic\n\nYou can have as many helper methods you like in the function - it is only the methods being\n dispatched to that are being used by the 4x function API. You are however not allowed to define \nnested ruby classes, modules, or introduce constants inside the function definition. If you have \nthat much code, you should deliver that elsewhere and call that logic. Note that such external \nlogic is static across all environments.\n{noformat}\n\nBut, as clearly stated, external Ruby logic is *static across all environments*.\n\nThis is bad since I can no longer have production and any other environment on the same compile master that may involve external Ruby and/or testing.\n\nAlso, while I fully expect stdlibmageddon to hit come Jan 1 2017, porting and testing all existing functions to P4 is not trivial in many cases, particularly when you already have external Ruby helper logic (see above).", "created": "2016-07-27T19:03:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] As I understand 3.x functions they are loaded per environment (and since PUP-5813 also evicted, meaning that all versions 4.0 to 4.4.0 leaked all loaded functions memory wise). The 3.x functions are thought to be safe if they do not bind new Ruby constants, or Ruby require/load any code, but I cannot swear to that.", "created": "2016-07-28T03:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, I think I understand it now.  3.x functions are safe as long as they don't do any fancy Ruby things, but for any that *do* do fancy ruby things, they're still subject to all of the known issues.\n\nThen, it follows that if any of the stdlib functions or common/popular modules are doing fancy Ruby things, then having the JRuby-per-environment pooling in place would still have a pretty high value proposition, even with PUP-5946 addressed.", "created": "2016-07-28T10:21:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Anything that uses your PuppetX namespace is probably subject to this issue across the board.\n\nI don't see it being used offhand in stdlib but I don't know if any of the other items in stdlib might be creating objects, etc...", "created": "2016-07-28T10:24:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Agree there is a high value proposition for isolating environments with separate JRuby instances when \"non puppet defined\" (i.e. \"safe to load\") ruby code differs. It would be very nice if it was possible to boot a JRuby, then boot Puppet, and then snapshot for quick start.", "created": "2016-07-28T10:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I don't think the 'snapshot' part of that is possible, but I think there are other ways we can handle that.  e.g. keeping a few \"warm\" instances ready, and, ultimately, improving the Puppet settings code, which I think could probably reduce the startup time by 50% or more.", "created": "2016-07-28T10:36:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Passenger used to pre-spin back-end Rubies at start time and then start new ones and kill the old ones periodically to prevent memory issues (and other Ruby nonsense).\n\nCould you spin up a back end Ruby per environment (to some sane/configurable limit) and then cycle them over time?\n\nThe place where you're really going to run into issues is places with 100+ environments (yes, we've seen them in the wild).\n\nIn this case, I guess you would want to have a weighted queue for them where the most used stay up and the least used cycle out based on the number of clients using them over time.", "created": "2016-07-28T10:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] yes, we already have {{max-requests-per-instance}} for cycling them over time.  What we don't have yet, and what I had in mind when I originally created this ticket, was just to expand our JRuby pooling to have pools-per-environment rather than just a single global pool of JRubies.\n\nWhat I would like to do is to allow the pooling strategy to be toggled via configuration.  The default, for some period of time, would probably be the current strategy, so that we can get some testing / mileage on the new strategy/strategies before making them the default.\n\nI'd envision that the first new \"strategy\" we might add support for would be a configuration-driven strategy.  In this approach, the user would be responsible for setting up their configuration to list what the most common (and performance-sensitive) environments were, and probably tell us how many JRubies to keep around dedicated to those environments.  Then, there'd be a sort of 'overflow' pool for uncommonly used environments.  The user could also configure the size of this pool.  Whenever we got an agent request from an environment that isn't on the 'dedicated' list, we'd use this overflow pool, which we'll flush instances out of using an LRU strategy.  We can keep a couple of JRubies warm to make the process of cycling things in and out of this overflow pool faster.\n\nThe config might look something like this (credit to [~accountid:557058:1fdc76f4-b360-4f3a-a4b5-990542a56609] as this was his idea, probably like 2  years ago now):\n\n{code}\n{\n  jruby-puppet:\n    {pooling-strategy: configured-environments\n     dedicated-environments: {\n        production: {pool-size: 4}\n        test: {pool-size: 4}\n        staging: {pool-size: 4}\n     }\n     overflow-pool-size: 4\n     pre-warmed-pool-size: 2\n}     \n{code}\n\nThe upside of this approach is that the implementation should be fairly simple and easy to debug, and the configurability should be sufficient for tuning for *most* users needs.  The downside is that it will require some knowledge and configuration on the part of the user.  But, since it should be faster to get out the door, and should serve as a valuable stepping stone towards any other strategies we want to implement, it seems like that'd probably be the best first step.\n\nAfter that I can imagine us implementing a second new strategy that was purely LRU.  That would work pretty much the way you're describing, @trevor.  The initial configuration, from the user perspective, would be simpler, but the implementation will probably be trickier and it seems likely that for certain users it'd be hard to get the maximum performance, because you could easily end up in situations where JRubies are being flushed and recreated more frequently than would be ideal.  I'd guess that it might take a few releases of tweaking the LRU strategy and getting feedback from users before we got to the point where we felt like we had this strategy nailed down.\n\nSo, those are the rough ideas that I've had in mind.  Not sure when we might get approval to work on them, though.\n", "created": "2016-07-28T11:18:00.000000"}, {"author": "557058:ff711d52-fce8-465e-b4dc-53bffb173693", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I just wanted to chime in and say that I like the solution you mentioned above.  I agree that it's maybe going to require a bit more knowledge and configuration by the user but I think that's a worthwhile sacrifice to make, especially if it means getting a solution in place for this.\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] you mentioned an \"immediate solution\" for custom Types regarding this issue and gave us a ticket to track (very much appreciated).  I see that this solution is slated for release in 5.y and is in development right now, but do you think you could shed some light on a more specific timeline for release if that's possible?  This issue has really been popping up a lot for me lately, especially with customers who have the goals of combining Code Manager + File Sync + Multi-tenancy.  Basically it's causing these customers to not use Code Manager + File Sync and revert back to pure r10k so that they can isolate environments to specific compile masters.  In some case I've seen PS fail to start because a type got loaded into the wrong environment after File Sync put a feature environment on a compile master, and in other cases I have had customers just unwilling to even risk it because they view their production environments as too important to possibly have impacted by this.  Whichever the case, I think it's worth addressing because it certainly seems like Code Manger + File Sync are the way of \"the future\" and it would be nice not to have to tell customers they can't use them right now.", "created": "2016-08-02T12:22:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:62438cedf813eb006928e4d9] I will answer the part directed to Eric Sorenson - The intermediate solution is in an epic that is indeed targeting 5.y as the ambition longer term is to be able to write puppet resource types in the puppet language (when appropriate). We will ship an experimental feature that is one step in that direction in Puppet 4.6.0 - the tickets contained in that epic we plan to deliver have Puppet 4.6.0 as the target.\n\nIn brief, the support is that there is a tool \"generate type\" that writes out meta data in puppet language form about all the resource types in an environment. The puppet compiler will then use this information instead of the ruby implementation of the resource types. The loading of that meta data is guaranteed to be isolated to the particular environment using those resource types. The meta data is based on the puppet types system", "created": "2016-08-02T13:48:00.000000"}, {"author": "557058:ff711d52-fce8-465e-b4dc-53bffb173693", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] This certainly sheds some light on the direction for Puppet Types going forward.  Frankly, I'm excited for this change as I think it will be a huge improvement.  I'll definitely be on the \"opt-in\" side of that release.\n\nSome follow-up questions more specific to earlier discussions about this ticket.  I know that early on, one of the requirements for a solution was that it had to work with the current type system.  Is that still a plan?  I know people seem to think the solution Nan Liu posted would be a good one, but I haven't seen any follow-up tickets or comments confirming that would actually happen.\n\nSecond question: Does this solve the less common case of having bleed-over from Providers?  I haven't read through everything with the new Puppet Type system yet, but it doesn't seem like it would.\n\nMy overall concern here is that even if I'm able to opt-in to writing Puppet Types in Puppet and not Ruby, I still can't control the code I'm getting in other updates, be it Forge modules or otherwise.  This leaves me open to running into this issue no matter how careful I am on my own, and why I'm still hoping for a solution that is bigger picture.\n\nAppreciate you all still being so responsive about this ticket as I'm sure everyone is excited to have it in the past.", "created": "2016-08-03T11:50:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Pardon my ignorance, but I am not aware of what Nan Liu proposed as a solution. Is there a pointer?\n\nClashing Providers can certainly also occur (as noted, this is less common). We will take the same approach with providers and generate meta data the compiler can use. Some during the 3.x series the compiler started needing to load providers. This had the unfortunate effect that providers not suitable for the master could end up being loaded, and if two environments had different versions of the one and same provider they would clash. Unfortunately we ran out of time to also fix the isolation problem for providers for the 4.6.0 release - expect that to come in a subsequent release. Essentially, the compiler only needs to know the set of providers available so it can validate its explicit use.\n\nThe long term ideas are: resource types are just part of the puppet type system and they as well as providers can be written in the puppet language. When needed, providers can be written in Ruby or some other language.\n\n[~accountid:62438cedf813eb006928e4d9] you are right that even you are careful with your own code, you still need to consume other people's code. The solution we opted for, i.e. generating meta data and using that instead of the implementation should solve that as it generates the meta data for everything in the environment including other people's code.\n", "created": "2016-08-03T15:19:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:62438cedf813eb006928e4d9] The stuff we're working on for 4.6 expects that NOBODY is writing types in the Puppet language yet \u2014 there's a tool you run out-of-band that analyzes all available Ruby types, and creates equivalent Puppet language objects for all of them. (Almost all. There are some less common features that can make Ruby types untranslatable.) \n\nSo, yes, this intermediate solution will work with the current type system. (That's what you meant, right?)", "created": "2016-08-03T15:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Also, the server (compiler) should really not need to be loading providers at all, and [~accountid:63d40628f6e1b543161789a7] said that he thinks we can fix that without too much trouble.  If we can achieve that then most (all?) of the environment-related issues around providers should go away.  IMO that should be the next thing we aim for after the current puppet type stuff lands.", "created": "2016-08-03T16:17:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "{quote}the server (compiler) should really not need to be loading providers at all, and Josh Cooper said that he thinks we can fix that without too much trouble.{quote}\n\nThe problematic code is [here|https://github.com/puppetlabs/puppet/blob/bafca0b952e0ce04daa4a7ea9d970fdc6371a332/lib/puppet/metatype/manager.rb#L125-L127]. This code path is called by the agent and server. However, the server/compiler does not normally need to load providers at all. The server doesn't need to figure out the default provider, since the default provider will be different for different agents, e.g. windows vs redhat vs ubuntu. The agent will figure out the default provider when it converts the master (JSON) catalog into an agent (RAL) catalog.\n\nIdeally we could just skip those methods when running on the server. But we can't quite make that change, because the server manages its internal settings using a \"settings catalog\". The server will create a catalog containing file resources to manage the owner, group, and mode for its file-based settings, e.g. {{ssldir}}. The server then applies the catalog, causing it to execute what are normally agent code paths.\n\nSo I think we need to figure out how to manage settings on the server without having it load providers for all types. Maybe we only load user, group and file providers on the master? That should be okay because those are core types (so we don't have different versions of them in different environments).\n\nOr we figure out how to {{use}} all of the file settings once when the server starts and make {{Puppet.settings.use}} a noop after that? That might be generally a good thing for the server, since we really shouldn't be applying settings catalogs during catalog compilation for performance reasons.", "created": "2016-08-03T18:27:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "When a pcore based resource type is used the problematic code path (that loads all providers) will not be executed. And if I read the code right (referenced by Josh in the previous comment), only the providers for the resource type in question (the resource type being loaded/defined) are loaded. Thus it seems that as a side effect of taking the pcore route to loading, there would be no problem with clashing providers (unless there is logic elsewhere that deals with the default provider). As we do not generate pcore for puppet's core resource type implementations (only those in modules) we may already in practice have isolation for providers...", "created": "2016-08-04T03:27:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "{quote}Thus it seems that as a side effect of taking the pcore route to loading, there would be no problem with clashing providers (unless there is logic elsewhere that deals with the default provider).{quote}\n\nI think pcore will definitely help, but I'm not sure it's sufficient. Since the master applies settings catalogs, it will call {{Catalog.to_ral}}, and that will create instances of {{Puppet::Type::\\{User,Group,File\\}}} and load their respective providers. The part I'm not sure about is whether we end up loading all providers for all types through some other side-effect?", "created": "2016-08-04T16:29:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:63d40628f6e1b543161789a7] we worry about exactly the same thing:\n{quote}\nThe part I'm not sure about is whether we end up loading all providers for all types through some other side-effect?\n{quote}\nWe need more experiments and tests to assert what we think (hope) wrt. what is going on with providers during compilation and to_ral.\n", "created": "2016-08-04T16:57:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "Out of curiosity, has there been any movement/another ticket created focusing on the brute force solution of spinning up multiple JRuby instances?", "created": "2016-09-19T08:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] AFAIK this is still the only ticket we have for that.  I'd be happy to create a separate one but I [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] is running the show on environment isolation.", "created": "2016-09-27T11:01:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "Would setting {{max-requests-per-instance = 1}} mitigate this issue at all?", "created": "2016-10-04T09:52:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "With max request per instance set to 1 it will be the slowest way to work around the problem.", "created": "2016-10-04T09:58:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "A colleague just had to run puppet 8 times in a row before hitting an instance that knew about a recently added type parameter.  That was pretty slow too! ", "created": "2016-10-04T10:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I believe that the server ends up making a 'request' to the jruby instances during initialization (to read the settings from puppet.conf), so I think that if you set it to 1 it would flush the jrubies before they were even able to handle an agent request.  Setting it to 2 might be more in line with what you're hoping to I achieve, but the performance penalty will be so severe that your server will not be able to handle any meaningful load.\n\nIf the {{puppet generate}} workflow isn't solving the issues for people then there really isn't a good workaround", "created": "2016-10-04T10:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:054fa98a-5e29-48e7-aeca-d5542926f8ba] well, you could certainly try it out!  :)  In the situation you described though, it seems like what you really want is to flush the JRuby pool when you've made a change to a type.  You can do this via the [admin API|https://docs.puppet.com/puppetserver/2.6/admin-api/v1/jruby-pool.html].", "created": "2016-10-04T10:12:00.000000"}, {"author": "623c0ef5a1d81f0069d8dfb9", "body": "Here we have well over a thousand puppet environments ... I'd be happy to provide details (I saw mention of a log file scanning tool above) or discuss our use case further. We have _very_ carefully controlled server side ruby as a result, and am very much looking forward to environment isolation coming one day. :) \nYes, we have a puppet class to flush the Jruby pool whenever it changes as [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] commented.", "created": "2016-10-11T14:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0ef5a1d81f0069d8dfb9] thanks for the info.  If you get a chance to try out the `puppet generate` stuff that [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] linked in previous comments, it'd definitely be helpful to know what percentage of your issues that solves.", "created": "2016-10-11T15:10:00.000000"}, {"author": "623c0ef5a1d81f0069d8dfb9", "body": "Note that we guarantee via a controlled build pipeline and automated release process that every one of these environments have precisely the same version of all modules that contain types or functions, ie that contain server side Ruby, as we put these modules onto the base_module_path and prevent any other modules being released which include server side ruby.\nWill look back and run the tool on a test box when I can, likely a couple of weeks unless there is some urgency from your side.", "created": "2016-10-11T15:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0ef5a1d81f0069d8dfb9] no urgency per se - if it solves most or all of your problems that would be awesome.  If it doesn't, the info might help us make a case for implementing the jruby pooling isolation that is discussed in this ticket.", "created": "2016-10-11T15:36:00.000000"}, {"author": "557058:7fa0f22e-4f14-4d01-af49-e948835fcb78", "body": "I was thinking about this issue a few weeks ago and thought that perhaps we could take advantage of the dynamic nature of Ruby itself (which I think is still even available within JRuby) to help with this.  I saw mention of code fingerprints above, which is better than the solution I was thinking of, which was to have the developers create signature files of the modules with the version information in it. I guess the modulespec files do that already, but not everyone uses them.\n\nAnyway, instantiate a generic Object for each module and then load into an instance hash a \"singleton\" instance for each version of the module. It would be used like public class methods instead of instance methods (in otherwords, not intended to store state), but could provide the versioned behavior depending on what version the calling manifest is expecting to answer (this implies some dispatcher intelligence).\n\nHowever, there is a lot of flailing about to solve this and it largely has to do with the centralized nature of Puppet.  Are the code artifacts to create the catalog so large that they couldn't just be sync'd down to the nodes themselves and the nodes just take care of themselves as if they weren't using Puppet Enterprise at all?  Exported resources could even be sent down with that.", "created": "2016-10-14T09:59:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] or [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Is there a SERVER-94 test case reproducer out there? I think I've come up with a method for successfully working around the Ruby loading issue in the module space but would like to have a known repeatable test case for validation if possible.", "created": "2016-10-20T23:31:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] An acceptance test have been added to puppet for environment isolation - ping [~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] (I don't have the ticket number handy atm).", "created": "2016-10-21T08:56:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "PUP-6779 confirms env. isolation with a custom type with an added attribute in one environment.  it ensures puppet generate alleviates this isolation issue.  the test is in puppet master branch", "created": "2016-10-21T10:43:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "At PuppetConf last week, I managed to work out something that appears to work around the issue for custom Functions, Types, and Providers that include external Ruby code (aka puppet_x).\n\nDetails over at https://www.onyxpoint.com/fixing-the-client-side-of-multi-tenancy-in-the-puppet-server/.\n\nIt *seems* to work from my preliminary testing.", "created": "2016-10-24T20:30:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] It is really hard to manage additional code that requires binding to ruby names. All points accessing them need to bind to them using some other lookup than simply referring via a Ruby symbol (that is indeed how the 4.x loaders work when loading functions). There is one additional issue when one environment is changed - i.e. new version of code in the same environment - meaning that bindings to constants will not work.\n\nLast, but not least, if any additional code is needed it can clash.\n\nSince modifying loading of Puppet_x as per your experiment is basically the same as loading a 4.x function - you can get the same effect by simply including the logic needed in a 4.x function (and following the rules documented in the 4.x function api specification).", "created": "2016-10-25T10:21:00.000000"}, {"author": "557058:7fa0f22e-4f14-4d01-af49-e948835fcb78", "body": "I think the method that I described in [#comment-359539] may address some of these issues, but I don't know enough about the guts of the system to try testing it.", "created": "2016-10-25T10:28:00.000000"}, {"author": "557058:a9131abb-60dd-40be-ad21-62045af3de3a", "body": "I realize that people have moved away from the \"passenger\" architecture, with puppetserver, but I wonder if something similar could be setup in \"java land\" ...\n\nOne of my rails devs was working on implementing a rails5 feature called \"cable\"  and sent me this: https://www.phusionpassenger.com/library/config/nginx/action_cable_integration/ ... which leads me to https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_app_group_name ...while the example is a bit different than the issue we are experiencing, it does feel quite similar. This would effectively be the same thing as launching one \"appserver\" per environment with a little config magic, but with the added benefit of them launching on demand and having some sane total max process limit, probably even at a per-env level. \n\nAgain, I realize that we are not using passenger/ruby anymore, but passenger is opensource and maybe that feature/logic could be adapted to whatever is \"dispatching\" application requests in puppetserver? If not, and I am being completely dense, thats fine, go about your day and ignore this. :)  Discussion about this at the contributor summit and this recent traffic just had me thinking about a way to implement it in our setup (which is actually passenger, for another few weeks at least).\n\n~tommy", "created": "2016-10-25T17:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:a9131abb-60dd-40be-ad21-62045af3de3a] that actually maps pretty well to [what I described above about pooling the JRuby instances|https://puppet.atlassian.net/browse/SERVER-94?focusedCommentId=329083&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-329083] and isolating each pool to correspond to a specific puppet environment.  We'd need to decide what we want the config to look like but the resulting behavior, I think, would be very similar to what you've linked above.", "created": "2016-10-25T18:07:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Thanks for the feedback. I get that the v4 API is supposed to fix some of this but I couldn't find a clear example on how to replace a complex Class with a function or set of functions.\n\nDo you have any working examples of using the new function API to spawn helper classes/functions that can hold state over time that are simpler to use and understand than what I posted? I can take it for a whirl and update my post to reflect my new findings if they hold true.\n\nAlso, do you have a spec testing guide for the new API function calls with instance and/or class variables? I know how to test the Ruby mangling but I haven't a clue how to hold state in the new functions and also test them.\n\nAlso, I understand that we'll have issues with files being updated on disk. Rails wipes all autoloaded constants when that happens and perhaps that should be adopted here as well http://guides.rubyonrails.org/autoloading_and_reloading_constants.html#constant-reloading.\n\nI was actually looking at auto-wiping my constants but there was no good way to know when we would be finished using them.", "created": "2016-10-26T09:18:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] As with all things global and no clear transaction boundaries it is impossible to manage global things correctly. Puppet once had slow and buggy code that tried to overcome that. It is simply not a path that leads to success.\n\nThe design criteria for 4.x functions did not include maintaining state so there is no nice API for that, but the function instance itself is a state that is managed. Need to do some experiments to come up with a safe (and understandable) way to do this - basically it should be possible to use instance variables in the function, but care has to be taken to not step on those already in use.\n\nIn general it is a bad idea to maintain state (many small caches/loaded data leads to high memory consumption that creates a worse performance problem than what the maintained state/cache tried to optimize). Naturally there are cases where it really matters. Specifically, a function's life cycle is not officially defined, and the life of a function instance is tied to the environment in which it is used, thus it may be used in multiple compilations in the same environment. Here we need to discuss what we can/should specify. (The specification is in the 4.x function API document in the specifications repo).\n\n[~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] At this point the 4.x function's ability to contain additional logic should be documented in our official docs - I know there is 4.x function API documentation in the works. The rest needs a bit of work before being made official.", "created": "2016-10-26T10:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "{quote}\nIn general it is a bad idea to maintain state (many small caches/loaded data leads to high memory consumption that creates a worse performance problem than what the maintained state/cache tried to optimize). Naturally there are cases where it really matters. Specifically, a function's life cycle is not officially defined, and the life of a function instance is tied to the environment in which it is used, thus it may be used in multiple compilations in the same environment.\n{quote}\n\nAlso worth noting that in both Puppet Server and the old Passenger stack, multiple, isolated ruby interpreter instances are created in order to maximize performance and also to avoid some other problems that would arise related to global state.  This means that if you due try to cache state (inside of a function definition, or anywhere else), that state is isolated and distinct *per Ruby interpreter* - so there will always be multiple instances of it in memory.  It's not global to the entire Puppet Server (or Passenger) instance.", "created": "2016-10-26T10:28:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] That's OK. When I was looking at saving state, it was really only for the duration of a compile. Everything can be tossed after that. In general, instance variables work just fine. I've only had to resort to class variables when dealing with making things recursive that weren't really designed to be called that way (or I'm just doing it wrong :-D ).\n\nAlso, as painful as it is, we're still going to have to support some 3.X stacks into next year. A LOT of time has gone into just getting code migrated and ready in a lot of environments that I've visited.\n\nIn terms of saving global state, this goes back to the ticket that I keep meaning to work on but never have time. I *do* save state in some of my types and providers and a global state registry that is self-cleaning would be ideal to keep that sort of nonsense at bay. In theory, I'm OK since I'm explicitly killing my state variables as I move forward, but it really needs to be hooked into the language.\n\nI suppose that the double resource hook could be used to get around this and have the second resource follow the first and gather everything from the guts of the first set of resources but...ew.", "created": "2016-10-26T10:40:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "State on the agent (when doing an apply) is something very different (in types and providers) from the state maintained when compiling.\n\nHave now looked into what would be a safe and useful way of handling state in a function. Will create a ticket for that - essentially the support consists of using a so called Data Adapter that associates a hash with the Compiler. This can be done manually today, but we want to make this available with an official API. Basically a 4.x. function (in Ruby, using the SystemFunction support) can ask for a cache to be injected into calls. That hash maintains the state through a compilation (and then disappears).\n\n[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] Would that be sufficient for the use cases you were thinking about?", "created": "2016-10-26T14:47:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] That sounds *exactly* like what I want, yes.\n\nAlso, definitely post when there's a better description of how to use the v4 functions to replace the mixed in modules in multiple classes. The only thing that's coming to mind is a case where I end up with 500 functions of dubious naming quality and I'm 90% that I've got that wrong.\n\nThanks!", "created": "2016-10-26T15:10:00.000000"}, {"author": "5a8eeac09632fa3592797571", "body": "So does PE 2016.5 solve this issue? It lists \"Environment Isolation\" as one of the highlights of the release.", "created": "2016-12-13T12:05:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:5a8eeac09632fa3592797571] yes, it auto-generates the puppet language type descriptions, isolating different versions of the same type across environments. more detail here: https://docs.puppet.com/pe/latest/code_mgr.html#environment-isolation-metadata", "created": "2016-12-13T13:14:00.000000"}, {"author": "5a8eeac09632fa3592797571", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] Does this mean that, in order to have my environments be isolated from each other, I have to use this \"code manager\" thing? I ask because all of our PE servers are monolithic, so we've never had a real need for it (unless I'm totally missing the point of what it does - it just ensures that the environment directories are identical across multiple compile masters, yes?)\n\nAlso, we're using a custom {{r10k}} script to build complete environment directories... will these new {{*.pp}} files that we're not supposed to touch be created automatically somehow, or is there some other command that our custom {{r10k}} script needs to run in order to generate them after creating a new environment directory? Will it hurt anything if these files are deleted? (Our custom {{r10k}} script deletes and creates each environment directory from scratch whenever a branch for which an environment exists has been updated.)", "created": "2016-12-13T16:16:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:5a8eeac09632fa3592797571] \n* the {{.pp}} files describing the resource types are created by the command {{puppet generate types}} - it syncs the descriptions with the resource type implementations in the environment the command is executed for.\n* the generated files can be removed and recreated at will (that is also what the command does when executed)\n", "created": "2016-12-14T03:20:00.000000"}, {"author": "623c0ef5a1d81f0069d8dfb9", "body": "Is this feature PE only, or also available in Puppet open source? If it is available in open source, I would appreciate some guidance on how to integrate this into our enterprise scale system that has well over 5000 puppet environments.", "created": "2016-12-14T07:46:00.000000"}, {"author": "557058:3c7b6e34-de5c-45e8-86c5-b3529fff42e3", "body": "It is available in open-source Puppet as well. Here's the docs on using it:\n\nhttps://docs.puppet.com/puppet/4.8/environment_isolation.html#enable-environment-isolation-in-open-source-puppet", "created": "2016-12-14T07:50:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "[~accountid:623c0ef5a1d81f0069d8dfb9] I can confirm this works with OS Puppet. I've tested with the elasticsearch module in different versions in different environments which failed with puppet 3.8 and works with 4.8 and this {{puppet generate types}} operation.", "created": "2016-12-14T08:10:00.000000"}, {"author": "623c0ef5a1d81f0069d8dfb9", "body": "Many thanks. Will create a story internally for someone to review the docs and plan a way forwards. Anyone who knows the internals of this see a reason this would *not* work with the number of puppet environments in the 5000 to 10000 range ?", "created": "2016-12-14T08:51:00.000000"}, {"author": "557058:1577af4b-80df-445b-a17c-f09b2ef915d2", "body": "After finally getting the {{puppet generate types}} to work on a normal Puppet client instead of a Puppetserver, because we use a central Puppet environment code rsync server in front of all Puppetservers.\nNeeded to add the {{environmentpath}} config parameter to the Puppet client puppet.conf:\n{code}\n  ini_setting { \"add_environmentpath_for_generate\":\n    ensure    => present,\n    path      => '/etc/puppetlabs/puppet/puppet.conf',\n    section   => 'main',\n    setting   => 'environmentpath',\n    value     => \"/var/data/puppet_sync/\",\n  }\n{code}\nWhich, by the way, would have been way easier if {{puppet generate}} did support to configure this on the CLI with a parameter like {{--environmentpath}} or an environment variable of some sort.\n\n\nThen we encountered the following problem with the https://github.com/theforeman/puppet-foreman module:\n\n{code}\npuppet parser validate /tmp/.resource_types/foreman_smartproxy.pp\nError: Could not parse for environment production: Syntax error at '/' at /tmp/.resource_types/foreman_smartproxy.pp:34:37\n{code}\n\nI attached the generate file to this ticket.\nWhat I can gather is that the ruby internal {{URI.regexp}} pattern from the foreman module (https://github.com/theforeman/puppet-foreman/blob/master/lib/puppet/type/foreman_smartproxy.rb#L33) does create a pattern which the Puppetserver refuses to use.\n\nNow I'm not sure if \n(a) the {{puppet generate}} did something wrong with the URI.regexp or\n(b) the guys from the foreman-puppet module should change something.\n\nI will create a issue on their Github page and link it back here for anyone interested, but I'm unsure if they've even heard of {{puppet generate types}} yet.\nEdit: Github issue link: https://github.com/theforeman/puppet-foreman/issues/512\n\nI'm also wondering why {{puppet generate types}} does create something that the {{puppet parser validate}} can't validate in the first place.\n\nSo @[~accountid:623c0ef5a1d81f0069d8dfb9] if you have full control of all your Puppet environment code and can disable the generated types for some parts as the official documentation mentions https://docs.puppet.com/puppet/4.8/environment_isolation.html#troubleshooting-environment-isolation.\nThen yes it should be able to work with thousand of different environments.\n\nIn my case I can't generate the types for all environments if I can't be sure that the resulting file works or fails the Puppet run.\nI could do a {{puppet parse validate}} for each generated file and only include those that looks good, but I have to think about that one, because we are removing more and more logic away from the Puppetserver.", "created": "2016-12-16T06:59:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The {{puppet generate types}} should not generate faulty {{.pp}} code. It should instead either back off from trying to generate something (if that is acceptable), or error and not generate the .pp file for that resource type.\n\n[~accountid:557058:1577af4b-80df-445b-a17c-f09b2ef915d2] it would be great if you could log a separate (PUP) ticket with what you posted above and also include the generated .pp representation of the resource type. \n\nOn your other comment, regarding {{\\--environmentpath}}, since that is a setting, you should be able to set that on the command line just like any other setting.", "created": "2016-12-16T08:13:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Folks - I'd like to ask you to take conversations to two places:\n\n1. If you are having issues with the {{puppet generate types}}, please open a ticket in the PUP project with the \"Generate types\" component.\n2. If you're interested in following the design and implementation of jruby pool management, please move over to [SERVER-1697|https://puppet.atlassian.net/browse/SERVER-1697]", "created": "2016-12-21T17:22:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "As Eric says, please take additional discussion elsewhere.", "created": "2018-02-06T17:45:00.000000"}, {"author": "557058:6948d6cc-272e-40ad-b26d-bf5cc3fd1e87", "body": "Does the closing of this ticket mean the bug is fixed?", "created": "2018-02-07T09:32:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It's fixed -ish.\n\n\u00a0\n\ntl", "created": "2018-02-07T11:55:00.000000"}], "components": [], "created": "2014-10-21T21:41:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald"]}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Platform Core"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28a48424"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Environment Isolation"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzezwn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10335382332_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_93679661078"}], "description": "Puppet Environments provide a way to use different versions of the same modules for different populations of nodes.  Our Code Management workflow maps git branches onto environments, allowing administrators to manage the flow of change towards their production estate with software development best practices like pull requests, code review, and merge-ups.\n\nBut there are a few problems with the current implementation of environments on the puppet server and catalog compiler. Code can \"bleed through\" from one environment to another, and compilation problems in one environment can affect others. Now that we have the power of Greyskull -- errr, Jetty -- at our disposal, we have an opportunity to address these problems; this epic covers improvements and bugfixes around separating environments from one another.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15803", "fixedVersions": [], "id": "15803", "issueType": "Epic", "key": "SERVER-94", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2018-02-06T17:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Environment Isolation", "timeSpent": "PT0S", "updated": "2020-10-01T06:48:00.000000", "votes": "41", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:63d40628f6e1b543161789a7] [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] Here's our CA epic.  Feel free to throw stuff in here, but don't take the current list of stuff in this epic to be representative of our plans... we still need to do some scoping / cleanup.", "created": "2014-11-05T15:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] we are going to need to talk about this soon in terms of OSS vs. commercial, as that is going to have a really big impact.  I've been creating all of these tickets under PE just to buy us some time, but honestly I think they are all going to have to go into OSS.", "created": "2014-11-07T17:07:00.000000"}, {"author": "557058:1449aab3-44c3-4376-867b-65d7dd01dd2d", "body": "How about the older requests to add HSM support?\u00a0 Such as relating to https://puppet.atlassian.net/browse/PE-12802\u00a0but not so product specific.", "created": "2018-06-02T01:38:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-21T21:41:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Froyo"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@192f7771"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Clojure CA Service"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynbnb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Jun/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_101061881703_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_25915374391"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15527", "fixedVersions": ["SERVER 6.0.0"], "id": "15527", "issueType": "Epic", "key": "SERVER-974", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2018-10-30T13:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Clojure CA Service", "timeSpent": "PT0S", "updated": "2018-10-30T13:09:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "Overview of the [post 3.7.0 situation and plan to resolve|https://docs.google.com/a/puppetlabs.com/document/d/14sp4zu4K-qoMjRrpCehxlLzdruenj_FPd3JoO8ZuZWk/edit#].", "created": "2014-10-31T12:35:00.000000"}, {"author": "6243b375fd5e4500704351c5", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I don't suppose there's any API docs for this new endpoint yet?", "created": "2014-11-14T11:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "No, I've been meaning to ping [~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] and get a conversation started about that.\n\nRight now, the rough plan is this:\n\nThere will be a new endpoint available on the master at: /admin-api/v1 or /puppet-admin-api/v1 or similar.  Out of the gate, it will probably have exactly one route that it supports, which will probably be something like:\n\n/puppet-admin-api/v1/flush_environment_cache\n\nAnd the initial version of this won't require any query params or payload at all", "created": "2014-11-14T11:25:00.000000"}, {"author": "6243b375fd5e4500704351c5", "body": "Sounds pretty reasonable. Do we have any idea how long the cache flush will take? And I'm assuming the API call is synchronous too.", "created": "2014-11-14T12:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "synchronous, and any requests made to puppet after the API call returns should see the updated state.", "created": "2014-11-14T13:17:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "That looks good to me, though I'd probably just use the term 'puppet-admin' (after checking with docs, of course). So, for the \"Sync now\" button, all it would do is hit this new endpoint?\n\nAgreed we need some CLI tools for this stuff as well. I'm trying to get some thoughts together on command lines for the new services. Getting something to replace the Rake API, for example, is a thing we have to do sooner rather than later.", "created": "2014-11-14T16:17:00.000000"}, {"author": "6243b375fd5e4500704351c5", "body": "[~accountid:557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df] it's a two step process: first, clear the master caches through this new endpoint", "created": "2014-11-14T16:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Is there any reason we wouldn't just go ahead and put that call in the classifier service right now?", "created": "2014-11-14T16:31:00.000000"}, {"author": "6243b375fd5e4500704351c5", "body": "I'll let [~accountid:557058:1381f112-1c4e-4869-ba34-30602d945124] (or someone else on the classifier team) answer that :)", "created": "2014-11-14T16:33:00.000000"}, {"author": "557058:1381f112-1c4e-4869-ba34-30602d945124", "body": "Yeah, we could have the classifier always call the flush first before it updates its classes when asked to via the API (it seems like a bad idea to have it do this every time, since it has a background periodic synchronization as well). There's no reason on our end not to.", "created": "2014-11-14T16:53:00.000000"}, {"author": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "body": "Sounds like we've got a solution. Would this be for 3.7.2?", "created": "2014-11-14T17:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We are targeting 3.7.1 for our pieces.  Seems like the classifier changes should be minor enough to get in by then as well?\n\nI'm hoping to have a working version of our piece into the PE build by Tuesday of next week--all the hard parts are done already, the only thing left is just exposing the functionality over HTTP.", "created": "2014-11-14T18:32:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "Yes this needs to be in 3.7.1 all the way through the refresh button in the UI.", "created": "2014-11-17T10:07:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "This seems old, mostly completed, subsumed by NC class refresh stuff, I'm closing it.", "created": "2016-08-16T12:53:00.000000"}], "components": [], "created": "2014-10-21T21:40:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Server"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald", "Emerald", "jade", "Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@564bb8b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-6"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Green: Environment Caching"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "green"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywurr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3075060264_*|*_6_*:*_1_*:*_0_*|*_10014_*:*_1_*:*_54349335266"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15207", "fixedVersions": [], "id": "15207", "issueType": "Epic", "key": "SERVER-92", "labels": ["tse"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2016-08-16T12:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Environment Caching", "timeSpent": "PT0S", "updated": "2016-08-17T15:17:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:5ba935a37add096a82317dfb] Looking in to this, \"puppetmaster\" is no longer added by the current Puppet Master.  The current behavior automatically adds:\n* \"puppet\"\n* \"<fqdn>\"\n* \"puppet.<domain>\"\n\nWe can make Puppet Server add \"puppet\" easily, but the other two will require a bit more work. I've created SERVER-118 to cover that. Look for the addition of \"puppet\" in our next release (0.4.0), and SERVER-118 in a subsequent release.\n", "created": "2014-10-28T16:06:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Oh, [~accountid:5ba935a37add096a82317dfb] - I assume you meant the master certificate, not the CA certificate :D", "created": "2014-10-28T16:43:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I misidentified this ticket as a PE ticket.  It is a foss/platform ticket.  I've removed all of the comments and am returning this ticket to the state is was in on 2014/11/06.", "created": "2014-11-25T14:59:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-20T19:14:00.000000", "creator": "5ba935a37add096a82317dfb", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58f70b85"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywten:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_48537267_*|*_1_*:*_1_*:*_599050898_*|*_10007_*:*_1_*:*_169788557_*|*_3_*:*_1_*:*_18291500_*|*_10009_*:*_1_*:*_737747_*|*_5_*:*_1_*:*_558619102_*|*_6_*:*_2_*:*_1630006282_*|*_10006_*:*_1_*:*_69978377_*|*_10017_*:*_1_*:*_2841560"}], "description": "I noticed that when generating the ca with puppetserver the alternate dns names that puppet master used to create, puppet and puppetmaster, are not automatically added.\n\nAfter speaking with jwolfe via IRC it is confirmed that the alt names are not automatically added.\n\nAdding dns_alt_names in puppet.conf is the presumed workaround, but I think defaulting to adding puppet and puppetmaster is good behavior - it keeps it consistent with previous versions and also allows for easy expansion for orgs who set up their CA before they realize they need multiple puppet servers.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16675", "fixedVersions": ["SERVER 0.4.0"], "id": "16675", "issueType": "Improvement", "key": "SERVER-89", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5ba935a37add096a82317dfb", "resolution": "Fixed", "resolutionDate": "2014-11-25T14:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "dns alt names in puppetserver are not the same as former puppet master", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c08e1562ab90069f8aed4] - This is fixed in puppetlabs/master. It has not shipped in a release yet. The version in project.clj on master is 2.0.0, so I changed the fix version on this ticket to match that.", "created": "2015-03-03T13:11:00.000000"}], "components": [], "created": "2014-10-20T18:42:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@767cf50b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypg93:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_155517292_*|*_1_*:*_1_*:*_1208474694_*|*_10007_*:*_1_*:*_1301400855_*|*_3_*:*_1_*:*_341925505_*|*_5_*:*_1_*:*_57186221301_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_948253611"}], "description": "When an exception in puppet server bubbles all the way out to jetty, a 500 is returned.  The body of the response is HTML that contains the stracktrace of the exception.  (This actually affects any project using tk-jetty9, not just puppet server.)\n\nThis should be fixed.  In the case of server, I don't think we need to return anything more than a generic \"Internal Server Error\" - the error will always be logged on the server anyway, so I don't think it makes sense to send it to the client.\n\nIt may be worth implementing the solution for this in a generic way, which would *probably* be a very simple addition to ring-middleware .... or, it's likely that a very simple middleware for this already exists in one of the ring projects.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15802", "fixedVersions": ["SERVER 2.0.0"], "id": "15802", "issueType": "Improvement", "key": "SERVER-88", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2014-12-05T12:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "do not return HTML in the response body of a 500", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "CI tickets do not require QA review", "created": "2015-02-12T16:48:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-20T16:48:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6607f1c4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywtcn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_130509759_*|*_1_*:*_1_*:*_3165160_*|*_10007_*:*_1_*:*_80392295_*|*_3_*:*_1_*:*_877897_*|*_5_*:*_1_*:*_559128176_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_698905629"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15801", "fixedVersions": ["SERVER 0.4.0"], "id": "15801", "issueType": "Task", "key": "SERVER-87", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add CI jobs for testing package upgrades", "timeSpent": "PT0S", "updated": "2015-02-12T16:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Is this how the ruby CA behaves?  It seems like a good thing either way.", "created": "2014-10-20T16:49:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. Is this how the ruby CA behaves?\n\nYep - I've verified that autosigning and revoking don't use the $capub file.\n\nWe have SSL guides that walk you through regenerating your SSL infrastructure and you don't even get a $capub file at the end.  This is actually how some of the other SSL tickets came up", "created": "2014-10-27T16:52:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Accepted for PE 3.7.1. QA plans to validate.", "created": "2014-11-18T19:29:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "puppet config print capub returns the below by default.\n/etc/puppetlabs/puppet/ssl/ca/ca_pub.pem\n\nSteps to Validate:\necho \"*\" >> /etc/puppetlabs/puppet/autosign.conf\nservice pe-puppetserver restart\nopenssl req -new -newkey rsa:2048 -keyout foo.key -out foo.pem -passout pass:garbagepass -subj \\\"/C=US/ST=Oregon/L=Portland/O=PuppetLabs/CN=foo/OU=ESO_QA/emailAddress=test@puppetlabs.com\\\"\nmv /etc/puppetlabs/puppet/ssl/ca/ca_pub.pem /etc/puppetlabs/puppet/ssl/ca/ca_pub.BROKEN\ncurl --show-error -k -X PUT -H \"Content-Type: text/plain\" --data \"`cat foo.pem`\" https://j6cirakk35csv4c:8140/production/certificate_request/foo\n\n#Do it again, get \"Already Signed\"\ncurl --show-error -k -X PUT -H \"Content-Type: text/plain\" --data \"`cat foo.pem`\" https://j6cirakk35csv4c:8140/production/certificate_request/foo\n\ncd /etc/puppetlabs/puppet/ssl/ca/signed\n\nopenssl x509 -in foo.pem -noout -text\n\n\nValidated on rhel7 with 3.7.1-rc2-1-g49c6a6e\n\n\n", "created": "2014-12-04T12:40:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing.  Validated.", "created": "2014-12-04T12:42:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-20T16:48:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fa1da51"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypgd3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_235870367_*|*_1_*:*_1_*:*_3193724_*|*_10007_*:*_1_*:*_74896797_*|*_3_*:*_1_*:*_272715656_*|*_10009_*:*_2_*:*_270422112_*|*_5_*:*_1_*:*_559166242_*|*_6_*:*_2_*:*_2133437810_*|*_10006_*:*_1_*:*_327141270"}], "description": "We should get the CA public key from the CA certificate instead of the capub file when we autosign.\n\nWe should also try and make sure there aren't other places that try to read the capub file and instead have them read the key from the CA cert file instead.\n\n*Update*: I looked at the code and saw only one other use of the capub file when revoking a certificate. Same story - just switch it to use the cacert instead.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15526", "fixedVersions": ["SERVER 0.4.0"], "id": "15526", "issueType": "Bug", "key": "SERVER-86", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2014-12-04T12:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Don't use capub when autosigning (or at all!)", "timeSpent": "PT0S", "updated": "2015-01-22T16:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:63d4062f69c7ae3958d276ed] and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] please add any information", "created": "2014-10-20T13:33:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This is fixed in puppetlabs/master.  It has not shipped in a release yet.  The version in project.clj on master is 2.0.0, so I changed the fix version on this ticket to match that.", "created": "2015-03-03T13:06:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c08e1562ab90069f8aed4] - This was one of the tickets you asked about last week - see my previous comment.", "created": "2015-03-03T13:12:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-20T13:28:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@428316a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp8zj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_598152745_*|*_1_*:*_1_*:*_15228495_*|*_10007_*:*_1_*:*_3184515766_*|*_3_*:*_1_*:*_15544978_*|*_10009_*:*_1_*:*_1735676506_*|*_5_*:*_1_*:*_51906227993_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3447066042_*|*_10005_*:*_1_*:*_258232989"}], "description": "...the same way we synchronize the hostcacert with the cacert.\n\nThis came about because some things -- like the installer -- are (correctly) using the hostcrl, but the Server never updates it after it creates it the first time.  While our story for CRL support is already a bit of a manual one, this automated step seems harmless and could be worthwhile for users considering the development effort it would take.\n\nSome ways we could implement this synchronization are:\n* Another part of the existing CA/initialize-master-ssl! or CA/retrieve-ca-cert!\n* A new CA protocol method (e.g. retrieve-ca-crl! or something)\n* Another part of the master service initialization", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "17474", "fixedVersions": ["SERVER 2.0.0"], "id": "17474", "issueType": "Task", "key": "SERVER-85", "labels": [], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-02-04T15:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider synchronizing hostcrl with cacrl during startup", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:5ba935a37add096a82317dfb].  You are absolutely right about the need to preserve the content {{/etc/sysconfig/puppetserver}} file across an upgrade.\n\nFor the production of the next puppetserver package release, 0.3.1, we'll be adding a \"%config(noreplace)\" directive for the {{/etc/sysconfig/puppetserver}} file to the spec file used to produce the RPM.  This will, in turn, allow for any customizations made to that file to be preserved even after the update and for the new content to be available for viewing at {{/etc/sysconfig/puppetserver.rpmnew}}.", "created": "2014-10-21T14:55:00.000000"}], "components": [], "created": "2014-10-20T13:18:00.000000", "creator": "5ba935a37add096a82317dfb", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@273c2b7b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypks7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_150038580_*|*_1_*:*_1_*:*_15836079_*|*_3_*:*_1_*:*_3071832_*|*_10009_*:*_1_*:*_18974143_*|*_5_*:*_1_*:*_1218716761_*|*_6_*:*_2_*:*_3023342_*|*_10006_*:*_1_*:*_75916946"}], "description": "The puppetserver rpm, at least in the el6 package, is incorrectly overwriting /etc/sysconfig/puppetserver, causing local customizations to be lost.  Customizations in that file are quite important.  Even worse, it doesn't appear to save that file anywhere when it overwrites it.  It *should* follow the expected .rpmnew/.rpmold convention.\n\nIn this case I updated to 0.2.2 on CentOS 6, but I suspect the behavior is the same in all o the el6 packages which likely share the same spec file.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17257", "fixedVersions": ["SERVER 0.4.0"], "id": "17257", "issueType": "Bug", "key": "SERVER-84", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5ba935a37add096a82317dfb", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "upgrading puppetserver rpm overwrites /etc/sysconfig/puppetserver", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5ba935a37add096a82317dfb", "body": "I downgraded to 0.2.1 and experienced the same behavior.  I don't think I've changed anything, but I'm surprised that I haven't run in to this earlier as our build system relies on this.\n\nI AM able to \"puppet cert sign\" the cert on the ca server, so my current work-around is to just do a manual sign and then kick puppet on the client.", "created": "2014-10-20T13:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5ba935a37add096a82317dfb] any chance you could give us a copy of the pem files from the machine where this happened?  We'd probably need the private_key, public key, and CSR pems, so obviously this is only an option if you're OK with blowing away the keys on that host :)", "created": "2014-10-20T16:24:00.000000"}, {"author": "5ba935a37add096a82317dfb", "body": "With some excellent help from folks on IRC, it turns out that indeed the pulbic key was not valid.  I'd re-generated the certs following puppet docs, but the public key is not automatically generated.  I'd attempted, unsuccessfully, to create it.  So it seems like this should just turn in to a better error handling request, instead of \"org.bouncycastle.cert.X509CertificateHolder cannot be cast to org.bouncycastle.asn1.x509.SubjectPublicKeyInfo\" saying \"ca_pub.pem did not contain the expected public key\".\n\nI'm concerned though that the public key was not generated automatically, and that puppetserver refueses to start.  That dependency is supposed to be removed, but as I've commented in another related ticket I'm concerned then that if the cert is required for auto signing that it needs to be created automatically, or at least mentioned.\n\nFor the record, I generated it successfully with 'openssl rsa -in ca_key.pem -pubout -out ca_pub.pem'.", "created": "2014-10-20T17:44:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] ping re: error message", "created": "2014-10-20T17:46:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. I'm concerned though that the public key was not generated automatically, and that puppetserver refueses to start. That dependency is supposed to be removed, but as I've commented in another related ticket I'm concerned then that if the cert is required for auto signing that it needs to be created automatically, or at least mentioned.\n\nYes, I missed a spot when removing the need for the CA public key file in my last attempt.  The CA public key is actually available from more than just the ca_pub.pem file.  We can get the same key from ca_crt.pem, which is how we removed the need for ca_pub.pem during startup, but we forgot to make the same change to autosign.  It's an easy fix, so look for it in the next release.\n\nbq. So it seems like this should just turn in to a better error handling request...\n\nI agree, we'll look into improving this!\n", "created": "2014-10-20T18:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] same with this ticket, can you update please?  Are there actions required or is this encompassed in the other ticket you're working on?  If the latter, can you link to that ticket and close this one?", "created": "2014-10-21T22:37:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "See SERVER-86 for the root of this problem.", "created": "2014-10-22T10:32:00.000000"}], "components": [], "created": "2014-10-20T13:04:00.000000", "creator": "5ba935a37add096a82317dfb", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c9f0ac7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywt9b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16869897_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_146854357"}], "description": "I've replaced my hostname with 'hostname', domain with 'domain'.\n\nRunning puppetserver-0.2.2-1.el6.noarch on the server, puppet-3.6.2-1.el6.noarch on the client.  Both on CentOS 6.5.\n\nThis error occurs when a new client is attempting to connect, and I have auto-signing on.  Hundreds of existing clients are having no problem connecting.\n\nroot@hostname.domain.com~]# puppet agent -t --server=puppetmaster.domain.com\nInfo: csr_attributes file loading from /etc/puppet/csr_attributes.yaml\nInfo: Creating a new SSL certificate request for x.x.x.x\nInfo: Certificate Request fingerprint (SHA256): 85:87:79:1E:E9:84:E7:48:ED:A0:3E:4B:DF:8E:AB:1B:1F:B5:CD:97:FF:A5:C7:A2:61:8D:D5:4C:57:64:0B:F0\nError: Could not request certificate: Error 500 on SERVER: <html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\"/>\n<title>Error 500 </title>\n</head>\n<body>\n<h2>HTTP ERROR: 500</h2>\n<p>Problem accessing /production/certificate_request/hostname.domain.com. Reason:\n<pre>    org.bouncycastle.cert.X509CertificateHolder cannot be cast to org.bouncycastle.asn1.x509.SubjectPublicKeyInfo</pre></p>\n<hr /><i><small>Powered by Jetty://</small></i>\n</body>\n</html>\n\nExiting; failed to retrieve certificate and waitforcert is disabled\n\n\n\non the server, in puppetserver.log, this is all I see:\n\n2014-10-20 19:01:02,140 WARN  [o.e.j.s.HttpChannel] /production/certificate_request/hostname.domain.com\njava.lang.ClassCastException: org.bouncycastle.cert.X509CertificateHolder cannot be cast to org.bouncycastle.asn1.x509.SubjectPublicKeyInfo\n    at com.puppetlabs.certificate_authority.CertificateAuthority.pemToPublicKey(CertificateAuthority.java:533) ~[puppet-server-release.jar:na]\n    at puppetlabs.certificate_authority.core$pem__GT_public_key$fn__6957.invoke(core.clj:656) ~[na:na]\n    at puppetlabs.certificate_authority.core$pem__GT_public_key.invoke(core.clj:655) ~[na:na]\n    at puppetlabs.puppetserver.certificate_authority$eval9501$autosign_certificate_request_BANG___9502$fn__9506.invoke(certificate_authority.clj:738) ~[na:na]\n    at puppetlabs.puppetserver.certificate_authority$eval9501$autosign_certificate_request_BANG___9502.invoke(certificate_authority.clj:721) ~[na:na]\n    at puppetlabs.puppetserver.certificate_authority$eval9636$process_csr_submission_BANG___9637$fn__9641.invoke(certificate_authority.clj:825) ~[na:na]\n    at puppetlabs.puppetserver.certificate_authority$eval9636$process_csr_submission_BANG___9637.invoke(certificate_authority.clj:806) ~[na:na]\n    at puppetlabs.services.ca.certificate_authority_core$eval12667$handle_put_certificate_request_BANG___12668$fn__12669.invoke(certificate_authority_core.clj:41) ~[na:na]\n    at puppetlabs.services.ca.certificate_authority_core$eval12667$handle_put_certificate_request_BANG___12668.invoke(certificate_authority_core.clj:36) ~[na:na]\n    at puppetlabs.services.ca.certificate_authority_core$eval12743$routes__12744$fn__12745$fn__12746$fn__12753$fn__12756.invoke(certificate_authority_core.clj:284) ~[na:na]\n    at compojure.core$make_route$fn__10848.invoke(core.clj:99) ~[na:na]\n    at compojure.core$if_route$fn__10832.invoke(core.clj:45) ~[na:na]\n    at compojure.core$if_method$fn__10825.invoke(core.clj:30) ~[na:na]\n    at compojure.core$routing$fn__10854.invoke(core.clj:112) ~[na:na]\n    at clojure.core$some.invoke(core.clj:2443) ~[puppet-server-release.jar:na]\n    at compojure.core$routing.doInvoke(core.clj:112) ~[na:na]\n    at clojure.lang.RestFn.invoke(RestFn.java:439) ~[puppet-server-release.jar:na]\n    at puppetlabs.services.ca.certificate_authority_core$eval12743$routes__12744$fn__12745$fn__12746$fn__12753.invoke(certificate_authority_core.clj:283) ~[na:na]\n    at compojure.core$wrap_context$fn__10909.invoke(core.clj:176) ~[na:na]\n    at compojure.core$if_route$fn__10832.invoke(core.clj:45) ~[na:na]\n    at compojure.core$routing$fn__10854.invoke(core.clj:112) ~[na:na]\n    at clojure.core$some.invoke(core.clj:2443) ~[puppet-server-release.jar:na]\n    at compojure.core$routing.doInvoke(core.clj:112) ~[na:na]\n    at clojure.lang.RestFn.invoke(RestFn.java:486) ~[puppet-server-release.jar:na]\n    at puppetlabs.services.ca.certificate_authority_core$eval12743$routes__12744$fn__12745$fn__12746.invoke(certificate_authority_core.clj:285) ~[na:na]\n    at compojure.core$wrap_context$fn__10909.invoke(core.clj:176) ~[na:na]\n    at compojure.core$if_route$fn__10832.invoke(core.clj:45) ~[na:na]\n    at puppetlabs.services.ca.certificate_authority_core$wrap_with_puppet_version_header$fn__12773.invoke(certificate_authority_core.clj:293) ~[na:na]\n    at puppetlabs.puppetserver.ringutils$wrap_response_logging$fn__9997.invoke(ringutils.clj:34) ~[na:na]\n    at compojure.core$routing$fn__10854.invoke(core.clj:112) ~[na:na]\n    at clojure.core$some.invoke(core.clj:2443) ~[puppet-server-release.jar:na]\n    at compojure.core$routing.doInvoke(core.clj:112) ~[na:na]\n    at clojure.lang.RestFn.invoke(RestFn.java:423) ~[puppet-server-release.jar:na]\n    at puppetlabs.services.ca.certificate_authority_service$reify__12800$service_fnk__5254__auto___positional$reify__12809$fn__12810.invoke(certificate_authority_service.clj:19) ~[na:na]\n    at compojure.core$wrap_context$fn__10909.invoke(core.clj:176) ~[na:na]\n    at compojure.core$if_route$fn__10832.invoke(core.clj:45) ~[na:na]\n    at puppetlabs.trapperkeeper.services.webserver.jetty9_core$ring_handler$fn__7605.invoke(jetty9_core.clj:299) ~[na:na]\n    at puppetlabs.trapperkeeper.services.webserver.jetty9_core.proxy$org.eclipse.jetty.server.handler.AbstractHandler$0.handle(Unknown Source) ~[na:na]\n    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1112) ~[puppet-server-release.jar:na]\n    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1048) ~[puppet-server-release.jar:na]\n    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[puppet-server-release.jar:na]\n    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199) ~[puppet-server-release.jar:na]\n    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) ~[puppet-server-release.jar:na]\n    at org.eclipse.jetty.servlets.gzip.GzipHandler.handle(GzipHandler.java:325) ~[puppet-server-release.jar:na]\n    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[puppet-server-release.jar:na]\n    at org.eclipse.jetty.server.Server.handle(Server.java:459) ~[puppet-server-release.jar:na]\n    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:280) ~[puppet-server-release.jar:na]\n    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:229) [puppet-server-release.jar:na]\n    at org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505) [puppet-server-release.jar:na]\n    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) [puppet-server-release.jar:na]\n    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) [puppet-server-release.jar:na]\n    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16849", "fixedVersions": [], "id": "16849", "issueType": "Bug", "key": "SERVER-83", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5ba935a37add096a82317dfb", "resolution": "Duplicate", "resolutionDate": "2014-10-22T10:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "X509CertificateHolder cannot be cast", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Update automation to include this ticket for puppet-server always", "created": "2014-10-20T12:11:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Haus did this.", "created": "2014-10-21T12:38:00.000000"}], "components": [], "created": "2014-10-20T12:08:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@66f9ce99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywt7r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9790_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_88226075"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15525", "fixedVersions": ["SERVER 0.3.0"], "id": "15525", "issueType": "Sub-task", "key": "SERVER-81", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2014-10-21T12:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "make some sort of update to dujour", "timeSpent": "PT0S", "updated": "2014-10-21T12:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It's also possible that the \"right\" fix for this is to make sure that for gems that we package via OS packages, we put them directly into the jruby-gems directory.  [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] would be interested in discussing with you at some point", "created": "2014-10-17T14:32:00.000000"}, {"author": "557058:0444821f-e8cd-4243-bf02-544b4bd4f224", "body": "When you say 'put them directly into the jruby-gems directory', by jruby-gems directory are you meaning the puppetserver jruby-gems directory? If so wouldn't that mean you'd be making those packages all dependent on the puppetserver package? I fail to see how that would be \"right\" since it's technically a reverse dependency, seeing that puppetserver is dependent on hiera and not the other way around.", "created": "2014-10-20T09:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm saying that if Puppet Server has a dependency on hiera and we want to make sure that we have a jruby-compatible version of hiera to satisfy that dependency, then maybe we should have e.g. a puppet-server-hiera-gem package, which, yes, would put the files into the puppetserver jruby-gems directory.\n\nI'm not saying I'm 100% sold that this is the right way to go, just that the way we are doing it right now forces you to expose the JRuby interpreters to gem paths that may be targeted at versions of ruby that are incompatible with the embedded JRuby, and my preference would be to find a clean way to keep them separated.\n\nAllowing the jruby interpreters to look into the gem path for your system ruby is kind of analogous to using a tool like rvm/rbenv to install ruby 1.8 and 1.9, and then configuring your 1.9 ruby to look in the 1.8 gem path for gems.  It'll probably work in many cases but it's risky and would be better to isolate them.\n\nJust brainstorming for now! :)", "created": "2014-10-20T10:02:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-17T11:46:00.000000", "creator": "557058:0444821f-e8cd-4243-bf02-544b4bd4f224", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4978beb3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywisn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_280949549_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_67474532685"}], "description": "On OpenSUSE/SLES systems Hiera is packaged from a gem, package name rubygem-hiera, and installed under %{_libdir}/ruby/gems/%{rb_ver}/ instead of %{_libdir}/ruby/vendor_ruby/%{rb_ver}. The ruby-load-path values are typically /usr/lib64/ruby/vendor_ruby/2.0.0 and or /usr/lib64/ruby/site_ruby/2.0.0, so the hiera terminus fails load resulting in a client side error of \"Puppet::Parser::AST::Resource failed with error RuntimeError: Hiera terminus not supported without hiera library\". In order for puppetserver to find the hiera terminus you need to specify the full path to the hiera/lib directory, which in this case is /usr/lib64/ruby/gems/2.0.0/gems/hiera-1.2.1/lib, in os-settings.conf. Ideally only specifying the top level gem directory, %{_libdir}/ruby/gems/%{rb_ver}/, and having it recursively searched would ensure the library isn't missed due to package updated which would change said path.\n\nPerhaps implemented a gems-load-path or something similar in addition to the ruby-load-path for systems packages might be a solution.", "environment": "OpenSUSE 13.1\nopenjdk-1.7.0\npuppet-3.7.1\nrubygem-hiera-1.2.1\nInstallation REPO:\nhttp://download.opensuse.org/repositories/systemsmanagement:/puppet/openSUSE_13.1/", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17472", "fixedVersions": [], "id": "17472", "issueType": "Bug", "key": "SERVER-78", "labels": ["puppethack"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0444821f-e8cd-4243-bf02-544b4bd4f224", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "ruby-load-path does not recursively scan system ruby gem path", "timeSpent": "PT0S", "updated": "2016-12-09T15:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] should this go to a server project?  another project?\n\nshould this use scooter?", "created": "2015-09-25T15:24:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "[~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] Yes it would go in the server project.  I've done that.\nThe use of Scooter is a maybe.", "created": "2015-09-29T13:52:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "History Note: For a time, there were HTTP CA API tests running from the QATest repository and running in the QATest CI Pipeline.  These tests were removed because they were a little fragile, because they were expensive to maintain, and because the only bugs they found were low priority bugs.\n\nBut we need the HTTP CA API portion of those tests back...", "created": "2016-04-21T12:43:00.000000"}, {"author": "557058:1d244b27-1afc-481c-a463-e4c0cefad02f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31]  Any progress since last update?", "created": "2016-04-25T17:20:00.000000"}, {"author": "557058:1d244b27-1afc-481c-a463-e4c0cefad02f", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] Ping... any update?", "created": "2016-04-27T12:15:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Not really an update, but I can add some detail:\nPreviously the HTTP CA tests used a library.  This library is totally out of date.  I'm considering breaking this ticket into many smaller tickets so that I'll be able to show some progress this sprint.\n\nRight now the specific thing I'm working on is the ability to update TK auth.conf rules to allow HTTP CA testing.  (Previously we used legacy auth.conf, now its entirely different.)  Done correctly, this work may also support TK-293 and SERVER-1268.\n", "created": "2016-04-28T10:32:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed approach with Chris Price and Kurt Wall.  This ticket probably needs to be broken down into sub tickets, or at least approached during a sprint when I'm not also being CI goalie.\n\nExisting HTTP CA tests at the unit and integration level are here", "created": "2016-05-03T14:52:00.000000"}, {"author": "557058:96a443bf-a3ab-426b-9442-ce50c9977428", "body": "[~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] will create new itty bitty tickets per new procedure for remaining work.", "created": "2016-05-04T12:07:00.000000"}], "components": ["Certificate Authority"], "created": "2014-10-17T11:39:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32b9a8a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywqhb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_29648733896_*|*_3_*:*_1_*:*_1121030427_*|*_5_*:*_1_*:*_12608664195_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_340093320_*|*_10006_*:*_1_*:*_17707851830"}], "description": "The HTTP CA API tests are poorly designed.  Largely they consist of bash & curl encapsulated in Ruby.  They should be refactored to use Ruby libraries like HTTParty for www access and Class:OpenSSL for certificate management.\n\nAdditionally, the tests should be refactored to handle short host names vs FQDNs.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17252", "fixedVersions": [], "id": "17252", "issueType": "Task", "key": "SERVER-913", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Fixed", "resolutionDate": "2016-05-04T12:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Resurrect and Refactor the HTTP CA API tests.", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "stable", "created": "2014-10-17T11:43:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Going to add a toggle setting along the lines of:\n{code}\ncertificate-authority: {\n    certificate-status: {\n        authorization-required?: true/false\n        client-whitelist: []\n    }\n}\n{code}", "created": "2014-10-17T12:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] I wouldn't include a `?` in the setting name.  Have had problems with that character not working properly in all config file formats / JSON / etc. in the past.", "created": "2014-10-17T14:25:00.000000"}], "components": [], "created": "2014-10-17T08:13:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@544496e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyplxz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_248367844_*|*_1_*:*_1_*:*_14799807_*|*_10007_*:*_1_*:*_4137684_*|*_3_*:*_1_*:*_16191160_*|*_10009_*:*_1_*:*_94342892_*|*_6_*:*_1_*:*_0"}], "description": "This is a follow-up to SERVER-39; it sounds like there are some use cases where users still need to be able to access the cert_status endpoint via plaintext HTTP.  We currently don't support this since we require a client certificate.  Eventually we might decide to support the X-header approach as a solution to this, but for now, we should just add a mechanism for turning off the client cert check.\n\nNeed to decide what the setting for this looks like; it could either be a new toggle setting (auth enabled/disabled), or it could be an overload of the whitelist setting (e.g. empty list means no auth required?).  I'd probably lean slightly towards the explicit approach (new toggle setting) but we should discuss.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16342", "fixedVersions": ["SERVER 0.3.0"], "id": "16342", "issueType": "New Feature", "key": "SERVER-77", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-10-21T17:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow users to disable cert requirement for cert_status endpoint", "timeSpent": "PT0S", "updated": "2015-06-16T17:34:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Verified Puppet package dependency is >= 3.7.1 on Cent 6, Cent 7, and Ubuntu 12.", "created": "2014-10-21T12:46:00.000000"}], "components": [], "created": "2014-10-16T12:20:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18c1d56d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyplwn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_266233410_*|*_1_*:*_1_*:*_84449111_*|*_10007_*:*_1_*:*_3145805_*|*_3_*:*_1_*:*_1430402_*|*_10009_*:*_1_*:*_78278530_*|*_5_*:*_1_*:*_61076737935_*|*_6_*:*_1_*:*_0"}], "description": "We need to upgrade it to one of:\n* >= 3.7.1\n* 3.7.2\n* >= 3.7.2", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16674", "fixedVersions": ["SERVER 0.3.0"], "id": "16674", "issueType": "Improvement", "key": "SERVER-76", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2014-10-21T12:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "package dependency on puppet is fixed at 3.7.1", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f] is currently testing this.  As of Friday, he had done a somewhat long-running testing using PE 3.4 build 1505, which contains an updated version of puppet, which contains Henrik's fix for the memory leak in puppet.  This build got the sign-off from [~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f] as no longer exhibiting the memory leak seen in previous builds.  He is now testing on a multi-master setup.", "created": "2014-10-20T10:32:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f] - are you still running clamps tests?  Any more results to share?", "created": "2014-10-23T18:14:00.000000"}, {"author": "557058:362bc1c3-742f-4428-a556-fa2b03887e0f", "body": "I haven't reproduced the same exact results, but even with two compile masters, they both hit OOM exceptions before I hit 500 users each (1,000 total non-root users).\n\nIf you want to run an experiment to specifically track this, we can set something up next week.", "created": "2014-10-23T18:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f] what heap size are you talking about for that last comment?", "created": "2014-10-23T18:57:00.000000"}, {"author": "557058:362bc1c3-742f-4428-a556-fa2b03887e0f", "body": "The default of -Xms and -Xmx both at 2g.", "created": "2014-10-24T09:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK.  So in your use cases so far it still works OK if you bump it up to 3g?", "created": "2014-10-24T09:53:00.000000"}, {"author": "557058:362bc1c3-742f-4428-a556-fa2b03887e0f", "body": "To a point. In the last week, I've been setting the numbers to 4g because I'm trying to max the number of agents I can run.", "created": "2014-10-24T09:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Cool, makes sense", "created": "2014-10-24T10:00:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f] - can you please add a link to that confluence page that you just showed me, which has your daily notes about clamps testing?", "created": "2014-10-28T14:15:00.000000"}, {"author": "557058:362bc1c3-742f-4428-a556-fa2b03887e0f", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] https://confluence.puppetlabs.com/pages/viewpage.action?pageId=28610718\n\nI'll also put up another page if/when we build a \"stability\" cluster.", "created": "2014-10-28T14:18:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I just read the latest notes from [~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f].  Looks like they now have a cluster running w/ 6k agents.  That's significantly more than we've had in the past, so I'm going to leave this ticket open a bit longer.  But, given that there haven't been any reports of memory issues with Puppet Server recently, I will probably close this out shortly, unless something else comes up.", "created": "2014-11-07T14:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "How many masters in that cluster?", "created": "2014-11-07T15:06:00.000000"}, {"author": "557058:362bc1c3-742f-4428-a556-fa2b03887e0f", "body": "54.191.246.234 qe-console   # Console ( admin | puppetlabs )\n\nTwo compile masters with Xms and Xmx both set to 6GB on both hosts. If forced to give a good rule of thumb, I am fairly certain 2MB per agent is acceptable (barring future further investigation).\n\n6000 users * 2MB = ~12GB\n\n12GB / 2 compile masters = 6GB to assign to Xms and Xmx", "created": "2014-11-07T22:27:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "All recent problems seem to be MCO-related", "created": "2014-11-11T10:47:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "And, as always, anyone should feel free to re-open if this issue if the need arises.", "created": "2014-11-11T10:48:00.000000"}], "components": [], "created": "2014-10-15T17:53:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6842e34b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypjcn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_154384636_*|*_3_*:*_1_*:*_2156505360_*|*_5_*:*_1_*:*_59265648464_*|*_6_*:*_1_*:*_0"}], "description": "[~accountid:557058:362bc1c3-742f-4428-a556-fa2b03887e0f] just mentioned that, in testing use of the clamps module (https://github.com/mrzarquon/clamps) with 300 agents, he witnessed puppet-server throw an {{OutOfMemoryError}} using the default heap size (2 GB).  Bumping this up to 3 GB seems to prevent this from happening.  It seems a bit fishy that the load generated by 300 agents should be able to blow up a 2 GB heap.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16848", "fixedVersions": [], "id": "16848", "issueType": "Task", "key": "SERVER-75", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Done", "resolutionDate": "2014-11-11T10:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "investigate memory usage while 'clamps' module is in use", "timeSpent": "PT0S", "updated": "2016-09-27T10:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-10-15T16:02:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f4d6cb0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywrsf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_76115045_*|*_6_*:*_1_*:*_0"}], "description": "The execution stub used by puppet-server ignores the options given to it when executing a command.  These options are defined here: https://github.com/puppetlabs/puppet/blob/ccb7ff634b423b1cec53d1ac7786a65849043629/lib/puppet/util/execution.rb#L141", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16847", "fixedVersions": [], "id": "16847", "issueType": "Bug", "key": "SERVER-74", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Fix", "resolutionDate": "2014-10-16T13:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "execution stub does not handle options", "timeSpent": "PT0S", "updated": "2021-07-08T17:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Accepted for PE 3.7.1. QA plans to validate.", "created": "2014-11-18T19:30:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated on 3.7.1-rc0-122-gb6686b2.\n2014-11-25 12:24:17,460 INFO  [p.e.s.m.master-service] Puppet Server has successfully started and is now ready to handle requests", "created": "2014-11-25T13:25:00.000000"}], "components": [], "created": "2014-10-15T14:27:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c962516"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywtev:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_159363693_*|*_1_*:*_1_*:*_444140377_*|*_10007_*:*_2_*:*_63318355_*|*_3_*:*_1_*:*_23593122_*|*_5_*:*_1_*:*_558571984_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_664453910"}], "description": "puppet server should log an obvious, recognizable message after jetty's been started and the server is ready to handle requests.  Users are frequently watching the log on startup, and they currently have to look for the less-than-awesome 'started ServerConnector ...' message, or watch the JRuby pool initialization logging, neither of which is user-friendly.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15523", "fixedVersions": ["SERVER 0.4.0"], "id": "15523", "issueType": "New Feature", "key": "SERVER-73", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "log a message when ready to handle requests", "timeSpent": "PT0S", "updated": "2016-01-20T11:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-10-15T14:25:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38afe0c6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywirj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_444369386_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_67474370956"}], "description": "When running from source (via a SNAPSHOT version), the version check code may log an exception that looks like this:\n\n{code}\n\t\n\n    2014-10-15 22:19:56,402 DEBUG [p.s.v.version-check-core] Could not retrieve update information (http://updates.puppetlabs.com)\n    clojure.lang.ExceptionInfo: throw+: {:type :puppetlabs.services.version.version-check-core/update-request-failed, :message {:opts {:persistent false, :as :text, :dec\n    ompress-body true, :body nil, :headers {\"Accept\" \"application/json\"}, :method :get, :url \"http://updates.puppetlabs.com?product=puppetserver&group=puppetlabs.package\n    s&version=\"}, :orig-content-encoding nil, :status 400, :headers {\"connection\" \"keep-alive\", \"content-length\" \"43\", \"date\" \"Wed, 15 Oct 2014 20:19:56 GMT\", \"server\" \"\n    nginx\"}, :content-type nil, :body \" is not a valid semantic version number, yo\"}}\n            at puppetlabs.services.version.version_check_core$eval11916$update_info__11917$fn__11918.invoke(version_check_core.clj:76) ~[na:na]\n            at puppetlabs.services.version.version_check_core$eval11916$update_info__11917.invoke(version_check_core.clj:59) ~[na:na]\n            at puppetlabs.services.version.version_check_core$check_for_updates$fn__11936.invoke(version_check_core.clj:96) ~[na:na]\n            at puppetlabs.services.version.version_check_core$check_for_updates.invoke(version_check_core.clj:95) [na:na]\n            at puppetlabs.services.version.version_check_service$reify__11949$service_fnk__5300__auto___positional$reify__11956$fn__11957.invoke(version_check_service.cl\n    j:15) [na:na]\n            at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836) [clojure-1.5.1.jar:na]\n            at clojure.lang.AFn.call(AFn.java:18) [clojure-1.5.1.jar:na]\n            at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_65]\n            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_65]\n            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_65]\n            at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]\n{code}\n\nWe should add some better error handling.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14939", "fixedVersions": ["SERVER 1.y"], "id": "14939", "issueType": "Task", "key": "SERVER-72", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "improve error message when version check fails", "timeSpent": "PT0S", "updated": "2016-12-09T15:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4bee866b810069e3689a", "body": "The rest of the configuration is entirely vanilla except for the fact that we remove the ca-service from {{bootstrap.cfg}}.", "created": "2014-10-15T07:50:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "I changed {{webserver.conf}} to look like this:\n\n{noformat}\nwebserver: {\n    client-auth = want\n    ssl-host = 0.0.0.0\n    ssl-port = 8140\n    ssl-protocols = [TLSv1, TLSv1.1, TLSv1.2]\n}\n{noformat}\n\nUnfortunately that still results in the same SSL error on the agent.\n\nsslscan result:\n\n{noformat}\nTesting SSL server vm0002 on port 8140\n\n  Supported Server Cipher(s):\n    Failed    SSLv3  256 bits  ECDHE-RSA-AES256-GCM-SHA384\n    Failed    SSLv3  256 bits  ECDHE-ECDSA-AES256-GCM-SHA384\n    Failed    SSLv3  256 bits  ECDHE-RSA-AES256-SHA384\n    Failed    SSLv3  256 bits  ECDHE-ECDSA-AES256-SHA384\n    Rejected  SSLv3  256 bits  ECDHE-RSA-AES256-SHA\n    Rejected  SSLv3  256 bits  ECDHE-ECDSA-AES256-SHA\n    Failed    SSLv3  256 bits  SRP-DSS-AES-256-CBC-SHA\n    Failed    SSLv3  256 bits  SRP-RSA-AES-256-CBC-SHA\n    Failed    SSLv3  256 bits  SRP-AES-256-CBC-SHA\n    Failed    SSLv3  256 bits  DHE-DSS-AES256-GCM-SHA384\n    Failed    SSLv3  256 bits  DHE-RSA-AES256-GCM-SHA384\n    Failed    SSLv3  256 bits  DHE-RSA-AES256-SHA256\n    Failed    SSLv3  256 bits  DHE-DSS-AES256-SHA256\n    Rejected  SSLv3  256 bits  DHE-RSA-AES256-SHA\n    Rejected  SSLv3  256 bits  DHE-DSS-AES256-SHA\n    Rejected  SSLv3  256 bits  DHE-RSA-CAMELLIA256-SHA\n    Rejected  SSLv3  256 bits  DHE-DSS-CAMELLIA256-SHA\n    Rejected  SSLv3  256 bits  AECDH-AES256-SHA\n    Failed    SSLv3  256 bits  ADH-AES256-GCM-SHA384\n    Failed    SSLv3  256 bits  ADH-AES256-SHA256\n    Rejected  SSLv3  256 bits  ADH-AES256-SHA\n    Rejected  SSLv3  256 bits  ADH-CAMELLIA256-SHA\n    Failed    SSLv3  256 bits  ECDH-RSA-AES256-GCM-SHA384\n    Failed    SSLv3  256 bits  ECDH-ECDSA-AES256-GCM-SHA384\n    Failed    SSLv3  256 bits  ECDH-RSA-AES256-SHA384\n    Failed    SSLv3  256 bits  ECDH-ECDSA-AES256-SHA384\n    Rejected  SSLv3  256 bits  ECDH-RSA-AES256-SHA\n    Rejected  SSLv3  256 bits  ECDH-ECDSA-AES256-SHA\n    Failed    SSLv3  256 bits  AES256-GCM-SHA384\n    Failed    SSLv3  256 bits  AES256-SHA256\n    Rejected  SSLv3  256 bits  AES256-SHA\n    Rejected  SSLv3  256 bits  CAMELLIA256-SHA\n    Failed    SSLv3  256 bits  PSK-AES256-CBC-SHA\n    Rejected  SSLv3  168 bits  ECDHE-RSA-DES-CBC3-SHA\n    Rejected  SSLv3  168 bits  ECDHE-ECDSA-DES-CBC3-SHA\n    Failed    SSLv3  168 bits  SRP-DSS-3DES-EDE-CBC-SHA\n    Failed    SSLv3  168 bits  SRP-RSA-3DES-EDE-CBC-SHA\n    Failed    SSLv3  168 bits  SRP-3DES-EDE-CBC-SHA\n    Rejected  SSLv3  168 bits  EDH-RSA-DES-CBC3-SHA\n    Rejected  SSLv3  168 bits  EDH-DSS-DES-CBC3-SHA\n    Rejected  SSLv3  168 bits  AECDH-DES-CBC3-SHA\n    Rejected  SSLv3  168 bits  ADH-DES-CBC3-SHA\n    Rejected  SSLv3  168 bits  ECDH-RSA-DES-CBC3-SHA\n    Rejected  SSLv3  168 bits  ECDH-ECDSA-DES-CBC3-SHA\n    Rejected  SSLv3  168 bits  DES-CBC3-SHA\n    Failed    SSLv3  168 bits  PSK-3DES-EDE-CBC-SHA\n    Failed    SSLv3  128 bits  ECDHE-RSA-AES128-GCM-SHA256\n    Failed    SSLv3  128 bits  ECDHE-ECDSA-AES128-GCM-SHA256\n    Failed    SSLv3  128 bits  ECDHE-RSA-AES128-SHA256\n    Failed    SSLv3  128 bits  ECDHE-ECDSA-AES128-SHA256\n    Rejected  SSLv3  128 bits  ECDHE-RSA-AES128-SHA\n    Rejected  SSLv3  128 bits  ECDHE-ECDSA-AES128-SHA\n    Failed    SSLv3  128 bits  SRP-DSS-AES-128-CBC-SHA\n    Failed    SSLv3  128 bits  SRP-RSA-AES-128-CBC-SHA\n    Failed    SSLv3  128 bits  SRP-AES-128-CBC-SHA\n    Failed    SSLv3  128 bits  DHE-DSS-AES128-GCM-SHA256\n    Failed    SSLv3  128 bits  DHE-RSA-AES128-GCM-SHA256\n    Failed    SSLv3  128 bits  DHE-RSA-AES128-SHA256\n    Failed    SSLv3  128 bits  DHE-DSS-AES128-SHA256\n    Rejected  SSLv3  128 bits  DHE-RSA-AES128-SHA\n    Rejected  SSLv3  128 bits  DHE-DSS-AES128-SHA\n    Rejected  SSLv3  128 bits  DHE-RSA-SEED-SHA\n    Rejected  SSLv3  128 bits  DHE-DSS-SEED-SHA\n    Rejected  SSLv3  128 bits  DHE-RSA-CAMELLIA128-SHA\n    Rejected  SSLv3  128 bits  DHE-DSS-CAMELLIA128-SHA\n    Rejected  SSLv3  128 bits  AECDH-AES128-SHA\n    Failed    SSLv3  128 bits  ADH-AES128-GCM-SHA256\n    Failed    SSLv3  128 bits  ADH-AES128-SHA256\n    Rejected  SSLv3  128 bits  ADH-AES128-SHA\n    Rejected  SSLv3  128 bits  ADH-SEED-SHA\n    Rejected  SSLv3  128 bits  ADH-CAMELLIA128-SHA\n    Failed    SSLv3  128 bits  ECDH-RSA-AES128-GCM-SHA256\n    Failed    SSLv3  128 bits  ECDH-ECDSA-AES128-GCM-SHA256\n    Failed    SSLv3  128 bits  ECDH-RSA-AES128-SHA256\n    Failed    SSLv3  128 bits  ECDH-ECDSA-AES128-SHA256\n    Rejected  SSLv3  128 bits  ECDH-RSA-AES128-SHA\n    Rejected  SSLv3  128 bits  ECDH-ECDSA-AES128-SHA\n    Failed    SSLv3  128 bits  AES128-GCM-SHA256\n    Failed    SSLv3  128 bits  AES128-SHA256\n    Rejected  SSLv3  128 bits  AES128-SHA\n    Rejected  SSLv3  128 bits  SEED-SHA\n    Rejected  SSLv3  128 bits  CAMELLIA128-SHA\n    Failed    SSLv3  128 bits  PSK-AES128-CBC-SHA\n    Rejected  SSLv3  128 bits  ECDHE-RSA-RC4-SHA\n    Rejected  SSLv3  128 bits  ECDHE-ECDSA-RC4-SHA\n    Rejected  SSLv3  128 bits  AECDH-RC4-SHA\n    Rejected  SSLv3  128 bits  ADH-RC4-MD5\n    Rejected  SSLv3  128 bits  ECDH-RSA-RC4-SHA\n    Rejected  SSLv3  128 bits  ECDH-ECDSA-RC4-SHA\n    Rejected  SSLv3  128 bits  RC4-SHA\n    Rejected  SSLv3  128 bits  RC4-MD5\n    Failed    SSLv3  128 bits  PSK-RC4-SHA\n    Rejected  SSLv3  56 bits   EDH-RSA-DES-CBC-SHA\n    Rejected  SSLv3  56 bits   EDH-DSS-DES-CBC-SHA\n    Rejected  SSLv3  56 bits   ADH-DES-CBC-SHA\n    Rejected  SSLv3  56 bits   DES-CBC-SHA\n    Rejected  SSLv3  40 bits   EXP-EDH-RSA-DES-CBC-SHA\n    Rejected  SSLv3  40 bits   EXP-EDH-DSS-DES-CBC-SHA\n    Rejected  SSLv3  40 bits   EXP-ADH-DES-CBC-SHA\n    Rejected  SSLv3  40 bits   EXP-DES-CBC-SHA\n    Rejected  SSLv3  40 bits   EXP-RC2-CBC-MD5\n    Rejected  SSLv3  40 bits   EXP-ADH-RC4-MD5\n    Rejected  SSLv3  40 bits   EXP-RC4-MD5\n    Rejected  SSLv3  0 bits    ECDHE-RSA-NULL-SHA\n    Rejected  SSLv3  0 bits    ECDHE-ECDSA-NULL-SHA\n    Rejected  SSLv3  0 bits    AECDH-NULL-SHA\n    Rejected  SSLv3  0 bits    ECDH-RSA-NULL-SHA\n    Rejected  SSLv3  0 bits    ECDH-ECDSA-NULL-SHA\n    Failed    SSLv3  0 bits    NULL-SHA256\n    Rejected  SSLv3  0 bits    NULL-SHA\n    Rejected  SSLv3  0 bits    NULL-MD5\n    Failed    TLSv1  256 bits  ECDHE-RSA-AES256-GCM-SHA384\n    Failed    TLSv1  256 bits  ECDHE-ECDSA-AES256-GCM-SHA384\n    Failed    TLSv1  256 bits  ECDHE-RSA-AES256-SHA384\n    Failed    TLSv1  256 bits  ECDHE-ECDSA-AES256-SHA384\n    Rejected  TLSv1  256 bits  ECDHE-RSA-AES256-SHA\n    Rejected  TLSv1  256 bits  ECDHE-ECDSA-AES256-SHA\n    Failed    TLSv1  256 bits  SRP-DSS-AES-256-CBC-SHA\n    Failed    TLSv1  256 bits  SRP-RSA-AES-256-CBC-SHA\n    Failed    TLSv1  256 bits  SRP-AES-256-CBC-SHA\n    Failed    TLSv1  256 bits  DHE-DSS-AES256-GCM-SHA384\n    Failed    TLSv1  256 bits  DHE-RSA-AES256-GCM-SHA384\n    Failed    TLSv1  256 bits  DHE-RSA-AES256-SHA256\n    Failed    TLSv1  256 bits  DHE-DSS-AES256-SHA256\n    Rejected  TLSv1  256 bits  DHE-RSA-AES256-SHA\n    Rejected  TLSv1  256 bits  DHE-DSS-AES256-SHA\n    Rejected  TLSv1  256 bits  DHE-RSA-CAMELLIA256-SHA\n    Rejected  TLSv1  256 bits  DHE-DSS-CAMELLIA256-SHA\n    Rejected  TLSv1  256 bits  AECDH-AES256-SHA\n    Failed    TLSv1  256 bits  ADH-AES256-GCM-SHA384\n    Failed    TLSv1  256 bits  ADH-AES256-SHA256\n    Rejected  TLSv1  256 bits  ADH-AES256-SHA\n    Rejected  TLSv1  256 bits  ADH-CAMELLIA256-SHA\n    Failed    TLSv1  256 bits  ECDH-RSA-AES256-GCM-SHA384\n    Failed    TLSv1  256 bits  ECDH-ECDSA-AES256-GCM-SHA384\n    Failed    TLSv1  256 bits  ECDH-RSA-AES256-SHA384\n    Failed    TLSv1  256 bits  ECDH-ECDSA-AES256-SHA384\n    Rejected  TLSv1  256 bits  ECDH-RSA-AES256-SHA\n    Rejected  TLSv1  256 bits  ECDH-ECDSA-AES256-SHA\n    Failed    TLSv1  256 bits  AES256-GCM-SHA384\n    Failed    TLSv1  256 bits  AES256-SHA256\n    Accepted  TLSv1  256 bits  AES256-SHA\n    Rejected  TLSv1  256 bits  CAMELLIA256-SHA\n    Failed    TLSv1  256 bits  PSK-AES256-CBC-SHA\n    Rejected  TLSv1  168 bits  ECDHE-RSA-DES-CBC3-SHA\n    Rejected  TLSv1  168 bits  ECDHE-ECDSA-DES-CBC3-SHA\n    Failed    TLSv1  168 bits  SRP-DSS-3DES-EDE-CBC-SHA\n    Failed    TLSv1  168 bits  SRP-RSA-3DES-EDE-CBC-SHA\n    Failed    TLSv1  168 bits  SRP-3DES-EDE-CBC-SHA\n    Rejected  TLSv1  168 bits  EDH-RSA-DES-CBC3-SHA\n    Rejected  TLSv1  168 bits  EDH-DSS-DES-CBC3-SHA\n    Rejected  TLSv1  168 bits  AECDH-DES-CBC3-SHA\n    Rejected  TLSv1  168 bits  ADH-DES-CBC3-SHA\n    Rejected  TLSv1  168 bits  ECDH-RSA-DES-CBC3-SHA\n    Rejected  TLSv1  168 bits  ECDH-ECDSA-DES-CBC3-SHA\n    Accepted  TLSv1  168 bits  DES-CBC3-SHA\n    Failed    TLSv1  168 bits  PSK-3DES-EDE-CBC-SHA\n    Failed    TLSv1  128 bits  ECDHE-RSA-AES128-GCM-SHA256\n    Failed    TLSv1  128 bits  ECDHE-ECDSA-AES128-GCM-SHA256\n    Failed    TLSv1  128 bits  ECDHE-RSA-AES128-SHA256\n    Failed    TLSv1  128 bits  ECDHE-ECDSA-AES128-SHA256\n    Rejected  TLSv1  128 bits  ECDHE-RSA-AES128-SHA\n    Rejected  TLSv1  128 bits  ECDHE-ECDSA-AES128-SHA\n    Failed    TLSv1  128 bits  SRP-DSS-AES-128-CBC-SHA\n    Failed    TLSv1  128 bits  SRP-RSA-AES-128-CBC-SHA\n    Failed    TLSv1  128 bits  SRP-AES-128-CBC-SHA\n    Failed    TLSv1  128 bits  DHE-DSS-AES128-GCM-SHA256\n    Failed    TLSv1  128 bits  DHE-RSA-AES128-GCM-SHA256\n    Failed    TLSv1  128 bits  DHE-RSA-AES128-SHA256\n    Failed    TLSv1  128 bits  DHE-DSS-AES128-SHA256\n    Rejected  TLSv1  128 bits  DHE-RSA-AES128-SHA\n    Rejected  TLSv1  128 bits  DHE-DSS-AES128-SHA\n    Rejected  TLSv1  128 bits  DHE-RSA-SEED-SHA\n    Rejected  TLSv1  128 bits  DHE-DSS-SEED-SHA\n    Rejected  TLSv1  128 bits  DHE-RSA-CAMELLIA128-SHA\n    Rejected  TLSv1  128 bits  DHE-DSS-CAMELLIA128-SHA\n    Rejected  TLSv1  128 bits  AECDH-AES128-SHA\n    Failed    TLSv1  128 bits  ADH-AES128-GCM-SHA256\n    Failed    TLSv1  128 bits  ADH-AES128-SHA256\n    Rejected  TLSv1  128 bits  ADH-AES128-SHA\n    Rejected  TLSv1  128 bits  ADH-SEED-SHA\n    Rejected  TLSv1  128 bits  ADH-CAMELLIA128-SHA\n    Failed    TLSv1  128 bits  ECDH-RSA-AES128-GCM-SHA256\n    Failed    TLSv1  128 bits  ECDH-ECDSA-AES128-GCM-SHA256\n    Failed    TLSv1  128 bits  ECDH-RSA-AES128-SHA256\n    Failed    TLSv1  128 bits  ECDH-ECDSA-AES128-SHA256\n    Rejected  TLSv1  128 bits  ECDH-RSA-AES128-SHA\n    Rejected  TLSv1  128 bits  ECDH-ECDSA-AES128-SHA\n    Failed    TLSv1  128 bits  AES128-GCM-SHA256\n    Failed    TLSv1  128 bits  AES128-SHA256\n    Accepted  TLSv1  128 bits  AES128-SHA\n    Rejected  TLSv1  128 bits  SEED-SHA\n    Rejected  TLSv1  128 bits  CAMELLIA128-SHA\n    Failed    TLSv1  128 bits  PSK-AES128-CBC-SHA\n    Rejected  TLSv1  128 bits  ECDHE-RSA-RC4-SHA\n    Rejected  TLSv1  128 bits  ECDHE-ECDSA-RC4-SHA\n    Rejected  TLSv1  128 bits  AECDH-RC4-SHA\n    Rejected  TLSv1  128 bits  ADH-RC4-MD5\n    Rejected  TLSv1  128 bits  ECDH-RSA-RC4-SHA\n    Rejected  TLSv1  128 bits  ECDH-ECDSA-RC4-SHA\n    Accepted  TLSv1  128 bits  RC4-SHA\n    Accepted  TLSv1  128 bits  RC4-MD5\n    Failed    TLSv1  128 bits  PSK-RC4-SHA\n    Rejected  TLSv1  56 bits   EDH-RSA-DES-CBC-SHA\n    Rejected  TLSv1  56 bits   EDH-DSS-DES-CBC-SHA\n    Rejected  TLSv1  56 bits   ADH-DES-CBC-SHA\n    Rejected  TLSv1  56 bits   DES-CBC-SHA\n    Rejected  TLSv1  40 bits   EXP-EDH-RSA-DES-CBC-SHA\n    Rejected  TLSv1  40 bits   EXP-EDH-DSS-DES-CBC-SHA\n    Rejected  TLSv1  40 bits   EXP-ADH-DES-CBC-SHA\n    Rejected  TLSv1  40 bits   EXP-DES-CBC-SHA\n    Rejected  TLSv1  40 bits   EXP-RC2-CBC-MD5\n    Rejected  TLSv1  40 bits   EXP-ADH-RC4-MD5\n    Rejected  TLSv1  40 bits   EXP-RC4-MD5\n    Rejected  TLSv1  0 bits    ECDHE-RSA-NULL-SHA\n    Rejected  TLSv1  0 bits    ECDHE-ECDSA-NULL-SHA\n    Rejected  TLSv1  0 bits    AECDH-NULL-SHA\n    Rejected  TLSv1  0 bits    ECDH-RSA-NULL-SHA\n    Rejected  TLSv1  0 bits    ECDH-ECDSA-NULL-SHA\n    Failed    TLSv1  0 bits    NULL-SHA256\n    Rejected  TLSv1  0 bits    NULL-SHA\n    Rejected  TLSv1  0 bits    NULL-MD5\n\n  Prefered Server Cipher(s):\n    TLSv1  256 bits  AES256-SHA\n\n  SSL Certificate:\n    Version: 2\n    Serial Number: 3\n    Signature Algorithm: sha256WithRSAEncryption\n    Issuer: /CN=Puppet CA: vm0048\n    Not valid before: Mar 25 13:42:09 2014 GMT\n    Not valid after: Mar 25 13:42:09 2019 GMT\n    Subject: /CN=vm0002\n    Public Key Algorithm: rsaEncryption\n    RSA Public Key: (4096 bit)\n      Public-Key: (4096 bit)\n      Modulus:\n          00:a7:96:77:c1:89:69:5d:c7:6a:bf:78:91:9a:6f:\n          94:ff:02:9d:d3:a1:8f:ee:9e:cf:c5:7e:cb:fa:5b:\n          61:b1:b2:e5:dc:a0:c9:8d:85:bd:8b:3c:7a:aa:a9:\n          3b:54:15:07:39:88:28:3c:83:7a:45:5f:68:0c:9e:\n          95:ad:05:68:25:72:43:f7:47:9d:7f:64:99:a3:48:\n          76:95:29:d7:61:a9:12:35:73:9d:82:d7:18:56:fe:\n          bd:ba:0d:e0:73:6c:38:a3:21:7b:a0:1e:05:b4:b1:\n          a9:20:e4:17:88:85:72:30:12:78:7f:ca:55:02:06:\n          0b:0d:eb:2c:37:c0:f2:1d:5b:53:aa:2c:1c:07:ef:\n          bf:3c:7e:d6:d6:d0:0d:be:9b:98:58:56:1d:a6:8f:\n          79:21:08:97:a0:2a:e1:11:8a:32:f3:42:6a:c5:e9:\n          98:34:13:c4:21:27:98:5b:15:bc:4b:1e:98:32:9b:\n          56:c9:b2:cc:74:85:90:15:db:2b:1c:53:a8:1e:e6:\n          de:87:50:33:af:5d:f2:39:41:1c:99:c7:de:0e:06:\n          83:36:57:12:4d:18:b5:11:cf:8d:ed:ca:0d:5e:7b:\n          0e:20:56:13:6b:13:e2:db:63:1c:f3:d9:13:80:79:\n          bc:4e:5d:00:9f:4e:b7:3d:cb:fc:f0:3e:3d:95:12:\n          c3:c5:ba:3c:5d:6d:71:7b:3b:b7:55:55:2e:b1:5d:\n          9c:19:7a:5c:97:58:88:9c:0d:d9:68:bb:c2:fd:65:\n          23:cd:5b:9e:fb:67:67:80:3f:e7:8c:cb:df:e9:b7:\n          8a:67:21:aa:c9:11:c5:d0:ea:ef:5a:3a:f1:80:c4:\n          8e:97:7a:18:8a:24:f0:b4:71:87:db:9f:e4:c2:33:\n          df:0e:88:98:b4:38:e0:d1:52:ed:90:25:6f:c0:51:\n          ff:7d:c6:08:be:ce:91:cf:10:e2:c5:28:2a:93:1f:\n          99:9d:f5:f6:98:1d:9d:af:cc:0b:32:48:72:c8:7e:\n          08:17:cb:25:4a:a6:76:00:a2:93:e4:d1:29:c4:28:\n          a5:ee:4e:6e:3c:89:cd:c8:e2:7c:bd:1b:10:c3:5c:\n          3b:12:94:38:52:72:ed:1b:72:24:a2:cd:b2:83:20:\n          68:bf:df:65:c3:34:c8:5d:85:ee:10:c8:54:97:a4:\n          e5:f4:10:47:d9:c5:d6:64:ad:6e:cc:39:67:50:5d:\n          16:4e:8b:a4:cd:f9:e8:09:ea:ee:03:41:41:fc:ee:\n          c5:f3:0d:49:e8:5f:1f:5e:fa:a8:c5:bb:84:d1:96:\n          69:1c:f0:b2:e5:81:03:06:e3:43:67:6d:c0:de:6b:\n          e2:ba:c9:51:87:86:50:9b:af:51:4a:52:50:22:de:\n          f4:fa:e9\n      Exponent: 65537 (0x10001)\n    X509v3 Extensions:\n      Netscape Comment:\n        Puppet Ruby/OpenSSL Internal Certificate\n      X509v3 Subject Alternative Name:\n        DNS:puppet, DNS:puppet.stpst.nl, DNS:vm0002\n      X509v3 Key Usage: critical\n        Digital Signature, Key Encipherment\n      X509v3 Extended Key Usage: critical\n        TLS Web Server Authentication, TLS Web Client Authentication\n      X509v3 Basic Constraints: critical\n        CA:FALSE\n      X509v3 Subject Key Identifier:\n        3B:9F:2F:F7:C1:59:B8:84:8E:A5:39:81:D2:60:F8:B3:83:7F:88:5F\n      X509v3 Authority Key Identifier:\n        keyid:0F:74:99:E3:B5:48:DF:61:F9:CA:19:3A:F7:7F:0A:81:B3:00:3E:94\n\n  Verify Certificate:\n    unable to get local issuer certificate\n{noformat}", "created": "2014-10-15T08:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4bee866b810069e3689a] Turning off the CA service in {{bootstrap.cfg}} might not be a supported use case in the current release", "created": "2014-10-15T09:35:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I'm not using an 'external' CA, we just have a CA-only Puppet Master and everyone has {{ca_server}} set in their {{puppet.conf}}.\n\nIt's happening on two systems I tested this with (I'm basically hot-swapping a production master, 'cause you know), one runs Ruby 1.8, the other 1.9.", "created": "2014-10-15T10:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK.  Well, would be interested to hear if explicitly setting the paths to the correct server pem files in your webserver.conf helps", "created": "2014-10-15T10:59:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "Okay, here we go!\n\nAgainst the Puppet Master Passenger, which just works(tm):\n{noformat}\nroot@nl14s0008 /h/daniele.sluijters# set -x CURL_CA_BUNDLE /var/lib/puppet/ssl/certs/ca.pem\nroot@nl14s0008 /h/daniele.sluijters#\ncurl https://vm0002:8140 --key /var/lib/puppet/ssl/private_keys/nl14s0008.pem --cert /var/lib/puppet/ssl/certs/nl14s0008.pem\nThe environment must be purely alphanumeric, not ''\n{noformat}\n\nWith a completely vanilla install of puppetserver, so including CA services:\n{noformat}\n2014-10-15 19:29:51,451 WARN  [o.e.j.s.h.ContextHandler] Empty contextPath\n2014-10-15 19:29:51,467 INFO  [p.p.certificate-authority] CA already initialized for SSL\n2014-10-15 19:29:51,467 INFO  [p.p.certificate-authority] Master already initialized for SSL\n2014-10-15 19:29:51,467 INFO  [p.s.m.master-service] Master Service adding a ring handler\n2014-10-15 19:29:51,469 WARN  [o.e.j.s.h.ContextHandler] Empty contextPath\n2014-10-15 19:29:51,470 INFO  [p.t.s.w.jetty9-service] Starting web server(s).\n2014-10-15 19:29:51,478 INFO  [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-cert'\n2014-10-15 19:29:51,478 INFO  [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-key'\n2014-10-15 19:29:51,478 INFO  [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-ca-cert'\n2014-10-15 19:29:51,478 INFO  [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-crl-path'\n2014-10-15 19:29:51,843 INFO  [p.t.s.w.jetty9-core] Starting web server.\n2014-10-15 19:29:51,848 INFO  [o.e.j.s.Server] jetty-9.1.z-SNAPSHOT\n2014-10-15 19:29:51,921 INFO  [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@631ca7f2{/,null,AVAILABLE}\n2014-10-15 19:29:51,922 INFO  [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@11f9777d{/,null,AVAILABLE}\n2014-10-15 19:29:52,031 INFO  [o.e.j.s.ServerConnector] Started ServerConnector@4089204{SSL-HTTP/1.1}{0.0.0.0:8140}\n2014-10-15 19:29:57,137 INFO  [puppet-server] Puppet settings initialized", "created": "2014-10-15T11:35:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "We have liftoff:\n\n{noformat}\nwebserver: {\n    client-auth = want\n    ssl-host = 0.0.0.0\n    ssl-port = 8140\n    ssl-protocols = [TLSv1, TLSv1.1, TLSv1.2]\n    ssl-cert = /var/lib/puppet/ssl/certs/vm0002.pem\n    ssl-ca-cert = /var/lib/puppet/ssl/certs/ca.pem\n    ssl-key = /var/lib/puppet/ssl/private_keys/vm0002.pem\n}\n{noformat}\n\n{noformat}\n* About to connect() to vm0002 port 8140 (#0)\n*   Trying 10.120.12.0... connected\n* Connected to vm0002 (10.120.12.0) port 8140 (#0)\n* successfully set certificate verify locations:\n*   CAfile: /var/lib/puppet/ssl/certs/ca.pem\n  CApath: /etc/ssl/certs\n* SSLv3, TLS handshake, Client hello (1):\n* SSLv3, TLS handshake, Server hello (2):\n* SSLv3, TLS handshake, CERT (11):\n* SSLv3, TLS handshake, Request CERT (13):\n* SSLv3, TLS handshake, Server finished (14):\n* SSLv3, TLS handshake, CERT (11):\n* SSLv3, TLS handshake, Client key exchange (16):\n* SSLv3, TLS handshake, CERT verify (15):\n* SSLv3, TLS change cipher, Client hello (1):\n* SSLv3, TLS handshake, Finished (20):\n* SSLv3, TLS change cipher, Client hello (1):\n* SSLv3, TLS handshake, Finished (20):\n* SSL connection using AES256-SHA\n* Server certificate:\n*        subject: CN=vm0002\n*        start date: 2014-03-25 13:42:09 GMT\n*        expire date: 2019-03-25 13:42:09 GMT\n*        subjectAltName: vm0002 matched\n*        issuer: CN=Puppet CA: vm0048\n*        SSL certificate verify ok.\n> GET / HTTP/1.1\n> User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.6 OpenSSL/1.0.0d zlib/1.2.3.4 libidn/1.15 libssh2/1.2.8 librtmp/2.3\n> Host: vm0002:8140\n> Accept: */*\n{noformat}\n\nHowever, PuppetDB appears broken now:\n\n{noformat}\n2014-10-15 19:55:09,950 ERROR [puppet-server] Failed to submit 'replace facts' command for nl14s0006 to PuppetDB at vm0002.healthcare.nedap.lo\ncal:8081: Error executing http request\n/usr/lib/ruby/vendor_ruby/puppet/util/puppetdb/command.rb:78:in `submit'\n/usr/lib/ruby/vendor_ruby/puppet/util/puppetdb.rb:82:in `submit_command'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/puppetdb.rb:98:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/puppetdb.rb:80:in `submit_command'\n/usr/lib/ruby/vendor_ruby/puppet/indirector/facts/puppetdb.rb:43:in `save'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/puppetdb.rb:98:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/indirector/facts/puppetdb.rb:25:in `save'\n/usr/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:283:in `save'\n/usr/lib/ruby/vendor_ruby/puppet/node/facts.rb:20:in `save'\n/usr/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:41:in `extract_facts_from_request'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:20:in `extract_facts_from_request'\n/usr/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:47:in `find'\n/usr/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:201:in `find'\n/usr/lib/ruby/vendor_ruby/puppet/network/http/api/v1.rb:105:in `do_find'\n/usr/lib/ruby/vendor_ruby/puppet/network/http/api/v1.rb:50:in `call'\n/usr/lib/ruby/vendor_ruby/puppet/context.rb:64:in `override'\n/usr/lib/ruby/vendor_ruby/puppet.rb:244:in `override'\n/usr/lib/ruby/vendor_ruby/puppet/network/http/api/v1.rb:49:in `call'\n/usr/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/usr/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/usr/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:63:in `process'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:61:in `process'\n/usr/share/puppetserver/file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:96:in `handleRequest'\nPuppet$$Server$$Master_35251065.gen:13:in `handleRequest'\nrequest_handler_core.clj:110:in `invoke'\nrequest_handler_service.clj:11:in `invoke'\nrequest_handler_service.clj:19:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:619:in `invoke'\ncore.clj:2396:in `doInvoke'\nmaster_core.clj:44:in `invoke'\ncore.clj:99:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:30:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_core.clj:59:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\nringutils.clj:28:in `invoke'\nringutils.clj:34:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_service.clj:27:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\njetty9_core.clj:299:in `invoke'\n{noformat}", "created": "2014-10-15T11:53:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "If I now remove the ca-service from {{bootstrap.cfg}} and restart puppetserver everything keeps on working. Look like setting those {{ssl-*}} variables is what I needed for the 'external CA'.", "created": "2014-10-15T11:59:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "I had to enable TLSv1.1 and TLSv1.2. Java 1.7 supports it but hasn't got it enabled by default for client connections and our PuppetDB's are TLSv1.2 only.\n\nI modified {{/etc/default/puppetserver}}:\n\n{noformat}\nJAVA_ARGS=\"-Xms2g -Xmx2g -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=true -Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true\"\n{noformat}\n\nIt might be worth adding that to the normal startup options in the init-scripts.", "created": "2014-10-15T12:10:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "Nope, doesn't fix my PuppetDB issues:\n\n{noformat}\n2014-10-15 20:10:31,792 ERROR [c.p.h.c.SyncHttpClient] Error executing http request\norg.apache.http.ConnectionClosedException: Connection closed\n  at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput(HttpAsyncRequestExecutor.java:257) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.client.LoggingAsyncRequestExecutor.endOfInput(LoggingAsyncRequestExecutor.java:128) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:260) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:73) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:37) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:120) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:159) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:338) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105) ~[puppet-server-release.jar:na]\n  at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:584) ~[puppet-server-release.jar:na]\n  at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_65]\n2014-10-15 20:10:31,850 ERROR [puppet-server] Failed to submit 'replace facts' command for nl14s0015 to PuppetDB at vm0002:8081: Error executing http request\n/usr/lib/ruby/vendor_ruby/puppet/util/puppetdb/command.rb:78:in `submit'\n/usr/lib/ruby/vendor_ruby/puppet/util/puppetdb.rb:82:in `submit_command'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/puppetdb.rb:98:in `profile'\n/usr/lib/ruby/vendor_ruby/puppet/util/puppetdb.rb:80:in `submit_command'\n/usr/lib/ruby/vendor_ruby/puppet/indirector/facts/puppetdb.rb:43:in `save'\n/usr/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n.....\n{noformat}", "created": "2014-10-15T12:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4bee866b810069e3689a] Thanks for the update.  It seems like there is something wonky going on in terms of which pem files puppet is finding/using for various things.  Normally, when we start up jetty, if you haven't overridden the pem paths in webserver.conf, it should fall back to whatever they would be as determined by puppet.conf.  I believe the PuppetDB terminus will also determine the pems to use for its HTTPS connection to the PuppetDB server via the puppet.conf settings.\n\nSo, if specifying the pem paths in the webserver.conf does get your Puppet Server working, then I'm suspicious that somehow those paths are different from what puppet is seeing via puppet.conf.  This would also explain why the agent connections to Jetty would be successful, but the connections from Puppet Server to PuppetDB would fail.\n\nPerhaps you could try doing some 'puppet agent --configprint' commands to verify that the puppet.conf settings for the pem paths match up with what you put into your webserver.conf", "created": "2014-10-15T13:06:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "Here you go:\n\n{noformat}\ndaniele.sluijters@vm0002 ~> sudo puppet agent --configprint hostcert\n/var/lib/puppet/ssl/certs/vm0002.pem\ndaniele.sluijters@vm0002 ~> sudo puppet agent --configprint hostprivkey\n/var/lib/puppet/ssl/private_keys/vm0002.pem\ndaniele.sluijters@vm0002 ~> sudo puppet agent --configprint localcacert\n/var/lib/puppet/ssl/certs/ca.pem\n{noformat}\n\nPretty much the exact values I set explicitly in {{webserver.conf}}.", "created": "2014-10-15T13:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Alright, we'll keep poking then, will let you know if we find anything or have other ideas.", "created": "2014-10-15T13:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Oh, just to clarify--do you have the ability to modify your PuppetDB to allow TLSv1.1?  And if so, do your connections from Puppet Server succeed?", "created": "2014-10-15T13:45:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "I can try that out. Let me spin up a separate master to try this on though. Every time I start Puppet Server it seems to mess with some of the certificates in place breaking the normal Puppet Master process.", "created": "2014-10-16T00:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Re: puppet server messing with the certificates", "created": "2014-10-16T06:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4bee866b810069e3689a] we got sucked into some other things today and I didn't get to spend as much time on this as I'd hoped.  Hopefully tomorrow :)  There are two of us here working off and on to try to repro, though, and no luck yet.\n\n[~accountid:70121:7b50b988-18ad-4913-8df5-c67397870b32] did you say that you'd been able to repro this?", "created": "2014-10-16T17:46:00.000000"}, {"author": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] yes, I get a failure in puppetserver when `ssl-protocols` in PuppetDB does not contain `TLSv1`. Which has me believing it will not use v1.1 or v1.2 at all today.\n\n{code}\n[root@puppetdb2 ~]# cat /etc/puppetdb/conf.d/jetty.ini\n[jetty]\n# Hostname or IP address to listen for clear-text HTTP.  Default is localhost\n# host = <host>\n\n# Port to listen on for clear-text HTTP.\nport = 8080\n\n\n# The following are SSL specific settings. They can be configured\n# automatically with the tool `puppetdb ssl-setup`, which is normally\n# ran during package installation.\n\n# The host or IP address to listen on for HTTPS connections\nssl-host = 0.0.0.0\n\n# The port to listen on for HTTPS connections\nssl-port = 8081\n\n# Private key path\nssl-key = /etc/puppetdb/ssl/private.pem\n\n# Public certificate path\nssl-cert = /etc/puppetdb/ssl/public.pem\n\n# Certificate authority path\nssl-ca-cert = /etc/puppetdb/ssl/ca.pem\n\nssl-protocols = TLSv1.1, TLSv1.2\n[root@puppetdb2 ~]# puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to submit 'replace facts' command for puppetdb2.vm to PuppetDB at puppetdb2.vm:8081: Error executing http request\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog", "created": "2014-10-16T17:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:7b50b988-18ad-4913-8df5-c67397870b32] thanks!  What version of PDB are you using there? ^^\n\n[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] FYI ^^", "created": "2014-10-16T18:10:00.000000"}, {"author": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] this was with PuppetDB 2.2.0 & Puppetserver 0.2.2. Just double-checked it works fine in Ruby master just specifying TLSv1.2 fyi, so yeah, its a regression when you compare.", "created": "2014-10-16T18:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks a bunch for the info [~accountid:70121:7b50b988-18ad-4913-8df5-c67397870b32].", "created": "2014-10-17T10:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, I can repro locally now.  Will start trying to narrow it down and see what a fix would look like.", "created": "2014-10-17T13:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I've been playing with the http client code, and have been able to make it connect successfully to a PuppetDB server configured to only support TLSv1.2.  In order to do it, though, I have to call a method that we aren't calling in our production code base to register the protocol.\n\nThis'll probably end up needing to have TK-97 addressed first.", "created": "2014-10-17T16:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4bee866b810069e3689a] we finally have a release that has a fix for this (0.4.0)!  It also has better support for disabling the built-in CA.  Would be interested to hear whether this solves the issue for you if you get a chance to try it sometime!", "created": "2014-11-10T13:15:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-15T07:43:00.000000", "creator": "623a4bee866b810069e3689a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60c759e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnhr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_558502233_*|*_1_*:*_1_*:*_192138233_*|*_10007_*:*_1_*:*_362017816_*|*_3_*:*_1_*:*_265753248_*|*_10009_*:*_1_*:*_117328_*|*_5_*:*_1_*:*_559137916_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_42632"}], "description": "Once I replace our Puppet master with puppetserver agents start throwing this:\n\n{noformat}\nDebug: Loaded state in 0.06 seconds\nDebug: node supports formats: msgpack pson yaml b64_zlib_yaml raw\nDebug: Using cached certificate for ca\nDebug: Using cached certificate for nl14s0008\nDebug: Creating new connection for https://vm0002:8140\nDebug: Using cached certificate_revocation_list for ca\nDebug: Starting connection for https://vm0002:8140\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read finished A\nInfo: Retrieving pluginfacts\n{noformat}\n\n{noformat}\nopenssl s_client -connect vm0002:8140 -showcerts\n\nCONNECTED(00000003)\ndepth=0 /CN=vm0002\nverify error:num=20:unable to get local issuer certificate\nverify return:1\ndepth=0 /CN=vm0002\nverify error:num=27:certificate not trusted\nverify return:1\ndepth=0 /CN=vm0002\nverify error:num=21:unable to verify the first certificate\nverify return:1\n---\nCertificate chain\n 0 s:/CN=vm0002\n   i:/CN=Puppet CA: vm0048\n-----BEGIN CERTIFICATE-----\nMIIF1DCCA7ygAwIBAgIBAzANBgkqhkiG9w0BAQsFADAzMTEwLwYDVQQDDChQdXBw\nZXQgQ0E6IHZtMDA0OC5oZWFsdGhjYXJlLm5lZGFwLmxvY2FsMB4XDTE0MDMyNTEz\nNDIwOVoXDTE5MDMyNTEzNDIwOVowKDEmMCQGA1UEAwwddm0wMDAyLmhlYWx0aGNh\ncmUubmVkYXAubG9jYWwwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCn\nlnfBiWldx2q/eJGab5T/Ap3ToY/uns/Ffsv6W2GxsuXcoMmNhb2LPHqqqTtUFQc5\niCg8g3pFX2gMnpWtBWglckP3R51/ZJmjSHaVKddhqRI1c52C1xhW/r26DeBzbDij\nIXugHgW0sakg5BeIhXIwEnh/ylUCBgsN6yw3wPIdW1OqLBwH7788ftbW0A2+m5hY\nVh2mj3khCJegKuERijLzQmrF6Zg0E8QhJ5hbFbxLHpgym1bJssx0hZAV2yscU6ge\n5t6HUDOvXfI5QRyZx94OBoM2VxJNGLURz43tyg1eew4gVhNrE+LbYxzz2ROAebxO\nXQCfTrc9y/zwPj2VEsPFujxdbXF7O7dVVS6xXZwZelyXWIicDdlou8L9ZSPNW577\nZ2eAP+eMy9/pt4pnIarJEcXQ6u9aOvGAxI6XehiKJPC0cYfbn+TCM98OiJi0OODR\nUu2QJW/AUf99xgi+zpHPEOLFKCqTH5md9faYHZ2vzAsySHLIfggXyyVKpnYAopPk\n0SnEKKXuTm48ic3I4ny9GxDDXDsSlDhScu0bciSizbKDIGi/32XDNMhdhe4QyFSX\npOX0EEfZxdZkrW7MOWdQXRZOi6TN+egJ6u4DQUH87sXzDUnoXx9e+qjFu4TRlmkc\n8LLlgQMG40NnbcDea+K6yVGHhlCbr1FKUlAi3vT66QIDAQABo4H9MIH6MDUGCWCG\nSAGG+EIBDQQoUHVwcGV0IFJ1YnkvT3BlblNTTCBJbnRlcm5hbCBDZXJ0aWZpY2F0\nZTBBBgNVHREEOjA4ggZwdXBwZXSCD3B1cHBldC5zdHBzdC5ubIIddm0wMDAyLmhl\nYWx0aGNhcmUubmVkYXAubG9jYWwwDgYDVR0PAQH/BAQDAgWgMCAGA1UdJQEB/wQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ7\nny/3wVm4hI6lOYHSYPizg3+IXzAfBgNVHSMEGDAWgBQPdJnjtUjfYfnKGTr3fwqB\nswA+lDANBgkqhkiG9w0BAQsFAAOCAgEAHerl8dBm9+adPpDcwbDMG77zHdsY6wSs\neq4XRVXXVD788aEUHB9JL0w8k+rKpJLlZOlhhVhRdGC1b80Pyee4TlXJhhLt5RQ5\nUv39Y0ys56+ElocPUcAT+jxT3+jmUGsQna0go3cI2Q9eXhZ2KmiomQlpat99J8W2\ni0O+KqaY5PXn8HBlKa0jtFJ/rGjJytM4S+bveDashkm/LkfsbRCMNyiC2PhWo5rH\nXKFolVilBjhBPihDrmjBAxfS+Q6emNT7y5P6YoYY7nXX3b5rszhpiVJuorifPiGb\nVL2GsYZJz/g5CVlNzWeW4uq1CkqO1p5ovC/ljej/Oo7gsgCVyxtNddL1bF8Lpxx+\ngTyZMPmt9QGPmCtHWS/5bfaVsI/+6KqYuscR5jEvZ3MQzWSbtnpbGKQW8l/ezwzv\nxl/vZoo7PsF1rA3CFnU6uBcO9zHuZ6NEOXUJKd9STxLXx3SiCJXsoUbRDdrSEqe7\nmyRtuJcRetTk/BtztlAmrPLPVBnAL8OiBWxpDlpNfxYd3Ox31z5ctxQCx/h+Q6ki\nT+0sRVuXInDhq0cbnpcrIF+CD0qBjNdZE0X9fF26y2kAzVsrS+RlrK8bq6wMGP2w\nTtCj7okTRfJJKMYSOfyxzQGfD7MwMT6g8TW2wJroJhW0tn6G3cVPN4ygIc3heau3\naUny8Cn+6Fc=\n-----END CERTIFICATE-----\n---\nServer certificate\nsubject=/CN=vm0002\nissuer=/CN=Puppet CA: vm0048\n---\nAcceptable client certificate CA names\n/CN=Puppet CA: vm0002\n---\nSSL handshake has read 1719 bytes and written 715 bytes\n---\nNew, TLSv1/SSLv3, Cipher is AES256-SHA\nServer public key is 4096 bit\nSecure Renegotiation IS supported\nCompression: NONE\nExpansion: NONE\nSSL-Session:\n    Protocol  : TLSv1\n    Cipher    : AES256-SHA\n    Session-ID: 543E797E5C4AC92BE1D0DE82AF0AC813A07486129B51A92E86673537346C03A7\n    Session-ID-ctx:\n    Master-Key: 8B7BD1585A24066214E75BD7AE744EE36AD050E7BAC9A760C4E4AAF87864F3BE3F12D85AC7C0F765C782C52DF159912C\n    Key-Arg   : None\n    Start Time: 1413380478\n    Timeout   : 300 (sec)\n    Verify return code: 21 (unable to verify the first certificate)\n---\n{noformat}\n\nThe {{state=SSLv3}} I find worrying.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16341", "fixedVersions": ["SERVER 0.4.0"], "id": "16341", "issueType": "Bug", "key": "SERVER-71", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623a4bee866b810069e3689a", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SSL connection errors", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:623e7507866b810069e57527] Do you happen to know what the memory specs were on your VM when you ran into this?  Specifically, the # of processors and the amount of RAM?", "created": "2014-10-16T12:53:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] I don't, unfortunately. I just pulled a CentOS 7 VM from vcloud.", "created": "2014-10-16T12:58:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:623e7507866b810069e57527] Was the server actually broken after you saw this? Did you try starting it again and/or doing an agent run?", "created": "2014-10-16T16:30:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] The server did not seem to be broken. I didn't do any agent runs, but I was able to start the server again and it didn't have any startup issues.", "created": "2014-10-16T16:35:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I just tried shutting it down with PE Puppetserver on CentOS 7. I get a similar error message, but this one has some more information:\n\nRedirecting to /bin/systemctl status  pe-puppetserver.service\npe-puppetserver.service - pe-puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/pe-puppetserver.service", "created": "2014-10-16T16:45:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "This \"failed state\" doesn't seem to be problematic as I can start/stop the service and do agent runs.  \n\nI'm guessing that this extra output is a result the new systemd mechanism that's on Cent7 compared to the older sysv or whatever that's used on earlier versions, since I saw a bunch of other services give verbose output like this.\n\n[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] Got any ideas on how to make this not look/behave this way?", "created": "2014-10-16T17:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] is this something you would want us to try to fix before PE 3.4?", "created": "2014-10-20T17:21:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] This is because puppetserver (or possibly something else in the stack) isn't catching the TERM signal, so java catches it and it dies, exiting 143. Systemd considers this a failure, as it is a nonzero exit. Compliant applications exit with 0 when they catch a TERM signal, clean up, and exit.", "created": "2014-10-21T17:03:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "And no idea if this is a PE 3.4/3.7 blocker. It isn't great but it doesn't seem be really broken in any meaningful way. Puppet considers stopped and failed to be similar enough that stopping the failed service is a noop.", "created": "2014-10-21T17:06:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The attached PR addresses the problem by adding the SuccessExitStatus to the systemd service definition to add 143 as a valid exit code. Trapperkeeper should probably add some code to catch/handle term signals so this workaround can be avoided.", "created": "2014-10-21T18:26:00.000000"}], "components": [], "created": "2014-10-14T17:40:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4bc31c5c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypktb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_81157443_*|*_1_*:*_1_*:*_62387818_*|*_3_*:*_2_*:*_84409364_*|*_10009_*:*_2_*:*_64662536_*|*_6_*:*_2_*:*_1234892078_*|*_10004_*:*_1_*:*_370091478_*|*_10006_*:*_1_*:*_90674918"}], "description": "I installed Puppet Server on CentOS 7 x64, and tried shutting down Puppet Server with \"service puppetserver stop\". Afterwards, when I call \"service puppetserver status\", I get output like the following:\n\nRedirecting to /bin/systemctl status  puppetserver.service\npuppetserver.service - puppetserver Service\n   Loaded: loaded (/usr/lib/systemd/system/puppetserver.service; disabled)\n   Active: failed (Result: exit-code) since Tue 2014-10-14 16:28:30 PDT; 1s ago\n  Process: 12133 ExecStart=/usr/bin/java $JAVA_ARGS -XX:OnOutOfMemoryError=kill\\ -9\\ %p -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetserver -cp ${INSTALL_DIR}/puppet-server-release.jar clojure.main -m puppetlabs.trapperkeeper.main --config ${CONFIG} -b ${BOOTSTRAP_CONFIG} $@ (code=exited, status=143)\n Main PID: 12133 (code=exited, status=143)\n\nOct 14 16:26:24 p25vr60cquixs9l systemd[1]: Started puppetserver Service.\nOct 14 16:28:30 p25vr60cquixs9l systemd[1]: Stopping puppetserver Service...\nOct 14 16:28:30 p25vr60cquixs9l systemd[1]: puppetserver.service: main process exited, code=exited, status=143/n/a\nOct 14 16:28:30 p25vr60cquixs9l systemd[1]: Stopped puppetserver Service.\nOct 14 16:28:30 p25vr60cquixs9l systemd[1]: Unit puppetserver.service entered failed state.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15522", "fixedVersions": ["SERVER 0.4.0"], "id": "15522", "issueType": "Bug", "key": "SERVER-70", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppetserver enters failed state when shutdown on CentOS 7", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623e7507866b810069e57527", "body": "This required changes in both puppet-server and pe-puppet-server-extensions, so both FOSS Puppet Server and PE Puppet Server need functional review.", "created": "2014-10-22T13:49:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This looks good with FOSS + puppetserver 0.3.0.  Tried puppetserver --help, puppetserver --stop, puppetserver gem -h, puppetserver gem list --local, puppetserver gem list, puppetserver gem install pry, all with expected results.\n\nLeaving ticket status alone so that this ticket will also get Reviewed with PE.", "created": "2014-10-22T14:30:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "This looks good on PE build 3.4.0-rc1-1639-g057bf27.  puppetserver --help works, puppetserver gem list --local works, puppetserver gem install pry works.  Perhaps it should be noted that puppetserver isn't in the path.\n\nMarking resolved.", "created": "2014-10-22T14:35:00.000000"}], "components": [], "created": "2014-10-14T15:58:00.000000", "creator": "623e7507866b810069e57527", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@237c3aee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypncf:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_102752473_*|*_1_*:*_1_*:*_2446399_*|*_10007_*:*_1_*:*_61636909_*|*_3_*:*_1_*:*_3445552_*|*_10009_*:*_1_*:*_512372505_*|*_5_*:*_1_*:*_60983739036_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3600108"}], "description": "When a CLI option is passed to the puppetserver gem command, it is picked up by the puppetserver command rather than the gem command unless two dashes precede the list of CLI options. So, for example, \"puppetserver gem list\" works fine, as does \"puppetserver gem list -- --local\", but \"puppetserver gem list --local\" fails, as the --local option is read as a puppetserver option rather than a gem option.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17280", "fixedVersions": ["SERVER 0.3.0"], "id": "17280", "issueType": "Bug", "key": "SERVER-68", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623e7507866b810069e57527", "resolution": "Fixed", "resolutionDate": "2014-10-22T14:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "CLI options passed to puppetserver gem are read by puppetserver rather than gem", "timeSpent": "PT0S", "updated": "2016-09-27T10:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "created": "2014-10-14T10:52:00.000000", "name": "3.3.yaml", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11017"}, {"attacher": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "created": "2014-10-14T10:52:00.000000", "name": "3.4.yaml", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11096"}], "comments": [{"author": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "body": "Values are present after closer inspection.  Values where just out of order.  ", "created": "2014-10-14T11:59:00.000000"}], "components": [], "created": "2014-10-14T10:52:00.000000", "creator": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9880c02"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:669d4655-0c85-469a-a11c-e5290cf2955d"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywqiv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4017871_*|*_6_*:*_1_*:*_0"}], "description": "Values that where present in 3.3 and are absent in 3.4 are:\n'status', 'kind', 'time', & 'host'. \n\nIn the attached 3.3 yml file the section in question is lines 562 -570.  ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17278", "fixedVersions": [], "id": "17278", "issueType": "Bug", "key": "SERVER-67", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "resolution": "Cannot Reproduce", "resolutionDate": "2014-10-14T11:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Discrepancies in reports processor YML between 3.4 and 3.3", "timeSpent": "PT0S", "updated": "2015-01-22T16:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "If we're going to do this soon anyway, it might make sense to do it before SERVER-5 and SERVER-72.", "created": "2014-11-12T10:26:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I'm throwing this in \"Ready for Merge\" for now as the PR for the dujour version check library is up. Once that's merged, however, the version check service will need to be removed from puppet server.", "created": "2015-01-05T12:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7507866b810069e57527] can you please make sure that the new repo gets added to our kerminator PR watch list, hipchat notifications, and we get jenkins jobs set up for test and release before we close this ticket out?", "created": "2015-01-08T07:24:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yup! It's already on our Kerminator PR watch list, I'll make sure to get jenkins jobs set up and travis working before the ticket gets closed out. We'll also have to rip out the dujour service in puppetserver and use this instead, so I'm going to move this back into Doing.", "created": "2015-01-08T10:37:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I've split this ticket into two subtasks, since there are two distinct, sequential pieces of work that need to be done, one of which (creating the library) is Ready for Merge and the other (replacing the dujour service in Puppet Server) has not been started.", "created": "2015-01-20T15:04:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Merged into master as 6ad7fec", "created": "2015-02-11T15:31:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "Resolving because I don't think this library is yet part of the CI pipeline or anything.  Please move it if this isn't the correct status.", "created": "2015-02-11T15:33:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:623c12b6ee1b5a0070293582] I think it might be a good idea to move this back into \"To Do\" since there's still a subtask that needs to be done (ripping this code out of Puppet Server and replacing it with the dujour version check library).\n\nSorry, I did a poor job breaking this ticket up, I should have broken it up into two subtasks.\n\n", "created": "2015-02-11T15:38:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:623e7507866b810069e57527] No worries, go ahead and move it where it needs to be.", "created": "2015-02-11T15:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7507866b810069e57527] I think this has gone through CI now?\n\nIf so, we should move it to Testing, and work with [~accountid:623c12b6ee1b5a0070293582] and [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] to figure out how to do functional review.\n\nI believe that [~accountid:623c12b6ee1b5a0070293582] has been playing around with 2.0.0-rc1 builds, so I kind of expected that if I looked at the dujour data I'd see some checkins from a 2.0.x version, but I don't see anything.", "created": "2015-03-13T09:31:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Yeah, I think you'd have to check the dujour data to see that whatever build you're running is doing a check-in.\n\nThat seems weird that it doesn't seem to be doing any check-ins, I'd expect to see some check-in data. Do you want me to investigate?", "created": "2015-03-13T10:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7507866b810069e57527] I don't know what builds have been produced or how they've been used, so I don't know for sure whether or not it's an issue that we don't see any data in dujour yet.  Will need to get [~accountid:623c12b6ee1b5a0070293582]'s input on that.\n\nIf we confirm that we expected to see some data up there by now and it's not there, then we'll need to investigate.", "created": "2015-03-13T11:03:00.000000"}, {"author": "623e7507866b810069e57527", "body": "Turns out this wasn't working due to the default group id used by dujour version check no longer being valid outside of a test environment. I've made a PR against Puppet Server, this should be ready for testing once that gets merged, so I'm putting this back in merging.", "created": "2015-03-13T14:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "\"Final PR\" was merged and corresponding full integration suite Jenkins job against puppet-server master was green - https://jenkins.puppetlabs.com/job/platform_puppet-server_integration-system_full-master/222/.\n\nMoving to \"testing\".", "created": "2015-03-17T09:59:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Determines metrics.  Frequently breaks.  When it breaks we loose data.  We consider this high probability, high severity, and thus high risk.  FR needed, and automated testing needed.", "created": "2015-03-18T12:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] / [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31] have we had some combination of functional review / other tickets being created that would be considered sufficient for this?  Can I close it out?", "created": "2015-03-30T14:50:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Note: We closed this down because Preban added a job in Jenkins to check the behavior, and it passed.", "created": "2015-05-05T18:35:00.000000"}], "components": [], "created": "2014-10-13T16:05:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f4f784c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp1zj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_315921488_*|*_1_*:*_1_*:*_611222504_*|*_10007_*:*_3_*:*_2070433543_*|*_3_*:*_4_*:*_3268168231_*|*_5_*:*_2_*:*_47083259257_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_1317120057_*|*_10006_*:*_3_*:*_7089888273"}], "description": "The dujour version check is currently implemented as a service that lives in the puppet server source code.  We should pull it out into a standalone library (not a TK service) that can be used by any service.  This also includes moving the group and artifact IDs out of config and into code.  This is a good thing, as it's an app-specific thing that doesn't need to be configurable and it shouldn't be possible for users to change those values out in the field.\n\n----\nh3. QA Risk Assessment\nRisk assessment: High (QA to perform Functional Review and to make an automated test)\nProbability: High (This feature has broken in the past)\nSeverity: High (When this breaks, we don't get information back from the customers about what version of puppetserver is running.)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17276", "fixedVersions": ["SERVER 2.0.0"], "id": "17276", "issueType": "Task", "key": "SERVER-66", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-04-01T12:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "separate dujour version check service from puppetserver", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "created": "2014-10-13T05:24:00.000000", "name": "heapmemory1.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10862"}, {"attacher": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "created": "2014-10-14T03:01:00.000000", "name": "heapmemory2.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10719"}, {"attacher": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "created": "2014-10-16T02:14:00.000000", "name": "heapmemory3.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11254"}, {"attacher": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "created": "2014-10-17T06:17:00.000000", "name": "heapmemory4.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10787"}, {"attacher": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "created": "2014-10-20T02:32:00.000000", "name": "heapmemory5.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10788"}, {"attacher": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "created": "2014-10-16T09:29:00.000000", "name": "puppet-3.7.1.79-1.el6.noarch.rpm", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10558"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] would you be able to share that heap dump (.hprof) file with us?  That could potentially speed up the diagnosis quite a bit.\n\nBeyond that, is there anything you can tell us about the kinds of modules you're using in your catalog?  Are you mostly using types from Puppet core, or do you have a lot of custom types?  If the latter, are those coming from Forge modules or your own in-house modules, or...?", "created": "2014-10-13T12:15:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "It's a huge file, 3GB! Could you provide me with some secure place to upload it on your side? If not I'll find something.\n\nThe crash is somewhat unpredictable, it takes a couple of cycles of garbage collection before actually occurring. I found it out today after setting up a nagios check on the heap memory. In general it survives 24h doing this memory roller coaster before dying with 2g of memory.\n\nI have a pretty standard environment without many custom types. I use mainly popular modules from the forge (apache, ssh, ntp, mcollective, mysql) and a couple of basic home made ones (also available on the forge under the id \"aco\"). The only custom type I use massively is the apache::vhost, but this is composed of native types.", "created": "2014-10-13T15:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] can you attach a copy of your puppet.conf file maybe?\n\nI will look into getting you a secure upload location on our end.  If you're able to repro with a 2g heap and get an .hprof file from that, that should be a little smaller :)", "created": "2014-10-13T15:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] We have an sftp box that I can set you up an account on, if you can give me a public key?", "created": "2014-10-13T16:13:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Hi Christopher,\n\nAs requested here is the content of my {{puppet.conf}} file:\n\n{noformat}\n[main]\n    logdir = /var/log/puppet\n    rundir = /var/run/puppet\n    ssldir = $vardir/ssl\n    privatekeydir = $ssldir/private_keys { group = service }\n    hostprivkey = $privatekeydir/$certname.pem { mode = 640 }\n    autosign       = $confdir/autosign.conf { mode = 664 }\n    show_diff     = false\n    environmentpath = $confdir/environments\n\n[master]\n    autosign       = $confdir/autosign.conf { mode = 664 }\n    reports        = foreman\n    external_nodes = /etc/puppet/node.rb\n    node_terminus  = exec\n    ca             = true\n    ssldir         = /var/lib/puppet/ssl\n    certname       = chester.xxxxxxxxx\n    strict_variables = false\n    storeconfigs = true\n    storeconfigs_backend = puppetdb\n{noformat}\n\nAnd here is a public key for the SFTP:\n\n{noformat}\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+Jp5FyEACctRqdkWV+07Lb6p/1462sQ6OojjRROlelT4xl8YHKxcset2Alv4tvqeIEOgtAeV1xzsdyTMkxgb1mEC6cqDvsaXhjcHkTYt2JbFbgsHXe3ca1FWc96ihd7KOhLOIYR92PEFbbcvHJm/5W4mrjRReb/jYlFh1PW6na+xGjMctbUbTWtMhmJLNQPpsy1IuSYjF7tNUmnIO1nuckMhcS/l0mNErTsK3qcbEKeyOvCZZNlYR8krAy6/UVBQBDnnorWOaQIj9Wd4xRpQvPA7m7HH0nMzFGYoOxhRYpdKDrQZoB1OXteOOdrNG3xwlYTprhDOS95JpDUa3SNat\n{noformat}\n\nAlso please find enclosed an more recent Nagios graph of the Heap memory consumption, and the increasing time required to retrieve this value through JMX. I can tell the server will certainly crash within the next couple of hours :)\nNote: touch\u00e9, the server crashed today at 11:02 GMT+2, right after my post. Your JIRA is cursed", "created": "2014-10-14T03:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "All JIRAs are cursed, not just ours.  :)\n\nThanks for the info.  I will work on getting the SFTP login set up", "created": "2014-10-14T17:24:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Indeed, I'm using Foreman as a node classifier, a simple Ruby script is run every time a node requests a catalog.\n\nI didn't know about this bug, thanks for the information! We usually use Oracle JRE to run our apps, so I'll do the same with Puppet Server and keep you updated.\n\nIn the meantime feel free to email me (can you see my address in JIRA?) if you want me to upload what I have at hand.", "created": "2014-10-15T04:30:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Running Oracle Java 1.8.0_25-b17, I can already tell the Heap Memory usage has been much more stable than before the last 2 hours. It now stagnates around 1Gb.", "created": "2014-10-15T06:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "That sounds like good news", "created": "2014-10-15T09:44:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Seems like I've been talking too fast, the very beginning _seemed_ promising but the Heap Memory usage slowly started to increase again and again after some time (cf graph n.3, it also includes the JVM CPU load)\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], thanks for the address, check your emails! (y)", "created": "2014-10-16T02:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Bummer.  OK, then yeah, let's keep moving forward on getting the heap dump up to our sftp server.  Hopefully our ops team will have that account ready for me today and I'll send you the info.\n\nAnother thing that occurred to me: the Puppet devs just found/fixed a memory leak in the Puppet ruby code base.  I believe the fix will be included in Puppet 3.7.2, here's one of the relevant commits:\n\nhttps://github.com/puppetlabs/puppet/commit/946cbd977d3d967cb1abe408ed4099b3fac4a366\n\nWe could try upgrading your puppet packages to the latest nightlies if that wouldn't be too disruptive for you...", "created": "2014-10-16T06:51:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "I can upgrade my environment indeed, would it be enough to patch only the master?\n\nI have 2 heap dumps at hand, one with OpenJDK, once with the mentioned Oracle JRE.", "created": "2014-10-16T07:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yes, just updating to the latest nightly build of puppet core on the master should be sufficient.  Thanks!", "created": "2014-10-16T07:14:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Now running puppet-3.7.1.410-1.el6.noarch (commit c26979c607b8a6bbfe223235e97f0244f6bfa39d). Let's see", "created": "2014-10-16T08:41:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Hm, puppetserver doesn't like it at all:\n\n{noformat}\nLoadError: no such file to load -- puppet/util/instrumentation\n                    require at org/jruby/RubyKernel.java:1065\n                    require at /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31\n  reset_environment_context at file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:226\n                 initialize at file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:67\n                     invoke at jruby_puppet_core.clj:140\n                     invoke at jruby_puppet_core.clj:121\n                     invoke at jruby_puppet_core.clj:222\n                     invoke at jruby_puppet_core.clj:210\n                     invoke at jruby_puppet_service.clj:29\n                     invoke at internal.clj:246\n                     invoke at internal.clj:230\n          shutdown_on_error at internal.clj:285\n                     invoke at internal.clj:254\n                     invoke at internal.clj:254\n                     invoke at core.clj:619\n                   doInvoke at core.clj:2396\n                     invoke at jruby_puppet_service.clj:28\n                     invoke at core.clj:1836\n{noformat}", "created": "2014-10-16T08:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Oh, gosh, I'm sorry.  I think you pulled a nightly of the \"master\" branch, which is going to become Puppet 4.  We need to get the latest version of the \"stable\" branch, which will be Puppet 3.7.2.  I'm not sure if we are doing nightlies for both branches or just for the Puppet 4 branch", "created": "2014-10-16T09:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] it sounds like we only have nightlies for the Puppet 4 builds for now.\n\nI found a build of the head of our 3.7.x branch from our CI system, for cent6 x64, and attached the rpm to this ticket.  Would you mind trying that?", "created": "2014-10-16T09:30:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Thanks, the server starts now :)\nI let it run over night and give you my feedback tomorrow.", "created": "2014-10-16T10:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Excellent, thank you!", "created": "2014-10-16T10:43:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Hm, I have a very unexpected issue: all my machines in the \"production\" environment seem to ignore the site.pp now. Machines in the \"development\" environment work fine though. Anything I should know about this release?\n\n(Note1: I cleared the package {{puppet-server}}, but I made sure all my environment data and previous configurations are still present)\n(Note2: the default manifest in {{$confidir/manifest}} is read nevertheless)\n(Note3: moving my machines to a new environment called {{test_prod}} fixes the issue)", "created": "2014-10-16T10:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "wow, no... :(  [~accountid:623a4c3b4a57610068e6782b] do you have any guesses about this?  We're trying to track down a memory leak, so I gave [~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] an rpm from an unreleased build of the 'stable' branch, and he's reporting some very unusual behavior w/rt environments... are you aware of any commits that could be related?", "created": "2014-10-16T11:43:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "That is very strange behavior. [~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0], just to make sure that I'm understanding correctly:\n\n  * You installed the new RPM that [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] gave you.\n  * The agents that are using the \"production\" environment *are not* reading from {{$confdir/environments/production/manifests}}\n  * The agents that are using the \"development\" environment *are* reading from {{$confdir/environments/development/manifests}}\n  * In both cases {{$confdir/manifest}} is being read\n  * If \"test_prod\" is used instead of \"production\" then the manifests are read from {{$confdir/environments/test_prod/manifests}} as expected.\n\nIs that what is happening? Can you give some details about how you had puppet installed before and after and how you updated? I'm grasping at straws, but maybe you have two installations of puppet that are conflicting.", "created": "2014-10-16T12:13:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "It's exactly what's happening. I rechecked my configuration (which did not change at all), made sure their were no conflicting processes, and restarted both client and server just to be sure.\n\nI updated using a pretty standard {{rpm -Uvh --nodeps}}. No configuration or layout was changed during the process. Moreover I use the default filesystem structure on Redhat platforms.", "created": "2014-10-16T13:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] could you maybe try going back to the 3.7.1 rpm and seeing if the behavior changes?", "created": "2014-10-16T14:11:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "I tried to switch all my servers back to {{production}}, now the site.pp file is read, funny. No need to downgrade then.\nI didn't stop my ENC during the upgrade, could be that the server was classifying only via the ENC , which do not contain any class, everything is defined in {{site.pp}}.\n\nAnyway, sorry for the noise, now that it works properly let's focus on the monitoring.", "created": "2014-10-16T14:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "That's good news, thanks for the update.", "created": "2014-10-16T14:26:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Ok, we're making progress! The memory usage still fluctuates a lot but follows a regular evolution (cf. graph 4). Doesn't look like I'm heading toward an imminent crash (y)", "created": "2014-10-17T06:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] awesome!  That looks much more like a normal garbage collection cycle.\n\n[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] ^^", "created": "2014-10-17T07:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] we'll keep this ticket open for a few more days in case anything changes, if you don't mind posting the latest news a few more times, and then hopefully we can just close it out.", "created": "2014-10-17T07:38:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Yep, will do. I'll let it run without interruption the whole weekend and post an update on Monday. Any plan to officially release a 3.7.2? :D", "created": "2014-10-17T07:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yes, there will be a 3.7.2.  I don't know the ship date for that but I know that it's soon :)", "created": "2014-10-17T07:52:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "3.7.2 is due out Monday or Tuesday next week... hang in there, and thanks for your work troubleshooting!", "created": "2014-10-17T10:30:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "OK guys, it looks good. Here is the graph from my monitoring system over the weekend, the problem doesn't occur anymore, and the server performs very well compared to the old setup using Passenger (y) Thanks for the support!", "created": "2014-10-20T02:32:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] that's great news.  Thanks a ton for help us run it down!", "created": "2014-10-20T09:52:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] just a heads up: the new Puppet 3.7.2 was released today, so you can switch to that if you like.  There was also a new release of Puppet Server: 0.3.0, that has some improvements unrelated to your issue.  Thanks again for your help tracking this down.", "created": "2014-10-22T14:07:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-13T05:24:00.000000", "creator": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53c1f80c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywpt3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_620956961_*|*_5_*:*_1_*:*_61173314436_*|*_6_*:*_1_*:*_0"}], "description": "{{puppetserver}} seems to suffer from a memory leak in my environment. The Heap Memory consumption apparently increases indefinitely until the main process gets killed.\n\nMy host serves 56 Puppet clients (3.7.1) \n\nWhen the Heap memory limit is reached {{puppetserver-daemon.log}} shows:\n{noformat}\njava.lang.Thread.run(java/lang/Thread.java:745)\njava.lang.OutOfMemoryError: Java heap space\nDumping heap to /var/log/puppetserver/java_pid3044.hprof ...\nHeap dump file created [3161153718 bytes in 94.613 secs]\n#\n# java.lang.OutOfMemoryError: Java heap space\n# -XX:OnOutOfMemoryError=\"kill -9 %p\"\n#   Executing /bin/sh -c \"kill -9 3044\"...\nException in thread \"qtp851113786-22\" java.lang.OutOfMemoryError: Java heap space\n{noformat}\n\nI tried to increase the heap memory limit to 4G, and observed a similar behavior.", "environment": "CentOS 6.5 x86_64\npuppetserver-0.2.2-1.el6.noarch\nOracle Java 1.8.0_25-b17 / OpenJDK 1.7.0_65", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15206", "fixedVersions": [], "id": "15206", "issueType": "Bug", "key": "SERVER-65", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "resolution": "Done", "resolutionDate": "2014-10-20T09:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Probable memory leak", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "14400", "aggregatetimeoriginalestimate": "14400", "assignee": null, "attachments": [], "comments": [{"author": "6243b3c84fe01d006ba5c5e3", "body": "This would also allow a much more convenient workflow: Users could just select the FP shown to them, paste it to the master & directly use it with the sign command. Without having to tediously compare the fingerprint.", "created": "2015-04-26T12:01:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Should revoking by fingerprint also be supported?", "created": "2018-10-30T13:03:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I moved this ticket to the SERVER project since the {{puppet cert}} command has been removed and replaced with the {{puppetserver ca}} CLI and clojure CA implementation. ", "created": "2019-03-29T11:21:00.000000"}, {"author": "61af86343618cd006f430854", "body": "Hi,\n\nThis sounds like a useful feature, have you looked at creating a PR for this? The module's code is open source and we encourage community contributions.\u00a0\n\nWe actively monitor new PRs and review/merge them.\u00a0 Unfortunately, there has not been enough of a demand for this feature to prioritize and resource.\n\nThank you for taking the time to create this ticket.", "created": "2022-03-08T09:44:00.000000"}], "components": ["Certificate Authority"], "created": "2014-10-09T19:51:00.000000", "creator": "5b9a935aec5ac176314382e2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26af6f5f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-2378"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywnwf:"}, {"fieldName": "UX Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Minor"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_81986910962_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_151865081541"}], "description": "Puppet cert sign should support signing by fingerprint. Signing by hostname can be dangerous and/or annoying if an attacker creates certificate requests in bulk with hostnames that you want to sign. Fingerprint should not be remotely guessable, and should be the safest option.\n\nThis will probably involve updates to both the CA API and the {{puppetserver ca}} command line tool.", "environment": "All", "epicLinkSummary": "Future CA Improvements", "estimate": "PT14400S", "externalId": "16124", "fixedVersions": [], "id": "16124", "issueType": "New Feature", "key": "SERVER-2510", "labels": ["help_wanted", "product-security", "ssl"], "originalEstimate": "PT14400S", "parent": "15942", "parentSummary": "Future CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5b9a935aec5ac176314382e2", "resolution": "Won't Do", "resolutionDate": "2022-03-08T09:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Allow certs to be signed by fingerprint", "timeSpent": "PT0S", "updated": "2022-03-08T09:44:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:5c808afb-dce6-44a1-922d-296dc2c81fe8", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We have consciously decided not to do this for this release, given the QA backlog.", "created": "2014-10-21T12:26:00.000000"}], "components": [], "created": "2014-10-08T09:33:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c4b0f4e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmz3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461531256_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_672104053"}], "description": "Close any tickets that have been resolved for the release.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%20%221.0.0%22%20AND%20status%20%3D%20Resolved\n\nThere is a bulk edit at the top (a gear with the word \"Tools\"). Should you decide to take this route:\n  * Select Bulk Change - All # issues\n  * Step 1 - choose all relevant issues (likely all of them)\n  * Step 2 - Select \"Transition Issues\"\n  * Step 3 - Select \"Closed\"\n  * Step 4 - Select \"Fixed\" in Change Resolution.\n  * View what is about to change and confirm it. Then commit the change.\n\nDependencies:\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16123", "fixedVersions": [], "id": "16123", "issueType": "Sub-task", "key": "SERVER-60", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2014-10-21T12:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Close all resolved tickets in Jira", "timeSpent": "PT0S", "updated": "2014-10-21T12:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Should also send an announcement to the internal list (tech@ or dev@ or whichever one is appropriate).", "created": "2014-10-20T12:05:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Done, sent to puppet-dev, puppet-users, puppet-announce.", "created": "2014-10-21T14:11:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30c844b7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmyv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461533287_*|*_5_*:*_1_*:*_60579511369_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_678379253"}], "description": "  * [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]: update the release google spreadsheet.\n  * Update the MSI build targets in the Puppet repo in ext/build_defaults.yaml. This needs to be done for any projects that are to get into the MSI (facter and hiera as of 8/2014)\n  * Send the drafted release notes email.\n    * If final send to puppet-announce and specific distribution lists (e.g. puppet to puppet-users & puppet-dev).\n  * Make a PSA on IRC letting those kiddos know about the new release.\n    * Something along the lines of \"PSA: facter 1.7.3 now available\"\n\nDependencies:\n  * Prepare long form release notes and short form release story\n  * Packages pushed\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15800", "fixedVersions": [], "id": "15800", "issueType": "Sub-task", "key": "SERVER-59", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-10-21T14:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Send out announcements", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Docs are not on docs.puppetlabs.com (yet), they are in the changelog on github, and already updated.", "created": "2014-10-21T12:25:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2599f838"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmyn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461535324_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_672045830"}], "description": "Push the documentation updates to docs.puppetlabs.com.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15520", "fixedVersions": [], "id": "15520", "issueType": "Sub-task", "key": "SERVER-58", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-10-21T12:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Docs pushed", "timeSpent": "PT0S", "updated": "2014-10-21T12:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "this does not apply to puppet-server", "created": "2014-10-21T12:22:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ef4cf8c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmyf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461537889_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_671832145"}], "description": "Update downloads page\n  * Update misc/download-options to reflect the new builds you just pushed and also make sure they're displayed. It's a good idea to make sure this looks like it's supposed to\n\nNOTE: this page will hopefully be deprecated soon. The idea is that docs with update their documentation to include \"latest release version\" and where to download files. This page will then be changed to redirect to docs.puppetlabs.com and will no longer need updating.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15205", "fixedVersions": [], "id": "15205", "issueType": "Sub-task", "key": "SERVER-57", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Won't Fix", "resolutionDate": "2014-10-21T12:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update the downloads page", "timeSpent": "PT0S", "updated": "2014-10-21T12:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19bd76af"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmy7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461540013_*|*_3_*:*_1_*:*_4394309_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_672365625"}], "description": "Push packages\n  * run `rake pl:jenkins:uber_ship`\n    * You will need the keys to the castle (aka the passphrase) for this to work.\n    * Don't forget to make sure everything looks like it's in the correct folder, the pkgs dir has been cleared out, and that you are shipping for all expected platforms.\n    * Get a *second set of RelEng eyes* on the packages that are about to be shipped to make sure everything looks a-okay.\n    * If you're shipping a gem you need to make sure you have a rubygems account, are an owner of that project, and have a gem config file.\n    * If you're shipping puppet you need to sign the MSI file for Windows. This is a manual process and the ship task doesn't ship or build the msi so talk to Moses or Haus for more details. This file also needs to be manually signed.\n\nDependencies:\n  * Go / No Go meeting (Status - Ship it!)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14881", "fixedVersions": [], "id": "14881", "issueType": "Sub-task", "key": "SERVER-56", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-10-21T13:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Packages pushed", "timeSpent": "PT0S", "updated": "2014-10-21T13:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@caf0fdd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmxz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461542163_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_672908950"}], "description": "The development team is responsible for updating the stable/master branches as necessary.\nThis will be done after the version bump in version.rb.\n\nDependencies:\n  * Go / No Go meeting (except where it's required to push the tag to build packages - MSIs)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17470", "fixedVersions": [], "id": "17470", "issueType": "Sub-task", "key": "SERVER-55", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-10-21T12:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Push tag", "timeSpent": "PT0S", "updated": "2014-10-21T12:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ed518e9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmxr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461544365_*|*_3_*:*_1_*:*_841240_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_671610001"}], "description": "Get a yes/no for the release from dev, docs, product, qa, releng.\n\nThis meeting is informal, over chat, and usually happens right before packages are pushed.\nKeep in mind we typically do not ship releases in the evening and we don't ship on Friday if the release is a final release.\n\nDependencies:\n  * Smoke testing\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17274", "fixedVersions": [], "id": "17274", "issueType": "Sub-task", "key": "SERVER-54", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-10-21T12:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Go/no-go meeting", "timeSpent": "PT0S", "updated": "2014-10-21T12:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We decided that this step is unnecessary, given that the acceptance tests will cover the packages. for testing, and profit.", "created": "2014-10-20T12:01:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Need to wait for acceptance tests to run and pass.", "created": "2014-10-20T12:02:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Hmm, I kinda disagree with that", "created": "2014-10-20T12:11:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - makes sense.", "created": "2014-10-20T12:29:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "acceptance test run is here: https://jenkins.puppetlabs.com/view/Puppet%20Server2/view/Stable%20Branch/job/platform_puppet-server_integration-system_full-stable/5/", "created": "2014-10-20T15:23:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "acceptance test run completed.  4 failures, but all were known, intermittent, expected IOExceptions / Bad File Descriptor errors.", "created": "2014-10-20T18:22:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] has been doing some smoke testing - can you please add some notes here about what you tested, etc?", "created": "2014-10-20T18:23:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "I did a clean install of Puppet Server on Cent 5, Cent 6 and Cent 7. All without error.", "created": "2014-10-20T18:39:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Upgrading from Puppet Server 0.2.2 to 0.3.0 on Cent 6 worked flawlessly. ", "created": "2014-10-21T12:10:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "tested:\n\ninstall 0.2.2 agent run, upgrade, agent run\n\non Cent OS 6, 64-bit.  All good.", "created": "2014-10-21T12:17:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Tested on ubuntu Trusty, I got an error on upgrading puppetmaster (not puppetserver) which I filed as [CPR-86]. puppetserver worked properly though.", "created": "2014-10-21T13:07:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28b7be68"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmxj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461546604_*|*_3_*:*_1_*:*_76098969_*|*_6_*:*_2_*:*_54440_*|*_10006_*:*_2_*:*_595431466"}], "description": "Procedure may vary by project and point in the release cycle. Ask around.\n\nIn general this should happen on a variety of platforms, i.e. one or two each of kind of package we create (i.e., gem, dmg, msi, deb, rpm, etc).\n\nFor Puppet, our acceptance suite now tests service scripts, and on debian, a passenger master.  Manual smoke testing can therefore be limited to other package formats than deb and rpm.\n\nLighter testing of Z releases is acceptable.\n\n  * Add a link to the Packages repository that you receive from the \"Tag and create packages\" subtask\n  * Ping folks on your team for help with different platforms.\n  * When you pick up a platform, please leave a comment below that you are testing it. When it looks good, leave another comment, preferably with a code snippet showing the commands executed and their output.\n  * When all platforms picked have been smoke tested, move this ticket to done.\n\nIMPORTANT: Please edit the description of this ticket and remove \"Example:\" below. Edit the platforms to smoke test on, and the smoke test procedure.\n\nExample:\nSmoke test platforms:\n  * pick some platforms such as\n  * Windows 2003/2008/2012 (msi)\n  * Solaris 10/11 (tarball or gem?)\n  * OSX (dmg)\n  * (Note if you are smoke testing Puppet and pick an rpm or deb based platform, concentrate on testing a gem or tarball, since acceptance should have adequately smoke tested those packages.)\n    * RHEL/CentOS 5/6/7\n    * Fedora 19/20\n    * Debian 6/7\n    * Ubuntu 10.04/12.04/14.04\n\nSmoke test procedure:\n  * Start/stop/restart a master (if the platform supports that)\n  * Start/stop/restart an agent\n  * Help/man\n  * Write and run some manifests\n\nDependencies:\n  * Tag and create packages\n  * For Windows MSIs - Push tag\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16966", "fixedVersions": [], "id": "16966", "issueType": "Sub-task", "key": "SERVER-53", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-10-21T12:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Smoke test packages", "timeSpent": "PT0S", "updated": "2014-10-21T13:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "The commit for the tag is https://github.com/puppetlabs/puppet-server/commit/f7f68208b97e6e35e8fea52382c7d78bcfa9c86f\n\nI'm currently waiting on the CI pipeline to build packages and run acceptance tests.", "created": "2014-10-20T14:50:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Packages have been created automatically via the build pipeline. I've tagged the stable branch on my local checkout. The tag is ready to be pushed to the main gh repo once we are ready to ship packages.\n{code}\n[0] Melissa@melissa:puppet-server:(stable)$ git show puppet-server-0.3.0\ntag puppet-server-0.3.0\nTagger: Melissa Stone <melissa@puppetlabs.com>\nDate:   Mon Oct 20 15:09:57 2014 -0700\n\npuppet-server-0.3.0\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG/MacGPG2 v2.0.22 (Darwin)\nComment: GPGTools - http://gpgtools.org\n\niQIcBAABCgAGBQJURYg4AAoJEBBUt6JL1uww9a0P+QHdRWwA7eCL9An/dTFA+CSy\nvYPg/E8gLmwX00qCpoXJBkrIgthx34icX/V12ZHciukK25qIWg8j3Fc+/N8cGacA\nZerqxoXTF0D+NuY2I4efQiToBHRycCf7YrUdBZHFI/ynhvme8pnFCHc5N9W734NW\nh/Q+A9QkVRVKqr9XS9Y1W/X7CP6tNL+sXfUAnoh+GM3GaquRhNrXliucsyM0V7k4\nJE5xT808tia0jfjLtMaCWl5tvGlUFU+J3SKnP7JJh42VuFT72WALrXmbXo5nae0U\nPUL6+vlBWHdh379+6DidXIn9zHMeyemE8Sxy3I+OzgH/sqUUhTawCJe4pfCxjsrw\nGsLpA5R0SNuIQtiv0T9aZumxP5529k3t9wBobN376D6Qzt2Delz0fNcpoE3IpDAj\niOAaWCiCvFJ2q/oz8XCM2I20MyQOPvwLAYfQpdYVZK4WyDr2nRkaBASkXaxoO5cf\nBHAjMjWI6S+KgdrjQdek7aP8VFO0tcoC5SEifq7VJHXK6bmgD+of0/btTAwbQZl6\nFmANT6lu0+KSz6CjZ3D+iFO8JeYwsrPOr5tYU9lX1Uo7bk4imXLNVfYr5DWIpv4G\ndW5iEQEvw+8v35c4+d4iufK5UT75XSnXVlrCkA6/toN88wHbTVjag4fQAxWfPZ8k\nKHXbpJxQaaYOXr7o+FPm\n=wnZ6\n-----END PGP SIGNATURE-----\n\ncommit f7f68208b97e6e35e8fea52382c7d78bcfa9c86f\nAuthor: Eric Sorenson <eric.sorenson@puppetlabs.com>\nDate:   Mon Oct 20 13:40:29 2014 -0700\n\n    (SERVER-51) Update changelog for 0.3.0 release\n\ndiff --git a/CHANGELOG.md b/CHANGELOG.md\nindex cf740f9..be5c83f 100644\n--- a/CHANGELOG.md\n+++ b/CHANGELOG.md\n@@ -1,3 +1,17 @@\n+## 0.3.0\n+This is the first feature update since the initial Puppet Server release.\n+Notable user-facing improvements are:\n+\n+ * (SERVER-18, SERVER-39) Puppet Server now supports externally-terminated SSL\n+   in the same way as external termination on Apache+Passenger does.\n+ * (SERVER-4) Improve error messages and user feedback when starting on systems\n+   with low memory. (We recommend at least 2GB RAM)\n+ * (SERVER-43) Add support for HTTP \"basic\" authentication", "created": "2014-10-20T16:11:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@483ab4a6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmxb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461548618_*|*_3_*:*_1_*:*_6926453_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_592264732"}], "description": "Tag and create packages\n\n  * Developer provides the SHA - [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - Please add the SHA as a comment (this should be the commit which contains the newly updated version.rb)\n  * checkout the sha\n    * Make sure you are about to tag the correct thing\n  * Create the tag e.g.) git tag -s -u {GPG key} -m \"1.7.3\" 1.7.3\n    * You need to know the pass phrase for this to complete successfully. It's important that we make sure all releases are signed to verify authenticity.\n    * DO NOT push the tag to the repo, keep it local only\n  * `git describe` will show you the tag. Make sure you're building what you think you're building.\n  * Make sure you look over the code that has changed since the previous release so we know what's going out the door.\n  * run `rake package:implode package:bootstrap pl:jenkins:uber_build` when you've verified what version you're building (this uses the latest version of the packaging repo to build the packages).\n  * If this is a puppet release, you have to build the windows msi. This is done using jenkins jobs on jenkins-legacy. You have to make sure you're targeting the correct versions of hiera, facter and puppet.\n  * [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] please add a comment with location of packages.\n\nFor puppet, don't forget the msi packages. This usually comes after other smoke testing is going well since it does require the tag to be pushed live.\n\nDependencies:\n  * Every ticket before this except for release notes.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16673", "fixedVersions": [], "id": "16673", "issueType": "Sub-task", "key": "SERVER-52", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-10-20T16:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Tag the release and create packages", "timeSpent": "PT0S", "updated": "2014-10-20T16:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "docs initially for long-form release notes, then [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] to send e-mail.\n\n[~accountid:623c08e1562ab90069f8aed4] - surprise!", "created": "2014-10-20T11:50:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "I'm working on this now", "created": "2014-10-20T11:58:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] - as I went through the issues/changelog, I collected these highlights:\n\n   * added support for running a standalone CA\n   * fixed http report processor\n   * added ability to accept cert via X header\n   * fix gem installation issues (SERVER-24)\n   * update logging to match puppet\u2019s (SERVER-11)\n   * add handling for insufficient memory on startup\n   * improved cert handling on CA startup\n   * add support for Support for X-Client-DN and X-Client-Verify Headers (SERVER-18)\n\n\nBy no means exhaustive, but perhaps useful to you as you write the release notes.", "created": "2014-10-20T14:13:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Announcement text:\n\n{noformat}\nSubject: Announce: Puppet Server 0.3.0 available!\n\nThis is the first feature update since the initial Puppet Server release.\nNotable user-facing improvements are:\n\n * (SERVER-18, SERVER-39) Puppet Server now supports externally-terminated SSL\n   in the same way as external termination on Apache+Passenger does.\n * (SERVER-4) Improve error messages and user feedback when starting on systems\n   with low memory. (We recommend at least 2GB RAM)\n * (SERVER-43) Add support for HTTP \"basic\" authentication", "created": "2014-10-20T14:57:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "looks good to me", "created": "2014-10-20T15:14:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "+1!", "created": "2014-10-20T17:43:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "calling it good then.", "created": "2014-10-21T13:06:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5bf7af36"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmx3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461550658_*|*_3_*:*_1_*:*_82422801_*|*_5_*:*_1_*:*_60583443206_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_592041264"}], "description": "Collaborating with product for release story\n\nDependencies:\n  * Is there a JIRA ticket targeted at the release for every commit?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16340", "fixedVersions": [], "id": "16340", "issueType": "Sub-task", "key": "SERVER-51", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-10-21T13:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Prepare long form release notes and short form release story", "timeSpent": "PT0S", "updated": "2016-09-21T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "next version will be 0.3.1", "created": "2014-10-20T11:46:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "0.3.1 exists in JIRA.\n\nWe're not going to do the public query thing for this release.", "created": "2014-10-20T14:09:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:5c808afb-dce6-44a1-922d-296dc2c81fe8] - can you please mark 0.3.0 as 'released' in JIRA?", "created": "2014-10-20T14:09:00.000000"}, {"author": "557058:5c808afb-dce6-44a1-922d-296dc2c81fe8", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] I can release the version, once all issues are resolved. Are all of them ready to be resolved now?", "created": "2014-10-20T14:17:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:5c808afb-dce6-44a1-922d-296dc2c81fe8] - sorry about that.  Turns out, we can't actually mark the version as 'released', because we still have some issues in functional review.  We are going to proceed with the release anyway - will leave this issue open for us to eventually come back around and mark the version as released once we finally close out the remaining issues.", "created": "2014-10-20T14:25:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "0.3.0 has been released in JIRA", "created": "2014-10-20T15:22:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4305a269"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmwv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461552743_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_596211991"}], "description": "This happens on Jira - we need to clean up the current release and prepare for the next release.\n  * Mark the version that's going out as \"Released\" in the Project Admin -> Versions panel.\n  * Create a version we can target future issues or issues that didn't make it into the current release.  (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\n  * Create a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n    - 'project = XX AND affectedVersion = 'X.Y.Y', Save as \"Introduced in X.Y.Y\", click Details, add permission for Everyone\n    - 'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16122", "fixedVersions": [], "id": "16122", "issueType": "Sub-task", "key": "SERVER-50", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-10-20T15:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one?", "timeSpent": "PT0S", "updated": "2014-10-20T15:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This presumes we're releasing from master, which for this release is not going to be the case.", "created": "2014-10-17T14:17:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@260d1e4e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmwn:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461555079_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_583145414"}], "description": "For some releases, the code base will need to be merged down to stable.\n\n*NOTE:* This is usually only during a x.y.0 release, but even then it may have already been done. If it doesn't apply, close this ticket.\n\n\nAssuming you have origin (your remote) and upstream (puppetlabs remote), the commands will look something like this:\n{noformat}\ngit fetch upstream\ngit rebase upstream/master\n\ngit checkout stable\ngit rebase upstream/stable\n\ngit merge master --no-ff --log\n{noformat}\n\nOnce that looks good:\n{noformat}\ngit push origin\ngit push upstream\n{noformat}\n\nAfter merging to stable, the jobs on jenkins may require updates (spec, acceptance, etc) when you merge master into stable. Please ensure that the jenkins jobs are updated if necessary.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n  * Update version number in source\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15799", "fixedVersions": [], "id": "15799", "issueType": "Sub-task", "key": "SERVER-49", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-10-20T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Merge master into stable", "timeSpent": "PT0S", "updated": "2014-10-20T11:44:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This does not apply to puppet-server.", "created": "2014-10-17T14:14:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "update version number in project.clj to 0.3.0", "created": "2014-10-20T11:42:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11326a97"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmwf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461557221_*|*_3_*:*_1_*:*_164394_*|*_4_*:*_1_*:*_7677_*|*_6_*:*_2_*:*_250058321_*|*_10006_*:*_2_*:*_340683813"}], "description": "Bump VERSION in lib/{#project}/version.rb to correct version.\n\n  * Commit the updated version file.\n    * e.g) commit -m \"(packaging) Update FACTERVERSION to 1.7.3\".\n  * If any merging needs to happen (i.e. master into stable/stable into master), it can now happen (different subtask).\n  * Once this is done, hand the SHA to be built to RelEng to be tagged.\n\nDependencies:\n  * Is the code ready for release?\n  * Is there a commit for every JIRA ticket targeted at the release?\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15519", "fixedVersions": [], "id": "15519", "issueType": "Sub-task", "key": "SERVER-48", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-10-20T13:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Update version number in source", "timeSpent": "PT0S", "updated": "2014-10-20T13:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a882354"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmw7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461559350_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_590575599"}], "description": "Ensure all tickets targeted at the release have a corresponding commit\n  * git log <old tag>..<new tag>\n  * This time, look through tickets targeted at this release in JIRA, and compare it to the commit log, looking for the corresponding numbers\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15204", "fixedVersions": [], "id": "15204", "issueType": "Sub-task", "key": "SERVER-47", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-10-20T13:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a commit for every JIRA ticket targeted at the release?", "timeSpent": "PT0S", "updated": "2014-10-20T13:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Because of the history of our JIRA usage in the past, we are not going to hit this 100% for this release.  But, at a glance, things don't look terrible.", "created": "2014-10-20T13:44:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@c439aff"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmvz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461561449_*|*_3_*:*_1_*:*_56363_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_590341889"}], "description": "Ensure all tickets referenced in the commit log have a bug targeted at the release\n\n  * git log <old tag>..<new tag>\n  * look through, and make sure that if there is a JIRA ticket number referenced in any of the commits, that ticket is targeted at the release\n  * Also, make sure the code itself is sane, that you understand why the change was made, etc. etc.\n  * [ticketmatch.rb script|https://gist.github.com/hlindberg/9520023] is a ruby script that helps with \"Is there a JIRA ticket targeted at the release for every commit?\" and \"Is there a commit for every JIRA ticket targeted at the release?\" (it beats doing it manually, but requires manual steps and hacking the script for the specific release)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14880", "fixedVersions": [], "id": "14880", "issueType": "Sub-task", "key": "SERVER-46", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-10-20T13:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is there a JIRA ticket targeted at the release for every commit?", "timeSpent": "PT0S", "updated": "2014-10-20T13:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This acceptance test job run on stable:\n\nhttps://jenkins.puppetlabs.com/view/Puppet%20Server2/view/Stable%20Branch/job/platform_puppet-server_integration-system_full-stable/3/\n\nhad 5 failures, all of which are the known, intermittent, expected \"Bad File Descriptor\" or IOException failures.\n\nThere are still several tickets in functional review, but those are not going to be resolve for this release.  Next time, we will do better.", "created": "2014-10-20T13:30:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59ea3796"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmvr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_461563655_*|*_3_*:*_1_*:*_10059_*|*_5_*:*_1_*:*_60668903760_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_589551147"}], "description": "All tests (spec, acceptance) should be passing on all platforms for both stable & master.\n\n  * If a new platform has been added, make sure that platform has acceptance testing, new features have decent coverage, etc. etc.\n  * If the release is going to be cut from a sha, rather than the head of a branch, make sure that sha specifically has gone through spec/acceptance/etc. tests\n  * Move all items that should be moved from Ready for CI to Ready for Review\n\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.\n\nhttps://puppet.atlassian.net/issues/?jql=project%20%3D%20SERVER%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%221.0.0%22\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17551", "fixedVersions": [], "id": "17551", "issueType": "Sub-task", "key": "SERVER-45", "labels": [], "originalEstimate": "PT0S", "parent": "17272", "parentSummary": "Puppet Server 0.3.0 10-20-2014 Release", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-10-20T13:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Is the code ready for release?", "timeSpent": "PT0S", "updated": "2016-09-21T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] I did this thing.\n\nI still need to talk to [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] about details so this could get bumped backwards or closed out, but I wanted to get the tickets up so you could account for them in your planning if that helps.", "created": "2014-10-08T09:38:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Awesome! Let me know the results of that! Either way, we'll pull it into our sprint today, so we can make sure do be available if you need us!", "created": "2014-10-08T10:42:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] so my current thinking is that we should change this to be the 0.2.3 release, and probably shoot for doing sometime around Monday of next week?  There are some fixes in the current codebase that I think are worth pushing an OSS release for", "created": "2014-10-14T16:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] I left the date as Thurs for now, but I'll coordinate with Kevin and make sure we have a good sense for when we'll have a nice stable build to go off of and then I'll update the date.", "created": "2014-10-14T16:42:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Looking through the changelog since 0.2.2, the HTTP cert headers ([SERVER-18]) might justify an 0.3.0 feature release number, but I'm not super opinionated about it. (y) in general on an early-next week release, whatever number it ends up being", "created": "2014-10-14T17:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Cool, thanks, we'll talk through the Y vs. Z release once we get a bit closer.", "created": "2014-10-14T17:07:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I'm on +1 on calling the pending release 0.3.0 - there's quite a bit of stuff in it.\n\n[~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e]] - Just a heads-up that we are still targeting this release for Monday the 20th.", "created": "2014-10-15T12:00:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Sounds like a plan. Thanks for the heads up on this.", "created": "2014-10-15T12:55:00.000000"}, {"author": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "body": "Hooray!", "created": "2014-10-21T14:33:00.000000"}], "components": [], "created": "2014-10-08T09:32:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c781b79"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnif:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_137171_*|*_3_*:*_1_*:*_89254473_*|*_5_*:*_1_*:*_61071039340_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1050972930"}], "description": "Puppet Server 0.3.0 10-20-2014 Release\n\nWhen working through this ticket, add it to the board and then keep it in the Ready for Engineering column.\nMove the subtasks to In Progress when you are working on them and Resolved when you have completed them.\nIn general subtasks should only be moved to Ready for Engineering when they are ready to be worked on. For some assignees this is their cue to start working on release-related items.\n\n * The first set of tickets are assigned to the developer, those can all be converted to Ready for Engineering and you can start working through them.\n * Only when those are done should you move the \"Prepare notes\" and \"Tag release/create packages\" tasks to Ready for Engineering. Ping those assigned to move forward.\n * When you hear back for \"Tag Release/create packages\", you should move \"Smoke test packages\" to Ready for Engineering or In Progress if you are ready.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17272", "fixedVersions": ["SERVER 0.3.0"], "id": "17272", "issueType": "Task", "key": "SERVER-44", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-10-21T14:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server 0.3.0 10-20-2014 Release", "timeSpent": "PT0S", "updated": "2016-09-27T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "replaced by SERVER-44", "created": "2014-10-08T09:50:00.000000"}], "components": [], "created": "2014-10-07T12:01:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@41f3425f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnen:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_974668_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_77555516"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14879", "fixedVersions": [], "id": "14879", "issueType": "Task", "key": "SERVER-42", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Duplicate", "resolutionDate": "2014-10-08T09:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "1.0.0 release", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:54921db7-0271-4f8f-be78-bf68cccb06d2] Can you give us a sample manifest that repros this for you?  Also if you do end up confirming whether or not it happens in the old master daemon, we'd love to hear those results.", "created": "2014-10-07T12:15:00.000000"}, {"author": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "body": "Sure, I'll try both of those. I'll also see what difference it makes disabling the puppetdb connection, since that's mentioned quite a lot in the above stack.", "created": "2014-10-08T01:55:00.000000"}, {"author": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "body": "Sure enough, I can no longer reproduce this today despite my best efforts. It returns the \"Invalid relationship\" error to the client as it should. It could have been a genuine timeout (testing on a local Vagrant VirtualBox so not the snappiest of environments). I'd been updating module code around the same time but pretty sure I'd also restarted the service so I don't think it would be anything to do with stuff cached in memory.\n\nIf it turns out to be an actual problem I can reproduce in future, I'll let you know. For now I think it's a Cannot Reproduce. Cheers!", "created": "2014-10-08T03:50:00.000000"}, {"author": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "body": "It came up again, fixed by a VM restart, but I suspect it would also have been fixed by a restart of PuppetDB. I noticed my VM only had 1GB memory, which is obviously not enough to run two beefy JVM servers (Server + PDB). It was chugging away in swap. With 2GB the timeout never appears and agent runs are generally much, much faster. Obviously our production master will have a lot more memory than this.", "created": "2014-10-08T07:18:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Hi [~accountid:557058:54921db7-0271-4f8f-be78-bf68cccb06d2] - wow, yeah, 1 GB of RAM is definitely not enough to run puppet-server and puppetdb.  I'm not surprised to hear that either of those processes ending up in swap could result in a timeout like this.\n\nSo, given that, I think we can close this issue.  However, as always, please feel free to re-open it if the problem reoccurs on a system with sufficient RAM.  Thanks again!", "created": "2014-10-08T10:31:00.000000"}], "components": [], "created": "2014-10-07T10:13:00.000000", "creator": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@627e3f72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmcf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7237315_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_80246150"}], "description": "Certain errors on the server don't seem to return a response to the client, so the agent times out after a time instead of outputting the error as I'm fairly sure it does on the old master.\n\n{noformat:title=puppetserver.log}\n2014-10-07 16:00:30,812 ERROR [puppet-server] Invalid relationship: File[shibboleth_conf_dir] { require => Class[Apache::Mod::Shib] }, because Class[Apache::Mod::Shib] doesn't seem to be in the catalog\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:306:in `synthesize_edges'\norg/jruby/RubyArray.java:1613:in `each'\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:261:in `synthesize_edges'\norg/jruby/RubyHash.java:1341:in `each'\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:259:in `synthesize_edges'\norg/jruby/RubyArray.java:1613:in `each'\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:242:in `synthesize_edges'with\n/usr/share/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/util/puppetdb.rb:98:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:241:in `synthesize_edges'\n/usr/share/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/util/puppetdb.rb:98:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:231:in `synthesize_edges'\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:49:in `munge_catalog'\n/usr/share/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/util/puppetdb.rb:98:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:36:in `munge_catalog'\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:17:in `save'\n/usr/share/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/util/puppetdb.rb:98:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/indirector/catalog/puppetdb.rb:16:in `save'\n/usr/share/ruby/vendor_ruby/puppet/indirector/store_configs.rb:24:in `save'\n/usr/share/ruby/vendor_ruby/puppet/indirector/indirection.rb:206:in `find'\n/usr/share/ruby/vendor_ruby/puppet/network/http/api/v1.rb:105:in `do_find'\n/usr/share/ruby/vendor_ruby/puppet/network/http/api/v1.rb:50:in `call'\n/usr/share/ruby/vendor_ruby/puppet/context.rb:64:in `override'\n/usr/share/ruby/vendor_ruby/puppet.rb:244:in `override'\n/usr/share/ruby/vendor_ruby/puppet/network/http/api/v1.rb:49:in `call'\n/usr/share/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/usr/share/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'\n/usr/share/ruby/vendor_ruby/puppet/network/http/handler.rb:63:in `process'\n/usr/share/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'\n/usr/share/ruby/vendor_ruby/puppet/network/http/handler.rb:61:in `process'\n/file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:96:in `handleRequest'\nPuppet$$Server$$Master_2039443948.gen:13:in `handleRequest'\nrequest_handler_core.clj:110:in `invoke'\nrequest_handler_service.clj:11:in `invoke'\nrequest_handler_service.clj:19:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:619:in `invoke'\ncore.clj:2396:in `doInvoke'\n{noformat}\n\n{noformat:title=puppet agent -t}\n# puppet agent -t\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nNotice: /File[/var/lib/puppet/lib/puppet/parser/functions/bool2httpd.rb]/ensure: defined content as '{md5}05d5deeb6e0c31acee7c55b249ec8e06'\nInfo: Loading facts\nError: Could not retrieve catalog from remote server: Net::ReadTimeout\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog; skipping run\n{noformat}\n\nFixing the error in my manifests makes the agent run succeed, but as mentioned I think the old server would not timeout like this. I will try firing up the old master daemon to check.\n\nOther types of error do return to the agent as expected, such as any catalog compilation errors.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15203", "fixedVersions": [], "id": "15203", "issueType": "Bug", "key": "SERVER-41", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "resolution": "Won't Fix", "resolutionDate": "2014-10-08T10:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Agent timeout for some types of error", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:70121:bf1e3b94-8940-4ee4-9bb1-7188cd7f2ac3] - thanks for the bug report.  Which version of the puppetmaster does this work on for you?  If possible, would you be able to try on puppet 3.7.1?  puppet-server should behave exactly the same way.", "created": "2014-10-07T16:26:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:bf1e3b94-8940-4ee4-9bb1-7188cd7f2ac3] - we've been able to reproduce this problem as you describe.  With a Puppet 3.7.1 Ruby master (running just w/ WEBrick on Ruby 1.9.3 w/ a PuppetDB backend), I do not see the \"uninitialized constant\" error during an agent run.  With a Puppet Server master using Puppet 3.7.1, I do see the \"uninitialized constant\" error during an agent run.  We'll continue to investigate and provide updates as we learn more. ", "created": "2014-10-09T12:00:00.000000"}, {"author": "623d002e8d8b9c0068b93ede", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - I *just* ran into this as well. I'm in the process of migrating from masterless Puppet to Puppet Server.  CentOS 7 (Puppet Server and when doing masterless Puppet runs), Puppet 3.7.1 everywhere, no PuppetDB. \n\nI think a useful log entry is missing from the bug report.\n\n{noformat}\n2014-10-09 14:58:03,700 INFO  [puppet-server] Redefining file in Puppet::Type\n2014-10-09 14:58:03,836 ERROR [puppet-server] Could not autoload puppet/type/file_concat: uninitialized constant Puppet::Type::File::Owner\n{noformat}\n\nI think the bug is due to Puppet::Type::File (and its' children) becoming inaccessible during the redefinition of file in Puppet::Type, making the resolution of Puppet::Type::File::Owner impossible.", "created": "2014-10-09T12:12:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:623d002e8d8b9c0068b93ede], for this observation.  Yes, I believe you are correct about the redefinition of Puppet::Type::File causing the failure that [~accountid:70121:bf1e3b94-8940-4ee4-9bb1-7188cd7f2ac3] reported and that you have also observed.  I have opened a separate ticket, SERVER-64, with additional details on what we've found so far and we'll continue there to root cause the differences in loading behavior that we're seeing between Puppet Server and the Puppet master running under MRI.\n\nIn the meantime, you may have seen that since the Puppet::Type::File type is already defined by the time the \"file_concat.rb\" Ruby file is sourced that by avoiding the \"require puppet/type/file\" call that the autoload error no longer occurs and an agent run completes successfully.  The first line in \"file_concat.rb\" could be replaced with:\n\n{code}\nfile_defined = false\nif Object.const_defined?(\"Puppet\")\n  konst = Object.const_get(\"Puppet\")\n  if (konst.const_defined?(\"Type\"))\n    file_defined = konst.const_get(\"Type\").const_defined?(\"File\")\n  end\nend\n\nrequire 'puppet/type/file' unless file_defined\n{code}\n\nWould this be a suitable workaround for you for now to continue exploring Puppet Server while we continue to investigate the root cause for this issue?", "created": "2014-10-10T16:06:00.000000"}, {"author": "623d002e8d8b9c0068b93ede", "body": "It would be.\n\nI also think I just threw up in my mouth a little. :-)", "created": "2014-10-14T12:13:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks, [~accountid:623d002e8d8b9c0068b93ede], for the response.  A much simpler option for the workaround in code would be to just comment out the {{require 'puppet/type/file'}} line for now, assuming you wouldn't have a need to exercise the code in some other context where {{Puppet::Type::File}} had not previously been defined.  {{Puppet::Type::File}} and its related types will always be defined by the time this module is first referenced for a catalog compilation request since these types have to be materialized in order for some of the very early settings initialization logic to work.  The extra conditional logic may only be useful for exercising the module code in other contexts that don't involve running the full Puppet master stack, e.g., for unit tests.\n\nI certainly understand how these workarounds are not ideal.  As noted in the linked ticket, SERVER-64, we are working with the JRuby community to address the root cause of this issue in a future release.", "created": "2014-10-14T13:17:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thank you again for raising this issue.  I am going to close this out for now and suggest that SERVER-64 be tracked for a fix to the root cause of this problem in JRuby's {{LOADED_FEATURES}} handling.  If you have any new information, please feel free to attach that to this ticket.", "created": "2014-10-21T09:18:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-07T00:06:00.000000", "creator": "70121:bf1e3b94-8940-4ee4-9bb1-7188cd7f2ac3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@372436d6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnbj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_43797475_*|*_3_*:*_2_*:*_529798473_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_493816566_*|*_10006_*:*_1_*:*_175292374"}], "description": "When used with file_concat module (https://github.com/electrical/puppet-lib-file_concat)\n\nSeeing these errors:\n\nagent:\n\nError: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not autoload puppet/type/file_concat: uninitialized constant Puppet::Type::File::Owner on node host.net\n\nserver:\n\n2014-10-07 15:48:42,163 ERROR [puppet-server] Could not autoload puppet/type/file_concat:\n uninitialized constant Puppet::Type::File::Owner on node host.net\n2014-10-07 15:48:42,188 ERROR [puppet-server] Could not autoload puppet/type/file_concat:\n uninitialized constant Puppet::Type::File::Owner on node host.net\norg/jruby/RubyModule.java:2723:in `const_missing'\n/etc/puppet/modules/file_concat/lib/puppet/type/file_concat.rb:51:in `(root)'\norg/jruby/RubyModule.java:2337:in `module_eval'\n...\n\nWorks OK with puppetmaster.\n\n------------\n\n*UPDATE*: tl;dr: this issue can be resolved by simply commenting out the {{require 'puppet/type/file'}} line in {{file_concat}}:\n\nhttps://github.com/electrical/puppet-lib-file_concat/blob/master/lib/puppet/type/file_concat.rb#L1\n\nThere is a PR open against file_concat to fix this upstream:\n\nhttps://github.com/electrical/puppet-lib-file_concat/pull/8\n\nThis should hopefully also resolve issues with puppet-logstash:\n\nhttps://github.com/elasticsearch/puppet-logstash/pull/196", "environment": "CentOS 6.5 server and agent", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16965", "fixedVersions": [], "id": "16965", "issueType": "Bug", "key": "SERVER-40", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:bf1e3b94-8940-4ee4-9bb1-7188cd7f2ac3", "resolution": "Incomplete", "resolutionDate": "2014-10-21T09:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "uninitialized constant Puppet::Type::File::Owner", "timeSpent": "PT0S", "updated": "2015-12-30T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Based on the great feedback [~accountid:623a4a827910a200718ac35d] provided on the real-world use of this feature, a few of us talked about this a bit and came up with the following plan for the initial implementation of this feature on Puppet Server:\n\n1) Puppet Server will extract a client certificate, if one is provided, from the value associated with a HTTP header named \"X-Client-Cert\".  Per the work done for SERVER-18, the certificate will only be extracted if the new \"allow-header-cert-info\" field in the \"master\" section of the puppetserver conf is present and set to \"true\".\n\n2) The extracted client certificate will be presumed to have been provided as a Base-64 encoded PEM which was URI encoded into the header value for transmission on the wire.  (The URI encoding would serve to sanitize any Base 64 characters which would otherwise be unsafe for transmission as an HTTP header value -- specifically, newline CR/LF characters.)  Accordingly, the implementation will attempt to first URI decode the header value and, if successful, attempt to parse the resulting text as a Base-64 encoded PEM certificate.  \n\n2a) If the decoding process is successful, the certificate object will be provided as part of the request sent into the core Ruby Puppet code -- in the same manner that a client certificate normally would when extracted from the SSL handshake when the Puppet master is terminating SSL directly.  This will make the contents of the certificate available for the harvesting of trusted node data when the \"trusted_node_data\" setting in puppet.conf is set to \"true\".\n\n2b) If the decoding process fails, an HTTP 400 \"Bad Request\" response will be provided to the client with details on which aspect of the decoding failed, for troubleshooting purposes.\n\n---\n\nThis initial approach does not provide the same degree of flexibility as was possible with external SSL termination under Apache / Passenger but we can consider adding more flexibility, e.g., ability to configure the name of the HTTP header which contains the certificate and/or the manner in which the certificate can be encoded on the wire, through additional configuration as may be needed later on.\n\nOpen to feedback on any aspects of this that others may have...", "created": "2014-10-10T18:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "A couple of other notes on the initial implementation behavior:\n\n3) Assuming that the client certificate is to be extracted from the \"X-Client-Cert\" header, it will NOT be validated against the CA store that the Puppet master's Jetty server is using to authenticate clients.\n\n4) Following the behavior started in the implementation for SERVER-18, the \"X-Client-DN\", \"X-Client-Verify\", and \"X-Client-Cert\" headers will only be considered in the context of Puppet \"master\" service endpoints, not Puppet \"certificate authority\" service endpoints.", "created": "2014-10-13T11:02:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], maybe I'm not understanding what you said in point 4 above but does that mean that none of these headers to support SSL offloading will work with the new certificate authority server? Perhaps a little off-topic for this ticket, but I saw no mention of that in SERVER-18 and I would not have guessed that. I'm currently doing SSL offloading on our PuppetCAs too. Is there a reason the certificate authority endpoints wouldn't support it?", "created": "2014-10-13T18:06:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "No, [~accountid:623a4a827910a200718ac35d], I don't believe you misunderstood my comment on point 4 and thanks for raising this point.  This was a recent realization on my part around how we did the implementation for SERVER-18.\n\nAs it currently stands, the Puppet Server Certificate Authority does not use the client DN -- whether from an X- header or extracted from a certificate when SSL is terminated at the Puppet Server - to authenticate client access to the Certificate ({{/certificate/}}), Certificate Revocation List ({{/certificate_revocation_list}}), or Certificate Request ({{/certificate_request}}) endpoints.\n\nThe one exception to that is the {{client-whitelist}} which authorizes the Certificate Status(es) ({{/certificate_status, /certificate_statuses}}) endpoints -- documented in https://github.com/puppetlabs/puppet-server/blob/master/documentation/configuration.markdown.\n\nWithout hooking up the X-Client-DN and X-Client-Verify to the Certificate Status(es) endpoints, it wouldn't be possible to validate an externally-terminated SSL connection against that whitelist.\n\n[~accountid:623a4a827910a200718ac35d], in your environment, are the Certificate Status(es) endpoints externally SSL-terminated as well?", "created": "2014-10-13T18:47:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "We do externally SSL-terminate the Certificate Status(es) endpoints too - all access to the Puppetmaster API, the Console, and PuppetDB are all SSL terminated on our F5s.\n\nIn our environment we only allow a small set of trusted authenticated certificates access to the \"save\" and \"destroy\" methods (via auth.conf) for the certificate_status(es) endpoints but any node (authenticated or not) access to the \"find\" and \"search\" methods of certificate_status(es). The docs aren't entirely clear on the point to me, but it sounds like with the new CA we'd have to go all or nothing for access to certificate_status(es)?", "created": "2014-10-13T19:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4a827910a200718ac35d] interesting", "created": "2014-10-14T14:12:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], I'll definitely try.\n\nThe CA endpoint also goes through our F5, SSL-terminated. Since it is essentially the same code path/configuration as a standard Puppetmaster we do it in an identical way, including disabling mod_ssl on the CA server and passing in the HTTP headers as environment variables (as I detailed in SERVER-18). Unauthenticated access is allowed to some of the certificate endpoints (e.g. /certificate/) but authenticated access is required by others (e.g. /certificate_statuses/) - but the F5 doesn't do access control, it only validates the client cert, if offered, and sets the headers appropriately for the PuppetCA to handle access control with auth.conf.\n\nWe have two CA servers in an active/passive warm standby HA configuration. I don't see the certificate API as conceptually different than the rest of the Puppetmaster API from a technical standpoint. However, unlike the rest of the Puppetmaster API, a read-only access to the certificate_status(es) endpoints is useful for a handful of internal reporting needs we have (mostly around cross-referencing the status of a node vs. other internal management systems / systems of record). The users/systems where I would want to run those reports are not necessarily the same systems/certificates which I'd want to grant certificate clean/approve/revoke access to.\n\nAs a note, we have a similar need on PuppetDB: users/services who should be able to retrieve facts in an authenticated fashion - using some internal tools we've crafted as well as feeding data into other systems of record - should not be allowed to submit data. We solved it by putting an Apache instance between the F5 and PuppetDB's Jetty to look at the certificate name presented, the URI requested, and check a permissions list on whether to grant complete access, read-only fact access, or monitoring only access (metrics, etc.).\n\nEven though I've not always been fond of the exact syntax of auth.conf, the ability to be selective with the API according to site needs has been convenient. Quite a bit more so than crafting up an otherwise unneeded Apache instance. However, if the CA server goes more of the PuppetDB direction I probably could do the same thing there, if I still find a need.\n\nRegarding the internal API bit... I have considered both the PuppetDB API and the Puppetmaster API as documented interfaces which - as long as I preserved the core Puppet functionality needed - I could tweak authentication controls on and leverage for external tools and integration points. We've certainly done that with PuppetDB and the Certificate endpoints and haven't ruled it out for other methods in the Puppetmaster API.\n\nI hope this helps. Thanks!", "created": "2014-10-15T09:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4a827910a200718ac35d] thanks, that helps.\n\nTo be clear: it's not our intent to head in the direction of PuppetDB in terms of authorization", "created": "2014-10-15T10:46:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "Regarding the read/write vs. read-only access to the certificate_status(es) endpoints, yes, that is entirely handled via different auth.conf rules for the different verbs.\n\n1) I understand regarding timelines/code freeze, but it is possible we'd defer an update of the CA components and continue using the current version, waiting for a future version supporting the X-headers rather than try to move the cert whitelist logic up to the F5 layer and/or bypass SSL termination.\n\n2) Yeah, we definitely could work around this by looking at the HTTP verbs used at an Apache proxy layer. A pretty trivial modification to the logical we already have in place for PuppetDB access control.\n\nThanks!", "created": "2014-10-15T12:55:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "The PR that I just put up for this ticket, https://github.com/puppetlabs/puppet-server/pull/225, is in line with the proposal I laid out in earlier comments in this thread.  It covers the ability to parse the \"X-Client-Cert\" header in the context of the \"master\" endpoint and does nothing to add X- header processing to the CA endpoints yet, as is currently being discussed.  I'd suggest that any follow-up work / discussion that may be done around external SSL termination and the CA endpoints be handled on a new ticket.  [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], we can talk about how we want to do that...", "created": "2014-10-15T13:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4a827910a200718ac35d] thanks.  One final clarification (and then we'll probably move this conversation to a new ticket as [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] suggests): if we were to support the X-headers stuff on the cert_status endpoints, would that be sufficient for your current use case?  It's my belief that the other three CA-related endpoints (certificate, certificate_request, crl) are not usually reliant on any client cert information in order to function properly.  Am I missing anything special that you're doing on those?", "created": "2014-10-15T13:18:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "I took one more look at this - just to be sure.\n\nYes, I believe what you said is true.\n\nAn alternate route (maybe even easier?) until such time as you have a finer-grained auth.conf-like ACL functionality would be to just say that any request which came in via HTTP (instead of HTTPS) would always be authorized for all endpoints in CA (including certificate_status(es)) and then put all authentication and certificate access control at a prior layer (in my case, I'd use Apache).", "created": "2014-10-15T14:09:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Interesting", "created": "2014-10-16T07:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4a827910a200718ac35d] we've talked this over a bit internally and we think we can add a toggle to disable the cert_status authorization before we hit code freeze.  I created SERVER-77 to track that.  Let me know if you don't think that'll be sufficient for your current use cases but it sounds like hopefully it will be!", "created": "2014-10-17T08:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "stable", "created": "2014-10-17T11:22:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] yes, that would work. I have reviewed SERVER-77 and that sounds like a good option. It will essentially give Puppet Server the same behavior as PuppetDB over HTTP in that regard (no auth, anything goes) and I've already got a well defined Apache configuration for securing that in a SSL externally-terminated environment. I have even added finer grained access controls than all/nothing so I can likely still achieve my current auth.conf-like behavior. Thanks!", "created": "2014-10-21T06:50:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4a827910a200718ac35d] Excellent.  SERVER-77 is done and will make it into the PE release.  Thanks again for all of your feedback along the way.", "created": "2014-10-21T08:35:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Verified on Cent 6", "created": "2014-10-22T12:22:00.000000"}, {"author": "623c12b6ee1b5a0070293582", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f]\n\nNot to resurrect a closed ticket, but I found myself studying this ticket, SERVER-18 which originally spawned this ticket, and SERVER-77, which spawned from this ticket as I was working on troubleshooting and understanding the proxy CA service today.\n\nIf I understand all of these tickets, then we still have no way to separate authorization from authentication in the Puppet CA service in a configuration that terminates SSL at the load balancer, correct?  I ask only because my understanding needs to be updated if so, because historically the use of X-Client-DN and X-Client-Verify headers was such that the SSL terminating LB was responsible for authenticating requests using the client cert, but all decision making regarding access control was delegated to the back-end service.\n\nWith the new design, the CA service is all-or-nothing in that _both_ authentication and authorization must either be handled by the CA service, which requires SSL termination in the back, or both need to move to the LB in front with the back-end services having no authorization behavior.  Correct?\n\nIf so, my concern is that while this may work for Sean since he's using Apache which is sophisticated enough to express authorization logic in configuration, I'm concerned it won't work for generic load balancers that don't have this level of sophistication.\n\nIf we want to support as many load balancers as possible it may be worth considering another ticket to capture the need to separate the concern of authentication (is this client authentic?) from authorization (is this request allowed?) as was previously possible by setting the {{X-Client-DN}} and {{X-Client-Verify}} headers in the request forwarded from the load balancer.  This would make it possible to point all client requests at the load balancer, both CA and non-CA, while preserving the behavior of authorization in the back-end services.", "created": "2015-06-16T17:07:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yeah, [~accountid:623c12b6ee1b5a0070293582], I think you've correctly captured the current state of our capabilities for the Puppet CA service under Puppet Server.\n\nFor Ruby master-bound endpoints, SSL can be terminated outside of the master (where authentication of the client certificate via an SSL handshake could be done) whereas authorization (determination as to whether or not the client is permitted to perform the action) can be done against the value populated in the {{X-Client-...}} header inside of Puppet Server's master endpoint handling.  We don't currently have the logic to interpret the {{X-Client-}} headers for authorization purposes in the Puppet CA endpoint implementation, only the client certificate name derived from an SSL handshake in Puppet Server's Jetty server.\n\nSERVER-763 was filed as a feature request to extend this capability to the Puppet CA and Puppet admin-APIs.  Ultimately, I'm thinking it would be best to consider this work as part of the \"auth.conf replacement\" epic, SERVER-111.  Hopefully, at that time, we'll be able to eliminate the conflicting authorization mechanisms that we're using for the master, CA, and admin APIs at present and come up with a unified replacement.", "created": "2015-06-16T17:30:00.000000"}], "components": [], "created": "2014-10-06T16:56:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@672ca69a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyplxj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_245916615_*|*_1_*:*_2_*:*_86460501_*|*_10007_*:*_1_*:*_193071539_*|*_3_*:*_3_*:*_416810666_*|*_10009_*:*_1_*:*_163385035_*|*_5_*:*_1_*:*_60991751632_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_3_*:*_260364546"}], "description": "Some users perform SSL termination with external hardware or load balancers. This is done via the ssl_client_header and ssl_client_verify_header config settings, which allow some HTTP headers to be set by the SSL-terminating machines to verify that a connection is authenticated with a specified hostname. \n\nIf a user is relying on trusted facts being present, then the certificate itself will need to find its way to Pupper Server via an HTTP header and plumbed into our Puppet::SSL::Certificate wrapper class, and then delivered to the Puppet code.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16672", "fixedVersions": ["SERVER 0.3.0"], "id": "16672", "issueType": "New Feature", "key": "SERVER-39", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-10-22T12:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Need to accept a certificate via an HTTP header", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:1381f112-1c4e-4869-ba34-30602d945124", "created": "2014-10-14T17:56:00.000000", "name": "nc_integration_error.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10557"}], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Below is a stack trace for an IOException failure on one acceptance test agent run.  In this case, the master was in the process of loading a facts YAML file from disk during catalog compilation as the exception occurred.  It isn't clear from the stack trace at what point the failure occurred - opening, reading, closing of the file... and we have not yet reproduced this error with more instrumentation in place, e.g., more exception detail.  Unlike the \"Bad File Descriptor\" errors, I have not been able to reproduce the IOException failures locally.\n\nIt is possible that the root cause of the \"Bad File Descriptor\" errors is not the same as that for these IOExceptions.  The \"Bad File Descriptor\" and IOExceptions have two similar characteristics though - both have only seemed to happen if an agent run occurs while JRubyPuppet pool instances are still being initialized and both seem to happen frequently around access to facts YAML files during catalog compilation.\n\n{noformat}\n2014-10-07 03:07:42,537 ERROR [puppet-server] Failed when searching for node orpts8pqeqp8ivk.delivery.puppetlabs.net: Could not retrieve facts for orpts8pqeqp8ivk.delivery.puppetlabs.net: Could not parse YAML data for facts orpts8pqeqp8ivk.delivery.puppetlabs.net: java.io.IOException\n/usr/lib/ruby/site_ruby/1.8/puppet/util/yaml.rb:16:in `load_file'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/yaml.rb:12:in `find'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:201:in `find'\n/usr/lib/ruby/site_ruby/1.8/puppet/node.rb:116:in `fact_merge'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/node/plain.rb:17:in `find'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:201:in `find'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:111:in `find_node'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/profiler.rb:51:in `profile'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:108:in `find_node'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:147:in `node_from_request'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:49:in `find'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:201:in `find'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/api/v1.rb:105:in `do_find'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/api/v1.rb:50:in `call'\n/usr/lib/ruby/site_ruby/1.8/puppet/context.rb:64:in `override'\n/usr/lib/ruby/site_ruby/1.8/puppet.rb:244:in `override'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/api/v1.rb:49:in `call'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/route.rb:81:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:63:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/profiler.rb:51:in `profile'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:61:in `process'\n/usr/share/puppetserver/file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:96:in `handleRequest'\nPuppet$$Server$$Master_2093906067.gen:13:in `handleRequest'\nrequest_handler_core.clj:110:in `invoke'\nrequest_handler_service.clj:11:in `invoke'\nrequest_handler_service.clj:19:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:619:in `invoke'\ncore.clj:2396:in `doInvoke'\nmaster_core.clj:45:in `invoke'\ncore.clj:99:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:30:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_core.clj:66:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\nringutils.clj:28:in `invoke'\nringutils.clj:34:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_service.clj:25:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\njetty9_core.clj:299:in `invoke'\n{noformat}", "created": "2014-10-07T09:34:00.000000"}, {"author": "557058:1381f112-1c4e-4869-ba34-30602d945124", "body": "We ran into this in one of the Node Classifier's PE integration test runs. I've attached the relevant portion of the beaker log.", "created": "2014-10-14T17:56:00.000000"}, {"author": "557058:1381f112-1c4e-4869-ba34-30602d945124", "body": "We just saw this again, when hitting the masters \"/:environment/resource_types/*\" endpoint.", "created": "2014-10-14T19:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:1381f112-1c4e-4869-ba34-30602d945124] were these both during test runs?  And was the server still in the process of starting up when the error occurred?  If so, it's a known issue that we believe to be relatively harmless and much, much more likely to surface during test runs than in the real world.\n\nWe'll be dedicated some additional efforts to coming up with a solution / workaround, but we have to finish up some higher-priority blocker tickets first.", "created": "2014-10-15T09:54:00.000000"}, {"author": "557058:1381f112-1c4e-4869-ba34-30602d945124", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] yes, they were both in test runs, immediately after the server started listening on port 8140 (not sure whether that is an indicator of having finished startup or not). Just wanted to show that it can happen when reading a file, not just writing it, in case that was new & relevant information. This is not a big deal for us since it rarely happens and it's pretty easy to tell this is the problem (and not a genuine test failure) when it does.", "created": "2014-10-15T11:31:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:1381f112-1c4e-4869-ba34-30602d945124], the server listening on port 8140 doesn't necessarily coincide with initialization of the JRubyPuppet pool having finished.  The listener is made available after the first pool instance has finished initializing but any others will continue being initialized asynchronously.  The initialization for the entire pool would be done if you see a message like the following in the {{puppetserver.log}}...\n\n{noformat}\n2014-10-15 09:44:28,452 INFO  [p.s.j.jruby-puppet-core] Finished creating JRubyPuppet instance 4 of 4\n{noformat}\n\n... where X=Y for the \"X of Y\" part of the message.\n\nFor all of the cases I'm aware of where we've seen these failures, it is often preceded in the log by a \"Priming JRubyPuppet instance 1 of 3\", \"... 2 of 3\", or something like that.  If you do find one that happens after the last \"finish\" message in the log for a puppet server startup, I'd definitely be interested in the details.", "created": "2014-10-15T11:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "master", "created": "2014-10-17T11:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Fix for this is in place in our master branch.  We wanted to leave it in \"CI\" status for several test runs to validate it.  So far I think we've had 4-5 runs and no occurrences of the BFD error so far.\n\nHowever, the fix is a bit difficult to characterize in terms of memory impact", "created": "2014-10-24T09:50:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Following the integration of https://github.com/puppetlabs/puppet-server/pull/227 to the Puppet Server master branch, we've had 10+ runs in a row of the FOSS 25 Puppet Server acceptance suite with no test failures.  We have not seen any instances locally or in CI of Bad File Descriptor or I/O Exception failures on the Puppet Server master branch.\n\nClosing this out with the presumption that the underlying problem has been fixed.", "created": "2014-10-28T09:15:00.000000"}], "components": [], "created": "2014-10-06T16:42:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64e24c66"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypngn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_653343765_*|*_1_*:*_1_*:*_311575_*|*_10007_*:*_1_*:*_285403039_*|*_3_*:*_1_*:*_925420808_*|*_10009_*:*_1_*:*_9492243_*|*_5_*:*_1_*:*_808984642_*|*_6_*:*_1_*:*_0"}], "description": "Puppet Server acceptance tests which perform agent runs periodically have a \"Bad file descriptor\" or \"IOException\" error returned from an endpoint request to the master.  Most commonly, I've seen these happen when a POST request is made to the master's catalog endpoint.  The master tries to serialize the facts received from the client into a YAML file.  The file appears to be written properly but an exception is thrown as a close() call is made on the file descriptor.  An example stack trace is below.\n\nI have been able to reproduce this problem locally but if the Puppet Server is still in the process of initializing its JRubyPuppet pool instances when an agent request comes in.  For all of the acceptance test instances of the error that I've seen, the pool initialization is still in progress when the error occurs.\n\n{noformat}\n2014-10-06 15:25:30,252 ERROR [puppet-server] Bad file descriptor - Bad file descriptor\norg/jruby/RubyIO.java:2099:in `close'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/file_system/uniquefile.rb:59:in `_close'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/file_system/uniquefile.rb:70:in `close'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/util.rb:446:in `replace_file'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/util/yaml.rb:22:in `dump'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/indirector/yaml.rb:30:in `save'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/indirector/indirection.rb:283:in `save'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/node/facts.rb:20:in `save'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/indirector/catalog/compiler.rb:41:in `extract_facts_from_request'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/util/profiler.rb:51:in `profile'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/indirector/catalog/compiler.rb:20:in `extract_facts_from_request'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/indirector/catalog/compiler.rb:47:in `find'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/indirector/indirection.rb:201:in `find'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/network/http/api/v1.rb:105:in `do_find'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/network/http/api/v1.rb:50:in `call'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/context.rb:64:in `override'\n/s/repos/puppet-server/ruby/puppet/lib/puppet.rb:244:in `override'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/network/http/api/v1.rb:49:in `call'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/network/http/route.rb:81:in `process'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/network/http/handler.rb:63:in `process'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/util/profiler.rb:51:in `profile'\n/s/repos/puppet-server/ruby/puppet/lib/puppet/network/http/handler.rb:61:in `process'\n/s/repos/puppet-server/src/ruby/puppet-server-lib/puppet/server/master.rb:96:in `handleRequest'\nPuppet$$Server$$Master_2025831093.gen:13:in `handleRequest'\nrequest_handler_core.clj:110:in `invoke'\nrequest_handler_service.clj:11:in `invoke'\nrequest_handler_service.clj:19:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:619:in `invoke'\ncore.clj:2396:in `doInvoke'\nmaster_core.clj:44:in `invoke'\ncore.clj:99:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:30:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_core.clj:59:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\nringutils.clj:28:in `invoke'\nringutils.clj:34:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_service.clj:27:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\njetty9_core.clj:299:in `invoke'\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16121", "fixedVersions": ["SERVER 0.4.0"], "id": "16121", "issueType": "Bug", "key": "SERVER-38", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Bad file descriptor and IOException on file close", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This may be a duplicate of PE-5963", "created": "2014-10-07T12:20:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Confirmed, this is indeed a duplicate of SERVER-43 (which I just moved over from PE-5963).\n\n[~accountid:557058:bc534ba8-57a9-436b-bec2-78dfef05596d] - thanks for the bug report.  You can follow SERVER-43 if you want to continue tracking this issue.", "created": "2014-10-07T16:53:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-06T13:02:00.000000", "creator": "557058:bc534ba8-57a9-436b-bec2-78dfef05596d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d331f40"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnbz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_83803262_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_16422853"}], "description": "I thought I'd try out the new server. Dropped it in and all worked fine except that reports were not pushed to the dashboard. Pasted below is error message in the logs. I reverted to old server, so not a problem for me.\n\n2014-10-06 18:50:02,512 ERROR [puppet-server] Report processor failed: wrong number of arguments calling `post` (4 for 3)\n/usr/lib/ruby/site_ruby/1.8/puppet/reports/http.rb:26:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:37:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:53:in `processors'\norg/jruby/RubyArray.java:1613:in `each'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:51:in `processors'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:30:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/report/processor.rb:14:in `save'\n/usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:283:in `save'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/api/v1.rb:160:in `do_save'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/api/v1.rb:50:in `call'\n/usr/lib/ruby/site_ruby/1.8/puppet/context.rb:64:in `override'\n/usr/lib/ruby/site_ruby/1.8/puppet.rb:244:in `override'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/api/v1.rb:49:in `call'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/route.rb:81:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:63:in `process'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/usr/lib/ruby/site_ruby/1.8/puppet/util/profiler.rb:51:in `profile'\n/usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:61:in `process'\n/usr/share/puppetserver/file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:96:in `handleRequest'\nPuppet$$Server$$Master_1074911525.gen:13:in `handleRequest'\nrequest_handler_core.clj:110:in `invoke'\nrequest_handler_service.clj:11:in `invoke'\nrequest_handler_service.clj:19:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:619:in `invoke'\ncore.clj:2396:in `doInvoke'\nmaster_core.clj:46:in `invoke'\ncore.clj:99:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:30:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_core.clj:59:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\nringutils.clj:28:in `invoke'\nringutils.clj:34:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\nmaster_service.clj:27:in `invoke'\ncore.clj:176:in `invoke'\ncore.clj:45:in `invoke'\njetty9_core.clj:299:in `invoke'\n", "environment": "RHEL 6.5\npuppetserver-0.2.1-1.el6.noarch\npuppet-dashboard-1.2.23-1.el6.noarch", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14878", "fixedVersions": ["SERVER 0.3.0"], "id": "14878", "issueType": "Bug", "key": "SERVER-37", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bc534ba8-57a9-436b-bec2-78dfef05596d", "resolution": "Duplicate", "resolutionDate": "2014-10-07T16:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Can't submit reports to dashboard from puppet server", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I've provided the major example we've had when using /dev/random instead of /dev/urandom, it was a hard one to figure out but as you can see Mick T spotted it from a mile away as he'd seen it before.", "created": "2014-10-08T05:20:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I'm not entirely sure what that system property ({{java.security.egd}}) affects, but it looks like the JVM should already be using /dev/urandom ...\n\nhttp://bugs.java.com/view_bug.do?bug_id=4705093\n\nFrom the last comment, near the bottom:\n\nbq. If you call new SecureRandom() on Linux and the default values are used, it will read from /dev/urandom and not block.", "created": "2014-11-03T19:09:00.000000"}, {"author": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "body": "> I'm not entirely sure what that system property (java.security.egd) effects, but it looks like the JVM should already be using /dev/urandom ...\n\nI don't believe this to be absolutely and always true, or at least its not what I've seen. If this was always true, I wouldn't be talking about this issue as a solution to certain exhaustion issues I've seen.\n\n> From the last comment, near the bottom:\n> If you call new SecureRandom() on Linux and the default values are used, it will read from /dev/urandom and not block.\n\nYep, and then it goes on to talk about other providers and their behaviour, including NativePRNG which uses security.egd. Generally this document is windy and confusing anyway to be honest, and doesn't align to what I've seen in the wild. Probably better to understand the source ourselves.\n\nIf I look through the SecureRandom implementation, there are even ways to specify particular algorithms also which might potentially skip over the default. In particular without specifying a default, I see the list of providers including SHA1PRNG very early in the list on my implementation, which is one of the ones that relies on java.security.egd to be set correctly. Also, SecureRandom on Debian 7 + OpenJDK 7 seems to be using the SUN provider which has specific mention in that document:\n\n{code}\nuser=> (.getName (.getProvider (new java.security.SecureRandom)))\n\"SUN\"\n{code}\n\nSo basically it comes down to this, I've seen this exhaustion in the wild for users running Oracle JDK on Debian 6, and OpenJDK on Redhat 6. We could dig deeper and try to understand why (by all means feel free to do this, I'm curious myself), all I'm saying is I've fixed this kind of problem actively by specifying the setting for security.egd enough times to believe it to be true, so I'm not sure I believe this statement you've quoted to always be correct.", "created": "2014-11-04T05:10:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. I'm not sure I believe this statement you've quoted to always be correct.\n\nI totally understand.  I don't believe it's *always* correct either.  Based on the recency of that comment (2012), I was hoping that, perhaps, it might be fixed in more recent versions of the JDK ... like 7+, I guess.  Although, reading it again, it's not clear if the behavior he describes has changed recently or not.  I think I've spent too much time on this ...\n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] put this in 'ready for eng' during triage yesterday, so I assume that means he thinks we should just do it.  I was a little uneasy about this, but after reading up a bit, it seems like it would either a) be a good thing, or b) have no effect.  So ... +1.", "created": "2014-11-04T10:59:00.000000"}, {"author": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] reading that statement and seeing the date actually made me wonder if it was better in JDK8 (ie. he was talking about that version, not JDK7), but he didn't indicate any change - just a clarification perhaps in the future. Meh, I also thought that document contained too many contradictions :-).\n\nDon't get me wrong either, you are right to question this - since we didn't solve the problem through proper in-depth investigation, it was just a common enough problem & solution that we made it the default. Not only that, we accepted the patch on our end due to pressure from users saying they did it for other JVM applications also ... which is interesting. ie. some users make it their corporate JVM default.\n\nI guess in a way this is why its nice its also a user-configurable thing perhaps, if we were wrong, at least we could ship a notice telling users to change it back or something. But to be honest if it turns out we are wrong and users have to fix this due to some security issue, those high-scale users that use our service on low entropy systems will be broken, which is a bad place to be ... between security problem and not-working :-).", "created": "2014-11-04T11:05:00.000000"}, {"author": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] I think this could be made a global ezbake change also ... saving all groups from having to worry about this potentially. I'm in the bowels of ezbake work for PDB now, which is why I bring it up.", "created": "2014-11-04T11:11:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:70121:7b50b988-18ad-4913-8df5-c67397870b32] are you planning to just put this in to ezbake?  that would be fine w/me and then we can just close this ticket.", "created": "2014-11-07T15:53:00.000000"}, {"author": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "body": "Yes absolutely as part of PDB-663.", "created": "2014-11-07T17:38:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Awesome, thanks.  I'm going to close this as a dupe then.", "created": "2014-11-07T18:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Dupe of PDB-663.", "created": "2014-11-07T18:44:00.000000"}], "components": [], "created": "2014-10-06T12:57:00.000000", "creator": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@188b83c6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywvtb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2439016084_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_350201493"}], "description": "We've had a number of performance issues and service lockups in regards to entropy for PuppetDB, it might be worth considering switching to using /dev/urandom for Puppet Server also.\n\nEasy enough to do, this is what we have in our /etc/default/puppetdb file for example:\n\n{code}\nJAVA_ARGS=\"-Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetdb/puppetdb-oom.hprof -Djava.security.egd=file:/dev/urandom\"\n{code}\n\nWithout this at greater load you start to see FUTEX wait issues when stracing the process, and new HTTPS connections block or simply go very slowly.\n\nPoint-in-case this debacle Harvard had:\n\nhttps://twitter.com/jamesdotcuff/status/494871921558044672\n\nWhich was solved by switch to /dev/urandom.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17270", "fixedVersions": [], "id": "17270", "issueType": "Improvement", "key": "SERVER-36", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:7b50b988-18ad-4913-8df5-c67397870b32", "resolution": "Duplicate", "resolutionDate": "2014-11-07T18:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Consider using /dev/urandom", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Adding [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] for his thoughts on this one...\n\nWhen we add support for having puppetserver shutdown open connections gracefully at service stop time, we'll need to ensure that the timeout that the packaging init scripts use to wait between the initial SIGTERM and, if needed, the subsequent SIGKILL is long enough to allow graceful shutdown timeout at the Jetty-level to be honored.  In TK-92, we're discussing having a timeout of 30 seconds be used at the Jetty level (could be reconfigured through a new webserver.conf setting later as needed).  I think the puppetserver init script in packaging -- at least for CentOS -- is set to 10 seconds.  So I think we'd need to ensure the init script timeout were increased to at least 30 seconds.\n\n[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - what do you think?", "created": "2014-10-07T13:35:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Seems sane. This should be configurable for all platforms via init scripts.\n\nRelated question: if the user configures the timeout differently for jetty, would you expect the init script to honor that change?", "created": "2014-10-07T14:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "That would seem nice from a user perspective but not sure how clean it would be to do that.  Not sure we'd want to have the init script parse the webserver.conf file to find a value that the user might have set or, probably even worse, have the init script populate this value into the webserver.conf at service launch time.  [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - do you have another idea on how we'd do that?", "created": "2014-10-07T14:44:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] No, those were the two easy options i could think of. The alternative is to just set it to 30 seconds and document that users might need to update both the init script (which is usually a terrible idea) and webserver.conf.", "created": "2014-10-07T14:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "@haus what if we defaulted to 60 seconds?  If that lessened the likelihood that anyone ever needed to modify the setting, then it'd also lessen the need for them to do something horrible to adjust it in both places?  But I'm +1 to solving this with docs rather than hacks.", "created": "2014-10-07T15:09:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This passed CI.  Not sure if this needs review or if we can just close it.", "created": "2014-10-16T16:16:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] - assigning this to you based on a comment by Chris in hipchat.", "created": "2014-10-17T16:43:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "I'm seeing failures in using this value in systemd:\n\n{code}\nSep 07 08:58:39 localhost.localdomain systemd[1]: [/usr/lib/systemd/system/puppetserver.service:9] Failed to parse usec_t value, ignoring: ${SERVICE_STOP_RETRIES}\n{code}\n\nWe probably need to just set this to the default value of 60.", "created": "2014-10-21T18:32:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I'm closing this out and opening a new ticket for the issue [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] found.", "created": "2014-10-22T11:52:00.000000"}, {"author": "70121:45435687-53c0-4f4e-a990-afb84245f64b", "body": "I'm confused, was this ever implemented? Or is the functionality only available in PE?", "created": "2015-03-23T09:54:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yes, this was implemented, and is available in open-source Puppet Server - 0.3.0 and later.\n\nThe followup issue that [~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] mentioned was also addressed.  For a system that uses systemd init, the {{/usr/lib/systemd/system/puppetserver.service}} file from a Puppet Server package installation now has...\n\n{noformat}\nTimeoutStopSec=60\n{noformat}\n\n...instead of the parameterized $\\{{{SERVICE_STOP_RETRIES}}\\} variable interpolation that the initial implementation had tried to use.", "created": "2015-03-23T10:19:00.000000"}], "components": [], "created": "2014-10-06T11:44:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e7c6dcd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyplvr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_27243604_*|*_1_*:*_1_*:*_88322172_*|*_10007_*:*_1_*:*_227695413_*|*_3_*:*_2_*:*_362780640_*|*_10009_*:*_1_*:*_438748373_*|*_4_*:*_1_*:*_62088001_*|*_5_*:*_2_*:*_60994165348_*|*_6_*:*_2_*:*_915973_*|*_10006_*:*_1_*:*_174520116"}], "description": "When the Puppet Server service is stopped, any currently open web requests are immediately terminated.  For greater parity with the graceful restart capability which was possible with the MRI Ruby master running under Apache / Passenger, it would be good to support the ability for currently open web requests at stop time to be allowed some time to complete while preventing any new requests from being accepted.\n\nThis ticket would depend upon some underlying work to be done in the trapperkeeper-webservices-jetty9 service, outlined in TK-92.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15518", "fixedVersions": ["SERVER 0.3.0"], "id": "15518", "issueType": "Improvement", "key": "SERVER-35", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2014-10-22T11:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Support for graceful shutdown for requests open at \"stop\" time", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:720f602d-ed4c-4553-a2cf-8e7dc40c0739", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:720f602d-ed4c-4553-a2cf-8e7dc40c0739] - {{MaxPermGen}} has been bumped.  Can you test it out?", "created": "2014-10-10T15:23:00.000000"}, {"author": "557058:720f602d-ed4c-4553-a2cf-8e7dc40c0739", "body": "\nlooks like MaxPermSize is set to 256m in 0.3.1.SNAPSHOT.2014.10.23T1155-1\n\n{code}\nps ax | grep puppetserver\n60059 ?        Sl     0:56 /usr/bin/java -XX:OnOutOfMemoryError=kill -9 %p -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetserver -Xms2g -Xmx2g -XX:MaxPermSize=256m -jar /usr/share/puppetserver/puppet-server-release.jar --config /etc/puppetserver/conf.d --bootstrap-config /etc/puppetserver/bootstrap.cfg\n{code}", "created": "2014-10-23T15:28:00.000000"}, {"author": "557058:720f602d-ed4c-4553-a2cf-8e7dc40c0739", "body": "this seems fixed", "created": "2014-10-23T15:30:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-03T16:21:00.000000", "creator": "557058:720f602d-ed4c-4553-a2cf-8e7dc40c0739", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f6f05f2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypku7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_330927692_*|*_10007_*:*_1_*:*_84719647_*|*_3_*:*_1_*:*_248161_*|*_10009_*:*_1_*:*_1123631154_*|*_5_*:*_1_*:*_60894094802_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_185383756"}], "description": "When I install puppetserver via rpm on an 8 core server, the process dies in about 30 seconds with: 'java.lang.OutOfMemoryError: PermGen space'.  The issue persists with MaxPermSize set to 64m.  It's fixed on the 8 core system when MaxPermSize is set to 128m.  I've confirmed that the issue was introduced with 0.2.0 and still exists in 0.2.2. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15202", "fixedVersions": ["SERVER 0.3.0"], "id": "15202", "issueType": "Task", "key": "SERVER-33", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:720f602d-ed4c-4553-a2cf-8e7dc40c0739", "resolution": "Fixed", "resolutionDate": "2014-10-23T15:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "increase default permgen ", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "created": "2014-10-03T15:18:00.000000", "name": "eyaml-error.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10861"}], "comments": [{"author": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "body": "Hello, reporting from [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5]'s comment on SERVER-24... I don't seem to have had any problems using keys generated with {{eyaml createkeys}}.\n\nI'm running CentOS 7 and OpenJDK 7:\n\n{noformat}\njava version \"1.7.0_65\"\nOpenJDK Runtime Environment (rhel-2.5.1.2.el7_0-x86_64 u65-b17)\nOpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)\n{noformat}\n\nJRuby bundles BouncyCastle for SSL stuff, so the first item here seems relevant:\nhttp://www.bouncycastle.org/wiki/display/JA1/Frequently+Asked+Questions\n\nI wonder if your test machine's JDK/JRE is missing the policy files that allow the higher strength keys? You could try downloading and installing the JCE Unlimited Strength policy files from the Oracle website to the machine and see if that makes any difference.", "created": "2014-10-06T04:40:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:54921db7-0271-4f8f-be78-bf68cccb06d2] - thank you so much!  That is, indeed, the cause of this problem.  You have saved me a lot of work, and I'm very grateful!", "created": "2014-10-06T16:26:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "Thanks [~accountid:557058:54921db7-0271-4f8f-be78-bf68cccb06d2]!", "created": "2014-10-06T21:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think we should document it for OSS, and file a follow-up ticket to see if we can get it working with an Oracle JDK.  Historically we've supported Oracle JDK for our JVM apps for OSS.  ([~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] is correct that it is a non-issue for PE, though.)  Would be nice to get someone from CS/PS to validate since they raised the original concerns.  [~accountid:557058:8527c9e8-8e3f-451c-b529-f6fe014233ed] interested?", "created": "2014-10-07T15:26:00.000000"}], "components": [], "created": "2014-10-03T15:18:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54a9609b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywln3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_263318005_*|*_6_*:*_1_*:*_0"}], "description": "When puppet-server is configured to use hiera-eyaml and an agent run commences which triggers the hiera-eyaml backend to read an encrypted string from a .yaml file, the catalog request fails, and the following error is logged on the server:\n\n{noformat}\n2014-10-03 13:51:06,402 DEBUG [puppet-server] hiera(): [eyaml_backend]: Found mysecret in common\n2014-10-03 13:51:06,403 DEBUG [puppet-server] hiera(): [eyaml_backend]: Attempting to decrypt\njava.security.InvalidKeyException: Illegal key size\n        at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1024)\n        at javax.crypto.Cipher.init(Cipher.java:1345)\n        at javax.crypto.Cipher.init(Cipher.java:1282)\n        at org.jruby.ext.openssl.impl.PKCS7.dataDecode(PKCS7.java:793)\n        at org.jruby.ext.openssl.impl.PKCS7.decrypt(PKCS7.java:506)\n        at org.jruby.ext.openssl.PKCS7.decrypt(PKCS7.java:638)\n{noformat}\n\nSee the attached file for the full error log.\n\nThis is caused by https://github.com/jruby/jruby/issues/2018", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17268", "fixedVersions": [], "id": "17268", "issueType": "Story", "key": "SERVER-32", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2014-10-06T16:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "hiera-eyaml does not work on Puppet Server", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimespent": "1800", "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Put this in functional review ... imagine it needs a look from somebody, perhaps [~accountid:70121:1f7c5098-d991-4129-bcae-5fc413f71091]?", "created": "2014-10-07T10:55:00.000000"}, {"author": "70121:1f7c5098-d991-4129-bcae-5fc413f71091", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Sure. Is this in a PE build, and if so which?", "created": "2014-10-07T10:57:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] I think this would be in the pe-puppetserver that you promoted yesterday, do you know which version that is?", "created": "2014-10-07T15:18:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "In as of build #1221 I believe", "created": "2014-10-07T15:40:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I will validate this for PE 3.7.1", "created": "2014-12-01T09:33:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated in 3.7.1-rc1-4-g564c46f by running a number of various Fact Searches in the console.", "created": "2014-12-01T10:02:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "https://testrail.ops.puppetlabs.net/index.php?/cases/view/62471", "created": "2015-01-29T17:08:00.000000"}], "components": [], "created": "2014-10-03T12:59:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13992f88"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyplvz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_69395837_*|*_1_*:*_1_*:*_92940511_*|*_10007_*:*_1_*:*_175685769_*|*_3_*:*_1_*:*_107008_*|*_10009_*:*_2_*:*_880150519_*|*_5_*:*_1_*:*_57540578206_*|*_6_*:*_2_*:*_3872287996"}], "description": "Dashboard requires the `facts_search` endpoint, which means we need it for PE 3.4.  Turn it back on, maybe with a comment in the code about removing it in the near future.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17550", "fixedVersions": ["SERVER 0.3.0"], "id": "17550", "issueType": "Task", "key": "SERVER-31", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-01T10:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "turn on `facts_search` endpoint", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": [], "worklogs": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "startDate": "2014-12-01T10:02:00.000000", "timeSpent": "PT1800S"}]}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think that the minimum set of SSL/cert related files needed for the master to come to ready would be:\n\n* Host certificate (hostcert in puppet.conf, ssl-cert in webserver config)\n* Host private key (hostprivkey in puppet.conf, ssl-key in webserver config)\n* CA certificate (cacert in puppet.conf, ssl-ca-cert in webserver config)\n\nThere is some logic in puppet_server_config_core.clj's init-webserver! which checks to see if the keys for these settings are defined in the webserver config, else the settings from puppet.conf are used. I think it may make most sense to put the fail-fast logic in this function so that the error message displayed to the user for any missing files would be done in terms of the names of the specific settings used to determine the file locations - puppet.conf ones vs. webserver config ones. It would be best to not let the settings override logic to leak out of this function.\n\nThe init-webserver! function considers the CRL setting as well - cacrl in puppet.conf, ssl-crl-path in webserver config. This setting is not required to have a value and so should not be considered for fail-fast. It should be possible to boot the master service to ready without a CRL being used by the webserver. For example, a certificate configuration from an external CA may have been created without the use of a CRL for enforcing revocation. The logic in init-webserver! around the CRL should be augmented to not override the ssl-crl-path webserver setting from cacrl for the case that cacrl refers to a file that does not exist. If cacrl is not defined in the puppet.conf file, it will still have a default value which could refer to a file that does not actually exist.\n\nI'd be okay with doing the cacrl logic in a separate ticket but it may be more efficient to just do it with the rest of the fail-fast stuff while we're in that code anyway.", "created": "2014-10-06T12:49:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "After more discussion with [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] and [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] we've decided on the following:\n* We should check for the existence of $hostprivkey, $hostcert, and $localcacert on the master and fail if any doesn't exist\n* This file check should be implemented in the CA service's initialize-master-ssl! method so that it won't happen when the CA is disabled", "created": "2014-10-07T13:15:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "And this also implies that if the CA service's initialize-master-ssl! function does not find $hostprivkey, $hostcert, and $localcacert that the master cert, private key, ... will be generated and $localcacert copied over from $cacert.\n\nWe also discussed the comment I'd made above about the cacrl / ssl-crl-path existence check.  We decided to not do that part for now with the assumption being that the CRL file must \"always\" be present for cases where the Puppet CA is being used.  The CRL file may not be present in an external CA scenario but in that case the \"disabled\" CA service should be configured and the \"disabled\" CA service will not fail bootup based on the non-existence of any of the files being discussed here.", "created": "2014-10-07T13:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "One thing we didn't account for was that it is possible for the master to have booted up once with one {{certname}} and have the {{localcacert}} file created and change the {{certname}} to something else for a subsequent startup (e.g., if the hostname of the machine needs to change).  In this case the {{localcacert}} would exist but the {{hostprivkey}} and {{hostcert}} would not, leading to the server failing to start.  Moving this issue back to \"Doing\" and will rework the initialization logic to allow for the existence of a {{localcacert}} at startup to not fail server startup.", "created": "2014-10-13T13:06:00.000000"}], "components": [], "created": "2014-10-03T12:01:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ef0f43d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyplxr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_356460114_*|*_1_*:*_1_*:*_346556025_*|*_10007_*:*_2_*:*_152148309_*|*_3_*:*_2_*:*_108312386_*|*_10009_*:*_2_*:*_592682609_*|*_6_*:*_2_*:*_1596924_*|*_10006_*:*_1_*:*_8886416"}], "description": "This is a followup from PE-6014 to cover the fail-fast behavior.\n\nWe should add a check for the required SSL files in the master service and fail if they don't exist and it's not the CA. The complication here is that we have some webserver-related override logic around the required SSL files.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15517", "fixedVersions": ["SERVER 0.3.0"], "id": "15517", "issueType": "Task", "key": "SERVER-30", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2014-10-21T15:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SSL fail-fast in master service", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, I've tested this with hiera-eyaml, works fine.\n\nHowever, there's pretty much no point in putting the patch in the puppet-server project.clj file since you can't build a usable uberjar from there anyway.  Will probably close that PR, maybe file a replacement one that just includes some kind of warning comment about the fact that the jruby dependency is going to drag that weird embedded BC jar in, and then merge the ezbake PR and let tests run.  I think I'm good with getting this into 0.4.0 at this point though.", "created": "2014-10-30T12:53:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "So, after we merged this, all of our acceptance tests started failing.  In many/most of the tests (at least the install ones), I couldn't see any indicator of what went wrong", "created": "2014-10-30T18:56:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I can definitely reproduce this on my local machine and I do see the error you showed above in /var/log/puppetserver/puppetserver-daemon.log\n\nIt looks like this conflict comes about as a result of jopenssl having a hard dependency on the version of bouncy castle indicated by Jopenssl::Version::BOUNCY_CASTLE_VERSION\n\nHere is a naive fix that seems to solve the problem when I run puppet-server acceptance smoke tests locally:\nhttps://github.com/puppetlabs/puppet-server/pull/275\n\nOne potential issue this fix may not address is when the jruby-openssl library is used in one of the jruby containers outside the context of puppet-server's master.rb. Not sure how likely that is, but I assume it may be possible that the gems installed using the 'puppetserver gem' command would attempt to load jruby-openssl since the JRuby Kernel does this whenever ruby code attempts to load 'openssl'.\n\nIn that case an alternative fix might be to somehow overwrite META-INF/jruby.home/lib/ruby/shared/jopenssl/version.rb which is where this constant is defined. Overwriting this file with one of our own that sets Jopenssl::Version::BOUNCY_CASTLE_VERSION='1.50' would ensure that any time ruby code running inside the JRuby interpreter packaged with puppet-server attempts to load 'openssl', the version would be the one puppetlabs/certificate-authority depends on. \n\n I haven't tried the code snippet suggested by mkristian, I will try that next probably again in puppet-server's master.rb and report back.", "created": "2014-11-14T14:42:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "I just tried the code snippet suggested by mkristian in src/ruby/puppet-server-lib/puppet/server/master.rb. This is either the wrong place to add that code, or is not a viable fix. [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], do you have any suggestions for other places this snippet might do its thing?", "created": "2014-11-14T18:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] I don't, sorry.  Perhaps you could ask in #jruby and/or open a ticket with them showing your other fix and see what they think about it?", "created": "2014-11-17T10:59:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I have had success overwritting META-INF/jruby.home/lib/ruby/shared/jopenssl/version.rb by means of a slight modification to the ezbake core and an additional directory in `configs/puppetserver/`, PR has been submitted for review: https://github.com/puppetlabs/ezbake/pull/146", "created": "2014-11-18T14:09:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "Okay so it looks like my report on friday of being able to set Jopenssl::Version::BOUNCY_CASTLE_VERSION='1.50' was incorrect. I have not been able to reproduce today, which tells me that I must have fucked up somewhere, probably by not being careful enough about which commit of ezbake I had checked out when I built the package.\n\nOverwriting META-INF/jruby.home/lib/ruby/shared/jopenssl/version.rb does have the intended effect but reveals a fundamental misunderstanding on my part about the various shit that actually gets included in the uber jar. For one thing, jvm-certificate-authority does not add a bouncy castle jar to the uberjar, it adds the content of the bouncy castle jar--so my expectation that setting the Jopenssl::Version::BOUNCY_CASTLE_VERSION value anywhere would allow JRuby to then load the '1.50' version of the jar is incorrect.\n\nI also dug into https://github.com/mkristian/jar-dependencies/blob/master/lib/jar_dependencies.rb and found an environment variable that can be used to achieve the same effect as the IRC suggestion in the description of this ticket. However, setting that environment variable in the puppetserver init script did not achieve the intended effect, nor running Jar.freeze_loading in puppet-server's master.rb.\n\nJust so I understand the issue we are attempting to address by excluding JRuby's BC jars, are you worried that jvm-certificate-authority will mistakenly load classes from that jar after JRuby loads it? I still don't fully understand what happens when JRuby loads a jar the way it is doing with the BC jars. If the intention and effect is simply to make the contents of that jar available on the classpath for the entire JVM process, then perhaps another solution might be to replace META_INF/jruby.home/lib/rub/shared/jopenssl/load.rb with an alternative that skips loading of the specific version of the BC jar? Then, presumably, any further need of the BC jar contents will just use the \"1.50\" classes (not jar) included in the uberjar by jvm-certificate-authority.\n\nOkay, I just tried that last idea and it seems to have worked. I'm wait until tomorrow to double-check and declare victory so I can be sure to reproduce with after inspecting my setup with a fresh mind.", "created": "2014-11-18T19:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] if this requires a modification to the contents of a ruby file that is bundled with JRuby, then we probably need to be looking into filing upstream PRs to make the behavior configurable and then wait for those to get merged", "created": "2014-11-18T22:14:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "As far as I can tell, the Jars.freeze_loading method actually should accomplish the goal of making this behavior configurable. That, or setting JARS_NO_REQUIRE=true in the environment from which the java process is started. Unless the JRuby containers don't inherit environment variables from the java process somehow? Oh: https://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/services/jruby/jruby_puppet_core.clj#L32\n\nI guess the next thing to do would be to figure out a more appropriate place to call Jars.freeze_loading than puppet-server's master.rb.\n\nI did try adding JARS_NO_REQUIRE=true to the map here:\nhttps://github.com/puppetlabs/puppet-server/blob/master/src/clj/puppetlabs/services/jruby/jruby_puppet_core.clj#L118\n\nBut again, this did not seem to prevent jar loading.", "created": "2014-11-19T11:16:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The PRs that got merged for this ended up being:\n\nhttps://github.com/puppetlabs/puppet-server/pull/331/files\n\nand\n\nhttps://github.com/puppetlabs/ezbake/pull/146\n\nThe ezbake PR has the unfortunate side effect of removing the BC jars from *all* packages that we build, even if they don't include the associated changes to puppet-server.  This is the cause of PE-7256.\n\nI'm going to revert the ezbake patch for now", "created": "2015-01-02T08:57:00.000000"}], "components": [], "created": "2014-10-03T11:21:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56802347"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypdlz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_1021840949_*|*_1_*:*_1_*:*_348891554_*|*_10007_*:*_6_*:*_1713182968_*|*_3_*:*_5_*:*_1508675678_*|*_5_*:*_2_*:*_54682041374_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_2_*:*_1615225899_*|*_10006_*:*_1_*:*_1747195035"}], "description": "After chatting with the JRuby devs, it sounds like we might be able to modify our uberjar build to have it exclude the BC jars that they normally bundle inside of the META-INF directory.  They believe that their code should work fine if our 1.50 BC classes are on the classpath.\n\nAnother option they suggested was this:\n\n{quote}\n[10:18] <mkristian> cprice404, you can also try require 'jar-dependencies'; Jars.freeze_loading; require 'openssl' - that disable loading those embedded jars from META-INF ;)\n{quote}\n\nEither of these seems like it'd be a nice improvement to reduce the likelihood of duplicate class issues.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14877", "fixedVersions": ["SERVER 2.0.0"], "id": "14877", "issueType": "Task", "key": "SERVER-29", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-01-06T09:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "experiment with excluding JRuby BC jars from our uberjar", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:5ba935a37add096a82317dfb] I'm working on reproducing this.  So far what I've tried is to create a manifest like this:\n\n{code}\n$myarray = [ \"hi\", \"there\" ]\n\nfile { \"/tmp/foo\":\n   content => template(\"foo/mytemplate.erb\")\n}\n{code}\n\nand then in {{modules/foo/templates/mytemplate.erb}} I've got:\n\n{code}\n<%= @myarray -%>\n{code}\n\nWith this setup, I'm not yet able to repro your issue", "created": "2014-10-08T15:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Just tried changing the array to be populated with the results of some other templates:\n\n{code}\n$app1_rules = template('foo/app1_rules.erb')\n$app2_rules = template('foo/app2_rules.erb')\n\n$myarray = [ $app1_rules, $app2_rules ]\n\nfile { \"/tmp/foo\":\n   content => template(\"foo/mytemplate.erb\")\n}\n{code}\n\nMy {{rules}} templates are the same as yours.  With puppet 3.7.1 (no Puppet Server), I still get:\n\n{code}\n[\"# I am app 1\\nhere are my rules\\n\", \"#I am app 2\\nhere are my rules\\n\"]\n{code}\n\nI'm running puppet 3.7.1 from source though.  I'll try installing it from packages (puppet-server-3.7.1-1.el6.noarch) and see if that changes anything", "created": "2014-10-08T16:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ahh, I think I might have figured it out", "created": "2014-10-08T16:31:00.000000"}, {"author": "5ba935a37add096a82317dfb", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] That's great if you've found it.  If not, I'm more than willing to do more testing and get you anything you need.", "created": "2014-10-08T21:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I'm 90% sure that the issue is that the default ruby on Cent6 is ruby 1.8.7, and our JRuby interpreters are 1.9.3, and that there was a change in ruby itself between 1.8 and 1.9 in terms of how arrays are injected into an erb template.  Today I'll write a simple little test script to prove whether or not this is the case.\n\nIf this is the issue, then it may be that the end result is that we will have to just add to our documentation that if you are switching from a ruby 1.8 setup to Puppet Server, then you'll have to be careful about changes that occurred in the language semantics.  I'm not sure it's something we can really fix other than to make sure we document it very prominently, but I'll check with folks around the office.\n\nWill update this ticket later today.  Thanks!", "created": "2014-10-09T10:23:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, have definitely confirmed it's a Ruby 1.8 vs Ruby 1.9 issue.  Using this script:\n\n{code}\nrequire 'erb'\nmyarray = [\"hi\", \"bye\"]\nputs ERB.new(\"<%= myarray %>\").result(binding())\n{code}\n\nI get different results from MRI ruby 1.8 and 1.9:\n\n{code}\n$ rbenv shell 1.8.7-p375\n$ ruby ./foo.rb\nhibye\n$ rbenv shell 1.9.3-p545\n$ ruby ./foo.rb\n[\"hi\", \"bye\"]\n{code}\n\nSo I'm pretty sure that we're just going to need to document that installing Puppet Server implies that, if you were previously running 1.8.7, you've effectively upgraded to 1.9.3.  Will check around and get confirmation on that decision.", "created": "2014-10-09T11:43:00.000000"}], "components": [], "created": "2014-10-03T09:37:00.000000", "creator": "5ba935a37add096a82317dfb", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fe73e81"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypndr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_350655717_*|*_1_*:*_1_*:*_354402669_*|*_10007_*:*_1_*:*_97040515_*|*_3_*:*_2_*:*_77569314_*|*_5_*:*_1_*:*_61662351638_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_3542955_*|*_10006_*:*_1_*:*_97720787"}], "description": "In a manifest we load the contents of a file in as a template\n$app1_rules = template('firewall/services/app1_rules.erb\u2019)\n$app2_rules = template('firewall/services/app2_rules.erb\u2019)\n\nLets say firewall/services/app1_rules.erb contains\n#I am app 1\nhere are my rules\n\nand\nfirewall/services/app2_rules.erb contains\n#I am app 2\nhere are my rules\n\n\n\nLater on we have a conditional that sets\n$host_specific = [ $app1_rules ]\nor\n$host_specific = [ $app1_rules, $app2_rules  ]\n\nIn the template we have this\n<% if has_variable?(\"host_specific\") then -%>\n<%= @host_specific -%>\n<% end -%>\n\nWith puppet master 3.7.1 (puppet-server-3.7.1-1.el6.noarch) the contents of the template were inserted in to the template.\nex:\n#I am app 1\nhere are my rules\n#I am app 2\nhere are my rules\n\nWith puppet server 0.2.1 (puppetserver-0.2.1-1.el6.noarch) - also occurred with 0.2.0 - the ARRAY is printed\n[\"#I am app 1\\nhere are my rules\\n#I am app 2\\nhere are my rules\"]\n\nThis may not be the best way to handle this, and this module is ancient on our system, but it certainly breaks not only functionality (in this case it caused a rather serious company-impacting issue).", "environment": "CentOS 6.5, server using puppetserver-0.2.1-1.el6.noarch and clients on puppet-3.7.1-1.el6.noarch", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16964", "fixedVersions": [], "id": "16964", "issueType": "Bug", "key": "SERVER-28", "labels": ["docs"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5ba935a37add096a82317dfb", "resolution": "Fixed", "resolutionDate": "2014-10-14T18:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Templates not parsing arrays in the same way as puppet master did", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Thanks for the report [~accountid:5ba935a37add096a82317dfb].  Could you elaborate on what exactly you mean by \"it continued to function\"?  We intended for that exception to prevent the server from starting up (your first expectation).\n\nAlso, out of curiosity, do you know why you didn't have the CA's public key file (ca_pub.pem)?  We're considering making the CA public key not a required file either way, just wanted to get a sense of how often people might end up in this scenario.", "created": "2014-10-07T17:15:00.000000"}, {"author": "5ba935a37add096a82317dfb", "body": "We have about 400 clients that connect to the master.  What I experienced was that the server would start up, and I'd be able to manually run a couple of agents against it (puppet agent -t).  Then, at some point it would just disappear.  All of our clients run the same version, so I can't think of what on the client side would have caused the server to crash when others seemed to work.  I'd guess that it was some other internal process that caused the crash, rather than clients connecting, but that is pure speculation.\n\nThis site has been using puppet for years.  The first release I see in the logs as being installed was 2.7.18 (puppet and puppet-server), but the logs could have been rotated out at this point.  I don't recall the documented process for setting up the CA at the time, but the docs on puppetlabs.com were followed.  The file must never have been created, as this has always been in git and I don't see it ever having existed.", "created": "2014-10-07T18:02:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:5ba935a37add096a82317dfb] Thanks for the information! That's helpful. We've removed the need for the CA public key in [this commit|https://github.com/puppetlabs/puppet-server/commit/8c24f9a67ff33ebd6be5fd04a792da5a252dd9a1].\n\nThe fact that you're able to do agent runs for a bit and then it suddenly disappears sounds like you're running out of memory.  When this happens there will hopefully be an error in the {{puppetserver-daemon.log}} - you might check there to see if there's anything of interest.  By default the Server will require 2GB of RAM, and if you have less memory available, the process will typically start okay but could fail during runtime later on.  \n\nYou might want to double-check the memory available on the system is sufficient.  If not, you could try increasing the available memory, or [reducing the required memory of the Server|https://github.com/puppetlabs/puppet-server/blob/master/documentation/install_from_packages.markdown#system-requirements].\n\n", "created": "2014-10-10T17:29:00.000000"}, {"author": "5ba935a37add096a82317dfb", "body": "You know, I really don't think this is a memory problem.  The server has 8gb and I've given puppetsever 6gb.  I've run out of memory with puppetserver before, and it'll log out of memory errors and eventually dump the heap to my log dir.  In this case, the process just vanished, no logging and no heap dumps.\n\nI've not tried since updating to 0.2.2.  I think it is pretty easy to recreate if you'd like me to enable any extra logging, or grab some info from the jre.", "created": "2014-10-12T11:47:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Was there any information in the syslog?  The only case we've seen so far where the server goes down without anything showing up in any of the files in /var/log/puppetserver is when the OS itself is running low on system memory and it decides to OOM-kill the puppetserver process", "created": "2014-10-13T12:27:00.000000"}, {"author": "5ba935a37add096a82317dfb", "body": "Nope, no OOM in messages.  I'll see if I can re-create the problem then, that seems like a logical next step.", "created": "2014-10-13T17:13:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Great, thank you!", "created": "2014-10-13T17:15:00.000000"}, {"author": "5ba935a37add096a82317dfb", "body": "In 0.2.2 it does appear that the puppet server terminates as soon as it notices that the ssl file is missing.  Maybe clients were just using cached catalogs before and I didn't notice.\n\nI've discovered that if you follow the procedure documented here:\nhttps://docs.puppetlabs.com/puppet/latest/reference/ssl_regenerate_certificates.html\n/var/lib/puppet/ssl/ca/ca_pub.pem is not created.\n\nWhat is supposed to create that file / how is it created?", "created": "2014-10-20T14:01:00.000000"}, {"author": "5ba935a37add096a82317dfb", "body": "Looks like you can create it with 'openssl rsa -in ca_key.pem -pubout -out ca_pub.pem'.  It turns out that auto-signing doesn't work if that file isn't present and valid... I'm concerned that removing the dependency on the ca_pub.pem will break auto-signing.", "created": "2014-10-20T17:40:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:5ba935a37add096a82317dfb] Ah yes, you've found it! I realized we can just get the public key with openssl directly - no need to call into openssl from code :D\n\nbq. I'm concerned that removing the dependency on the ca_pub.pem will break auto-signing.\n\nThe public key is available from the CA certificate, which we always have (unlike the CA public key file), so our plan is to grab the key from the certificate whenever we need it.\n\nSorry for the troubles! I missed a spot in the code when removing the need for this file - look for the fix in the next release!", "created": "2014-10-20T18:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] is there work to do here?  Or does the other ticket that you've filed encompass this?  Can you please link it to that ticket and close it out unless there is additional work to do here?", "created": "2014-10-21T22:28:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "See SERVER-86 for follow-up work.", "created": "2014-10-22T10:37:00.000000"}], "components": [], "created": "2014-10-03T09:25:00.000000", "creator": "5ba935a37add096a82317dfb", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e4100e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywlbb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_355474171_*|*_6_*:*_2_*:*_1322473190_*|*_10004_*:*_1_*:*_1290450418"}], "description": "When switching from puppet master to puppet server, the puppet server would function for a very short period of time and then the java process would just disappear.\n\nUpon startup, it logged:\njava.lang.IllegalStateException: Cannot initialize CA with partial state; need all files or none.\nFound:\n/var/lib/puppet/ssl/ca/ca_key.pem\n/var/lib/puppet/ssl/ca/ca_crl.pem\n/var/lib/puppet/ssl/ca/ca_crt.pem\n/var/lib/puppet/ssl/ca/requests\n/var/lib/puppet/ssl/ca/serial\n/var/lib/puppet/ssl/ca/signed\n/var/lib/puppet/ssl/ca/inventory.txt\nMissing:\n/var/lib/puppet/ssl/ca/ca_pub.pem\n\nHowever it continued to function for a short period of time, presumably until something made a request that required the missing functionality.  When it did stop working, the java process simply disappeared - I didn't see any further logging, dumps, etc.\n\nSince puppet master was working, and puppet server is intended to be a drop-in, it would be nice to have this checked automatically, although maybe not necessary.\n\nWhat I would expect to happen is either 1) puppet server would just refuse to start up, making it obvious that something is missing and you need to go check the logs, or 2) puppet server would not disappear and instead log failures every time the needed functionality was accessed and didn't work.", "environment": "CentOS 6.5 running puppetserver-0.2.0-1.el6.noarch, clients running puppet-3.7.1-1.el6.noarch.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16339", "fixedVersions": ["SERVER 0.4.0"], "id": "16339", "issueType": "Bug", "key": "SERVER-27", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5ba935a37add096a82317dfb", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet server crashes when ssl files are missing", "timeSpent": "PT0S", "updated": "2015-01-22T16:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] hi", "created": "2014-10-07T12:05:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "this is fixed", "created": "2014-10-20T16:40:00.000000"}], "components": [], "created": "2014-10-01T16:23:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68653be4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywklb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_502960180_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1139627993_*|*_10005_*:*_1_*:*_10919"}], "description": "The travis CI service is installed and seems to be configured with valid credentials and such, but it's not running on pull requests.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16338", "fixedVersions": [], "id": "16338", "issueType": "Task", "key": "SERVER-26", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Fixed", "resolutionDate": "2014-10-20T16:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "travis CI doesn't seem to be working on puppet-server", "timeSpent": "PT0S", "updated": "2015-01-22T16:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-10-01T10:49:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30f5736f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywuaf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_523590954_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1400007626_*|*_10005_*:*_1_*:*_67217585212"}], "description": "This ticket came from this PR: https://github.com/puppetlabs/puppet-server/pull/193\n\nWe'd like to have a better test for this change than what was in the PR.\n\nJeremy mentioned:\nbq. I think you could build on @cprice404's example by putting different CA certs at the localcacert and cacert locations with the localcacert one being the one that issued the server cert for the server you are connecting to. A successful connection to the server would be an indication that the client liked the server cert. Could combine that with one where the localcacert is not the CA that issued the server cert, where a failed connection would be expected. Again, I wouldn't suggest blocking this PR from coming in for this.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17549", "fixedVersions": [], "id": "17549", "issueType": "Task", "key": "SERVER-25", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Better testing of localcacert vs cacert in HTTP SSL context", "timeSpent": "PT0S", "updated": "2016-12-09T15:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "{{puppetserver}} is actually looking for cli commands in {{/var/lib/puppet/cli/apps}}, but they are installed in {{/usr/share/puppetserver/cli/apps}}\n\nAs a simple workaround one can use:\n{{ln -s /usr/share/puppetserver/cli /var/lib/puppet/cli}}", "created": "2014-10-01T06:43:00.000000"}, {"author": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "body": "Yeah - looking at the source of {{puppetserver}}, it's looking under the {{puppet}} user's home directory which is {{/var/lib/puppet}}. So either the CLI apps are in the wrong place, or the script's looking in the wrong place.", "created": "2014-10-01T06:53:00.000000"}, {"author": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "body": "Ah - if I install {{puppetserver}} to a blank container, then it works because the {{puppet}} user is created with a home directory of {{/usr/share/puppetserver}} rather than {{/var/lib/puppet}} as when regular Puppet is installed first.\n\nI don't think the script ought to depend on the puppet user's home directory being the puppetserver home.", "created": "2014-10-01T07:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yeah, sounds like a bug", "created": "2014-10-01T15:50:00.000000"}, {"author": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "body": "Thanks. We've got a fairly standard setup of hiera-eyaml using a PKCS7 key pair held under {{/etc/puppet/keys}}, and it seems to be decrypting values happily now that we've got this gem installed.", "created": "2014-10-02T04:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Nice!  [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5], fyi ^^.\n\n[~accountid:557058:54921db7-0271-4f8f-be78-bf68cccb06d2], is it OK if [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] pings you with a few questions about your setup as he's investigating hiera-eyaml stuff on our end?", "created": "2014-10-02T10:20:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:54921db7-0271-4f8f-be78-bf68cccb06d2] - I'm glad, but also quite surprised, to hear that you got hiera-eyaml working on puppet-server.  Based on my experimentation, I don't think this should be possible (yet)", "created": "2014-10-03T15:29:00.000000"}, {"author": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "body": "Sure, have commented on SERVER-32", "created": "2014-10-06T04:42:00.000000"}], "components": [], "created": "2014-10-01T05:30:00.000000", "creator": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1952f361"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnbb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_441108041_*|*_1_*:*_1_*:*_541953351_*|*_10007_*:*_1_*:*_4402663_*|*_3_*:*_1_*:*_13737_*|*_10009_*:*_1_*:*_247935395_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_181076988"}], "description": "After installing I noticed that I'd lost eyaml support as the gem couldn't be found. From what I understand from mentions on the documention (in {{dev_debugging.markdown}}), this is by design as you have to install gems via the provided command so that they are found by JRuby and using JVM-friendly versions where possible.\n\nUsing the puppetserver package installed to CentOS7:\n\n{noformat}\n[root@puppet ~]# ls /usr/share/puppetserver/cli/apps\ngem\n[root@puppet ~]# puppetserver gem install hiera-eyaml\npuppetserver: 'gem' is not a puppetserver command. See 'puppetserver --help'.\n[root@puppet ~]# puppetserver --help\nERROR: No sub-commands found in /var/lib/puppet/cli/apps\n{noformat}\n\nIs it looking in the wrong location for CLI apps, or am I doing it wrong? If I hack in the environment to run the command directly, it seems to work and I get my eyaml support back:\n\n{noformat}\n[root@puppet ~]# JAVA_BIN=java INSTALL_DIR=/usr/share/puppetserver CONFIG=/etc/puppetserver/conf.d /usr/share/puppetserver/cli/apps/gem install hiera-eyaml\n\nFetching: trollop-2.0.gem (100%)\nSuccessfully installed trollop-2.0\nFetching: highline-1.6.21.gem (100%)\nSuccessfully installed highline-1.6.21\nFetching: hiera-eyaml-2.0.3.gem (100%)\nSuccessfully installed hiera-eyaml-2.0.3\n3 gems installed\n{noformat}", "environment": "CentOS 7", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15798", "fixedVersions": ["SERVER 0.3.0"], "id": "15798", "issueType": "Bug", "key": "SERVER-24", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "resolution": "Fixed", "resolutionDate": "2014-10-17T14:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Gem command not working if ~puppet != puppetserver install dir", "timeSpent": "PT0S", "updated": "2015-01-22T16:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Sorry, this is by design, I found it in the doc (https://github.com/puppetlabs/puppet-server/blob/master/documentation/dev_debugging.markdown)", "created": "2014-10-01T06:46:00.000000"}], "components": ["Puppet Server"], "created": "2014-10-01T03:00:00.000000", "creator": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6585fd5a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywk87:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_13528181_*|*_6_*:*_1_*:*_0"}], "description": "The version of {{puppetserver}} distributed on CentOS does not include the path to the Ruby gems in its Ruby load-path. As a result, features like Hiera's deep merging are ignored.\n\nFile:\n{{/etc/puppetserver/conf.d/os-settings.conf}}\n\nSetting:\n{{ruby-load-path}}\n\nCurrent value:\n{{[/usr/lib/ruby/site_ruby/1.8]}}\n\nShould be:\n{{[/usr/lib/ruby/gems/1.8/gems/:/usr/lib/ruby/site_ruby/1.8]}}", "environment": "CentOS 6.5 x86_64\npuppetserver-0.2.1-1.el6.noarch", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17548", "fixedVersions": [], "id": "17548", "issueType": "Bug", "key": "SERVER-23", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "resolution": "Won't Fix", "resolutionDate": "2014-10-01T06:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Ruby load-path doesn't include path to gems", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-09-30T14:34:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f37931"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywupr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_12628182_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1983868862_*|*_10005_*:*_1_*:*_7336722452"}], "description": "We should probably add a submodule for hiera to puppet-server, so hiera can be used.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15516", "fixedVersions": [], "id": "15516", "issueType": "Task", "key": "SERVER-21", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Fix", "resolutionDate": "2015-01-16T14:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add another submodule for hiera", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "[~accountid:557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de] which version of Puppet Server were you using when this happened? \n\nThis sounds like an issue we had in 0.2.0 which is described in SERVER-3. Would it be possible for you to upgrade to Puppet Server 0.2.1, blow away your certificates and try again?", "created": "2014-10-02T12:35:00.000000"}, {"author": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] seems i was using 0.2.0 will upgrade puppetserver version once SEVER-13 will be fixed, or else puppetserver will crash every 5 hours do to many open files\n\ni had a cron job restarting puppet with /etc/init.d/puppetserver restart maybe that's why SERVER-3 matches my case\n\n\nCheers", "created": "2014-10-03T01:51:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Thanks, [~accountid:557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de]. Please let us know of any further issues you have with Puppet Server.", "created": "2014-10-03T11:20:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Also, we have already tagged 0.2.2 and plan on releasing it shortly.", "created": "2014-10-03T11:28:00.000000"}, {"author": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] started to use 0.2.2 it looks good for now, will revert if it happends again\n\n\nCheers", "created": "2014-10-07T12:34:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Duplicate", "created": "2014-10-07T13:30:00.000000"}], "components": [], "created": "2014-09-30T11:54:00.000000", "creator": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46820e1a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywjsv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22357809_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_588213250"}], "description": "Hi All,\n\nafter some time i started to see this in my logs, because of the SERVER-13 issue is keep restarting my puppetserver ,and i started to see this in my logs\n\n  \n        Sep 30 14:08:24 blue-1 puppet-agent[1045]: Could not retrieve catalog from remote server: Server hostname 'puppet-1.subdomain.domain.local' did not match server certificate; expected .subdomain.domain.local\n        Sep 30 14:08:36 blue-1 puppet-agent[1045]: Could not send report: Server hostname 'puppet-1.subdomain.domain.local' did not match server certificate; expected .subdomain.domain.local\n\n\nany ideea?", "environment": "puppet server\ncentos6.5", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16962", "fixedVersions": [], "id": "16962", "issueType": "Bug", "key": "SERVER-20", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "resolution": "Fixed", "resolutionDate": "2014-10-07T13:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "ssl certificate error", "timeSpent": "PT0S", "updated": "2015-01-22T16:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-09-30T10:22:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b2c962c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywup3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_27963836_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_69201250571"}], "description": "The SSL client validator that MRI Ruby Puppet uses for outgoing client connections considers three CA-related settings from puppet.conf -- localcacert, ca_chain_file, and ca_auth_file.  The current implementation of the ssl_context method in Puppet::Server::Config, which essentially implements the replacement SSL client validator for Puppet Server, considers cacert but none of the other three CA-related settings.\n\nPE-6012 (https://github.com/puppetlabs/puppet-server/pull/193) would allow Puppet Server to consider the localcacert instead of the cacert setting but, for backward compatibility, this work should be extended to also consider ca_chain_file and ca_auth_file.\n\nFor more information on the interaction among the settings, see https://github.com/puppetlabs/puppet/blob/master/lib/puppet/ssl/configuration.rb.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16671", "fixedVersions": [], "id": "16671", "issueType": "Bug", "key": "SERVER-19", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SSL Client Validation Should Consider ca_chain_file & ca_auth_file Settings", "timeSpent": "PT0S", "updated": "2016-12-09T15:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "I wasn't sure whether to report this as a Puppet Server bug, but it's certainly an issue to be aware of when deploying it.\n\nThe only thing that's come to mind since, is if it's possible to change the preferred client cipher list either globally within the JVM, or when making requests with Net::HTTP, as it might be possible to remove ciphers relying on DH.", "created": "2014-09-30T01:15:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "Adding the DH parameters works OK, but if the web server is sharing the Puppet server's certificate, adding DH parameters to the same file will cause Puppet Server to fail to start up:\n\n{noformat}\njava.io.IOException: unrecognised object: DH PARAMETERS\n        at org.bouncycastle.openssl.PEMParser.readObject(Unknown Source) ~[puppet-server-release.jar:na]\n        at com.puppetlabs.certificate_authority.CertificateAuthority.pemToObjects(CertificateAuthority.java:391) ~[puppet-server-release.jar:na]\n        at com.puppetlabs.certificate_authority.CertificateAuthority.pemToCerts(CertificateAuthority.java:430) ~[puppet-server-release.jar:na]\n        at puppetlabs.certificate_authority.core$pem__GT_certs$fn__6941.invoke(core.clj:595) ~[na:na]\n        at puppetlabs.certificate_authority.core$pem__GT_certs.invoke(core.clj:594) ~[na:na]\n{noformat}", "created": "2014-09-30T01:44:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Same issue after upgrading to CentOS 6.6 hier.\nDuring the process {{mod_ssl}} was upgraded from version 2.2.15-31 to version 2.2.15-39, here is the changelog:\n\n{noformat}\n* Tue Aug 05 2014 Jan Kaluza <jkaluza@redhat.com> - 2.2.15-39\n- mod_proxy: close client connection if the backend closes connection (#1111410)\n\n* Thu Jul 17 2014 Jan Kaluza <jkaluza@redhat.com> - 2.2.15-38\n- mod_cgid: add security fix for CVE-2014-0231\n- mod_deflate: add security fix for CVE-2014-0118\n- mod_status: add security fix for CVE-2014-0226\n\n* Fri Jun 27 2014 Joe Orton <jorton@redhat.com> - 2.2.15-37\n- mod_ssl: fix SSLCipherSuite (#1035818)\n\n* Mon Jun 23 2014 Jan Kaluza <jkaluza@redhat.com> - 2.2.15-36\n- mod_ssl: Add a wildcard common name match (#1035666)\n- mod_cache: avoid thundering herd (#1094990)\n- mod_cgi: return error code 408 on timeout (#979129)\n\n* Mon Jun 23 2014 Jan Kaluza <jkaluza@redhat.com> - 2.2.15-35\n- mod_proxy_http: cleanup bucket brigade even on error (#991556)\n- add missing Reason-Phrase in HTTP response headers (#1032733)\n- mod_ldap: fix crash in uldap_cache_getattrvals (#1048757)\n\n* Fri Jun 20 2014 Joe Orton <jorton@redhat.com> - 2.2.15-34\n- mod_ssl: prevent use of AECDH (#1035818)\n\n* Fri Jun 20 2014 Joe Orton <jorton@redhat.com> - 2.2.15-33\n- mod_ssl: use 2048-bit RSA key with SHA-256 signature in dummy certificate (#1103115)\n\n* Thu Jun 19 2014 Joe Orton <jorton@redhat.com> - 2.2.15-32\n- mod_ssl: adjust DH temp key selection, prefer larger and up to 8192-bit. (#1071883)\n{noformat}\n\nEven if the issue is not directly related to Puppet Server it can potentially affect any web-based report processors, so it could be interesting to publish some best practices in the documentation.", "created": "2014-10-30T08:04:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "{noformat}\n- mod_ssl: adjust DH temp key selection, prefer larger and up to 8192-bit. (#1071883)\n{noformat}\n\n[That'll be it|https://bugzilla.redhat.com/show_bug.cgi?id=1071883].", "created": "2014-10-30T08:09:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "[~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4] what workaround would you recommend? Running Foreman with a separate certificate signed by the Puppet CA and using custom DH parameters within this certificate, right?", "created": "2014-10-30T08:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "In the next version of Puppet Server (0.4.0, due out very soon) there will be a config setting that can be used to control the ciphers that are considered by the http client:\n\nhttps://github.com/puppetlabs/puppet-server/commit/756368ca2907f44de5857dfe8d9194028f91c6b2\n\nThough I now realize that I haven't yet added that to the docs.\n\nIt does seem like some additional documentation on this issue would be warranted, thanks for the heads up.", "created": "2014-10-30T08:21:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] yes, though rather than generate a new one you can simply copy the existing certificate file, append the custom DH parameters section (copy from the httpd FAQ linked above) and change Apache to use this file.  This way all certificates will remain the same, and you'll avoid the bug where Puppet Server won't start when DH parameters are specified in the cert pem.", "created": "2014-10-30T08:22:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Interesting.  Seems like we should probably look into fixing our tolerance for those DH parameters in the pem file when we parse a pem.  I'll open this ticket back up for triage and maybe we'll create some spin-off tickets from it while we're reviewing it.", "created": "2014-10-30T08:26:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "Yep, tolerance for the DH parameters section would be very useful, thanks.", "created": "2014-10-30T08:28:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Thanks for the infos guys!", "created": "2014-10-30T08:45:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "According to this link, https://rhn.redhat.com/errata/RHSA-2014-1633.html, it appeared that the 1024 bit restriction should have been lifted in the JDK 1.7.0_71 release:\n\n{noformat}\n* The TLS/SSL implementation in OpenJDK previously failed to handle\nDiffie-Hellman (DH) keys with more than 1024 bits. This caused client\napplications using JSSE to fail to establish TLS/SSL connections to servers\nusing larger DH keys during the connection handshake. This update adds\nsupport for DH keys with size up to 2048 bits. (BZ#1148309)\n{noformat}\n\nIt would be good for us to retest this scenario with the 1.7.0_71 release if we haven't already - although a community member via IRC had already reported that moving up to this latest JDK release didn't resolve the issue.", "created": "2014-12-18T10:51:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "I can confirm that neither OpenJDK 1.7.0_71 nor OracleJDK 1.8.0_25 resolve the issue (EL7)", "created": "2015-01-12T11:22:00.000000"}, {"author": "623cfbe1ee1b5a007029bec2", "body": "I'm running puppetserver 1.1.0 against foreman 1.8.2 on apache2 2.4.10 on Debian 8 without issues.  I'm using the stock openjdk-7-jre-headless:amd64 7u79-2.5.5-1~deb8u1.\n\nWould any more details be helpful in determining how/where this is fixed?", "created": "2015-07-12T13:33:00.000000"}, {"author": "557058:750f4af2-1c22-46dd-9477-5385f29f68db", "body": "I just ran into this and \"Exception in thread \"main\" java.io.IOException: unrecognised object: DH PARAMETERS\" is still there.\n\n{{openjdk-8-jre:amd64 8u72-b15-1~bpo8+1}}\n{{ puppetserver                  2.4.0-1puppetlabs1 }}", "created": "2016-05-20T07:43:00.000000"}, {"author": "557058:0ed27eb9-b5e1-444d-bfdd-51cd4c1e32cb", "body": "as a dirty little hack to get around this i added. \nSSLCipherSuite RSA:!EXP:!NULL:+HIGH:+MEDIUM:-LOW\nto the foreman-ssl.conf file. ( and offcourse remember to reload apache2 config. ) \nGot things working, but that enables some weak ciphers.. so you will have to evaluate if this is OK for your environment. ", "created": "2016-08-16T06:55:00.000000"}, {"author": "623c12c5761efb0069ce0608", "body": "Based on http://stackoverflow.com/a/29176597, here is a solution that should survive foreman-installer executions and upgrades - tested on Ubnutu 16 LTS:\n* install libbcprov-java - Bouncycastle provider\n* edit /etc/java-8-openjdk/security/java.security (/etc directory may change depending on the jdk version installed) and insert said provider at the second position - starting around line 69:\n\n{noformat}security.provider.1=sun.security.provider.Sun\nsecurity.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider\nsecurity.provider.3=sun.security.rsa.SunRsaSign\nsecurity.provider.4=sun.security.ec.SunEC\nsecurity.provider.5=com.sun.net.ssl.internal.ssl.Provider\nsecurity.provider.6=com.sun.crypto.provider.SunJCE\nsecurity.provider.7=sun.security.jgss.SunProvider\nsecurity.provider.8=com.sun.security.sasl.Provider\nsecurity.provider.9=org.jcp.xml.dsig.internal.dom.XMLDSigRI\nsecurity.provider.10=sun.security.smartcardio.SunPCSC\n{noformat}\n\nThis makes Bouncycastle JCE provider's pririority higher than the others JDK providers. As it seems to support higher prime sizes, this solves the problem pending a definitive JDK solution. \n\nAs for [~accountid:557058:0ed27eb9-b5e1-444d-bfdd-51cd4c1e32cb] solution, you can make it survive a foreman-installer execution by changing the passenger template like this:\n\n{noformat}\n@@ -202,6 +202,7 @@\n         ssl_verify_client       => 'optional',\n         ssl_options             => '+StdEnvVars +ExportCertData',\n         ssl_verify_depth        => '3',\n+\tssl_cipher\t\t=> 'RSA:!EXP:!NULL:+HIGH:+MEDIUM:-LOW',\n         custom_fragment         => template('foreman/_assets.conf.erb', 'foreman/_ssl_virt_host_include.erb',\n                                             'foreman/_suburi.conf.erb', 'foreman/_keepalive.erb'),\n       }\n{noformat}\n", "created": "2016-10-09T04:15:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Looks like this is solved in Puppet 5 while I could still reproduce it on current Puppet 4.", "created": "2018-03-14T09:40:00.000000"}, {"author": "557058:c9b48d3b-3b16-4fba-80cb-daf19743b953", "body": "Removed from PE known issues 2019.0+", "created": "2018-09-18T10:24:00.000000"}], "components": [], "created": "2014-09-29T15:33:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@ac04770"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyncz3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "That this was fixed was found when reviewing existing known issues in our documentation. Since this appears to have been resolved some time ago this PR includes the removal of it from our known issues: https://github.com/puppetlabs/puppetserver/pull/1815"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_476802970_*|*_5_*:*_1_*:*_1654333736_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_3_*:*_124956871202"}], "description": "From puppet-dev:\n\n{quote}\nThe only hitch I've had was with the Foreman report processor, which\nmakes an HTTPS connection to Apache with mod_ssl.  On new OSes with\nmodern mod_ssl versions (e.g. EL7 or Ubuntu 14.04), the report processor\nfails to make an HTTPS connection from the JVM with the error:\n\n2014-09-26 08:56:09,984 ERROR [puppet-server] Report processor failed:\nCould not send report to Foreman at\nhttps://foreman.example.com/api/reports: Could not generate DH keypair\n[\"sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1287)\", ...]\n\nThis is a well-known problem between JVM clients and recent mod_ssl\nversions, as the DH prime length supported by the JVM is limited.\nAdding the DH parameter limits to the server's certificate worked around\nthe problem.\n\nhttp://httpd.apache.org/docs/current/ssl/ssl_faq.html#javadh\n\nJava 8 worked slightly better in that it accepts 2048 bit parameters,\nbut the default combination is still a problem.  I guess it might affect\nothers using HTTPS from the master.\n{quote}", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "16337", "fixedVersions": ["SERVER 6.0.0"], "id": "16337", "issueType": "Bug", "key": "SERVER-17", "labels": [], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2018-09-20T10:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "'Could not generate DH keypair' when issuing HTTPS requests to certain servers", "timeSpent": "PT0S", "updated": "2018-10-09T13:46:00.000000", "votes": "5", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for the feedback.  The `bootstrap.cfg` file is one that we own, and you're right, it could be ported over to use a consistent format with the conf.d files.  That's a good suggestion.  We'll look into doing that for a future release of Trapperkeeper.\n\nThe logback.xml file is, unfortunately, not one that we have as much control over.  It comes from the standard JVM logback library, and while we'd prefer a different format besides XML, the benefits of that library outweighed the downside of the config format.  Maybe in the future we can write a wrapper that uses our JSON-type config syntax and programmatically configures logback from that.  Agree that that would be a nice improvement, thanks for the feedback!", "created": "2014-09-30T09:56:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I'd like to +1 the suggestion of wrapping the logback library in JSON instead of direct XML. Other than that, sounds like a plan to me.", "created": "2014-09-30T19:49:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "Thank you for filing this issue. We agree it is likely an improvement, but due to other issues demanding precedence, we don't anticipate being able to address this any time soon. As such we are closing this as \"Won't Fix.\" We may revisit it at a later time, and if so will re-open this ticket.", "created": "2017-03-23T16:39:00.000000"}], "components": [], "created": "2014-09-29T15:25:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5d868625"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywjf3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_96207677_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_3_*:*_78186662381"}], "description": "Right now, there are three different syntaxes of configuration files in /etc/puppetserver.\n\nbootstrap.cfg -> Random unknown format\nconf.d/* -> JSON\nlogback.xml -> XML\n\nAll config files should be consistent in their format. JSON preferred.\n\nJSON -> XML transformation may need to be done for logback.xml", "environment": "Any", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16120", "fixedVersions": [], "id": "16120", "issueType": "Improvement", "key": "SERVER-16", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Won't Fix", "resolutionDate": "2017-03-23T16:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "All configuration files should maintain consistency.", "timeSpent": "PT0S", "updated": "2017-03-23T16:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "HUP should result in a graceful shutdown, correct?\n\nWe agree that being able to send a signal to cause reloading of config files would be a valuable feature.  We'll try to get it on the roadmap!\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] ping", "created": "2014-09-30T09:50:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "SIGHUP should be a \"reload my configs\" signal. Absolutely agree this is an important thing, especially given the lengthy startup time.", "created": "2014-09-30T12:43:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c15ada1d81f0069d8e3ba] - This is the ticket about configuration reloading that I mentioned.", "created": "2015-02-04T05:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thinking that this would probably end up being implemented by just stopping and restarting all of the TK services.  We do this in the REPL all the time, so it seems like it might not be that hard to implement", "created": "2015-07-14T10:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We should probably have a TK ticket that expresses that goal more generally (if we don't already).", "created": "2015-07-14T10:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:70121:caffdbd6-f73d-4ae9-9c82-c4badf061584], [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - I linked SERVER-537 to this one.  I had been thinking that we would want to complete that one - basically having Puppet Server cleanup resources from the currently running service - in the same Puppet Server release that would include any TK-level work to support config reloading without a process restart.", "created": "2015-07-15T10:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] good call, thanks for linking.", "created": "2015-07-16T05:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We're tracking this work in the epic SERVER-96, so, closing this as a dupe.", "created": "2016-02-06T08:22:00.000000"}], "components": [], "created": "2014-09-29T15:20:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1260f715"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotin:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_96623555_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_40664746939_*|*_10005_*:*_1_*:*_1985185654"}], "description": "When provided with a HUP signal, the puppet server should not die.\n\nIdeally, it would re-read its configuration files and apply them after cleaning up its external connections. This would prevent the unnecessary interruption of client Puppet runs.\n\nThis is currently possible with Passenger + Apache using the 'graceful' httpd restart.", "environment": "Any", "epicLinkSummary": "Support HUP for faster restart", "estimate": "PT0S", "externalId": "14876", "fixedVersions": [], "id": "14876", "issueType": "Improvement", "key": "SERVER-15", "labels": ["startup-time"], "originalEstimate": "PT0S", "parent": "16343", "parentSummary": "Support HUP for faster restart", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Duplicate", "resolutionDate": "2016-02-06T08:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "The puppet server should not die when provided a HUP signal.", "timeSpent": "PT0S", "updated": "2016-02-06T08:23:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi,\n\nWhat version of lein did you use to build your jar file?  Can you check and see if there are any \".so\" files inside of the jar?  JRuby ships with some .so files for posix compatibility, and we've found that older versions of leiningen (e.g. 2.3.4) do not properly include the .so files in the jar.  Newer versions of leiningen (2.4.3+) fix the issue.", "created": "2014-09-30T09:47:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Hi,\n\nI used the prepackaged uberjar from downloads.puppetlabs.com. I had a chat with the OpenBSD JRuby maintainer and he pointed me to this ticket: https://github.com/jnr/jnr-posix/issues/15  ", "created": "2014-09-30T11:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ah, thanks for the insight.  That does seem like a reasonable possible explanation.  I'll subscribe to that thread and keep an eye on it.\n\nCan you point me to the exact URL where you got the uberjar from, though?  I'd just like to doublecheck the contents to rule out the lein issue we'd seen in the past.", "created": "2014-10-01T09:53:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Sure, here's the tarball that contains the jar file I tried to run: http://downloads.puppetlabs.com/puppet/puppetserver-0.2.0.tar.gz I hope upstream jnr-posix merges the proposed patch so I can continue testing.", "created": "2014-10-01T12:39:00.000000"}, {"author": "5b61153325ea8f2ca147bd04", "body": "The linked issue was closed and [~accountid:623c0da2d32a94006a64964f]'s PR https://github.com/jnr/jnr-posix/pull/36 was merged. It seems like that should resolve this issue. [~accountid:623c0da2d32a94006a64964f] do you know if this issue can be closed as resolved?", "created": "2014-11-16T16:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think we'll have to upgrade Puppet Server to a new version of JRuby/jnr-posix that includes that fix before we can officially close out this ticket.\n\nIt appears to me that the fix was released in jnr-posix 3.0.7:\n\nhttps://github.com/jnr/jnr-posix/commits/jnr-posix-3.0.7\n\nBut the latest release of JRuby is 1.7.16.1, which appears to include jnr-posix 3.0.6:\n\nhttps://github.com/jruby/jruby/blob/1.7.16.1/core/pom.xml#L74-L79\n\nSo, most likely, we will need to wait for JRuby 1.7.17 to be released, and then upgrade Puppet Server to use that.  It does appear that the HEAD of the 1.7 jruby branch has the update:\n\nhttps://github.com/jruby/jruby/commit/cce325d3fc9985588698f227428777a1a5129a33", "created": "2014-11-17T10:37:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Yes, it's \"just\" a matter of waiting for a new JRuby release. I've tried to build a new puppet-server jar with a jruby.jar (based on HEAD) that I already built myself, but my maven/leiningen fu was insufficient.", "created": "2014-11-17T10:43:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Or that's what I thought. I've just built a new uberjar (with jetty as a regular dependency) and jruby bumped to 1.7.17.\n\nI had my ruby-load-path set to whatever my system ruby 2.1 had (as that's the default ruby version on OpenBSD and also what puppet uses on OpenBSD). Then it failed because it couldn't load the .so modules (like date_time). I worked around that by using the '-complete.jar' of jruby.\n\nThen it failed because it couldn't load puppet, I re-installed puppet into the ruby 2.0 site dir and now it fails again with the same error (Cannot determine basic system flavour). It seems that's because 'require \"etc\"' fails with jruby?", "created": "2014-12-11T08:30:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "if you install JRuby 1.7.17 directly (outside of Puppet Server), and run irb/etc, does 'require \"etc\"' fail?", "created": "2014-12-11T09:09:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Hello Christopher,\n\nIndeed it does:\n\nirb(main):001:0> puts $:\n/usr/local/jruby/lib/ruby/1.9/site_ruby\n/usr/local/jruby/lib/ruby/shared\n/usr/local/jruby/lib/ruby/1.9\n=> nil\nirb(main):002:0> require 'etc'\n=> false\nirb(main):003:0>\n\nobsidian:10044 jruby % find . -type f -name etc\\*\n./lib/ruby/shared/ffi/platform/etc.rb.ffi\n./lib/ruby/shared/ffi/platform/x86_64-openbsd/etc.rb\nobsidian:10045 jruby %", "created": "2014-12-11T09:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Well, drat.  We may need to open another JRuby issue then.", "created": "2014-12-11T09:29:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Note however that \"require 'etc'\" doesn't throw a LoadError, but false. So it's already been loaded by jruby.\nCould that be reason of this block failing?\n\n# We can use POSIX user functions\nPuppet.features.add(:posix) do\n  require 'etc'\n  !Etc.getpwuid(0).nil? && Puppet.features.syslog?\nend", "created": "2014-12-11T10:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "What does this return if you run it from plain-ole-jruby 1.7.17 irb?:\n\n    require 'etc'\n    Etc.getpwuid(0)", "created": "2014-12-12T13:18:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "irb(main):001:0> require 'etc'\n=> false\nirb(main):002:0> Etc.getpwuid(0)\n=> #<struct Struct::Passwd name=\"root\", passwd=\"*\", uid=0, gid=0, gecos=\"Charlie &\", dir=\"/root\", shell=\"/bin/ksh\", change=0, uclass=\"daemon\", expire=0>\nirb(main):003:0>\n", "created": "2014-12-12T13:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "hrm.  What about:\n\n{code}\nrequire 'puppet'\nPuppet.features.syslog?\n{code}\n\nOr you could hack up that ruby script that you were referencing to add a few 'puts' statements and then see what gets printed for those things when you try to start Puppet Server?\n\nAs soon as SERVER-204 gets merged you should be able to run 'puppetserver irb' or 'lein irb' to see if you can find differences between what happens with plain-ole-jruby vs. Puppet Server.", "created": "2014-12-12T13:32:00.000000"}, {"author": "623c135e1c7f6a007049e9ad", "body": "I am now seeing the same bug on a Debian Wheezy machine where Puppetserver used to work, until a recent reboot (using Puppet 3.7.4 and Puppetserver 1.0.2).\n\nThis is what I'm seeing in irb:\n\n{code}\n# irb\nirb(main):001:0> require 'puppet'\n=> true\nirb(main):002:0> require 'etc'\n=> false\nirb(main):003:0> Etc.getpwuid(0)\n=> #<struct Struct::Passwd name=\"root\", passwd=\"x\", uid=0, gid=0, gecos=\"root\", dir=\"/root\", shell=\"/bin/bash\">\nirb(main):004:0> Puppet.features.syslog?\n=> true\nirb(main):005:0> Puppet.features.posix?\n=> true\n{code}\n\nIt seems to me, for some weird reason, that `Puppet.features.posix?` is actually never called in `/usr/lib/ruby/vendor_ruby/puppet/feature/base.rb` (line 32).", "created": "2015-03-30T06:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c135e1c7f6a007049e9ad] can you take a look at SERVER-160 and see if that helps?", "created": "2015-03-30T09:40:00.000000"}, {"author": "623c135e1c7f6a007049e9ad", "body": "Actually, it seems I overlooked the differences in the traces\u2026 Here's my full trace in puppetserver.log:\n\n{code}\n2015-03-30 17:44:36,140 INFO  [p.t.s.w.jetty9-core] Removing buggy security provider SunPKCS11-NSS version 1.7\n2015-03-30 17:44:41,342 INFO  [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2015-03-30 17:44:41,349 INFO  [p.t.s.w.jetty9-service] Initializing web server(s).\n2015-03-30 17:44:55,936 ERROR [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:59) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032.invoke(jruby_puppet_agents.clj:39) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7108$send_prime_pool_BANG___7109$fn__7110$fn__7112.invoke(jruby_puppet_agents.clj:116) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) [na:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:167) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyTo(AFn.java:151) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:137) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.invoke(RestFn.java:408) [puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7009$send_agent__7010$fn__7011$agent_fn__7012.invoke(jruby_puppet_agents.clj:35) [na:na]\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1839) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:161) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:132) [puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.doRun(Agent.java:114) [puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.run(Agent.java:163) [puppet-server-release.jar:na]\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_75]\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_75]\n        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]\nCaused by: org.jruby.embed.EvalFailedException: (Error) Cannot determine basic system flavour\n        at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1317) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1310) ~[puppet-server-release.jar:na]\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_75]\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_75]\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_75]\n        at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_75]\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) ~[puppet-server-release.jar:na]\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) ~[puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:164) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762$fn__6763.invoke(jruby_puppet_core.clj:179) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762.invoke(jruby_puppet_core.clj:167) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        ... 24 common frames omitted\nCaused by: org.jruby.exceptions.RaiseException: (Error) Cannot determine basic system flavour\n        at RUBY.(root)(/usr/lib/ruby/vendor_ruby/puppet/feature/base.rb:32) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at RUBY.Puppet(/usr/lib/ruby/vendor_ruby/puppet.rb:75) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(/usr/lib/ruby/vendor_ruby/puppet.rb:29) ~[na:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at RUBY.(root)(file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server.rb:1) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:164) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762$fn__6763.invoke(jruby_puppet_core.clj:179) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762.invoke(jruby_puppet_core.clj:167) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032.invoke(jruby_puppet_agents.clj:39) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7108$send_prime_pool_BANG___7109$fn__7110$fn__7112.invoke(jruby_puppet_agents.clj:116) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) [na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) [na:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7009$send_agent__7010$fn__7011$agent_fn__7012.invoke(jruby_puppet_agents.clj:35) [na:na]\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1839) [puppet-server-release.jar:na]\n2015-03-30 17:44:55,944 ERROR [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Unable to borrow JRuby instance from pool\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6861$validate_instance_from_pool_BANG___6862$fn__6863.invoke(jruby_puppet_core.clj:261) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6861$validate_instance_from_pool_BANG___6862.invoke(jruby_puppet_core.clj:251) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6940$borrow_from_pool__6941$fn__6942.invoke(jruby_puppet_core.clj:297) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6940$borrow_from_pool__6941.invoke(jruby_puppet_core.clj:291) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_service$reify__7245$service_fnk__5259__auto___positional$reify__7256.borrow_instance(jruby_puppet_service.clj:45) ~[na:na]\n        at puppetlabs.services.config.puppet_server_config_core$eval9508$get_puppet_config__9509$fn__9510$fn__9511.invoke(puppet_server_config_core.clj:99) ~[na:na]\n        at puppetlabs.services.config.puppet_server_config_core$eval9508$get_puppet_config__9509$fn__9510.invoke(puppet_server_config_core.clj:99) ~[na:na]\n        at puppetlabs.services.config.puppet_server_config_core$eval9508$get_puppet_config__9509.invoke(puppet_server_config_core.clj:94) ~[na:na]\n        at puppetlabs.services.config.puppet_server_config_service$reify__9535$service_fnk__5259__auto___positional$reify__9546.init(puppet_server_config_service.clj:24) ~[na:na]\n        at puppetlabs.trapperkeeper.services$eval5095$fn__5122$G__5087__5125.invoke(services.clj:12) ~[na:na]\n        at puppetlabs.trapperkeeper.services$eval5095$fn__5122$G__5086__5129.invoke(services.clj:12) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$run_lifecycle_fn_BANG_.invoke(internal.clj:145) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$run_lifecycle_fns.invoke(internal.clj:173) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$build_app_STAR_$reify__5953.init(internal.clj:437) [na:na]\n        at puppetlabs.trapperkeeper.internal$boot_services_STAR_$fn__5965.invoke(internal.clj:463) [na:na]\n        at puppetlabs.trapperkeeper.internal$boot_services_STAR_.invoke(internal.clj:462) [na:na]\n        at puppetlabs.trapperkeeper.core$boot_with_cli_data.invoke(core.clj:113) [na:na]\n        at puppetlabs.trapperkeeper.core$run.invoke(core.clj:144) [na:na]\n        at puppetlabs.trapperkeeper.core$main.doInvoke(core.clj:159) [na:na]\n        at clojure.lang.RestFn.invoke(RestFn.java:457) [puppet-server-release.jar:na]\n        at clojure.lang.Var.invoke(Var.java:427) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:172) [puppet-server-release.jar:na]\n        at clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:617) [puppet-server-release.jar:na]\n        at puppetlabs.trapperkeeper.main$_main.doInvoke(main.clj:7) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.invoke(RestFn.java:457) [puppet-server-release.jar:na]\n        at clojure.lang.Var.invoke(Var.java:427) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:172) [puppet-server-release.jar:na]\n        at clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:617) [puppet-server-release.jar:na]\n        at clojure.main$main_opt.invoke(main.clj:335) [puppet-server-release.jar:na]\n        at clojure.main$main.doInvoke(main.clj:440) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.invoke(RestFn.java:512) [puppet-server-release.jar:na]\n        at clojure.lang.Var.invoke(Var.java:435) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:185) [puppet-server-release.jar:na]\n        at clojure.lang.Var.applyTo(Var.java:532) [puppet-server-release.jar:na]\n        at clojure.main.main(main.java:37) [puppet-server-release.jar:na]\nCaused by: org.jruby.embed.EvalFailedException: (Error) Cannot determine basic system flavour\n        at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1317) ~[puppet-server-release.jar:na]\n        at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1310) ~[puppet-server-release.jar:na]\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_75]\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_75]\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_75]\n        at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_75]\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) ~[puppet-server-release.jar:na]\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) ~[puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:164) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762$fn__6763.invoke(jruby_puppet_core.clj:179) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762.invoke(jruby_puppet_core.clj:167) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032.invoke(jruby_puppet_agents.clj:39) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7108$send_prime_pool_BANG___7109$fn__7110$fn__7112.invoke(jruby_puppet_agents.clj:116) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) ~[na:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:167) [puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyTo(AFn.java:151) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:137) [puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n        at clojure.lang.RestFn.invoke(RestFn.java:408) [puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7009$send_agent__7010$fn__7011$agent_fn__7012.invoke(jruby_puppet_agents.clj:35) ~[na:na]\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1839) ~[puppet-server-release.jar:na]\n        at clojure.lang.AFn.applyToHelper(AFn.java:161) [puppet-server-release.jar:na]\n        at clojure.lang.RestFn.applyTo(RestFn.java:132) [puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.doRun(Agent.java:114) ~[puppet-server-release.jar:na]\n        at clojure.lang.Agent$Action.run(Agent.java:163) ~[puppet-server-release.jar:na]\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_75]\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_75]\n        at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_75]\nCaused by: org.jruby.exceptions.RaiseException: (Error) Cannot determine basic system flavour\n        at RUBY.(root)(/usr/lib/ruby/vendor_ruby/puppet/feature/base.rb:32) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at RUBY.Puppet(/usr/lib/ruby/vendor_ruby/puppet.rb:75) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(/usr/lib/ruby/vendor_ruby/puppet.rb:29) ~[na:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at RUBY.(root)(file:/usr/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server.rb:1) ~[na:na]\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065) ~[puppet-server-release.jar:na]\n        at RUBY.(root)(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n        at RUBY.require(/usr/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:164) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762$fn__6763.invoke(jruby_puppet_core.clj:179) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6761$create_pool_instance_BANG___6762.invoke(jruby_puppet_core.clj:167) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032$fn__7033.invoke(jruby_puppet_agents.clj:54) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7031$prime_pool_BANG___7032.invoke(jruby_puppet_agents.clj:39) ~[na:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7108$send_prime_pool_BANG___7109$fn__7110$fn__7112.invoke(jruby_puppet_agents.clj:116) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:247) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:231) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5861$service_fnk__5259__auto___positional$reify__5866.shutdown_on_error(internal.clj:286) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5783__5817.invoke(internal.clj:255) ~[na:na]\n        at puppetlabs.trapperkeeper.internal$eval5797$fn__5809$G__5782__5826.invoke(internal.clj:255) ~[na:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) ~[puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_agents$eval7009$send_agent__7010$fn__7011$agent_fn__7012.invoke(jruby_puppet_agents.clj:35) ~[na:na]\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1839) ~[puppet-server-release.jar:na]\n2015-03-30 17:44:55,947 INFO  [p.t.internal] Beginning shutdown sequence\n2015-03-30 17:44:55,953 INFO  [p.t.s.w.jetty9-service] Shutting down web server(s).\n2015-03-30 17:44:55,960 INFO  [p.t.internal] Finished shutdown sequence\n{code}", "created": "2015-03-30T09:47:00.000000"}, {"author": "623c135e1c7f6a007049e9ad", "body": "I upgraded to puppet 3.7.5 and puppetserver 1.0.8, and it didn't fix that.", "created": "2015-03-31T07:08:00.000000"}, {"author": "623c135e1c7f6a007049e9ad", "body": "Turns out my problem was caused by either ruby-ffi or ruby-gssapi. Remove ruby-ffi (which also removed ruby-gssapi) fixed the issue.", "created": "2015-03-31T08:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c135e1c7f6a007049e9ad] thanks for the update--can you elaborate a bit?  You are saying you had a ruby-ffi system package (rpm?), and that removing that fixed your issue?", "created": "2015-03-31T09:23:00.000000"}, {"author": "623c135e1c7f6a007049e9ad", "body": "Yes, I had ruby-ffi and ruby-gssapi Debian packages installed, apparently pulled by a foreman update a few days ago.", "created": "2015-03-31T09:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c135e1c7f6a007049e9ad] excellent, thanks.  I think that SERVER-501 is probably where the ruby-ffi issue will end up being tracked.", "created": "2015-03-31T09:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0da2d32a94006a64964f] have you had a chance to try newer versions of Puppet Server to see if this has been resolved for you?", "created": "2015-07-15T03:55:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Hi,\n\nI just tried it again with puppetserver 2.1.1 and it resulted in the same error still. This is now with jruby 1.7.21.", "created": "2015-07-20T16:01:00.000000"}, {"author": "5a8eeac09632fa3592797571", "body": "I just had the same error message (at least the \"Cannot determine basic system flavour\" part) with PE 2015.2, on CentOS 6.\n\nFixed it using {{chmod 01777 /tmp}}, then {{service pe-puppetserver start}} worked. (Permissions on {{/tmp}} had been {{0777}}, apparently the sticky bit is necessary.)", "created": "2015-09-11T14:38:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Finally had the time to look into this again, but alas, still failing.\n\nNow I've been testing with Puppetserver 2.4.0 which seemed to get much further, it complained about not being able to load Facter. So I built the jar and it got further again. However eventually fails again with:\n\n{code}\n2016-05-31 20:18:20,658 INFO  [main] [o.e.j.u.log] Logging initialized @18917ms\n2016-05-31 20:18:27,615 INFO  [async-dispatch-2] [p.s.v.versioned-code-service] No code-id-command set for versioned-code-service. Code-id will be nil.\n2016-05-31 20:18:27,615 INFO  [async-dispatch-2] [p.s.v.versioned-code-service] No code-content-command set for versioned-code-service. Attempting to fetch code content will fail.\n2016-05-31 20:18:27,617 INFO  [async-dispatch-2] [p.t.s.w.jetty9-service] Initializing web server(s).\n2016-05-31 20:18:27,641 INFO  [async-dispatch-2] [p.s.j.jruby-puppet-service] Initializing the JRuby service\n2016-05-31 20:18:27,642 WARN  [async-dispatch-2] [p.s.j.jruby-puppet-service] The 'jruby-puppet.use-legacy-auth-conf' setting is set to 'true'.  Support for the legacy Puppet auth.conf file is deprecated and will be removed in a future release.  Change this setting to 'false' and migrate your authorization rule definitions in the /etc/puppetlabs/puppet/auth.conf file to the /etc/puppetlabs/puppetserver/conf.d/auth.conf file.\n2016-05-31 20:18:27,679 INFO  [clojure-agent-send-pool-0] [p.s.j.jruby-puppet-internal] Creating JRuby instance with id 1.\n2016-05-31 20:18:34,077 ERROR [clojure-agent-send-pool-0] [p.t.internal] shutdown-on-error triggered because of exception!\njava.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19634$prime_pool_BANG___19639$fn__19643.invoke(jruby_puppet_agents.clj:60) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19634$prime_pool_BANG___19639.invoke(jruby_puppet_agents.clj:38) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19832$send_prime_pool_BANG___19837$fn__19838$fn__19840.invoke(jruby_puppet_agents.clj:181) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:366) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:351) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14183$shutdown_service__14188$fn$reify__14190$service_fnk__5299__auto___positional$reify__14195.shutdown_on_error(internal.clj:406) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14113$fn__14125$G__14105__14133.invoke(internal.clj:374) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14113$fn__14125$G__14104__14142.invoke(internal.clj:374) [na:na]\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2494) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2493) [puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19607$send_agent__19612$fn__19613$agent_fn__19614.invoke(jruby_puppet_agents.clj:32) [na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4444.invoke(core.clj:1919) [puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132) [puppet-server-release.jar:na]\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114) [puppet-server-release.jar:na]\n\tat clojure.lang.Agent$Action.run(Agent.java:163) [puppet-server-release.jar:na]\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_72]\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_72]\n\tat java.lang.Thread.run(Thread.java:745) [na:1.8.0_72]\nCaused by: org.jruby.embed.EvalFailedException: (Error) Cannot determine basic system flavour\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:132) ~[puppet-server-release.jar:na]\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1341) ~[puppet-server-release.jar:na]\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1334) ~[puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19193$create_scripting_container__19198$fn__19199.invoke(jruby_puppet_internal.clj:138) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19193$create_scripting_container__19198.invoke(jruby_puppet_internal.clj:127) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19333$create_pool_instance_BANG___19338$fn__19339.invoke(jruby_puppet_internal.clj:203) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19333$create_pool_instance_BANG___19338.invoke(jruby_puppet_internal.clj:186) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19634$prime_pool_BANG___19639$fn__19643.invoke(jruby_puppet_agents.clj:53) ~[na:na]\n\t... 18 common frames omitted\nCaused by: org.jruby.exceptions.RaiseException: (Error) Cannot determine basic system flavour\n\tat RUBY.(root)(/usr/local/lib/ruby/site_ruby/2.2/puppet/feature/base.rb:32) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.(root)(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) ~[na:na]\n\tat RUBY.Puppet(/usr/local/lib/ruby/site_ruby/2.2/puppet.rb:77) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.(root)(/usr/local/lib/ruby/site_ruby/2.2/puppet.rb:33) ~[na:na]\n\tat RUBY.(root)(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.require(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) ~[na:na]\n\tat RUBY.(root)(file:/usr/local/share/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.(root)(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19193$create_scripting_container__19198$fn__19199.invoke(jruby_puppet_internal.clj:138) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19193$create_scripting_container__19198.invoke(jruby_puppet_internal.clj:127) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19333$create_pool_instance_BANG___19338$fn__19339.invoke(jruby_puppet_internal.clj:203) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19333$create_pool_instance_BANG___19338.invoke(jruby_puppet_internal.clj:186) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19634$prime_pool_BANG___19639$fn__19643.invoke(jruby_puppet_agents.clj:53) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19634$prime_pool_BANG___19639.invoke(jruby_puppet_agents.clj:38) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19832$send_prime_pool_BANG___19837$fn__19838$fn__19840.invoke(jruby_puppet_agents.clj:181) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:366) [na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:351) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14183$shutdown_service__14188$fn$reify__14190$service_fnk__5299__auto___positional$reify__14195.shutdown_on_error(internal.clj:406) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14113$fn__14125$G__14105__14133.invoke(internal.clj:374) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14113$fn__14125$G__14104__14142.invoke(internal.clj:374) [na:na]\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2494) [puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2493) [puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19607$send_agent__19612$fn__19613$agent_fn__19614.invoke(jruby_puppet_agents.clj:32) [na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4444.invoke(core.clj:1919) [puppet-server-release.jar:na]\n2016-05-31 20:18:34,082 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\njava.lang.IllegalStateException: Unable to borrow JRuby instance from pool\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19451$borrow_from_pool_BANG__STAR___19456$fn__19457.invoke(jruby_puppet_internal.clj:275) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19451$borrow_from_pool_BANG__STAR___19456.invoke(jruby_puppet_internal.clj:262) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19498$borrow_from_pool_with_timeout__19503$fn__19504.invoke(jruby_puppet_internal.clj:309) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19498$borrow_from_pool_with_timeout__19503.invoke(jruby_puppet_internal.clj:298) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval20520$borrow_from_pool_with_timeout__20525$fn__20526.invoke(jruby_puppet_core.clj:272) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_core$eval20520$borrow_from_pool_with_timeout__20525.invoke(jruby_puppet_core.clj:258) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_service$reify__21114$service_fnk__5299__auto___positional$reify__21125.borrow_instance(jruby_puppet_service.clj:60) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_core$eval24611$get_puppet_config__24616$fn__24617$fn__24618.invoke(puppet_server_config_core.clj:107) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_core$eval24611$get_puppet_config__24616$fn__24617.invoke(puppet_server_config_core.clj:107) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_core$eval24611$get_puppet_config__24616.invoke(puppet_server_config_core.clj:102) ~[na:na]\n\tat puppetlabs.services.config.puppet_server_config_service$reify__24643$service_fnk__5299__auto___positional$reify__24654.init(puppet_server_config_service.clj:24) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval5105$fn__5106$G__5093__5109.invoke(services.clj:8) ~[na:na]\n\tat puppetlabs.trapperkeeper.services$eval5105$fn__5106$G__5092__5113.invoke(services.clj:8) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval13828$run_lifecycle_fn_BANG___13835$fn__13836.invoke(internal.clj:177) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval13828$run_lifecycle_fn_BANG___13835.invoke(internal.clj:160) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval13857$run_lifecycle_fns__13862$fn__13863.invoke(internal.clj:211) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval13857$run_lifecycle_fns__13862.invoke(internal.clj:188) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14328$build_app_STAR___14337$fn$reify__14347.init(internal.clj:561) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14374$boot_services_for_app_STAR__STAR___14381$fn__14382$fn__14384.invoke(internal.clj:587) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14374$boot_services_for_app_STAR__STAR___14381$fn__14382.invoke(internal.clj:586) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14374$boot_services_for_app_STAR__STAR___14381.invoke(internal.clj:580) [na:na]\n\tat clojure.core$partial$fn__4529.invoke(core.clj:2499) [puppet-server-release.jar:na]\n\tat puppetlabs.trapperkeeper.internal$eval13896$initialize_lifecycle_worker__13907$fn__13908$fn__13995$state_machine__11872__auto____13996$fn__13998.invoke(internal.clj:228) [na:na]\n\tat puppetlabs.trapperkeeper.internal$eval13896$initialize_lifecycle_worker__13907$fn__13908$fn__13995$state_machine__11872__auto____13996.invoke(internal.clj:228) [na:na]\n\tat clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:1011) [na:na]\n\tat clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:1015) [na:na]\n\tat clojure.core.async$ioc_alts_BANG_$fn__12040.invoke(async.clj:378) [na:na]\n\tat clojure.core.async$do_alts$fn__11986$fn__11989.invoke(async.clj:247) [na:na]\n\tat clojure.core.async.impl.channels.ManyToManyChannel$fn__6807$fn__6808.invoke(channels.clj:95) [na:na]\n\tat clojure.lang.AFn.run(AFn.java:22) [puppet-server-release.jar:na]\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_72]\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_72]\n\tat java.lang.Thread.run(Thread.java:745) [na:1.8.0_72]\nCaused by: org.jruby.embed.EvalFailedException: (Error) Cannot determine basic system flavour\n\tat org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:132) ~[puppet-server-release.jar:na]\n\tat org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1341) ~[puppet-server-release.jar:na]\n\tat org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1334) ~[puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19193$create_scripting_container__19198$fn__19199.invoke(jruby_puppet_internal.clj:138) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19193$create_scripting_container__19198.invoke(jruby_puppet_internal.clj:127) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19333$create_pool_instance_BANG___19338$fn__19339.invoke(jruby_puppet_internal.clj:203) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19333$create_pool_instance_BANG___19338.invoke(jruby_puppet_internal.clj:186) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19634$prime_pool_BANG___19639$fn__19643.invoke(jruby_puppet_agents.clj:53) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19634$prime_pool_BANG___19639.invoke(jruby_puppet_agents.clj:38) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19832$send_prime_pool_BANG___19837$fn__19838$fn__19840.invoke(jruby_puppet_agents.clj:181) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:366) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:351) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14183$shutdown_service__14188$fn$reify__14190$service_fnk__5299__auto___positional$reify__14195.shutdown_on_error(internal.clj:406) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14113$fn__14125$G__14105__14133.invoke(internal.clj:374) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14113$fn__14125$G__14104__14142.invoke(internal.clj:374) ~[na:na]\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2494) ~[puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2493) ~[puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19607$send_agent__19612$fn__19613$agent_fn__19614.invoke(jruby_puppet_agents.clj:32) ~[na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4444.invoke(core.clj:1919) ~[puppet-server-release.jar:na]\n\tat clojure.lang.AFn.applyToHelper(AFn.java:154) [puppet-server-release.jar:na]\n\tat clojure.lang.RestFn.applyTo(RestFn.java:132) ~[puppet-server-release.jar:na]\n\tat clojure.lang.Agent$Action.doRun(Agent.java:114) ~[puppet-server-release.jar:na]\n\tat clojure.lang.Agent$Action.run(Agent.java:163) ~[puppet-server-release.jar:na]\n\t... 3 common frames omitted\nCaused by: org.jruby.exceptions.RaiseException: (Error) Cannot determine basic system flavour\n\tat RUBY.(root)(/usr/local/lib/ruby/site_ruby/2.2/puppet/feature/base.rb:32) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.(root)(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) ~[na:na]\n\tat RUBY.Puppet(/usr/local/lib/ruby/site_ruby/2.2/puppet.rb:77) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.(root)(/usr/local/lib/ruby/site_ruby/2.2/puppet.rb:33) ~[na:na]\n\tat RUBY.(root)(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.require(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) ~[na:na]\n\tat RUBY.(root)(file:/usr/local/share/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server.rb:1) ~[na:na]\n\tat org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1072) ~[puppet-server-release.jar:na]\n\tat RUBY.(root)(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1) ~[na:na]\n\tat RUBY.require(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19193$create_scripting_container__19198$fn__19199.invoke(jruby_puppet_internal.clj:138) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19193$create_scripting_container__19198.invoke(jruby_puppet_internal.clj:127) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19333$create_pool_instance_BANG___19338$fn__19339.invoke(jruby_puppet_internal.clj:203) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_internal$eval19333$create_pool_instance_BANG___19338.invoke(jruby_puppet_internal.clj:186) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19634$prime_pool_BANG___19639$fn__19643.invoke(jruby_puppet_agents.clj:53) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19634$prime_pool_BANG___19639.invoke(jruby_puppet_agents.clj:38) ~[na:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19832$send_prime_pool_BANG___19837$fn__19838$fn__19840.invoke(jruby_puppet_agents.clj:181) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:366) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:351) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14183$shutdown_service__14188$fn$reify__14190$service_fnk__5299__auto___positional$reify__14195.shutdown_on_error(internal.clj:406) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14113$fn__14125$G__14105__14133.invoke(internal.clj:374) ~[na:na]\n\tat puppetlabs.trapperkeeper.internal$eval14113$fn__14125$G__14104__14142.invoke(internal.clj:374) ~[na:na]\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2494) ~[puppet-server-release.jar:na]\n\tat clojure.core$partial$fn__4527.invoke(core.clj:2493) ~[puppet-server-release.jar:na]\n\tat puppetlabs.services.jruby.jruby_puppet_agents$eval19607$send_agent__19612$fn__19613$agent_fn__19614.invoke(jruby_puppet_agents.clj:32) ~[na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4444.invoke(core.clj:1919) ~[puppet-server-release.jar:na]\n2016-05-31 20:18:34,110 INFO  [main] [p.t.internal] Beginning shutdown sequence\n2016-05-31 20:18:34,138 INFO  [clojure-agent-send-pool-1] [p.s.j.jruby-puppet-agents] Flush request received", "created": "2016-05-31T12:29:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "re: formatting: try using \\{code\\}, before and after your formatted blocks.  and hooray for Yet Another markup language :)\n\nre: the actual issue", "created": "2016-05-31T14:24:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0da2d32a94006a64964f] This is the line in Puppet that results in that error happening:\n\nhttps://github.com/puppetlabs/puppet/blob/3e87b4858f8839ddd19afe43732db097dfb64246/lib/puppet/feature/base.rb#L13\n\nSo the key thing will be that if you are using Puppet Server's {{irb}} as a non-root user, and you do {{Etc.getpwuid(0)}}, and that returns {{nil}}, then we're hosed.\n\nAs for where to go next, I can think of two things:\n\n1. Try commenting out that line and replacing it with just {{true}}, and see if the server runs OK.\n2. We dig into the implementation of {{Etc.getpwuid(0)}} and see if we can narrow down what is causing it to return {{nil}}.\n\nThe fact that you are able to run {{Etc.getpwuid(0)}} in a regular JRuby {{irb}} makes me think that maybe it has something to do with environment variables, because we do some things to try to sanitize the environment for the Puppet Server JRuby, and if there is an environment variable that is necessary for that method to execute properly, then it could be that our filtering of that environment variable is causing the problem.  Maybe you could try creating a shell script that would launch a standalone JRuby interpreter and print out the result of that method, e.g. {{ruby -e \"require 'etc'", "created": "2016-05-31T14:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0da2d32a94006a64964f] also I presume you've already looked into the executable temp dir stuff mentioned in SERVER-160?", "created": "2016-05-31T14:51:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Hi,     \n          \nSo I've created a small script:\n{code}\nenv\njruby -e \"require 'etc'", "created": "2016-06-01T02:19:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "Ok, so the jruby default load path wasn't set, with {{/usr/local/jruby/lib/ruby/2.2/site_ruby}} added it can load {{date}} correctly. However the {{useradd}} still won't load.\n\nIf you like I can setup an OpenBSD kvm guest for you to tinker with?", "created": "2016-06-01T02:51:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "If you could set up a host for us to play with that would be great", "created": "2016-06-01T06:42:00.000000"}, {"author": "623c0da2d32a94006a64964f", "body": "That won't be an issue at all. I'll drop you a mail on your @puppetlabs address with the details. Thanks!", "created": "2016-06-01T06:45:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:836ef76e-8051-48a3-8dc7-005f79695b0e] Is this supposed to be assigned to you?", "created": "2016-06-15T10:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623c0da2d32a94006a64964f] are you still interested in pursuing this?", "created": "2016-07-13T10:07:00.000000"}, {"author": "557058:f3848e45-d328-48b4-adf6-fdddf27e2348", "body": "Hi,\n\nI took over ports maintainership of puppet related stuff from [~accountid:623c0da2d32a94006a64964f] .\nfinally got around to test puppetmaster, esp. since the plain webrick or gunicorn behind nginx\nas I have it currently running with Puppet4 is deprecated ", "created": "2016-10-14T06:46:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi @buzzdeee , thanks for the update.  I hope I can help get to the bottom of this!\n\nThe first couple of points that stand out for me:\n\n* We do not yet support JRuby 9000 (a.k.a. JRuby 9.x.x.x)\n* You should not need an MRI ruby at all in order to run puppetserver\n* Puppet Server (via lein uberjar) will automatically include the only Ruby interpreter that it needs, which is currently JRuby 1.7.26.\n* Having paths from the MRI ruby interpreter (e.g. {{/usr/local/lib/ruby/vendor_ruby/2.3}}) visible to JRuby (e.g., included in the output of `puts $:` under `puppetserver irb`) is likely to cause problems.\n\nGiven the above - I'd definitely *uninstall* any copies of JRuby that you've installed, if possible.  It might also be worth uninstalling the MRI ruby (though that could be useful for debugging, in terms of comparing output from MRI Ruby vs {{puppetserver ruby}}).\n\nIf you do keep the MRI ruby around, we definitely need to figure out how those {{/usr/local/lib/ruby}} dirs are ending up in the {{puppetserver irb}} load path, and get rid of them.\n\nOnce we get to that point, if the server still won't start, we can debug further.  But it's definitely a requirement that Puppet Server have an isolated ruby environment that is separated from the MRI ruby environment that the puppet agent will use.\n\nDoes that make sense?", "created": "2016-10-17T11:47:00.000000"}, {"author": "557058:f3848e45-d328-48b4-adf6-fdddf27e2348", "body": "Hi Chris,\n\nthanks for getting back to me.\n\nThe installed ruby 2.3.X is/was installed as a package. That kind of has to be there, because the following puppet related packages, are installed:\nsebastia@erewon:~> pkg_info | grep -i ruby\n{code}                            \njruby-9.1.5.0       pure-Java implementation of the Ruby language\nruby-2.3.1p2        object oriented script language with threads\nruby23-augeas-0.5.0p3 provider bindings for Augeas\nruby23-deep_merge-1.1.1 recursively merge hashes\nruby23-hiera3-3.2.1p0 simple pluggable hierarchical database\nruby23-json_pure-1.8.2 JSON implementation for Ruby\nruby23-msgpack-0.7.6p0 binary-based efficient object serialization library\nruby23-rgen-0.8.2   framework for Model Driven Software Development\nruby23-shadow-2.5.0p0 module to access shadow passwords\nruby23-stomp-1.4.3p0 Streaming Text Orientated Messaging Protocol (STOMP) client\nsebastia@erewon:~> pkg_info | grep -i puppet    \nmcollective-puppet-agent-1.11.1p0 MCollective agent to manage the Puppet agent\npuppet-4.7.0        centralised configuration management for networks\npuppetdb-4.2.2p1    fast, scalable, and reliable data warehouse for Puppet\npuppetdb-termini-4.2.2p1 PuppetDB terminus plugin\npuppetserver-2.6.0  server automation framework and application\nsebastia@erewon:~> pkg_info | grep -i facter\nfacter-3.4.1p1      collect and display system facts\n{code}\n\njruby package of the list is the only one that is not required, but the others are there, because puppet is installed.\n\nall puppet related stuff, that is kind of ruby based, is built/installed against/with ruby-2.3.\n\nWhen I read this right:\nhttps://docs.puppet.com/puppetserver/2.6/install_from_packages.html#system-requirements\npuppetserver needs puppet-agent, OK, I don't have the \"real\" puppet-agent installed, but all (I guess that's all) components separately, and therefore maybe not the right ruby version as well.\n\nSo, when I first tried to start puppetserver, I ran into trouble starting it up, because it told me that facter-3 is not built with jruby support. So I added the build step to facter build to build the facter.jar and install that.\nThat facter.jar is installed as:\n{code}\n/usr/local/lib/ruby/vendor_ruby/2.3/facter.jar\n{code}\n\nAlso, in /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf I have:\n\n{code}\njruby-puppet: {\n    # Where the puppet-agent dependency places puppet, facter, etc...\n    # Puppet server expects to load Puppet from this location\n    ruby-load-path: [/usr/local/lib/ruby/vendor_ruby/2.3,/usr/local/lib/ruby/site_ruby/2.3,/usr/local/lib/ruby/2.3]\n...\n{code}\n\nThat way, it finds facter, as well as puppet.\nIn the very beginning when I took over from Jasper, the ruby-load-path contained a lot of 2.2 versions, instead of the correct 2.3 versions, and puppetserver told me that it is unable to find/load \"puppet\", i.e. like this:\n\n{code}\nroot@erewon:~# mv /usr/local/lib/ruby/site_ruby/2.3/puppet.rb /usr/local/lib/ruby/site_ruby/2.3/puppet.rb.save \nroot@erewon:~# /usr/local/bin/puppetserver foreground /etc/puppetlabs/puppetserver/bootstrap.cfg -d\n...\n2016-10-17 23:29:25,879 DEBUG [clojure-agent-send-pool-0] [p.s.j.i.jruby-agents] Priming JRubyInstance 1 of 1\n2016-10-17 23:29:25,879 DEBUG [clojure-agent-send-pool-0] [p.s.j.i.jruby-agents] Priming JRubyInstance 1 of 1\n2016-10-17 23:29:25,888 INFO  [clojure-agent-send-pool-0] [p.s.j.i.jruby-internal] Creating JRubyInstance with id 1.\n2016-10-17 23:29:25,888 INFO  [clojure-agent-send-pool-0] [p.s.j.i.jruby-internal] Creating JRubyInstance with id 1.\nLoadError: no such file to load -- puppet\n            require at org/jruby/RubyKernel.java:1040\n            require at /usr/local/lib/ruby/2.3/rubygems/core_ext/kernel_require.rb:55\n             (root) at file:/usr/local/share/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server.rb:1\n            require at org/jruby/RubyKernel.java:1040\n             (root) at /usr/local/lib/ruby/2.3/rubygems/core_ext/kernel_require.rb:1\n            require at /usr/local/lib/ruby/2.3/rubygems/core_ext/kernel_require.rb:55\n            require at org/jruby/RubyKernel.java:1040\n             (root) at file:/usr/local/share/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/master.rb:1\n             (root) at /usr/local/lib/ruby/2.3/rubygems/core_ext/kernel_require.rb:1\n             invoke at jruby_puppet_core.clj:114\n             invoke at jruby_internal.clj:122\n             invoke at jruby_internal.clj:100\n             invoke at jruby_agents.clj:59\n             invoke at jruby_agents.clj:46\n             invoke at jruby_agents.clj:186\n             invoke at internal.clj:389\n             invoke at internal.clj:374\n  shutdown_on_error at internal.clj:429\n             invoke at internal.clj:397\n             invoke at internal.clj:397\n             invoke at core.clj:2494\n             invoke at core.clj:2493\n             invoke at jruby_agents.clj:40\n             invoke at core.clj:1919\n2016-10-17 23:29:32,946 ERROR [async-dispatch-2] [p.t.internal] Error during service init!!!\n...\n{code}\n\nalternatively I can comment out above snippet from the puppetserver.conf file, and I run into the same problem.\n\nSo, based on your recommendations\n * I uninstalled jruby 9.1.X interpreter, but to no avail.\n * I cannot uninstall ruby 2.3, because the installed puppet agent and facter depend on it\n\nThe reason why those ruby paths end up in puppetserver irb $: is the puppetserver.conf setting, but that is necessary, because I have to load the puppet.rb somehow.\n\nSince puppetserver requires the puppet agent to be available, because it loads it, I don't fully understand your last sentence, that the puppet server needs an isolated/independent ruby environment from the puppet agent. When they are separated, how is the puppetserver supposed to locate/find and load the puppet.rb from the puppet agent?\n\nAs I said already before, I tried building all puppet related things against ruby 1.9, so that puppet-server could find the puppet.rb and friends in the 1.9 directories, but then I hit the initial error message Jasper reported.\n\nout of curiousity, I tried to change the ruby-load-path: [/usr/src] \nand throwed the puppet into it:\n\n{code}\ncp -r /usr/local/lib/ruby/site_ruby/2.3/puppet* /usr/src\ncp -r /usr/local/lib/ruby/vendor_ruby/2.3/facter.* /usr/src/\nroot@erewon:~# /usr/local/bin/puppetserver irb                                                      \nirb(main):001:0> puts $:\npuppetserver-lib\n/usr/src\nfile:/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/site_ruby\nfile:/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared\nfile:/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9\n=> nil\n{code}\n\nbut then again, I ran into:\n\n{code}\nFailed to load feature test for posix: can't find user for 0\nCannot run on Microsoft Windows without the win32-process, win32-dir and win32-service gems: Win32API only supported on win32\nPuppet::Error: Cannot determine basic system flavour\n             (root) at /usr/src/puppet/feature/base.rb:32\n            require at org/jruby/RubyKernel.java:1040\n             (root) at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n            require at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54\n             Puppet at /usr/src/puppet.rb:77\n            require at org/jruby/RubyKernel.java:1040\n             (root) at /usr/src/puppet.rb:33\n             (root) at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n            require at org/jruby/RubyKernel.java:1040\n            require at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54\n             (root) at file:/usr/local/share/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server.rb:1\n            require at org/jruby/RubyKernel.java:1040\n             (root) at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n            require at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54\n             invoke at jruby_puppet_core.clj:114\n             invoke at jruby_internal.clj:122\n             invoke at jruby_internal.clj:100\n             invoke at jruby_agents.clj:59\n             invoke at jruby_agents.clj:46\n             invoke at jruby_agents.clj:186\n             invoke at internal.clj:389\n             invoke at internal.clj:374\n  shutdown_on_error at internal.clj:429\n             invoke at internal.clj:397\n             invoke at internal.clj:397\n             invoke at core.clj:2494\n             invoke at core.clj:2493\n             invoke at jruby_agents.clj:40\n             invoke at core.clj:1919\nroot@erewon:~# /usr/local/bin/puppetserver irb\nirb(main):001:0> require 'puppet'\nCannot run on Microsoft Windows without the win32-process, win32-dir and win32-service gems: Win32API only supported on win32\nPuppet::Error: Cannot determine basic system flavour\n        from /usr/src/puppet/feature/base.rb:32:in `(root)'\n        from org/jruby/RubyKernel.java:1040:in `require'\n        from /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1:in `(root)'\n        from /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54:in `require'\n        from /usr/src/puppet.rb:77:in `Puppet'\n        from org/jruby/RubyKernel.java:1040:in `require'\n        from /usr/src/puppet.rb:33:in `(root)'\n        from /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1:in `(root)'\n        from org/jruby/RubyKernel.java:1079:in `eval'\n        from /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54:in `require'\n        from (irb):1:in `evaluate'\n        from org/jruby/RubyKernel.java:1479:in `loop'\n        from org/jruby/RubyKernel.java:1242:in `catch'\n        from org/jruby/RubyKernel.java:1242:in `catch'\n        from org/jruby/RubyKernel.java:1059:in `load'\n        from jruby_core.clj:239:in `invoke'\n        from jruby_core.clj:233:in `invoke'\n        from jruby_core.clj:250:in `invoke'\n        from jruby_core.clj:241:in `invoke'\n        from irb.clj:9:in `invoke'\n        from subcommand.clj:37:in `invoke'\n        from irb.clj:13:in `doInvoke'\n        from core.clj:630:in `invoke'\n        from main.clj:316:in `invoke'\n        from main.clj:421:in `doInvoke'irb(main):002:0> \n^Mirb(main):003:0* \nirb(main):004:0* \nirb(main):005:0* require 'etc'\n=> false\nirb(main):006:0> puts $:\npuppetserver-lib\n/usr/src\nfile:/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/site_ruby\nfile:/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared\nfile:/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9\n=> nil\nirb(main):007:0>\n{code}\n\nWhich I am wildly guessing, that maybe now jruby from the puppet-server uberjar is too old to support OpenBSD?\n\nMaybe I will run against another wall, but where in the puppetserver sources I find the file that tells leiningen about the jruby version it should fetch and put into the uberjar? I did not figured that out yet. Since you don't support that yet, I guess there are good reasons, but I was curious, how far I could get when I get it to use a newer jruby.\n\ncheers,\nSebastian", "created": "2016-10-17T16:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hi [~accountid:557058:f3848e45-d328-48b4-adf6-fdddf27e2348].\n\nSo, I think the issue is that, since you are not using the puppet-agent package (which comes with its own MRI Ruby, and sets up the Ruby load paths in a custom way), you are ending up with all of the puppet/facter/hiera ruby code packaged into your {{/usr/local/lib/ruby/}} directory, which is the same directory that a lot of other MRI-specific stuff will be installed in.\n\nPuppet Server does indeed need access to the puppet/facter/hiera ruby code, but it *will not* run properly if the rest of the MRI ruby stuff is on the load path.  This is one of many reasons why the puppet-agent package tries to manage the ruby environment more tightly for you.\n\nIf the puppet/facter/hiera code is installed into the {{vendor_ruby}} directory of your system MRI ruby, then you *might* be able to get away with including just that path in your {{puppetserver.conf}} and leaving out the other items you had in there (e.g. {{site_ruby}}) - but you will have to be careful about what other packages might end up installing code into that {{vendor_ruby}} directory.  If something that is not compatible with JRuby gets installed in there then it could break things again.\n\nA safer alternative would be to package the puppet/facter/hiera code into an isolated directory, e.g. {{/usr/local/lib/puppet/ruby}}, and then add that to your puppetserver config.  That would obviously require that you find a way to add that same path to the ruby load path when running the puppet agent / facter / hiera CLI tools.\n\nAnother option might be to include a *second copy* of the puppet/facter/hiera ruby code as part of your puppetserver package, and put it under {{/usr/local/lib/puppetserver}} or similar.  This would prevent you from needing to mess with your current puppet agent / MRI 2.3 setup.  FWIW we are probably going to move to a distribution model like this with the official packages at some point in the future, to get rid of the tight coupling and dependency between the puppetserver and puppet-agent packages.\n\nAs to your question about JRuby 9.1.5.0 - we have tested it out fairly thoroughly.  It mostly works, but there are a few bugs, and the performance is much worse than JRuby 1.7.x as of right now.  We're in contact with the JRuby maintainers and they're aware of our issues - hopefully we can work with them to get them resolved in the not-too-distant future.\n\nIf you want to see how the JRuby dependency is brought into the uberjar, run {{lein deps :tree}}.\n\nHope that helps!", "created": "2016-10-17T17:04:00.000000"}, {"author": "557058:f3848e45-d328-48b4-adf6-fdddf27e2348", "body": "Hi Chris,\n\nthanks for the answer, that helps a bit.\n\nlein deps :tree told me that the dependency to the jruby version is fetched from puppetlabs/jruby-utils.\n\nHowever, I downgraded the port of jruby to 1.7.21, and from there, changed it to install jruby 1.7.26,\nwhich should be the same jruby version as in the uberjar.\n\n{code}\nsebastia@erewon:/home/ports/lang/jruby> /usr/local/jruby/bin/jirb \nirb(main):001:0> puts $:\n/usr/local/jruby/lib/ruby/1.9/site_ruby\n/usr/local/jruby/lib/ruby/shared\n/usr/local/jruby/lib/ruby/1.9\n=> nil\nirb(main):002:0> require 'etc'\n=> false\nirb(main):003:0> Etc.getpwuid(0)\n=> #<struct Struct::Passwd name=\"root\", passwd=\"*\", uid=0, gid=0, gecos=\"Superuser Account\", dir=\"/root\", shell=\"/bin/ksh\", change=0, uclass=\"daemon\", expire=0>\nirb(main):004:0> \n{code}\n\nBut doing the same with the puppetserver irb, I get the odd exception, that getpwuid can't find user for 0 as above.\n\n", "created": "2016-10-18T08:06:00.000000"}, {"author": "557058:f3848e45-d328-48b4-adf6-fdddf27e2348", "body": "alright:\n\nediting puppet/feature/base.rb to look like this:\n\n{code}\n# We can use POSIX user functions\nPuppet.features.add(:posix) do\n  #require 'etc'\n  #!Etc.getpwuid(0).nil? && Puppet.features.syslog?\n  true\nend\n{code}\n\nI get over that problem, and after creating quite a bunch of directories, running puppetserver as root, i.e.:\n\n/usr/local/bin/puppetserver foreground /etc/puppetlabs/puppetserver/bootstrap.cfg\n\nI get:\n\n{code}\nroot@erewon:/usr/src# ps auxwww | grep -i puppetserver\nroot     41919  0.0  0.1  1264  2256 p0  I+     4:08PM    0:00.02 bash /usr/local/share/puppetserver//cli/apps/foreground /etc/puppetlabs/puppetserver/bootstrap.cfg\n_puppet  49028  0.0 24.2 2880080 1000204 p0  I+     4:08PM    2:26.78 /usr/local/jdk-1.8.0/bin/java -Xms2g -Xmx2g -XX:MaxPermSize=256m -Dlogappender=STDOUT -cp /usr/local/share/puppetserver//puppet-server-release.jar clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetlabs/puppetserver/conf.d --bootstrap-config /etc/puppetlabs/puppetserver/bootstrap.cfg\nroot     17980  0.0  0.0   204   376 p3  R+     4:11PM    0:00.00 grep -i puppetserver\n{code}\n\nand see this on the console where it runs:\n{code}\nroot@erewon:~# /usr/local/bin/puppetserver foreground /etc/puppetlabs/puppetserver/bootstrap.cfg                                                                                                                                                                                     \nOpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m", "created": "2016-10-18T08:18:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Commenting out that code in the puppet library shouldn't be necessary.\n\nCan you show me the latest output of your {{puts $:}} from the {{puppetserver irb}}?\n\nAlso at one point I had sent Jasper a public key and he was going to give me access to the box where he had this set up, so that I could poke at it a bit.  Is that still on the table?", "created": "2016-10-18T11:39:00.000000"}, {"author": "557058:f3848e45-d328-48b4-adf6-fdddf27e2348", "body": "Hi Chris,\n\nthe latest output of $: looks like:\n\n{code}\nroot@erewon:~# /usr/local/bin/puppetserver irb \nirb(main):001:0> puts $:\npuppetserver-lib\n/usr/src\nfile:/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9/site_ruby\nfile:/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared\nfile:/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/1.9\n=> nil\n{code}\n\nwhere the /usr/src comes from the ruby-load-path entry in /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf:\n\n{code}\nruby-load-path: [/usr/src]\n{code}\n\nThen, with the running puppetserver, trying to run a puppet agent against the puppetserver, I get errors like this:\n\n{code}\nWarning: Unable to fetch my node definition, but the agent run will continue:\nWarning: Error 500 on SERVER: Server Error: Unknown error - mkdir failed\nInfo: Retrieving pluginfacts\nError: /File[/var/puppetlabs/puppet/cache/facts.d]: Failed to generate additional resources using 'eval_generate': Error 500 on SERVER: Internal Server Error: org.jruby.exceptions.RaiseException: (NotImplementedError) stat.st_gid unsupported or native support failed to load\nError: /File[/var/puppetlabs/puppet/cache/facts.d]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///pluginfacts\nInfo: Retrieving plugin\nInfo: Loading facts\nError: Facter: error while resolving custom fact \"java_version\": undefined method `with_env' for Facter::Util::Resolution:Class\nError: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Unknown error - mkdir failed\nWarning: Not using cache on failed catalog\nError: Could not retrieve catalog", "created": "2016-10-19T00:39:00.000000"}, {"author": "557058:f3848e45-d328-48b4-adf6-fdddf27e2348", "body": "alright, after rebuilding the host, I figured I was wrong with the output of puppetserver irb and Etc.getpwuid(0)\n\nWhen I run puppetserver irb as root, I get:\n\n{code}\nroot@erewon:~# /usr/local/bin/puppetserver irb                                                                                                                                                                                                 \nirb(main):001:0> require 'etc'\n=> false\nirb(main):002:0> Etc.getpwuid(0)\n=> nil\n{code}\n\nrunning as normal user I get:\n\n{code}\nsebastia@erewon:~> /usr/local/bin/puppetserver irb\nirb(main):001:0> require 'etc'\n=> false\nirb(main):002:0> Etc.getpwuid(0)\nArgumentError: can't find user for 0\n        from org/jruby/ext/etc/RubyEtc.java:126:in `getpwuid'\n        from (irb):2:in `evaluate'\n        from org/jruby/RubyKernel.java:1079:in `eval'\n        from org/jruby/RubyKernel.java:1479:in `loop'\n        from org/jruby/RubyKernel.java:1242:in `catch'\n        from org/jruby/RubyKernel.java:1242:in `catch'\n        from /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/irb:17:in `(root)'\n        from org/jruby/RubyKernel.java:1059:in `load'\n        from -e:1:in `(root)'\n        from jruby_core.clj:239:in `invoke'\n        from jruby_core.clj:233:in `invoke'\n        from jruby_core.clj:250:in `invoke'\n        from jruby_core.clj:241:in `invoke'\n        from irb.clj:9:in `invoke'\n        from subcommand.clj:37:in `invoke'\n        from irb.clj:13:in `doInvoke'\n        from core.clj:630:in `invoke'\n        from main.clj:316:in `invoke'\n        from main.clj:421:in `doInvoke'\nirb(main):003:0> Etc.getpwuid(1000)\n=> nil\nirb(main):004:0>\n{code}\n\nso trying to resolve my own UID, I get nil back, trying to resolve others UIDs, I get this exception. Also when root tries to evaluate a UID that is not himself, the exception happens.", "created": "2016-10-19T04:31:00.000000"}, {"author": "557058:f3848e45-d328-48b4-adf6-fdddf27e2348", "body": "What I just looked at the patches to the jruby that is available as packge:\n\nhttp://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/lang/jruby/patches/?hideattic=1#dirlist\n\nMaybe one of those patches makes the difference.", "created": "2016-10-19T05:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I logged into [~accountid:557058:f3848e45-d328-48b4-adf6-fdddf27e2348]'s machine today and poked around for a few minutes.  I haven't quite gotten to the bottom of this yet, but I have some additional clues.\n\nThe main thing I'm trying to sort out is why the line {{Etc.getpwuid(0)}} executes successfully in the version of jruby9k/irb that is installed on the system, but throws an error when run via the {{puppetserver irb}} command.  The difference seems to have something to do with how the {{POSIX}} subsystem gets initialized between the two JRubies.  Using some evil language interop voodoo, you can see these objects in an {{irb}} session by doing this:\n\n{code}\nposix = JRuby.runtime.getPosix\n{code}\n\nUnfortunately this returns an instance of {{LazyPosix}}, which is an opaque wrapper around the actual {{POSIX}} implementation that we care about.  To find the inner one, we need to look at [the value of this private field in the LazyPosix class|https://github.com/jnr/jnr-posix/blob/jnr-posix-3.0.29/src/main/java/jnr/posix/LazyPOSIX.java#L24].  Here's the evil voodoo for achieving that:\n\n{code}\nposix_field = posix.java_class.declared_field :posix\n# make it accessible, or we won't be able to read it, because it's private\nposix_field.accessible = true\nwrapped_posix = posix_field.value(posix)\n{code}\n\nAt this point we can observe a difference between the system JRuby and the {{puppetserver irb}} JRuby: the system JRuby shows an instance of {{jnr.posix.CheckedPOSIX}}, while the {{puppetserver}} JRuby is showing an instance of {{jnr.posix.JavaPOSIX}}.  This is almost certainly a result of [these two lines of code in {{jnr.posix.POSIXFactory}}|https://github.com/jnr/jnr-posix/blob/jnr-posix-3.0.29/src/main/java/jnr/posix/POSIXFactory.java#L90-L91].  There is [some exception handling just below that|https://github.com/jnr/jnr-posix/blob/jnr-posix-3.0.29/src/main/java/jnr/posix/POSIXFactory.java#L100-L104] where you can see how it might be swallowing an error on the attempt to create the \"Native\" POSIX, and falling back to a pure Java implementation below.\n\nThat led me to try to call the [{{loadOpenBSDPOSIX}} method|https://github.com/jnr/jnr-posix/blob/jnr-posix-3.0.29/src/main/java/jnr/posix/POSIXFactory.java#L127] directly, via:\n\n{code}\nhandler_field = posix.java_class.declared_field :handler\nhandler_field.accessible = true\nh = handler_field.value(posix)\njava_import 'jnr.posix.POSIXFactory'\nPOSIXFactory.loadOpenBSDPOSIX(h)\n{code}\n\nDoing this on the system JRuby worked fine.  Doing it on the {{puppetserver}} JRuby did indeed throw an exception (which would be swallowed by the lines linked to above).  The exception looks like this:\n\n{code}\nirb(main):067:0> POSIXFactory.loadOpenBSDPOSIX(h)\nJava::JavaLang::NoClassDefFoundError: Could not initialize class jnr.posix.POSIXFactory$DefaultLibCProvider$SingletonHolder\n        from jnr.posix.POSIXFactory$DefaultLibCProvider.getLibC(jnr/posix/POSIXFactory.java:283)\n        from jnr.posix.BaseNativePOSIX.<init>(jnr/posix/BaseNativePOSIX.java:36)\n        from jnr.posix.OpenBSDPOSIX.<init>(jnr/posix/OpenBSDPOSIX.java:42)\n        from jnr.posix.POSIXFactory.loadOpenBSDPOSIX(jnr/posix/POSIXFactory.java:159)\n        from java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:498)\n        from RUBY.evaluate((irb):67)\n        from org.jruby.RubyKernel.eval(org/jruby/RubyKernel.java:1079)\n        from org.jruby.RubyKernel.loop(org/jruby/RubyKernel.java:1479)\n        from org.jruby.RubyKernel.catch(org/jruby/RubyKernel.java:1242)\n        from org.jruby.RubyKernel.catch(org/jruby/RubyKernel.java:1242)\n        from RUBY.(root)(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/bin/irb:17)\n        from org.jruby.RubyKernel.load(org/jruby/RubyKernel.java:1059)\n        from RUBY.(root)(-e:1)\n        from java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:498)\n        from clojure.lang.Reflector.invokeMatchingMethod(clojure/lang/Reflector.java:93)\n        from clojure.lang.Reflector.invokeInstanceMethod(clojure/lang/Reflector.java:28)\n... 13 levels...\n        from puppetlabs.puppetserver.cli.irb$_main.doInvoke(puppetlabs/puppetserver/cli/irb.clj:13)\n        from clojure.lang.RestFn.invoke(clojure/lang/RestFn.java:436)\n        from clojure.lang.Var.invoke(clojure/lang/Var.java:388)\n        from clojure.lang.AFn.applyToHelper(clojure/lang/AFn.java:160)\n        from clojure.lang.Var.applyTo(clojure/lang/Var.java:700)\n        from clojure.core$apply.invoke(core.clj:630)\n        from clojure.core$apply.invoke(clojure/core.clj:630)\n        from clojure.main$main_opt.invoke(main.clj:316)\n        from clojure.main$main_opt.invoke(clojure/main.clj:316)\n        from clojure.main$main.doInvoke(main.clj:421)\n        from clojure.main$main.doInvoke(clojure/main.clj:421)\n        from clojure.lang.RestFn.invoke(clojure/lang/RestFn.java:482)\n        from clojure.lang.Var.invoke(clojure/lang/Var.java:401)\n        from clojure.lang.AFn.applyToHelper(clojure/lang/AFn.java:171)\n        from clojure.lang.Var.applyTo(clojure/lang/Var.java:700)\n        from clojure.main.main(clojure/main.java:37)irb(main):068:0> POSIXFactory.loadOpenBSDPOSIX(h)\nJava::JavaLang::NoClassDefFoundError: Could not initialize class jnr.posix.POSIXFactory$DefaultLibCProvider$SingletonHolder\n...\n{code}\n\nNext step is to investigate where that class would be defined and see if we can determine why it seems to be on the classpath in the system JRuby but not in the {{puppetserver}} JRuby.", "created": "2016-10-31T15:00:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:f3848e45-d328-48b4-adf6-fdddf27e2348] a couple of small things that might help us debug:\n\n* Install 'unzip' on the server so we can look at the contents of the jar file - I'm not sure how to install packages or whether you wanted me messing with things like that.\n* Downgrade the system JRuby to the same version as the one that ships with puppetserver, just to reduce the number of variables.", "created": "2016-10-31T15:32:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I think I may have found a big clue.  In the system JRuby, this path exists:\n\n{{/usr/local/jruby/lib/jni/x86_64-OpenBSD/libjffi-1.2.so}}\n\nHowever, bundled inside of the puppetserver jar, we have this:\n\n{code}\n$ unzip -l target/puppet-server-release.jar |grep \".so$\"                                 2:32:47 PM\n    86363  2012-08-13 16:36   jni/arm-Linux/libjffi-1.2.so\n    80909  2012-09-13 05:04   jni/i386-Linux/libjffi-1.2.so\n    55724  2012-09-13 21:44   jni/i386-SunOS/libjffi-1.2.so\n   132742  2014-11-06 08:59   jni/ppc64-Linux/libjffi-1.2.so\n   116541  2014-11-06 06:41   jni/ppc64le-Linux/libjffi-1.2.so\n    63184  2012-09-18 10:45   jni/sparcv9-SunOS/libjffi-1.2.so\n    83762  2012-08-04 04:16   jni/x86_64-FreeBSD/libjffi-1.2.so\n    90382  2012-09-13 05:38   jni/x86_64-Linux/libjffi-1.2.so\n   138344  2012-09-13 21:50   jni/x86_64-SunOS/libjffi-1.2.so\n{code}\n\nSo there doesn't appear to be an ffi {{.so}} file in our jar for OpenBSD.  Perhaps we need a newer version of some dependency in the JRuby hierarchy... investigating.", "created": "2016-10-31T15:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We get those shared libraries, which we include in our jar file, from the maven artifact produced by this project:\n\nhttps://github.com/jnr/jffi\n\nThe version we're using, {{1.2.12}}, doesn't include an OpenBSD version.  I see some comments about OpenBSD support scattered throughout the source files, and I presume this is the same project that is being used to build the {{.so}} file that is used in your system JRuby, so this seems like it's probably just some kind of (hopefully trivial) packaging issue on their side.\n\nThere's only one release of this artifact that is newer than the one w'ere shipping", "created": "2016-10-31T15:52:00.000000"}, {"author": "557058:f3848e45-d328-48b4-adf6-fdddf27e2348", "body": "feel free to install any packages, if you think it's too messed up, let me know and I can wipe the whole box, and reinstall from scratch.\n\n{{sudo pkg_add -i unzip}}\n\nis done, if you need more, see here what's there:\nhttp://ftp.hostserver.de/pub/OpenBSD/snapshots/packages/amd64/\n\nor \n\n{{cd /home/ports\nmake search key=<keyword>}}\n\n\nTo see how the system jruby is built, you can:\n\n{{cd /home/ports/lang/jruby}}\n\nand peek at the {{Makefile}} as well as the {{patches/}} subdirectory.\n\nis the downgrade of the jruby still necessary?", "created": "2016-11-01T04:28:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:f3848e45-d328-48b4-adf6-fdddf27e2348] that missing {{.so}} file seems like the likely culprit.  If you're satisfied to wait and see what happens with that then we can hold off on downgrading the system JRuby.\n\nIn that case, our options are basically:\n\n1. Wait and see what happens on the github issue for jffi\n2. Attempt to file a PR against jffi that fixes the packaging issue for OpenBSD, or\n3. Unpack the puppetserver jar, copy the {{.so}} file from {{/usr/local}} into the correct location, re-zip the jar file, and see if that works.", "created": "2016-11-01T08:12:00.000000"}, {"author": "557058:f3848e45-d328-48b4-adf6-fdddf27e2348", "body": "to 1) I subscribed to that jffi issue as well, hope there will soon be some feedback\nto 3) I tried as you suggested, unzipped, and copied that .so file into the puppet-server-release.jar, and voila:\n\n{{root@erewon:/tmp/TEST# /usr/local/bin/puppetserver irb \nirb(main):001:0> require 'etc'\n=> false\nirb(main):002:0> Etc.getpwuid(0)\n=> #<struct Struct::Passwd name=\"root\", passwd=\"*\", uid=0, gid=0, gecos=\"Superuser Account\", dir=\"/root\", shell=\"/bin/ksh\", change=0, uclass=\"daemon\", expire=0>\n}}\n\nand after re-adding the /usr/src to the gem load path, and fixing some permissions under /var/puppetlabs/server I got:\n\n{{root@erewon:/tmp/TEST# /usr/local/bin/puppetserver foreground /etc/puppetlabs/puppetserver/bootstrap.cfg                                \nOpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m", "created": "2016-11-01T16:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Awesome, very glad to hear that that worked!  Yeah let's see what happens with the upstream ticket.  If it doesn't get any attention soon and you want to nag me here, I can try to either help recommend what a PR might look like or try to eventually carve out some time to file one.", "created": "2016-11-01T16:44:00.000000"}, {"author": "623e7637a1d81f0069da21a5", "body": "meanwhile quite some time ago, upstream jffi added OpenBSD binaries for amd64 as well as i386.\nHowever, currently testing puppetserver 5.1.3, I still see that the contained jffi doesn't yet have the updated.\n\nin the puppetserver sources lein deps :tree shows me it's pulled in from the puppetlabs/jruby-deps, so I guess it should be easily fixable there.  it currently has jffi 1.2.12, 1.2.16 is the current latest.\n\nI built the uberjar from source, extracted it, copied the binary file from jffi 1.2.16 into the uberjar, zipped it again, and for now, it seems to do the trick.", "created": "2017-11-03T02:47:00.000000"}, {"author": "623e7637a1d81f0069da21a5", "body": "damnit, using hiera-eyaml, I run into issues:\n\n2017-11-03 04:58:43,053 ERROR [qtp1051060609-262] [puppetserver] Puppet Server Error: Evaluation Error: Error while evaluating a Function Call, PKCS7[Method: 112, Reason: -1] at /etc/puppetlabs/code/environm\nents/production/modules/accounts/manifests/init.pp:41:22 on node voyager.l00-bugdead-prods.de\norg/jruby/ext/openssl/PKCS7.java:644:in `decrypt'\n/var/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/encryptors/pkcs7.rb:55:in `decrypt'\n/var/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/encrypted_tokens.rb:15:in `encrypted_value'\n/var/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/encrypted_tokens.rb:80:in `create_enc_token'\n/var/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/encrypted_tokens.rb:100:in `create_token'\n/var/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/encrypted_tokens.rb:90:in `create_token'\n/var/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/parser.rb:71:in `parse_scanner'\n/var/puppetlabs/server/data/puppetserver/jruby-gems/gems/hiera-eyaml-2.1.0/lib/hiera/backend/eyaml/parser/parser.rb:36:in `parse'\n/usr/src/puppet/pops/loader/../../../puppet/functions/eyaml_lookup_key.rb:85:in `decrypt'\n/usr/src/puppet/pops/loader/../../../puppet/functions/eyaml_lookup_key.rb:65:in `decrypt_value'\n/usr/src/puppet/pops/loader/../../../puppet/functions/eyaml_lookup_key.rb:40:in `eyaml_lookup_key'\n\n\ngoing to try hiera-eyaml-gpg backend\nUPDATE: after switching my setup to use hiera-eyaml-gpg, I actually had a successful puppet run against that puppetmaster now.", "created": "2017-11-03T04:19:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "It looks like the current work required for this ticket is to update our version of jffi and/or jruby-deps. We're currently working on taking up JRuby 9k and I believe that work will fix this. Keeping this open to validate that assumption.", "created": "2018-02-14T11:31:00.000000"}, {"author": "557058:2249d8e6-5f8c-489f-942b-1c2739792d34", "body": "This should be fixed when using 9k and in all builds of Puppet 6. Let us know if there's still issues on OpenBSD.", "created": "2018-09-20T10:06:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:104b5720-714d-4539-b455-df472251ec89] please add release notes for this issue if needed, thanks!", "created": "2018-09-20T10:24:00.000000"}], "components": [], "created": "2014-09-27T13:01:00.000000", "creator": "623c0da2d32a94006a64964f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@720dfe0b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywixr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Known Issue"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When updating the release notes for 6.0.0 the status of this was reviewed and we realized this should be resolved. The update to remove this from our documentation is here: https://github.com/puppetlabs/puppetserver/pull/1815"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_3_*:*_4888698384_*|*_5_*:*_1_*:*_1654767565_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1983479325_*|*_10005_*:*_3_*:*_118742952111"}], "description": "Running puppetserver 0.2.0 with:\n\njava -cp /usr/local/share/puppetserver/puppet-server-release.jar clojure.main -m puppetlabs.trapperkeeper.main services --config /etc/puppetserver/conf.d/ -b /etc/puppetserver/bootstrap.cfg\n\nresults in:\n\nCannot run on Microsoft Windows without the win32-process, win32-dir and win32-service gems: Win32API only supported on win32\nPuppet::Error: Cannot determine basic system flavour\n             (root) at /usr/local/lib/ruby/site_ruby/2.0/puppet/feature/base.rb:32\n            require at org/jruby/RubyKernel.java:1065\n             (root) at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n            require at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55\n             Puppet at /usr/local/lib/ruby/site_ruby/2.0/puppet.rb:75\n            require at org/jruby/RubyKernel.java:1065\n             (root) at /usr/local/lib/ruby/site_ruby/2.0/puppet.rb:29\n             (root) at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1\n            require at org/jruby/RubyKernel.java:1065\n            require at /usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55\n             (root) at file:/usr/local/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:1\n             invoke at jruby_puppet_core.clj:118\n             invoke at jruby_puppet_core.clj:131\n             invoke at jruby_puppet_core.clj:121\n             invoke at jruby_puppet_core.clj:222\n             invoke at jruby_puppet_core.clj:210\n             invoke at jruby_puppet_service.clj:29\n             invoke at internal.clj:246\n             invoke at internal.clj:230\n  shutdown_on_error at internal.clj:285\n             invoke at internal.clj:254\n             invoke at internal.clj:254\n             invoke at core.clj:619\n           doInvoke at core.clj:2396\n             invoke at jruby_puppet_service.clj:28\n             invoke at core.clj:1836\nException in thread \"main\" java.lang.IllegalStateException: There was a problem adding a JRubyPuppet instance to the pool.\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6471$prime_pools_BANG___6472$fn__6473.invoke(jruby_puppet_core.clj:228)                                                                                        [103/249]\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6471$prime_pools_BANG___6472.invoke(jruby_puppet_core.clj:210)\n        at puppetlabs.services.jruby.jruby_puppet_service$reify__6636$service_fnk__5254__auto___positional$reify__6647$fn__6648$fn__6649.invoke(jruby_puppet_service.clj:29)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230)\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285)\n        at puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254)\n        at puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254)\n        at clojure.lang.AFn.applyToHelper(AFn.java:167)\n        at clojure.lang.AFn.applyTo(AFn.java:151)\n        at clojure.core$apply.invoke(core.clj:619)\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396)\n        at clojure.lang.RestFn.invoke(RestFn.java:421)\n        at puppetlabs.services.jruby.jruby_puppet_service$reify__6636$service_fnk__5254__auto___positional$reify__6647$fn__6648.invoke(jruby_puppet_service.clj:28)\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836)\n        at clojure.lang.AFn.call(AFn.java:18)\n        at java.util.concurrent.FutureTask.run(FutureTask.java:262)\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)\n        at java.lang.Thread.run(Thread.java:745)\nCaused by: org.jruby.embed.EvalFailedException: (Error) Cannot determine basic system flavour\n        at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:133)\n        at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1317)\n        at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1310)\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n        at java.lang.reflect.Method.invoke(Method.java:606)\n        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)\n        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:118)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6346$create_jruby_instance__6347$fn__6348.invoke(jruby_puppet_core.clj:131)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6346$create_jruby_instance__6347.invoke(jruby_puppet_core.clj:121)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6471$prime_pools_BANG___6472$fn__6473.invoke(jruby_puppet_core.clj:222)\n        ... 19 more\nCaused by: org.jruby.exceptions.RaiseException: (Error) Cannot determine basic system flavour\n        at RUBY.(root)(/usr/local/lib/ruby/site_ruby/2.0/puppet/feature/base.rb:32)\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n        at RUBY.(root)(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n        at RUBY.require(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55)\n        at RUBY.Puppet(/usr/local/lib/ruby/site_ruby/2.0/puppet.rb:75)\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n        at RUBY.(root)(/usr/local/lib/ruby/site_ruby/2.0/puppet.rb:29)\n        at RUBY.(root)(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1)\n        at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1065)\n        at RUBY.require(/usr/local/share/puppetserver/puppet-server-release.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55)\n        at RUBY.(root)(file:/usr/local/share/puppetserver/puppet-server-release.jar!/puppet-server-lib/puppet/server/master.rb:1)\n        at puppetlabs.services.jruby.jruby_puppet_core$create_scripting_container.invoke(jruby_puppet_core.clj:118)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6346$create_jruby_instance__6347$fn__6348.invoke(jruby_puppet_core.clj:131)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6346$create_jruby_instance__6347.invoke(jruby_puppet_core.clj:121)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6471$prime_pools_BANG___6472$fn__6473.invoke(jruby_puppet_core.clj:222)\n        at puppetlabs.services.jruby.jruby_puppet_core$eval6471$prime_pools_BANG___6472.invoke(jruby_puppet_core.clj:210)\n        at puppetlabs.services.jruby.jruby_puppet_service$reify__6636$service_fnk__5254__auto___positional$reify__6647$fn__6648$fn__6649.invoke(jruby_puppet_service.clj:29)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230)\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285)\n        at puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254)\n        at puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254)\n        at clojure.core$apply.invoke(core.clj:619)\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396)\n        at puppetlabs.services.jruby.jruby_puppet_service$reify__6636$service_fnk__5254__auto___positional$reify__6647$fn__6648.invoke(jruby_puppet_service.clj:28)\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836)\n\n\nHaving a quick look at puppet/feature/base.rb it seems that Puppet suddenly no longer recognizes OpenBSD as having the 'posix' feature? Running the Ruby puppetmaster on the same machine works.", "environment": "OpenBSD 5.6, Puppet 3.7.1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16961", "fixedVersions": ["SERVER 6.0.0"], "id": "16961", "issueType": "Bug", "key": "SERVER-14", "labels": ["community"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c0da2d32a94006a64964f", "resolution": "Fixed", "resolutionDate": "2018-09-20T10:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "\"Puppet::Error: Cannot determine basic system flavour\" on OpenBSD", "timeSpent": "PT0S", "updated": "2018-10-09T13:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6", "attachments": [{"attacher": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "created": "2014-09-30T07:43:00.000000", "name": "error_trace.txt", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10927"}, {"attacher": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "created": "2014-09-30T15:16:00.000000", "name": "openfiles.PNG", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11175"}, {"attacher": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "created": "2014-10-01T02:30:00.000000", "name": "openfiles2.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10556"}, {"attacher": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "created": "2014-10-07T02:11:00.000000", "name": "openfiles3.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11253"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Thanks for the report", "created": "2014-09-29T14:28:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "I have exactly the same error. After about 5 hours calls to my ENC (Foreman) stop working due to \"too many open files\" and puppetserver fills its log until the disk is full. A manual restart sorts it out.\n\nI've included a trace of the errors, hope it helps.", "created": "2014-09-30T07:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Can anyone who has been experiencing this issue let me know what your `ulimit` values for open files are?  And does increasing that value work as a temporary workaround until we can get a proper fix in place?", "created": "2014-09-30T09:34:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "The default on CentOS is 1024, that's what I use. I don't see any reason why it wouldn't work as a workaround, but I prefer to restart the service every now and then instead.", "created": "2014-09-30T09:41:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Fair enough!  Mostly I'm trying to determine whether this is an issue of \"we open a large number of file handles, but they all get properly closed eventually, so increasing the ulimit might be a reasonable workaround\" vs. \"we are opening an ever-increasing number of file handles and eventually will blow out your ulimit no matter what\".  But we can play around with that on our end as soon as we get a chance to start working on this.", "created": "2014-09-30T09:59:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Alright, for the sake of debugging I increased the limit to 4096 :)", "created": "2014-09-30T10:03:00.000000"}, {"author": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "body": "My limit is 10000 files and still dose not help, increased from 8k\n\n\nCheers", "created": "2014-09-30T11:07:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "My Nagios is monitoring the evolution of the files opened by the puppet user over night, I'll post the graph tomorrow, but I suspect the number of open files is increasing indefinitely.", "created": "2014-09-30T11:25:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Cool, thanks, that helps narrow it down.", "created": "2014-09-30T12:21:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Current state after 4 hours, with 56 nodes", "created": "2014-09-30T15:16:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Hmm, I think I see a trend in that graph.  :)\n\nThanks [~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0].", "created": "2014-09-30T15:20:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Doesn't get any better, halfway to my current ulimit (20480).\n\nSuch a shame, a technology called Clojure which doesn't even cloje files! ", "created": "2014-10-01T02:30:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks so much, [~accountid:557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de] and [~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0], for your help in tracking this down so far.  I've started investigating this and have been able to reproduce the problem.  The Puppet Server is leaking file descriptors on each HTTP request submitted to a report processor during an agent run.  In my case, my report processor was puppetdb and I noticed about 15 FDs being leaked per agent run.  I'll continue investigating today and hope to learn more soon.  Given the leak, I don't believe that bumping the ulimit up is a sufficient long-term workaround.  I think we have what we need for now to make progress on our end.  Thanks again for all of your efforts and background info so far.", "created": "2014-10-01T10:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "We've identified a defect in the http client library that Puppet Server uses to make HTTP requests to report processors.  The defect caused the file descriptor leak.  See TK-18 (https://puppet.atlassian.net/browse/TK-88) and the associated PR (https://github.com/puppetlabs/clj-http-client/pull/18).\n\nWith a locally patched version of this client library in place, I was no longer able to observe the file descriptor leak across many agent run iterations against a Puppet Server configured to send reports to PuppetDB.\n\nOnce the PR is approved and a new http client library released, we'll need to do a new release of Puppet Server in order to roll out this change for you to test this change from packages.  I'll provide more updates as we make further progress.", "created": "2014-10-01T14:40:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0] [~accountid:557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de] if either of you get a chance to try out the new 0.2.2 release and let us know whether it fixes the issue for you, we'd appreciate the feedback!", "created": "2014-10-06T14:57:00.000000"}, {"author": "557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0", "body": "Yep, looks good now! 70 open files constantly here (see graph)\nThanks for the responsiveness guys, as usual (y)", "created": "2014-10-07T02:11:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "That's great news, [~accountid:557058:7add7c21-e6de-4c04-a417-4e3149dd3ad0].  Thanks for confirming.  If you have the chance to do so, [~accountid:557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de], we'd be very interested to learn if you are seeing the same behavior now with the 0.2.2 release.", "created": "2014-10-07T09:16:00.000000"}, {"author": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "body": "Hi [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] started my puppet server also, will have an answer for you in the monring. For now its at 304 openfiles\n\n\nCheers", "created": "2014-10-07T12:21:00.000000"}, {"author": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "body": "started my puppetserver also, will have an answer for you guys by tomorrow\n\nCheers\n\nOn Tue, Oct 7, 2014 at 11:11 AM, Antoine Cotten (JIRA) <\n\n\n\n\n-- \nCristian Leonte\ncristian.leonte@gmail.com\n", "created": "2014-10-07T13:16:00.000000"}, {"author": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "body": "Hi All,\n\nit looks good, 63 open files running for about 1.5days\n\n\nCheers", "created": "2014-10-08T21:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Excellent, thanks [~accountid:557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de]!", "created": "2014-10-09T10:19:00.000000"}, {"author": "557058:362bc1c3-742f-4428-a556-fa2b03887e0f", "body": "I'm using puppet-enterprise-3.4.0-rc1-1366-gdfd33a1-el-6-x86_64\n\nfrom getpe yesterday.\n\n[root@certificate-authority pe-puppetserver]# lsof -p 3704 | wc -l\n4130\n", "created": "2014-10-14T11:56:00.000000"}], "components": [], "created": "2014-09-26T11:48:00.000000", "creator": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33ed6aee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyply7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_80428499_*|*_1_*:*_1_*:*_348190614_*|*_10007_*:*_1_*:*_8300521_*|*_3_*:*_1_*:*_99155842_*|*_10009_*:*_2_*:*_792197303_*|*_6_*:*_2_*:*_23314"}], "description": "Puppet server creates to many files, ends up filling the drive writing to \"to many open files in the log\"\n\nSample from lsof:\n\n   puppet   26r     FIFO                0,8         0t0  262216947 pipe\njava      25130    puppet   27r     FIFO                0,8         0t0  262216947 pipe\njava      25130    puppet   28r     FIFO                0,8         0t0  262217271 pipe\njava      25130    puppet   29r      REG                0,9           0       3660 anon_inode\njava      25130    puppet   30r      REG                0,9           0       3660 anon_inode\njava      25130    puppet   31r     FIFO                0,8         0t0  262213984 pipe\njava      25130    puppet   32r     FIFO                0,8         0t0  262218720 pipe\njava      25130    puppet   33r     FIFO                0,8         0t0  262215370 pipe\njava      25130    puppet   34r     FIFO                0,8         0t0  262215370 pipe\njava      25130    puppet   35r      REG                0,9           0       3660 anon_inode\njava      25130    puppet   36r     FIFO                0,8         0t0  262217179 pipe\njava      25130    puppet   37r     FIFO                0,8         0t0  262217271 pipe\njava      25130    puppet   38r     FIFO                0,8         0t0  262218026 pipe\njava      25130    puppet   39r     FIFO                0,8         0t0  262217170 pipe\njava      25130    puppet   40r     FIFO                0,8         0t0  262217665 pipe\njava      25130    puppet   41r      REG                0,9           0       3660 anon_inode\njava      25130    puppet   42r     FIFO                0,8         0t0  262217280 pipe\njava      25130    puppet   43r     FIFO                0,8         0t0  262217280 pipe\njava      25130    puppet   44r      REG                0,9           0       3660 anon_inode\njava      25130    puppet   45r     FIFO                0,8         0t0  262217665 pipe\njava      25130    puppet   46r     FIFO                0,8         0t0  262216893 pipe\njava      25130    puppet   47r     FIFO                0,8         0t0  262216088 pipe\njava      25130    puppet   48r     FIFO                0,8         0t0  262216088 pipe\njava      25130    puppet   49r      REG                0,9           0       3660 anon_inode\njava      25130    puppet   50r      REG                0,9           0       3660 anon_inode\njava      25130    puppet   51r      REG                0,9           0       3660 anon_inode\njava      25130    puppet   52r     FIFO                0,8         0t0  262217321 pipe\njava      25130    puppet   53r     FIFO                0,8         0t0  262216904 pipe", "environment": "OS: Centos 6.4\nJDK:  Oracle JDK 1.7.0_67\nHardware: KVM vm", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16119", "fixedVersions": ["SERVER 0.2.2"], "id": "16119", "issueType": "Bug", "key": "SERVER-13", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "resolution": "Fixed", "resolutionDate": "2014-10-11T20:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Too many open files by puppetserver", "timeSpent": "PT0S", "updated": "2015-01-22T16:45:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Can you paste the equivalent output that you were seeing under the apache/passenger master?  That will help us understand what sort of log levels you are using, etc.", "created": "2014-09-30T09:37:00.000000"}, {"author": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "body": "it looks something like this\n\nStage[main]/Packages/Package[bash]/ensure) ensure changed '3.2-33.el5.1' to '0:3.2-33.el5_10.4'\n\n\nCheers", "created": "2014-09-30T11:35:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ah, ok.  Perhaps we missed something about how logging works when it occurs from within a resource.  Will investigate.", "created": "2014-09-30T12:20:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de] I spent a little time trying to repro this, but I wasn't able to and am a bit confused now.\n\nThe message you're describing seems like the kind of message you would see on the agent (as opposed to on the server", "created": "2014-10-05T16:58:00.000000"}, {"author": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "body": "Hi [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] that was on the puppet master running passanger and apache not on the client, let me know what other info in can provide\n\nhere is my conf\n\n[agent]\n    classfile = $vardir/classes.txt\n    localconfig = $vardir/localconfig\n    report=true\n    reports=foreman\n    pluginsync = true\n    environment = production\n    server = puppet-1.domain.local\n\n[master]\n    ssl_client_header = SSL_CLIENT_S_DN\n    ssl_client_verify_header = SSL_CLIENT_VERIFY\n    logdir = /var/log/puppet\n    reports = log, store,  puppetdb\n    autosign=true\n    pluginsync = true\n    storeconfigs_backend = puppetdb\n    storeconfigs = true\n", "created": "2014-10-07T12:27:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Ah, so maybe this is a result of using the 'log' report processor.  That might explain it.  Will investigate, thanks.", "created": "2014-10-07T14:41:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Looks like our JRUby Log class wasn't set to output the possible source of a log message, when the message isn't generated by the master itself. The PR on this ticket will fix that.", "created": "2014-10-10T16:12:00.000000"}], "components": [], "created": "2014-09-25T22:35:00.000000", "creator": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d39cf66"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypndj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_7419450_*|*_1_*:*_1_*:*_416260952_*|*_10007_*:*_1_*:*_345129294_*|*_3_*:*_1_*:*_88922360_*|*_10009_*:*_1_*:*_245924549_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_11885023_*|*_10006_*:*_2_*:*_755878876"}], "description": "Hi,\n\nwhen updating a package from puppet, the puppetserver logs shows something like this:\n\n [puppet-server] ensure changed '3.2-33.el5.1' to '0:3.2-33.el5_10.4'\n\nit shows only the version not the pacakge being updated, do i miss anything?", "environment": "puppetserevr, centos 6", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17547", "fixedVersions": ["SERVER 0.3.0"], "id": "17547", "issueType": "Bug", "key": "SERVER-11", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b4facf8e-bc11-4be5-a6fd-5d9895a549de", "resolution": "Fixed", "resolutionDate": "2014-10-17T14:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "puppetserver does not show package being updated", "timeSpent": "PT0S", "updated": "2015-01-22T16:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "62437c95f4079800705547ce", "attachments": [], "comments": [{"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "Can you attach the full log files?  Maybe there's something useful at the top of, or before the stack trace.", "created": "2014-09-26T01:26:00.000000"}, {"author": "62437c95f4079800705547ce", "body": "Hi Dominic,\n\nI just got back to this, and it turns out to have been stupid user error from being in a rush.\n\nThe full trace *did* show:\n\n```\nRuntimeError: Got 1 failure(s) while initializing: File[/opt/puppet/environments/production]: change from absent to directory failed: Could not set 'directory' on ensure: Permission denied - /opt/puppet/environments/production\n```\n\nSo i started up a new container with the puppet manifests correctly mounted as a volume:\n\n```\n$ docker run --rm -i -t -h puppet.inf.ise.com -v $PWD/spec/fixtures/production:/opt/puppet/environments/production jumanjiman/puppetmaster bash\n\n# sleep 60 seconds or so for puppetserver to warm up\n\n# netstat -tulpn\nActive Internet connections (only servers)\nProto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   \ntcp        0      0 :::8140                     :::*                        LISTEN      -                   \n\n\n# tail /var/log/puppetserver/*\n==> /var/log/puppetserver/puppetserver-daemon.log <==\n\n==> /var/log/puppetserver/puppetserver.log <==\n2014-09-29 08:45:30,834 INFO  [p.t.s.w.jetty9-core] webserver config overridden for key 'ssl-crl-path'\n2014-09-29 08:45:32,665 INFO  [p.t.s.w.jetty9-core] Starting web server.\n2014-09-29 08:45:32,687 INFO  [o.e.j.s.Server] jetty-9.1.z-SNAPSHOT\n2014-09-29 08:45:33,005 INFO  [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@3b7a6052{/,null,AVAILABLE}\n2014-09-29 08:45:33,012 INFO  [o.e.j.s.h.ContextHandler] Started o.e.j.s.h.ContextHandler@52773abb{/,null,AVAILABLE}\n2014-09-29 08:45:33,453 INFO  [o.e.j.s.ServerConnector] Started ServerConnector@de1dd6c{SSL-HTTP/1.1}{0.0.0.0:8140}\n2014-09-29 08:45:41,135 INFO  [puppet-server] Puppet settings initialized", "created": "2014-09-29T06:51:00.000000"}, {"author": "62437c95f4079800705547ce", "body": "not a bug.\n\nit was user error: config specified directory-based environments, but no environment was available.", "created": "2014-09-29T06:57:00.000000"}], "components": [], "created": "2014-09-25T19:18:00.000000", "creator": "62437c95f4079800705547ce", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59350442"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywi2f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_301154213_*|*_6_*:*_1_*:*_0"}], "description": "2according to http://puppetlabs.com/blog/puppet-server-bringing-soa-to-a-puppet-master-near-you\npuppetserver should be a drop-in replacement.\n\nhowever, based on docker images at https://github.com/jumanjihouse/docker-puppet\n\n```\n$ docker pull jumanjiman/puppetmaster\n-snip-\n\n$ docker run --rm -i -t -h puppet.inf.ise.com jumanjiman/puppetmaster bash\nbash-4.1# yum -y install puppetserver\n\nInstalled:\n  puppetserver.noarch 0:0.2.0-1.el6                                                                                                                  \n\nDependency Installed:\n  flac.x86_64 0:1.2.1-6.1.el6                  giflib.x86_64 0:4.1.6-3.1.el6                 java-1.7.0-openjdk.x86_64 1:1.7.0.65-2.5.1.2.el6_5    \n  jpackage-utils.noarch 0:1.7.5-3.12.el6       libasyncns.x86_64 0:0.8-1.1.el6               libsndfile.x86_64 0:1.0.20-5.el6                      \n  pulseaudio-libs.x86_64 0:0.9.21-14.el6_3     tcp_wrappers-libs.x86_64 0:7.6-57.el6         ttmkfdir.x86_64 0:3.0.9-32.1.el6                      \n  tzdata-java.noarch 0:2014g-1.el6             xorg-x11-fonts-Type1.noarch 0:7.2-9.1.el6    \n\nComplete!\n\nbash-4.1# service puppetserver start\nStarting puppetserver:                                     [  OK  ]\n\nbash-4.1# netstat -tulpn\nActive Internet connections (only servers)\nProto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   \n\n- sleep 60 seconds -\n\nbash-4.1# tail /var/log/puppetserver/*\n==> /var/log/puppetserver/puppetserver-daemon.log <==\n        at puppetlabs.services.jruby.jruby_puppet_service$reify__6636$service_fnk__5254__auto___positional$reify__6647$fn__6648$fn__6649.invoke(jruby_puppet_service.clj:29)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:246)\n        at puppetlabs.trapperkeeper.internal$shutdown_on_error_STAR_.invoke(internal.clj:230)\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285)\n        at puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254)\n        at puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254)\n        at clojure.core$apply.invoke(core.clj:619)\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396)\n        at puppetlabs.services.jruby.jruby_puppet_service$reify__6636$service_fnk__5254__auto___positional$reify__6647$fn__6648.invoke(jruby_puppet_service.clj:28)\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836)\n\n==> /var/log/puppetserver/puppetserver.log <==\n        at puppetlabs.trapperkeeper.internal$shutdown_service$reify__5853$service_fnk__5254__auto___positional$reify__5858.shutdown_on_error(internal.clj:285) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5775__5809.invoke(internal.clj:254) [na:na]\n        at puppetlabs.trapperkeeper.internal$eval5789$fn__5801$G__5774__5818.invoke(internal.clj:254) [na:na]\n        at clojure.core$apply.invoke(core.clj:619) [puppet-server-release.jar:na]\n        at clojure.core$partial$fn__4190.doInvoke(core.clj:2396) [puppet-server-release.jar:na]\n        at puppetlabs.services.jruby.jruby_puppet_service$reify__6636$service_fnk__5254__auto___positional$reify__6647$fn__6648.invoke(jruby_puppet_service.clj:28) [na:na]\n        at clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836) [puppet-server-release.jar:na]\n2014-09-25 21:17:30,654 INFO  [p.t.internal] Beginning shutdown sequence\n2014-09-25 21:17:30,687 INFO  [p.t.s.w.jetty9-service] Shutting down web server(s).\n2014-09-25 21:17:30,694 INFO  [p.t.internal] Finished shutdown sequence\n```", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15797", "fixedVersions": [], "id": "15797", "issueType": "Bug", "key": "SERVER-10", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "62437c95f4079800705547ce", "resolution": "Won't Fix", "resolutionDate": "2014-09-29T06:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "not a drop-in replacement", "timeSpent": "PT0S", "updated": "2015-12-30T18:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Fixed in Puppet Server 0.2.1", "created": "2014-09-29T17:34:00.000000"}], "components": [], "created": "2014-09-25T15:24:00.000000", "creator": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61096ceb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CVE-ID", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "CVE-2014-7170"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywhun:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_353377198_*|*_5_*:*_1_*:*_8417_*|*_6_*:*_1_*:*_0"}], "description": "In Puppet Server 0.2.0, there is a window between package installation/upgrade and service start where privileged data is accessible to non-privileged local users.\n\n{code}\nCVSS v2 Score: 2.0\nCVSS v2 Vector (AV:L/AC:L/Au:N/C:P/I:N/A:N/E:F/RL:U/RC:C)\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14875", "fixedVersions": ["SERVER 0.2.1"], "id": "14875", "issueType": "Bug", "key": "SERVER-9", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "resolution": "Fixed", "resolutionDate": "2014-09-29T17:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Privileged data is accessible to non-privileged local users", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623e7507866b810069e57527", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] ping!", "created": "2014-09-30T10:07:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4] I think you're right. We'll update the service to remove execstop and add KillMode=process.", "created": "2014-09-30T10:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This needs review for PE3.7.", "created": "2014-10-23T10:08:00.000000"}], "components": [], "created": "2014-09-25T11:04:00.000000", "creator": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9ef81bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypkun:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_401825_*|*_1_*:*_1_*:*_431672762_*|*_10007_*:*_1_*:*_1983748211_*|*_10009_*:*_1_*:*_21531111_*|*_6_*:*_2_*:*_1216264982"}], "description": "When the service fails to start, the journal is filled with the help output of \"kill\".  Since the systemd unit file is configured to run \"kill $MAIN_PID\".  I guess there's nothing to kill and so no pid is set.\n\nI think this ExecStop could simply be removed as systemd will use signals by default on the whole cgroup.  If you only want to target the top level process, add KillMode=process instead.\n\n{noformat}\n[root@foreman ~]# journalctl _SYSTEMD_UNIT=puppetserver.service\n-- Logs begin at Thu 2014-09-25 16:52:49 UTC, end at Thu 2014-09-25 17:01:01 UTC. --\nSep 25 17:00:45 foreman.example.com java[2215]: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006f5a00000, 4294967296, 0) failed; error='Cannot allocate memory' (errno=12)\nSep 25 17:00:45 foreman.example.com java[2215]: #\nSep 25 17:00:45 foreman.example.com java[2215]: # There is insufficient memory for the Java Runtime Environment to continue.\nSep 25 17:00:45 foreman.example.com java[2215]: # Native memory allocation (malloc) failed to allocate 4294967296 bytes for committing reserved memory.\nSep 25 17:00:45 foreman.example.com java[2215]: # An error report file with more information is saved as:\nSep 25 17:00:45 foreman.example.com java[2215]: # /tmp/jvm-2215/hs_error.log\nSep 25 17:00:45 foreman.example.com kill[2218]: Usage:\nSep 25 17:00:45 foreman.example.com kill[2218]: kill [options] <pid|name> [...]\nSep 25 17:00:45 foreman.example.com kill[2218]: Options:\nSep 25 17:00:45 foreman.example.com kill[2218]: -a, --all              do not restrict the name-to-pid conversion to processes\nSep 25 17:00:45 foreman.example.com kill[2218]: with the same uid as the present process\nSep 25 17:00:45 foreman.example.com kill[2218]: -s, --signal <sig>     send specified signal\nSep 25 17:00:45 foreman.example.com kill[2218]: -q, --queue <sig>      use sigqueue(2) rather than kill(2)\nSep 25 17:00:45 foreman.example.com kill[2218]: -p, --pid              print pids without signaling them\nSep 25 17:00:45 foreman.example.com kill[2218]: -l, --list [=<signal>] list signal names, or convert one to a name\nSep 25 17:00:45 foreman.example.com kill[2218]: -L, --table            list signal names and numbers\nSep 25 17:00:45 foreman.example.com kill[2218]: -h, --help     display this help and exit\nSep 25 17:00:45 foreman.example.com kill[2218]: -V, --version  output version information and exit\nSep 25 17:00:45 foreman.example.com kill[2218]: For more details see kill(1).\n{noformat}", "environment": "EL7", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15201", "fixedVersions": ["SERVER 0.4.0"], "id": "15201", "issueType": "Bug", "key": "SERVER-8", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Noisy kill error messages from systemd unit when service fails to start", "timeSpent": "PT0S", "updated": "2015-01-22T16:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-09-25T08:57:00.000000", "creator": "5f9913ee62584c006bd6cb1a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ba671a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypo3j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_86077028_*|*_1_*:*_1_*:*_452433457_*|*_10007_*:*_1_*:*_70240791_*|*_3_*:*_1_*:*_1818473_*|*_5_*:*_1_*:*_62726298191_*|*_6_*:*_1_*:*_0"}], "description": "The code for the Puppet Server is on GitHub but there's no mention of any license or copyright.\nWithout a clear license information, the software is legally non-free and unsafe to use/modify. \nhttp://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html\n\nCopyright, Disclaimer and License need to be defined.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16670", "fixedVersions": ["SERVER 0.2.2"], "id": "16670", "issueType": "Bug", "key": "SERVER-7", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "5f9913ee62584c006bd6cb1a", "resolution": "Fixed", "resolutionDate": "2014-10-02T10:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Open Source License and Copyright information missing", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Interesting... I believe that directory should be created by the packaging for puppet itself, which should come in as a dependency when you install via the RPM.  Did you use an alternate method of installing puppet by any chance?\n\n[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] any ideas?", "created": "2014-09-30T09:38:00.000000"}, {"author": "623c128f866b810069e43814", "body": "Nope puppet package only contains /etc/puppet/modules ... not /etc/puppet/manifests .. 3.7.1 package..\n\n[root@puppetserver ~]# rpm -ql puppet  | grep /etc \n/etc/NetworkManager\n/etc/NetworkManager/dispatcher.d\n/etc/NetworkManager/dispatcher.d/98-puppet\n/etc/logrotate.d/puppet\n/etc/puppet\n/etc/puppet/auth.conf\n/etc/puppet/modules\n/etc/puppet/puppet.conf\n/etc/rc.d/init.d/puppet\n/etc/sysconfig/puppet\n\n\n[root@puppetserver ~]# rpm -qi puppet \nName        : puppet                       Relocations: (not relocatable)\nVersion     : 3.7.1                             Vendor: Puppet Labs\n\n\n\nSo puppet package itselve does not provide that directory . .. \n\n", "created": "2014-09-30T09:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "OK, thanks for the update.  No idea how we haven't run into this locally, we've been doing the majority of our testing on cent6.  We'll try to repro.", "created": "2014-09-30T10:06:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:623c128f866b810069e43814] The preinst for the puppetserver package should be making that directory. This is a workaround and ideally this directory should be made by puppet itself. I'll open a bug there and make sure we add it to puppet's packaging.\n\nHere are the preinsts I see for the el6 puppetserver 0.2.0 package:\n{code}\npreinstall scriptlet (using /bin/sh):\n# Add puppet group\ngetent group puppet > /dev/null || \\\n  groupadd -r puppet || :\n# Add puppet user\ngetent passwd puppet > /dev/null || \\\n  useradd -r -g puppet -d /usr/share/puppetserver -s /sbin/nologin \\\n     -c \"puppetserver daemon\"  puppet || :\nusermod -a -G puppet puppet\ninstall --group=puppet --owner=puppet -d /var/lib/puppet/jruby-gems\nfind /var/lib/puppet -type d -name '*' -exec chmod 775 {} '", "created": "2014-09-30T10:35:00.000000"}, {"author": "623c128f866b810069e43814", "body": "I actually just tried to reproduce this on an empty vagrant box and now  the directory is created \n\nDazed and confused on why this dis not work the first time \n\n[root@misc yum.repos.d]# cd /etc/puppet/\n[root@misc puppet]# ls\nauth.conf  modules  puppet.conf\n[root@misc puppet]# yum install puppetserver \nLoaded plugins: fastestmirror, security\nDetermining fastest mirrors\n * base: mirror.ukhost4u.com\n * epel: mirror.de.leaseweb.net\n * extras: mirror.ukhost4u.com\n * updates: mirror.ukhost4u.com\nbase                                                                                                                                                                                                                    | 3.7 kB     00:00     \nepel                                                                                                                                                                                                                    | 4.4 kB     00:00     \nepel/primary_db                                                                                                                                                                                                         | 6.3 MB     00:02     \nextras                                                                                                                                                                                                                  | 3.3 kB     00:00     \npuppetlabs-deps                                                                                                                                                                                                         | 2.5 kB     00:00     \npuppetlabs-products                                                                                                                                                                                                     | 2.5 kB     00:00     \npuppetlabs-products/primary_db                                                                                                                                                                                          | 121 kB     00:00     \nupdates                                                                                                                                                                                                                 | 3.4 kB     00:00     \nupdates/primary_db                                                                                                                                                                                                      | 5.4 MB     00:01     \nSetting up Install Process\nResolving Dependencies\n--> Running transaction check\n---> Package puppetserver.noarch 0:0.2.1-1.el6 will be installed\n--> Processing Dependency: puppet = 3.7.1 for package: puppetserver-0.2.1-1.el6.noarch\n--> Processing Dependency: java-1.7.0-openjdk for package: puppetserver-0.2.1-1.el6.noarch\n--> Running transaction check\n---> Package java-1.7.0-openjdk.x86_64 1:1.7.0.65-2.5.1.2.el6_5 will be installed\n--> Processing Dependency: jpackage-utils >= 1.7.3-1jpp.2 for package: 1:java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64\n--> Processing Dependency: xorg-x11-fonts-Type1 for package: 1:java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64\n--> Processing Dependency: tzdata-java for package: 1:java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64\n--> Processing Dependency: libpulse.so.0(PULSE_0)(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64\n--> Processing Dependency: libpulse.so.0()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64\n--> Processing Dependency: libgif.so.4()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64\n--> Processing Dependency: libXtst.so.6()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64\n---> Package puppet.noarch 0:3.4.2-1.el6 will be updated\n---> Package puppet.noarch 0:3.7.1-1.el6 will be an update\n--> Running transaction check\n---> Package giflib.x86_64 0:4.1.6-3.1.el6 will be installed\n--> Processing Dependency: libSM.so.6()(64bit) for package: giflib-4.1.6-3.1.el6.x86_64\n--> Processing Dependency: libICE.so.6()(64bit) for package: giflib-4.1.6-3.1.el6.x86_64\n---> Package jpackage-utils.noarch 0:1.7.5-3.12.el6 will be installed\n---> Package libXtst.x86_64 0:1.2.1-2.el6 will be installed\n---> Package pulseaudio-libs.x86_64 0:0.9.21-14.el6_3 will be installed\n--> Processing Dependency: libsndfile.so.1(libsndfile.so.1.0)(64bit) for package: pulseaudio-libs-0.9.21-14.el6_3.x86_64\n--> Processing Dependency: libsndfile.so.1()(64bit) for package: pulseaudio-libs-0.9.21-14.el6_3.x86_64\n--> Processing Dependency: libasyncns.so.0()(64bit) for package: pulseaudio-libs-0.9.21-14.el6_3.x86_64\n---> Package tzdata-java.noarch 0:2014g-1.el6 will be installed\n---> Package xorg-x11-fonts-Type1.noarch 0:7.2-9.1.el6 will be installed\n--> Processing Dependency: ttmkfdir for package: xorg-x11-fonts-Type1-7.2-9.1.el6.noarch\n--> Processing Dependency: ttmkfdir for package: xorg-x11-fonts-Type1-7.2-9.1.el6.noarch\n--> Processing Dependency: mkfontdir for package: xorg-x11-fonts-Type1-7.2-9.1.el6.noarch\n--> Processing Dependency: mkfontdir for package: xorg-x11-fonts-Type1-7.2-9.1.el6.noarch\n--> Running transaction check\n---> Package libICE.x86_64 0:1.0.6-1.el6 will be installed\n---> Package libSM.x86_64 0:1.2.1-2.el6 will be installed\n---> Package libasyncns.x86_64 0:0.8-1.1.el6 will be installed\n---> Package libsndfile.x86_64 0:1.0.20-5.el6 will be installed\n--> Processing Dependency: libvorbisenc.so.2()(64bit) for package: libsndfile-1.0.20-5.el6.x86_64\n--> Processing Dependency: libvorbis.so.0()(64bit) for package: libsndfile-1.0.20-5.el6.x86_64\n--> Processing Dependency: libogg.so.0()(64bit) for package: libsndfile-1.0.20-5.el6.x86_64\n--> Processing Dependency: libFLAC.so.8()(64bit) for package: libsndfile-1.0.20-5.el6.x86_64\n---> Package ttmkfdir.x86_64 0:3.0.9-32.1.el6 will be installed\n---> Package xorg-x11-font-utils.x86_64 1:7.2-11.el6 will be installed\n--> Processing Dependency: libfontenc.so.1()(64bit) for package: 1:xorg-x11-font-utils-7.2-11.el6.x86_64\n--> Processing Dependency: libXfont.so.1()(64bit) for package: 1:xorg-x11-font-utils-7.2-11.el6.x86_64\n--> Running transaction check\n---> Package flac.x86_64 0:1.2.1-6.1.el6 will be installed\n---> Package libXfont.x86_64 0:1.4.5-3.el6_5 will be installed\n---> Package libfontenc.x86_64 0:1.0.5-2.el6 will be installed\n---> Package libogg.x86_64 2:1.1.4-2.1.el6 will be installed\n---> Package libvorbis.x86_64 1:1.2.3-4.el6_2.1 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n===============================================================================================================================================================================================================================================\n Package                                                     Arch                                          Version                                                            Repository                                                  Size\n===============================================================================================================================================================================================================================================\nInstalling:\n puppetserver                                                noarch                                        0.2.1-1.el6                                                        puppetlabs-products                                         30 M\nInstalling for dependencies:\n flac                                                        x86_64                                        1.2.1-6.1.el6                                                      base                                                       243 k\n giflib                                                      x86_64                                        4.1.6-3.1.el6                                                      base                                                        37 k\n java-1.7.0-openjdk                                          x86_64                                        1:1.7.0.65-2.5.1.2.el6_5                                           updates                                                     26 M\n jpackage-utils                                              noarch                                        1.7.5-3.12.el6                                                     base                                                        59 k\n libICE                                                      x86_64                                        1.0.6-1.el6                                                        base                                                        53 k\n libSM                                                       x86_64                                        1.2.1-2.el6                                                        base                                                        37 k\n libXfont                                                    x86_64                                        1.4.5-3.el6_5                                                      updates                                                    136 k\n libXtst                                                     x86_64                                        1.2.1-2.el6                                                        base                                                        29 k\n libasyncns                                                  x86_64                                        0.8-1.1.el6                                                        base                                                        24 k\n libfontenc                                                  x86_64                                        1.0.5-2.el6                                                        base                                                        24 k\n libogg                                                      x86_64                                        2:1.1.4-2.1.el6                                                    base                                                        21 k\n libsndfile                                                  x86_64                                        1.0.20-5.el6                                                       base                                                       233 k\n libvorbis                                                   x86_64                                        1:1.2.3-4.el6_2.1                                                  base                                                       168 k\n pulseaudio-libs                                             x86_64                                        0.9.21-14.el6_3                                                    base                                                       462 k\n ttmkfdir                                                    x86_64                                        3.0.9-32.1.el6                                                     base                                                        43 k\n tzdata-java                                                 noarch                                        2014g-1.el6                                                        updates                                                    177 k\n xorg-x11-font-utils                                         x86_64                                        1:7.2-11.el6                                                       base                                                        75 k\n xorg-x11-fonts-Type1                                        noarch                                        7.2-9.1.el6                                                        base                                                       520 k\nUpdating for dependencies:\n puppet                                                      noarch                                        3.7.1-1.el6                                                        puppetlabs-products                                        1.6 M\n\nTransaction Summary\n===============================================================================================================================================================================================================================================\nInstall      19 Package(s)\nUpgrade       1 Package(s)\n\nTotal download size: 59 M\nIs this ok [y/N]: y\nDownloading Packages:\n(1/20): flac-1.2.1-6.1.el6.x86_64.rpm                                                                                                                                                                                   | 243 kB     00:00     \n(2/20): giflib-4.1.6-3.1.el6.x86_64.rpm                                                                                                                                                                                 |  37 kB     00:00     \n(3/20): java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64.rpm                                                                                                                                                            |  26 MB     00:10     \n(4/20): jpackage-utils-1.7.5-3.12.el6.noarch.rpm                                                                                                                                                                        |  59 kB     00:00     \n(5/20): libICE-1.0.6-1.el6.x86_64.rpm                                                                                                                                                                                   |  53 kB     00:00     \n(6/20): libSM-1.2.1-2.el6.x86_64.rpm                                                                                                                                                                                    |  37 kB     00:00     \n(7/20): libXfont-1.4.5-3.el6_5.x86_64.rpm                                                                                                                                                                               | 136 kB     00:00     \n(8/20): libXtst-1.2.1-2.el6.x86_64.rpm                                                                                                                                                                                  |  29 kB     00:00     \n(9/20): libasyncns-0.8-1.1.el6.x86_64.rpm                                                                                                                                                                               |  24 kB     00:00     \n(10/20): libfontenc-1.0.5-2.el6.x86_64.rpm                                                                                                                                                                              |  24 kB     00:00     \n(11/20): libogg-1.1.4-2.1.el6.x86_64.rpm                                                                                                                                                                                |  21 kB     00:00     \n(12/20): libsndfile-1.0.20-5.el6.x86_64.rpm                                                                                                                                                                             | 233 kB     00:00     \n(13/20): libvorbis-1.2.3-4.el6_2.1.x86_64.rpm                                                                                                                                                                           | 168 kB     00:00     \n(14/20): pulseaudio-libs-0.9.21-14.el6_3.x86_64.rpm                                                                                                                                                                     | 462 kB     00:00     \n(15/20): puppet-3.7.1-1.el6.noarch.rpm                                                                                                                                                                                  | 1.6 MB     00:02     \n(16/20): puppetserver-0.2.1-1.el6.noarch.rpm                                                                                                                                                                            |  30 MB     00:43     \n(17/20): ttmkfdir-3.0.9-32.1.el6.x86_64.rpm                                                                                                                                                                             |  43 kB     00:00     \n(18/20): tzdata-java-2014g-1.el6.noarch.rpm                                                                                                                                                                             | 177 kB     00:00     \n(19/20): xorg-x11-font-utils-7.2-11.el6.x86_64.rpm                                                                                                                                                                      |  75 kB     00:00     \n(20/20): xorg-x11-fonts-Type1-7.2-9.1.el6.noarch.rpm                                                                                                                                                                    | 520 kB     00:00     \n-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\nTotal                                                                                                                                                                                                          1.0 MB/s |  59 MB     00:58     \nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n  Installing : 2:libogg-1.1.4-2.1.el6.x86_64                                                                                                                                                                                              1/21 \n  Installing : libICE-1.0.6-1.el6.x86_64                                                                                                                                                                                                  2/21 \n  Installing : libSM-1.2.1-2.el6.x86_64                                                                                                                                                                                                   3/21 \n  Installing : libXtst-1.2.1-2.el6.x86_64                                                                                                                                                                                                 4/21 \n  Installing : libfontenc-1.0.5-2.el6.x86_64                                                                                                                                                                                              5/21 \n  Installing : libXfont-1.4.5-3.el6_5.x86_64                                                                                                                                                                                              6/21 \n  Installing : 1:xorg-x11-font-utils-7.2-11.el6.x86_64                                                                                                                                                                                    7/21 \n  Installing : giflib-4.1.6-3.1.el6.x86_64                                                                                                                                                                                                8/21 \n  Installing : flac-1.2.1-6.1.el6.x86_64                                                                                                                                                                                                  9/21 \n  Installing : 1:libvorbis-1.2.3-4.el6_2.1.x86_64                                                                                                                                                                                        10/21 \n  Installing : libsndfile-1.0.20-5.el6.x86_64                                                                                                                                                                                            11/21 \n  Installing : jpackage-utils-1.7.5-3.12.el6.noarch                                                                                                                                                                                      12/21 \n  Installing : libasyncns-0.8-1.1.el6.x86_64                                                                                                                                                                                             13/21 \n  Installing : pulseaudio-libs-0.9.21-14.el6_3.x86_64                                                                                                                                                                                    14/21 \n  Installing : ttmkfdir-3.0.9-32.1.el6.x86_64                                                                                                                                                                                            15/21 \n  Installing : xorg-x11-fonts-Type1-7.2-9.1.el6.noarch                                                                                                                                                                                   16/21 \n  Updating   : puppet-3.7.1-1.el6.noarch                                                                                                                                                                                                 17/21 \n  Installing : tzdata-java-2014g-1.el6.noarch                                                                                                                                                                                            18/21 \n  Installing : 1:java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64                                                                                                                                                                        19/21 \n  Installing : puppetserver-0.2.1-1.el6.noarch                                                                                                                                                                                           20/21 \n  Cleanup    : puppet-3.4.2-1.el6.noarch                                                                                                                                                                                                 21/21 \n  Verifying  : 1:java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64                                                                                                                                                                         1/21 \n  Verifying  : pulseaudio-libs-0.9.21-14.el6_3.x86_64                                                                                                                                                                                     2/21 \n  Verifying  : xorg-x11-fonts-Type1-7.2-9.1.el6.noarch                                                                                                                                                                                    3/21 \n  Verifying  : libXfont-1.4.5-3.el6_5.x86_64                                                                                                                                                                                              4/21 \n  Verifying  : libfontenc-1.0.5-2.el6.x86_64                                                                                                                                                                                              5/21 \n  Verifying  : puppetserver-0.2.1-1.el6.noarch                                                                                                                                                                                            6/21 \n  Verifying  : flac-1.2.1-6.1.el6.x86_64                                                                                                                                                                                                  7/21 \n  Verifying  : libICE-1.0.6-1.el6.x86_64                                                                                                                                                                                                  8/21 \n  Verifying  : tzdata-java-2014g-1.el6.noarch                                                                                                                                                                                             9/21 \n  Verifying  : 1:libvorbis-1.2.3-4.el6_2.1.x86_64                                                                                                                                                                                        10/21 \n  Verifying  : 1:xorg-x11-font-utils-7.2-11.el6.x86_64                                                                                                                                                                                   11/21 \n  Verifying  : puppet-3.7.1-1.el6.noarch                                                                                                                                                                                                 12/21 \n  Verifying  : ttmkfdir-3.0.9-32.1.el6.x86_64                                                                                                                                                                                            13/21 \n  Verifying  : libSM-1.2.1-2.el6.x86_64                                                                                                                                                                                                  14/21 \n  Verifying  : 2:libogg-1.1.4-2.1.el6.x86_64                                                                                                                                                                                             15/21 \n  Verifying  : libasyncns-0.8-1.1.el6.x86_64                                                                                                                                                                                             16/21 \n  Verifying  : giflib-4.1.6-3.1.el6.x86_64                                                                                                                                                                                               17/21 \n  Verifying  : libsndfile-1.0.20-5.el6.x86_64                                                                                                                                                                                            18/21 \n  Verifying  : jpackage-utils-1.7.5-3.12.el6.noarch                                                                                                                                                                                      19/21 \n  Verifying  : libXtst-1.2.1-2.el6.x86_64                                                                                                                                                                                                20/21 \n  Verifying  : puppet-3.4.2-1.el6.noarch                                                                                                                                                                                                 21/21 \n\nInstalled:\n  puppetserver.noarch 0:0.2.1-1.el6                                                                                                                                                                                                            \n\nDependency Installed:\n  flac.x86_64 0:1.2.1-6.1.el6              giflib.x86_64 0:4.1.6-3.1.el6                   java-1.7.0-openjdk.x86_64 1:1.7.0.65-2.5.1.2.el6_5         jpackage-utils.noarch 0:1.7.5-3.12.el6           libICE.x86_64 0:1.0.6-1.el6             \n  libSM.x86_64 0:1.2.1-2.el6               libXfont.x86_64 0:1.4.5-3.el6_5                 libXtst.x86_64 0:1.2.1-2.el6                               libasyncns.x86_64 0:0.8-1.1.el6                  libfontenc.x86_64 0:1.0.5-2.el6         \n  libogg.x86_64 2:1.1.4-2.1.el6            libsndfile.x86_64 0:1.0.20-5.el6                libvorbis.x86_64 1:1.2.3-4.el6_2.1                         pulseaudio-libs.x86_64 0:0.9.21-14.el6_3         ttmkfdir.x86_64 0:3.0.9-32.1.el6        \n  tzdata-java.noarch 0:2014g-1.el6         xorg-x11-font-utils.x86_64 1:7.2-11.el6         xorg-x11-fonts-Type1.noarch 0:7.2-9.1.el6                 \n\nDependency Updated:\n  puppet.noarch 0:3.7.1-1.el6                                                                                                                                                                                                                  \n\nComplete!\n[root@misc puppet]# ls\nauth.conf  manifests  modules  puppet.conf\n[root@misc puppet]# rpm -qf manifests/\nfile /etc/puppet/manifests is not owned by any package\n", "created": "2014-10-02T05:59:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:623c128f866b810069e43814] Feel free to reopen if you figure out what triggered it the first time. I think directory environments may complicate this for Puppet 4, but puppet should still be making and owning this directory. I'll update the ticket as soon as I create the related puppet ticket.", "created": "2014-10-06T11:48:00.000000"}], "components": [], "created": "2014-09-24T15:55:00.000000", "creator": "623c128f866b810069e43814", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b4c00cf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywgnj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_526754299_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_495251389"}], "description": "Upon installing the RPM from the PL Yumrepo  PuppetServer fails to start untill I do a mkdir -p /etc/puppet/manifests\n\n", "environment": "CentOS 6", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15200", "fixedVersions": [], "id": "15200", "issueType": "Bug", "key": "SERVER-6", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "623c128f866b810069e43814", "resolution": "Cannot Reproduce", "resolutionDate": "2014-10-06T11:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Missing  /etc/puppet/manifests causes puppet-server to not start", "timeSpent": "PT0S", "updated": "2015-01-22T16:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "[~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] Despite the scary look, this is a DEBUG log message. Is the server actually dead?\n\nI disconnected my internet and saw this message, but the server still worked fine.", "created": "2014-09-23T00:20:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] I was running from source and it returned to the command prompt so I assumed the server wasn't running. Not in a place to repro atm, but I can try later.", "created": "2014-09-23T10:06:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "You're right [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], the server is still running. I probably Ctrl-C'd out in my earlier session and forgot that I did so :/", "created": "2014-09-23T17:53:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Glad to hear it!\n\nNot sure how much I like logging the exception in a way that looks nearly identical to an actual uncaught exception.  \nI thought the same thing when I fired it up and saw this stacktrace at the end of the log.", "created": "2014-09-23T18:01:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "I can imagine some consternation in the field seeing backtraces of this ilk. So cleaner handling of this might save support the occasional call :)", "created": "2014-09-23T18:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yeah, would definitely be good to handle this more gracefully.  Probably shouldn't be trying to json-parse the response body if the request fails.", "created": "2014-09-30T10:11:00.000000"}], "components": [], "created": "2014-09-22T22:39:00.000000", "creator": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@537d2045"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywirb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6064966_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_63705833_*|*_10006_*:*_1_*:*_69805981414"}], "description": "Without internet connectivity I get:\n\n{code}\n2014-09-22 21:28:07,580 DEBUG [p.s.v.version-check-core] Could not retrieve update information (http://updates.puppetlabs.com)\ncom.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: java.io.StringReader@5615513; line: 12, column: 2]\n\tat com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1524) ~[jackson-core-2.3.1.jar:2.3.1]\n\tat com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:557) ~[jackson-core-2.3.1.jar:2.3.1]\n\tat com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:475) ~[jackson-core-2.3.1.jar:2.3.1]\n\tat com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1415) ~[jackson-core-2.3.1.jar:2.3.1]\n\tat com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:679) ~[jackson-core-2.3.1.jar:2.3.1]\n\tat cheshire.parse$parse.invoke(parse.clj:87) ~[na:na]\n\tat cheshire.core$parse_string.invoke(core.clj:92) ~[na:na]\n\tat cheshire.core$parse_string.invoke(core.clj:88) ~[na:na]\n\tat puppetlabs.services.version.version_check_core$eval13817$update_info__13818$fn__13819.invoke(version_check_core.clj:75) ~[na:na]\n\tat puppetlabs.services.version.version_check_core$eval13817$update_info__13818.invoke(version_check_core.clj:59) ~[na:na]\n\tat puppetlabs.services.version.version_check_core$check_for_updates$fn__13837.invoke(version_check_core.clj:96) ~[na:na]\n\tat puppetlabs.services.version.version_check_core$check_for_updates.invoke(version_check_core.clj:95) [na:na]\n\tat puppetlabs.services.version.version_check_service$reify__13850$service_fnk__5300__auto___positional$reify__13857$fn__13858.invoke(version_check_service.clj:15) [na:na]\n\tat clojure.core$binding_conveyor_fn$fn__4107.invoke(core.clj:1836) [clojure-1.5.1.jar:na]\n\tat clojure.lang.AFn.call(AFn.java:18) [clojure-1.5.1.jar:na]\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_60]\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_60]\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_60]\n\tat java.lang.Thread.run(Thread.java:745) [na:1.7.0_60]\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15199", "fixedVersions": ["SERVER 1.y"], "id": "15199", "issueType": "Bug", "key": "SERVER-5", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "resolution": "Won't Do", "resolutionDate": "2016-12-09T15:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Debug backtrace if no access to updates.puppetlabs.com", "timeSpent": "PT0S", "updated": "2018-09-26T10:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] first bug :)", "created": "2014-09-22T14:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] you might have thoughts on this too.", "created": "2014-09-22T14:08:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] We ran into a similar problem on sles. We needed to export HOME in the init script and hand it off to the daemon start invocation.", "created": "2014-09-22T14:22:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Exporting HOME wasn't enough in my testing. I link a PR which throws a pushd and popd into the init script around the daemon call. It also updates sles' startproc to use -c, which will change the working directory before starting the service. Debian isn't affected by this because start-stop-daemon takes a dir to run from, which we already use.\n\nThe alternative to this is abandoning our use of daemon and just using su, but I'd prefer to stick to daemon unless we can't.", "created": "2014-09-22T17:14:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I also wasn't able to see any difference when defining $HOME in the script.  Looked like it was already effectively defined just before the daemon call is made.\n\nI think the current working directory is a key difference, though.  I ran pwdx against a puppetserver service started via \"service puppetserver start\" and saw \"/\".  If I modify the /etc/init.d/puppetserver script to \"cd /\" just before the daemon call, the certificates are created fine and the error messages above are not written to the daemon log. ", "created": "2014-09-22T17:40:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] That matches what I found. Adding the pushd before the daemon call seems to have addressed it.", "created": "2014-09-22T18:19:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "FYI added a Known Issues section with this to our README: https://github.com/puppetlabs/puppet-server/pull/191", "created": "2014-09-22T18:56:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "The ezbake PR has been merged.", "created": "2014-09-23T17:25:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "This should be resolved in Puppet Server 0.2.1.", "created": "2014-09-30T11:03:00.000000"}], "components": [], "created": "2014-09-22T14:06:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1eadc6e7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypo3r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11176654_*|*_10009_*:*_1_*:*_669047803_*|*_5_*:*_1_*:*_62897311164_*|*_6_*:*_1_*:*_0"}], "description": "Working with Shane Madden at PuppetConf; when he installed Puppet Server on Cent6.5 (puppetlabs vagrant image) and started the service via `/etc/init.d/puppetserver start` (run as `root`, from directory `/root`), he got errors like this:\n\n{quote}\n==> /var/log/puppetserver/puppetserver-daemon.log <==\nCould not retrieve fact='hostname', resolution='<anonymous>': Failed while executing '/bin/hostname': Cannot run program\n \"/bin/sh\" (in directory \"/root\"): error=13, Permission denied\n\n==> /var/log/puppetserver/puppetserver.log <==\n2014-09-22 12:55:17,780 INFO  [p.s.j.jruby-puppet-core] Finished creating JRubyPuppet instance 2 of 3\n2014-09-22 12:55:31,235 INFO  [puppet-server] Puppet settings initialized; run mode: master\n\n==> /var/log/puppetserver/puppetserver-daemon.log <==\nCould not retrieve fact='hostname', resolution='<anonymous>': Failed while executing '/bin/hostname': Cannot run program\n \"/bin/sh\" (in directory \"/root\"): error=13, Permission denied\n\n==> /var/log/puppetserver/puppetserver.log <==\n2014-09-22 12:55:35,210 INFO  [p.s.j.jruby-puppet-core] Finished creating JRubyPuppet instance 3 of 3\n{quote}\n\nI think it also resulted in the server trying to create a cert with an empty subject name, which may have corrupted some of the cert files.\n\nWhen he started the service with `service puppetserver start`, this problem didn't occur, everything seemed to work fine.  We think that perhaps what's happening is that when you run via `service`, the cwd gets set to `/usr/share/puppetserver` before starting the app, whereas when he ran directly via `/etc/init.d/puppetserver`, the cwd did not get set, and thus the process tried to run commands in `/root` as the `puppet` user, which generated the errors.\n\nIt may also have something to do with whether or not the HOME environment variable is set?  I wasn't immediately able to reproduce this on my Cent6 VM, need to investigate further.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15886", "fixedVersions": ["SERVER 0.2.1"], "id": "15886", "issueType": "Bug", "key": "SERVER-3", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-09-30T11:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "cent6: issue when starting server via init script (rather than via `service`)", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "The fix here is to update the tagmail report processor in puppet to use puppet's {{ExecutionStub}} instead of calling {{safe_posix_fork}} directly.", "created": "2014-10-10T17:15:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] do we need to move this ticket to PUP then?\n\n[~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] is this something we'd want to try to get in for 3.7.2 or can it wait?", "created": "2014-10-13T13:16:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - I already created PUP-3441", "created": "2014-10-13T13:19:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": " Searched zendesk and there's 1 issue in all of 2014 about tagmail, searched puppet-users and found 2 threads in the past year. If it's anything more than a trivial search-and-replace operation it's fine to push IMO.", "created": "2014-10-13T14:16:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "When I originally looked into this (and created PUP-3441), I was under the impression that this would be one-line fix (replace {{safe_posix_fork}} with {{Puppet::Util::Execution.execute}}.  However, I just looked at this again, and it's not so simple ... the tagmail report processor is forking-off a process so it can start up an SMTP server.   See https://github.com/puppetlabs/puppet/blob/cb4ad1f19b043a70ba17e4103a25f5c97a76948b/lib/puppet/reports/tagmail.rb#L133", "created": "2014-10-13T14:49:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "We can either remove it for 4.0 or we can remove the fork. That fork isn't there to start up an SMTP server, it is there to send the email in the background and not block the process if the SMTP server is slow.\n\nJust some history. The fork was first added back in 2006 in commit [afe84ecaa26b280bf3cbf1544197cc92389a6446|https://github.com/puppetlabs/puppet/commit/afe84ecaa26b280bf3cbf1544197cc92389a6446], which has a commit message of \"small fixes towards 0.18.2\".\n\nRemoving the fork may have some capacity implications for the master since the mail is no longer sent in the background. However, in my experience forking from a running web server can be very dangerous, which is why the {{safe_posix_fork}} method is used there now.\n\n*Time passes*\n\nI've just discussed it a little bit more with nibalizer and daenny on IRC. They are both in favor of removing tagmail. We'll just remove it in puppet 4.", "created": "2014-10-14T16:02:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "I've opened PUP-3463 to remove tagmail. I believe this can now be closed \"won't fix\"", "created": "2014-10-14T16:13:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Thanks a lot, [~accountid:623a4c3b4a57610068e6782b].", "created": "2014-10-14T16:16:00.000000"}, {"author": "557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213", "body": "I don't know anything about JRuby threading, but why can't we just do something like this?\n\n{code}\ndiff --git a/reports/tagmail.rb b/reports/tagmail.rb\nindex c450f8a..eedb329 100644\n--- a/reports/tagmail.rb\n+++ b/reports/tagmail.rb\n@@ -130,7 +130,7 @@ Puppet::Reports.register_report(:tagmail) do\n\n   # Send the email reports.\n   def send(reports)\n-    pid = Puppet::Util.safe_posix_fork do\n+    Thread.new do\n       if Puppet[:smtpserver] != \"none\"\n         begin\n           Net::SMTP.start(Puppet[:smtpserver], Puppet[:smtpport], Puppet[:smtphelo]) do |smtp|\n{code}", "created": "2014-12-10T19:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213] there are definitely ways we could get this working in Puppet Server, it's just a matter of prioritization.  The solution would probably end up looking something like what you've got there.\n\nYou should bug [~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4] / [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0] / [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] if the lack of support for this is causing you grief.", "created": "2014-12-12T13:27:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Note that Tagmail has been deleted from Puppet 4, so even if we restored this functionality in Puppet Server, it would only be fixed in the 1.x series and since Puppet Server 2.x will be based on Puppet 4.", "created": "2014-12-12T13:29:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] the idea is that it could be re-introduced as a module", "created": "2014-12-12T13:58:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Cool, that sounds like an improvement over having it in the core puppet codebase.", "created": "2014-12-12T14:11:00.000000"}, {"author": "6243b143f3824d006a579629", "body": "[~accountid:557058:0a7f5dde-2148-4d2c-8224-6d6f86ebc9c4], [~accountid:623e7a779b54ec0068b2844b],\nCan we at least apply James Sweeny's patch (above) to the 1.x series?  It's a shame to have lost this functionality when there's no alternative at present (that I'm aware of).  I'm applying this patch locally and it works great for me, until the next yum update comes along and squashes it.  If there's a better (lightweight) reporting alternative, I'm all ears.", "created": "2015-02-08T08:31:00.000000"}, {"author": "557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213", "body": "[~accountid:6243b143f3824d006a579629], puppetlabs/tagmail has been released on the forge to address this issue (it uses basically the same patch as above). Please try that out and open a ticket in the MODULES project if you run into any bugs.\n\nhttps://forge.puppetlabs.com/puppetlabs/tagmail", "created": "2015-02-08T18:03:00.000000"}, {"author": "6243b143f3824d006a579629", "body": "[~accountid:557058:1019c0c3-ad91-4a7a-9c3b-f25baf4e3213], thanks for that tip.  It works perfectly for me.", "created": "2015-02-14T17:37:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "[~accountid:6243b143f3824d006a579629] glad that worked for you and thanks for letting us know.", "created": "2015-02-15T14:11:00.000000"}], "components": [], "created": "2014-09-16T12:08:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Affects Build", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "3.4.0-rc1-841-g78fafdd"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b97c9a8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Master Config", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Monolithic"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "CentOS 6"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypndb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2434061705_*|*_6_*:*_1_*:*_0"}], "description": "Running puppet with a tagmail report setup causes puppet runs to throw an error: \n{{Error: Could not send report: Error 400 on SERVER: fork is not available on this platform}}\n\nStack trace:\n{noformat}\n2014-09-16 10:57:44,576 ERROR [puppet-server] fork is not available on this platform\norg/jruby/RubyKernel.java:1868:in `fork'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util.rb:290:in `safe_posix_fork'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/reports/tagmail.rb:133:in `send'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/reports/tagmail.rb:128:in `process'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:37:in `process'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:53:in `processors'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:51:in `processors'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:30:in `process'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:14:in `save'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/indirection.rb:283:in `save'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/api/v1.rb:160:in `do_save'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/api/v1.rb:50:in `call'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/context.rb:64:in `override'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:244:in `override'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/api/v1.rb:49:in `call'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/route.rb:82:in `process'\norg/jruby/RubyArray.java:1613:in `each'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/route.rb:81:in `process'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/handler.rb:63:in `process'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler/around_profiler.rb:58:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler.rb:51:in `profile'\n/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/handler.rb:61:in `process'\nfile:/opt/puppet/share/puppetserver/jvm-puppet-release.jar!/puppet-server-lib/puppet/server/master.rb:96:in `handleRequest'\nPuppet$$Server$$Master_2085479838.gen:13:in `handleRequest'\nrequest_handler_core.clj:110:in `invoke'\nrequest_handler_service.clj:15:in `invoke'\nrequest_handler_service.clj:37:in `handle_request'\nrequest_handler.clj:3:in `invoke'\nrequest_handler.clj:3:in `invoke'\ncore.clj:619:in `invoke'\ncore.clj:2396:in `doInvoke'\nmaster_core.clj:46:in `invoke'\ncore.clj:99:in `invoke'\ncore.clj:45:in `invoke'\ncore.clj:30:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\ncore.clj:619:in `invoke'\ncore.clj:117:in `invoke'\ncore.clj:112:in `invoke'\ncore.clj:2443:in `invoke'\ncore.clj:112:in `doInvoke'\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16960", "fixedVersions": [], "id": "16960", "issueType": "Bug", "key": "SERVER-62", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Won't Fix", "resolutionDate": "2014-10-14T16:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "tagmail report processor fails ", "timeSpent": "PT0S", "updated": "2015-02-15T14:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] - I've tracked down the cause of this issue and I'm working on fixing it.  Can you give me some more info on how you found it?  Is there an acceptance test for this?  Any chance the test also covers using an HTTP report processor that's configured to use HTTP basic authentication?", "created": "2014-10-08T14:20:00.000000"}, {"author": "5ba935a37add096a82317dfb", "body": "I'm having the same problem - nice to find someone reported it before me.  I noticed immediately that all hosts on my dashboard were marked as unresponsive and I see the same error fly by in puppetserver.log.\n\nCan you share what the root cause is?  I'm wondering if I have a weird setup / haven't configured something in the most optimal/suggested way?  Otherwise it seems like this would have been caught sooner / effected more people.", "created": "2014-10-09T12:36:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:5ba935a37add096a82317dfb] - This is a simply a bug in the code - no configuration workaround or anything like that.  It only affects the {{http}} report processor, but renders it completely useless - every request it makes will fail.  I've opened https://github.com/puppetlabs/puppet-server/pull/212 to fix this.\n\nYou can prevent the error from happening by (temporarily) disabling the {{http}} report processor - the other report processors are not affected by this bug.", "created": "2014-10-09T12:46:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:669d4655-0c85-469a-a11c-e5290cf2955d] - ping!", "created": "2014-10-10T15:19:00.000000"}, {"author": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "body": "The test case c15318 is currently being skipped.  When this is resolved we need a PR to remove the skip of this test.  https://testrail.ops.puppetlabs.net/index.php?/cases/view/15318", "created": "2014-10-15T14:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It's resolved in the OSS version of Puppet Server now.  We haven't done a release that contains that fix yet, but there are SNAPSHOT packages from CI.", "created": "2014-10-16T07:18:00.000000"}, {"author": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "body": "[~accountid:557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0] Please verify fix.", "created": "2014-10-20T14:34:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Tested in 3.4.0-rc1-1480-g37f40b3", "created": "2014-10-21T12:12:00.000000"}], "components": [], "created": "2014-09-16T11:49:00.000000", "creator": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Affects Build", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "3.4.0-rc1-841-g78fafdd"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fda8a96"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Master Config", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Monolithic"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "CentOS 6"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypm0n:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_335866200_*|*_1_*:*_2_*:*_1906212997_*|*_10007_*:*_2_*:*_152395764_*|*_3_*:*_3_*:*_32501526_*|*_10009_*:*_1_*:*_598371134_*|*_5_*:*_1_*:*_61078785452_*|*_6_*:*_1_*:*_0"}], "description": "The http report processor shows an error in the logs after each puppet agent -t run.\n\nError:\n{noformat}\nERROR [puppet-server] Report processor failed: wrong number of arguments calling `post` (4 for 3)\n{noformat}\n\nStack trace:\n{noformat}\n  2014-09-16 10:06:22,386 ERROR [puppet-server] Report processor failed: wrong number of arguments calling `post` (4 for 3)\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/reports/http.rb:26:in `process'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:37:in `process'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:53:in `processors'\n  org/jruby/RubyArray.java:1613:in `each'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:51:in `processors'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:30:in `process'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/report/processor.rb:14:in `save'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/indirector/indirection.rb:283:in `save'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/api/v1.rb:160:in `do_save'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/api/v1.rb:50:in `call'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/context.rb:64:in `override'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet.rb:244:in `override'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/api/v1.rb:49:in `call'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/route.rb:82:in `process'\n  org/jruby/RubyArray.java:1613:in `each'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/route.rb:81:in `process'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/handler.rb:63:in `process'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler/around_profiler.rb:58:in `profile'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/profiler.rb:51:in `profile'\n  /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/network/http/handler.rb:61:in `process'\n  file:/opt/puppet/share/puppetserver/jvm-puppet-release.jar!/puppet-server-lib/puppet/server/master.rb:96:in `handleRequest'\n  Puppet$$Server$$Master_1809623143.gen:13:in `handleRequest'\n  request_handler_core.clj:110:in `invoke'\n  request_handler_service.clj:15:in `invoke'\n  request_handler_service.clj:37:in `handle_request'\n  request_handler.clj:3:in `invoke'\n  request_handler.clj:3:in `invoke'\n  core.clj:619:in `invoke'\n  core.clj:2396:in `doInvoke'\n  master_core.clj:46:in `invoke'\n  core.clj:99:in `invoke'\n  core.clj:45:in `invoke'\n  core.clj:30:in `invoke'\n  core.clj:112:in `invoke'\n  core.clj:2443:in `invoke'\n  core.clj:112:in `doInvoke'\n  core.clj:619:in `invoke'\n  core.clj:117:in `invoke'\n  core.clj:112:in `invoke'\n  core.clj:2443:in `invoke'\n  core.clj:112:in `doInvoke'\n  master_core.clj:59:in `invoke'\n  core.clj:176:in `invoke'\n  core.clj:45:in `invoke'\n  core.clj:112:in `invoke'\n  core.clj:2443:in `invoke'\n  core.clj:112:in `doInvoke'\n  core.clj:619:in `invoke'\n  core.clj:117:in `invoke'\n  ringutils.clj:28:in `invoke'\n  ringutils.clj:34:in `invoke'\n  proxy.clj:99:in `invoke'\n  core.clj:112:in `invoke'\n  core.clj:2443:in `invoke'\n  core.clj:112:in `doInvoke'\n  master_service.clj:60:in `invoke'\n  core.clj:176:in `invoke'\n  core.clj:45:in `invoke'\n  jetty9_core.clj:299:in `invoke'\n{noformat}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15515", "fixedVersions": ["SERVER 0.3.0"], "id": "15515", "issueType": "Bug", "key": "SERVER-43", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "resolution": "Fixed", "resolutionDate": "2014-10-21T12:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "HTTP report fails", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:669d4655-0c85-469a-a11c-e5290cf2955d] - I'm unable to reproduce this.  I installed PE, configured the master to use the 'store' report processor, and observed that it did create {{/var/opt/lib/pe-puppet/reports/pe-puppet.localdomain/}} and populate it with a YAML file for the report.\n\nI would suggest trying this again on the latest build.  If you're able to reproduce the error again ... is there any other information you can give us?  Does the agent run succeed?  Are there any error logged on either the agent or the master?  At the least, if you can include the master log during the agent run, that will probably be useful.", "created": "2014-10-08T19:29:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Just chatted with [~accountid:557058:669d4655-0c85-469a-a11c-e5290cf2955d] - sounds like this is a problem with the test not restart the master b/w config changes.", "created": "2014-10-10T15:20:00.000000"}, {"author": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "body": "I'll make the changes discusses with Kevin and update this ticket as necessary.  ", "created": "2014-10-13T09:04:00.000000"}, {"author": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "body": "Bouncing the service 'pe-puppetserver' after changing the configuration resolved this issue.  ", "created": "2014-10-14T12:48:00.000000"}], "components": [], "created": "2014-09-16T11:38:00.000000", "creator": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2238b846"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:669d4655-0c85-469a-a11c-e5290cf2955d"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnbr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1920606607_*|*_3_*:*_1_*:*_8229970_*|*_10009_*:*_1_*:*_72174884_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_422395799"}], "description": "After configuring the reports processor to use 'store' with the command \n'puppet config set reports store --section master'\n\nthen initiating a puppet run with:\n'puppet agent --test'\n\nI expect to see a directory \"/var/opt/lib/pe-puppet/reports/#{hostname}/\", this directory is not present.  ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17546", "fixedVersions": [], "id": "17546", "issueType": "Bug", "key": "SERVER-63", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:669d4655-0c85-469a-a11c-e5290cf2955d", "resolution": "Done", "resolutionDate": "2014-10-14T12:48:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Store process reporter does not write correct directory", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:8527c9e8-8e3f-451c-b529-f6fe014233ed", "attachments": [{"attacher": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "created": "2014-09-12T16:19:00.000000", "name": "centos6_system.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10860"}, {"attacher": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "created": "2014-09-12T16:19:00.000000", "name": "pe-puppetserver", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/10926"}, {"attacher": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "created": "2014-09-12T16:19:00.000000", "name": "puppet.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/11016"}], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Yeah, several people have hit this lately.  We lay down a config file that says that puppet-server should use 1g or 2g of ram out of the box", "created": "2014-09-12T16:44:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Failing to start is better than croaking suddenly.\n\nAs a sysadmin my workflow when something's broken is to look first in the main syslog (i.e. /var/log/messages on centos), so a super obvious error message there would be pretty helpful.", "created": "2014-09-12T16:52:00.000000"}, {"author": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I think it is worth blocking installation on systems that have less than 2GB of RAM just to reduce support calls.", "created": "2014-09-16T10:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:151c148a-2bb4-4fdc-9320-df94e73b0363] blocking installation?  Or blocking service startup?  Or both?  If the former is desirable we should probably create a separate ticket for Yellow Team.\n\n[~accountid:557058:32db392f-020e-4db0-9049-e89c6555d277] [~accountid:63d4062f69c7ae3958d276ed] ping!", "created": "2014-09-16T15:27:00.000000"}, {"author": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] [~accountid:557058:32db392f-020e-4db0-9049-e89c6555d277] [~accountid:63d4062f69c7ae3958d276ed] I think both would be the safest, but if time is a concern I think blocking on installation should be enough. (Or maybe a really serious warning message that the user has to acknowledge.)", "created": "2014-09-16T16:11:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "I ran into this too, failed to install the puppetserver:\n\n{noformat}\n# cat /var/log/pe-puppetserver/pe-puppetserver-daemon.log\nOpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000775a00000, 715784192, 0) failed", "created": "2014-09-19T00:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "From Oracle's Docs:\n\n\"Oracle recommends setting the minimum heap size (-Xms) equal to the maximum heap size (-Xmx) to minimize garbage collections.\"\n\nhttp://docs.oracle.com/cd/E15523_01/web.1111/e13814/jvm_tuning.htm\n\nSupposedly this is because the JVM has to recalculate the ratios allocated to the different generations of memory whenever the heap size changes.  I'm definitely open to discussion on this (it's already been a point of conversation within the team), but that is where we got the info.\n\nAlso, I think that it's probably preferable to fail fast at startup if there's not going to be enough heap, as opposed to having things appear to start up successfully and then get OOM-killed by the kernel when we try to grow the heap up to the Xmx size?\n\nMoot point if we add the fail-fast check at startup that I described earlier in this ticket.\n\n[~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049] you should probably mention minimum RAM requirements in your quick start guide.", "created": "2014-09-19T08:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "This came up frequently today at PuppetConf as folks started playing with Puppet Server on VMs", "created": "2014-09-22T14:49:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] It looks like we can't get the total amount of RAM in the Java code without making OS-specific calls. As a result, we're thinking about instead getting the total amount of RAM in the init script and setting an environment variable that can be accessed from the Java code, which we can then use to check if the total RAM is too low and fail fast.\n\nHow do you guys feel about this approach?", "created": "2014-10-01T11:26:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:623e7507866b810069e57527] If we're doing some of the work in the init script, why not do all of it in the init script? (also, that won't work for systemd at all)", "created": "2014-10-01T11:38:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] We were planning to do some of the work in Java largely because it's much easier to figure out what the max heap size for the JVM is in Java code with the Runtime class, whereas in the init script we'd have to parse the value out of a config file.\n\nWe could definitely do the fast-fail in the init script if you think that's best, though.", "created": "2014-10-01T11:44:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We could extract the max heap size into its own var and reference that from JAVA_ARGS.  That would remove the need to parse that string.  Right?", "created": "2014-10-01T11:50:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "No, it certainly makes sense both ways (and parsing JAVA_ARGS and then doing math on it if it ends in g or m is not amazing). I'm still not sure how you'd accomplish this in systemd at all.", "created": "2014-10-01T11:52:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] As long as you knew it was always in gigabytes, and would never be in megabytes, yes.", "created": "2014-10-01T11:55:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] - what is the problem w/ systemd?", "created": "2014-10-01T12:01:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] I've never worked an init script for use with systemd before, so I wasn't sure about the feasibility of this.\n\nSo to summarize our plan, we hope to find out how much RAM the system has, and either set that as an environment variable that Java can access or parse the maximum heap size out of a config file and fast-fail in the init script if it's too low. Which part of this approach isn't feasible with systemd (or is it all of it?)? Do you have any suggestions for an alternate approach?", "created": "2014-10-01T12:02:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] Systemd doesn't provide facilities to run arbitrary commands in the service startup for information gathering (like to get the total RAM available). There are a couple of hacks I have in mind that might work, but i haven't tried them.", "created": "2014-10-01T12:16:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:623e7507866b810069e57527] Have you looked into java or clojure libraries that might abstract the system memory determination?", "created": "2014-10-01T12:25:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] I did find [this|https://support.hyperic.com/display/SIGAR/Home], which seems to abstract that. I believe we'd be able to do everything in the Java code if we used this library.", "created": "2014-10-01T12:36:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "sigar looks interesting", "created": "2014-10-01T12:51:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Only concern with sigar is... is it no release since 2010 because of stability or because of abandonment?", "created": "2014-10-01T13:00:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Looks like the newest ticket in SIGAR was made in December of 2012 and they have had an 1.6.5 and 1.6.6 release (as well as 1.7.0) planned for quite some time. So it does seem stable, but if we run into any bugs it's not clear we'll have an easy avenue to fix them.", "created": "2014-10-01T13:53:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "There has been one commit on their github repo in 2014 and several in 2013.", "created": "2014-10-01T13:54:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "no idea.  it's still listed on hyperic's product pages:\n\nhttp://www.hyperic.com/products/sigar\n\nand [~accountid:63d40635a05386069cdb69d6] pointed out to me that it's a dependency of ohai:\n\nhttps://packages.debian.org/wheezy/ohai\n\nother options we could consider:\n\n* shell out to an os-specific command from within java (booo)\n* shell out to facter from within java (that's not horrible except that it forces us to have a dependency on facter, and it'd be ideal if we could make this a more generic ezbake/jvm/clojure-app solution)\n* call into facter via jruby (this ties us to both facter and jruby so isn't useful at all for other clojure projects)\n\nOf all of these options the sigar one sounds the least bad to me,  unless you come up with a sane way to do something for systemd...\n\ndoes systemd not use a defaults file?  Because we could shell out to something in the defaults file and set a variable, right?", "created": "2014-10-01T13:56:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "can you tell if that github repo is a mirror of something?  there are 10 open prs that look like they've gotten very few responses, but one response mentions 'upstream', so maybe it's mirroring an svn repo somewhere or something?", "created": "2014-10-01T13:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "meh, from their wiki it doesn't sound like it's a mirror, it sounds like it's the official source.", "created": "2014-10-01T14:00:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Yea it looks like the svn repo is a mirror of git.", "created": "2014-10-01T14:06:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "Systemd can't really use a defaults file. There is no bash/shell with it. It has to be raw stuff basically. ", "created": "2014-10-01T14:15:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:63d40635a05386069cdb69d6] The only thing I could think of for systemd would be an ExecPre or ExecPost that wrote facter output to a file so that the java process could read the contents. Gross, but possible.", "created": "2014-10-01T14:17:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] If we don't care about non-linux platforms you can just read /proc/meminfo and parse the output.", "created": "2014-10-01T14:19:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] would that cover all of our supported server-side platforms?  Is the format of the contents of that file consistent across platforms?", "created": "2014-10-01T14:37:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "also if folks aren't horrifically opposed to the sigar idea, then [~accountid:623e7507866b810069e57527] can at least go ahead and tinker with it to see how tractable it seems.", "created": "2014-10-01T14:49:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Should be consistent. And it will cover all of server-side. I imagine facter already has an implementation for parsing this file correctly.", "created": "2014-10-01T14:49:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "ok.  maybe porting that facter fact to clojure is the way to go then.  [~accountid:623e7507866b810069e57527] you might take a peek at the facter code and see what you think about that option.", "created": "2014-10-01T14:54:00.000000"}, {"author": "623e7507866b810069e57527", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I'll take a look and start tinkering with both options to see what I think.", "created": "2014-10-01T15:17:00.000000"}, {"author": "623e7507866b810069e57527", "body": "Facter does indeed have an implementation for parsing /proc/meminfo and it looks like it should be pretty easy to port over to clojure. I haven't looked at the sigar option yet, but given the ease of parsing /proc/meminfo, I think that would be the preferable route for now.\n\n[~accountid:557058:b6301e26-c165-42d0-ab3a-59124339555e] [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Thoughts?", "created": "2014-10-01T16:10:00.000000"}, {"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "+1", "created": "2014-10-01T16:17:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623e7507866b810069e57527] sounds good", "created": "2014-10-01T17:55:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "This has been merged and passed CI.  I put it in 'functional review' because I imagine somebody should manually verify the behavior we added.", "created": "2014-10-07T10:53:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Waiting for puppetserver 0.3.0 to be included in a build...", "created": "2014-10-20T15:09:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated that puppetserver 0.3.0 shuts down during launch if there isn't enough memory.\n\nUsed memtest and swapoff to remove available memory.\n\n/var/log/puppetserver/puppetserver.log records this when launched with less then the required amount of memory (with extra context.)\n2014-10-21 14:57:33,742 INFO  [puppet-server] Puppet Puppet settings initialized", "created": "2014-10-21T16:17:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Just as additional confirmation, I got this message in puppetserver.log with 2048 mb:\n\nException in thread \"main\" java.lang.Error: Not enough RAM. Puppet Server requires at least 2199MB of RAM.", "created": "2014-10-22T11:13:00.000000"}], "components": [], "created": "2014-09-12T16:19:00.000000", "creator": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Affects Build", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "3.4.0-rc1-761-g1da51c2"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59763f08"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Master Config", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Monolithic"}, {"fieldName": "Master OS", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "CentOS 6"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyplyv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_69288578_*|*_1_*:*_1_*:*_1641798106_*|*_10007_*:*_1_*:*_339769020_*|*_3_*:*_1_*:*_89532029_*|*_10009_*:*_1_*:*_1229105929_*|*_6_*:*_1_*:*_0"}], "description": "I talked with Wayne about this problem and he is pretty sure that the issue I'm seeing is because the master doesn't have enough RAM, but I wanted to throw it your way just to make sure.\n\nh1. Description\n\nIf a user installs the PE onto a system with 1GB of RAM the Puppet Server will eventually die with the following message in syslog:\n\n{code}Sep 12 13:34:08 centos6 kernel: java invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0          \nSep 12 13:34:08 centos6 kernel: java cpuset=/ mems_allowed=0                                                            \nSep 12 13:34:08 centos6 kernel: Pid: 7054, comm: java Not tainted 2.6.32-431.11.2.el6.x86_64 #1                         \nSep 12 13:34:08 centos6 kernel: Call Trace:                                                                             \nSep 12 13:34:08 centos6 kernel: [<ffffffff810d05a1>] ? cpuset_print_task_mems_allowed+0x91/0xb0                         \nSep 12 13:34:08 centos6 kernel: [<ffffffff81122950>] ? dump_header+0x90/0x1b0                                           \nSep 12 13:34:08 centos6 kernel: [<ffffffff81227a5c>] ? security_real_capable_noaudit+0x3c/0x70                          \nSep 12 13:34:08 centos6 kernel: [<ffffffff81122dd2>] ? oom_kill_process+0x82/0x2a0                                      \nSep 12 13:34:08 centos6 kernel: [<ffffffff81122d11>] ? select_bad_process+0xe1/0x120                                    \nSep 12 13:34:08 centos6 kernel: [<ffffffff81123210>] ? out_of_memory+0x220/0x3c0                                        \nSep 12 13:34:08 centos6 kernel: [<ffffffff8112fb2f>] ? __alloc_pages_nodemask+0x89f/0x8d0                               \nSep 12 13:34:08 centos6 kernel: [<ffffffff81167aaa>] ? alloc_pages_current+0xaa/0x110                                   \nSep 12 13:34:08 centos6 kernel: [<ffffffff8111fd47>] ? __page_cache_alloc+0x87/0x90                                     \nSep 12 13:34:08 centos6 kernel: [<ffffffff8111f72e>] ? find_get_page+0x1e/0xa0                                          \nSep 12 13:34:08 centos6 kernel: [<ffffffff81120ce7>] ? filemap_fault+0x1a7/0x500                                        \nSep 12 13:34:08 centos6 kernel: [<ffffffff8114a094>] ? __do_fault+0x54/0x530                                            \nSep 12 13:34:08 centos6 kernel: [<ffffffff8114a667>] ? handle_pte_fault+0xf7/0xb00                                      \nSep 12 13:34:08 centos6 kernel: [<ffffffff8114b29a>] ? handle_mm_fault+0x22a/0x300                                      \nSep 12 13:34:08 centos6 kernel: [<ffffffff8114dc56>] ? find_vma+0x46/0x80                                               \nSep 12 13:34:08 centos6 kernel: [<ffffffff8104a8d8>] ? __do_page_fault+0x138/0x480                                      \nSep 12 13:34:08 centos6 kernel: [<ffffffff8100b9ce>] ? common_interrupt+0xe/0x13                                        \nSep 12 13:34:08 centos6 kernel: [<ffffffff8152da7e>] ? do_page_fault+0x3e/0xa0                                          \nSep 12 13:34:08 centos6 kernel: [<ffffffff8152ae35>] ? page_fault+0x25/0x30                                             \nSep 12 13:34:08 centos6 kernel: Mem-Info:                                                                               \nSep 12 13:34:08 centos6 kernel: Node 0 DMA per-cpu:                                                                     \nSep 12 13:34:08 centos6 kernel: CPU    0: hi:    0, btch:   1 usd:   0                                                  \nSep 12 13:34:08 centos6 kernel: Node 0 DMA32 per-cpu:                                                                   \nSep 12 13:34:08 centos6 kernel: CPU    0: hi:  186, btch:  31 usd: 154                                                  \nSep 12 13:34:08 centos6 kernel: active_anon:107862 inactive_anon:109390 isolated_anon:0                                 \nSep 12 13:34:08 centos6 kernel: active_file:41 inactive_file:0 isolated_file:0                                          \nSep 12 13:34:08 centos6 kernel: unevictable:0 dirty:0 writeback:0 unstable:0                                            \nSep 12 13:34:08 centos6 kernel: free:12237 slab_reclaimable:3309 slab_unreclaimable:13484                               \nSep 12 13:34:08 centos6 kernel: mapped:607 shmem:902 pagetables:3806 bounce:0                                           \nSep 12 13:34:08 centos6 kernel: Node 0 DMA free:4652kB min:668kB low:832kB high:1000kB active_anon:5140kB inactive_anon:5836kB active_file:8kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15368kB mlocked:0kB dirty:0kB writeback:0kB mapped:12kB shmem:8kB slab_reclaimable:36kB slab_unreclaimable:12kB kernel_stack:8kB pagetables:44kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes                                \nSep 12 13:34:08 centos6 kernel: lowmem_reserve[]: 0 994 994 994                                                         \nSep 12 13:34:08 centos6 kernel: Node 0 DMA32 free:44296kB min:44384kB low:55480kB high:66576kB active_anon:426308kB inactive_anon:431724kB active_file:156kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:1018016kB mlocked:0kB dirty:0kB writeback:0kB mapped:2416kB shmem:3600kB slab_reclaimable:13200kB slab_unreclaimable:53924kB kernel_stack:3296kB pagetables:15180kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:252 all_unreclaimable? yes                                                                                                                     \nSep 12 13:34:08 centos6 kernel: lowmem_reserve[]: 0 0 0 0                                                               \nSep 12 13:34:08 centos6 kernel: Node 0 DMA: 9*4kB 11*8kB 9*16kB 9*32kB 4*64kB 6*128kB 2*256kB 1*512kB 0*1024kB 1*2048kB 0*4096kB = 4652kB                                                                                                       \nSep 12 13:34:08 centos6 kernel: Node 0 DMA32: 582*4kB 372*8kB 405*16kB 244*32kB 122*64kB 58*128kB 13*256kB 2*512kB 3*1024kB 1*2048kB 0*4096kB = 44296kB                                                                                         \nSep 12 13:34:08 centos6 kernel: 75201 total pagecache pages                                                             \nSep 12 13:34:08 centos6 kernel: 74248 pages in swap cache                                                               \nSep 12 13:34:08 centos6 kernel: Swap cache stats: add 73691698, delete 73617450, find 24536550/32564142                 \nSep 12 13:34:08 centos6 kernel: Free swap  = 0kB                                                                        \nSep 12 13:34:08 centos6 kernel: Total swap = 2064376kB                                                                  \nSep 12 13:34:08 centos6 kernel: 262127 pages RAM                                                                        \nSep 12 13:34:08 centos6 kernel: 7073 pages reserved                                                                     \nSep 12 13:34:08 centos6 kernel: 12559 pages shared                                                                      \nSep 12 13:34:08 centos6 kernel: 228158 pages non-shared\n{code}\n\nh2. Attachments\n\n* Syslog\n* Puppet Log\n* Java defaults\n\nh2. Repro Steps\n\n# Install PE on master with JVM Puppet Master enabled.\n# Verify master is operational.\n# Let the master run idle for a long time. (Multiple days)\n# On the master execute the following command:\n{panel}puppet agent  -t{panel}\n\nh2. Expect\n\nThe Puppet agent (located on the master) should retrieve and process the catalog successfully.\n\nh2. Actual\n\nThe Puppet agent fails with the error:\n\n{code}Warning: Unable to fetch my node definition, but the agent run will continue:                                           \nWarning: Connection refused - connect(2)                                                                                \nInfo: Retrieving pluginfacts                                                                                            \nError: /File[/var/opt/lib/pe-puppet/facts.d]: Failed to generate additional resources using 'eval_generate': Connection refused - connect(2)                                                                                                    \nInfo: Retrieving plugin                                                                                                 \nError: /File[/var/opt/lib/pe-puppet/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet://centos6.vm/pluginfacts: Connection refused - connect(2)                                                                         \nWrapped exception:                                                                                                      \nConnection refused - connect(2)                                                                                         \nError: /File[/var/opt/lib/pe-puppet/lib]: Failed to generate additional resources using 'eval_generate': Connection refused - connect(2)                                                                                                        \nError: /File[/var/opt/lib/pe-puppet/lib]: Could not evaluate: Could not retrieve file metadata for puppet://centos6.vm/plugins: Connection refused - connect(2)                                                                                 \nWrapped exception:                                                                                                      \nConnection refused - connect(2)                                                                                         \nInfo: Loading facts                                                                                                     \nError: Could not retrieve catalog from remote server: Connection refused - connect(2)                                   \nWarning: Not using cache on failed catalog                                                                              \nError: Could not retrieve catalog; skipping run                                                                         \nError: Could not send report: Connection refused - connect(2) \n{code}", "environment": "Master/Agent: CentOS 6.5 x64 1GB RAM", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15198", "fixedVersions": ["SERVER 0.3.0"], "id": "15198", "issueType": "Bug", "key": "SERVER-4", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "resolution": "Fixed", "resolutionDate": "2014-10-21T16:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Dies When Java Runs Out of Memory", "timeSpent": "PT0S", "updated": "2014-12-16T12:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "See jruby github issue", "created": "2014-09-12T10:32:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] says that jruby 1.7.16 is out, which should have the fix for this", "created": "2014-09-30T15:02:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "https://github.com/jruby/jruby/releases/tag/1.7.16", "created": "2014-09-30T15:06:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The more I think about it the more I think we should probably wait and do this after we have branched for PE 3.4 release.  We've done some long-ish test runs with 1.7.15 and the known issue that is fixed by 1.7.16 is more of an annoyance than a blocker.", "created": "2014-09-30T16:32:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I just tested running the JRuby spec tests with the {{PUPPET_LOADED=true}} removed from the Rakefile.  I was expecting them to fail, but they passed.  So ... it looks like that env var is not needed after all?  I suspect I have an environment problem or something that's allowing the specs to pass but hiding the underlying problem.", "created": "2014-11-12T18:03:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I don't remember the exact details, but I do remember that it is finicky and has to do with whether or not Puppet is already on your load path, plus the state of your .bundler directory, your Gemfile.lock file, etc.\n\nIt might be easier to use the example code on the jruby github issue to create an initial repro case.\n\nhttps://github.com/jruby/jruby/issues/1965", "created": "2014-11-13T09:01:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I do think that the tests ran fine on my machine for a while and it wasn't until we merged it that we started seeing the failures, via Jenkins.  Eventually I was able to repro locally.", "created": "2014-11-13T09:08:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Yup, I suspected it was something along those lines.", "created": "2014-11-13T10:41:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "So, given what we know (or vaguely remember) about this issue, here's what I would suggest as a fix:\n\n* delete the {{PUPPET_LOADED=true}} from our Rakefile\n* upgrade to JRuby 1.7.16\n* give it a couple days in CI, to see if we see any more failures in Jenkins like we did before.\n* if not, delete the hack from Puppet's Gemfile\n\nHow does that sound?", "created": "2014-11-13T16:55:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Sounds reasonable.  We do need to make sure we have a good feel for whether we're OK bumping the jruby version to 1.7.16 in PE 3.7.1, though.  Maybe worth combing through the changelog.", "created": "2014-11-13T17:13:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "Given the short timeline for PE 3.7.1 and potential risk of upgrading JRuby, this seems like it would be better to hold until PE.next.  That would also give us (more) time to do some long-running performance/soak testing.  Not to mention the fact that there's no reason, AFAIK, to try to get this into 3.7.1.", "created": "2014-11-13T17:26:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "that's probably a good assessment.  so then the next question is, is everything else we have planned for OSS 1.0 something we want in for PE 3.7.1?  Without actually going over the list, my gut is \"yes\"", "created": "2014-11-13T17:37:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. is everything else we have planned for OSS 1.0 something we want in for PE 3.7.1?\n\nI just looked at the list for SERVER 1.0 ... how about we discuss this in-person tomorrow?", "created": "2014-11-13T18:04:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "deal", "created": "2014-11-13T18:10:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "JRuby 1.7.17 is out and has a few fixes that our users have reported issues around (crypt() implementation, potentially some BSD compatibility issues?).  We should probably bump up to that as soon as 1.0 is released.", "created": "2014-12-11T09:08:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:623c08e1562ab90069f8aed4] - This was one of the issues you asked about last week.  This issue only affects tests - no user-facing changes.  Let me know if you still want a solid version # for it.", "created": "2015-03-03T12:59:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "If it's testing only, leaving it at 1.x is cool! ", "created": "2015-03-03T16:12:00.000000"}], "components": [], "created": "2014-09-11T17:39:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@16655f4d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypdnj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1015769258_*|*_1_*:*_1_*:*_3474581226_*|*_10007_*:*_1_*:*_172575011_*|*_3_*:*_1_*:*_7169175_*|*_5_*:*_1_*:*_55027901088_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4817144374"}], "description": "Some time between JRuby 1.7.13 and 1.7.15, they made some changes related to how they expand file paths.  This caused some breakage for bundler when a Gemfile tries to use ':path':\n\nhttps://github.com/jruby/jruby/issues/1965\n\nThis causes a problem for us because Puppet's Gemfile has lines like this and we load Puppet's Gemfile during our spec tests.\n\nWe're filing a workaround patch for Puppet's Gemfile that will allow us to use an environment variable to modify the behavior (will link that ticket to this ticket).  However, once there is an upstream JRuby fix, we should revert that from the puppet gem file.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16669", "fixedVersions": ["SERVER 1.y", "SERVER 2.0.0"], "id": "16669", "issueType": "Task", "key": "SERVER-102", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2014-12-30T12:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "follow jruby gem path bug, and consider reverting Puppet Gemfile changes when fixed", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Everything is awesome.", "created": "2014-09-04T15:39:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Nicely resolved.", "created": "2014-09-22T17:07:00.000000"}, {"author": "557058:565ade5b-7469-421d-9294-bf7814d6cfb1", "body": "Propose that this be reopened as an ongoing issue", "created": "2019-03-27T03:47:00.000000"}], "components": [], "created": "2014-09-04T15:36:00.000000", "creator": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@115cda43"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyw6s7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_160552_*|*_6_*:*_1_*:*_0"}], "description": "Test ticket to see if this shows up correctly", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16306", "fixedVersions": [], "id": "16306", "issueType": "Bug", "key": "SERVER-1", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "resolution": "Fixed", "resolutionDate": "2014-09-04T15:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Everything is terrible", "timeSpent": "PT0S", "updated": "2019-03-27T03:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:151c148a-2bb4-4fdc-9320-df94e73b0363] [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Do either of you have any thoughts on the best place for these tests? It seems like this is a class of tests that may not apply the MRI puppet at all and should probably live in the puppet-server repository. This would make it possible to run the same tests against both PE and FOSS. ", "created": "2014-10-14T15:33:00.000000"}, {"author": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] I think that the acceptance tests for this tool should live inside the puppet-server repo.", "created": "2014-10-14T15:49:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] Is there any official documentation for the gem command that I can use as the basis for this acceptance test?", "created": "2014-10-14T16:12:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] yes, they should go in puppet-server repo.  At least for FOSS.  Not sure about PE", "created": "2014-10-14T16:31:00.000000"}, {"author": "557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] I'd prefer to just run PE against tests in the puppet-server repo without the FOSS presuite. I think tests should only go in pe-puppet-server-extensions if they shouldn't or can't be run against the FOSS puppet-server for whatever reason.\n\nI misunderstood the purpose of the gem subcommand, thanks for the clarification!", "created": "2014-10-14T16:43:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:3a3de6c6-95b1-47b3-a52a-6a6865ff9241] re: running tests against PE directly via Puppet Server repo", "created": "2014-10-14T16:54:00.000000"}], "components": ["Puppet Server"], "created": "2014-08-26T16:37:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45dfcd0f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnc7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_656720519_*|*_1_*:*_1_*:*_4233679464_*|*_10007_*:*_1_*:*_255487920_*|*_3_*:*_3_*:*_460440670_*|*_4_*:*_1_*:*_8019_*|*_5_*:*_1_*:*_559324016_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_59978945"}], "description": "When puppetserver is installed from packages, it will install a cli tool called 'puppetserver' that can be used to execute subcommands.  One of the supported subcommands is 'gem', which allows you to list and install gems.\n\nWe need an acceptance test for this; it should probably do at least the following:\n\n* call 'gem list' and capture the list of installed gems\n* call 'gem install something'\n* call 'gem list' and make sure the new gem is there\n* call 'gem uninstall something'\n* call 'gem list' and make sure the new gem is gone.\n\nWe are going to need this same test coverage for both OSS and PE.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16305", "fixedVersions": ["SERVER 0.4.0"], "id": "16305", "issueType": "Task", "key": "SERVER-91", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-11-06T16:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "add tests for gem cli tool", "timeSpent": "PT0S", "updated": "2014-11-06T16:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "attachments": [], "comments": [{"author": "557058:79cfdf4b-b7db-45b4-904b-68a82fb46933", "body": "I've talked to [~accountid:557058:8527c9e8-8e3f-451c-b529-f6fe014233ed] [~accountid:557058:4d037d5f-6e67-465d-84d3-9631f5599649] and [~accountid:557058:468002b0-7677-4624-b195-4b7b813f8dc1] about this. To their knowledge no PE customer is using SSL termination. \n\nA number of FOSS users may be, though I am unclear when the JVM master will be part of FOSS.", "created": "2014-08-28T10:23:00.000000"}, {"author": "557058:4d037d5f-6e67-465d-84d3-9631f5599649", "body": "I guess to clarify - we've not setup anything like this with PE customers.  I'm sure there may be customers USING it, but it wasn't done in our gigs.", "created": "2014-08-28T12:05:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:623a4a827910a200718ac35d] Here is that ticket that I mentioned to you at PuppetConf!", "created": "2014-09-29T16:52:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "Thanks [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14]! So, I'll chime in here as a PE customer. We are doing SSL termination on our F5s.\n\nWe have more than a dozen PE Puppetmasters just doing catalog compiles and file-related requests (file serving/filebucket) in a dev, qa, or prod capacity. The primary driver is load (it takes 10 just to serve our primary prod workload) though testing/HA would be secondary reasons.\n\nSSL terminating on the F5 provides a few different advantages to us:\n- We leverage the dedicated SSL hardware in our F5s instead of burning precious Puppetmaster CPU cycles on encryption\n- We offload all of the SSL connection setup/certificate exchange round-trips to the F5s before even sending anything to the Puppetmasters\n- We follow our local site policies and standards regarding SSL termination/connection handling\n- The Puppetmaster configuration is quite a bit simpler. Instead of having to handle certificate management in a dozen+ places we keep it consolidated on the F5s\n- By SSL terminating on the F5 we can examine the actual incoming request and do clever things with the F5s iRules and other policy features (e.g., redirecting requests for the certificate API endpoints to the dedicated certificate servers) which allows us to use fewer user-visible endpoints/public IPs, direct certain Puppet environment compiles to certain pools of servers, etc.\n", "created": "2014-09-30T07:14:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] I was talking to [~accountid:623a4c3b4a57610068e6782b] about this yesterday", "created": "2014-10-02T15:26:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Yeah, that makes sense since we're essentially writing a \"no-certificate-available\" workaround.  I'll dig around for that.", "created": "2014-10-02T15:29:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "It looks like the rack handler might have been just reading the client certificate via a hard-coded environment variable, SSL_CLIENT_CERT.  From https://github.com/puppetlabs/puppet/blob/master/lib/puppet/network/http/rack/rest.rb#L89:\n\n{code}\n# This environment variable is set by mod_ssl, note that it\n# requires the `+ExportCertData` option in the `SSLOptions` directive\ncert = request.env['SSL_CLIENT_CERT']\n{code}\n\nIn various Apache VHost config samples on this feature, I haven't seen HTTP X header codified for the purpose of passing along the payload of the client certificate at the HTTP layer.  Maybe that means we'll need to define a new one for Puppet Server?  I'm also not sure if a RequestHeader in an Apache VHost config would support encoding the cert, e.g., with something like this:\n\n{code}\nRequestHeader set X-Client-Cert %{SSL_CLIENT_CERT}\n{code}\n\nNot sure how Apache would encode this into the header, e.g., Base-64 encoded?  This could also add considerable overhead to each web request and might require tuning to bump up the max length for a header on the client and/or server side.  Would take some more investigation to understand the implications.", "created": "2014-10-02T16:24:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "... although if it's true that it was not possible to send the client certificate in an HTTP header and have the Puppet rack handler use it, this aspect of the implementation would seem to be a new feature.", "created": "2014-10-02T16:30:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "So as far as I can tell, if we wanted to support the case where an F5 is terminating SSL and handing the request off to Puppet Server, we're going to need to support listening on a plain HTTP and grabbing the authentication info and the certificate itself via HTTP headers. \n\n[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], Should all of this work be encompassed by this single ticket? Or should we break this work down a little more?", "created": "2014-10-06T13:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "We already support listening on plain HTTP, via our jetty config.  So, as far as I understand, it's just a matter of reading the three header values and putting them into the correct cert-related fields in our request object.\n\nI'm all for breaking it down further if you think it would allow the ticket to be parallelized though.", "created": "2014-10-06T14:20:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Ahh yes, of course, thanks for the reminder. After some discussion with [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] the path forward has become clear on this, but the header buffer size may still be a concern. That should shake out in testing, though.", "created": "2014-10-06T14:47:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] and I were debating about whether an HTTP header for passing through the client certificate might be worthwhile to defer to a separate ticket since this part appears to be a new feature - not just for preserving backward compatibility with external SSL termination for the MRI master.  Also, this might have effects on HTTP header sizes which could involve work in the tk-webservices-jetty9 library, not sure.  What do you think?", "created": "2014-10-06T14:59:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I guess I'm OK with that if it's actually a new feature, but I'm confused now.  From recent conversations with [~accountid:623a4c3b4a57610068e6782b] and [~accountid:70121:199f31c7-67c7-42b0-b148-18ad3a391ab0], plus folks at PuppetConf, I'm under the impression that the following things are true:\n\n1. Puppet can't access the trusted information that it would need for catalog compilation without having access to the cert, or at least the trusted key/value pairs out of the cert.\n2. These headers are the mechanism that we use under Passenger to plumb the cert data into the Rack handler, and\n3. Existing PE users are doing F5 termination with Passenger master today, and not getting compile failures due to the absence of the trusted data.\n\nSo something's not lining up here.  Maybe the current support for using these X-headers doesn't allow you to pass along the trusted data at all?  So the current users who are doing termination with their F5 just don't need / aren't using the trusted data?  That seems like a big deal and seems like something that would have come up before now?\n\nEven without the F5 termination, if Passenger is using the headers to get the certname into the Rack request, how's it dealing with the cert/trusted data?\n\nIn any case it seems like if we broke this up into two tickets then two different devs could work on it, so I guess I'm in favor of it for that reason if nothing else.  And if we are truly breaking new ground on the cert/trusted data parts of this, then we need to put some thought into it, so it should definitely be a separate ticket in that case.", "created": "2014-10-06T15:20:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], see my comments from earlier in this thread on how it appears to me that the client certificate is being passed down through the Rack request handler via an Apache environment variable as opposed to an HTTP header.  Assuming this is valid, I agree that it does seem like the need for trusted data in the scenario where SSL is terminated outside of the master would have come up at some point.  [~accountid:623a4c3b4a57610068e6782b], can you confirm that there isn't already an HTTP header defined for this in current Puppet code?", "created": "2014-10-06T15:31:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] sorry, missed your previous comments.  That makes sense, thanks.", "created": "2014-10-06T15:36:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "HTTP headers are exposed to the ruby code as environment variables prefixed with {{HTTP_}}. The puppet code looks for {{SSL_CLIENT_CERT}}, which is normally configured with the apache {{\\+ExportCertData}} directive.  If the certificate is being forwarded from a load balancer or something else that terminates the SSL, then the other system would need to forward the client certificate. This could take the form of an HTTP header from the SSL terminator to the ruby process. If that is done then a user would need to get the {{SSL_CLIENT_CERT}} environment variable set correctly. We don't have anything that does this out of the box, but given the flexibility of most of these systems, it is almost definitely doable :) They can either write some rack middleware, or maybe use some rack server or apache configuration to map HTTP headers to specific environment variables.\n\nThe reason that most setups don't blow up is that trusted data is not absolutely required. If it is there, then it is available. If the certificate is not available, then you just don't have access to that data in the manifests. Trusted data is still a pretty new feature and I don't know how many people are actually using it yet.", "created": "2014-10-06T15:46:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Cool, I'll just stick to supporting the authenticated and cn HTTP headers, and we can spin off the cert-in-a-header issue into a new ticket. ", "created": "2014-10-06T15:49:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Thanks for the clarification, [~accountid:623a4c3b4a57610068e6782b].  Since there's no specifically defined mechanism for how the client certificate would be passed over the wire for externally-terminated SSL connections in the MRI Ruby master Apache/Passenger world, sounds like we'll need to define something more formally for Puppet Server.  The separate ticket to cover this sounds like a good idea.  [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] - are you going to create that?", "created": "2014-10-06T16:05:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Yep, I can do that. It's captured in SERVER-39", "created": "2014-10-06T16:56:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "[~accountid:623a4c3b4a57610068e6782b] is correct. It is quite possible, including passing in the SSL cert (with a bit of work).\n\nAs an example, in our environment we start with PE's Puppetmaster httpd and do the following:\n* Remove all of the mod_ssl related directives\n* Remove the \"RequestHeader\" directives\n* Add the following SetEnvIf directives, for the authentication:\n{noformat}\nSetEnvIf X-Client-Verify \"(.*)\" SSL_CLIENT_VERIFY=$1\nSetEnvIf X-Client-DN \"(.*)\" SSL_CLIENT_S_DN=$1\n{noformat}\n* Add the following mod_rewrite rules for the SSL certificate (which arrives as a URI-encoded PEM certificate in the X-Client-Cert header):\n{noformat}\n    RewriteEngine on\n    RewriteMap decode int:unescape\n    RewriteCond %{HTTP:X-Client-Cert} ^(.*)$\n    RewriteRule ^(.*)$ - [E=SSL_CLIENT_CERT:${decode:%1}]\n{noformat}\n\nOn the F5 there is other code for sanitizing the incoming headers from the client, validating the SSL connection, etc, but the meat of the iRule we use boils down to:\n{noformat}\n  if { [SSL::cert count] > 0 } {\n    set subject \"/[X509::subject [SSL::cert 0]]\"\n    set result [X509::verify_cert_error_string [SSL::verify_result]]\n    if { [SSL::verify_result] == 0 } {\n      HTTP::header insert \"X-Client-Verify\" \"SUCCESS\"\n    } else {\n      HTTP::header insert \"X-Client-Verify\" \"$result\"\n      log local0. \"SSL_Cert_Verify_Error: [HTTP::host] $subject $result\"\n    }\n    HTTP::header insert \"X-Client-DN\" \"$subject\"\n    HTTP::header insert \"X-Client-Cert\" [URI::encode [X509::whole [SSL::cert 0]]]\n  } else {\n    log local0. \"SSL_Cert_Verify_Error: [HTTP::host]: No client cert provided ([IP::client_addr]:[TCP::client_port])\"\n    HTTP::header insert \"X-Client-Verify\" \"NONE\"\n  }\n}\n{noformat}\n\nAnd then in the master section of puppet.conf:\n{noformat}\nssl_client_verify_header = SSL_CLIENT_VERIFY\nssl_client_header = SSL_CLIENT_S_DN\ntrusted_node_data = true\n{noformat}\n\nThis provides authenticated clients with a populated $trusted hash. This is functional in our environment today with SSL termination on our F5s. So, while it may not have been documented as such and/or exposed as a configurable environment variable, it is also not entirely correct to say that \nthis would be an entirely new feature not previously available.\n\nThanks!", "created": "2014-10-07T08:26:00.000000"}, {"author": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "body": "Indeed, this behavior is documented here: https://docs.puppetlabs.com/puppet/latest/reference/services_master_rack.html but since Puppet Server is removing rack entirely, we will need to implement some other way of accomplishing this, which we will be tackling in SERVER-39", "created": "2014-10-07T12:57:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Sorry I'm coming in a bit late, but just to round up on [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] questions above:\n\n{quote}\nSo something's not lining up here. Maybe the current support for using these X-headers doesn't allow you to pass along the trusted data at all? So the current users who are doing termination with their F5 just don't need / aren't using the trusted data? That seems like a big deal and seems like something that would have come up before now?\n{quote}\n\nUsers are likely not yet using the certificate data. Aside from trusted data, which is a relatively new development that we only recently started promoting in a coordinated way, the only use for this was to get warnings on the master when agent certs neared expiration (see https://projects.puppetlabs.com/issues/7962 for the backstory).", "created": "2014-10-07T14:57:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "BTW Thanks for the detailed write-up and configs, [~accountid:623a4a827910a200718ac35d]!", "created": "2014-10-07T14:58:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Totally, thanks a ton [~accountid:623a4a827910a200718ac35d]!", "created": "2014-10-07T15:07:00.000000"}, {"author": "557058:cedccc1b-f1a9-45c9-a3e5-6b5e96ad99f0", "body": "Discussion spun off ticket SERVER-39", "created": "2014-10-17T15:42:00.000000"}], "components": [], "created": "2014-08-26T10:40:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@700fa2fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnev:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Aug/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_440525335_*|*_1_*:*_1_*:*_23395580_*|*_10007_*:*_1_*:*_161928794_*|*_3_*:*_1_*:*_613017423_*|*_10009_*:*_1_*:*_250409049_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_149608329_*|*_10006_*:*_1_*:*_2872001786"}], "description": "The Rack handler in core Ruby Puppet had support for reading a couple of custom X- headers -- one for client_dn and one for client_dn -- to determine the client node's name for authentication purposes.  See:\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/network/http/rack/rest.rb#L117\n\nThese headers would support the ability for a \"proxy\" terminating SSL from the client request to forward these headers on to the Puppet Master -- potentially in clear-text -- so that the Master could use these values to authenticate the client in lieu of an available client certificate.  The procedure for setting up the X- headers in a proxy server - specifically an Apache server - and the corresponding puppet.conf settings is covered in:\n\nhttps://docs.puppetlabs.com/puppet/latest/reference/config_ssl_external_ca.html#format-of-x-client-dn-request-header\n\nThe Puppet Server master.rb handler does not currently honor these headers.  For backward compatibility, it may make sense to for these headers to be honored.  Doing so would have security implications, though, in that there is no prescribed path for the Puppet Master to determine that the proxy forwarding these X- headers on to it is legitimate and acting on behalf of a legitimate client.\n\nThis ticket is intended to cover the research and implementation work to support this feature in the Puppet Server environment.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16668", "fixedVersions": ["SERVER 0.3.0"], "id": "16668", "issueType": "New Feature", "key": "SERVER-18", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Done", "resolutionDate": "2014-10-17T15:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Puppet Server Support for X-Client-DN and X-Client-Verify Headers", "timeSpent": "PT0S", "updated": "2015-06-16T17:34:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-08-18T12:51:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52e3f53c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3xmn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5648756579_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_69390238_*|*_10005_*:*_1_*:*_67220301931"}], "description": "For example, {{get-subject}}, {{get-csr-subject}}, etc.\n\nSee https://github.com/puppetlabs/puppet-server/pull/102#discussion_r16361027", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14874", "fixedVersions": [], "id": "14874", "issueType": "Task", "key": "SERVER-444", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "push BouncyCastle API calls from puppet-server in to jvm-ca", "timeSpent": "PT0S", "updated": "2016-12-09T16:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "body": "I have requested this feature so I will comment.\nWe have a corporate CA and the company policy is to not have self-signed certificates and have all certificates to be derived from corporate CA. Having puppet's CA as an intermediate CA would service this purpose.\n", "created": "2014-08-13T12:21:00.000000"}, {"author": "557058:be86c7d6-2807-42d3-9715-80da0cf607cd", "body": "Ticket is still in need information state.\nDo you still need me to provide additional information? I have tried to resolve it myself, but wasn't successful so far. Thanks", "created": "2014-10-11T09:18:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Hi, so I've investigated this with a number of people's help, who I'll tag here to keep me honest -- [~accountid:557058:bab073e0-f060-421e-9465-366c4060cc31], [~accountid:557058:e2510a0a-1767-444f-be52-bae9bb15d3f6], [~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f].\n\nThis isn't currently supported but there is a path to supportability inside the Clojure CA, which is why I've moved the ticket to the SERVER project rather than PUP. There are a couple of related issues, primarily [PUP-3788], which need fixing along with it, but the primary problem is that support for the use of External CAs with Puppet assume that if you're using an outside CA, you're using it for *issuance* in addition to chain-of-trust. \n\nThe request here is for a use-case that is sort of a hybrid: an external chain-of-trust but issuance from Puppet, and that's not something that we've built into the docs, testing and validation, or the cert issuance code. But I totally understand the rationale for it and agree that it makes a lot of sense to support, especially given corporate security requirements for organizations that want to assert greater audit controls over their PKI.\n\nWe are planning another iteration of the CA work in 2016, which will consolidate the certificate subsystem onto the new Clojure CA, provide new command-line tooling, and fix other edge cases like duplicate serial numbers being issued. I've added this ticket to the backlog for that work and will ensure that it's part of the functional requirements that we address.\n", "created": "2015-09-15T13:53:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "I got this configuration working, with a couple of caveats. I documented my process and the results on this gist:\n\nhttps://gist.github.com/ahpook/06d4cfda1d68c08bc82fbfdc40123b28\n\nIt'd be great if someone could independently verify the results", "created": "2016-05-22T23:58:00.000000"}, {"author": "557058:41dc5120-addb-42c7-aff4-2d00c35c948c", "body": "[~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] This needs more work before starting on it, correct? ", "created": "2017-08-22T16:00:00.000000"}, {"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "It would help to get a list of requirements for this feature - such as, does Puppetserver have to support full chain revocation checking, is leaf checking sufficient, or can we skip revocation checking entirely? (Right now Puppetserver says it supports CRL bundles but it doesn't - the actual code paths require that CRL files contain a single PEM.) In addition do we have to support CA cert bundle distribution? Do we need to provide a way to bootstrap the intermediate CA - such as have Puppetserver or Puppet emit a CSR for the intermediate CA and have a command for receiving the generated certificate, or can we rely on people copying the right files to the right location?\n\nRight now we can make some judgement calls on what should be implemented but it would be helpful to have a more specific list of needs so we don't over/undershoot the requirements.", "created": "2017-08-23T11:56:00.000000"}, {"author": "557058:6f0c2893-f732-4855-a9f6-9331ad57ed6e", "body": "The only reason I can see for having Puppet Server able to issue chain-complete certificates is so that one can use the Puppet Agent certificate for generic services such as HTTPS, MQTT, RabbitMQ, FTPS, etc. With these uses in mind, then the Puppet system only requires minimal alteration.\n\n* The Puppet Server needs to serve up a complete certificate chain when https://$ca_server:$ca_port/v1/certificate/ca is queried. (That is, the complete content of the $ssldir/certs/ca.pem file, not just whatever subset it deems worthy.) This is because the complete chain will be needed by all those services, plus it simplifies the Puppet Agent's internal certificate verification. This eliminates the need to manually distribute the ca.pem file as a workaround if it is anything besides a self-signed certificate.\n\n* The Puppet Agent needs only verify that the certificate used by the Puppet Server was signed by the same intermediate certificate as its own. The Puppet system is basically flat, with the agents talking to the servers. So long as a single certificate, be it a top-level CA (as in the default configuration) or an intermediate CA, signed both the server and client end certificates, the Puppet system will function as expected.\n\n* The Puppet Agent needs to be modified to simply perform certificate revocation checking through the existing Puppet Server facility. It should only check for certificate revocation by the Puppet Server's certificate signing system. No higher checking is needed. Why? Because: 1. The rest of the chain will be checked by those other services. 2. This provides an equivalent level of protection to the standard, self-signed Puppet configuration. 3. If your Puppet Server's certificate is compromised then the network is already compromised and revoking it will happen too late to save the Puppet Agents. This eliminates the need to use the \"certificate_revocation = false\" configuration statement workaround on Puppet Agents if anything besides a self-signed certificate is being used on the Puppet Server.\n\n* Puppet Server needs to make its CRL available at the URL specified in the certificates it signs, or accept a URL in its configuration where the administrator can host the CRL. This way those other services can provide proper revocation checking themselves. This is optional for the initial deployment, but should be done eventually.\n\nThese relatively simple changes should allow the Puppet system to function as designed, while adding simple support for those additional services. Puppet is 90% there already, as this can actually be achieved now, albeit only with the couple workarounds mentioned above. Why not take it the rest of the way?", "created": "2017-11-19T14:20:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is being fixed via SERVER-2171.", "created": "2018-06-08T16:20:00.000000"}], "components": [], "created": "2014-08-13T11:29:00.000000", "creator": "557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@79a72575"}, {"fieldName": "CS Business Value", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "4 - $$$$$"}, {"fieldName": "CS Frequency", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "2 - 5-25% of Customers"}, {"fieldName": "CS Impact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This is a common ask from customers, especially those which are very security conscious. While this is possible today it's very difficult and as far as we know not a tested, documented, or supported configuration for PE. \n\nIt should be made a supported configuration and also a requirement for any rewrite of the current Puppet CA."}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "CS Priority", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Normal"}, {"fieldName": "CS Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "3 - Serious"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-7877"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylw3j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Aug/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_10117039439_*|*_3_*:*_1_*:*_42457_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_4_*:*_50017672973_*|*_10006_*:*_1_*:*_60410781593"}], "description": "Puppet should support  a CA configuration where an external CA would issue an intermediate CA for puppet CA server. Puppet then will use that intermediate CA to issue certificates the same way it does by default with it's own self-signed certificate. ", "epicLinkSummary": "Future Work for Intermediate CA Improvements", "estimate": "PT0S", "externalId": "17262", "fixedVersions": ["SERVER 6.0.0"], "id": "17262", "issueType": "New Feature", "key": "SERVER-895", "labels": ["Server"], "originalEstimate": "PT0S", "parent": "27263", "parentSummary": "Future Work for Intermediate CA Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:26c5159c-b2b1-4782-abbb-fb74eaa2c664", "resolution": "Duplicate", "resolutionDate": "2018-06-08T16:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "SSL configuration with intermediate CA", "timeSpent": "PT0S", "updated": "2018-06-08T16:21:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "623e7507866b810069e57527", "body": "I just threw up PRs for SERVER-155 and SERVER-260. It looks like there was only one call into 'Puppet::Util::Instrumentation', and it was removed by those code changes. As a result I'm throwing this into Ready for Merge.", "created": "2014-12-18T16:31:00.000000"}, {"author": "623e7507866b810069e57527", "body": "I'm kicking this back into \"To Do\" because it relies on the changes in SERVER-260, which we're dropping until the relevant commits are in Puppet and Facter.", "created": "2015-01-06T12:08:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Discussed with Ruth", "created": "2015-03-11T15:17:00.000000"}], "components": [], "created": "2014-08-07T12:01:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c142699"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PUP-3639"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3ev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Dec/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3983212657_*|*_1_*:*_1_*:*_6518865050_*|*_10007_*:*_2_*:*_1687023598_*|*_3_*:*_2_*:*_4581993_*|*_5_*:*_1_*:*_48877602941_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_8336696_*|*_10004_*:*_1_*:*_1471459968_*|*_10006_*:*_2_*:*_5008345276"}], "description": "In the jvm-puppet startup code, we're making some calls to the 'instrumentation' system that doesn't really seem to be used any longer?  I discussed this with [~accountid:623a4c3b4a57610068e6782b] and we agreed that we should just delete it for now.", "epicLinkSummary": "Green: Puppet 4.0 Changes/Deprecations", "estimate": "PT0S", "externalId": "17537", "fixedVersions": ["SERVER 2.0.0"], "id": "17537", "issueType": "Improvement", "key": "SERVER-100", "labels": [], "originalEstimate": "PT0S", "parent": "28947", "parentSummary": "Green: Puppet 4.0 Changes/Deprecations", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Fixed", "resolutionDate": "2015-03-11T17:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Get rid of calls to instrumentation stuff in jvm-puppet startup", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [], "components": [], "created": "2014-08-04T19:42:00.000000", "creator": "557058:bab073e0-f060-421e-9465-366c4060cc31", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ae2f896"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyvpif:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24336587225_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_34057780172"}], "description": "Create a test script with nested for loops in the approximate form of this:\nfor each $fileObj in (testfile, testdir)\nfor each $who in (user, group, world)\n  for each $op in ( + - =)\n    for each $permission in ( r w x X s t)\n       for each $whoapply in (nil, u, g, o)\n        while NumberOfGeneratedClauses > NumberOfClausestoGenerate   \n          do generateClauses for  ManifestEntry $fileObj, $who, $op, $permission, $whoapply\n\nso that every possible who op permission whoapply combination is generated, and so that a number of comma seperated clause are generated.\n\nThe above pseudocode has serious problems:: Hopefully the intent remains clear.\n\nValidate the manifest entry with references files and chmod directly, unless a better idea is found.  ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15883", "fixedVersions": [], "id": "15883", "issueType": "Task", "key": "SERVER-607", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:bab073e0-f060-421e-9465-366c4060cc31", "resolution": "Won't Do", "resolutionDate": "2016-06-10T16:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create all symbolic modes test case with up to N clauses", "timeSpent": "PT0S", "updated": "2016-06-20T03:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "14400", "aggregatetimeoriginalestimate": "14400", "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It might be the case that it'd be easier/better for us to put together our own test module for this rather than using existing ones", "created": "2014-08-04T19:33:00.000000"}], "components": [], "created": "2014-08-04T18:51:00.000000", "creator": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4bab23c1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:e2510a0a-1767-444f-be52-bae9bb15d3f6"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyvphb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Aug/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24339630616_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_49787827361"}], "description": "Stan, [~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] brought to our attention that we lack test cases for a forge module that contains Ruby gems. Can you please research modules on the forge that fit this [criteria|https://docs.google.com/a/puppetlabs.com/document/d/1RdQGQCMRMuXSgLdjjTk5JeJESsDG1PX-GrM4W9cwdqk/edit]?", "epicLinkSummary": null, "estimate": "PT14400S", "externalId": "16115", "fixedVersions": [], "id": "16115", "issueType": "Task", "key": "SERVER-611", "labels": [], "originalEstimate": "PT14400S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Research Puppet Modules on the Forge that Use Ruby Gems", "timeSpent": "PT0S", "updated": "2016-12-09T16:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f], [~accountid:557058:0f255f44-5dce-4849-80f5-c0db60d9b049], [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] - perhaps you can prioritize this as you dive back into working on this repo.", "created": "2015-01-16T13:53:00.000000"}], "components": [], "created": "2014-07-29T14:08:00.000000", "creator": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71a68d75"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywiw7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7369421515_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_72097969_*|*_10005_*:*_1_*:*_67219182436"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16651", "fixedVersions": [], "id": "16651", "issueType": "Task", "key": "SERVER-301", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "resolution": "Won't Do", "resolutionDate": "2016-12-09T16:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "setup Travis CI on jvm-certificate-authority", "timeSpent": "PT0S", "updated": "2016-12-09T16:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "36000", "aggregatetimeoriginalestimate": "36000", "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing \"Won't do.\"  No available resources, priority too low, and subject of proposed test isn't puppet-server specific.", "created": "2016-02-01T17:05:00.000000"}], "components": [], "created": "2014-07-16T11:09:00.000000", "creator": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@631d8dc2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyv3tb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26008985470_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_22832003411"}], "description": "Create automated tests for the following test cases: \n\n* Puppet Resource Type: schedule\n* Attribute: weekday\n* [https://testrail.ops.puppetlabs.net/index.php?/suites/view/51]", "epicLinkSummary": null, "estimate": "PT36000S", "externalId": "16035", "fixedVersions": [], "id": "16035", "issueType": "Task", "key": "SERVER-606", "labels": [], "originalEstimate": "PT36000S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "resolution": "Won't Do", "resolutionDate": "2016-02-01T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Automated Tests for Puppet Resource Type \"schedule\" Attribute \"weekday\"", "timeSpent": "PT0S", "updated": "2016-02-02T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "14400", "aggregatetimeoriginalestimate": "14400", "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing \"Won't do.\"  No available resources, priority too low, and subject of proposed test isn't puppet-server specific.", "created": "2016-02-01T17:05:00.000000"}], "components": [], "created": "2014-07-16T11:08:00.000000", "creator": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e4c23ea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyv3t3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26009033114_*|*_4_*:*_1_*:*_8402_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_22832010188"}], "description": "Create automated tests for the following test cases: \n\n* Puppet Resource Type: schedule\n* Attribute: repeat\n* [https://testrail.ops.puppetlabs.net/index.php?/suites/view/51]", "epicLinkSummary": null, "estimate": "PT14400S", "externalId": "15875", "fixedVersions": [], "id": "15875", "issueType": "Task", "key": "SERVER-604", "labels": [], "originalEstimate": "PT14400S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "resolution": "Won't Do", "resolutionDate": "2016-02-01T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Automated Tests for Puppet Resource Type \"schedule\" Attribute \"repeat\"", "timeSpent": "PT0S", "updated": "2016-02-02T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "18000", "aggregatetimeoriginalestimate": "18000", "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing \"Won't do.\"  No available resources, priority too low, and subject of proposed test isn't puppet-server specific.", "created": "2016-02-01T17:05:00.000000"}], "components": [], "created": "2014-07-16T11:07:00.000000", "creator": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42eaf303"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyv3sv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26009085040_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_22832034273"}], "description": "Create automated tests for the following test cases: \n\n* Puppet Resource Type: schedule\n* Attribute: range\n* [https://testrail.ops.puppetlabs.net/index.php?/suites/view/51]", "epicLinkSummary": null, "estimate": "PT18000S", "externalId": "15445", "fixedVersions": [], "id": "15445", "issueType": "Task", "key": "SERVER-603", "labels": [], "originalEstimate": "PT18000S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "resolution": "Won't Do", "resolutionDate": "2016-02-01T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Automated Tests for Puppet Resource Type \"schedule\" Attribute \"range\"", "timeSpent": "PT0S", "updated": "2016-02-02T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "14400", "aggregatetimeoriginalestimate": "14400", "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing \"Not doing.\"  No available resources, priority too low, and subject of test isn't puppet-server specific.", "created": "2016-02-01T17:04:00.000000"}], "components": [], "created": "2014-07-16T11:06:00.000000", "creator": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@575fd53"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyv3sn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26009137077_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_22831957417"}], "description": "Create automated tests for the following test cases: \n\n* Puppet Resource Type: schedule\n* Attribute: periodmatch\n* [https://testrail.ops.puppetlabs.net/index.php?/suites/view/51]", "epicLinkSummary": null, "estimate": "PT14400S", "externalId": "15251", "fixedVersions": [], "id": "15251", "issueType": "Task", "key": "SERVER-610", "labels": [], "originalEstimate": "PT14400S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "resolution": "Won't Do", "resolutionDate": "2016-02-01T17:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Automated Tests for Puppet Resource Type \"schedule\" Attribute \"periodmatch\"", "timeSpent": "PT0S", "updated": "2016-02-02T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "21600", "aggregatetimeoriginalestimate": "21600", "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing \"Won't do.\"  No available resources, priority too low, and subject of proposed test isn't puppet-server specific.", "created": "2016-02-01T17:05:00.000000"}], "components": [], "created": "2014-07-16T11:05:00.000000", "creator": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29d83ed4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyv3sf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26009193970_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_22831992994"}], "description": "Create automated tests for the following test cases: \n\n* Puppet Resource Type: schedule\n* Attribute: period\n* [https://testrail.ops.puppetlabs.net/index.php?/suites/view/51]", "epicLinkSummary": null, "estimate": "PT21600S", "externalId": "14844", "fixedVersions": [], "id": "14844", "issueType": "Task", "key": "SERVER-608", "labels": [], "originalEstimate": "PT21600S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "resolution": "Won't Do", "resolutionDate": "2016-02-01T17:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Automated Tests for Puppet Resource Type \"schedule\" Attribute \"period\"", "timeSpent": "PT0S", "updated": "2016-02-02T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "7200", "aggregatetimeoriginalestimate": "7200", "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing \"Won't do.\"  No available resources, priority too low, and subject of proposed test isn't puppet-server specific.", "created": "2016-02-01T17:06:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Closing \"Won't do.\"  No available resources, priority too low, and subject of proposed test isn't puppet-server specific.", "created": "2016-02-01T17:06:00.000000"}], "components": [], "created": "2014-07-16T11:04:00.000000", "creator": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a6bb985"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyv3s7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_26009255414_*|*_5_*:*_1_*:*_5958_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_22832045898"}], "description": "Create automated tests for the following test cases: \n\n* Puppet Resource Type: schedule\n* Attribute: name\n* [https://testrail.ops.puppetlabs.net/index.php?/suites/view/51]", "epicLinkSummary": null, "estimate": "PT7200S", "externalId": "17467", "fixedVersions": [], "id": "17467", "issueType": "Task", "key": "SERVER-602", "labels": [], "originalEstimate": "PT7200S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363", "resolution": "Won't Do", "resolutionDate": "2016-02-01T17:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Create Automated Tests for Puppet Resource Type \"schedule\" Attribute \"name\"", "timeSpent": "PT0S", "updated": "2016-02-02T11:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "Going to rename to the following:\n* repo name: jvm-ssl-utils\n* artifact name: puppetlabs/ssl-utils\n* Java class name: SSLUtils", "created": "2014-10-20T14:18:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "We should:\n* rename the repo via GitHub so we can save the history\n* do one final release from jvm-certificate-authority with redirections to the new repo/artifact", "created": "2014-11-25T11:59:00.000000"}, {"author": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "body": "bq. do one final release from jvm-certificate-authority with redirections to the new repo/artifact\n\nTo clarify, we should do one final release of jvm-ca before changing the class name and artifact name (in project.clj).  We should change the README and project.clj project description to say that this project has moved over to <new project name> so it's easier for users (developers) to see at the artifact level that the project has moved.", "created": "2015-01-14T11:37:00.000000"}], "components": [], "created": "2014-07-15T17:20:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["Emerald"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5878365c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:bab073e0-f060-421e-9465-366c4060cc31"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp927:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7778217783_*|*_10007_*:*_1_*:*_692163538_*|*_3_*:*_1_*:*_1029930353_*|*_5_*:*_1_*:*_4763552947_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_8027442695"}], "description": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14], [~accountid:557058:030c0c27-db47-4e72-b56f-d63a9eca4314] and myself all think to some degree that this repository - and even the core class - are no longer appropriately named.\n\nWe should come up with a better name, rename the repository and classes accordingly, and then adjust all the packaging/dependencies/pipeline/etc.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "16295", "fixedVersions": ["SERVER 1.0.8", "SERVER 2.0.0"], "id": "16295", "issueType": "Task", "key": "SERVER-101", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Fixed", "resolutionDate": "2015-02-03T13:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Rename the jvm-ca repo and classes", "timeSpent": "PT0S", "updated": "2015-03-30T17:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "+1, this seems like a good idea.  There may be other services inside Puppet Server (outside of just the JRuby service) for which we should also implement {{stop}}.\n\n[~accountid:557058:50693b46-2d67-4417-b1cc-9b21dadb467f] and I were just discussing how this could be implemented for the JRuby service in Puppet Server.  I think something like this would be good ...\n\n* The background thread should check {{@stop-requested?}}, which is a new atom wrapping a boolean, before each JRuby it initializes\n* The background thread does {{(deliver init-completed}}), where {{init-completed}} is a new promise, when it's done (either because it initialized all JRubies, or because it noticed that {{@stop-requested?}}).\n* The stop implementation immediately does {{(reset! stop-requested? true}}) and then does {{(deref init-completed}}) to prevent it from being restarted until the previous initialization phase has terminated.", "created": "2015-05-14T11:19:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "One other motivation we found recently for doing this is that if any internally-generated shutdowns from Puppet Server were to occur, any resources that the associated {{ScriptingContainers}} don't clean up which have persistent threads will cause Puppet Server to never shutdown.\n\nWe have an HTTP client which gets persisted per {{ScriptingContainer}} for the first request handled by the container.  This will happen for any request processed which involves having Puppet Server talk to PuppetDB or an External Node Classifier over HTTP, for example.  That client can have a number of persistent threads associated with it.", "created": "2015-11-13T15:23:00.000000"}], "components": [], "created": "2014-06-10T10:34:00.000000", "creator": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": ["jade"]}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5b6c4e30"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr1j:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Hack Week!"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_505220187_*|*_1_*:*_1_*:*_10827725351_*|*_10007_*:*_1_*:*_1322653029_*|*_3_*:*_1_*:*_1190076457_*|*_5_*:*_1_*:*_21670760494_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_860257524_*|*_10005_*:*_1_*:*_36199144771"}], "description": "Currently, there is no logic in Puppet Server's master service to halt the initialization of JRubyPuppet instances and cleanup any previously initialized ScriptingContainers when the Puppet Server service is shut down.\n\nFor the JRubyPool initialization case, this logic would be nice for improving performance for short-run Puppet Server service executions when the pool is intended to hold more than one instance.  For example, if the pool is intended to eventually have 8 instances in it but a shutdown is requested while we're in the middle of initializing the first instance - a situation that might happen frequently during testing - it could be nice to have Puppet Server, on completing the initialization of the first instance, detect that a shutdown has been requested and bail out on initializing any further instances.\n\nAlso, when the shutdown occurs, it would be nice to ensure that any threads spun up for initialization have terminated before control is returned to the Trapperkeeper framework to complete the shutdown process and that any ScriptingContainers previously initialized during the startup of the service have been terminated.  Both would serve to avoid leaving resources around between service executions.  These could help for repeated restarts for repl development - avoiding memory leaks / frequent needs to restart the process running the repl - and for avoiding any bleed through from one service execution to another which may have an adverse effect on unit test runs.\n\n\n\n", "epicLinkSummary": "Support HUP for faster restart", "estimate": "PT0S", "externalId": "16023", "fixedVersions": ["SERVER 2.3.0"], "id": "16023", "issueType": "Improvement", "key": "SERVER-537", "labels": [], "originalEstimate": "PT0S", "parent": "16343", "parentSummary": "Support HUP for faster restart", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "resolution": "Fixed", "resolutionDate": "2016-01-20T13:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Cleanup JRubyPuppet-related resources during shutdown", "timeSpent": "PT0S", "updated": "2016-09-27T10:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:bab073e0-f060-421e-9465-366c4060cc31", "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Comment from [~accountid:557058:635376c9-938d-43fd-9435-895dd93cbee5] on the PR:\n\n| Any reason why this needs to be in Java rather than just doing it in Ruby? Maybe Java would be faster?\nI'm not sure. I didn't even consider that option, because I thought that all \"shelling-out\" type things wouldn't work on JRuby", "created": "2014-04-22T12:26:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I moved this back into triage because I think it's something we should do for 3.4.", "created": "2014-09-15T15:18:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "We should definitely do something with STDERR:\n{code}\n(ExecutionStubImpl/executeCommand \"ls /asdf\")\n=> \"\"\n{code}", "created": "2014-10-10T14:53:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. Do we need to deal with exit codes in any way? Does the Puppet API expect those to be returned?\n\nNope.  AFAICT it just wants the execution stub to return STDOUT after executing the command.", "created": "2014-10-10T15:59:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "bq. Is there a good reason for our implementation of the shell logic to be implemented in Java rather than Ruby? Or, perhaps the question should be asked in the other direction--is there a reason we might want to write in in Ruby instead of Java?\n\nI've decided, for now, to leave this implementation in java instead of ruby because:\n\n1. it minimizes the amount of code change (especially important with a 1.0 release pending in the near future).\n2. our java implementation actually seems pretty reasonable to me.\n3. we haven't had any problems with the java implementation, and it's been in the codebase for several months.\n4. all of the options on http://stackoverflow.com/questions/2232/calling-bash-commands-from-ruby seem worse.", "created": "2014-10-10T16:05:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "{quote}\nDo we need to deal with exit codes in any way? Does the Puppet API expect those to be returned?\n\nNope. AFAICT it just wants the execution stub to return STDOUT after executing the command.\n{quote}\n\nIt looks like if an ExecutionStub isn't used in execution.rb in Puppet code that an instance of {{Puppet::Util::Execution::ProcessOutput}} which includes both stdout and the exit_status is returned:\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/execution.rb#L212\n\nIs this the behavior we want to be matching rather than just returning the process output in a string?", "created": "2014-10-13T10:04:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Looking at {{execution.rb}}, it seems like there are a few other things that the current Puppet Server implementation isn't honoring that may be important:\n\n1) The {{:squelch}} option for not returning stdout if set:\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/execution.rb#L197\n\n2) The {{:failonfail}} option for raising an ExecutionFailure if set and the exit_status from a command is not 0:\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/execution.rb#L202\n\n3) The {{:combine}} option for combining stderr and stdout into what gets returned from the command execution:\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/execution.rb#L175\n\n4) Directing stdin into the executed process from a file:\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/execution.rb#L173\n\n5) Closing of the files that {{execution.rb}} can open for stdin, stdout, and stderr.  Possible leak if Puppet Server doesn't close them?\n\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/util/execution.rb#L194 ", "created": "2014-10-13T10:33:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "stable", "created": "2014-10-17T11:31:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "passed CI in https://jenkins.puppetlabs.com/view/Puppet%20Server2/view/Master%20Branch/job/platform_puppet-server_integration-system_full-master/11/", "created": "2014-10-23T12:14:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "I will validate this for PE 3.7.1", "created": "2014-12-01T09:35:00.000000"}, {"author": "557058:bab073e0-f060-421e-9465-366c4060cc31", "body": "Validated that STDERR is logged.  For example:\n2014-12-01 10:58:00,027 WARN  [c.p.p.ExecutionStubImpl] Executed an external process which logged to STDERR: /bin/cat: /tmp/ifsum.txt: No such file or directory\n\nValidated that repeated runs with a generate function that runs \"cat /tmp/bigfile.txt\" where big file is 87k do not cause the puppet server to stop responding.  ", "created": "2014-12-01T12:51:00.000000"}], "components": [], "created": "2014-04-22T11:44:00.000000", "creator": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3538a455"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypndz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_8175162_*|*_1_*:*_1_*:*_14784717603_*|*_10007_*:*_2_*:*_980962007_*|*_3_*:*_2_*:*_125620898_*|*_5_*:*_1_*:*_1230188401_*|*_6_*:*_1_*:*_0"}], "description": "See PE-3679.\n\nRevisit the ExecutionStub implementation with a few questions in mind:\n\n1. Do we need to deal with STDERR in some way, in addition to STDOUT?\n2. Do we need to deal with exit codes in any way?  Does the Puppet API expect those to be returned?\n3. Is there a good reason for our implementation of the shell logic to be implemented in Java rather than Ruby?  Or, perhaps the question should be asked in the other direction--is there a reason we might want to write in in Ruby instead of Java?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "17566", "fixedVersions": ["SERVER 0.4.0"], "id": "17566", "issueType": "Improvement", "key": "SERVER-61", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "resolution": "Done", "resolutionDate": "2014-10-23T12:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Revisit ExecutionStub implementation", "timeSpent": "PT0S", "updated": "2014-12-01T16:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "I hacked on this a bit for the CA:\n\nhttps://github.com/KevinCorcoran/jvm-puppet/commit/62aef657c9e7571bc4598ca3a6cc2a57c71e5c47", "created": "2014-07-22T13:49:00.000000"}, {"author": "557058:635376c9-938d-43fd-9435-895dd93cbee5", "body": "[~accountid:557058:a3132145-aae4-410f-9f7a-85a3117a0c14] - I think this would be a really good thing to do sooner rather than later - especially as we are related issues like re-structuring the CA's API, et al.  I added it to the 'CA service' epic, but I'm not sure if that's appropriate or not.", "created": "2014-11-12T10:45:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "It's worth considering, so putting it into that epic is fine.\n\nI've heard some rumors from [~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] that they're not sure they want to keep using liberator though, so we need to make sure we know the outcome of that before we dive in.", "created": "2014-11-12T15:30:00.000000"}], "components": [], "created": "2014-03-14T11:21:00.000000", "creator": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2eb7a6a7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "SERVER-974"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:151c148a-2bb4-4fdc-9320-df94e73b0363"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywixj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Puppet Server"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jul/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_176336871_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_2947920694_*|*_10006_*:*_1_*:*_19111965411_*|*_10005_*:*_1_*:*_1725731763"}], "description": "In the CA's ring handler, the {{/certificate_status(es)}} endpoints are implemented using liberator.  However, the rest of the endpoints are not, and there is much ugly, manual hackery in-place to accomplish the things that you get \"for free\" by using liberator.  Porting these endpoints to use liberator would likely significantly improvement the cleanliness of that code, and it would also be good for consistency.  It would also make the API much more compliant with the HTTP spec.", "epicLinkSummary": "Clojure CA Service", "estimate": "PT0S", "externalId": "17178", "fixedVersions": [], "id": "17178", "issueType": "Improvement", "key": "SERVER-158", "labels": [], "originalEstimate": "PT0S", "parent": "15527", "parentSummary": "Clojure CA Service", "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0f255f44-5dce-4849-80f5-c0db60d9b049", "resolution": "Won't Fix", "resolutionDate": "2014-12-16T18:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "port the rest of the CA ring handler to use liberator", "timeSpent": "PT0S", "updated": "2016-09-07T07:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Starting with Puppet 3.4.0, you can embed arbitrary strings of data into the Certificate Signing Request (CSR) that the agent sends to the master. Details can be found here:\n\nhttp://docs.puppetlabs.com/puppet/3/reference/ssl_attributes_extensions.html\n\nThis can be combined with Policy Based Autosigning, also introduced in 3.4.0, which passes the CSR to an external script for verification:\n\nhttp://docs.puppetlabs.com/puppet/3/reference/ssl_autosign.html#policy-based-autosigning\n\nThis script could pull the IP out of the CSR and do the DNS checks.\n\nDo these capabilities meet your needs?", "created": "2014-03-17T13:05:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Closing as resolved by the support for arbitrary CSR attributes. If this support does not address your use case, please re-open this ticket with an example of use that is not covered by extending the CSR and using policy based autosigning.", "created": "2014-07-29T12:42:00.000000"}, {"author": "5d3754be2d50070c21a3c38f", "body": "This should be reopened. The arbitrary csr attributes are not helpful for this use case, as they are set by the client and not enforced in any way. \n\nBasically, what I would love to see is a second argument passed to the script with the IP address according to the server (as in, it's looking at the client ip address that is connecting to it). Otherwise the client could have an IP address of 10.32.4.83 but simply add an attribute of 10.73.2.2 and there would literally be no way for the autosign script to tell.", "created": "2015-07-30T02:12:00.000000"}, {"author": "623c0c12d32a94006a6495a0", "body": "I agree, this would be very useful, as all other information, except for the client IP are set by the client and therefore need to be considered untrusted and harmful.", "created": "2015-10-15T08:16:00.000000"}, {"author": "557058:362bc1c3-742f-4428-a556-fa2b03887e0f", "body": "Host IP addresses are more difficult to to \"spoof\" but should not be considered secure. Auto-signing will always be a security compromise.", "created": "2017-05-16T11:06:00.000000"}, {"author": "557058:0aae14b6-e8ef-4dd2-8b73-31f91b3cd3cd", "body": "Host IP address, as reported by the host, is not trustworthy. But if you use your DNS system and validate both forward and reverse DNS resolution, like CfEngine does (used to?), then you can be pretty sure that the host being built is the one you think it is. Making Host IP available simple enables this functionality.", "created": "2017-05-16T11:16:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "If the agent connects to the server via an HTTP proxy, then the peer IP address from the server's perspective will be that of the proxy, not the agent. And since the server doesn't know if the agent connected via a proxy or not, it seems dubious to pass the client IP to the autosign script. The request handler would need to check for {{X-Forwarded-For}}, etc and that gets complicated.", "created": "2018-09-26T22:11:00.000000"}, {"author": "557058:0aae14b6-e8ef-4dd2-8b73-31f91b3cd3cd", "body": "Josh, that sounds like a decision that can be made by each customer as it suits their deployment. \"Nobody should use it because somebody might use it improperly\" isn't much of an argument.", "created": "2018-09-27T08:57:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "It's unlikely we will implement such a thing due to the security issues mentioned.\n\nBut if you have need, you may want to look at puppetserver's autosign code, see https://github.com/puppetlabs/puppetserver/blob/1bc77d6dc22e2c03d42111ef47e1523fe1bcdd97/src/clj/puppetlabs/puppetserver/certificate_authority.clj#L1109. Since all of the autosign functionality now lives in puppetserver, I'm going to move this ticket to the SERVER project.", "created": "2021-02-16T12:20:00.000000"}, {"author": "61af86343618cd006f430854", "body": "It's unlikely we will implement such a thing due to the security issues mentioned.", "created": "2021-12-01T09:49:00.000000"}, {"author": "5d3754be2d50070c21a3c38f", "body": "The security issues mentioned above are pretty stupid. AWS institutes source destination checks on packets so we can be sure that the IPs are accurate, and it's pretty easy to avoid using a proxy. You're using security as an excuse to keep something insecure.", "created": "2021-12-01T09:58:00.000000"}, {"author": "5d3754be2d50070c21a3c38f", "body": "Frankly, it's issues like this that have driven me away from Puppet. The cloud is real and it's not going away, but refusing to implement a system that makes it easier to use cloud scaling is a sign that this product is just trapped a legacy mindset.", "created": "2021-12-01T09:59:00.000000"}], "components": [], "created": "2014-03-13T17:23:00.000000", "creator": "557058:0aae14b6-e8ef-4dd2-8b73-31f91b3cd3cd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10fdaafe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hytc9r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Mar/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_57040084259_*|*_6_*:*_2_*:*_31584601315_*|*_10004_*:*_1_*:*_11576216829_*|*_10005_*:*_1_*:*_143423471419"}], "description": "When provisioning a host I have control over IP address assignment and especially DNS resolution. I would like to use those to authenticate an autosign request for a puppet client. Something like this:\n\nThe host will be autosigned if all the following are true:\n* The client's IP address resolves to a hostname and matches the certname.\n* The certname resolves to an IP address and matches the client's IP.\n(Forward and reverse DNS resolution for the client.)\n... and a few other checks that aren't relevant.\n\nSadly, there doesn't appear to be a method to know the client's IP address in the autosign script, only the certname.\n\nI can has IP?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "14833", "fixedVersions": [], "id": "14833", "issueType": "Improvement", "key": "SERVER-2964", "labels": ["final_triage", "help_wanted"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:0aae14b6-e8ef-4dd2-8b73-31f91b3cd3cd", "resolution": "Declined", "resolutionDate": "2021-12-01T09:49:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Reveal client IP address to autosign script.", "timeSpent": "PT0S", "updated": "2021-12-01T09:59:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "I believe that what we're going to want here is a function that flags *all* of the instances as dirty and needing to be flushed, and then a mechanism for making sure that we never allow a dirty one to be borrowed?\n\nWill need to think through the implementation details a bit, but we definitely want a function that allows us to say \"all the instances in the pool are dirty now\", and once that function is called we should start clearing them out and replacing them with new ones.\n\nMaybe we create a second pool and start filling it up, and as soon as it has an instance in it we swap out the reference to the old pool so that it can't be borrowed from anymore, and then start destroying the instances in it?", "created": "2014-11-07T16:08:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Filed a PR with an initial stab at this.  It's currently targeted at the 'future' branch because it may be a little too risky to ship in the upcoming PE z-release.", "created": "2014-11-17T21:02:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "The initial PR has one approach for how to handle the threading / memory usage during the flush.  There are some comments on the PR outlining a possible alternate approach.  I've been thinking about a third one that I thought would be good to get down in writing.\n\nGoals are:\n\n* simplicity of code and threading model\n* minimizing the introduction of new mutable state\n* minimizing the possibility of a memory spike by allowing new JRuby instances to be constructed before terminating old ones\n* minimizing window of time from initial flush request to time when all old instances stop handling requests\n* avoiding the possibility of allowing any window of time where both old and new instances are accessible to handle new requests at the same time, so that there is no possibility of jumping back and forth between old and new instances, e.g. within the context of a single agent run\n* predictable behavior if multiple flush requests are queued up simultaneously\n\nSo here's the alternate approach I've been thinking about:\n\n* use a single agent to coordinate all of the work\n* flush request comes in, we send a task to the agent\n* agent task entails:\n    ** create a new, empty pool\n    ** borrow an instance from the old pool (blocks until the instance is acquired)\n    ** terminate the old instance\n    ** create a new instance and put it into the new pool\n    ** swap the pools in the service context state atom, so that the old pool is no longer accessible to handle subsequent requests\n    ** loop over the following steps until the old pool is empty:\n        *** borrow an instance from the old pool\n        *** terminate the old instance\n        *** create a new instance and put it into the new pool\n    ** let all references to the (empty) old pool and old instances fall out of scope\n", "created": "2014-11-25T21:52:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "With respect to the concern I raised in the PR about the possibility of short term memory spikes during the flushing, the second alternate approach which uses a single agent and handles the terminates for old and creations for new serially sounds like a significant improvement.\n\nThe one thing that still bothers me a little bit is the possible race condition that seems to be present here around the pool state swap-out in the service context.  The concern stems from the current behavior of the pool state acquisition and borrow not together being an atomic operation.  Here's the order of steps I'm thinking about which could be problematic:\n\n1) Borrower calls {{borrow-from-pool}}, which dereferences the \"old pool\" from the context.\n2) Agent flusher task swaps out the old pool for the new one in the service context state.\n3) Agent flusher loops over the old pool and empties it out.\n4) {{borrow-from-pool}} calls {{.take}} on the old pool.  Because the old pool is now empty and will never be filled up again, the borrower would block indefinitely.  This could be particularly bad if it leads to a process lock up.\n\nI suppose to get around this that we could add some kind of locking construct that the agent flusher and borrower -- for the duration of the pool dereference and take actions -- would collaborate on.  The first alternative approach I mentioned on the PR gets around this by never swapping out the pool state on the context, but it does come with the added complexity and cost of having return to pool operations be deferred to an agent and introducing more mutable state and multiple points at which old instances are terminated...\n\n\n", "created": "2014-11-26T11:21:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Hmm, yeah, fair point.\n\nSeems like a simpler solution might be to add a second kind of PoisonPill that says \"retry your borrow operation immediately\", and then have the `with-jruby-puppet` macro in the service namespace know how to handle that, by grabbing a new reference to the pool and then doing the borrow again?\n\nAlso raises the question of whether or not we should be using the `borrow-with-timeout` versions from within our `with-jruby-puppet` macros.", "created": "2014-11-26T11:36:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "Yeah, the second kind of PoisonPill seems like it might work for that case.  I definitely like the idea of preventing the borrow request from failing even if we supplemented this with moving to {{borrow-with-timeout}}.\n\nIt might make sense to start using {{borrow-with-timeout}} at some point anyway.  Could hit that condition if we have enough concurrent requests hogging all of the outstanding pool instances for a significant amount of time.  Then we have to get into the discussion about how long is long enough, I suppose.  A generous default that was configurable, though, would seem like a good step.", "created": "2014-11-26T11:48:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "So I'd be +1 on going ahead and moving to borrow-with-timeout with a configurable value regardless of the rest of this discussion, if you are.\n\nI also agree that it'd be preferable to not have that timeout be our expected behavior if the race condition that you describe does happen to occur.\n\nWould you agree that the \"RetryPoisonPill\" approach would result in, overall, less complexity in the new code compared to the original idea that you proposed on the PR, or to an approach that would involve introducing extra locking mechanisms around the borrow/swap pool operations?", "created": "2014-11-26T11:53:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I think your alternative approach -- including the RetryPoisonPill -- is overall better than the initial alternative approach I had suggested.  The most compelling advantages of your alternative approach to me seem to be the ability to avoid adding new mutable state per pool instance and keeping the return to pool logic a little lighter weight -- avoiding the need to process returns serially from a background agent.\n\nGiven all of the subtleties that come with implementing code like this, I'd still like to have someone else take a look at the options proposed and weigh in -- to see if there's something else problematic in the designs.  That said, though, I'm willing to go with your alternative approach as the best option at this point.", "created": "2014-12-01T09:37:00.000000"}, {"author": "557058:50693b46-2d67-4417-b1cc-9b21dadb467f", "body": "I'm also good with moving to {{borrow-with-timeout}} with a configurable value.  I think this could either be done along with the rest of the pool flushing work or on a different ticket.  With the RetryPoisonPill, I don't think we would necessarily have to do the {{borrow-with-timeout}} with the work on this ticket. ", "created": "2014-12-01T09:39:00.000000"}, {"author": "557058:a3132145-aae4-410f-9f7a-85a3117a0c14", "body": "Agree that `borrow-with-timeout` can be tackled separately", "created": "2014-12-01T11:36:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "Bulk close for puppet-server-1.0.0 release.", "created": "2014-12-17T23:17:00.000000"}], "components": ["Puppet Server"], "created": "2014-02-10T16:56:00.000000", "creator": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d2f98e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623c0ff494742a00683e3fe4"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypg9b:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_251433654_*|*_1_*:*_1_*:*_58006137_*|*_10007_*:*_1_*:*_578612917_*|*_3_*:*_1_*:*_47082252_*|*_5_*:*_1_*:*_216665144_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_25648615959_*|*_10005_*:*_1_*:*_6451333"}], "description": "It's possible that a consumer of the JRuby service may want to throw away their dirty interpreter and let the service put a new one in the pool. Perhaps a function should be created to do this.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "15923", "fixedVersions": ["SERVER 1.0.0"], "id": "15923", "issueType": "Improvement", "key": "SERVER-150", "labels": ["stretch"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "SERVER", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Server (Archived)", "projectType": "software", "projectUrl": null, "reporter": "557058:030c0c27-db47-4e72-b56f-d63a9eca4314", "resolution": "Fixed", "resolutionDate": "2014-12-15T11:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:21 AM", "summary": "Add functionality to JRuby service to trash instance", "timeSpent": "PT0S", "updated": "2016-05-25T13:25:00.000000", "votes": "0", "watchers": []}], "key": "SERVER", "lead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "name": "Puppet Server (Archived)", "template": "com.pyxis.greenhopper.jira:gh-simplified-scrum-classic", "type": "software", "url": "", "versions": [{"name": "SERVER 0.2.0", "releaseDate": "2014-09-22", "released": true}, {"name": "SERVER 0.2.1", "releaseDate": "2014-09-29", "released": true}, {"name": "SERVER 0.2.2", "releaseDate": "2014-10-02", "released": true}, {"name": "SERVER 0.3.0", "releaseDate": "2014-10-20", "released": true}, {"name": "SERVER 0.4.0", "releaseDate": "2014-11-06", "released": true}, {"name": "SERVER 0.4.1", "releaseDate": "2014-11-26", "released": true}, {"name": "SERVER 1.0.0", "releaseDate": "2014-12-14", "released": true}, {"name": "SERVER 1.0.2", "releaseDate": "2015-01-15", "released": true}, {"name": "SERVER 1.0.3", "releaseDate": "2015-01-29", "released": true}, {"name": "SERVER 1.0.8", "releaseDate": "2015-03-30", "released": true}, {"name": "SERVER 1.1.0", "releaseDate": "2015-06-03", "released": true}, {"name": "SERVER 1.1.1", "releaseDate": "2015-06-18", "released": true}, {"name": "SERVER 1.1.2", "releaseDate": "2015-10-19", "released": true}, {"name": "SERVER 1.1.3", "releaseDate": "2015-12-09", "released": true}, {"name": "SERVER 1.2.0", "releaseDate": "2016-09-08", "released": true}, {"name": "SERVER 1.y", "releaseDate": "", "released": false}, {"name": "SERVER 2.0.0", "releaseDate": "2015-04-14", "released": true}, {"name": "SERVER 2.1.0", "releaseDate": "2015-06-02", "released": true}, {"name": "SERVER 2.1.1", "releaseDate": "2015-06-17", "released": true}, {"name": "SERVER 2.1.2", "releaseDate": "2015-10-19", "released": true}, {"name": "SERVER 2.2.0", "releaseDate": "2015-11-19", "released": true}, {"name": "SERVER 2.2.1", "releaseDate": "2015-12-09", "released": true}, {"name": "SERVER 2.3.0", "releaseDate": "2016-03-16", "released": true}, {"name": "SERVER 2.3.1", "releaseDate": "2016-03-21", "released": true}, {"name": "SERVER 2.3.2", "releaseDate": "2016-04-27", "released": true}, {"name": "SERVER 2.4.0", "releaseDate": "2016-05-19", "released": true}, {"name": "SERVER 2.5.0", "releaseDate": "2016-08-11", "released": true}, {"name": "SERVER 2.6.0", "releaseDate": "2016-09-08", "released": true}, {"name": "SERVER 2.7.0", "releaseDate": "2016-11-09", "released": true}, {"name": "SERVER 2.7.1", "releaseDate": "2016-11-21", "released": true}, {"name": "SERVER 2.7.2", "releaseDate": "2016-12-06", "released": true}, {"name": "SERVER 2.8.0", "releaseDate": "2017-08-29", "released": true}, {"name": "SERVER 2.8.z", "releaseDate": "", "released": false}, {"name": "SERVER 2.y", "releaseDate": "", "released": false}, {"name": "SERVER 5.0.0", "releaseDate": "2017-06-27", "released": true}, {"name": "SERVER 5.1.0", "releaseDate": "2017-09-13", "released": true}, {"name": "SERVER 5.1.3", "releaseDate": "2017-10-02", "released": true}, {"name": "SERVER 5.1.4", "releaseDate": "2017-11-06", "released": true}, {"name": "SERVER 5.1.5", "releaseDate": "2018-02-05", "released": true}, {"name": "SERVER 5.1.z", "releaseDate": "", "released": false}, {"name": "SERVER 5.2.0", "releaseDate": "2018-02-14", "released": true}, {"name": "SERVER 5.3.0", "releaseDate": "2018-03-20", "released": true}, {"name": "SERVER 5.3.1", "releaseDate": "2018-04-18", "released": true}, {"name": "SERVER 5.3.3", "releaseDate": "2018-06-07", "released": true}, {"name": "SERVER 5.3.4", "releaseDate": "2018-07-17", "released": true}, {"name": "SERVER 5.3.5", "releaseDate": "2018-08-22", "released": true}, {"name": "SERVER 5.3.6", "releaseDate": "2018-10-23", "released": true}, {"name": "SERVER 5.3.7", "releaseDate": "2019-01-15", "released": true}, {"name": "SERVER 5.3.8", "releaseDate": "2019-03-26", "released": true}, {"name": "SERVER 5.3.9", "releaseDate": "2019-07-16", "released": true}, {"name": "SERVER 5.3.10", "releaseDate": "", "released": false}, {"name": "SERVER 5.3.z", "releaseDate": "", "released": false}, {"name": "SERVER 5.y", "releaseDate": "", "released": false}, {"name": "SERVER 6.0.5", "releaseDate": "2019-07-16", "released": true}, {"name": "SERVER 6.0.6", "releaseDate": "", "released": false}, {"name": "SERVER 6.0.0", "releaseDate": "2018-09-18", "released": true}, {"name": "SERVER 6.0.1", "releaseDate": "2018-10-02", "released": true}, {"name": "SERVER 6.0.2", "releaseDate": "2018-10-25", "released": true}, {"name": "SERVER 6.0.3", "releaseDate": "2019-01-15", "released": true}, {"name": "SERVER 6.0.4", "releaseDate": "2019-03-26", "released": true}, {"name": "SERVER 6.0.z", "releaseDate": "", "released": false}, {"name": "SERVER 6.1.0", "releaseDate": "2018-12-18", "released": true}, {"name": "SERVER 6.2.0", "releaseDate": "2019-01-24", "released": true}, {"name": "SERVER 6.2.1", "releaseDate": "2019-02-20", "released": true}, {"name": "SERVER 6.3.0", "releaseDate": "2019-03-26", "released": true}, {"name": "SERVER 6.3.1", "releaseDate": "2019-07-16", "released": true}, {"name": "SERVER 6.3.2", "releaseDate": "", "released": false}, {"name": "SERVER 6.3.z", "releaseDate": "", "released": false}, {"name": "SERVER 6.4.0", "releaseDate": "2019-06-19", "released": true}, {"name": "SERVER 6.5.0", "releaseDate": "2019-07-23", "released": true}, {"name": "SERVER 6.6.0", "releaseDate": "", "released": false}, {"name": "SERVER 6.y", "releaseDate": "", "released": false}, {"name": "None", "releaseDate": "", "released": false}, {"name": "SERVER 7.y", "releaseDate": "", "released": false}, {"name": "SERVER 6.7.0", "releaseDate": "2019-10-01", "released": true}, {"name": "SERVER 6.7.1", "releaseDate": "", "released": false}, {"name": "SERVER 6.7.2", "releaseDate": "", "released": false}, {"name": "SERVER 6.3.3", "releaseDate": "", "released": false}, {"name": "SERVER 6.8.0", "releaseDate": "", "released": false}, {"name": "SERVER 6.7.3", "releaseDate": "", "released": false}, {"name": "SERVER 5.3.11", "releaseDate": "", "released": false}, {"name": "SERVER 6.8.1", "releaseDate": "", "released": false}, {"name": "SERVER 6.9.0", "releaseDate": "", "released": false}, {"name": "SERVER 6.9.2", "releaseDate": "", "released": false}, {"name": "SERVER 5.3.12", "releaseDate": "", "released": false}, {"name": "SERVER 5.3.13", "releaseDate": "", "released": false}, {"name": "SERVER 6.10.0", "releaseDate": "", "released": false}, {"name": "SERVER 6.11.0", "releaseDate": "", "released": false}, {"name": "SERVER 6.11.1", "releaseDate": "", "released": false}, {"name": "SERVER 6.12.0", "releaseDate": "", "released": false}, {"name": "SERVER 6.13.0", "releaseDate": "", "released": false}, {"name": "SERVER 5.3.15", "releaseDate": "", "released": false}, {"name": "SERVER 6.14.0", "releaseDate": "", "released": false}, {"name": "SERVER 5.3.14", "releaseDate": "", "released": false}, {"name": "SERVER 5.3.16", "releaseDate": "", "released": false}, {"name": "SERVER 6.14.1", "releaseDate": "", "released": false}, {"name": "SERVER 6.15.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.0.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.0.1", "releaseDate": "", "released": false}, {"name": "SERVER 8.0.0", "releaseDate": "", "released": false}, {"name": "SERVER 5.3.17", "releaseDate": "", "released": false}, {"name": "SERVER 7.0.2", "releaseDate": "", "released": false}, {"name": "SERVER 7.0.3", "releaseDate": "", "released": false}, {"name": "SERVER 6.15.1", "releaseDate": "", "released": false}, {"name": "SERVER 7.0.4", "releaseDate": "", "released": false}, {"name": "SERVER 6.15.3", "releaseDate": "", "released": false}, {"name": "SERVER 7.1.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.1.2", "releaseDate": "", "released": false}, {"name": "SERVER 6.16.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.2.0", "releaseDate": "", "released": false}, {"name": "SERVER 6.16.1", "releaseDate": "2021-07-20", "released": false}, {"name": "SERVER 7.2.1", "releaseDate": "2021-07-20", "released": false}, {"name": "SERVER 6.17.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.3.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.4.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.4.1", "releaseDate": "", "released": false}, {"name": "SERVER 6.16.2", "releaseDate": "", "released": false}, {"name": "SERVER 7.4.2", "releaseDate": "", "released": false}, {"name": "SERVER 6.17.1", "releaseDate": "", "released": false}, {"name": "SERVER 6.17.2", "releaseDate": "", "released": false}, {"name": "SERVER 7.4.3", "releaseDate": "", "released": false}, {"name": "SERVER 7.5.0", "releaseDate": "", "released": false}, {"name": "SERVER 6.18.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.6.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.14.0", "releaseDate": "2022-01-19", "released": false}, {"name": "SERVER 6.26.0", "releaseDate": "2022-01-19", "released": false}, {"name": "SERVER 7.6.1", "releaseDate": "", "released": false}, {"name": "SERVER 6.19.0", "releaseDate": "", "released": false}, {"name": "7.15.0", "releaseDate": "2022-03-15", "released": true}, {"name": "SERVER 7.7.0", "releaseDate": "", "released": false}, {"name": "SERVER 6.20.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.8.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.9.0", "releaseDate": "", "released": false}, {"name": "SERVER 7.9.1", "releaseDate": "", "released": false}, {"name": "SERVER 7.9.2", "releaseDate": "", "released": false}, {"name": "SERVER 7.9.3", "releaseDate": "", "released": false}, {"name": "SERVER 7.9.4", "releaseDate": "", "released": false}, {"name": "SERVER 7.4.5", "releaseDate": "", "released": false}]}]}